import { c as compute_rest_props, a as subscribe, j as hasContext, b as getContext, s as setContext, n as noop } from './lifecycle-px-3doLe.js'; import { c as create_ssr_component, v as validate_component, a as each, s as spread, f as escape_object, d as escape_attribute_value, e as escape, b as add_attribute } from './ssr-ipqebOFl.js'; import { m as makeElement, d as addMeltEventListener, o as omit, l as disabledAttr, b as executeCallbacks, s as styleToString, j as addEventListener, E as removeUndefined$1, p as portalAttr, e as effect, c as createElHelpers, k as kbd, G as isTouch, y as isElement, H as isDocument, h as isBrowser, n as noop$1 } from './index3-JA_ucGjW.js'; import { c as createDispatcher, a as createBitAttrs, r as removeUndefined, g as getOptionUpdater, e as toWritableStores, o as overridable, h as generateIds, f as getPositioningUpdater, n as nanoid, i as getPortalDestination, j as usePortal, m as useFloating } from './Toaster.svelte_svelte_type_style_lang-Bhmi0dH5.js'; import { c as cn, f as flyAndScale } from './button-JMjD_Bg6.js'; import { d as derived, w as writable } from './index2-D4yenS_5.js'; import { t as tick } from './scheduler-1Ju9dhbL.js'; import 'clsx'; const globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( // @ts-ignore Node typings have this global ); function makeHull(points) { const newPoints = points.slice(); newPoints.sort(POINT_COMPARATOR); return makeHullPresorted(newPoints); } function makeHullPresorted(points) { if (points.length <= 1) return points.slice(); const upperHull = []; for (let i = 0; i < points.length; i++) { const p = points[i]; while (upperHull.length >= 2) { const q = upperHull[upperHull.length - 1]; const r = upperHull[upperHull.length - 2]; if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop(); else break; } upperHull.push(p); } upperHull.pop(); const lowerHull = []; for (let i = points.length - 1; i >= 0; i--) { const p = points[i]; while (lowerHull.length >= 2) { const q = lowerHull[lowerHull.length - 1]; const r = lowerHull[lowerHull.length - 2]; if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop(); else break; } lowerHull.push(p); } lowerHull.pop(); if (upperHull.length == 1 && lowerHull.length == 1 && upperHull[0].x == lowerHull[0].x && upperHull[0].y == lowerHull[0].y) return upperHull; else return upperHull.concat(lowerHull); } function POINT_COMPARATOR(a, b) { if (a.x < b.x) return -1; else if (a.x > b.x) return 1; else if (a.y < b.y) return -1; else if (a.y > b.y) return 1; else return 0; } function getPointsFromEl(el) { const rect = el.getBoundingClientRect(); return [ { x: rect.left, y: rect.top }, { x: rect.right, y: rect.top }, { x: rect.right, y: rect.bottom }, { x: rect.left, y: rect.bottom } ]; } function makeHullFromElements(els) { const points = els.flatMap((el) => getPointsFromEl(el)); return makeHull(points); } function pointInPolygon(point, polygon) { let inside = false; for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { const xi = polygon[i].x; const yi = polygon[i].y; const xj = polygon[j].x; const yj = polygon[j].y; const intersect = yi > point.y !== yj > point.y && point.x < (xj - xi) * (point.y - yi) / (yj - yi) + xi; if (intersect) inside = !inside; } return inside; } function createLabel() { const root = makeElement("label", { action: (node) => { const mouseDown = addMeltEventListener(node, "mousedown", (e) => { if (!e.defaultPrevented && e.detail > 1) { e.preventDefault(); } }); return { destroy: mouseDown }; } }); return { elements: { root } }; } const defaults$1 = { defaultChecked: false, disabled: false, required: false, name: "", value: "" }; const { name: name$1 } = createElHelpers("switch"); function createSwitch(props) { const propsWithDefaults = { ...defaults$1, ...props }; const options = toWritableStores(omit(propsWithDefaults, "checked")); const { disabled, required, name: nameStore, value } = options; const checkedWritable = propsWithDefaults.checked ?? writable(propsWithDefaults.defaultChecked); const checked = overridable(checkedWritable, propsWithDefaults?.onCheckedChange); function toggleSwitch() { if (disabled.get()) return; checked.update((prev) => !prev); } const root = makeElement(name$1(), { stores: [checked, disabled, required], returned: ([$checked, $disabled, $required]) => { return { "data-disabled": disabledAttr($disabled), disabled: disabledAttr($disabled), "data-state": $checked ? "checked" : "unchecked", type: "button", role: "switch", "aria-checked": $checked ? "true" : "false", "aria-required": $required ? "true" : void 0 }; }, action(node) { const unsub = executeCallbacks(addMeltEventListener(node, "click", () => { toggleSwitch(); }), addMeltEventListener(node, "keydown", (e) => { if (e.key !== kbd.ENTER && e.key !== kbd.SPACE) return; e.preventDefault(); toggleSwitch(); })); return { destroy: unsub }; } }); const input = makeElement(name$1("input"), { stores: [checked, nameStore, required, disabled, value], returned: ([$checked, $name, $required, $disabled, $value]) => { return { type: "checkbox", "aria-hidden": true, hidden: true, tabindex: -1, name: $name, value: $value, checked: $checked, required: $required, disabled: disabledAttr($disabled), style: styleToString({ position: "absolute", opacity: 0, "pointer-events": "none", margin: 0, transform: "translateX(-100%)" }) }; } }); return { elements: { root, input }, states: { checked }, options }; } const defaults = { positioning: { placement: "bottom" }, arrowSize: 8, defaultOpen: false, closeOnPointerDown: true, openDelay: 1e3, closeDelay: 0, forceVisible: false, portal: void 0, closeOnEscape: true, disableHoverableContent: false, group: void 0 }; const { name } = createElHelpers("tooltip"); const groupMap = /* @__PURE__ */ new Map(); const tooltipIdParts = ["trigger", "content"]; function createTooltip(props) { const withDefaults = { ...defaults, ...props }; const options = toWritableStores(omit(withDefaults, "open", "ids")); const { positioning, arrowSize, closeOnPointerDown, openDelay, closeDelay, forceVisible, portal, closeOnEscape, disableHoverableContent, group } = options; const openWritable = withDefaults.open ?? writable(withDefaults.defaultOpen); const open = overridable(openWritable, withDefaults?.onOpenChange); const openReason = writable(null); const ids = toWritableStores({ ...generateIds(tooltipIdParts), ...withDefaults.ids }); let clickedTrigger = false; const getEl = (part) => { if (!isBrowser) return null; return document.getElementById(ids[part].get()); }; let openTimeout = null; let closeTimeout = null; function openTooltip(reason) { if (closeTimeout) { window.clearTimeout(closeTimeout); closeTimeout = null; } if (!openTimeout) { openTimeout = window.setTimeout(() => { open.set(true); openReason.update((prev) => prev ?? reason); openTimeout = null; }, openDelay.get()); } } function closeTooltip(isBlur) { if (openTimeout) { window.clearTimeout(openTimeout); openTimeout = null; } if (isBlur && isMouseInTooltipArea) { openReason.set("pointer"); return; } if (!closeTimeout) { closeTimeout = window.setTimeout(() => { open.set(false); openReason.set(null); if (isBlur) clickedTrigger = false; closeTimeout = null; }, closeDelay.get()); } } const isVisible = derived([open, forceVisible], ([$open, $forceVisible]) => { return $open || $forceVisible; }); const trigger = makeElement(name("trigger"), { stores: [ids.content, ids.trigger, open], returned: ([$contentId, $triggerId, $open]) => { return { "aria-describedby": $contentId, id: $triggerId, "data-state": $open ? "open" : "closed" }; }, action: (node) => { const keydownHandler = (e) => { if (closeOnEscape.get() && e.key === kbd.ESCAPE) { if (openTimeout) { window.clearTimeout(openTimeout); openTimeout = null; } open.set(false); } }; const unsub = executeCallbacks(addMeltEventListener(node, "pointerdown", () => { const $closeOnPointerDown = closeOnPointerDown.get(); if (!$closeOnPointerDown) return; open.set(false); clickedTrigger = true; if (openTimeout) { window.clearTimeout(openTimeout); openTimeout = null; } }), addMeltEventListener(node, "pointerenter", (e) => { if (isTouch(e)) return; openTooltip("pointer"); }), addMeltEventListener(node, "pointerleave", (e) => { if (isTouch(e)) return; if (openTimeout) { window.clearTimeout(openTimeout); openTimeout = null; } }), addMeltEventListener(node, "focus", () => { if (clickedTrigger) return; openTooltip("focus"); }), addMeltEventListener(node, "blur", () => closeTooltip(true)), addMeltEventListener(node, "keydown", keydownHandler), addEventListener(document, "keydown", keydownHandler)); return { destroy: unsub }; } }); const content = makeElement(name("content"), { stores: [isVisible, open, portal, ids.content], returned: ([$isVisible, $open, $portal, $contentId]) => { return removeUndefined$1({ role: "tooltip", hidden: $isVisible ? void 0 : true, tabindex: -1, style: $isVisible ? void 0 : styleToString({ display: "none" }), id: $contentId, "data-portal": portalAttr($portal), "data-state": $open ? "open" : "closed" }); }, action: (node) => { let unsubFloating = noop$1; let unsubPortal = noop$1; const unsubDerived = effect([isVisible, positioning, portal], ([$isVisible, $positioning, $portal]) => { unsubPortal(); unsubFloating(); const triggerEl = getEl("trigger"); if (!$isVisible || !triggerEl) return; tick().then(() => { unsubPortal(); unsubFloating(); const portalDest = getPortalDestination(node, $portal); if (portalDest) unsubPortal = usePortal(node, portalDest).destroy; unsubFloating = useFloating(triggerEl, node, $positioning).destroy; }); }); function handleScroll(e) { if (!open.get()) return; const target = e.target; if (!isElement(target) && !isDocument(target)) return; const triggerEl = getEl("trigger"); if (triggerEl && target.contains(triggerEl)) { closeTooltip(); } } const unsubEvents = executeCallbacks(addMeltEventListener(node, "pointerenter", () => openTooltip("pointer")), addMeltEventListener(node, "pointerdown", () => openTooltip("pointer")), addEventListener(window, "scroll", handleScroll, { capture: true })); return { destroy() { unsubEvents(); unsubPortal(); unsubFloating(); unsubDerived(); } }; } }); const arrow = makeElement(name("arrow"), { stores: arrowSize, returned: ($arrowSize) => ({ "data-arrow": true, style: styleToString({ position: "absolute", width: `var(--arrow-size, ${$arrowSize}px)`, height: `var(--arrow-size, ${$arrowSize}px)` }) }) }); let isMouseInTooltipArea = false; effect(open, ($open) => { const currentGroup = group.get(); if (currentGroup === void 0 || currentGroup === false) { return; } if (!$open) { if (groupMap.get(currentGroup) === open) { groupMap.delete(currentGroup); } return; } const currentOpen = groupMap.get(currentGroup); currentOpen?.set(false); groupMap.set(currentGroup, open); }); effect([open, openReason], ([$open, $openReason]) => { if (!$open || !isBrowser) return; return executeCallbacks(addEventListener(document, "mousemove", (e) => { const contentEl = getEl("content"); const triggerEl = getEl("trigger"); if (!contentEl || !triggerEl) return; const polygonElements = disableHoverableContent.get() ? [triggerEl] : [triggerEl, contentEl]; const polygon = makeHullFromElements(polygonElements); isMouseInTooltipArea = pointInPolygon({ x: e.clientX, y: e.clientY }, polygon); if ($openReason !== "pointer") return; if (!isMouseInTooltipArea) { closeTooltip(); } })); }); return { ids, elements: { trigger, content, arrow }, states: { open }, options }; } function getLabelData() { const NAME = "label"; const PARTS = ["root"]; const getAttrs = createBitAttrs(NAME, PARTS); return { NAME, getAttrs }; } const Label$1 = create_ssr_component(($$result, $$props, $$bindings, slots) => { let builder; let $$restProps = compute_rest_props($$props, ["asChild", "el"]); let $root, $$unsubscribe_root; let { asChild = false } = $$props; let { el = void 0 } = $$props; const { elements: { root } } = createLabel(); $$unsubscribe_root = subscribe(root, (value) => $root = value); createDispatcher(); const { getAttrs } = getLabelData(); const attrs = getAttrs("root"); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); builder = $root; { Object.assign(builder, attrs); } $$unsubscribe_root(); return `${asChild ? `${slots.default ? slots.default({ builder }) : ``}` : `${slots.default ? slots.default({ builder }) : ``}`}`; }); function getSwitchData() { const NAME = "switch"; const PARTS = ["root", "input", "thumb"]; return { NAME, PARTS }; } function setCtx$1(props) { const { NAME, PARTS } = getSwitchData(); const getAttrs = createBitAttrs(NAME, PARTS); const Switch2 = { ...createSwitch(removeUndefined(props)), getAttrs }; setContext(NAME, Switch2); return { ...Switch2, updateOption: getOptionUpdater(Switch2.options) }; } function getCtx$1() { const { NAME } = getSwitchData(); return getContext(NAME); } const Switch_input = create_ssr_component(($$result, $$props, $$bindings, slots) => { let inputValue; let $$restProps = compute_rest_props($$props, ["el"]); let $value, $$unsubscribe_value; let $input, $$unsubscribe_input; let $name, $$unsubscribe_name; let $disabled, $$unsubscribe_disabled; let $required, $$unsubscribe_required; let { el = void 0 } = $$props; const { elements: { input }, options: { value, name: name2, disabled, required } } = getCtx$1(); $$unsubscribe_input = subscribe(input, (value2) => $input = value2); $$unsubscribe_value = subscribe(value, (value2) => $value = value2); $$unsubscribe_name = subscribe(name2, (value2) => $name = value2); $$unsubscribe_disabled = subscribe(disabled, (value2) => $disabled = value2); $$unsubscribe_required = subscribe(required, (value2) => $required = value2); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); inputValue = $value === void 0 || $value === "" ? "on" : $value; $$unsubscribe_value(); $$unsubscribe_input(); $$unsubscribe_name(); $$unsubscribe_disabled(); $$unsubscribe_required(); return ``; }); const { Object: Object_1 } = globals; const Switch$1 = create_ssr_component(($$result, $$props, $$bindings, slots) => { let builder; let attrs; let $$restProps = compute_rest_props($$props, [ "checked", "onCheckedChange", "disabled", "name", "value", "includeInput", "required", "asChild", "inputAttrs", "el" ]); let $root, $$unsubscribe_root; let { checked = void 0 } = $$props; let { onCheckedChange = void 0 } = $$props; let { disabled = void 0 } = $$props; let { name: name2 = void 0 } = $$props; let { value = void 0 } = $$props; let { includeInput = true } = $$props; let { required = void 0 } = $$props; let { asChild = false } = $$props; let { inputAttrs = void 0 } = $$props; let { el = void 0 } = $$props; const { elements: { root }, states: { checked: localChecked }, updateOption, getAttrs } = setCtx$1({ disabled, name: name2, value, required, defaultChecked: checked, onCheckedChange: ({ next }) => { if (checked !== next) { onCheckedChange?.(next); checked = next; } return next; } }); $$unsubscribe_root = subscribe(root, (value2) => $root = value2); createDispatcher(); if ($$props.checked === void 0 && $$bindings.checked && checked !== void 0) $$bindings.checked(checked); if ($$props.onCheckedChange === void 0 && $$bindings.onCheckedChange && onCheckedChange !== void 0) $$bindings.onCheckedChange(onCheckedChange); if ($$props.disabled === void 0 && $$bindings.disabled && disabled !== void 0) $$bindings.disabled(disabled); if ($$props.name === void 0 && $$bindings.name && name2 !== void 0) $$bindings.name(name2); if ($$props.value === void 0 && $$bindings.value && value !== void 0) $$bindings.value(value); if ($$props.includeInput === void 0 && $$bindings.includeInput && includeInput !== void 0) $$bindings.includeInput(includeInput); if ($$props.required === void 0 && $$bindings.required && required !== void 0) $$bindings.required(required); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.inputAttrs === void 0 && $$bindings.inputAttrs && inputAttrs !== void 0) $$bindings.inputAttrs(inputAttrs); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); checked !== void 0 && localChecked.set(checked); { updateOption("disabled", disabled); } { updateOption("name", name2); } { updateOption("value", value); } { updateOption("required", required); } builder = $root; attrs = { ...getAttrs("root"), "data-checked": checked ? "" : void 0 }; { Object.assign(builder, attrs); } $$unsubscribe_root(); return `${asChild ? `${slots.default ? slots.default({ builder }) : ``}` : `${slots.default ? slots.default({ builder }) : ``}`} ${includeInput ? `${validate_component(Switch_input, "SwitchInput").$$render($$result, Object_1.assign({}, inputAttrs), {}, {})}` : ``}`; }); const Switch_thumb = create_ssr_component(($$result, $$props, $$bindings, slots) => { let attrs; let $$restProps = compute_rest_props($$props, ["asChild", "el"]); let $checked, $$unsubscribe_checked; let { asChild = false } = $$props; let { el = void 0 } = $$props; const { states: { checked }, getAttrs } = getCtx$1(); $$unsubscribe_checked = subscribe(checked, (value) => $checked = value); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); attrs = { ...getAttrs("thumb"), "data-state": $checked ? "checked" : "unchecked", "data-checked": $checked ? "" : void 0 }; $$unsubscribe_checked(); return `${asChild ? `${slots.default ? slots.default({ attrs, checked: $checked }) : ``}` : ``}`; }); function getTooltipData() { const NAME = "tooltip"; const PARTS = ["arrow", "content", "trigger"]; return { NAME, PARTS }; } function setCtx(props) { const { NAME, PARTS } = getTooltipData(); const getAttrs = createBitAttrs(NAME, PARTS); const tooltip = { ...createTooltip({ positioning: { placement: "top", gutter: 0 }, openDelay: 700, ...removeUndefined(props), forceVisible: true }), getAttrs }; setContext(NAME, tooltip); return { ...tooltip, updateOption: getOptionUpdater(tooltip.options) }; } function getCtx() { const { NAME } = getTooltipData(); return getContext(NAME); } function updatePositioning(props) { const defaultPlacement = { side: "top", align: "center", sideOffset: 1 }; const withDefaults = { ...defaultPlacement, ...props }; const { options: { positioning } } = getCtx(); const updater = getPositioningUpdater(positioning); updater({ ...withDefaults }); } const Tooltip = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $idValues, $$unsubscribe_idValues; let { closeOnEscape = void 0 } = $$props; let { portal = void 0 } = $$props; let { closeOnPointerDown = void 0 } = $$props; let { openDelay = void 0 } = $$props; let { closeDelay = void 0 } = $$props; let { open = void 0 } = $$props; let { onOpenChange = void 0 } = $$props; let { disableHoverableContent = void 0 } = $$props; let { group = void 0 } = $$props; const { states: { open: localOpen }, updateOption, ids } = setCtx({ closeOnEscape, portal, closeOnPointerDown, openDelay, closeDelay, forceVisible: true, defaultOpen: open, disableHoverableContent, group, onOpenChange: ({ next }) => { if (open !== next) { onOpenChange?.(next); open = next; } return next; }, positioning: { gutter: 0, offset: { mainAxis: 1 } } }); const idValues = derived([ids.content, ids.trigger], ([$contentId, $triggerId]) => ({ content: $contentId, trigger: $triggerId })); $$unsubscribe_idValues = subscribe(idValues, (value) => $idValues = value); if ($$props.closeOnEscape === void 0 && $$bindings.closeOnEscape && closeOnEscape !== void 0) $$bindings.closeOnEscape(closeOnEscape); if ($$props.portal === void 0 && $$bindings.portal && portal !== void 0) $$bindings.portal(portal); if ($$props.closeOnPointerDown === void 0 && $$bindings.closeOnPointerDown && closeOnPointerDown !== void 0) $$bindings.closeOnPointerDown(closeOnPointerDown); if ($$props.openDelay === void 0 && $$bindings.openDelay && openDelay !== void 0) $$bindings.openDelay(openDelay); if ($$props.closeDelay === void 0 && $$bindings.closeDelay && closeDelay !== void 0) $$bindings.closeDelay(closeDelay); if ($$props.open === void 0 && $$bindings.open && open !== void 0) $$bindings.open(open); if ($$props.onOpenChange === void 0 && $$bindings.onOpenChange && onOpenChange !== void 0) $$bindings.onOpenChange(onOpenChange); if ($$props.disableHoverableContent === void 0 && $$bindings.disableHoverableContent && disableHoverableContent !== void 0) $$bindings.disableHoverableContent(disableHoverableContent); if ($$props.group === void 0 && $$bindings.group && group !== void 0) $$bindings.group(group); open !== void 0 && localOpen.set(open); { updateOption("closeOnEscape", closeOnEscape); } { updateOption("portal", portal); } { updateOption("closeOnPointerDown", closeOnPointerDown); } { updateOption("openDelay", openDelay); } { updateOption("closeDelay", closeDelay); } { updateOption("group", group); } { updateOption("disableHoverableContent", disableHoverableContent); } $$unsubscribe_idValues(); return `${slots.default ? slots.default({ ids: $idValues }) : ``}`; }); const Tooltip_content$1 = create_ssr_component(($$result, $$props, $$bindings, slots) => { let builder; let $$restProps = compute_rest_props($$props, [ "transition", "transitionConfig", "inTransition", "inTransitionConfig", "outTransition", "outTransitionConfig", "asChild", "id", "side", "align", "sideOffset", "alignOffset", "collisionPadding", "avoidCollisions", "collisionBoundary", "sameWidth", "fitViewport", "strategy", "overlap", "el" ]); let $open, $$unsubscribe_open; let $content, $$unsubscribe_content; let { transition = void 0 } = $$props; let { transitionConfig = void 0 } = $$props; let { inTransition = void 0 } = $$props; let { inTransitionConfig = void 0 } = $$props; let { outTransition = void 0 } = $$props; let { outTransitionConfig = void 0 } = $$props; let { asChild = false } = $$props; let { id = void 0 } = $$props; let { side = "top" } = $$props; let { align = "center" } = $$props; let { sideOffset = 0 } = $$props; let { alignOffset = 0 } = $$props; let { collisionPadding = 8 } = $$props; let { avoidCollisions = true } = $$props; let { collisionBoundary = void 0 } = $$props; let { sameWidth = false } = $$props; let { fitViewport = false } = $$props; let { strategy = "absolute" } = $$props; let { overlap = false } = $$props; let { el = void 0 } = $$props; const { elements: { content }, states: { open }, ids, getAttrs } = getCtx(); $$unsubscribe_content = subscribe(content, (value) => $content = value); $$unsubscribe_open = subscribe(open, (value) => $open = value); createDispatcher(); const attrs = getAttrs("content"); if ($$props.transition === void 0 && $$bindings.transition && transition !== void 0) $$bindings.transition(transition); if ($$props.transitionConfig === void 0 && $$bindings.transitionConfig && transitionConfig !== void 0) $$bindings.transitionConfig(transitionConfig); if ($$props.inTransition === void 0 && $$bindings.inTransition && inTransition !== void 0) $$bindings.inTransition(inTransition); if ($$props.inTransitionConfig === void 0 && $$bindings.inTransitionConfig && inTransitionConfig !== void 0) $$bindings.inTransitionConfig(inTransitionConfig); if ($$props.outTransition === void 0 && $$bindings.outTransition && outTransition !== void 0) $$bindings.outTransition(outTransition); if ($$props.outTransitionConfig === void 0 && $$bindings.outTransitionConfig && outTransitionConfig !== void 0) $$bindings.outTransitionConfig(outTransitionConfig); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.id === void 0 && $$bindings.id && id !== void 0) $$bindings.id(id); if ($$props.side === void 0 && $$bindings.side && side !== void 0) $$bindings.side(side); if ($$props.align === void 0 && $$bindings.align && align !== void 0) $$bindings.align(align); if ($$props.sideOffset === void 0 && $$bindings.sideOffset && sideOffset !== void 0) $$bindings.sideOffset(sideOffset); if ($$props.alignOffset === void 0 && $$bindings.alignOffset && alignOffset !== void 0) $$bindings.alignOffset(alignOffset); if ($$props.collisionPadding === void 0 && $$bindings.collisionPadding && collisionPadding !== void 0) $$bindings.collisionPadding(collisionPadding); if ($$props.avoidCollisions === void 0 && $$bindings.avoidCollisions && avoidCollisions !== void 0) $$bindings.avoidCollisions(avoidCollisions); if ($$props.collisionBoundary === void 0 && $$bindings.collisionBoundary && collisionBoundary !== void 0) $$bindings.collisionBoundary(collisionBoundary); if ($$props.sameWidth === void 0 && $$bindings.sameWidth && sameWidth !== void 0) $$bindings.sameWidth(sameWidth); if ($$props.fitViewport === void 0 && $$bindings.fitViewport && fitViewport !== void 0) $$bindings.fitViewport(fitViewport); if ($$props.strategy === void 0 && $$bindings.strategy && strategy !== void 0) $$bindings.strategy(strategy); if ($$props.overlap === void 0 && $$bindings.overlap && overlap !== void 0) $$bindings.overlap(overlap); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); { if (id) { ids.content.set(id); } } builder = $content; { Object.assign(builder, attrs); } { if ($open) { updatePositioning({ side, align, sideOffset, alignOffset, collisionPadding, avoidCollisions, collisionBoundary, sameWidth, fitViewport, strategy, overlap }); } } $$unsubscribe_open(); $$unsubscribe_content(); return `${asChild && $open ? `${slots.default ? slots.default({ builder }) : ``}` : `${transition && $open ? `${slots.default ? slots.default({ builder }) : ``}` : `${inTransition && outTransition && $open ? `${slots.default ? slots.default({ builder }) : ``}` : `${inTransition && $open ? `${slots.default ? slots.default({ builder }) : ``}` : `${outTransition && $open ? `${slots.default ? slots.default({ builder }) : ``}` : `${$open ? `${slots.default ? slots.default({ builder }) : ``}` : ``}`}`}`}`}`}`; }); const Tooltip_trigger = create_ssr_component(($$result, $$props, $$bindings, slots) => { let builder; let $$restProps = compute_rest_props($$props, ["asChild", "id", "el"]); let $trigger, $$unsubscribe_trigger; let { asChild = false } = $$props; let { id = void 0 } = $$props; let { el = void 0 } = $$props; const { elements: { trigger }, ids, getAttrs } = getCtx(); $$unsubscribe_trigger = subscribe(trigger, (value) => $trigger = value); createDispatcher(); const attrs = getAttrs("trigger"); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.id === void 0 && $$bindings.id && id !== void 0) $$bindings.id(id); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); { if (id) { ids.trigger.set(id); } } builder = $trigger; { Object.assign(builder, attrs); } $$unsubscribe_trigger(); return `${asChild ? `${slots.default ? slots.default({ builder }) : ``}` : `${slots.default ? slots.default({ builder }) : ``}`}`; }); const Tooltip_content = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class", "sideOffset", "transition", "transitionConfig"]); let { class: className = void 0 } = $$props; let { sideOffset = 4 } = $$props; let { transition = flyAndScale } = $$props; let { transitionConfig = { y: 8, duration: 150 } } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); if ($$props.sideOffset === void 0 && $$bindings.sideOffset && sideOffset !== void 0) $$bindings.sideOffset(sideOffset); if ($$props.transition === void 0 && $$bindings.transition && transition !== void 0) $$bindings.transition(transition); if ($$props.transitionConfig === void 0 && $$bindings.transitionConfig && transitionConfig !== void 0) $$bindings.transitionConfig(transitionConfig); return `${validate_component(Tooltip_content$1, "TooltipPrimitive.Content").$$render( $$result, Object.assign( {}, { transition }, { transitionConfig }, { sideOffset }, { class: cn("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md", className) }, $$restProps ), {}, { default: () => { return `${slots.default ? slots.default({}) : ``}`; } } )}`; }); const Root = Tooltip; const Trigger = Tooltip_trigger; const FORM_FIELD = Symbol("FORM_FIELD_CTX"); function setFormField(props) { setContext(FORM_FIELD, props); return props; } function getFormField() { if (!hasContext(FORM_FIELD)) { ctxError("Form.Field"); } return getContext(FORM_FIELD); } const FORM_CONTROL = Symbol("FORM_CONTROL_CTX"); function setFormControl(props) { setContext(FORM_CONTROL, props); return props; } function getFormControl() { if (!hasContext(FORM_CONTROL)) { ctxError(""); } return getContext(FORM_CONTROL); } function ctxError(ctx) { throw new Error(`Unable to find \`${ctx}\` context. Did you forget to wrap the component in a \`${ctx}\`?`); } function getAriaDescribedBy({ fieldErrorsId = void 0, descriptionId = void 0, errors }) { let describedBy = ""; if (descriptionId) { describedBy += descriptionId + " "; } if (errors.length && fieldErrorsId) { describedBy += fieldErrorsId; } return describedBy ? describedBy.trim() : void 0; } function getAriaRequired(constraints) { if (!("required" in constraints)) return void 0; return constraints.required ? "true" : void 0; } function getAriaInvalid(errors) { return errors && errors.length ? "true" : void 0; } function getDataFsError(errors) { return errors && errors.length ? "" : void 0; } function generateId() { return nanoid(5); } function extractErrorArray(errors) { if (Array.isArray(errors)) return errors; if (typeof errors === "object" && "_errors" in errors) { if (errors._errors !== void 0) return errors._errors; } return []; } const Description = create_ssr_component(($$result, $$props, $$bindings, slots) => { let descriptionAttrs; let $$restProps = compute_rest_props($$props, ["id", "asChild", "el"]); let $errors, $$unsubscribe_errors; let $descriptionId, $$unsubscribe_descriptionId; const { descriptionId, errors } = getFormField(); $$unsubscribe_descriptionId = subscribe(descriptionId, (value) => $descriptionId = value); $$unsubscribe_errors = subscribe(errors, (value) => $errors = value); let { id = generateId() } = $$props; let { asChild = false } = $$props; let { el = void 0 } = $$props; if ($$props.id === void 0 && $$bindings.id && id !== void 0) $$bindings.id(id); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); { descriptionId.set(id); } descriptionAttrs = { id: $descriptionId, "data-fs-error": getDataFsError($errors), "data-fs-description": "", ...$$restProps }; $$unsubscribe_errors(); $$unsubscribe_descriptionId(); return ` ${asChild ? `${slots.default ? slots.default({ descriptionAttrs }) : ``}` : `${slots.default ? slots.default({ descriptionAttrs }) : ``}`}`; }); function getValueAtPath(path, obj) { const keys = path.split(/[[\].]/).filter(Boolean); let value = obj; for (const key of keys) { if (typeof value !== "object" || value === null) { return void 0; } value = value[key]; } return value; } const Field = create_ssr_component(($$result, $$props, $$bindings, slots) => { let formErrors; let formConstraints; let formTainted; let formData; let $formTainted, $$unsubscribe_formTainted = noop, $$subscribe_formTainted = () => ($$unsubscribe_formTainted(), $$unsubscribe_formTainted = subscribe(formTainted, ($$value) => $formTainted = $$value), formTainted); let $formConstraints, $$unsubscribe_formConstraints = noop, $$subscribe_formConstraints = () => ($$unsubscribe_formConstraints(), $$unsubscribe_formConstraints = subscribe(formConstraints, ($$value) => $formConstraints = $$value), formConstraints); let $formErrors, $$unsubscribe_formErrors = noop, $$subscribe_formErrors = () => ($$unsubscribe_formErrors(), $$unsubscribe_formErrors = subscribe(formErrors, ($$value) => $formErrors = $$value), formErrors); let $formData, $$unsubscribe_formData = noop, $$subscribe_formData = () => ($$unsubscribe_formData(), $$unsubscribe_formData = subscribe(formData, ($$value) => $formData = $$value), formData); let $errors, $$unsubscribe_errors; let $tainted, $$unsubscribe_tainted; let { form } = $$props; let { name: name2 } = $$props; const field = { name: writable(name2), errors: writable([]), constraints: writable({}), tainted: writable(false), fieldErrorsId: writable(), descriptionId: writable(), form }; const { tainted, errors } = field; $$unsubscribe_tainted = subscribe(tainted, (value) => $tainted = value); $$unsubscribe_errors = subscribe(errors, (value) => $errors = value); setFormField(field); if ($$props.form === void 0 && $$bindings.form && form !== void 0) $$bindings.form(form); if ($$props.name === void 0 && $$bindings.name && name2 !== void 0) $$bindings.name(name2); $$subscribe_formErrors({ errors: formErrors, constraints: formConstraints, tainted: formTainted, form: formData } = form, $$subscribe_formConstraints(), $$subscribe_formTainted(), $$subscribe_formData()); { field.name.set(name2); } { field.errors.set(extractErrorArray(getValueAtPath(name2, $formErrors))); } { field.constraints.set(getValueAtPath(name2, $formConstraints) ?? {}); } { field.tainted.set($formTainted ? getValueAtPath(name2, $formTainted) === true : false); } $$unsubscribe_formTainted(); $$unsubscribe_formConstraints(); $$unsubscribe_formErrors(); $$unsubscribe_formData(); $$unsubscribe_errors(); $$unsubscribe_tainted(); return ` ${slots.default ? slots.default({ value: $formData[name2], errors: $errors, tainted: $tainted, constraints: $formConstraints[name2] }) : ``}`; }); const Control$1 = create_ssr_component(($$result, $$props, $$bindings, slots) => { let errorAttr; let attrs; let labelAttrs; let $idStore, $$unsubscribe_idStore; let $constraints, $$unsubscribe_constraints; let $errors, $$unsubscribe_errors; let $descriptionId, $$unsubscribe_descriptionId; let $fieldErrorsId, $$unsubscribe_fieldErrorsId; let $name, $$unsubscribe_name; let { id = generateId() } = $$props; const { name: name2, fieldErrorsId, descriptionId, errors, constraints } = getFormField(); $$unsubscribe_name = subscribe(name2, (value) => $name = value); $$unsubscribe_fieldErrorsId = subscribe(fieldErrorsId, (value) => $fieldErrorsId = value); $$unsubscribe_descriptionId = subscribe(descriptionId, (value) => $descriptionId = value); $$unsubscribe_errors = subscribe(errors, (value) => $errors = value); $$unsubscribe_constraints = subscribe(constraints, (value) => $constraints = value); const controlContext = { id: writable(id), attrs: writable(), labelAttrs: writable() }; const { id: idStore } = controlContext; $$unsubscribe_idStore = subscribe(idStore, (value) => $idStore = value); setFormControl(controlContext); if ($$props.id === void 0 && $$bindings.id && id !== void 0) $$bindings.id(id); { controlContext.id.set(id); } errorAttr = getDataFsError($errors); attrs = { name: $name, id: $idStore, "data-fs-error": errorAttr, "aria-describedby": getAriaDescribedBy({ fieldErrorsId: $fieldErrorsId, descriptionId: $descriptionId, errors: $errors }), "aria-invalid": getAriaInvalid($errors), "aria-required": getAriaRequired($constraints), "data-fs-control": "" }; labelAttrs = { for: $idStore, "data-fs-label": "", "data-fs-error": errorAttr }; { controlContext.attrs.set(attrs); } { controlContext.labelAttrs.set(labelAttrs); } $$unsubscribe_idStore(); $$unsubscribe_constraints(); $$unsubscribe_errors(); $$unsubscribe_descriptionId(); $$unsubscribe_fieldErrorsId(); $$unsubscribe_name(); return ` ${slots.default ? slots.default({ attrs }) : ``}`; }); const Field_errors = create_ssr_component(($$result, $$props, $$bindings, slots) => { let errorAttr; let fieldErrorsAttrs; let errorAttrs; let $$restProps = compute_rest_props($$props, ["id", "asChild", "el"]); let $fieldErrorsId, $$unsubscribe_fieldErrorsId; let $errors, $$unsubscribe_errors; const { fieldErrorsId, errors } = getFormField(); $$unsubscribe_fieldErrorsId = subscribe(fieldErrorsId, (value) => $fieldErrorsId = value); $$unsubscribe_errors = subscribe(errors, (value) => $errors = value); let { id = generateId() } = $$props; let { asChild = false } = $$props; let { el = void 0 } = $$props; if ($$props.id === void 0 && $$bindings.id && id !== void 0) $$bindings.id(id); if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0) $$bindings.asChild(asChild); if ($$props.el === void 0 && $$bindings.el && el !== void 0) $$bindings.el(el); errorAttr = getDataFsError($errors); { fieldErrorsId.set(id); } fieldErrorsAttrs = { id: $fieldErrorsId, "data-fs-error": errorAttr, "data-fs-field-errors": "", "aria-live": "assertive", ...$$restProps }; errorAttrs = { "data-fs-field-error": "", "data-fs-error": errorAttr }; $$unsubscribe_fieldErrorsId(); $$unsubscribe_errors(); return ` ${asChild ? `${slots.default ? slots.default({ errors: $errors, fieldErrorsAttrs, errorAttrs }) : ``}` : `${slots.default ? slots.default({ errors: $errors, fieldErrorsAttrs, errorAttrs }) : ` ${each($errors, (error) => { return `${escape(error)}`; })} `}`}`; }); const Form_description = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class"]); let { class: className = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); return `${validate_component(Description, "FormPrimitive.Description").$$render( $$result, Object.assign( {}, { class: cn("text-sm text-muted-foreground", className) }, $$restProps ), {}, { default: ({ descriptionAttrs }) => { return `${slots.default ? slots.default({ descriptionAttrs }) : ``}`; } } )}`; }); const Label = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class"]); let { class: className = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); return `${validate_component(Label$1, "LabelPrimitive.Root").$$render( $$result, Object.assign( {}, { class: cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", className) }, $$restProps ), {}, { default: () => { return `${slots.default ? slots.default({}) : ``}`; } } )}`; }); const Form_label = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class"]); let $labelAttrs, $$unsubscribe_labelAttrs; let { class: className = void 0 } = $$props; const { labelAttrs } = getFormControl(); $$unsubscribe_labelAttrs = subscribe(labelAttrs, (value) => $labelAttrs = value); if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); $$unsubscribe_labelAttrs(); return `${validate_component(Label, "Label").$$render( $$result, Object.assign( {}, $labelAttrs, { class: cn("data-[fs-error]:text-destructive", className) }, $$restProps ), {}, { default: () => { return `${slots.default ? slots.default({ labelAttrs }) : ``}`; } } )}`; }); const Form_field_errors = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class", "errorClasses"]); let { class: className = void 0 } = $$props; let { errorClasses = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); if ($$props.errorClasses === void 0 && $$bindings.errorClasses && errorClasses !== void 0) $$bindings.errorClasses(errorClasses); return `${validate_component(Field_errors, "FormPrimitive.FieldErrors").$$render( $$result, Object.assign( {}, { class: cn("text-sm font-medium text-destructive", className) }, $$restProps ), {}, { default: ({ errors, fieldErrorsAttrs, errorAttrs }) => { return `${slots.default ? slots.default({ errors, fieldErrorsAttrs, errorAttrs }) : ` ${each(errors, (error) => { return `${escape(error)}`; })} `}`; } } )}`; }); const Form_field = create_ssr_component(($$result, $$props, $$bindings, slots) => { let { form } = $$props; let { name: name2 } = $$props; let { class: className = void 0 } = $$props; if ($$props.form === void 0 && $$bindings.form && form !== void 0) $$bindings.form(form); if ($$props.name === void 0 && $$bindings.name && name2 !== void 0) $$bindings.name(name2); if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); return `${validate_component(Field, "FormPrimitive.Field").$$render($$result, { form, name: name2 }, {}, { default: ({ constraints, errors, tainted, value }) => { return `${slots.default ? slots.default({ constraints, errors, tainted, value }) : ``}`; } })}`; }); const Control = Control$1; const Switch = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class", "checked"]); let { class: className = void 0 } = $$props; let { checked = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); if ($$props.checked === void 0 && $$bindings.checked && checked !== void 0) $$bindings.checked(checked); let $$settled; let $$rendered; let previous_head = $$result.head; do { $$settled = true; $$result.head = previous_head; $$rendered = `${validate_component(Switch$1, "SwitchPrimitive.Root").$$render( $$result, Object.assign( {}, { class: cn("peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", className) }, $$restProps, { checked } ), { checked: ($$value) => { checked = $$value; $$settled = false; } }, { default: () => { return `${validate_component(Switch_thumb, "SwitchPrimitive.Thumb").$$render( $$result, { class: cn("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0") }, {}, {} )}`; } } )}`; } while (!$$settled); return $$rendered; }); const Input = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class", "value", "readonly"]); let { class: className = void 0 } = $$props; let { value = void 0 } = $$props; let { readonly = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); if ($$props.value === void 0 && $$bindings.value && value !== void 0) $$bindings.value(value); if ($$props.readonly === void 0 && $$bindings.readonly && readonly !== void 0) $$bindings.readonly(readonly); return ``; }); const Textarea = create_ssr_component(($$result, $$props, $$bindings, slots) => { let $$restProps = compute_rest_props($$props, ["class", "value", "readonly"]); let { class: className = void 0 } = $$props; let { value = void 0 } = $$props; let { readonly = void 0 } = $$props; if ($$props.class === void 0 && $$bindings.class && className !== void 0) $$bindings.class(className); if ($$props.value === void 0 && $$bindings.value && value !== void 0) $$bindings.value(value); if ($$props.readonly === void 0 && $$bindings.readonly && readonly !== void 0) $$bindings.readonly(readonly); return `${escape(value || "")}`; }); export { Control as C, Form_field as F, Input as I, Label as L, Root as R, Switch as S, Trigger as T, Tooltip_content as a, Form_label as b, Form_description as c, Form_field_errors as d, Textarea as e, createLabel as f }; //# sourceMappingURL=textarea-bqlfV9dO.js.map