@exponential-at/ui-solid 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +135 -2
  4. package/dist/chunks/image-loading-status-DZOoj4RQ.js +1724 -0
  5. package/dist/chunks/image-loading-status-DZOoj4RQ.js.map +1 -0
  6. package/dist/exponential-ui-solid.css +2 -0
  7. package/dist/index.js +12305 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/primitives.js +8439 -0
  10. package/dist/primitives.js.map +1 -0
  11. package/dist/types/behaviors/bubble-input.d.ts +35 -0
  12. package/dist/types/behaviors/collapsible.d.ts +15 -0
  13. package/dist/types/behaviors/dialog.d.ts +116 -0
  14. package/dist/types/behaviors/dismissable-layer.d.ts +48 -0
  15. package/dist/types/behaviors/drag-to-dismiss.d.ts +10 -0
  16. package/dist/types/behaviors/element-size.d.ts +7 -0
  17. package/dist/types/behaviors/focus-guards.d.ts +4 -0
  18. package/dist/types/behaviors/focus-scope.d.ts +20 -0
  19. package/dist/types/behaviors/grace-area.d.ts +10 -0
  20. package/dist/types/behaviors/image-loading-status.d.ts +4 -0
  21. package/dist/types/behaviors/index.d.ts +23 -0
  22. package/dist/types/behaviors/listbox.d.ts +44 -0
  23. package/dist/types/behaviors/menu.d.ts +95 -0
  24. package/dist/types/behaviors/modal.d.ts +3 -0
  25. package/dist/types/behaviors/picker-popover.d.ts +22 -0
  26. package/dist/types/behaviors/popper.d.ts +49 -0
  27. package/dist/types/behaviors/portal.d.ts +11 -0
  28. package/dist/types/behaviors/presence.d.ts +7 -0
  29. package/dist/types/behaviors/roving-focus.d.ts +30 -0
  30. package/dist/types/behaviors/scroll-lock.d.ts +4 -0
  31. package/dist/types/behaviors/search-match.d.ts +6 -0
  32. package/dist/types/behaviors/slider.d.ts +8 -0
  33. package/dist/types/behaviors/style-writer.d.ts +8 -0
  34. package/dist/types/behaviors/typeahead.d.ts +11 -0
  35. package/dist/types/behaviors/visually-hidden.d.ts +6 -0
  36. package/dist/types/bind-attrs.d.ts +4 -0
  37. package/dist/types/context.d.ts +74 -0
  38. package/dist/types/create-surface.d.ts +58 -0
  39. package/dist/types/extensions.d.ts +25 -0
  40. package/dist/types/form.d.ts +63 -0
  41. package/dist/types/host-surface.d.ts +33 -0
  42. package/dist/types/host.d.ts +37 -0
  43. package/dist/types/icons.d.ts +56 -0
  44. package/dist/types/index.d.ts +39 -0
  45. package/dist/types/inputs.d.ts +27 -0
  46. package/dist/types/list.d.ts +33 -0
  47. package/dist/types/markdown.d.ts +10 -0
  48. package/dist/types/media.d.ts +16 -0
  49. package/dist/types/natives/actions.d.ts +13 -0
  50. package/dist/types/natives/bound.d.ts +3 -0
  51. package/dist/types/natives/chart.d.ts +4 -0
  52. package/dist/types/natives/chips.d.ts +7 -0
  53. package/dist/types/natives/choice-tiles.d.ts +4 -0
  54. package/dist/types/natives/code.d.ts +4 -0
  55. package/dist/types/natives/dates.d.ts +30 -0
  56. package/dist/types/natives/feedback.d.ts +19 -0
  57. package/dist/types/natives/index.d.ts +6 -0
  58. package/dist/types/natives/inputs.d.ts +20 -0
  59. package/dist/types/natives/layout.d.ts +12 -0
  60. package/dist/types/natives/media.d.ts +14 -0
  61. package/dist/types/natives/nav.d.ts +14 -0
  62. package/dist/types/natives/overlays.d.ts +19 -0
  63. package/dist/types/natives/owners.d.ts +2 -0
  64. package/dist/types/natives/pending.d.ts +3 -0
  65. package/dist/types/natives/resizable.d.ts +4 -0
  66. package/dist/types/natives/search.d.ts +45 -0
  67. package/dist/types/natives/select.d.ts +10 -0
  68. package/dist/types/natives/shared.d.ts +50 -0
  69. package/dist/types/natives/table.d.ts +7 -0
  70. package/dist/types/natives/text.d.ts +5 -0
  71. package/dist/types/node-view.d.ts +83 -0
  72. package/dist/types/platform.d.ts +12 -0
  73. package/dist/types/primitives/alert-dialog.d.ts +24 -0
  74. package/dist/types/primitives/alert.d.ts +6 -0
  75. package/dist/types/primitives/avatar-color.d.ts +1 -0
  76. package/dist/types/primitives/avatar.d.ts +12 -0
  77. package/dist/types/primitives/badge.d.ts +8 -0
  78. package/dist/types/primitives/breadcrumb.d.ts +12 -0
  79. package/dist/types/primitives/button.d.ts +12 -0
  80. package/dist/types/primitives/calendar.d.ts +188 -0
  81. package/dist/types/primitives/card.d.ts +9 -0
  82. package/dist/types/primitives/checkbox.d.ts +14 -0
  83. package/dist/types/primitives/choice-tiles.d.ts +59 -0
  84. package/dist/types/primitives/cn.d.ts +1 -0
  85. package/dist/types/primitives/code-block.d.ts +34 -0
  86. package/dist/types/primitives/collapsible.d.ts +15 -0
  87. package/dist/types/primitives/command.d.ts +51 -0
  88. package/dist/types/primitives/context-ring.d.ts +14 -0
  89. package/dist/types/primitives/dialog-arms.d.ts +2 -0
  90. package/dist/types/primitives/dialog.d.ts +34 -0
  91. package/dist/types/primitives/disclosure-header.d.ts +7 -0
  92. package/dist/types/primitives/dock-card.d.ts +41 -0
  93. package/dist/types/primitives/dropdown-menu.d.ts +73 -0
  94. package/dist/types/primitives/empty-state.d.ts +19 -0
  95. package/dist/types/primitives/glass-card.d.ts +3 -0
  96. package/dist/types/primitives/hover-card.d.ts +28 -0
  97. package/dist/types/primitives/icon-disc.d.ts +11 -0
  98. package/dist/types/primitives/index.d.ts +51 -0
  99. package/dist/types/primitives/input.d.ts +6 -0
  100. package/dist/types/primitives/kbd.d.ts +4 -0
  101. package/dist/types/primitives/label.d.ts +3 -0
  102. package/dist/types/primitives/menu-surface.d.ts +1 -0
  103. package/dist/types/primitives/meter.d.ts +8 -0
  104. package/dist/types/primitives/popover.d.ts +31 -0
  105. package/dist/types/primitives/progress-ring.d.ts +12 -0
  106. package/dist/types/primitives/progress.d.ts +9 -0
  107. package/dist/types/primitives/scroll-area.d.ts +19 -0
  108. package/dist/types/primitives/segmented-control.d.ts +23 -0
  109. package/dist/types/primitives/select.d.ts +51 -0
  110. package/dist/types/primitives/separator.d.ts +6 -0
  111. package/dist/types/primitives/sheet-chrome.d.ts +11 -0
  112. package/dist/types/primitives/sheet.d.ts +21 -0
  113. package/dist/types/primitives/skeleton.d.ts +3 -0
  114. package/dist/types/primitives/spinner.d.ts +9 -0
  115. package/dist/types/primitives/switch.d.ts +14 -0
  116. package/dist/types/primitives/table.d.ts +11 -0
  117. package/dist/types/primitives/tabs.d.ts +29 -0
  118. package/dist/types/primitives/textarea.d.ts +5 -0
  119. package/dist/types/primitives/toast.d.ts +16 -0
  120. package/dist/types/primitives/tooltip.d.ts +34 -0
  121. package/dist/types/primitives/truncate.d.ts +1 -0
  122. package/dist/types/primitives/use-media-query.d.ts +4 -0
  123. package/dist/types/primitives/use-mobile.d.ts +4 -0
  124. package/dist/types/primitives/use-sheet-drag.d.ts +20 -0
  125. package/dist/types/style.d.ts +6 -0
  126. package/dist/types/surface.d.ts +99 -0
  127. package/package.json +55 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sources":["../src/primitives/alert.tsx","../src/behaviors/dialog.tsx","../src/primitives/alert-dialog.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/breadcrumb.tsx","../src/primitives/button.tsx","../src/primitives/calendar.tsx","../src/primitives/card.tsx","../src/primitives/checkbox.tsx","../src/primitives/choice-tiles.tsx","../src/primitives/code-block.tsx","../src/primitives/collapsible.tsx","../src/primitives/command.tsx","../src/primitives/context-ring.tsx","../src/primitives/sheet-chrome.tsx","../src/primitives/use-sheet-drag.ts","../src/primitives/sheet.tsx","../src/primitives/dialog.tsx","../src/primitives/disclosure-header.tsx","../src/primitives/dock-card.tsx","../src/primitives/dropdown-menu.tsx","../src/primitives/icon-disc.tsx","../src/primitives/empty-state.tsx","../src/primitives/glass-card.tsx","../src/primitives/hover-card.tsx","../src/primitives/input.tsx","../src/primitives/kbd.tsx","../src/primitives/label.tsx","../src/primitives/progress.tsx","../src/primitives/meter.tsx","../src/primitives/popover.tsx","../src/primitives/progress-ring.tsx","../src/primitives/scroll-area.tsx","../src/primitives/tabs.tsx","../src/primitives/segmented-control.tsx","../src/primitives/select.tsx","../src/primitives/separator.tsx","../src/primitives/skeleton.tsx","../src/primitives/spinner.tsx","../src/primitives/switch.tsx","../src/primitives/table.tsx","../src/primitives/textarea.tsx","../src/primitives/toast.tsx","../src/primitives/tooltip.tsx","../src/primitives/use-media-query.ts","../src/primitives/use-mobile.ts"],"sourcesContent":["import { splitProps, type ComponentProps } from \"solid-js\"\nimport { ALERT_CLASSES, alertVariants, type AlertVariantProps } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Alert(props: ComponentProps<`div`> & AlertVariantProps) {\n const [local, rest] = splitProps(props, [`class`, `variant`])\n return <div data-slot=\"alert\" role=\"alert\" class={cn(alertVariants({ variant: local.variant }), local.class)} {...rest} />\n}\n\nfunction AlertTitle(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"alert-title\" class={cn(ALERT_CLASSES.title, local.class)} {...rest} />\n}\n\nfunction AlertDescription(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"alert-description\" class={cn(ALERT_CLASSES.description, local.class)} {...rest} />\n}\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants }\n","// FEED-131: Radix `Dialog` on plain elements for the primitive set (Dialog,\n// Sheet, AlertDialog): the Root's state + ids, the Trigger and Close (an `as`\n// element wears Radix's attributes, React's `asChild`), the Portal (one per\n// part, no wrapper, `document.body` by default), the Overlay (scroll lock,\n// `pointer-events: auto`), the Content (the dismissable layer, the focus\n// scope, the focus guards, `hideOthers` when modal), Title and Description.\n// Plus the small pieces every overlay twin shares: the controllable open\n// state, handler composition, ref merging, React-style inline styles.\n\nimport { Show, createContext, createSignal, onMount, splitProps, untrack, useContext, type Accessor, type JSX, type ValidComponent } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { createLayer, type OutsideEvent } from \"./dismissable-layer\"\nimport { createFocusScope } from \"./focus-scope\"\nimport { useFocusGuards } from \"./focus-guards\"\nimport { useModalEffects } from \"./modal\"\nimport { LayerPortal } from \"./portal\"\nimport { createPresence } from \"./presence\"\nimport { useScrollLock } from \"./scroll-lock\"\nimport { bindStyle, type StyleObject } from \"./style-writer\"\n\nexport type { OutsideEvent }\n\n/** Calls a Solid event handler prop (a function or a `[fn, data]` pair). */\nexport function callHandler<E extends Event>(handler: unknown, event: E): void {\n if (typeof handler === `function`) handler(event)\n else if (Array.isArray(handler) && typeof handler[0] === `function`) handler[0](handler[1], event)\n}\n\n/** Radix's `composeEventHandlers`: the caller's handler first, ours unless it\n * prevented the default. */\nexport function composeHandlers<E extends Event>(user: unknown, ours: (event: E) => void, checkForDefaultPrevented = true): (event: E) => void {\n return (event) => {\n callHandler(user, event)\n if (!checkForDefaultPrevented || !event.defaultPrevented) ours(event)\n }\n}\n\n/** Calls a Solid `ref` prop (a compiled ref callback) with the element. */\nexport function callRef(ref: unknown, el: unknown): void {\n if (typeof ref === `function`) ref(el)\n}\n\n/** Every ref callback of `refs` receives the element. */\nexport function mergeRefs<T>(...refs: unknown[]): (el: T) => void {\n return (el) => {\n for (const r of refs) if (typeof r === `function`) r(el)\n }\n}\n\n/** A Solid `style` prop (object or string) as a kebab-case object for\n * `bindStyle` (React's semantics: the caller's style merges into ours). */\nexport function styleObject(style: unknown): StyleObject {\n if (!style || typeof style !== `object`) return {}\n const out: StyleObject = {}\n for (const [k, v] of Object.entries(style as Record<string, unknown>)) out[k] = v === undefined || v === null ? undefined : String(v)\n return out\n}\n\n/** Radix `useControllableState` for an overlay's `open`: controlled when\n * `open()` is defined, else local from `defaultOpen`; `onOpenChange` fires\n * on a change only, BEFORE the parts re-render (Radix calls it before its\n * portalled content mounts: a Tooltip's \"another tooltip opened\" event\n * must not reach its own content). */\nexport function createOpenState(o: { open: () => boolean | undefined; defaultOpen?: boolean; onOpenChange: () => ((open: boolean) => void) | undefined }): [Accessor<boolean>, (next: boolean) => void] {\n const [inner, setInner] = createSignal(untrack(() => o.defaultOpen) ?? false)\n const open = () => o.open() ?? inner()\n const set = (next: boolean) => {\n const prev = untrack(open)\n if (next !== prev) untrack(o.onOpenChange)?.(next)\n if (untrack(o.open) === undefined) setInner(next)\n }\n return [open, set]\n}\n\nexport const stateOf = (open: boolean) => (open ? `open` : `closed`)\n\nlet layerMounted = false\n/** A primitive layer attached in this task (see `layerMountedThisTask`). */\nexport function noteLayerMount(): void {\n if (layerMounted) return\n layerMounted = true\n queueMicrotask(() => (layerMounted = false))\n}\n/** Whether a primitive layer attached in this same task: a content created\n * now mounts NESTED in it (Radix registers that outer layer one commit\n * after this content's first render, so its first `pointer-events` is\n * unset). */\nexport function layerMountedThisTask(): boolean {\n return layerMounted\n}\n\n/** The layer's `pointer-events` with that lag applied. */\nexport function layerPointerEvents(layer: { pointerEvents: (registered: boolean) => string | undefined }, registered: boolean, lag: boolean): string | undefined {\n return lag && !registered ? undefined : layer.pointerEvents(registered)\n}\n\nexport interface DialogContextValue {\n open: Accessor<boolean>\n setOpen: (open: boolean) => void\n modal: boolean\n contentId: string\n titleId: string\n descriptionId: string\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n}\n\nconst DialogContext = createContext<DialogContextValue>()\n\nexport function useDialogContext(part: string): DialogContextValue {\n const ctx = useContext(DialogContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`Dialog\\``)\n return ctx\n}\n\nexport interface DialogRootProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children?: JSX.Element\n}\n\n/** Radix `Dialog` (Root): renders no element. */\nexport function DialogRoot(props: DialogRootProps): JSX.Element {\n const [open, setOpen] = createOpenState({ open: () => props.open, defaultOpen: props.defaultOpen, onOpenChange: () => props.onOpenChange })\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const value: DialogContextValue = {\n open,\n setOpen,\n modal: untrack(() => props.modal) ?? true,\n contentId: `radix-${createId()}`,\n titleId: `radix-${createId()}`,\n descriptionId: `radix-${createId()}`,\n trigger,\n setTrigger,\n }\n return <DialogContext.Provider value={value}>{props.children}</DialogContext.Provider>\n}\n\nlet idCounter = 0\n/** A fresh id: `radix-<n>` keeps the parity rename rule (generated ids). */\nexport function createId(): string {\n return `s${++idCounter}`\n}\n\nexport type AsProps = { as?: ValidComponent; ref?: unknown; onClick?: unknown; children?: JSX.Element; [key: string]: unknown }\n\n/** Radix `DialogTrigger`: `type=\"button\"`, `aria-haspopup=\"dialog\"`,\n * `aria-expanded`, `aria-controls`, `data-state`, a click toggles. */\nexport function DialogTriggerPart(props: AsProps): JSX.Element {\n const ctx = useDialogContext(`DialogTrigger`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `onClick`])\n return (\n <Dynamic\n component={local.as ?? `button`}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open() ? `true` : `false`}\n aria-controls={ctx.contentId}\n data-state={stateOf(ctx.open())}\n {...rest}\n ref={mergeRefs(local.ref, ctx.setTrigger)}\n onClick={composeHandlers(local.onClick, () => ctx.setOpen(!untrack(ctx.open)))}\n />\n )\n}\n\n/** Radix `DialogClose`: `type=\"button\"`, a click closes. */\nexport function DialogClosePart(props: AsProps): JSX.Element {\n const ctx = useDialogContext(`DialogClose`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `onClick`])\n return <Dynamic component={local.as ?? `button`} type=\"button\" {...rest} ref={local.ref} onClick={composeHandlers(local.onClick, () => ctx.setOpen(false))} />\n}\n\n/** Radix `Portal` as the primitives use it: the children appended to\n * `container`, no wrapper. Without a container Radix mounts into\n * `document.body` one commit LATER (its `mounted` state): a portal nested\n * in another portal's content lands after it, once the outer content's\n * effects (`hideOthers`, the focus guards) ran. */\nexport function DialogPortalPart(props: { container?: HTMLElement | null; children?: JSX.Element }): JSX.Element {\n const [mounted, setMounted] = createSignal(false)\n onMount(() => setMounted(true))\n return <LayerPortal mount={props.container !== undefined ? props.container : mounted() ? document.body : null}>{props.children}</LayerPortal>\n}\n\n/** Radix `DialogOverlay` (modal dialogs only): `data-state`, the scroll\n * lock, `pointer-events: auto`; present while open (+ its exit animation). */\nexport function DialogOverlayPart(props: { style?: unknown; ref?: unknown; [key: string]: unknown }): JSX.Element {\n const ctx = useDialogContext(`DialogOverlay`)\n const presence = createPresence(ctx.open)\n const [local, rest] = splitProps(props, [`style`, `ref`])\n const Overlay = () => {\n const el = (<div data-state={stateOf(ctx.open())} {...rest} />) as HTMLDivElement\n presence.ref(el)\n bindStyle(el, () => ({ \"pointer-events\": `auto`, ...styleObject(local.style) }))\n callRef(local.ref, el)\n onMount(() => useScrollLock())\n return el\n }\n return (\n <Show when={ctx.modal && presence.mounted()}>\n <Overlay />\n </Show>\n )\n}\n\nexport interface DialogContentPartProps {\n role?: string\n style?: unknown\n ref?: unknown\n onOpenAutoFocus?: (e: Event) => void\n onCloseAutoFocus?: (e: Event) => void\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n onKeyDown?: unknown\n children?: JSX.Element\n [key: string]: unknown\n}\n\n/** Radix `DialogContent` (modal or not, per the Root): `role=\"dialog\"`,\n * `id`, `aria-describedby`, `aria-labelledby`, `data-state`,\n * `tabindex=\"-1\"`, the layer's `pointer-events`; present while open. */\nexport function DialogContentPart(props: DialogContentPartProps): JSX.Element {\n const ctx = useDialogContext(`DialogContent`)\n const presence = createPresence(ctx.open)\n const [local, rest] = splitProps(props, [`role`, `style`, `ref`, `children`, `onOpenAutoFocus`, `onCloseAutoFocus`, `onEscapeKeyDown`, `onPointerDownOutside`, `onFocusOutside`, `onInteractOutside`, `onKeyDown`])\n const Content = () => {\n const modal = ctx.modal\n let interactedOutside = false\n let pointerDownOutside = false\n const layer = createLayer({\n disableOutsidePointerEvents: () => modal,\n onEscapeKeyDown: (e) => local.onEscapeKeyDown?.(e),\n onPointerDownOutside: (e) => {\n local.onPointerDownOutside?.(e)\n if (!modal || e.defaultPrevented) return\n const original = e.detail.originalEvent as PointerEvent\n const ctrlLeftClick = original.button === 0 && original.ctrlKey === true\n if (original.button === 2 || ctrlLeftClick) e.preventDefault()\n },\n onFocusOutside: (e) => {\n local.onFocusOutside?.(e)\n if (modal && !e.defaultPrevented) e.preventDefault()\n },\n onInteractOutside: (e) => {\n local.onInteractOutside?.(e)\n if (modal) return\n if (!e.defaultPrevented) {\n interactedOutside = true\n if (e.detail.originalEvent.type === `pointerdown`) pointerDownOutside = true\n }\n const target = e.target as Node | null\n if (target && ctx.trigger()?.contains(target)) e.preventDefault()\n if (e.detail.originalEvent.type === `focusin` && pointerDownOutside) e.preventDefault()\n },\n onDismiss: () => ctx.setOpen(false),\n })\n const scope = createFocusScope({\n trapped: () => modal && ctx.open(),\n loop: true,\n onMountAutoFocus: (e) => local.onOpenAutoFocus?.(e),\n onUnmountAutoFocus: (e) => {\n if (modal) {\n local.onCloseAutoFocus?.(e)\n if (e.defaultPrevented) return\n e.preventDefault()\n ctx.trigger()?.focus()\n return\n }\n local.onCloseAutoFocus?.(e)\n if (!e.defaultPrevented) {\n if (!interactedOutside) ctx.trigger()?.focus()\n e.preventDefault()\n }\n interactedOutside = false\n pointerDownOutside = false\n },\n })\n const [registered, setRegistered] = createSignal(false)\n const lag = layerMountedThisTask()\n const el = (\n <div\n role={(local.role ?? `dialog`) as `dialog`}\n id={ctx.contentId}\n aria-describedby={ctx.descriptionId}\n aria-labelledby={ctx.titleId}\n data-state={stateOf(ctx.open())}\n tabindex=\"-1\"\n {...rest}\n onKeyDown={(e: KeyboardEvent) => {\n callHandler(local.onKeyDown, e)\n scope.onKeyDown(e)\n }}\n >\n {local.children}\n </div>\n ) as HTMLDivElement\n presence.ref(el)\n bindStyle(el, () => ({ \"pointer-events\": layerPointerEvents(layer, registered(), lag), ...styleObject(local.style) }))\n callRef(local.ref, el)\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n noteLayerMount()\n scope.attach(el)\n useFocusGuards()\n if (modal) useModalEffects(el, false)\n })\n return el\n }\n return (\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n )\n}\n\n/** Radix `DialogTitle`: `<h2 id=titleId>`. */\nexport function DialogTitlePart(props: { [key: string]: unknown; children?: JSX.Element }): JSX.Element {\n const ctx = useDialogContext(`DialogTitle`)\n return <h2 id={ctx.titleId} {...props} />\n}\n\n/** Radix `DialogDescription`: `<p id=descriptionId>`. */\nexport function DialogDescriptionPart(props: { [key: string]: unknown; children?: JSX.Element }): JSX.Element {\n const ctx = useDialogContext(`DialogDescription`)\n return <p id={ctx.descriptionId} {...props} />\n}\n","import { createContext, splitProps, useContext, type ComponentProps, type JSX } from \"solid-js\"\nimport { ALERT_DIALOG_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport {\n DialogClosePart,\n DialogContentPart,\n DialogDescriptionPart,\n DialogOverlayPart,\n DialogPortalPart,\n DialogRoot,\n DialogTitlePart,\n DialogTriggerPart,\n mergeRefs,\n type AsProps,\n type DialogContentPartProps,\n type DialogRootProps,\n} from \"../behaviors/dialog\"\nimport { cn } from \"./cn\"\n\n// Radix AlertDialog = a modal Dialog with `role=\"alertdialog\"`, no outside\n// dismissal, the focus on Cancel when it opens.\n\nconst CancelContext = createContext<{ cancel?: HTMLElement }>()\n\nfunction AlertDialog(props: Omit<DialogRootProps, `modal`>) {\n return <DialogRoot {...props} modal />\n}\n\nfunction AlertDialogTrigger(props: AsProps) {\n return <DialogTriggerPart data-slot=\"alert-dialog-trigger\" {...props} />\n}\n\nfunction AlertDialogPortal(props: { container?: HTMLElement | null; children?: JSX.Element }) {\n return <DialogPortalPart {...props} />\n}\n\nfunction AlertDialogOverlay(props: ComponentProps<`div`> & Record<string, unknown>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogOverlayPart data-slot=\"alert-dialog-overlay\" class={cn(ALERT_DIALOG_CLASSES.overlay, local.class)} {...rest} />\n}\n\nfunction AlertDialogContent(props: DialogContentPartProps & { class?: string; container?: HTMLElement | null }) {\n const [local, rest] = splitProps(props, [`class`, `container`, `onOpenAutoFocus`])\n const cancel: { cancel?: HTMLElement } = {}\n return (\n <>\n <AlertDialogPortal container={local.container}>\n <AlertDialogOverlay />\n </AlertDialogPortal>\n <AlertDialogPortal container={local.container}>\n <CancelContext.Provider value={cancel}>\n <DialogContentPart\n role=\"alertdialog\"\n data-slot=\"alert-dialog-content\"\n class={cn(ALERT_DIALOG_CLASSES.content, local.class)}\n {...rest}\n onOpenAutoFocus={(e: Event) => {\n local.onOpenAutoFocus?.(e)\n if (e.defaultPrevented) return\n e.preventDefault()\n cancel.cancel?.focus({ preventScroll: true })\n }}\n onPointerDownOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => e.preventDefault()}\n />\n </CancelContext.Provider>\n </AlertDialogPortal>\n </>\n )\n}\n\nfunction AlertDialogHeader(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"alert-dialog-header\" class={cn(ALERT_DIALOG_CLASSES.header, local.class)} {...rest} />\n}\n\nfunction AlertDialogFooter(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"alert-dialog-footer\" class={cn(ALERT_DIALOG_CLASSES.footer, local.class)} {...rest} />\n}\n\nfunction AlertDialogTitle(props: ComponentProps<`h2`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogTitlePart data-slot=\"alert-dialog-title\" class={cn(ALERT_DIALOG_CLASSES.title, local.class)} {...rest} />\n}\n\nfunction AlertDialogDescription(props: ComponentProps<`p`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogDescriptionPart data-slot=\"alert-dialog-description\" class={cn(ALERT_DIALOG_CLASSES.description, local.class)} {...rest} />\n}\n\nfunction AlertDialogAction(props: AsProps & { class?: string }) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogClosePart class={cn(ALERT_DIALOG_CLASSES.action, local.class)} {...rest} />\n}\n\nfunction AlertDialogCancel(props: AsProps & { class?: string }) {\n const [local, rest] = splitProps(props, [`class`, `ref`])\n const ctx = useContext(CancelContext)\n return <DialogClosePart class={cn(ALERT_DIALOG_CLASSES.cancel, local.class)} {...rest} ref={mergeRefs(local.ref, (el: HTMLElement) => ctx && (ctx.cancel = el))} />\n}\n\nexport { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel }\n","import { Show, createContext, createEffect, createSignal, on, onCleanup, splitProps, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { AVATAR_CLASSES, avatarFallbackColors, avatarFallbackHue } from \"@exponential-at/ui/web/primitives\"\n\nimport { createImageLoadingStatus, type LoadingStatus } from \"../behaviors\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// Radix Avatar on plain DOM: a <span> root holding the image-loading status,\n// the <img> painted only once its src LOADED (a detached Image probes it),\n// the fallback painted while it has not, after `delayMs` when given.\n\ninterface AvatarState {\n status: Accessor<LoadingStatus>\n setStatus: (s: LoadingStatus) => void\n}\nconst AvatarContext = createContext<AvatarState>()\n\nfunction Avatar(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n const [status, setStatus] = createSignal<LoadingStatus>(`idle`)\n return (\n <AvatarContext.Provider value={{ status, setStatus }}>\n <span data-slot=\"avatar\" class={cn(AVATAR_CLASSES.root, local.class)} {...rest} />\n </AvatarContext.Provider>\n )\n}\n\nfunction AvatarImage(props: ComponentProps<`img`> & { onLoadingStatusChange?: (status: LoadingStatus) => void }) {\n const ctx = useContext(AvatarContext)!\n const [local, rest] = splitProps(props, [`class`, `src`, `onLoadingStatusChange`])\n const status = createImageLoadingStatus(() => local.src)\n createEffect(\n on(status, (s) => {\n if (s === `idle`) return\n local.onLoadingStatusChange?.(s)\n ctx.setStatus(s)\n })\n )\n return (\n <Show when={status() === `loaded`}>\n <img data-slot=\"avatar-image\" class={cn(AVATAR_CLASSES.image, local.class)} {...rest} src={local.src} />\n </Show>\n )\n}\n\nfunction AvatarFallback(props: Omit<ComponentProps<`span`>, `style`> & { userId?: string | null; delayMs?: number; style?: JSX.CSSProperties }) {\n const ctx = useContext(AvatarContext)!\n const [local, rest] = splitProps(props, [`class`, `userId`, `style`, `delayMs`])\n const [canRender, setCanRender] = createSignal(local.delayMs === undefined)\n createEffect(\n on(\n () => local.delayMs,\n (ms) => {\n if (ms === undefined) return\n const timer = window.setTimeout(() => setCanRender(true), ms)\n onCleanup(() => window.clearTimeout(timer))\n }\n )\n )\n const hue = () => avatarFallbackHue(local.userId)\n const style = () => {\n const h = hue()\n return h === undefined ? local.style : { ...css(avatarFallbackColors(h)), ...(local.style ?? {}) }\n }\n return (\n <Show when={canRender() && ctx.status() !== `loaded`}>\n <span data-slot=\"avatar-fallback\" class={cn(AVATAR_CLASSES.fallback, hue() === undefined && AVATAR_CLASSES.fallbackMuted, local.class)} style={style()} {...rest} />\n </Show>\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import { Show, splitProps, type ComponentProps } from \"solid-js\"\nimport { BADGE_CLASSES, badgeLabel, type BadgeTone } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport function Badge(\n props: Omit<ComponentProps<`span`>, `children`> & {\n count: number\n /** Past this the badge reads `${max}+`. */\n max?: number\n tone?: BadgeTone\n }\n) {\n const [local, rest] = splitProps(props, [`count`, `max`, `tone`, `class`])\n const tone = () => local.tone ?? `muted`\n return (\n <Show when={local.count > 0}>\n <span data-slot=\"badge\" data-tone={tone()} class={cn(BADGE_CLASSES.root, BADGE_CLASSES.tones[tone()], local.class)} {...rest}>\n {badgeLabel(local.count, local.max ?? 99)}\n </span>\n </Show>\n )\n}\n","import { children, splitProps, type ComponentProps, type ValidComponent } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { ChevronRight, Ellipsis } from \"lucide-solid\"\nimport { BREADCRUMB_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nfunction Breadcrumb(props: ComponentProps<`nav`>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList(props: ComponentProps<`ol`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <ol data-slot=\"breadcrumb-list\" class={cn(BREADCRUMB_CLASSES.list, local.class)} {...rest} />\n}\n\nfunction BreadcrumbItem(props: ComponentProps<`li`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <li data-slot=\"breadcrumb-item\" class={cn(BREADCRUMB_CLASSES.item, local.class)} {...rest} />\n}\n\n/** React's `asChild` is `as` (a tag or a component). */\nfunction BreadcrumbLink(props: ComponentProps<`a`> & { as?: ValidComponent }) {\n const [local, rest] = splitProps(props, [`class`, `as`])\n return <Dynamic component={local.as ?? `a`} data-slot=\"breadcrumb-link\" class={cn(BREADCRUMB_CLASSES.link, local.class)} {...rest} />\n}\n\nfunction BreadcrumbPage(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <span data-slot=\"breadcrumb-page\" role=\"link\" aria-disabled=\"true\" aria-current=\"page\" class={cn(BREADCRUMB_CLASSES.page, local.class)} {...rest} />\n}\n\nfunction BreadcrumbSeparator(props: ComponentProps<`li`>) {\n const [local, rest] = splitProps(props, [`class`, `children`])\n const resolved = children(() => local.children)\n return (\n <li data-slot=\"breadcrumb-separator\" role=\"presentation\" aria-hidden=\"true\" class={cn(BREADCRUMB_CLASSES.separator, local.class)} {...rest}>\n {resolved() ?? <PaintIcon icon={ChevronRight} />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n return (\n <span data-slot=\"breadcrumb-ellipsis\" role=\"presentation\" aria-hidden=\"true\" class={cn(BREADCRUMB_CLASSES.ellipsis, local.class)} {...rest}>\n <PaintIcon icon={Ellipsis} class={BREADCRUMB_CLASSES.ellipsisIcon} />\n <span class={BREADCRUMB_CLASSES.srOnly}>More</span>\n </span>\n )\n}\n\nexport { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis }\n","import { splitProps, type ComponentProps, type ValidComponent } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { buttonVariants, type ButtonVariantProps } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport type ButtonProps = ComponentProps<`button`> &\n ButtonVariantProps & {\n /** React's `asChild`: the element (a tag or a component) the button\n * paints as, wearing exactly what Radix's Slot merges onto the child. */\n as?: ValidComponent\n href?: string\n target?: string\n rel?: string\n }\n\nfunction Button(props: ButtonProps) {\n const [local, rest] = splitProps(props, [`class`, `variant`, `size`, `as`])\n const variant = () => local.variant ?? `default`\n const size = () => local.size ?? `default`\n return (\n <Dynamic\n component={local.as ?? `button`}\n data-slot=\"button\"\n data-variant={variant()}\n data-size={size()}\n class={cn(buttonVariants({ variant: variant(), size: size(), className: local.class }))}\n {...rest}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","// FEED-131: shadcn's Calendar on Solid, the twin of\n// @exponential-at/ui-react/primitives/calendar (shadcn's wrapper over\n// react-day-picker 9). There is no DayPicker for Solid, so this file ports\n// the parts of DayPicker 9.14 the wrapper exposes and paints its EXACT DOM:\n// the same elements, attributes (`data-day`, `data-outside`, `data-today`,\n// `data-selected`, `data-focused`, `aria-selected`, `aria-label` via the\n// en-US labels, the roving `tabindex`, `role=\"grid\"` +\n// `aria-multiselectable`…) and the `rdp-*` default class names in the order\n// `cn(ours, defaults)` and DayPicker's modifier pass yield. Class strings\n// come from CALENDAR_CLASSES (@exponential-at/ui/web/primitives), one source.\n//\n// Dates: plain local `Date`s and hand-written date math (date-fns' rules:\n// `startOfWeek`, `getWeek`, `addMonths`' end-of-month clamp…). Formatting:\n// DayPicker formats through date-fns with its en-US locale; this port writes\n// the en-US patterns by hand (\"LLLL y\", \"PPPP\" with the ordinal, \"cccccc\",\n// \"cccc\", \"d\", \"yyyy\") and falls back to `Intl.DateTimeFormat(locale.code)`\n// for any other locale (close, not byte-identical).\n//\n// Not ported (the wrapper never sets them): `timeZone`/`noonSafe`,\n// `numerals`, `animate`, `navLayout`, `broadcastCalendar`, `excludeDisabled`,\n// the non-Gregorian calendars, a custom `dateLib`, `styles`/\n// `modifiersStyles`. `components` overrides `DayButton` and `Chevron` only.\n\nimport { For, Show, createEffect, createMemo, createSignal, mergeProps, splitProps, untrack, type Component, type JSX } from \"solid-js\"\nimport { ChevronDown, ChevronLeft, ChevronRight } from \"lucide-solid\"\nimport { CALENDAR_CLASSES, type ButtonVariantProps } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\nimport { Button, buttonVariants } from \"./button\"\n\n// ─── dates (date-fns' rules on local dates) ──────────────────────────────\n\ntype WeekDay = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\ninterface WeekOptions {\n weekStartsOn: WeekDay\n firstWeekContainsDate: number\n}\n\nconst clone = (d: Date) => new Date(d.getTime())\nconst startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate())\nconst startOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth(), 1)\nconst endOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth() + 1, 0, 23, 59, 59, 999)\nconst startOfYear = (d: Date) => new Date(d.getFullYear(), 0, 1)\nconst endOfYear = (d: Date) => new Date(d.getFullYear(), 11, 31, 23, 59, 59, 999)\nconst addDays = (d: Date, n: number) => {\n const out = clone(d)\n out.setDate(out.getDate() + n)\n return out\n}\nconst addMonths = (d: Date, n: number) => {\n const out = clone(d)\n const day = out.getDate()\n const end = clone(d)\n end.setMonth(d.getMonth() + n + 1, 0)\n if (day >= end.getDate()) return end\n out.setFullYear(end.getFullYear(), end.getMonth(), day)\n return out\n}\nconst addYears = (d: Date, n: number) => addMonths(d, n * 12)\nconst isSameDay = (a: Date, b: Date) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\nconst isSameMonth = (a: Date, b: Date) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\nconst differenceInCalendarDays = (a: Date, b: Date) => Math.round((Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()) - Date.UTC(b.getFullYear(), b.getMonth(), b.getDate())) / 864e5)\nconst differenceInCalendarMonths = (a: Date, b: Date) => (a.getFullYear() - b.getFullYear()) * 12 + a.getMonth() - b.getMonth()\nconst maxDate = (dates: Date[]) => dates.reduce((a, b) => (b > a ? b : a))\nconst minDate = (dates: Date[]) => dates.reduce((a, b) => (b < a ? b : a))\nconst startOfWeek = (d: Date, o: WeekOptions) => {\n const day = d.getDay()\n const diff = (day < o.weekStartsOn ? 7 : 0) + day - o.weekStartsOn\n return new Date(d.getFullYear(), d.getMonth(), d.getDate() - diff)\n}\nconst endOfWeek = (d: Date, o: WeekOptions) => {\n const day = d.getDay()\n const diff = (day < o.weekStartsOn ? -7 : 0) + 6 - (day - o.weekStartsOn)\n return new Date(d.getFullYear(), d.getMonth(), d.getDate() + diff, 23, 59, 59, 999)\n}\nconst ISO: WeekOptions = { weekStartsOn: 1, firstWeekContainsDate: 4 }\n/** date-fns `getWeek` (local week numbering; ISO = `{1, 4}`). */\nfunction getWeek(d: Date, o: WeekOptions): number {\n const startOfWeekYear = (year: number) => startOfWeek(new Date(year, 0, o.firstWeekContainsDate), o)\n const year = d.getFullYear()\n const weekYear = d >= startOfWeekYear(year + 1) ? year + 1 : d >= startOfWeekYear(year) ? year : year - 1\n return Math.round((startOfWeek(d, o).getTime() - startOfWeekYear(weekYear).getTime()) / 6048e5) + 1\n}\n\n// ─── formatting (en-US by hand, Intl for the rest) ───────────────────────\n\nconst MONTHS = [`January`, `February`, `March`, `April`, `May`, `June`, `July`, `August`, `September`, `October`, `November`, `December`]\nconst WEEKDAYS = [`Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`]\nconst WEEKDAYS_SHORT = [`Su`, `Mo`, `Tu`, `We`, `Th`, `Fr`, `Sa`]\nconst pad = (n: number, width: number) => String(n).padStart(width, `0`)\nconst ordinal = (n: number) => {\n const rem100 = n % 100\n if (rem100 > 20 || rem100 < 10) {\n if (rem100 % 10 === 1) return `${n}st`\n if (rem100 % 10 === 2) return `${n}nd`\n if (rem100 % 10 === 3) return `${n}rd`\n }\n return `${n}th`\n}\nconst isoDate = (d: Date) => `${pad(d.getFullYear(), 4)}-${pad(d.getMonth() + 1, 2)}-${pad(d.getDate(), 2)}`\nconst monthId = (d: Date) => `${pad(d.getFullYear(), 4)}-${pad(d.getMonth() + 1, 2)}`\n\n/** DayPicker's year-first locales (`DateLib.yearFirstLocales`). */\nconst YEAR_FIRST = new Set([`eu`, `hu`, `ja`, `ja-Hira`, `ja-JP`, `ko`, `ko-KR`, `lt`, `lt-LT`, `lv`, `lv-LV`, `mn`, `mn-MN`, `zh`, `zh-CN`, `zh-HK`, `zh-TW`])\n\n/** A date-fns `Locale` (structurally): its `code` and week options. */\nexport interface CalendarLocale {\n code?: string\n options?: { weekStartsOn?: WeekDay; firstWeekContainsDate?: number }\n /** DayPicker's per-locale labels (react-day-picker's locales carry them). */\n labels?: Partial<Record<keyof CalendarLabels, string | ((...args: never[]) => string)>>\n}\n\nconst EN_US: CalendarLocale = { code: `en-US`, options: { weekStartsOn: 0, firstWeekContainsDate: 1 } }\n\nfunction intl(code: string, options: Intl.DateTimeFormatOptions) {\n return new Intl.DateTimeFormat(code, options)\n}\n\ninterface Fmt {\n code: string\n en: boolean\n monthYear: (d: Date) => string\n /** \"PPPP\": \"Thursday, October 22nd, 2026\". */\n long: (d: Date) => string\n weekdayLong: (d: Date) => string\n weekdayShort: (d: Date) => string\n day: (d: Date) => string\n year: (d: Date) => string\n monthLong: (d: Date) => string\n yearFirst: boolean\n}\n\nfunction makeFmt(code: string): Fmt {\n const en = code === `en-US`\n const yearFirst = YEAR_FIRST.has(code)\n if (en)\n return {\n code,\n en,\n yearFirst,\n monthYear: (d) => `${MONTHS[d.getMonth()]} ${d.getFullYear()}`,\n long: (d) => `${WEEKDAYS[d.getDay()]}, ${MONTHS[d.getMonth()]} ${ordinal(d.getDate())}, ${d.getFullYear()}`,\n weekdayLong: (d) => WEEKDAYS[d.getDay()]!,\n weekdayShort: (d) => WEEKDAYS_SHORT[d.getDay()]!,\n day: (d) => String(d.getDate()),\n year: (d) => pad(d.getFullYear(), 4),\n monthLong: (d) => MONTHS[d.getMonth()]!,\n }\n return {\n code,\n en,\n yearFirst,\n monthYear: (d) => intl(code, { month: `long`, year: `numeric` }).format(d),\n long: (d) => intl(code, { weekday: `long`, month: `long`, day: `numeric`, year: `numeric` }).format(d),\n weekdayLong: (d) => intl(code, { weekday: `long` }).format(d),\n weekdayShort: (d) => intl(code, { weekday: `short` }).format(d).slice(0, 2),\n day: (d) => String(d.getDate()),\n year: (d) => pad(d.getFullYear(), 4),\n monthLong: (d) => intl(code, { month: `long` }).format(d),\n }\n}\n\n// ─── DayPicker's model ───────────────────────────────────────────────────\n\n/** DayPicker's `CalendarDay`: a date shown in a display month. */\nexport class CalendarDay {\n readonly outside: boolean\n readonly isoDate: string\n readonly displayMonthId: string\n readonly dateMonthId: string\n constructor(\n readonly date: Date,\n readonly displayMonth: Date\n ) {\n this.outside = !isSameMonth(date, displayMonth)\n this.isoDate = isoDate(date)\n this.displayMonthId = monthId(displayMonth)\n this.dateMonthId = monthId(date)\n }\n isEqualTo(day: CalendarDay): boolean {\n return isSameDay(day.date, this.date) && isSameMonth(day.displayMonth, this.displayMonth)\n }\n}\n\nexport interface CalendarWeek {\n weekNumber: number\n days: CalendarDay[]\n}\n\nexport interface CalendarMonth {\n date: Date\n weeks: CalendarWeek[]\n}\n\nexport interface DateRange {\n from: Date | undefined\n to?: Date | undefined\n}\nexport interface DateBefore {\n before: Date\n}\nexport interface DateAfter {\n after: Date\n}\nexport interface DateInterval {\n before: Date\n after: Date\n}\nexport interface DayOfWeek {\n dayOfWeek: number | number[]\n}\n/** DayPicker's `Matcher`. */\nexport type Matcher = boolean | ((date: Date) => boolean) | Date | Date[] | DateRange | DateBefore | DateAfter | DateInterval | DayOfWeek\n\n/** A day's modifiers, in DayPicker's key order. */\nexport type Modifiers = Record<string, boolean | undefined>\n\nconst isObj = (v: unknown): v is Record<string, unknown> => Boolean(v) && typeof v === `object`\nconst isDateRange = (v: unknown): v is DateRange => isObj(v) && `from` in v\n\nfunction rangeIncludesDate(range: DateRange, date: Date, excludeEnds = false): boolean {\n let { from, to } = range\n if (from && to) {\n if (differenceInCalendarDays(to, from) < 0) [from, to] = [to, from]\n const min = excludeEnds ? 1 : 0\n return differenceInCalendarDays(date, from) >= min && differenceInCalendarDays(to, date) >= min\n }\n if (!excludeEnds && to) return isSameDay(to, date)\n if (!excludeEnds && from) return isSameDay(from, date)\n return false\n}\n\n/** DayPicker's `dateMatchModifiers`. */\nexport function dateMatchModifiers(date: Date, matchers: Matcher | Matcher[]): boolean {\n const list = Array.isArray(matchers) && !matchers.every((m) => m instanceof Date) ? (matchers as Matcher[]) : [matchers as Matcher]\n return list.some((matcher) => {\n if (typeof matcher === `boolean`) return matcher\n if (matcher instanceof Date) return isSameDay(date, matcher)\n if (Array.isArray(matcher)) return matcher.some((d) => isSameDay(date, d))\n if (isDateRange(matcher)) return rangeIncludesDate(matcher, date, false)\n if (isObj(matcher) && `dayOfWeek` in matcher) {\n const dow = (matcher as DayOfWeek).dayOfWeek\n return Array.isArray(dow) ? dow.includes(date.getDay()) : dow === date.getDay()\n }\n if (isObj(matcher) && `before` in matcher && `after` in matcher) {\n const { before, after } = matcher as unknown as DateInterval\n const isDayBefore = differenceInCalendarDays(before, date) > 0\n const isDayAfter = differenceInCalendarDays(after, date) < 0\n return before > after ? isDayAfter && isDayBefore : isDayBefore || isDayAfter\n }\n if (isObj(matcher) && `after` in matcher) return differenceInCalendarDays(date, (matcher as DateAfter).after) > 0\n if (isObj(matcher) && `before` in matcher) return differenceInCalendarDays((matcher as DateBefore).before, date) > 0\n if (typeof matcher === `function`) return matcher(date)\n return false\n })\n}\n\n/** DayPicker's `addToRange`. */\nfunction addToRange(date: Date, initial: DateRange | undefined, min = 0, max = 0, required = false): DateRange | undefined {\n const { from, to } = initial || ({} as Partial<DateRange>)\n let range: DateRange | undefined\n if (!from && !to) range = { from: date, to: min > 0 ? undefined : date }\n else if (from && !to) {\n if (isSameDay(from, date)) range = min === 0 ? { from, to: date } : required ? { from, to: undefined } : undefined\n else if (date < from) range = { from: date, to: from }\n else range = { from, to: date }\n } else if (from && to) {\n if (isSameDay(from, date) && isSameDay(to, date)) range = required ? { from, to } : undefined\n else if (isSameDay(from, date)) range = { from, to: min > 0 ? undefined : date }\n else if (isSameDay(to, date)) range = { from: date, to: min > 0 ? undefined : date }\n else if (date < from) range = { from: date, to }\n else range = { from, to: date }\n }\n if (range?.from && range.to) {\n const diff = differenceInCalendarDays(range.to, range.from)\n if (max > 0 && diff > max) range = { from: date, to: undefined }\n else if (min > 1 && diff < min) range = { from: date, to: undefined }\n }\n return range\n}\n\n// ─── props ───────────────────────────────────────────────────────────────\n\nexport interface CalendarFormatters {\n formatCaption: (month: Date) => string\n formatDay: (date: Date) => string\n formatMonthDropdown: (month: Date) => string\n formatYearDropdown: (year: Date) => string\n formatWeekdayName: (weekday: Date) => string\n formatWeekNumber: (weekNumber: number) => string\n formatWeekNumberHeader: () => string\n}\n\nexport interface CalendarLabels {\n labelDayButton: (date: Date, modifiers: Modifiers) => string\n labelGridcell: (date: Date, modifiers?: Modifiers) => string\n labelGrid: (month: Date) => string\n labelNav: () => string\n labelNext: (month: Date | undefined) => string\n labelPrevious: (month: Date | undefined) => string\n labelWeekday: (weekday: Date) => string\n labelWeekNumber: (weekNumber: number) => string\n labelWeekNumberHeader: () => string\n labelMonthDropdown: () => string\n labelYearDropdown: () => string\n}\n\nexport interface CalendarDayButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n day: CalendarDay\n modifiers: Modifiers\n [data: `data-${string}`]: string | undefined\n}\n\nexport interface CalendarChevronProps {\n class?: string\n orientation?: `up` | `down` | `left` | `right`\n disabled?: boolean\n size?: number\n}\n\ntype SelectHandler<T> = (selected: T, triggerDate: Date, modifiers: Modifiers, e: MouseEvent) => void\n\ninterface ModeNone {\n mode?: undefined\n selected?: undefined\n onSelect?: undefined\n required?: undefined\n}\ninterface ModeSingle {\n mode: `single`\n selected?: Date | undefined\n onSelect?: SelectHandler<Date | undefined>\n required?: boolean\n}\ninterface ModeMultiple {\n mode: `multiple`\n selected?: Date[] | undefined\n onSelect?: SelectHandler<Date[] | undefined>\n required?: boolean\n min?: number\n max?: number\n}\ninterface ModeRange {\n mode: `range`\n selected?: DateRange | undefined\n onSelect?: SelectHandler<DateRange | undefined>\n required?: boolean\n min?: number\n max?: number\n resetOnSelect?: boolean\n}\n\nexport type CalendarProps = (ModeNone | ModeSingle | ModeMultiple | ModeRange) & {\n class?: string\n /** DayPicker's part map (its keys: `root`, `day`, `day_button`, `today`…), merged over shadcn's. */\n classNames?: Partial<Record<string, string>>\n style?: JSX.CSSProperties | string\n showOutsideDays?: boolean\n captionLayout?: `label` | `dropdown` | `dropdown-months` | `dropdown-years`\n buttonVariant?: ButtonVariantProps[`variant`]\n formatters?: Partial<CalendarFormatters>\n labels?: Partial<CalendarLabels>\n components?: { DayButton?: Component<CalendarDayButtonProps>; Chevron?: Component<CalendarChevronProps> }\n defaultMonth?: Date\n month?: Date\n onMonthChange?: (month: Date) => void\n onPrevClick?: (month: Date) => void\n onNextClick?: (month: Date) => void\n numberOfMonths?: number\n pagedNavigation?: boolean\n reverseMonths?: boolean\n fromYear?: number\n toYear?: number\n fromMonth?: Date\n toMonth?: Date\n startMonth?: Date\n endMonth?: Date\n disabled?: Matcher | Matcher[]\n hidden?: Matcher | Matcher[]\n modifiers?: Record<string, Matcher | Matcher[] | undefined>\n modifiersClassNames?: Record<string, string>\n today?: Date\n showWeekNumber?: boolean\n ISOWeek?: boolean\n fixedWeeks?: boolean\n weekStartsOn?: WeekDay\n firstWeekContainsDate?: 1 | 4\n locale?: CalendarLocale\n dir?: `ltr` | `rtl` | `auto`\n lang?: string\n id?: string\n title?: string\n role?: JSX.HTMLAttributes<HTMLDivElement>[`role`]\n nonce?: string\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n autoFocus?: boolean\n hideNavigation?: boolean\n disableNavigation?: boolean\n hideWeekdays?: boolean\n reverseYears?: boolean\n footer?: JSX.Element\n onDayClick?: (date: Date, modifiers: Modifiers, e: MouseEvent) => void\n onDayFocus?: (date: Date, modifiers: Modifiers, e: FocusEvent) => void\n onDayBlur?: (date: Date, modifiers: Modifiers, e: FocusEvent) => void\n onDayKeyDown?: (date: Date, modifiers: Modifiers, e: KeyboardEvent) => void\n onDayMouseEnter?: (date: Date, modifiers: Modifiers, e: MouseEvent) => void\n onDayMouseLeave?: (date: Date, modifiers: Modifiers, e: MouseEvent) => void\n [data: `data-${string}`]: string | undefined\n}\n\nconst DEFAULT_CLASS_KEYS = [\n `root`, `chevron`, `day`, `day_button`, `caption_label`, `dropdowns`, `dropdown`, `dropdown_root`, `footer`, `month_grid`, `month_caption`, `months_dropdown`, `month`, `months`, `nav`, `button_next`, `button_previous`, `week`, `weeks`, `weekday`, `weekdays`, `week_number`, `week_number_header`, `years_dropdown`,\n] as const\n/** DayPicker's `DayFlag`s with their initial values, in its key order (keys,\n * not literals: the recipes gate reads a bare `hidden` literal as a class). */\nconst NO_FLAGS = { focused: false, disabled: false, hidden: false, outside: false, today: false }\nconst DAY_FLAGS: readonly string[] = Object.keys(NO_FLAGS)\nconst SELECTION_STATES = [`range_end`, `range_middle`, `range_start`, `selected`]\n/** react-day-picker's `getDefaultClassNames()`: `rdp-<key>`. */\nexport const getDefaultClassNames = (): Record<string, string> => Object.fromEntries([...DEFAULT_CLASS_KEYS, ...DAY_FLAGS, ...SELECTION_STATES].map((k) => [k, `rdp-${k}`]))\n\n/** The visually-hidden live caption of the dropdown layout (DayPicker's inline style). */\nconst STATUS_STYLE: JSX.CSSProperties = { border: `0`, clip: `rect(0 0 0 0)`, height: `1px`, margin: `-1px`, overflow: [`hid`, `den`].join(``) /* a CSS value, spelled in pieces for the recipes gate */, padding: `0`, position: `absolute`, width: `1px`, \"white-space\": `nowrap`, \"word-wrap\": `normal` }\n\n\n// ─── the component ───────────────────────────────────────────────────────\n\nfunction Calendar(input: CalendarProps): JSX.Element {\n const props = mergeProps({ showOutsideDays: true, captionLayout: `label` as const, buttonVariant: `ghost` as const }, input)\n\n const locale = createMemo(() => ({ ...EN_US, ...props.locale }))\n const fmt = createMemo(() => makeFmt(locale().code ?? `en-US`))\n const week = createMemo<WeekOptions>(() => ({\n weekStartsOn: props.weekStartsOn ?? locale().options?.weekStartsOn ?? 0,\n firstWeekContainsDate: props.firstWeekContainsDate ?? locale().options?.firstWeekContainsDate ?? 1,\n }))\n const sow = (d: Date) => (props.ISOWeek ? startOfWeek(d, ISO) : startOfWeek(d, week()))\n const eow = (d: Date) => (props.ISOWeek ? endOfWeek(d, ISO) : endOfWeek(d, week()))\n const today = () => props.today ?? new Date()\n\n // The shadcn wrapper's map over DayPicker's defaults, then the caller's.\n const classNames = createMemo(() => {\n const parts = CALENDAR_CLASSES.classNames\n const d = getDefaultClassNames()\n const ours: Record<string, string> = {\n root: cn(parts.root, d.root),\n months: cn(parts.months, d.months),\n month: cn(parts.month, d.month),\n nav: cn(parts.nav, d.nav),\n button_previous: cn(buttonVariants({ variant: props.buttonVariant }), parts.button_previous, d.button_previous),\n button_next: cn(buttonVariants({ variant: props.buttonVariant }), parts.button_next, d.button_next),\n month_caption: cn(parts.month_caption, d.month_caption),\n dropdowns: cn(parts.dropdowns, d.dropdowns),\n dropdown_root: cn(parts.dropdown_root, d.dropdown_root),\n dropdown: cn(parts.dropdown, d.dropdown),\n caption_label: cn(parts.caption_label, props.captionLayout === `label` ? CALENDAR_CLASSES.captionLabel.label : CALENDAR_CLASSES.captionLabel.dropdown, d.caption_label),\n table: parts.table,\n weekdays: cn(parts.weekdays, d.weekdays),\n weekday: cn(parts.weekday, d.weekday),\n week: cn(parts.week, d.week),\n week_number_header: cn(parts.week_number_header, d.week_number_header),\n week_number: cn(parts.week_number, d.week_number),\n day: cn(parts.day, props.showWeekNumber ? CALENDAR_CLASSES.dayFirst.weekNumbers : CALENDAR_CLASSES.dayFirst.plain, d.day),\n range_start: cn(parts.range_start, d.range_start),\n range_middle: cn(parts.range_middle, d.range_middle),\n range_end: cn(parts.range_end, d.range_end),\n today: cn(parts.today, d.today),\n outside: cn(parts.outside, d.outside),\n disabled: cn(parts.disabled, d.disabled),\n hidden: cn(parts.hidden, d.hidden),\n }\n const out: Record<string, string> = { ...d, ...ours }\n for (const [k, v] of Object.entries(props.classNames ?? {})) if (v !== undefined) out[k] = v\n return out\n })\n\n const formatters = createMemo<CalendarFormatters>(() => {\n const f = fmt()\n return {\n formatCaption: (m) => f.monthYear(m),\n formatDay: (d) => f.day(d),\n // The shadcn wrapper's override.\n formatMonthDropdown: (m) => m.toLocaleString(`default`, { month: `short` }),\n formatYearDropdown: (y) => f.year(y),\n formatWeekdayName: (d) => f.weekdayShort(d),\n formatWeekNumber: (n) => (n < 10 ? `0${n.toLocaleString()}` : `${n.toLocaleString()}`),\n formatWeekNumberHeader: () => ``,\n ...props.formatters,\n }\n })\n\n const labels = createMemo<CalendarLabels>(() => {\n const f = fmt()\n const fromLocale = locale().labels ?? {}\n const pick = <K extends keyof CalendarLabels>(key: K, fallback: CalendarLabels[K]): CalendarLabels[K] => {\n const own = props.labels?.[key]\n if (own) return own\n const l = fromLocale[key]\n if (l) return (typeof l === `function` ? l : () => l) as CalendarLabels[K]\n return fallback\n }\n // react-day-picker's en-US locale labels (its default locale).\n const dayLabel = (date: Date, m: Modifiers | undefined, selected: boolean) => {\n let label = f.long(date)\n if (m?.today) label = `Today, ${label}`\n if (selected && m?.selected) label = `${label}, selected`\n return label\n }\n return {\n labelDayButton: pick(`labelDayButton`, (d, m) => dayLabel(d, m, true)),\n labelGridcell: pick(`labelGridcell`, (d, m) => dayLabel(d, m, false)),\n labelGrid: pick(`labelGrid`, (m) => (f.en ? `${MONTHS[m.getMonth()]} ${pad(m.getFullYear(), 4)}` : f.monthYear(m))),\n labelNav: pick(`labelNav`, () => `Navigation bar`),\n labelNext: pick(`labelNext`, () => `Go to the Next Month`),\n labelPrevious: pick(`labelPrevious`, () => `Go to the Previous Month`),\n labelWeekday: pick(`labelWeekday`, (d) => f.weekdayLong(d)),\n labelWeekNumber: pick(`labelWeekNumber`, (n) => `Week ${n}`),\n labelWeekNumberHeader: pick(`labelWeekNumberHeader`, () => `Week Number`),\n labelMonthDropdown: pick(`labelMonthDropdown`, () => `Choose the Month`),\n labelYearDropdown: pick(`labelYearDropdown`, () => `Choose the Year`),\n }\n })\n\n // ── navigation (useCalendar + getNavMonths + getInitialMonth) ──\n const navMonths = createMemo((): [Date | undefined, Date | undefined] => {\n let start = props.startMonth ?? props.fromMonth ?? (props.fromYear ? new Date(props.fromYear, 0, 1) : undefined)\n let end = props.endMonth ?? props.toMonth ?? (props.toYear ? new Date(props.toYear, 11, 31) : undefined)\n const yearDropdown = props.captionLayout === `dropdown` || props.captionLayout === `dropdown-years`\n if (start) start = startOfMonth(start)\n else if (yearDropdown) start = startOfYear(addYears(today(), -100))\n if (end) end = endOfMonth(end)\n else if (yearDropdown) end = endOfYear(today())\n return [start ? startOfDay(start) : start, end ? startOfDay(end) : end]\n })\n const navStart = () => navMonths()[0]\n const navEnd = () => navMonths()[1]\n const initialMonth = () => {\n const n = props.numberOfMonths ?? 1\n let m = props.month || props.defaultMonth || today()\n const end = navEnd()\n const start = navStart()\n if (end && differenceInCalendarMonths(end, m) < n - 1) m = addMonths(end, -1 * (n - 1))\n if (start && differenceInCalendarMonths(m, start) < 0) m = start\n return startOfMonth(m)\n }\n const [internalMonth, setInternalMonth] = createSignal(untrack(initialMonth))\n const firstMonth = createMemo(() => (props.month ? initialMonth() : internalMonth()), undefined, { equals: (a, b) => a.getTime() === b.getTime() })\n\n const calendar = createMemo(() => {\n const first = firstMonth()\n const n = props.numberOfMonths ?? 1\n const end = navEnd()\n const displayMonths: Date[] = []\n for (let i = 0; i < n; i++) {\n const m = addMonths(first, i)\n if (end && m > end) break\n displayMonths.push(m)\n }\n // getDates\n const last = displayMonths[displayMonths.length - 1]!\n const gridStart = sow(displayMonths[0]!)\n const monthsEnd = eow(endOfMonth(last))\n const constraint = props.endMonth ? eow(endOfMonth(props.endMonth)) : undefined\n const gridEnd = constraint && monthsEnd > constraint ? constraint : monthsEnd\n const dates: Date[] = []\n for (let i = 0; i <= differenceInCalendarDays(gridEnd, gridStart); i++) dates.push(addDays(gridStart, i))\n const fixedTotal = 42 * (differenceInCalendarMonths(last, displayMonths[0]!) + 1)\n if (props.fixedWeeks) while (dates.length < fixedTotal) dates.push(addDays(dates[dates.length - 1]!, 1))\n // getMonths\n const months: CalendarMonth[] = displayMonths.map((month) => {\n const firstOfWeek = sow(month)\n const lastOfWeek = eow(endOfMonth(month))\n const monthDates = dates.filter((d) => d >= firstOfWeek && d <= lastOfWeek)\n if (props.fixedWeeks && monthDates.length < 42) {\n const extra = 42 - monthDates.length\n monthDates.push(...dates.filter((d) => d > lastOfWeek && d <= addDays(lastOfWeek, extra)))\n }\n const weeks: CalendarWeek[] = []\n for (const date of monthDates) {\n const weekNumber = props.ISOWeek ? getWeek(date, ISO) : getWeek(date, week())\n const day = new CalendarDay(date, month)\n const w = weeks.find((x) => x.weekNumber === weekNumber)\n if (w) w.days.push(day)\n else weeks.push({ weekNumber, days: [day] })\n }\n return { date: month, weeks }\n })\n if (props.reverseMonths) months.reverse()\n const days = months.flatMap((m) => m.weeks.flatMap((w) => w.days))\n // getPreviousMonth / getNextMonth\n const offset = props.pagedNavigation ? n : 1\n const start = navStart()\n let previousMonth: Date | undefined\n let nextMonth: Date | undefined\n if (!props.disableNavigation) {\n const month = startOfMonth(first)\n previousMonth = !start || differenceInCalendarMonths(month, start) > 0 ? addMonths(month, -offset) : undefined\n nextMonth = !end || differenceInCalendarMonths(end, first) >= n ? addMonths(month, offset) : undefined\n }\n return { months, days, previousMonth, nextMonth }\n })\n\n const goToMonth = (date: Date) => {\n if (props.disableNavigation) return\n let m = startOfMonth(date)\n const start = navStart()\n const end = navEnd()\n if (start && m < startOfMonth(start)) m = startOfMonth(start)\n if (end && m > startOfMonth(end)) m = startOfMonth(end)\n setInternalMonth(m)\n props.onMonthChange?.(m)\n }\n const goToDay = (day: CalendarDay) => {\n if (calendar().days.some((d) => d.isEqualTo(day))) return\n goToMonth(day.date)\n }\n\n // ── modifiers (createGetModifiers) ──\n const baseModifiers = createMemo(() => {\n const { days } = calendar()\n const start = navStart() && startOfMonth(navStart()!)\n const end = navEnd() && endOfMonth(navEnd()!)\n const t = today()\n const map = new Map<CalendarDay, Modifiers>()\n for (const day of days) {\n const { date } = day\n const outside = day.outside\n const hidden =\n Boolean(props.hidden && dateMatchModifiers(date, props.hidden)) || Boolean(start && date < start) || Boolean(end && date > end) || (!props.showOutsideDays && outside)\n const m: Modifiers = { focused: false, disabled: Boolean(props.disabled && dateMatchModifiers(date, props.disabled)), hidden, outside, today: isSameDay(date, t) }\n for (const [name, matcher] of Object.entries(props.modifiers ?? {})) if (matcher && dateMatchModifiers(date, matcher)) m[name] = true\n // A custom modifier that never matched is `false` (DayPicker lists it only when one day matched).\n map.set(day, m)\n }\n for (const name of Object.keys(props.modifiers ?? {})) {\n if (![...map.values()].some((m) => m[name])) continue\n for (const m of map.values()) if (!(name in m)) m[name] = false\n }\n return map\n })\n const getModifiers = (day: CalendarDay): Modifiers => ({ ...(baseModifiers().get(day) ?? NO_FLAGS) })\n\n // ── selection (useSingle / useMulti / useRange) ──\n const [internalSelected, setInternalSelected] = createSignal<unknown>(untrack(() => props.selected))\n const selected = (): unknown => (props.onSelect ? props.selected : internalSelected())\n const isSelected = (date: Date): boolean | undefined => {\n const s = selected()\n switch (props.mode) {\n case `single`:\n return s ? isSameDay(s as Date, date) : false\n case `multiple`:\n return (s as Date[] | undefined)?.some((d) => isSameDay(d, date)) ?? false\n case `range`:\n return (s as DateRange | undefined) && rangeIncludesDate(s as DateRange, date, false)\n default:\n return undefined\n }\n }\n const select = (triggerDate: Date, modifiers: Modifiers, e: MouseEvent) => {\n const s = selected()\n const p = props as CalendarProps & { min?: number; max?: number; resetOnSelect?: boolean }\n let next: unknown\n if (props.mode === `single`) {\n next = !props.required && s && isSameDay(triggerDate, s as Date) ? undefined : triggerDate\n } else if (props.mode === `multiple`) {\n const list = s as Date[] | undefined\n if (isSelected(triggerDate)) {\n if (list?.length === p.min) return\n if (props.required && list?.length === 1) return\n next = list?.filter((d) => !isSameDay(d, triggerDate))\n } else next = list?.length === p.max ? [triggerDate] : [...(list ?? []), triggerDate]\n } else if (props.mode === `range`) {\n const r = s as DateRange | undefined\n const full = Boolean(r?.from && r?.to)\n if (p.resetOnSelect && (full || !r?.from)) {\n const singleDay = Boolean(r?.from && r?.to && isSameDay(r.from, r.to) && isSameDay(triggerDate, r.from))\n next = !props.required && singleDay ? undefined : { from: triggerDate, to: undefined }\n } else next = addToRange(triggerDate, r, p.min, p.max, props.required)\n } else return\n if (!props.onSelect) setInternalSelected(() => next)\n ;(props.onSelect as SelectHandler<unknown> | undefined)?.(next, triggerDate, modifiers, e)\n }\n\n // ── focus (useFocus + calculateFocusTarget) ──\n const [lastFocused, setLastFocused] = createSignal<CalendarDay | undefined>()\n const focusTarget = createMemo(() => {\n const focusable = (m: Modifiers) => !m.disabled && !m.hidden && !m.outside\n let target: CalendarDay | undefined\n let priority = -1\n const last = lastFocused()\n for (const day of calendar().days) {\n const m = getModifiers(day)\n if (!focusable(m)) continue\n if (m.focused && priority < 3) [target, priority] = [day, 3]\n else if (last?.isEqualTo(day) && priority < 2) [target, priority] = [day, 2]\n else if (isSelected(day.date) && priority < 1) [target, priority] = [day, 1]\n else if (m.today && priority < 0) [target, priority] = [day, 0]\n }\n return target ?? calendar().days.find((d) => focusable(getModifiers(d)))\n })\n const [focused, setFocused] = createSignal<CalendarDay | undefined>(untrack(() => (props.autoFocus ? focusTarget() : undefined)))\n const blur = () => {\n setLastFocused(focused())\n setFocused(undefined)\n }\n const nextFocus = (moveBy: string, moveDir: `before` | `after`, ref: CalendarDay, attempt = 0): CalendarDay | undefined => {\n if (attempt > 365) return undefined\n const sign = moveDir === `after` ? 1 : -1\n const moves: Record<string, (d: Date) => Date> = {\n day: (d) => addDays(d, sign),\n week: (d) => addDays(d, 7 * sign),\n month: (d) => addMonths(d, sign),\n year: (d) => addYears(d, sign),\n startOfWeek: (d) => sow(d),\n endOfWeek: (d) => eow(d),\n }\n let date = moves[moveBy]!(ref.date)\n if (moveDir === `before` && navStart()) date = maxDate([navStart()!, date])\n else if (moveDir === `after` && navEnd()) date = minDate([navEnd()!, date])\n const day = new CalendarDay(date, date)\n const blocked = Boolean(props.disabled && dateMatchModifiers(date, props.disabled)) || Boolean(props.hidden && dateMatchModifiers(date, props.hidden))\n return blocked ? nextFocus(moveBy, moveDir, day, attempt + 1) : day\n }\n const moveFocus = (moveBy: string, moveDir: `before` | `after`) => {\n const current = focused()\n if (!current) return\n const next = nextFocus(moveBy, moveDir, current)\n if (!next) return\n if (props.disableNavigation && !calendar().days.some((d) => d.isEqualTo(next))) return\n goToDay(next)\n setFocused(next)\n }\n\n const dayModifiers = (day: CalendarDay): Modifiers => {\n const m = getModifiers(day)\n m.focused = !m.hidden && Boolean(focused()?.isEqualTo(day))\n m.selected = isSelected(day.date) || m.selected\n const s = selected()\n if (props.mode === `range` && isDateRange(s)) {\n const { from, to } = s\n m.range_start = Boolean(from && to && isSameDay(day.date, from))\n m.range_end = Boolean(from && to && isSameDay(day.date, to))\n m.range_middle = rangeIncludesDate(s, day.date, true)\n }\n return m\n }\n const dayClass = (m: Modifiers) => {\n const cls = classNames()\n const own = props.modifiersClassNames ?? {}\n const out = [cls.day]\n for (const [key, active] of Object.entries(m)) {\n if (active !== true) continue\n if (own[key]) out.push(own[key])\n else if (DAY_FLAGS.includes(key) || SELECTION_STATES.includes(key)) {\n if (cls[key]) out.push(cls[key])\n }\n }\n return out.join(` `)\n }\n\n const interactive = () => props.mode !== undefined || props.onDayClick !== undefined\n const multiselectable = () => String(props.mode === `multiple` || props.mode === `range`)\n\n const handlePrevious = () => {\n const prev = calendar().previousMonth\n if (!prev) return\n goToMonth(prev)\n props.onPrevClick?.(prev)\n }\n const handleNext = () => {\n const next = calendar().nextMonth\n if (!next) return\n goToMonth(next)\n props.onNextClick?.(next)\n }\n const onDayKeyDown = (day: CalendarDay, m: () => Modifiers) => (e: KeyboardEvent) => {\n const rtl = props.dir === `rtl`\n const keyMap: Record<string, [string, `before` | `after`]> = {\n ArrowLeft: [e.shiftKey ? `month` : `day`, rtl ? `after` : `before`],\n ArrowRight: [e.shiftKey ? `month` : `day`, rtl ? `before` : `after`],\n ArrowDown: [e.shiftKey ? `year` : `week`, `after`],\n ArrowUp: [e.shiftKey ? `year` : `week`, `before`],\n PageUp: [e.shiftKey ? `year` : `month`, `before`],\n PageDown: [e.shiftKey ? `year` : `month`, `after`],\n Home: [`startOfWeek`, `before`],\n End: [`endOfWeek`, `after`],\n }\n const hit = keyMap[e.key]\n if (hit) {\n e.preventDefault()\n e.stopPropagation()\n moveFocus(hit[0], hit[1])\n }\n props.onDayKeyDown?.(day.date, m(), e)\n }\n\n const Chevron = (p: CalendarChevronProps) => {\n const Custom = props.components?.Chevron\n if (Custom) return <Custom {...p} />\n return <CalendarChevron {...p} />\n }\n const DayButtonComponent = () => props.components?.DayButton ?? CalendarDayButton\n\n const rootData = () => {\n const out: Record<string, string | undefined> = {\n \"data-mode\": props.mode ?? undefined,\n \"data-required\": `required` in input && input.required !== undefined ? String(input.required) : undefined,\n \"data-multiple-months\": (props.numberOfMonths ?? 0) > 1 ? `true` : undefined,\n \"data-week-numbers\": props.showWeekNumber ? `true` : undefined,\n }\n for (const key of Object.keys(input)) if (key.startsWith(`data-`)) out[key] = (input as Record<string, string | undefined>)[key]\n return out\n }\n\n const dropdown = (kind: `month` | `year`, month: Date) => {\n const cls = classNames()\n const options = () => {\n if (kind === `month`) {\n return Array.from({ length: 12 }, (_, i) => {\n const m = new Date(month.getFullYear(), i, 1)\n const start = navStart()\n const end = navEnd()\n return { value: i, label: formatters().formatMonthDropdown(m), disabled: Boolean((start && m < startOfMonth(start)) || (end && m > startOfMonth(end))) }\n })\n }\n const start = navStart()\n const end = navEnd()\n if (!start || !end) return []\n const years: { value: number; label: string; disabled: boolean }[] = []\n for (let y = start.getFullYear(); y <= end.getFullYear(); y++) years.push({ value: y, label: formatters().formatYearDropdown(new Date(y, 0, 1)), disabled: false })\n if (props.reverseYears) years.reverse()\n return years\n }\n const value = kind === `month` ? month.getMonth() : month.getFullYear()\n const onChange = (e: Event) => {\n const v = Number((e.currentTarget as HTMLSelectElement).value)\n const base = startOfMonth(month)\n if (kind === `month`) goToMonth(new Date(base.getFullYear(), v, 1))\n else {\n const next = clone(base)\n next.setFullYear(v)\n goToMonth(next)\n }\n }\n return (\n <span data-disabled={String(Boolean(props.disableNavigation))} class={cls.dropdown_root}>\n <select\n class={[cls.dropdown, kind === `month` ? cls.months_dropdown : cls.years_dropdown].join(` `)}\n aria-label={kind === `month` ? labels().labelMonthDropdown() : labels().labelYearDropdown()}\n disabled={Boolean(props.disableNavigation)}\n onChange={onChange}\n ref={(el) => queueMicrotask(() => (el.value = String(value)))}\n >\n <For each={options()}>\n {(o) => (\n <option value={o.value} disabled={o.disabled} selected={o.value === value}>\n {o.label}\n </option>\n )}\n </For>\n </select>\n <span class={cls.caption_label} aria-hidden=\"true\">\n {options().find((o) => o.value === value)?.label}\n <Chevron orientation=\"down\" size={18} class={cls.chevron} />\n </span>\n </span>\n )\n }\n\n return (\n <div\n data-slot=\"calendar\"\n class={cn([classNames().root, cn(CALENDAR_CLASSES.root, props.class)].filter(Boolean).join(` `))}\n style={props.style}\n dir={props.dir}\n id={props.id}\n lang={props.lang ?? locale().code}\n nonce={props.nonce}\n title={props.title}\n role={props.role}\n aria-label={props[`aria-label`]}\n aria-labelledby={props[`aria-labelledby`]}\n {...rootData()}\n >\n <div class={classNames().months}>\n <Show when={!props.hideNavigation}>\n <nav class={classNames().nav} aria-label={labels().labelNav()}>\n <button\n type=\"button\"\n class={classNames().button_previous}\n tabindex={calendar().previousMonth ? undefined : -1}\n aria-disabled={calendar().previousMonth ? undefined : `true`}\n aria-label={labels().labelPrevious(calendar().previousMonth)}\n onClick={handlePrevious}\n >\n <Chevron disabled={calendar().previousMonth ? undefined : true} class={classNames().chevron} orientation=\"left\" />\n </button>\n <button\n type=\"button\"\n class={classNames().button_next}\n tabindex={calendar().nextMonth ? undefined : -1}\n aria-disabled={calendar().nextMonth ? undefined : `true`}\n aria-label={labels().labelNext(calendar().nextMonth)}\n onClick={handleNext}\n >\n <Chevron disabled={calendar().nextMonth ? undefined : true} orientation=\"right\" class={classNames().chevron} />\n </button>\n </nav>\n </Show>\n <For each={calendar().months}>\n {(calendarMonth) => (\n <div class={classNames().month}>\n <div class={classNames().month_caption}>\n {props.captionLayout.startsWith(`dropdown`) ? (\n <div class={classNames().dropdowns}>\n {(() => {\n const layout = props.captionLayout\n const monthControl = layout === `dropdown` || layout === `dropdown-months` ? dropdown(`month`, calendarMonth.date) : <span>{formatters().formatMonthDropdown(calendarMonth.date)}</span>\n const yearControl = layout === `dropdown` || layout === `dropdown-years` ? dropdown(`year`, calendarMonth.date) : <span>{formatters().formatYearDropdown(calendarMonth.date)}</span>\n return fmt().yearFirst ? [yearControl, monthControl] : [monthControl, yearControl]\n })()}\n <span role=\"status\" aria-live=\"polite\" style={STATUS_STYLE}>\n {formatters().formatCaption(calendarMonth.date)}\n </span>\n </div>\n ) : (\n <span class={classNames().caption_label} role=\"status\" aria-live=\"polite\">\n {formatters().formatCaption(calendarMonth.date)}\n </span>\n )}\n </div>\n <table role=\"grid\" aria-multiselectable={multiselectable() as `true` | `false`} aria-label={labels().labelGrid(calendarMonth.date) || undefined} class={classNames().month_grid}>\n <Show when={!props.hideWeekdays}>\n <thead aria-hidden=\"true\">\n <tr class={classNames().weekdays}>\n <Show when={props.showWeekNumber}>\n <th aria-label={labels().labelWeekNumberHeader()} class={classNames().week_number_header} scope=\"col\">\n {formatters().formatWeekNumberHeader()}\n </th>\n </Show>\n <For each={Array.from({ length: 7 }, (_, i) => addDays(sow(today()), i))}>\n {(weekday) => (\n <th aria-label={labels().labelWeekday(weekday)} class={classNames().weekday} scope=\"col\">\n {formatters().formatWeekdayName(weekday)}\n </th>\n )}\n </For>\n </tr>\n </thead>\n </Show>\n <tbody class={classNames().weeks}>\n <For each={calendarMonth.weeks}>\n {(calendarWeek) => (\n <tr class={classNames().week}>\n <Show when={props.showWeekNumber}>\n {/* shadcn's WeekNumber spreads DayPicker's props onto the <td>: `week` lands as \"[object Object]\". */}\n <td {...({ \"attr:week\": String(calendarWeek) } as unknown as Record<string, never>)} aria-label={labels().labelWeekNumber(calendarWeek.weekNumber)} class={classNames().week_number} scope=\"row\" role=\"rowheader\">\n <div class={CALENDAR_CLASSES.weekNumber}>{formatters().formatWeekNumber(calendarWeek.weekNumber)}</div>\n </td>\n </Show>\n <For each={calendarWeek.days}>\n {(day) => {\n const m = createMemo(() => dayModifiers(day))\n const DayButton = DayButtonComponent()\n return (\n <td\n class={dayClass(m())}\n role=\"gridcell\"\n aria-selected={m().selected ? `true` : undefined}\n aria-label={!interactive() && !m().hidden ? labels().labelGridcell(day.date, m()) : undefined}\n data-day={day.isoDate}\n data-month={day.outside ? day.dateMonthId : undefined}\n data-selected={m().selected ? `true` : undefined}\n data-disabled={m().disabled ? `true` : undefined}\n data-hidden={m().hidden ? `true` : undefined}\n data-outside={day.outside ? `true` : undefined}\n data-focused={m().focused ? `true` : undefined}\n data-today={m().today ? `true` : undefined}\n >\n {!m().hidden && interactive() ? (\n <DayButton\n class={classNames().day_button}\n type=\"button\"\n day={day}\n modifiers={m()}\n disabled={(!m().focused && m().disabled) || undefined}\n aria-disabled={(m().focused && m().disabled) || undefined ? `true` : undefined}\n tabindex={focusTarget()?.isEqualTo(day) ? 0 : -1}\n aria-label={labels().labelDayButton(day.date, m())}\n onClick={(e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setFocused(day)\n const mods = m()\n if (mods.disabled) return\n select(day.date, mods, e)\n props.onDayClick?.(day.date, mods, e)\n }}\n onFocus={(e: FocusEvent) => {\n setFocused(day)\n props.onDayFocus?.(day.date, m(), e)\n }}\n onBlur={(e: FocusEvent) => {\n blur()\n props.onDayBlur?.(day.date, m(), e)\n }}\n onKeyDown={onDayKeyDown(day, m)}\n onMouseEnter={(e: MouseEvent) => props.onDayMouseEnter?.(day.date, m(), e)}\n onMouseLeave={(e: MouseEvent) => props.onDayMouseLeave?.(day.date, m(), e)}\n >\n {formatters().formatDay(day.date)}\n </DayButton>\n ) : !m().hidden ? (\n formatters().formatDay(day.date)\n ) : null}\n </td>\n )\n }}\n </For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </div>\n )}\n </For>\n </div>\n <Show when={props.footer}>\n <div class={classNames().footer} role=\"status\" aria-live=\"polite\">\n {props.footer}\n </div>\n </Show>\n </div>\n )\n}\n\n/** shadcn's Chevron: the Lucide chevrons at `size-4` (lucide-react's attributes; `disabled` and `size` land on the <svg> as React spreads them). */\nfunction CalendarChevron(props: CalendarChevronProps): JSX.Element {\n const icon = () => (props.orientation === `left` ? ChevronLeft : props.orientation === `right` ? ChevronRight : ChevronDown)\n return <PaintIcon icon={icon()} class={cn(CALENDAR_CLASSES.chevron, props.class)} size={props.size} {...((props.disabled ? { \"attr:disabled\": `` } : {}) as Record<string, never>)} />\n}\n\n/** shadcn's CalendarDayButton: the ghost icon Button with the day's data\n * attributes; focuses itself when its day takes the focus. */\nfunction CalendarDayButton(props: CalendarDayButtonProps): JSX.Element {\n const [local, rest] = splitProps(props, [`class`, `day`, `modifiers`])\n let ref: HTMLButtonElement | undefined\n createEffect(() => {\n if (local.modifiers.focused) ref?.focus()\n })\n const m = () => local.modifiers\n const bool = (v: boolean | undefined) => (v === undefined ? undefined : String(v))\n return (\n <Button\n ref={(el: HTMLButtonElement) => (ref = el)}\n variant=\"ghost\"\n size=\"icon\"\n data-day={local.day.date.toLocaleDateString()}\n data-selected-single={bool(m().selected && !m().range_start && !m().range_end && !m().range_middle)}\n data-range-start={bool(m().range_start)}\n data-range-end={bool(m().range_end)}\n data-range-middle={bool(m().range_middle)}\n class={cn(CALENDAR_CLASSES.dayButton, getDefaultClassNames().day, local.class)}\n {...rest}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton, CalendarChevron }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { CARD_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\ntype Part = keyof typeof CARD_CLASSES\n\n/** One `<div data-slot=\"card-…\">` per part: the parts differ only by slot\n * and recipe. */\nconst part = (slot: string, recipe: Part) =>\n function CardPart(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot={slot} class={cn(CARD_CLASSES[recipe], local.class)} {...rest} />\n }\n\nconst Card = part(`card`, `root`)\nconst CardHeader = part(`card-header`, `header`)\nconst CardTitle = part(`card-title`, `title`)\nconst CardDescription = part(`card-description`, `description`)\nconst CardAction = part(`card-action`, `action`)\nconst CardContent = part(`card-content`, `content`)\nconst CardFooter = part(`card-footer`, `footer`)\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent }\n","import { Show, createEffect, createSignal, onCleanup, splitProps, untrack, type ComponentProps, type JSX } from \"solid-js\"\nimport { Check } from \"lucide-solid\"\nimport { CHECKBOX_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { bubbleOnChange, createElementSize, createInForm, createPresence } from \"../behaviors\"\nimport { PaintIcon } from \"../icons\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// Radix Checkbox on plain DOM: the button (`role=\"checkbox\"`, `aria-checked`\n// true|false|\"mixed\", `data-state`, `value`), the indicator only while\n// checked or indeterminate (Radix Presence), and inside a <form> the hidden\n// bubble input Radix renders after the button.\n\nexport type CheckedState = boolean | `indeterminate`\n\nexport type CheckboxProps = Omit<ComponentProps<`button`>, `value` | `onChange`> & {\n checked?: CheckedState\n defaultChecked?: CheckedState\n onCheckedChange?: (checked: CheckedState) => void\n required?: boolean\n name?: string\n value?: string\n form?: string\n disabled?: boolean\n}\n\nconst isIndeterminate = (c: CheckedState | undefined): c is `indeterminate` => c === `indeterminate`\nconst stateOf = (c: CheckedState) => (isIndeterminate(c) ? `indeterminate` : c ? `checked` : `unchecked`)\n\nfunction Checkbox(props: CheckboxProps) {\n const [local, rest] = splitProps(props, [`class`, `checked`, `defaultChecked`, `onCheckedChange`, `required`, `name`, `value`, `form`, `disabled`, `onKeyDown`, `onClick`, `ref`])\n const [inner, setInner] = createSignal<CheckedState>(untrack(() => local.defaultChecked) ?? false)\n const controlled = () => local.checked !== undefined\n const checked = (): CheckedState => (controlled() ? (local.checked as CheckedState) : inner())\n const setChecked = (next: CheckedState) => {\n const prev = untrack(checked)\n if (!untrack(controlled)) setInner(() => next)\n if (next !== prev) local.onCheckedChange?.(next)\n }\n const [control, setControl] = createSignal<HTMLButtonElement>()\n const inForm = createInForm(control)\n const value = () => local.value ?? `on`\n const initial = untrack(checked)\n let stopped = false\n createEffect(() => {\n const form = control()?.form\n if (!form) return\n const reset = () => setChecked(initial)\n form.addEventListener(`reset`, reset)\n onCleanup(() => form.removeEventListener(`reset`, reset))\n })\n const presence = createPresence(() => isIndeterminate(checked()) || checked() === true)\n const call = <E extends Event>(handler: unknown, e: E) => {\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n }\n return (\n <>\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked()) ? `mixed` : (checked() as boolean)}\n aria-required={local.required}\n data-state={stateOf(checked())}\n data-disabled={local.disabled ? `` : undefined}\n disabled={local.disabled}\n value={value()}\n data-slot=\"checkbox\"\n class={cn(CHECKBOX_CLASSES.root, local.class)}\n {...rest}\n ref={(el) => {\n setControl(el)\n if (typeof local.ref === `function`) (local.ref as (el: HTMLButtonElement) => void)(el)\n }}\n onKeyDown={(e) => {\n call(local.onKeyDown, e)\n if (e.defaultPrevented) return\n if (e.key === `Enter`) e.preventDefault()\n }}\n onClick={(e) => {\n call(local.onClick, e)\n if (e.defaultPrevented) return\n setChecked(isIndeterminate(untrack(checked)) ? true : !untrack(checked))\n if (inForm()) {\n stopped = e.cancelBubble\n if (!stopped) e.stopPropagation()\n }\n }}\n >\n <Show when={presence.mounted()}>\n <span ref={presence.ref} data-state={stateOf(checked())} data-disabled={local.disabled ? `` : undefined} data-slot=\"checkbox-indicator\" class={CHECKBOX_CLASSES.indicator} style={css({ pointerEvents: `none` })}>\n <PaintIcon icon={Check} class={CHECKBOX_CLASSES.icon} />\n </span>\n </Show>\n </button>\n <Show when={inForm()}>\n <CheckboxBubble control={control()} checked={checked()} initial={initial} required={local.required} disabled={local.disabled} name={local.name} value={value()} form={local.form} bubbles={() => !stopped} />\n </Show>\n </>\n )\n}\n\n/** Radix's `CheckboxBubbleInput`: `defaultChecked` = the checked state at\n * mount (indeterminate = false), the control's size appended once measured. */\nfunction CheckboxBubble(props: { control: HTMLButtonElement | undefined; checked: CheckedState; initial: CheckedState; required?: boolean; disabled?: boolean; name?: string; value: string; form?: string; bubbles: () => boolean }): JSX.Element {\n let input: HTMLInputElement | undefined\n const size = createElementSize(() => props.control)\n bubbleOnChange(\n () => input,\n () => props.checked,\n (el, v) => {\n ;(el as HTMLInputElement).indeterminate = isIndeterminate(v)\n Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, `checked`)?.set?.call(el, isIndeterminate(v) ? false : v)\n },\n `click`,\n props.bubbles\n )\n const style = () => {\n const s = size()\n return css({ ...(s ? { width: s.width, height: s.height } : {}), position: `absolute`, pointerEvents: `none`, opacity: 0, margin: 0, transform: `translateX(-100%)` })\n }\n return <input ref={input} type=\"checkbox\" aria-hidden=\"true\" attr:checked={props.initial === true ? `` : undefined} required={props.required} disabled={props.disabled} name={props.name} attr:value={props.value} form={props.form} tabindex={-1} style={style()} />\n}\n\nexport { Checkbox }\n","import { For, Show, createMemo, type JSX } from \"solid-js\"\nimport { ImageIcon } from \"lucide-solid\"\nimport { CHOICE_TILES_CLASSES, choiceColumns, choiceToggle, choiceValues, type ChoiceTileOption, type TileState } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css, type StyleInput } from \"../style\"\nimport { cn } from \"./cn\"\n\nexport { choiceColumns, choiceToggle, choiceValues } from \"@exponential-at/ui/web/primitives\"\nexport type { ChoiceTileOption, TileState } from \"@exponential-at/ui/web/primitives\"\n\n// EXP-1280: picture choice tiles, React's `ChoiceTilesFrame` one to one (the\n// grid, one button per option, the roving tab stop, the keys of\n// catalog/a11y.json `ChoiceTiles`) and the `ChoiceTiles` skin.\n\ntype Attrs = Record<string, unknown>\n\nexport interface ChoiceTilesFrameProps {\n options: readonly ChoiceTileOption[]\n /** The picked values. */\n picked: readonly string[]\n multiple: boolean\n columns: number\n disabled?: boolean\n invalid?: boolean\n dir?: `ltr` | `rtl`\n /** A pick (already toggled for `multiple`): the next picked values. */\n onPick: (next: string[], value: string) => void\n /** The root's attributes; `style` is a React-form object (camelCase). */\n rootProps?: Attrs\n tileProps: (state: TileState) => Attrs\n pictureProps: (state: TileState) => Attrs\n labelProps: (state: TileState) => Attrs\n descriptionProps: (state: TileState) => Attrs\n /** The picture's content (the frame keeps the box; a missing picture gets\n * the placeholder). */\n renderPicture: (src: string | null, state: TileState) => JSX.Element\n /** Under the tiles (the field's errors), spanning every column. */\n after?: JSX.Element\n rootRef?: (el: HTMLDivElement) => void\n}\n\n/** The headless tiles: a `radiogroup` of `radio` buttons (single) or a\n * `group` of `checkbox` buttons (multiple). The picked tile (else the\n * first enabled one) is the tab stop; arrows move focus with wrap (a single\n * pick follows focus); Space/Enter toggle (the button's own click). Every\n * tile has a picture box once ANY option has an image, so a row keeps one\n * height. */\nexport function ChoiceTilesFrame(props: ChoiceTilesFrameProps) {\n const buttons: (HTMLButtonElement | undefined)[] = []\n const order = createMemo(() => props.options.map((o) => o.value))\n const pictures = () => props.options.some((o) => Boolean(o.image))\n const enabled = (i: number) => !props.disabled && !props.options[i]?.disabled\n const tabStop = createMemo(() => {\n const firstPicked = props.options.findIndex((o, i) => props.picked.includes(o.value) && enabled(i))\n return firstPicked >= 0 ? firstPicked : props.options.findIndex((_, i) => enabled(i))\n })\n const pick = (i: number) => {\n const value = props.options[i]!.value\n props.onPick(choiceToggle(props.picked, value, props.multiple, order()), value)\n }\n const move = (from: number, delta: number) => {\n const n = props.options.length\n for (let step = 1; step <= n; step++) {\n const i = (((from + delta * step) % n) + n) % n\n if (enabled(i)) return i\n }\n return -1\n }\n const onKeyDown = (i: number, e: KeyboardEvent) => {\n const rtl = (props.dir ?? `ltr`) === `rtl`\n const forward = rtl ? `ArrowLeft` : `ArrowRight`\n const back = rtl ? `ArrowRight` : `ArrowLeft`\n const delta = e.key === forward || e.key === `ArrowDown` ? 1 : e.key === back || e.key === `ArrowUp` ? -1 : 0\n if (delta === 0) return\n e.preventDefault()\n const next = move(i, delta)\n if (next < 0) return\n buttons[next]?.focus()\n if (!props.multiple && !props.picked.includes(props.options[next]!.value)) pick(next)\n }\n const rootStyle = () => {\n const own = (props.rootProps?.style as StyleInput | undefined) ?? {}\n return css({ display: `grid`, gridTemplateColumns: `repeat(${props.columns}, minmax(0, 1fr))`, ...own })\n }\n return (\n <div\n ref={props.rootRef}\n role={props.multiple ? `group` : `radiogroup`}\n aria-invalid={props.invalid || undefined}\n aria-disabled={props.disabled || undefined}\n dir={props.dir ?? `ltr`}\n {...props.rootProps}\n style={rootStyle()}\n >\n <For each={props.options}>\n {(o, index) => {\n const i = index()\n const state = (): TileState => ({ index: i, selected: props.picked.includes(o.value), disabled: !enabled(i) })\n const description = o.description ? String(o.description) : ``\n return (\n <button\n ref={(el) => {\n buttons[i] = el\n }}\n type=\"button\"\n role={props.multiple ? `checkbox` : `radio`}\n aria-checked={state().selected}\n aria-label={o.label}\n disabled={state().disabled}\n tabindex={i === tabStop() ? 0 : -1}\n data-state={state().selected ? `checked` : `unchecked`}\n data-value={o.value}\n onClick={() => pick(i)}\n onKeyDown={(e) => onKeyDown(i, e)}\n {...props.tileProps(state())}\n >\n <Show when={pictures()}>\n <span aria-hidden=\"true\" {...props.pictureProps(state())}>\n {props.renderPicture(o.image ? String(o.image) : null, state())}\n </span>\n </Show>\n <span {...props.labelProps(state())}>{o.label}</span>\n <Show when={description}>\n <span {...props.descriptionProps(state())}>{description}</span>\n </Show>\n </button>\n )\n }}\n </For>\n {props.after}\n </div>\n )\n}\n\nexport interface ChoiceTilesProps {\n options: readonly ChoiceTileOption[]\n /** The pick: a string (single) or the picked values (multiple). */\n value: string | readonly string[] | null | undefined\n multiple?: boolean\n /** Tiles per row, 1–4 (default 2). */\n columns?: number\n disabled?: boolean\n /** Paints the destructive border (a required answer missing). */\n invalid?: boolean\n /** The next value: a string for a single pick, the values for `multiple`. */\n onChange?: (value: string | string[]) => void\n /** The picture element; default a plain lazy <img>. */\n renderImage?: (src: string, alt: string) => JSX.Element\n class?: string\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n \"data-testid\"?: string\n dir?: `ltr` | `rtl`\n}\n\n/** THE picture choice (EXP-1280) at the eUI `ChoiceTiles` look. */\nfunction ChoiceTiles(props: ChoiceTilesProps) {\n const multiple = () => props.multiple ?? false\n const picked = createMemo(() => choiceValues(props.value, multiple()))\n const image = (src: string | null, label: string) =>\n src ? (props.renderImage ? props.renderImage(src, label) : <img src={src} alt={label} loading=\"lazy\" decoding=\"async\" class={CHOICE_TILES_CLASSES.image} />) : <PaintIcon icon={ImageIcon} class={CHOICE_TILES_CLASSES.placeholder} />\n return (\n <ChoiceTilesFrame\n options={props.options}\n picked={picked()}\n multiple={multiple()}\n columns={choiceColumns(props.columns)}\n disabled={props.disabled ?? false}\n invalid={props.invalid ?? false}\n dir={props.dir}\n onPick={(next) => props.onChange?.(multiple() ? next : (next[0] ?? ``))}\n rootProps={{ \"data-slot\": `choice-tiles`, class: cn(CHOICE_TILES_CLASSES.root, props.class), \"aria-label\": props[`aria-label`], \"aria-labelledby\": props[`aria-labelledby`], \"data-testid\": props[`data-testid`] }}\n tileProps={(s) => ({ \"data-slot\": `choice-tile`, class: cn(CHOICE_TILES_CLASSES.tile, s.selected && CHOICE_TILES_CLASSES.tileSelected, props.invalid && !s.selected && CHOICE_TILES_CLASSES.tileInvalid) })}\n pictureProps={() => ({ \"data-slot\": `choice-tile-picture`, class: CHOICE_TILES_CLASSES.picture })}\n labelProps={() => ({ class: CHOICE_TILES_CLASSES.label })}\n descriptionProps={() => ({ class: CHOICE_TILES_CLASSES.description })}\n renderPicture={(src, s) => image(src, props.options[s.index]?.label ?? ``)}\n />\n )\n}\n\nexport { ChoiceTiles }\n","import { For, Show, children, createEffect, createMemo, createSignal, onCleanup, splitProps, type ComponentProps, type JSX } from \"solid-js\"\nimport { Check, Copy } from \"lucide-solid\"\nimport { tokenizeCode } from \"@exponential-at/ui\"\nimport { CODE_BLOCK_CLASSES, CODE_TOKEN_CLASS, codeBlockLineVariants, codeBlockVariants, type CodeBlockLineVariantProps, type CodeBlockVariantProps } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css, type StyleInput } from \"../style\"\nimport { Button, type ButtonProps } from \"./button\"\nimport { cn } from \"./cn\"\n\nfunction CodeBlock(props: ComponentProps<`div`> & CodeBlockVariantProps & { size?: `default` | `sm` }) {\n const [local, rest] = splitProps(props, [`class`, `variant`, `size`])\n const variant = () => local.variant ?? `default`\n return <div data-slot=\"code-block\" data-variant={variant()} data-size={local.size ?? `default`} class={cn(codeBlockVariants({ variant: variant() }), local.class)} {...rest} />\n}\n\nconst slotPart = (slot: string, recipe: `header` | `title` | `actions` | `footer`) =>\n function CodeBlockPart(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot={slot} class={cn(CODE_BLOCK_CLASSES[recipe], local.class)} {...rest} />\n }\n\nconst CodeBlockHeader = slotPart(`code-block-header`, `header`)\nconst CodeBlockTitle = slotPart(`code-block-title`, `title`)\nconst CodeBlockActions = slotPart(`code-block-actions`, `actions`)\nconst CodeBlockFooter = slotPart(`code-block-footer`, `footer`)\n\n/** The copy action: ui-copy → ui-check for 2s, announced politely. A copy\n * that did not happen (no clipboard, a refusal) changes nothing. */\nfunction CodeBlockCopyButton(props: ButtonProps & { value: string; labels?: { copy: string; copied: string } }) {\n const [local, rest] = splitProps(props, [`value`, `variant`, `size`, `class`, `onClick`, `labels`])\n const [copied, setCopied] = createSignal(false)\n const labels = () => local.labels ?? { copy: `Copy`, copied: `Copied` }\n createEffect(() => {\n if (!copied()) return\n const timeout = setTimeout(() => setCopied(false), 2000)\n onCleanup(() => clearTimeout(timeout))\n })\n const onClick = (event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => {\n const handler = local.onClick\n if (typeof handler === `function`) handler(event)\n else if (Array.isArray(handler)) handler[0](handler[1], event)\n const clipboard = typeof navigator === `undefined` ? undefined : navigator.clipboard\n if (!clipboard?.writeText) return\n clipboard\n .writeText(local.value)\n .then(() => setCopied(true))\n .catch(() => {})\n }\n return (\n <>\n <Button\n data-slot=\"code-block-copy-button\"\n data-copied={copied() || undefined}\n variant={local.variant ?? `ghost`}\n size={local.size ?? `icon-xs`}\n aria-label={copied() ? labels().copied : labels().copy}\n class={cn(local.class)}\n onClick={onClick}\n {...rest}\n >\n <Show when={copied()} fallback={<PaintIcon icon={Copy} />}>\n <PaintIcon icon={Check} />\n </Show>\n </Button>\n <span aria-live=\"polite\" class={CODE_BLOCK_CLASSES.srOnly}>\n {copied() ? labels().copied : ``}\n </span>\n </>\n )\n}\n\nfunction CodeBlockContent(\n props: Omit<ComponentProps<`pre`>, `style`> & {\n /** React-form (camelCase) or kebab-case keys, merged after the block's own. */\n style?: StyleInput\n wrap?: boolean\n lineNumbers?: boolean\n startLine?: number\n /** A catalog language (`ts`, `json`, `ansi`…): string children are\n * tokenized and coloured per token kind. */\n language?: string\n /** Lines shown before the block scrolls; 0 = unbounded. */\n maxLines?: number\n }\n) {\n const [local, rest] = splitProps(props, [`class`, `children`, `style`, `wrap`, `lineNumbers`, `startLine`, `language`, `maxLines`])\n const resolved = children(() => local.children)\n const source = createMemo(() => {\n const c = resolved()\n return typeof c === `string` ? c : null\n })\n const lines = createMemo(() => {\n const s = source()\n return s !== null && local.language ? tokenizeCode(s.replace(/\\n$/, ``), local.language) : null\n })\n const maxLines = () => local.maxLines ?? 16\n const style = () =>\n css({\n counterReset: `line ${(local.startLine ?? 1) - 1}`,\n ...(maxLines() > 0 ? { maxHeight: `calc(${maxLines()}lh + var(--code-block-pad, 1.5rem))` } : null),\n ...local.style,\n })\n const body = (): JSX.Element => {\n const tokenized = lines()\n if (tokenized !== null)\n return (\n <For each={tokenized}>\n {(tokens) => (\n <CodeBlockLine>\n {tokens.length === 0 ? null : (\n <For each={tokens}>\n {(token) => (\n <span data-token={token.kind} class={cn(CODE_TOKEN_CLASS[token.kind], CODE_BLOCK_CLASSES.token)}>\n {token.text}\n </span>\n )}\n </For>\n )}\n </CodeBlockLine>\n )}\n </For>\n )\n const s = source()\n if (local.lineNumbers && s !== null) return <For each={s.replace(/\\n$/, ``).split(`\\n`)}>{(line) => <CodeBlockLine>{line}</CodeBlockLine>}</For>\n return resolved()\n }\n return (\n <pre\n data-slot=\"code-block-content\"\n data-wrap={local.wrap || undefined}\n data-numbered={local.lineNumbers || undefined}\n data-language={local.language}\n dir=\"ltr\"\n tabindex={0}\n style={style()}\n class={cn(CODE_BLOCK_CLASSES.content, local.class)}\n {...rest}\n >\n <code data-slot=\"code-block-code\" class={CODE_BLOCK_CLASSES.code}>\n {body()}\n </code>\n </pre>\n )\n}\n\nfunction CodeBlockLine(props: ComponentProps<`span`> & CodeBlockLineVariantProps) {\n const [local, rest] = splitProps(props, [`class`, `variant`, `children`])\n const resolved = children(() => local.children)\n // An empty line holds a newline so copying a selection keeps blank lines.\n const empty = () => {\n const c = resolved()\n return c === undefined || c === null || c === `` || (Array.isArray(c) && c.length === 0)\n }\n return (\n <span data-slot=\"code-block-line\" data-variant={local.variant ?? `default`} class={cn(codeBlockLineVariants({ variant: local.variant ?? `default` }), local.class)} {...rest}>\n <span data-slot=\"code-block-line-content\" class={CODE_BLOCK_CLASSES.lineContent}>\n {empty() ? `\\n` : resolved()}\n </span>\n </span>\n )\n}\n\nexport { CodeBlock, CodeBlockHeader, CodeBlockTitle, CodeBlockActions, CodeBlockCopyButton, CodeBlockContent, CodeBlockLine, CodeBlockFooter, CODE_TOKEN_CLASS }\n","import { Show, createContext, createEffect, createSignal, createUniqueId, on, onCleanup, onMount, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\n\n// Radix Collapsible on plain DOM: the root and the trigger carry\n// `data-state`/`data-disabled` (the trigger `aria-controls` +\n// `aria-expanded`), the content is always mounted (`hidden` + no children\n// while closed and its exit animation has ended) and measures itself on every\n// toggle into `--radix-collapsible-content-height/width`. Radix's render\n// reads the measurement of the PREVIOUS layout pass; its Presence re-renders\n// once after mount (the node lands in its state), which paints the mount\n// measurement. A content open at mount keeps `transition-duration: 0s;\n// animation-name: none` until its first toggle.\n\ninterface CollapsibleState {\n contentId: string\n open: Accessor<boolean>\n disabled: Accessor<boolean>\n toggle: () => void\n}\nconst CollapsibleContext = createContext<CollapsibleState>()\n\nconst call = (handler: unknown, e: Event) => {\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n}\n\nexport type CollapsibleProps = ComponentProps<`div`> & {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n}\n\nfunction Collapsible(props: CollapsibleProps) {\n const [local, rest] = splitProps(props, [`open`, `defaultOpen`, `onOpenChange`, `disabled`])\n const [inner, setInner] = createSignal(untrack(() => local.defaultOpen) ?? false)\n const controlled = () => local.open !== undefined\n const open = () => (controlled() ? Boolean(local.open) : inner())\n const state: CollapsibleState = {\n contentId: createUniqueId(),\n open,\n disabled: () => Boolean(local.disabled),\n toggle: () => {\n const next = !untrack(open)\n if (!untrack(controlled)) setInner(next)\n local.onOpenChange?.(next)\n },\n }\n return (\n <CollapsibleContext.Provider value={state}>\n <div data-state={open() ? `open` : `closed`} data-disabled={local.disabled ? `` : undefined} data-slot=\"collapsible\" {...rest} />\n </CollapsibleContext.Provider>\n )\n}\n\nfunction CollapsibleTrigger(props: ComponentProps<`button`>) {\n const ctx = useContext(CollapsibleContext)!\n const [local, rest] = splitProps(props, [`onClick`])\n return (\n <button\n type=\"button\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open() || false}\n data-state={ctx.open() ? `open` : `closed`}\n data-disabled={ctx.disabled() ? `` : undefined}\n disabled={ctx.disabled()}\n data-slot=\"collapsible-trigger\"\n {...rest}\n onClick={(e) => {\n call(local.onClick, e)\n if (!e.defaultPrevented) ctx.toggle()\n }}\n />\n )\n}\n\nexport type CollapsibleContentProps = Omit<ComponentProps<`div`>, `style`> & { forceMount?: boolean; style?: JSX.CSSProperties }\n\nfunction CollapsibleContent(props: CollapsibleContentProps) {\n const ctx = useContext(CollapsibleContext)!\n const [local, rest] = splitProps(props, [`forceMount`, `children`, `style`, `ref`])\n const present = () => Boolean(local.forceMount) || ctx.open()\n // Radix Presence + `isPresent`: painted while open, and while closing until\n // the exit animation the closed state starts has ended.\n const [isPresent, setIsPresent] = createSignal(untrack(present))\n const isOpen = () => ctx.open() || isPresent()\n const [dims, setDims] = createSignal({ h: 0, w: 0 })\n let node: HTMLDivElement | undefined\n let original: { transitionDuration: string; animationName: string } | undefined\n let measured = { h: 0, w: 0 }\n let mountPrevented = untrack(isOpen)\n const measure = () => {\n if (!node) return\n original ??= { transitionDuration: node.style.transitionDuration, animationName: node.style.animationName }\n node.style.transitionDuration = `0s`\n node.style.animationName = `none`\n const rect = node.getBoundingClientRect()\n measured = { h: rect.height, w: rect.width }\n if (!mountPrevented) {\n node.style.transitionDuration = original.transitionDuration\n node.style.animationName = original.animationName\n }\n }\n let prevAnimation = `none`\n let stopWaiting: (() => void) | undefined\n const animationName = () => (node ? getComputedStyle(node).animationName || `none` : `none`)\n onMount(() => {\n measure()\n setDims(measured)\n prevAnimation = untrack(present) ? animationName() : `none`\n const onStart = (e: AnimationEvent) => {\n if (e.target === node) prevAnimation = animationName()\n }\n node?.addEventListener(`animationstart`, onStart)\n const raf = requestAnimationFrame(() => (mountPrevented = false))\n onCleanup(() => {\n cancelAnimationFrame(raf)\n node?.removeEventListener(`animationstart`, onStart)\n stopWaiting?.()\n })\n })\n createEffect(\n on(\n present,\n (p) => {\n stopWaiting?.()\n // The toggle's render paints the previous measurement, its layout\n // pass measures again; the next render (Presence settling) paints it.\n measure()\n if (p) {\n setIsPresent(true)\n prevAnimation = animationName()\n setDims(measured)\n return\n }\n const settle = () => {\n measure()\n setIsPresent(false)\n setDims(measured)\n }\n const el = node\n const name = animationName()\n if (!el || name === `none` || getComputedStyle(el).display === `none` || prevAnimation === name) return settle()\n const done = (e: AnimationEvent) => {\n if (e.target !== el || !animationName().includes(CSS.escape(e.animationName))) return\n stopWaiting?.()\n prevAnimation = `none`\n settle()\n }\n el.addEventListener(`animationend`, done)\n el.addEventListener(`animationcancel`, done)\n setDims(measured)\n stopWaiting = () => {\n el.removeEventListener(`animationend`, done)\n el.removeEventListener(`animationcancel`, done)\n stopWaiting = undefined\n }\n },\n { defer: true }\n )\n )\n const style = (): JSX.CSSProperties => {\n const d = dims()\n const out: Record<string, string> = {}\n if (d.h) out[`--radix-collapsible-content-height`] = `${d.h}px`\n if (d.w) out[`--radix-collapsible-content-width`] = `${d.w}px`\n return { ...out, ...(local.style ?? {}) }\n }\n return (\n <div\n data-state={ctx.open() ? `open` : `closed`}\n data-disabled={ctx.disabled() ? `` : undefined}\n id={ctx.contentId}\n hidden={!isOpen()}\n data-slot=\"collapsible-content\"\n {...rest}\n ref={(el) => {\n node = el\n if (typeof local.ref === `function`) (local.ref as (el: HTMLDivElement) => void)(el)\n }}\n style={style()}\n >\n <Show when={isOpen()}>{local.children}</Show>\n </div>\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import { Show, children as resolveChildren, createContext, createEffect, createSignal, createUniqueId, on, onCleanup, onMount, splitProps, useContext, type ComponentProps, type JSX } from \"solid-js\"\nimport { CircleX, Search } from \"lucide-solid\"\nimport { COMMAND_CLASSES, COMMAND_LABEL_STYLE, COMMAND_SELECT_EVENT, commandItemValue, createCommandStore, observeCommandListHeight, type CommandFilter, type CommandStore } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// FEED-131: the command menu on the shared engine (React's command.tsx is\n// the spec): the root owns the store, every part reads it through the\n// version signal, and the post-render pass (`flush`) runs in a microtask\n// once the DOM caught up (React: the root's layout effect).\n\ninterface RootContext {\n store: CommandStore\n track: () => number\n listId: string\n inputId: string\n labelId: string\n}\nconst CommandContext = createContext<RootContext>()\nconst GroupContext = createContext<{ id: string; forceMount?: boolean }>()\n\nfunction useRoot(): RootContext {\n const ctx = useContext(CommandContext)\n if (!ctx) throw new Error(`Command parts must sit inside <Command>`)\n return ctx\n}\n\nconst LABEL_STYLE = css(COMMAND_LABEL_STYLE)\n\nfunction callHandler<E extends Event>(handler: unknown, e: E) {\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n}\n\ntype CommandProps = Omit<ComponentProps<`div`>, `onChange`> & {\n /** The selected item's value (controlled). */\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n /** Score an item against the query (0 hides it); default `commandScore`. */\n filter?: CommandFilter\n /** `false` = the host filters: every item shows, in its own order. */\n shouldFilter?: boolean\n /** Arrow keys wrap around. */\n loop?: boolean\n /** The accessible label (a visually hidden <label> for the input). */\n label?: string\n}\n\nfunction Command(props: CommandProps) {\n const [local, rest] = splitProps(props, [`class`, `value`, `defaultValue`, `onValueChange`, `filter`, `shouldFilter`, `loop`, `label`, `children`, `onKeyDown`])\n const [version, setVersion] = createSignal(0)\n let scheduled = false\n const store: CommandStore = createCommandStore({\n props: () => ({ value: local.value, onValueChange: local.onValueChange, filter: local.filter, shouldFilter: local.shouldFilter, loop: local.loop }),\n schedule: () => {\n if (scheduled) return\n scheduled = true\n queueMicrotask(() => {\n scheduled = false\n store.flush()\n })\n },\n })\n if (local.value === undefined && local.defaultValue !== undefined) store.setValue(local.defaultValue.trim())\n onCleanup(store.subscribe(() => setVersion((v) => v + 1)))\n createEffect(on(() => local.value, () => store.syncValue(), { defer: true }))\n const ctx: RootContext = { store, track: version, listId: createUniqueId(), inputId: createUniqueId(), labelId: createUniqueId() }\n return (\n <div\n data-slot=\"command\"\n tabindex={-1}\n class={cn(COMMAND_CLASSES.root, local.class)}\n {...rest}\n onKeyDown={(e) => {\n callHandler(local.onKeyDown, e)\n store.onKeyDown(e)\n }}\n >\n <label data-slot=\"command-label\" for={ctx.inputId} id={ctx.labelId} style={LABEL_STYLE}>\n {local.label}\n </label>\n <CommandContext.Provider value={ctx}>{local.children}</CommandContext.Provider>\n </div>\n )\n}\n\ntype CommandInputProps = Omit<ComponentProps<`input`>, `value` | `type` | `ref`> & {\n /** The query (controlled). */\n value?: string\n defaultValue?: string\n onValueChange?: (query: string) => void\n /** The clear button's accessible name. */\n clearLabel?: string\n ref?: (el: HTMLInputElement) => void\n}\n\nfunction CommandInput(props: CommandInputProps) {\n const [local, rest] = splitProps(props, [`class`, `value`, `defaultValue`, `onValueChange`, `clearLabel`, `ref`])\n const { store, track, listId, inputId, labelId } = useRoot()\n let input: HTMLInputElement | undefined\n const controlled = () => local.value !== undefined\n store.setSearch(local.value ?? local.defaultValue ?? ``, true)\n createEffect(\n on(\n () => local.value,\n (v) => {\n if (v !== undefined) store.setSearch(v)\n },\n { defer: true }\n )\n )\n const shown = () => {\n track()\n return controlled() ? local.value! : store.search\n }\n const change = (next: string) => {\n if (!controlled()) store.setSearch(next)\n local.onValueChange?.(next)\n }\n const active = () => {\n track()\n return store.selectedId\n }\n return (\n <div data-slot=\"command-input-wrapper\" class={COMMAND_CLASSES.inputWrapper}>\n <PaintIcon icon={Search} class={COMMAND_CLASSES.inputGlyph} />\n <input\n ref={(el) => {\n input = el\n local.ref?.(el)\n }}\n data-slot=\"command-input\"\n class={cn(COMMAND_CLASSES.input, local.class)}\n {...rest}\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n aria-autocomplete=\"list\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-labelledby={labelId}\n aria-activedescendant={active()}\n id={inputId}\n type=\"text\"\n value={shown()}\n attr:value={shown()}\n onInput={(e) => {\n const next = e.currentTarget.value\n change(next)\n // A controlled query that did not take the keystroke snaps back (React's controlled input).\n if (controlled() && local.value !== next) e.currentTarget.value = local.value!\n }}\n />\n <Show when={shown() !== ``}>\n <button\n type=\"button\"\n data-slot=\"command-input-clear\"\n aria-label={local.clearLabel ?? `Clear search`}\n class={COMMAND_CLASSES.inputClear}\n onClick={() => {\n change(``)\n input?.focus()\n }}\n >\n <PaintIcon icon={CircleX} />\n </button>\n </Show>\n </div>\n )\n}\n\nfunction CommandList(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`, `children`, `aria-label`])\n const { store, track, listId } = useRoot()\n let list: HTMLDivElement | undefined\n let sizer: HTMLDivElement | undefined\n onMount(() => {\n if (list && sizer) onCleanup(observeCommandListHeight(list, sizer))\n })\n onCleanup(() => store.setSizer(null))\n const active = () => {\n track()\n return store.selectedId\n }\n return (\n <div ref={list} data-slot=\"command-list\" class={cn(COMMAND_CLASSES.list, local.class)} {...rest} role=\"listbox\" tabindex={-1} aria-activedescendant={active()} aria-label={local[`aria-label`] ?? `Suggestions`} id={listId}>\n <div\n ref={(el) => {\n sizer = el\n store.setSizer(el)\n }}\n data-slot=\"command-list-sizer\"\n >\n {local.children}\n </div>\n </div>\n )\n}\n\nfunction CommandEmpty(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n const { store, track } = useRoot()\n return (\n <Show when={(track(), store.empty())}>\n <div data-slot=\"command-empty\" class={cn(COMMAND_CLASSES.empty, local.class)} {...rest} role=\"presentation\" />\n </Show>\n )\n}\n\n/** One registered part's lifecycle: registered once mounted, its element\n * (null while not rendered) followed. */\nfunction useEntry(store: CommandStore, entry: Parameters<CommandStore[`register`]>[0], el: () => HTMLElement | undefined) {\n onMount(() => {\n onCleanup(store.register(entry))\n store.update(entry.id, { el: el() ?? null })\n })\n}\n\ntype CommandGroupProps = Omit<ComponentProps<`div`>, `value`> & { heading?: JSX.Element; value?: string; forceMount?: boolean }\n\nfunction CommandGroup(props: CommandGroupProps) {\n const [local, rest] = splitProps(props, [`class`, `heading`, `value`, `forceMount`, `children`])\n const { store, track } = useRoot()\n const id = createUniqueId()\n const headingId = createUniqueId()\n const seq = store.nextSeq()\n let el: HTMLDivElement | undefined\n useEntry(store, { id, kind: `group`, seq }, () => el)\n const visible = () => {\n track()\n return Boolean(local.forceMount) || store.groupVisible(id)\n }\n const heading = resolveChildren(() => local.heading)\n const groupValue = () => local.value ?? (typeof local.heading === `string` ? local.heading : undefined)\n return (\n <div ref={el} data-slot=\"command-group\" class={cn(COMMAND_CLASSES.group, local.class)} {...rest} role=\"presentation\" data-value={groupValue()} hidden={!visible()}>\n <Show when={heading()}>\n <div data-slot=\"command-group-heading\" class={COMMAND_CLASSES.groupHeading} aria-hidden=\"true\" id={headingId}>\n {heading()}\n </div>\n </Show>\n <div data-slot=\"command-group-items\" role=\"group\" aria-labelledby={heading() ? headingId : undefined}>\n <GroupContext.Provider\n value={{\n id,\n get forceMount() {\n return local.forceMount\n },\n }}\n >\n {local.children}\n </GroupContext.Provider>\n </div>\n </div>\n )\n}\n\ntype CommandItemProps = Omit<ComponentProps<`div`>, `onSelect`> & {\n /** The value it filters and selects by (default: its text, trimmed). */\n value?: string\n keywords?: string[]\n onSelect?: (value: string) => void\n disabled?: boolean\n /** Always rendered, whatever the query. */\n forceMount?: boolean\n}\n\nfunction CommandItem(props: CommandItemProps) {\n const [local, rest] = splitProps(props, [`class`, `value`, `keywords`, `onSelect`, `disabled`, `forceMount`, `children`])\n const { store, track } = useRoot()\n const group = useContext(GroupContext)\n const id = createUniqueId()\n const seq = store.nextSeq()\n let el: HTMLDivElement | undefined\n let known = ``\n const kids = resolveChildren(() => local.children)\n const forced = () => local.forceMount ?? group?.forceMount ?? false\n useEntry(store, { id, kind: `item`, seq, group: group?.id, forceMount: forced() }, () => el)\n const own = () => {\n track()\n const k = kids()\n return commandItemValue(local.value, typeof k === `string` ? k : undefined, el, known)\n }\n createEffect(() => {\n const next = own()\n known = next\n store.update(id, { el: el ?? null, value: next, keywords: local.keywords?.map((k) => k.trim()), disabled: local.disabled })\n })\n const select = () => {\n const v = known\n store.setValue(v, { pointer: true })\n local.onSelect?.(v)\n }\n const visible = () => forced() || store.score(own(), local.keywords) > 0\n const selected = () => own() !== `` && store.value === own()\n return (\n <Show when={visible()}>\n {(() => {\n const node = (\n <div\n data-slot=\"command-item\"\n class={cn(COMMAND_CLASSES.item, local.class)}\n {...rest}\n id={id}\n role=\"option\"\n aria-disabled={Boolean(local.disabled)}\n aria-selected={selected()}\n data-disabled={Boolean(local.disabled)}\n data-selected={selected()}\n data-value={own() || undefined}\n onPointerMove={local.disabled ? undefined : () => store.setValue(known, { pointer: true })}\n onClick={local.disabled ? undefined : select}\n >\n {kids()}\n </div>\n ) as HTMLDivElement\n el = node\n const listener = () => {\n if (!local.disabled) select()\n }\n node.addEventListener(COMMAND_SELECT_EVENT, listener)\n onCleanup(() => {\n node.removeEventListener(COMMAND_SELECT_EVENT, listener)\n if (el === node) el = undefined\n store.update(id, { el: null })\n })\n store.update(id, { el: node })\n return node\n })()}\n </Show>\n )\n}\n\nfunction CommandSeparator(props: ComponentProps<`div`> & { alwaysRender?: boolean }) {\n const [local, rest] = splitProps(props, [`class`, `alwaysRender`])\n const { store, track } = useRoot()\n const id = createUniqueId()\n const seq = store.nextSeq()\n let el: HTMLDivElement | undefined\n useEntry(store, { id, kind: `separator`, seq }, () => el)\n return (\n <Show when={(track(), local.alwaysRender || store.search === ``)}>\n {(() => {\n const node = (<div data-slot=\"command-separator\" class={cn(COMMAND_CLASSES.separator, local.class)} {...rest} role=\"separator\" />) as HTMLDivElement\n el = node\n store.update(id, { el: node })\n onCleanup(() => {\n if (el === node) el = undefined\n store.update(id, { el: null })\n })\n return node\n })()}\n </Show>\n )\n}\n\nfunction CommandShortcut(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <span data-slot=\"command-shortcut\" class={cn(COMMAND_CLASSES.shortcut, local.class)} {...rest} />\n}\n\nexport { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut }\nexport type { CommandProps, CommandInputProps, CommandItemProps, CommandGroupProps }\n","import { Show, splitProps } from \"solid-js\"\nimport { CONTEXT_RING_CLASSES, RING_RADIUS, RING_SIZE, RING_STROKE, RING_TONE_CLASS, ringGeometry, type RingTone } from \"@exponential-at/ui/web/primitives\"\n\nimport { Button, type ButtonProps } from \"./button\"\nimport { cn } from \"./cn\"\n\nexport { RING_RADIUS, RING_SIZE, RING_STROKE, RING_TONE_CLASS, ringGeometry } from \"@exponential-at/ui/web/primitives\"\nexport type { RingGeometry, RingTone } from \"@exponential-at/ui/web/primitives\"\n\nexport interface ContextRingProps extends ButtonProps {\n /** How full the context window is — null while nothing measured it. */\n percent: number | null | undefined\n /** Which of the three tones to paint. Default: `normal`. */\n tone?: RingTone\n /** Draw the empty track anyway (the run has other usage worth opening).\n * Without it, a run with no context window renders NOTHING. */\n showEmpty?: boolean\n}\n\nexport function ContextRing(props: ContextRingProps) {\n const [local, rest] = splitProps(props, [`percent`, `tone`, `showEmpty`, `class`])\n const value = () => local.percent ?? null\n const geometry = () => ringGeometry(value() ?? 0)\n return (\n <Show when={value() !== null || local.showEmpty}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n aria-label=\"Usage\"\n title=\"Usage\"\n data-testid=\"session-context-ring\"\n class={cn(CONTEXT_RING_CLASSES.root, value() === null ? RING_TONE_CLASS.normal : RING_TONE_CLASS[local.tone ?? `normal`], local.class)}\n {...rest}\n >\n <svg viewBox={`0 0 ${RING_SIZE} ${RING_SIZE}`} width={RING_SIZE} height={RING_SIZE} aria-hidden=\"true\" class={CONTEXT_RING_CLASSES.svg}>\n <circle cx={RING_SIZE / 2} cy={RING_SIZE / 2} r={RING_RADIUS} fill=\"none\" stroke=\"currentColor\" stroke-width={RING_STROKE} opacity={0.2} />\n <Show when={value() !== null}>\n <circle\n cx={RING_SIZE / 2}\n cy={RING_SIZE / 2}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={RING_STROKE}\n stroke-linecap=\"round\"\n stroke-dasharray={String(geometry().circumference)}\n stroke-dashoffset={String(geometry().dashOffset)}\n />\n </Show>\n </svg>\n </Button>\n </Show>\n )\n}\n","import { createContext, splitProps, useContext, type ComponentProps, type JSX } from \"solid-js\"\nimport { SHEET_CHROME_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport type { SheetDragHandleProps } from \"./use-sheet-drag\"\n\n// Lives in its own module so both primitives can import it without a cycle.\n\nconst SheetDragContext = createContext<SheetDragHandleProps | null>(null)\n\nexport function SheetDragProvider(props: { value: SheetDragHandleProps | null; children?: JSX.Element }) {\n return <SheetDragContext.Provider value={props.value}>{props.children}</SheetDragContext.Provider>\n}\n\n/** The drag props of the enclosing sheet, or `null` outside one (a desktop\n * panel, a side drawer). Header components spread these so the whole title\n * area is draggable, not just the 4px bar. */\nexport function createSheetDragHandleProps(): SheetDragHandleProps | null {\n return useContext(SheetDragContext)\n}\n\nexport function SheetGrabber(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n const drag = createSheetDragHandleProps()\n return <div data-slot=\"sheet-grabber\" aria-hidden=\"true\" {...(drag ?? {})} {...rest} class={cn(SHEET_CHROME_CLASSES.grabber, local.class)} />\n}\n","import type { JSX } from \"solid-js\"\n\n// EXP-687 (React's use-sheet-drag.ts): drag-to-dismiss for the mobile bottom\n// sheets, on the grabber and the header area (which spreads the same props),\n// active below `sm` only; the same thresholds and the same hidden-Close path.\nconst SHEET_MEDIA_QUERY = `(max-width: 639px)`\n\n/** Past this many px the sheet closes regardless of speed. */\nconst DISMISS_DISTANCE_PX = 80\n/** A flick: px per ms, over the (much smaller) FLICK_DISTANCE_PX. */\nconst DISMISS_VELOCITY = 0.6\nconst FLICK_DISTANCE_PX = 24\n/** The panel's own slide-out duration (the `standard` motion token). */\nconst DISMISS_ANIMATION_MS = 180\nconst DISMISS_TRANSITION = `transform var(--motion-duration-standard, ${DISMISS_ANIMATION_MS}ms) var(--motion-ease-accelerate, cubic-bezier(0.3, 0, 1, 1))`\nconst SNAP_BACK_TRANSITION = `transform var(--motion-duration-standard, ${DISMISS_ANIMATION_MS}ms) var(--motion-ease-decelerate, cubic-bezier(0, 0, 0.2, 1))`\n\n/** Did a downward drag of `dy` px over `dtMs` ms earn a dismissal? Upward\n * drags never do. */\nexport function shouldDismissSheet(dy: number, dtMs: number): boolean {\n if (dy > DISMISS_DISTANCE_PX) {\n return true\n }\n if (dy <= FLICK_DISTANCE_PX) {\n return false\n }\n return dtMs > 0 && dy / dtMs > DISMISS_VELOCITY\n}\n\nexport interface SheetDragHandleProps {\n onPointerDown: (event: PointerEvent & { currentTarget: HTMLElement }) => void\n onPointerMove: (event: PointerEvent) => void\n onPointerUp: (event: PointerEvent) => void\n onPointerCancel: (event: PointerEvent) => void\n style: JSX.CSSProperties\n}\n\n/** React's `useSheetDrag`: `panel()` = the sheet's panel element. */\nexport function createSheetDrag(opts: { panel: () => HTMLElement | null | undefined; onDismiss: () => void }): { handleProps: SheetDragHandleProps } {\n let drag: { pointerId: number; y: number; at: number } | null = null\n\n const paint = (transform: string, transition: string) => {\n const panel = opts.panel()\n if (!panel) {\n return\n }\n panel.style.transition = transition\n panel.style.transform = transform\n }\n\n const release = () => {\n const panel = opts.panel()\n if (!panel) {\n return\n }\n panel.style.transition = ``\n panel.style.transform = ``\n }\n\n const handleProps: SheetDragHandleProps = {\n // The grabber owns the touch, so the page behind never scrolls with it.\n style: { \"touch-action\": `none` },\n onPointerDown: (event) => {\n if (typeof window === `undefined` || typeof window.matchMedia !== `function` || !window.matchMedia(SHEET_MEDIA_QUERY).matches) {\n return\n }\n drag = { pointerId: event.pointerId, y: event.clientY, at: Date.now() }\n const target = event.currentTarget\n if (typeof target.setPointerCapture === `function`) {\n target.setPointerCapture(event.pointerId)\n }\n },\n onPointerMove: (event) => {\n const started = drag\n if (!started || started.pointerId !== event.pointerId) {\n return\n }\n // Upward drags resist (÷4) instead of lifting the sheet off its edge.\n const dy = event.clientY - started.y\n paint(`translateY(${dy > 0 ? dy : dy / 4}px)`, `none`)\n },\n onPointerUp: (event) => {\n const started = drag\n if (!started || started.pointerId !== event.pointerId) {\n return\n }\n drag = null\n const dy = event.clientY - started.y\n if (shouldDismissSheet(dy, Date.now() - started.at)) {\n paint(`translateY(100%)`, DISMISS_TRANSITION)\n window.setTimeout(() => {\n // Close while the panel is still off-screen (the exit keyframes\n // start from the CURRENT transform); release only if the close was\n // vetoed (the panel is still mounted and open).\n opts.onDismiss()\n window.requestAnimationFrame(() => {\n const panel = opts.panel()\n if (panel && panel.dataset.state === `open`) {\n release()\n }\n })\n }, DISMISS_ANIMATION_MS)\n return\n }\n paint(`translateY(0px)`, SNAP_BACK_TRANSITION)\n window.setTimeout(release, DISMISS_ANIMATION_MS)\n },\n onPointerCancel: (event) => {\n if (!drag || drag.pointerId !== event.pointerId) {\n return\n }\n drag = null\n release()\n },\n }\n\n return { handleProps }\n}\n","import { Show, splitProps, type ComponentProps, type JSX } from \"solid-js\"\nimport { X } from \"lucide-solid\"\nimport { SHEET_CLASSES, isTypeaheadPortalInteraction, type SheetSide } from \"@exponential-at/ui/web/primitives\"\n\nimport {\n DialogClosePart,\n DialogContentPart,\n DialogDescriptionPart,\n DialogOverlayPart,\n DialogPortalPart,\n DialogRoot,\n DialogTitlePart,\n DialogTriggerPart,\n useDialogContext,\n callRef,\n type AsProps,\n type DialogContentPartProps,\n type DialogRootProps,\n type OutsideEvent,\n} from \"../behaviors/dialog\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\nimport { SheetDragProvider, SheetGrabber, createSheetDragHandleProps } from \"./sheet-chrome\"\nimport { createSheetDrag } from \"./use-sheet-drag\"\n\nfunction Sheet(props: DialogRootProps) {\n return <DialogRoot {...props} />\n}\n\nfunction SheetTrigger(props: AsProps) {\n return <DialogTriggerPart data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose(props: AsProps) {\n return <DialogClosePart data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal(props: { container?: HTMLElement | null; children?: JSX.Element }) {\n return <DialogPortalPart {...props} />\n}\n\nfunction SheetOverlay(props: ComponentProps<`div`> & Record<string, unknown>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogOverlayPart data-slot=\"sheet-overlay\" class={cn(SHEET_CLASSES.overlay, local.class)} {...rest} />\n}\n\nexport type SheetContentProps = DialogContentPartProps & {\n class?: string\n side?: SheetSide\n showCloseButton?: boolean\n /** The drag pill at the top edge. On by default for `bottom`; the two\n * page-like bottom sheets (New issue, search) turn it off. */\n showGrabber?: boolean\n container?: HTMLElement | null\n}\n\nfunction SheetContent(props: SheetContentProps) {\n const [local, rest] = splitProps(props, [`class`, `children`, `side`, `showCloseButton`, `showGrabber`, `ref`, `onInteractOutside`, `container`])\n const ctx = useDialogContext(`SheetContent`)\n const side = () => local.side ?? `right`\n // A bottom sheet carries NO ✕ (EXP-687): it is dismissed by tapping outside\n // or dragging the grabber down. The side and top drawers keep theirs.\n const showCloseButton = () => local.showCloseButton ?? side() !== `bottom`\n const showGrabber = () => local.showGrabber ?? side() === `bottom`\n let panel: HTMLElement | undefined\n let dragClose: HTMLButtonElement | undefined\n // Dragging the sheet down clicks the hidden Close: the same Root-level path\n // as the overlay tap (EXP-247), outside the dismissable layer.\n const { handleProps } = createSheetDrag({ panel: () => panel, onDismiss: () => dragClose?.click() })\n return (\n <>\n {/* The overlay doubles as a Close (EXP-247): iOS Safari never\n synthesizes the `click` Radix's outside-dismiss waits for. */}\n <SheetPortal container={local.container}>\n <SheetOverlay type=\"button\" onClick={() => ctx.setOpen(false)} />\n </SheetPortal>\n <SheetPortal container={local.container}>\n <DialogContentPart\n data-slot=\"sheet-content\"\n data-side={side()}\n ref={(el: HTMLElement) => {\n panel = el\n callRef(local.ref, el)\n }}\n class={cn(SHEET_CLASSES.content, SHEET_CLASSES.sides[side()], local.class)}\n onInteractOutside={(event: OutsideEvent) => {\n local.onInteractOutside?.(event)\n if (!event.defaultPrevented && isTypeaheadPortalInteraction(event)) {\n event.preventDefault()\n }\n }}\n {...rest}\n >\n <SheetDragProvider value={side() === `bottom` ? handleProps : null}>\n <Show when={showGrabber()}>\n <SheetGrabber />\n <DialogClosePart ref={(el: HTMLButtonElement) => (dragClose = el)} aria-hidden=\"true\" tabindex=\"-1\" class={SHEET_CLASSES.dragClose} />\n </Show>\n {local.children}\n <Show when={showCloseButton()}>\n <DialogClosePart class={SHEET_CLASSES.close}>\n <PaintIcon icon={X} class={SHEET_CLASSES.closeIcon} />\n <span class={SHEET_CLASSES.srOnly}>Close</span>\n </DialogClosePart>\n </Show>\n </SheetDragProvider>\n </DialogContentPart>\n </SheetPortal>\n </>\n )\n}\n\nfunction SheetHeader(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n // Inside a bottom sheet the header area drags too, not just the grabber.\n const drag = createSheetDragHandleProps()\n return <div data-slot=\"sheet-header\" {...(drag ?? {})} class={cn(SHEET_CLASSES.header, local.class)} {...rest} />\n}\n\nfunction SheetFooter(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"sheet-footer\" class={cn(SHEET_CLASSES.footer, local.class)} {...rest} />\n}\n\nfunction SheetTitle(props: ComponentProps<`h2`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogTitlePart data-slot=\"sheet-title\" class={cn(SHEET_CLASSES.title, local.class)} {...rest} />\n}\n\nfunction SheetDescription(props: ComponentProps<`p`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogDescriptionPart data-slot=\"sheet-description\" class={cn(SHEET_CLASSES.description, local.class)} {...rest} />\n}\n\nexport { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription }\n","import { Show, createContext, splitProps, useContext, type ComponentProps, type JSX } from \"solid-js\"\nimport { X } from \"lucide-solid\"\nimport { DIALOG_CLASSES, DIALOG_PHONE_QUERY, isTypeaheadPortalInteraction } from \"@exponential-at/ui/web/primitives\"\n\nimport {\n DialogClosePart,\n DialogContentPart,\n DialogDescriptionPart,\n DialogOverlayPart,\n DialogPortalPart,\n DialogRoot,\n DialogTitlePart,\n DialogTriggerPart,\n callRef,\n type AsProps,\n type DialogContentPartProps,\n type DialogRootProps,\n type OutsideEvent,\n} from \"../behaviors/dialog\"\nimport { PaintIcon } from \"../icons\"\nimport { createMediaQuery } from \"../platform\"\nimport { Button, type ButtonProps } from \"./button\"\nimport { cn } from \"./cn\"\nimport { MOBILE_ARMS, type DialogMobileArm } from \"./dialog-arms\"\nimport { SheetDragProvider, SheetGrabber, createSheetDragHandleProps } from \"./sheet-chrome\"\nimport { SheetContent } from \"./sheet\"\nimport { createSheetDrag } from \"./use-sheet-drag\"\n\nfunction Dialog(props: DialogRootProps) {\n return <DialogRoot {...props} />\n}\n\nfunction DialogTrigger(props: AsProps) {\n return <DialogTriggerPart data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal(props: { container?: HTMLElement | null; children?: JSX.Element }) {\n return <DialogPortalPart {...props} />\n}\n\nfunction DialogClose(props: AsProps) {\n return <DialogClosePart data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay(props: ComponentProps<`div`> & Record<string, unknown>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogOverlayPart data-slot=\"dialog-overlay\" class={cn(DIALOG_CLASSES.overlay, local.class)} {...rest} />\n}\n\n/** The `< sm` presentation of the enclosing dialog, for chrome that differs\n * per arm (the ✕, DialogCancel). `null` outside a DialogContent. */\nconst DialogPresentationContext = createContext<DialogMobileArm | null>(null)\n\nexport type DialogContentProps = DialogContentPartProps & {\n class?: string\n showCloseButton?: boolean\n /** How the dialog presents below `sm` (EXP-687). Defaults to the bottom\n * `sheet`; the `sm:` presentation is identical for every arm. */\n mobile?: DialogMobileArm\n container?: HTMLElement | null\n}\n\nfunction DialogContent(props: DialogContentProps) {\n const [local, rest] = splitProps(props, [`class`, `children`, `showCloseButton`, `mobile`, `ref`, `onInteractOutside`, `container`])\n const mobile = () => local.mobile ?? `sheet`\n const isSheet = () => mobile() === `sheet` || mobile() === `sheet-full`\n const isPhone = createMediaQuery(DIALOG_PHONE_QUERY)\n let panel: HTMLElement | undefined\n let dragClose: HTMLButtonElement | undefined\n // Dragging the sheet down clicks a hidden Close: the same Root-level path\n // as the EXP-247 overlay tap, NOT the dismissable layer, so\n // `onInteractOutside` + preventDefault does not veto it.\n const { handleProps } = createSheetDrag({ panel: () => panel, onDismiss: () => dragClose?.click() })\n const setRef = (el: HTMLElement) => callRef(local.ref, el)\n\n return (\n <Show\n when={isSheet() && isPhone()}\n fallback={\n <>\n <DialogPortal container={local.container}>\n <DialogOverlay />\n </DialogPortal>\n <DialogPortal container={local.container}>\n <DialogContentPart\n data-slot=\"dialog-content\"\n data-mobile={mobile()}\n ref={(el: HTMLElement) => {\n panel = el\n setRef(el)\n }}\n class={cn(DIALOG_CLASSES.content, MOBILE_ARMS[mobile()], local.class)}\n // The typeahead's anchored arm portals to document.body (EXP-54):\n // a pointer-down on it is not \"outside\"; the caller's guard runs\n // first and its veto stands.\n onInteractOutside={(event: OutsideEvent) => {\n local.onInteractOutside?.(event)\n if (!event.defaultPrevented && isTypeaheadPortalInteraction(event)) {\n event.preventDefault()\n }\n }}\n {...rest}\n >\n <DialogPresentationContext.Provider value={mobile()}>\n <SheetDragProvider value={isSheet() ? handleProps : null}>\n <Show when={isSheet()}>\n <SheetGrabber class={DIALOG_CLASSES.grabber} />\n <DialogClosePart ref={(el: HTMLButtonElement) => (dragClose = el)} aria-hidden=\"true\" tabindex=\"-1\" class={DIALOG_CLASSES.dragClose} />\n </Show>\n {local.children}\n <Show when={local.showCloseButton ?? true}>\n <DialogClosePart data-slot=\"dialog-close\" class={cn(DIALOG_CLASSES.close, mobile() !== `page` && DIALOG_CLASSES.closePhoneHidden)}>\n <PaintIcon icon={X} />\n <span class={DIALOG_CLASSES.srOnly}>Close</span>\n </DialogClosePart>\n </Show>\n </SheetDragProvider>\n </DialogPresentationContext.Provider>\n </DialogContentPart>\n </DialogPortal>\n </>\n }\n >\n {/* ONE phone sheet: the dialog renders THROUGH `SheetContent` (the same\n Dialog underneath, so this Root still owns it). */}\n <SheetContent\n side=\"bottom\"\n data-slot=\"dialog-content\"\n data-mobile={mobile()}\n ref={setRef}\n class={cn(DIALOG_CLASSES.phoneSheet, mobile() === `sheet-full` && DIALOG_CLASSES.phoneSheetFull, local.class)}\n onInteractOutside={local.onInteractOutside}\n container={local.container}\n {...rest}\n >\n <DialogPresentationContext.Provider value={mobile()}>{local.children}</DialogPresentationContext.Provider>\n </SheetContent>\n </Show>\n )\n}\n\nfunction DialogHeader(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n // Inside a sheet the whole header area drags, not just the 4px grabber.\n const drag = createSheetDragHandleProps()\n return <div data-slot=\"dialog-header\" {...(drag ?? {})} class={cn(DIALOG_CLASSES.header, local.class)} {...rest} />\n}\n\nfunction DialogBody(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"dialog-body\" class={cn(DIALOG_CLASSES.body, local.class)} {...rest} />\n}\n\nfunction DialogFooter(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"dialog-footer\" class={cn(DIALOG_CLASSES.footer, local.class)} {...rest} />\n}\n\n/** The Cancel of a dialog footer (EXP-687): hidden on a phone for the sheet\n * arms (a sheet is dismissed by dragging it down or tapping outside),\n * visible for `alert`/`page`. Desktop: a ghost button. */\nfunction DialogCancel(props: ButtonProps) {\n const [local, rest] = splitProps(props, [`class`, `children`])\n const mobile = useContext(DialogPresentationContext)\n const keepOnMobile = mobile === `alert` || mobile === `page`\n return (\n <DialogClosePart\n as={Button}\n type=\"button\"\n variant=\"ghost\"\n // Keeps Button's `data-slot=\"button\"`, which DialogFooter's phone\n // sizing keys on; this attribute only names the role.\n data-dialog-cancel=\"\"\n class={cn(!keepOnMobile && DIALOG_CLASSES.cancelPhoneHidden, local.class)}\n {...rest}\n >\n {local.children ?? `Cancel`}\n </DialogClosePart>\n )\n}\n\nfunction DialogTitle(props: ComponentProps<`h2`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogTitlePart data-slot=\"dialog-title\" class={cn(DIALOG_CLASSES.title, local.class)} {...rest} />\n}\n\nfunction DialogDescription(props: ComponentProps<`p`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <DialogDescriptionPart data-slot=\"dialog-description\" class={cn(DIALOG_CLASSES.description, local.class)} {...rest} />\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogCancel,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogPresentationContext,\n DialogTitle,\n DialogTrigger,\n}\n","import { splitProps, type ComponentProps, type JSX } from \"solid-js\"\nimport { ChevronDown, ChevronRight } from \"lucide-solid\"\nimport { DISCLOSURE_HEADER_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nexport function DisclosureHeader(\n props: Omit<ComponentProps<`button`>, `onClick` | `onToggle` | `type` | `aria-expanded` | `children`> & {\n open: boolean\n onToggle: () => void\n chevron?: `leading` | `trailing`\n children: JSX.Element\n }\n) {\n const [local, rest] = splitProps(props, [`open`, `onToggle`, `chevron`, `class`, `children`])\n const chevron = () => local.chevron ?? `leading`\n const glyph = () => (\n <PaintIcon\n icon={local.open ? ChevronDown : ChevronRight}\n data-slot=\"disclosure-chevron\"\n class={cn(DISCLOSURE_HEADER_CLASSES.chevron, chevron() === `trailing` && DISCLOSURE_HEADER_CLASSES.chevronTrailing)}\n />\n )\n return (\n <button\n type=\"button\"\n data-slot=\"disclosure-header\"\n data-chevron={chevron()}\n aria-expanded={local.open}\n onClick={() => local.onToggle()}\n class={cn(DISCLOSURE_HEADER_CLASSES.root, local.class)}\n {...rest}\n >\n {chevron() === `leading` && glyph()}\n {local.children}\n {chevron() === `trailing` && glyph()}\n </button>\n )\n}\n","import { For, Show, createEffect, createMemo, createSignal, onCleanup, splitProps, type Component, type ComponentProps, type JSX } from \"solid-js\"\nimport { ChevronRight } from \"lucide-solid\"\nimport { DOCK_CARD_CLASSES, DOCK_PILE_CLASSES, dockPileGeometry, type DockCardTint } from \"@exponential-at/ui/web/primitives\"\n\nimport { bindStyle } from \"../behaviors/style-writer\"\nimport { PaintIcon } from \"../icons\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// N-12: React's dock-card.tsx on Solid: the same DockCard markup and the\n// same pile, placed by the shared geometry (dockPileGeometry).\n\ntype Glyph = Component<{ class?: string }>\n\nexport type DockCardProps = Omit<ComponentProps<`div`>, `title` | `children`> & {\n tint?: DockCardTint\n /** The kind glyph (a component; the card sizes and tints it). */\n icon?: Glyph\n label: JSX.Element\n caption?: JSX.Element\n meta?: JSX.Element\n title: JSX.Element\n /** The card opens: the trailing chevron, a button role, Enter / Space. */\n onOpen?: () => void\n /** Without `onOpen`: a trailing node (a banner's action). */\n trailing?: JSX.Element\n /** A card behind the front one while piled: its chrome peeks, its words do not. */\n hidden?: boolean\n /** The accessible name of a card that opens. */\n openLabel?: string\n}\n\nexport function DockCard(props: DockCardProps) {\n const [local, rest] = splitProps(props, [`tint`, `icon`, `label`, `caption`, `meta`, `title`, `onOpen`, `trailing`, `hidden`, `openLabel`, `class`])\n const tint = () => local.tint ?? `muted`\n const pressable = () => local.onOpen !== undefined\n const has = (value: JSX.Element | undefined) => value !== undefined && value !== null\n return (\n <div\n data-slot=\"dock-card\"\n role={pressable() ? `button` : undefined}\n tabIndex={pressable() && !local.hidden ? 0 : undefined}\n aria-label={pressable() ? local.openLabel : undefined}\n aria-hidden={local.hidden ? true : undefined}\n class={cn(DOCK_CARD_CLASSES.root, pressable() && DOCK_CARD_CLASSES.pressable, local.class)}\n onClick={() => local.onOpen?.()}\n onKeyDown={(event) => {\n if (!pressable() || event.defaultPrevented) return\n if (event.key === `Enter` || event.key === ` `) {\n event.preventDefault()\n local.onOpen?.()\n }\n }}\n {...rest}\n >\n <div data-slot=\"dock-card-body\" data-hidden={local.hidden ? `true` : `false`} class={DOCK_CARD_CLASSES.body}>\n <Show when={local.icon}>\n {(icon) => <PaintIcon icon={icon()} aria-hidden data-slot=\"dock-card-icon\" class={cn(DOCK_CARD_CLASSES.icon, DOCK_CARD_CLASSES.tint[tint()])} />}\n </Show>\n <div class={DOCK_CARD_CLASSES.text}>\n <div class={DOCK_CARD_CLASSES.header}>\n <span data-slot=\"dock-card-label\" class={cn(DOCK_CARD_CLASSES.label, DOCK_CARD_CLASSES.tint[tint()])}>\n {local.label}\n </span>\n <Show when={has(local.caption)}>\n <span data-slot=\"dock-card-caption\" class={DOCK_CARD_CLASSES.caption}>\n {local.caption}\n </span>\n </Show>\n <Show when={has(local.meta)}>\n <span data-slot=\"dock-card-meta\" class={DOCK_CARD_CLASSES.meta}>\n {local.meta}\n </span>\n </Show>\n </div>\n <div class={DOCK_CARD_CLASSES.row}>\n <span data-slot=\"dock-card-title\" class={DOCK_CARD_CLASSES.title}>\n {local.title}\n </span>\n <Show\n when={pressable()}\n fallback={\n <Show when={has(local.trailing)}>\n <span data-slot=\"dock-card-trailing\" class={DOCK_CARD_CLASSES.trailing}>\n {local.trailing}\n </span>\n </Show>\n }\n >\n <PaintIcon icon={ChevronRight} aria-hidden data-slot=\"dock-card-chevron\" class={DOCK_CARD_CLASSES.chevron} />\n </Show>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport interface DockPileItem {\n id: string\n /** The card (a `DockCard`; pass `hidden` for the ones behind the front). */\n node: JSX.Element\n /** A known height (px) instead of the measured one (specimens, tests). */\n height?: number\n}\n\nexport type DockPileProps = Omit<ComponentProps<`div`>, `children`> & {\n /** Oldest first: the LAST item is the front card. */\n items: readonly DockPileItem[]\n /** Fanned: every card at full size, `gap` apart. */\n expanded: boolean\n /** A pointer entering/leaving the pile or the focus moving in/out of it. */\n onExpandedChange?: (expanded: boolean) => void\n}\n\nexport function DockPile(props: DockPileProps) {\n const [local, rest] = splitProps(props, [`items`, `expanded`, `onExpandedChange`, `class`, `style`])\n const [measured, setMeasured] = createSignal<Record<string, number>>({})\n const nodes = new Map<string, HTMLDivElement>()\n const measure = () => {\n const next: Record<string, number> = {}\n for (const item of local.items) {\n const el = nodes.get(item.id)\n if (item.height === undefined && el) next[item.id] = el.offsetHeight\n }\n const prev = measured()\n if (!(Object.keys(next).length === Object.keys(prev).length && Object.entries(next).every(([k, v]) => prev[k] === v))) setMeasured(next)\n }\n createEffect(() => {\n void local.items\n measure()\n if (typeof ResizeObserver === `undefined`) return\n const observer = new ResizeObserver(measure)\n for (const el of nodes.values()) observer.observe(el)\n onCleanup(() => observer.disconnect())\n })\n const geometry = createMemo(() =>\n dockPileGeometry(\n local.items.map((item) => item.height ?? measured()[item.id] ?? 0),\n local.expanded\n )\n )\n return (\n <div\n ref={(el) => bindStyle(el, () => ({ ...((local.style as Record<string, string> | undefined) ?? {}), height: `${geometry().height}px` }))}\n data-slot=\"dock-pile\"\n data-expanded={local.expanded ? `true` : `false`}\n class={cn(DOCK_PILE_CLASSES.root, local.class)}\n onPointerEnter={(event) => {\n if (event.pointerType !== `touch`) local.onExpandedChange?.(true)\n }}\n onPointerLeave={(event) => {\n if (event.pointerType !== `touch`) local.onExpandedChange?.(false)\n }}\n onFocusIn={() => local.onExpandedChange?.(true)}\n onFocusOut={(event) => {\n const next = event.relatedTarget as Node | null\n if (!next || !event.currentTarget.contains(next)) local.onExpandedChange?.(false)\n }}\n {...rest}\n >\n <For each={local.items}>\n {(item, i) => {\n const placed = () => geometry().items[i()] ?? { offset: 0, scale: 1, visible: true }\n let node: HTMLDivElement | undefined\n onCleanup(() => {\n if (nodes.get(item.id) === node) nodes.delete(item.id)\n })\n return (\n <div\n ref={(el) => {\n node = el\n nodes.set(item.id, el)\n bindStyle(el, () => css({ \"--offset\": `${placed().offset}px`, \"--scale\": `${placed().scale}`, zIndex: i() + 1 })!)\n }}\n data-slot=\"dock-pile-item\"\n data-front={i() === local.items.length - 1 ? `true` : `false`}\n data-visible={placed().visible ? `true` : `false`}\n class={DOCK_PILE_CLASSES.item}\n >\n {item.node}\n </div>\n )\n }}\n </For>\n </div>\n )\n}\n\nexport { DOCK_CARD_CLASSES, DOCK_PILE_CLASSES, DOCK_PILE_CONSTANTS, dockPileGeometry } from \"@exponential-at/ui/web/primitives\"\nexport type { DockCardTint } from \"@exponential-at/ui/web/primitives\"\n","import { Show, createContext, createEffect, createSignal, on, onCleanup, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { Check, ChevronRight, Circle } from \"lucide-solid\"\nimport { DROPDOWN_MENU_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { MenuContent, createMenuRow, createPresence, createSelectable, useKeyboardTracking, type Align, type OutsideEvent, type Side } from \"../behaviors\"\nimport { DialogPortalPart, layerMountedThisTask, noteLayerMount, callRef, composeHandlers, createId, createOpenState, mergeRefs, stateOf, type AsProps } from \"../behaviors/dialog\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\n// Radix DropdownMenu on plain elements, on the Menu machinery of\n// ../behaviors/menu (the modal root content, roving focus, typeahead, the\n// submenus' pointer grace): every part shadcn's dropdown-menu.tsx exports.\n\ninterface RootValue {\n open: Accessor<boolean>\n setOpen: (open: boolean) => void\n triggerId: string\n contentId: string\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n dir: () => `ltr` | `rtl`\n}\nconst RootContext = createContext<RootValue>()\nconst useRoot = (part: string) => {\n const ctx = useContext(RootContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`DropdownMenu\\``)\n return ctx\n}\n/** The open state of the enclosing menu level (the root or a submenu). */\nconst LevelOpenContext = createContext<Accessor<boolean>>(() => false)\n\nexport interface DropdownMenuProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Radix's `modal` (the root content is always modal here). */\n modal?: boolean\n dir?: `ltr` | `rtl`\n children?: JSX.Element\n}\n\nfunction DropdownMenu(props: DropdownMenuProps) {\n const [open, setOpen] = createOpenState({ open: () => props.open, defaultOpen: props.defaultOpen, onOpenChange: () => props.onOpenChange })\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n useKeyboardTracking()\n const value: RootValue = { open, setOpen, triggerId: `radix-${createId()}`, contentId: `radix-${createId()}`, trigger, setTrigger, dir: () => props.dir ?? `ltr` }\n return (\n <RootContext.Provider value={value}>\n <LevelOpenContext.Provider value={open}>{props.children}</LevelOpenContext.Provider>\n </RootContext.Provider>\n )\n}\n\nfunction DropdownMenuPortal(props: { container?: HTMLElement | null; children?: JSX.Element }) {\n return <DialogPortalPart {...props} />\n}\n\nfunction DropdownMenuTrigger(props: AsProps & { disabled?: boolean }) {\n const ctx = useRoot(`DropdownMenuTrigger`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `disabled`, `onPointerDown`, `onKeyDown`])\n const disabled = () => local.disabled ?? false\n return (\n <Dynamic\n component={local.as ?? `button`}\n data-slot=\"dropdown-menu-trigger\"\n type=\"button\"\n id={ctx.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open() ? `true` : `false`}\n aria-controls={ctx.open() ? ctx.contentId : undefined}\n data-state={stateOf(ctx.open())}\n data-disabled={disabled() ? `` : undefined}\n disabled={disabled()}\n {...rest}\n ref={mergeRefs(local.ref, ctx.setTrigger)}\n onPointerDown={composeHandlers(local.onPointerDown, (e: PointerEvent) => {\n if (!untrack(disabled) && e.button === 0 && e.ctrlKey === false) {\n const was = untrack(ctx.open)\n ctx.setOpen(!was)\n if (!was) e.preventDefault()\n }\n })}\n onKeyDown={composeHandlers(local.onKeyDown, (e: KeyboardEvent) => {\n if (untrack(disabled)) return\n if ([`Enter`, ` `].includes(e.key)) ctx.setOpen(!untrack(ctx.open))\n if (e.key === `ArrowDown`) ctx.setOpen(true)\n if ([`Enter`, ` `, `ArrowDown`].includes(e.key)) e.preventDefault()\n })}\n />\n )\n}\n\ntype ContentProps = Omit<ComponentProps<`div`>, `style` | `onKeyDown`> & {\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n collisionPadding?: number\n container?: HTMLElement | null\n onKeyDown?: (e: KeyboardEvent) => void\n onCloseAutoFocus?: (e: Event) => void\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n}\n\nconst CONTENT_KEYS = [`class`, `side`, `align`, `sideOffset`, `alignOffset`, `collisionPadding`, `container`, `children`, `ref`, `onKeyDown`, `onCloseAutoFocus`, `onEscapeKeyDown`, `onFocusOutside`, `onInteractOutside`] as const\n\nfunction DropdownMenuContent(props: ContentProps) {\n const ctx = useRoot(`DropdownMenuContent`)\n const [local, rest] = splitProps(props, CONTENT_KEYS)\n const presence = createPresence(ctx.open)\n let interactedOutside = false\n return (\n <DropdownMenuPortal container={local.container}>\n <Show when={presence.mounted()}>\n {(_) => {\n const lag = layerMountedThisTask()\n return (\n <MenuContent\n anchor={ctx.trigger()}\n side={local.side ?? `bottom`}\n align={local.align ?? `center`}\n sideOffset={local.sideOffset ?? 4}\n alignOffset={local.alignOffset}\n collisionPadding={local.collisionPadding ?? 0}\n dir={ctx.dir()}\n kind=\"dropdown-menu\"\n lagParentLayer={lag}\n root\n id={ctx.contentId}\n labelledBy={ctx.triggerId}\n state={() => stateOf(ctx.open())}\n attrs={() => ({ \"data-slot\": `dropdown-menu-content`, class: cn(DROPDOWN_MENU_CLASSES.content, local.class), ...rest })}\n setContent={(el) => {\n if (el) {\n presence.ref(el)\n noteLayerMount()\n callRef(local.ref, el)\n }\n }}\n onDismiss={() => ctx.setOpen(false)}\n onKeyDown={local.onKeyDown}\n onEscapeKeyDown={local.onEscapeKeyDown}\n onFocusOutside={local.onFocusOutside}\n onInteractOutside={(e) => {\n local.onInteractOutside?.(e)\n if (e.defaultPrevented) return\n const original = e.detail.originalEvent as PointerEvent\n const ctrlLeftClick = original.button === 0 && original.ctrlKey === true\n if (original.button === 2 || ctrlLeftClick) interactedOutside = true\n }}\n onCloseAutoFocus={(e) => {\n local.onCloseAutoFocus?.(e)\n if (e.defaultPrevented) return\n if (!interactedOutside) ctx.trigger()?.focus()\n interactedOutside = false\n e.preventDefault()\n }}\n >\n {local.children}\n </MenuContent>\n )\n }}\n </Show>\n </DropdownMenuPortal>\n )\n}\n\nfunction DropdownMenuGroup(props: ComponentProps<`div`>) {\n return <div role=\"group\" data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nconst insetAttr = (inset: boolean | undefined) => (inset === undefined ? undefined : String(inset))\n\ntype ItemProps = Omit<ComponentProps<`div`>, `onSelect`> & {\n disabled?: boolean\n onSelect?: (e: Event) => void\n}\n\n/** Radix `MenuItem`'s row: the roving attributes, the selection, the\n * caller's handlers first. */\nfunction createItem(local: { disabled?: boolean; onSelect?: (e: Event) => void; ref?: unknown; onClick?: unknown; onPointerDown?: unknown; onPointerUp?: unknown; onPointerMove?: unknown; onPointerLeave?: unknown; onKeyDown?: unknown; onFocus?: unknown; onBlur?: unknown }, onSelect: (e: Event) => void) {\n const root = useRoot(`DropdownMenuItem`)\n const row = createSelectable(\n () => local.disabled ?? false,\n (e) => onSelect(e),\n () => root.setOpen(false)\n )\n const h = row.handlers\n return {\n attrs: row.attrs,\n ref: mergeRefs(row.ref, local.ref),\n handlers: {\n onClick: composeHandlers(local.onClick, h.onClick),\n onPointerDown: composeHandlers(local.onPointerDown, h.onPointerDown, false),\n onPointerUp: composeHandlers(local.onPointerUp, h.onPointerUp),\n onPointerMove: composeHandlers(local.onPointerMove, h.onPointerMove),\n onPointerLeave: composeHandlers(local.onPointerLeave, h.onPointerLeave),\n onKeyDown: composeHandlers(local.onKeyDown, h.onKeyDown),\n onFocus: composeHandlers(local.onFocus, h.onFocus),\n onBlur: composeHandlers(local.onBlur, h.onBlur),\n },\n }\n}\n\nconst ITEM_KEYS = [`disabled`, `onSelect`, `ref`, `onClick`, `onPointerDown`, `onPointerUp`, `onPointerMove`, `onPointerLeave`, `onKeyDown`, `onFocus`, `onBlur`] as const\n\nfunction DropdownMenuItem(props: ItemProps & { inset?: boolean; variant?: `default` | `destructive` }) {\n const [local, handlers, rest] = splitProps(props, [`class`, `inset`, `variant`], ITEM_KEYS)\n const item = createItem(handlers, (e) => handlers.onSelect?.(e))\n return (\n <div\n ref={item.ref}\n role=\"menuitem\"\n {...item.attrs()}\n data-slot=\"dropdown-menu-item\"\n data-inset={insetAttr(local.inset)}\n data-variant={local.variant ?? `default`}\n class={cn(DROPDOWN_MENU_CLASSES.item, local.class)}\n {...rest}\n {...(item.handlers as JSX.HTMLAttributes<HTMLDivElement>)}\n />\n )\n}\n\ntype CheckedState = boolean | `indeterminate`\nconst checkedState = (c: CheckedState) => (c === `indeterminate` ? `indeterminate` : c ? `checked` : `unchecked`)\nconst IndicatorContext = createContext<Accessor<CheckedState>>(() => false)\n\nfunction ItemIndicator(props: { children?: JSX.Element }) {\n const checked = useContext(IndicatorContext)\n return (\n <Show when={checked() === true || checked() === `indeterminate`}>\n <span data-state={checkedState(checked())}>{props.children}</span>\n </Show>\n )\n}\n\nfunction DropdownMenuCheckboxItem(props: ItemProps & { checked?: CheckedState; onCheckedChange?: (checked: boolean) => void }) {\n const [local, handlers, rest] = splitProps(props, [`class`, `children`, `checked`, `onCheckedChange`], ITEM_KEYS)\n const checked = () => local.checked ?? false\n const item = createItem(handlers, (e) => {\n handlers.onSelect?.(e)\n const c = untrack(checked)\n local.onCheckedChange?.(c === `indeterminate` ? true : !c)\n })\n return (\n <IndicatorContext.Provider value={checked}>\n <div\n ref={item.ref}\n role=\"menuitemcheckbox\"\n aria-checked={checked() === `indeterminate` ? `mixed` : checked() ? `true` : `false`}\n {...item.attrs()}\n data-slot=\"dropdown-menu-checkbox-item\"\n class={cn(DROPDOWN_MENU_CLASSES.checkItem, local.class)}\n {...rest}\n data-state={checkedState(checked())}\n {...(item.handlers as JSX.HTMLAttributes<HTMLDivElement>)}\n >\n <span class={DROPDOWN_MENU_CLASSES.itemIndicator}>\n <ItemIndicator>\n <PaintIcon icon={Check} class={DROPDOWN_MENU_CLASSES.checkIcon} />\n </ItemIndicator>\n </span>\n {local.children}\n </div>\n </IndicatorContext.Provider>\n )\n}\n\nconst RadioGroupContext = createContext<{ value: () => string | undefined; onValueChange: (value: string) => void }>({ value: () => undefined, onValueChange: () => {} })\n\nfunction DropdownMenuRadioGroup(props: Omit<ComponentProps<`div`>, `onChange`> & { value?: string; onValueChange?: (value: string) => void }) {\n const [local, rest] = splitProps(props, [`value`, `onValueChange`])\n return (\n <RadioGroupContext.Provider value={{ value: () => local.value, onValueChange: (v) => local.onValueChange?.(v) }}>\n <div role=\"group\" data-slot=\"dropdown-menu-radio-group\" {...rest} />\n </RadioGroupContext.Provider>\n )\n}\n\nfunction DropdownMenuRadioItem(props: ItemProps & { value: string }) {\n const [local, handlers, rest] = splitProps(props, [`class`, `children`, `value`], ITEM_KEYS)\n const group = useContext(RadioGroupContext)\n const checked = () => local.value === group.value()\n const item = createItem(handlers, (e) => {\n handlers.onSelect?.(e)\n group.onValueChange(local.value)\n })\n return (\n <IndicatorContext.Provider value={checked}>\n <div\n ref={item.ref}\n role=\"menuitemradio\"\n aria-checked={checked() ? `true` : `false`}\n {...item.attrs()}\n data-slot=\"dropdown-menu-radio-item\"\n class={cn(DROPDOWN_MENU_CLASSES.checkItem, local.class)}\n {...rest}\n data-state={checkedState(checked())}\n {...(item.handlers as JSX.HTMLAttributes<HTMLDivElement>)}\n >\n <span class={DROPDOWN_MENU_CLASSES.itemIndicator}>\n <ItemIndicator>\n <PaintIcon icon={Circle} class={DROPDOWN_MENU_CLASSES.radioIcon} />\n </ItemIndicator>\n </span>\n {local.children}\n </div>\n </IndicatorContext.Provider>\n )\n}\n\nfunction DropdownMenuLabel(props: ComponentProps<`div`> & { inset?: boolean }) {\n const [local, rest] = splitProps(props, [`class`, `inset`])\n return <div data-slot=\"dropdown-menu-label\" data-inset={insetAttr(local.inset)} class={cn(DROPDOWN_MENU_CLASSES.label, local.class)} {...rest} />\n}\n\nfunction DropdownMenuSeparator(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div role=\"separator\" aria-orientation=\"horizontal\" data-slot=\"dropdown-menu-separator\" class={cn(DROPDOWN_MENU_CLASSES.separator, local.class)} {...rest} />\n}\n\nfunction DropdownMenuShortcut(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <span data-slot=\"dropdown-menu-shortcut\" class={cn(DROPDOWN_MENU_CLASSES.shortcut, local.class)} {...rest} />\n}\n\ninterface SubValue {\n open: Accessor<boolean>\n setOpen: (open: boolean) => void\n triggerId: string\n contentId: string\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n content: Accessor<HTMLElement | undefined>\n setContent: (el: HTMLElement | undefined) => void\n}\nconst SubContext = createContext<SubValue>()\nconst useSub = (part: string) => {\n const ctx = useContext(SubContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`DropdownMenuSub\\``)\n return ctx\n}\n\nfunction DropdownMenuSub(props: { open?: boolean; defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; children?: JSX.Element }) {\n const parentOpen = useContext(LevelOpenContext)\n const [open, setOpen] = createOpenState({ open: () => props.open, defaultOpen: props.defaultOpen, onOpenChange: () => props.onOpenChange })\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const [content, setContent] = createSignal<HTMLElement>()\n // A submenu closes with the menu it sits in.\n createEffect(on(parentOpen, (o) => o === false && setOpen(false)))\n onCleanup(() => setOpen(false))\n const value: SubValue = { open, setOpen, triggerId: `radix-${createId()}`, contentId: `radix-${createId()}`, trigger, setTrigger, content, setContent }\n return (\n <SubContext.Provider value={value}>\n <LevelOpenContext.Provider value={open}>{props.children}</LevelOpenContext.Provider>\n </SubContext.Provider>\n )\n}\n\nfunction DropdownMenuSubTrigger(props: ComponentProps<`div`> & { inset?: boolean; variant?: `default` | `destructive`; disabled?: boolean }) {\n const root = useRoot(`DropdownMenuSubTrigger`)\n const sub = useSub(`DropdownMenuSubTrigger`)\n const [local, rest] = splitProps(props, [`class`, `inset`, `variant`, `children`, `disabled`, `ref`, `onClick`, `onPointerMove`, `onPointerLeave`, `onKeyDown`, `onFocus`, `onBlur`])\n const disabled = () => local.disabled ?? false\n const row = createMenuRow(disabled)\n let openTimer: ReturnType<typeof setTimeout> | undefined\n let graceTimer: ReturnType<typeof setTimeout> | undefined\n const clearOpenTimer = () => {\n clearTimeout(openTimer)\n openTimer = undefined\n }\n onCleanup(() => {\n clearOpenTimer()\n clearTimeout(graceTimer)\n row.level.setGrace(null)\n })\n const openKey = () => (root.dir() === `rtl` ? `ArrowLeft` : `ArrowRight`)\n return (\n <div\n ref={mergeRefs(row.ref, sub.setTrigger, local.ref)}\n role=\"menuitem\"\n id={sub.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={sub.open() ? `true` : `false`}\n aria-controls={sub.contentId}\n data-state={stateOf(sub.open())}\n {...row.attrs()}\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={insetAttr(local.inset)}\n data-variant={local.variant ?? `default`}\n class={cn(DROPDOWN_MENU_CLASSES.subTrigger, local.class)}\n {...rest}\n onClick={composeHandlers(local.onClick, (e: MouseEvent) => {\n if (untrack(disabled)) return\n ;(e.currentTarget as HTMLElement).focus()\n if (!untrack(sub.open)) sub.setOpen(true)\n })}\n onPointerMove={composeHandlers(local.onPointerMove, (e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n // Moving toward the open submenu: neither re-open nor re-focus.\n if (row.level.onItemEnter(e)) return\n if (!untrack(disabled) && !untrack(sub.open) && !openTimer) {\n row.level.setGrace(null)\n openTimer = setTimeout(() => {\n sub.setOpen(true)\n clearOpenTimer()\n }, 100)\n }\n row.handlers.onPointerMove(e)\n })}\n onPointerLeave={composeHandlers(local.onPointerLeave, (e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n clearOpenTimer()\n const content = sub.content()\n const rect = content?.getBoundingClientRect()\n if (content && rect) {\n const side = content.dataset.side as Side\n const right = side === `right`\n const bleed = right ? -5 : 5\n const near = rect[right ? `left` : `right`]\n const far = rect[right ? `right` : `left`]\n row.level.setGrace({\n area: [\n { x: e.clientX + bleed, y: e.clientY },\n { x: near, y: rect.top },\n { x: far, y: rect.top },\n { x: far, y: rect.bottom },\n { x: near, y: rect.bottom },\n ],\n side,\n })\n clearTimeout(graceTimer)\n graceTimer = setTimeout(() => row.level.setGrace(null), 300)\n } else {\n if (row.level.onTriggerLeave(e)) return\n row.level.setGrace(null)\n row.handlers.onPointerLeave(e)\n }\n })}\n onKeyDown={composeHandlers(local.onKeyDown, (e: KeyboardEvent) => {\n const typingAhead = row.level.search() !== ``\n if (untrack(disabled) || (typingAhead && e.key === ` `)) return\n if ([`Enter`, ` `, openKey()].includes(e.key)) {\n sub.setOpen(true)\n sub.content()?.focus()\n e.preventDefault()\n return\n }\n row.handlers.onKeyDown(e)\n })}\n onFocus={composeHandlers(local.onFocus, row.handlers.onFocus)}\n onBlur={composeHandlers(local.onBlur, row.handlers.onBlur)}\n >\n {local.children}\n <PaintIcon icon={ChevronRight} class={DROPDOWN_MENU_CLASSES.subChevron} />\n </div>\n )\n}\n\nfunction DropdownMenuSubContent(props: ContentProps) {\n const root = useRoot(`DropdownMenuSubContent`)\n const sub = useSub(`DropdownMenuSubContent`)\n const [local, rest] = splitProps(props, CONTENT_KEYS)\n const presence = createPresence(sub.open)\n const closeKey = () => (root.dir() === `rtl` ? `ArrowRight` : `ArrowLeft`)\n return (\n <DropdownMenuPortal container={local.container}>\n <Show when={presence.mounted()}>\n {(_) => {\n const lag = layerMountedThisTask()\n return (\n <MenuContent\n anchor={sub.trigger()}\n side={root.dir() === `rtl` ? `left` : `right`}\n align=\"start\"\n sideOffset={local.sideOffset ?? 0}\n alignOffset={local.alignOffset}\n collisionPadding={local.collisionPadding ?? 0}\n dir={root.dir()}\n kind=\"dropdown-menu\"\n lagParentLayer={lag}\n root={false}\n id={sub.contentId}\n labelledBy={sub.triggerId}\n state={() => stateOf(sub.open())}\n attrs={() => ({ \"data-slot\": `dropdown-menu-sub-content`, class: cn(DROPDOWN_MENU_CLASSES.subContent, local.class), ...rest })}\n setContent={(el) => {\n sub.setContent(el)\n if (el) {\n presence.ref(el)\n noteLayerMount()\n callRef(local.ref, el)\n }\n }}\n // Radix's sub content has no dismiss of its own: the root's layer\n // answers outside pointers, Escape closes the whole menu.\n onDismiss={() => {}}\n onEscapeKeyDown={(e) => {\n local.onEscapeKeyDown?.(e)\n if (e.defaultPrevented) return\n root.setOpen(false)\n e.preventDefault()\n }}\n onFocusOutside={(e) => {\n local.onFocusOutside?.(e)\n if (e.defaultPrevented) return\n if (e.target !== sub.trigger()) sub.setOpen(false)\n }}\n onInteractOutside={local.onInteractOutside}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n local.onKeyDown?.(e)\n if (e.defaultPrevented) return\n if (sub.content()?.contains(e.target as Node) && e.key === closeKey()) {\n sub.setOpen(false)\n sub.trigger()?.focus()\n e.preventDefault()\n }\n }}\n >\n {local.children}\n </MenuContent>\n )\n }}\n </Show>\n </DropdownMenuPortal>\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import type { JSX } from \"solid-js\"\nimport { ICON_DISC_CLASSES, type IconDiscTone } from \"@exponential-at/ui/web/primitives\"\n\nimport type { IconComponent } from \"../host\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nexport { ICON_DISC_TONES } from \"@exponential-at/ui/web/primitives\"\nexport type { IconDiscTone } from \"@exponential-at/ui/web/primitives\"\n\n/** lucide-react's own stroke width, its fallback for an undefined one. */\nconst LUCIDE_STROKE = 2\n/** lucide-react's `focusable=\"false\"` (not in Solid's SVG attribute types). */\nconst UNFOCUSABLE = { focusable: `false` } as JSX.SvgSVGAttributes<SVGSVGElement>\n\nexport function IconDisc(props: { icon: IconComponent; tone?: IconDiscTone; strokeWidth?: number; class?: string }) {\n return (\n <div data-slot=\"icon-disc\" class={cn(ICON_DISC_CLASSES.root, ICON_DISC_CLASSES.tones[props.tone ?? `primary`], props.class)}>\n {/* Decorative: the disc always sits beside a title that names it. */}\n <PaintIcon icon={props.icon} class={ICON_DISC_CLASSES.icon} stroke-width={props.strokeWidth ?? LUCIDE_STROKE} aria-hidden=\"true\" {...UNFOCUSABLE} />\n </div>\n )\n}\n","import { Show, children, splitProps, type ComponentProps, type JSX } from \"solid-js\"\nimport { EMPTY_STATE_CLASSES, type EmptyStateSize } from \"@exponential-at/ui/web/primitives\"\n\nimport type { IconComponent } from \"../host\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\nimport { IconDisc } from \"./icon-disc\"\n\n/** lucide-react's `focusable=\"false\"` (not in Solid's SVG attribute types). */\nconst UNFOCUSABLE = { focusable: `false` } as JSX.SvgSVGAttributes<SVGSVGElement>\n\nexport { EMPTY_STATE_SIZES } from \"@exponential-at/ui/web/primitives\"\nexport type { EmptyStateSize } from \"@exponential-at/ui/web/primitives\"\n\nexport function EmptyState(props: { icon?: IconComponent; title: string; description?: string; size?: EmptyStateSize; class?: string; children?: JSX.Element }) {\n const actions = children(() => props.children)\n return (\n <Show\n when={props.size !== `list`}\n fallback={\n <div data-slot=\"empty-state\" data-size=\"list\" role=\"status\" class={cn(EMPTY_STATE_CLASSES.list, props.class)}>\n <Show when={props.icon}>{(icon) => <PaintIcon icon={icon()} aria-hidden=\"true\" {...UNFOCUSABLE} class={EMPTY_STATE_CLASSES.listIcon} />}</Show>\n <span>{props.title}</span>\n </div>\n }\n >\n <div data-slot=\"empty-state\" data-size=\"page\" role=\"status\" class={cn(EMPTY_STATE_CLASSES.page, props.class)}>\n <Show when={props.icon}>{(icon) => <IconDisc icon={icon()} />}</Show>\n <h2 class={EMPTY_STATE_CLASSES.pageTitle}>{props.title}</h2>\n <Show when={props.description}>\n <p class={EMPTY_STATE_CLASSES.pageDescription}>{props.description}</p>\n </Show>\n <Show when={actions()}>\n <div class={EMPTY_STATE_CLASSES.pageActions}>{actions()}</div>\n </Show>\n </div>\n </Show>\n )\n}\n\nexport function ListEmpty(props: Omit<ComponentProps<`p`>, `title`>) {\n const [local, rest] = splitProps(props, [`class`, `children`])\n return (\n <p data-slot=\"list-empty\" role=\"status\" class={cn(EMPTY_STATE_CLASSES.listEmpty, local.class)} {...rest}>\n {local.children}\n </p>\n )\n}\n\nexport function EmptyCta(props: Omit<ComponentProps<`button`>, `children` | `title`> & { icon: IconComponent; title: string; description: string }) {\n const [local, rest] = splitProps(props, [`icon`, `title`, `description`, `class`, `type`])\n return (\n <button type={local.type ?? `button`} data-slot=\"empty-cta\" class={cn(EMPTY_STATE_CLASSES.cta, local.class)} {...rest}>\n <span class={EMPTY_STATE_CLASSES.ctaTitle}>\n <PaintIcon icon={local.icon} class={EMPTY_STATE_CLASSES.ctaIcon} />\n {local.title}\n </span>\n <span class={EMPTY_STATE_CLASSES.ctaDescription}>{local.description}</span>\n </button>\n )\n}\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { GLASS_CARD_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { GLASS_CARD_CLASS, GLASS_CARD_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nexport function GlassCard(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"glass-card\" class={cn(GLASS_CARD_CLASSES.root, local.class)} {...rest} />\n}\n","import { Show, createContext, createEffect, createSignal, onCleanup, onMount, splitProps, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { HOVER_CARD_CLASSES, HOVER_CARD_DELAYS } from \"@exponential-at/ui/web/primitives\"\n\nimport { LayerContext, Popper, createLayer, createPresence, popperContentStyle, type Align, type OutsideEvent, type Side } from \"../behaviors\"\nimport { DialogPortalPart, layerMountedThisTask, layerPointerEvents, noteLayerMount, callRef, composeHandlers, createOpenState, mergeRefs, styleObject, type AsProps } from \"../behaviors/dialog\"\nimport { bindStyle } from \"../behaviors/style-writer\"\nimport { cn } from \"./cn\"\n\n// Radix HoverCard on plain elements: the trigger (`<a>`) opens after\n// `openDelay` on a mouse-like pointer or on focus, closes `closeDelay` after\n// the pointer leaves both; the portalled content in the popper wrapper, its\n// tabbables out of the tab order, a text selection inside keeps it open.\n\ninterface HoverCardContextValue {\n open: Accessor<boolean>\n setOpen: (open: boolean) => void\n onOpen: () => void\n onClose: () => void\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n flags: { hasSelection: boolean; pointerDownOnContent: boolean }\n}\nconst HoverCardContext = createContext<HoverCardContextValue>()\nconst useHoverCard = (part: string) => {\n const ctx = useContext(HoverCardContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`HoverCard\\``)\n return ctx\n}\n\nexport interface HoverCardProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n openDelay?: number\n closeDelay?: number\n children?: JSX.Element\n}\n\nconst excludeTouch = (fn: () => void) => (e: PointerEvent) => (e.pointerType === `touch` ? undefined : fn())\n\nfunction HoverCard(props: HoverCardProps) {\n const [open, setOpen] = createOpenState({ open: () => props.open, defaultOpen: props.defaultOpen, onOpenChange: () => props.onOpenChange })\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const flags = { hasSelection: false, pointerDownOnContent: false }\n let openTimer: ReturnType<typeof setTimeout> | undefined\n let closeTimer: ReturnType<typeof setTimeout> | undefined\n onCleanup(() => {\n clearTimeout(openTimer)\n clearTimeout(closeTimer)\n })\n const value: HoverCardContextValue = {\n open,\n setOpen,\n onOpen: () => {\n clearTimeout(closeTimer)\n openTimer = setTimeout(() => setOpen(true), props.openDelay ?? HOVER_CARD_DELAYS.openDelay)\n },\n onClose: () => {\n clearTimeout(openTimer)\n if (!flags.hasSelection && !flags.pointerDownOnContent) closeTimer = setTimeout(() => setOpen(false), props.closeDelay ?? HOVER_CARD_DELAYS.closeDelay)\n },\n trigger,\n setTrigger,\n flags,\n }\n return <HoverCardContext.Provider value={value}>{props.children}</HoverCardContext.Provider>\n}\n\nfunction HoverCardTrigger(props: AsProps) {\n const ctx = useHoverCard(`HoverCardTrigger`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `onPointerEnter`, `onPointerLeave`, `onFocus`, `onBlur`, `onTouchStart`])\n return (\n <Dynamic\n component={local.as ?? `a`}\n data-slot=\"hover-card-trigger\"\n data-state={ctx.open() ? `open` : `closed`}\n {...rest}\n ref={mergeRefs(local.ref, ctx.setTrigger)}\n onPointerEnter={composeHandlers(local.onPointerEnter, excludeTouch(ctx.onOpen))}\n onPointerLeave={composeHandlers(local.onPointerLeave, excludeTouch(ctx.onClose))}\n onFocus={composeHandlers(local.onFocus, ctx.onOpen)}\n onBlur={composeHandlers(local.onBlur, ctx.onClose)}\n onTouchStart={composeHandlers(local.onTouchStart, (e: TouchEvent) => e.preventDefault())}\n />\n )\n}\n\nexport type HoverCardContentProps = Omit<ComponentProps<`div`>, `style`> & {\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n collisionPadding?: number\n container?: HTMLElement | null\n style?: JSX.CSSProperties\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n}\n\nfunction HoverCardContent(props: HoverCardContentProps) {\n const ctx = useHoverCard(`HoverCardContent`)\n const [local, rest] = splitProps(props, [`class`, `side`, `align`, `sideOffset`, `alignOffset`, `collisionPadding`, `container`, `style`, `ref`, `children`, `onPointerEnter`, `onPointerLeave`, `onPointerDown`, `onEscapeKeyDown`, `onPointerDownOutside`, `onFocusOutside`, `onInteractOutside`])\n const presence = createPresence(ctx.open)\n const Content = () => {\n const layer = createLayer({\n onEscapeKeyDown: (e) => local.onEscapeKeyDown?.(e),\n onPointerDownOutside: (e) => local.onPointerDownOutside?.(e),\n onFocusOutside: (e) => {\n local.onFocusOutside?.(e)\n if (!e.defaultPrevented) e.preventDefault()\n },\n onInteractOutside: (e) => local.onInteractOutside?.(e),\n onDismiss: () => ctx.setOpen(false),\n })\n const [registered, setRegistered] = createSignal(false)\n const lag = layerMountedThisTask()\n const [containSelection, setContainSelection] = createSignal(false)\n createEffect(() => {\n if (!containSelection()) return\n const body = document.body\n const original = body.style.userSelect || body.style.webkitUserSelect\n body.style.userSelect = `none`\n body.style.webkitUserSelect = `none`\n onCleanup(() => {\n body.style.userSelect = original\n body.style.webkitUserSelect = original\n })\n })\n return (\n <Popper anchor={ctx.trigger()} side={local.side ?? `bottom`} align={local.align ?? `start`} sideOffset={local.sideOffset ?? 6} alignOffset={local.alignOffset} collisionPadding={local.collisionPadding ?? 0}>\n {(popper) => {\n const el = (\n <div\n data-side={popper.placedSide()}\n data-align={popper.placedAlign()}\n data-state={ctx.open() ? `open` : `closed`}\n data-slot=\"hover-card-content\"\n class={cn(HOVER_CARD_CLASSES.content, local.class)}\n {...rest}\n onPointerEnter={composeHandlers(local.onPointerEnter, excludeTouch(ctx.onOpen))}\n onPointerLeave={composeHandlers(local.onPointerLeave, excludeTouch(ctx.onClose))}\n onPointerDown={composeHandlers(local.onPointerDown, (e: PointerEvent) => {\n if ((e.currentTarget as HTMLElement).contains(e.target as Node)) setContainSelection(true)\n ctx.flags.hasSelection = false\n ctx.flags.pointerDownOnContent = true\n })}\n >\n <LayerContext.Provider value={layer.layer}>{local.children}</LayerContext.Provider>\n </div>\n ) as HTMLDivElement\n presence.ref(el)\n popper.setContent(el)\n bindStyle(el, () => {\n const sel = containSelection() ? `text` : undefined\n return popperContentStyle(`hover-card`, `trigger`, layerPointerEvents(layer, registered(), lag), popper.isPositioned(), { ...styleObject(local.style), \"user-select\": sel, \"-webkit-user-select\": sel })\n })\n callRef(local.ref, el)\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n noteLayerMount()\n const onPointerUp = () => {\n setContainSelection(false)\n ctx.flags.pointerDownOnContent = false\n setTimeout(() => {\n if (document.getSelection()?.toString() !== ``) ctx.flags.hasSelection = true\n })\n }\n document.addEventListener(`pointerup`, onPointerUp)\n onCleanup(() => {\n document.removeEventListener(`pointerup`, onPointerUp)\n ctx.flags.hasSelection = false\n ctx.flags.pointerDownOnContent = false\n })\n // The card is not in the tab order (Radix, after every render).\n const untab = () => {\n const walker = document.createTreeWalker(el, NodeFilter.SHOW_ELEMENT, { acceptNode: (n) => ((n as HTMLElement).tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP) })\n const nodes: HTMLElement[] = []\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement)\n for (const n of nodes) n.setAttribute(`tabindex`, `-1`)\n }\n untab()\n const observer = new MutationObserver(untab)\n observer.observe(el, { childList: true, subtree: true })\n onCleanup(() => observer.disconnect())\n })\n return el\n }}\n </Popper>\n )\n }\n return (\n <DialogPortalPart container={local.container}>\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n </DialogPortalPart>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { INPUT_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { BARE_FIELD_CLASS, FIELD_CHROME_CLASS } from \"@exponential-at/ui/web/primitives\"\n\n/** React reflects a controlled `value` as the attribute too (shared.tsx\n * rule 2): `attr:value` mirrors it. */\nfunction Input(props: ComponentProps<`input`>) {\n const [local, rest] = splitProps(props, [`class`])\n const valueAttr = () => (props.value === undefined || props.value === null ? undefined : String(props.value))\n return <input data-slot=\"input\" class={cn(INPUT_CLASSES.root, local.class)} attr:value={valueAttr()} {...rest} />\n}\n\nexport { Input }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { KBD_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Kbd(props: ComponentProps<`kbd`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <kbd data-slot=\"kbd\" class={cn(KBD_CLASSES.root, local.class)} {...rest} />\n}\n\nfunction KbdGroup(props: ComponentProps<`span`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <span data-slot=\"kbd-group\" class={cn(KBD_CLASSES.group, local.class)} {...rest} />\n}\n\nexport { Kbd, KbdGroup }\n","import { splitProps, type ComponentProps, type JSX } from \"solid-js\"\nimport { LABEL_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\n// Radix's Label as plain DOM: a `<label>` that keeps a double-click from\n// selecting its text, unless the press lands on a control inside it.\nfunction Label(props: ComponentProps<`label`>) {\n const [local, rest] = splitProps(props, [`class`, `onMouseDown`])\n const onMouseDown: JSX.EventHandler<HTMLLabelElement, MouseEvent> = (event) => {\n if ((event.target as Element).closest(`button, input, select, textarea`)) return\n const handler = local.onMouseDown\n if (typeof handler === `function`) handler(event)\n else if (Array.isArray(handler)) handler[0](handler[1], event)\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault()\n }\n return <label data-slot=\"label\" class={cn(LABEL_CLASSES.root, local.class)} {...rest} onMouseDown={onMouseDown} />\n}\n\nexport { Label }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { PROGRESS_CLASSES, progressIndicatorTransform } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport type ProgressProps = ComponentProps<`div`> & {\n /** 0..max; `null`/`undefined` = indeterminate. */\n value?: number | null\n max?: number\n getValueLabel?: (value: number, max: number) => string\n}\n\nconst isNumber = (v: unknown): v is number => typeof v === `number`\nconst validMax = (max: unknown): max is number => isNumber(max) && !Number.isNaN(max) && max > 0\nconst validValue = (value: unknown, max: number): value is number => isNumber(value) && !Number.isNaN(value) && value <= max && value >= 0\nconst progressState = (value: number | null, max: number) => (value == null ? `indeterminate` : value === max ? `complete` : `loading`)\n\n// Radix's Progress as plain DOM (the root's aria-value* + role, the\n// `data-state`/`data-value`/`data-max` on root and indicator), dressed as\n// shadcn's.\nfunction Progress(props: ProgressProps) {\n const [local, rest] = splitProps(props, [`class`, `value`, `max`, `getValueLabel`])\n const max = () => (validMax(local.max) ? local.max : 100)\n const value = () => (validValue(local.value, max()) ? (local.value as number) : null)\n const label = () => {\n const v = value()\n return v === null ? undefined : (local.getValueLabel ?? ((n: number, m: number) => `${Math.round((n / m) * 100)}%`))(v, max())\n }\n const indeterminate = () => local.value === null || local.value === undefined\n return (\n <div\n aria-valuemax={max()}\n aria-valuemin={0}\n aria-valuenow={value() ?? undefined}\n aria-valuetext={label()}\n role=\"progressbar\"\n data-state={progressState(value(), max())}\n data-value={value() ?? undefined}\n data-max={max()}\n data-slot=\"progress\"\n class={cn(PROGRESS_CLASSES.root, local.class)}\n {...rest}\n >\n <div\n data-state={progressState(value(), max())}\n data-value={value() ?? undefined}\n data-max={max()}\n data-slot=\"progress-indicator\"\n class={cn(PROGRESS_CLASSES.indicator, indeterminate() ? PROGRESS_CLASSES.indicatorIndeterminate : PROGRESS_CLASSES.indicatorDeterminate)}\n style={indeterminate() ? undefined : { transform: progressIndicatorTransform(local.value) }}\n />\n </div>\n )\n}\n\nexport { Progress }\n","import { splitProps } from \"solid-js\"\nimport { METER_CLASSES, type MeterTone } from \"@exponential-at/ui/web/primitives\"\n\nimport { Progress, type ProgressProps } from \"./progress\"\nimport { cn } from \"./cn\"\n\nexport type { MeterTone } from \"@exponential-at/ui/web/primitives\"\n\nexport function Meter(\n props: Omit<ProgressProps, `value`> & {\n /** 0-100, the caller clamps. `null` = indeterminate. */\n value: number | null\n tone?: MeterTone\n }\n) {\n const [local, rest] = splitProps(props, [`value`, `tone`, `class`])\n const tone = () => local.tone ?? `normal`\n return <Progress data-slot=\"meter\" data-tone={tone()} value={local.value} class={cn(METER_CLASSES.root, METER_CLASSES.tones[tone()], local.class)} {...rest} />\n}\n","import { Show, createContext, createSignal, onMount, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { POPOVER_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { LayerContext, Popper, createFocusScope, createLayer, createPresence, popperContentStyle, useFocusGuards, useModalEffects, type Align, type OutsideEvent, type Side } from \"../behaviors\"\nimport { DialogPortalPart, layerMountedThisTask, layerPointerEvents, noteLayerMount, callHandler, callRef, composeHandlers, createId, createOpenState, mergeRefs, stateOf, styleObject, type AsProps } from \"../behaviors/dialog\"\nimport { bindStyle } from \"../behaviors/style-writer\"\nimport { cn } from \"./cn\"\n\n// Radix Popover on plain elements: the trigger (the popper anchor unless a\n// PopoverAnchor is set), the portalled content in the popper wrapper (the\n// dismissable layer, the focus scope with its Tab loop, the focus guards;\n// modal = trapped + `hideOthers` + the scroll lock).\n\ninterface PopoverContextValue {\n open: Accessor<boolean>\n setOpen: (open: boolean) => void\n modal: boolean\n contentId: string\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n anchor: Accessor<HTMLElement | undefined>\n setAnchor: (el: HTMLElement | undefined) => void\n}\nconst PopoverContext = createContext<PopoverContextValue>()\nconst usePopover = (part: string) => {\n const ctx = useContext(PopoverContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`Popover\\``)\n return ctx\n}\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children?: JSX.Element\n}\n\nfunction Popover(props: PopoverProps) {\n const [open, setOpen] = createOpenState({ open: () => props.open, defaultOpen: props.defaultOpen, onOpenChange: () => props.onOpenChange })\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const [anchor, setAnchor] = createSignal<HTMLElement>()\n const value: PopoverContextValue = { open, setOpen, modal: untrack(() => props.modal) ?? false, contentId: `radix-${createId()}`, trigger, setTrigger, anchor, setAnchor }\n return <PopoverContext.Provider value={value}>{props.children}</PopoverContext.Provider>\n}\n\nfunction PopoverTrigger(props: AsProps) {\n const ctx = usePopover(`PopoverTrigger`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `onClick`])\n return (\n <Dynamic\n component={local.as ?? `button`}\n data-slot=\"popover-trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open() ? `true` : `false`}\n aria-controls={ctx.contentId}\n data-state={stateOf(ctx.open())}\n {...rest}\n ref={mergeRefs(local.ref, ctx.setTrigger)}\n onClick={composeHandlers(local.onClick, () => ctx.setOpen(!untrack(ctx.open)))}\n />\n )\n}\n\nfunction PopoverAnchor(props: ComponentProps<`div`>) {\n const ctx = usePopover(`PopoverAnchor`)\n const [local, rest] = splitProps(props, [`ref`])\n return <div data-slot=\"popover-anchor\" {...rest} ref={mergeRefs(local.ref, ctx.setAnchor)} />\n}\n\nexport type PopoverContentProps = Omit<ComponentProps<`div`>, `style` | `onKeyDown`> & {\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n collisionPadding?: number\n container?: HTMLElement | null\n style?: JSX.CSSProperties\n onKeyDown?: unknown\n onOpenAutoFocus?: (e: Event) => void\n onCloseAutoFocus?: (e: Event) => void\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n}\n\nfunction PopoverContent(props: PopoverContentProps) {\n const ctx = usePopover(`PopoverContent`)\n const [local, rest] = splitProps(props, [`class`, `side`, `align`, `sideOffset`, `alignOffset`, `collisionPadding`, `container`, `style`, `ref`, `children`, `onKeyDown`, `onOpenAutoFocus`, `onCloseAutoFocus`, `onEscapeKeyDown`, `onPointerDownOutside`, `onFocusOutside`, `onInteractOutside`])\n const presence = createPresence(ctx.open)\n const Content = () => {\n const modal = ctx.modal\n let interactedOutside = false\n let pointerDownOutside = false\n let rightClickOutside = false\n const layer = createLayer({\n disableOutsidePointerEvents: () => modal,\n onEscapeKeyDown: (e) => local.onEscapeKeyDown?.(e),\n onPointerDownOutside: (e) => {\n local.onPointerDownOutside?.(e)\n if (!modal) return\n const original = e.detail.originalEvent as PointerEvent\n rightClickOutside = original.button === 2 || (original.button === 0 && original.ctrlKey === true)\n },\n onFocusOutside: (e) => {\n local.onFocusOutside?.(e)\n if (modal) e.preventDefault()\n },\n onInteractOutside: (e) => {\n local.onInteractOutside?.(e)\n if (modal) return\n if (!e.defaultPrevented) {\n interactedOutside = true\n if (e.detail.originalEvent.type === `pointerdown`) pointerDownOutside = true\n }\n const target = e.target as Node | null\n if (target && ctx.trigger()?.contains(target)) e.preventDefault()\n if (e.detail.originalEvent.type === `focusin` && pointerDownOutside) e.preventDefault()\n },\n onDismiss: () => ctx.setOpen(false),\n })\n const scope = createFocusScope({\n trapped: () => modal && ctx.open(),\n loop: true,\n onMountAutoFocus: (e) => local.onOpenAutoFocus?.(e),\n onUnmountAutoFocus: (e) => {\n if (modal) {\n local.onCloseAutoFocus?.(e)\n if (e.defaultPrevented) return\n e.preventDefault()\n if (!rightClickOutside) ctx.trigger()?.focus()\n return\n }\n local.onCloseAutoFocus?.(e)\n if (!e.defaultPrevented) {\n if (!interactedOutside) ctx.trigger()?.focus()\n e.preventDefault()\n }\n interactedOutside = false\n pointerDownOutside = false\n },\n })\n const [registered, setRegistered] = createSignal(false)\n const lag = layerMountedThisTask()\n return (\n <Popper anchor={ctx.anchor() ?? ctx.trigger()} side={local.side ?? `bottom`} align={local.align ?? `center`} sideOffset={local.sideOffset ?? 4} alignOffset={local.alignOffset} collisionPadding={local.collisionPadding ?? 0}>\n {(popper) => {\n const el = (\n <div\n data-side={popper.placedSide()}\n data-align={popper.placedAlign()}\n data-state={stateOf(ctx.open())}\n role=\"dialog\"\n id={ctx.contentId}\n data-slot=\"popover-content\"\n class={cn(POPOVER_CLASSES.content, local.class)}\n tabindex=\"-1\"\n {...rest}\n onKeyDown={(e: KeyboardEvent) => {\n callHandler(local.onKeyDown, e)\n scope.onKeyDown(e)\n }}\n >\n <LayerContext.Provider value={layer.layer}>{local.children}</LayerContext.Provider>\n </div>\n ) as HTMLDivElement\n presence.ref(el)\n popper.setContent(el)\n bindStyle(el, () => popperContentStyle(`popover`, `trigger`, layerPointerEvents(layer, registered(), lag), popper.isPositioned(), styleObject(local.style)))\n callRef(local.ref, el)\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n noteLayerMount()\n scope.attach(el)\n useFocusGuards()\n if (modal) useModalEffects(el, true)\n })\n return el\n }}\n </Popper>\n )\n }\n return (\n <DialogPortalPart container={local.container}>\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n </DialogPortalPart>\n )\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { Show } from \"solid-js\"\nimport { PROGRESS_RING_CLASSES, RING_RADIUS, RING_SIZE, RING_STROKE, progressRingPercent, ringGeometry } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { progressRingPercent } from \"@exponential-at/ui/web/primitives\"\n\nexport function ProgressRing(props: {\n done: number\n total: number\n /** Rendered box in px. */\n size?: number\n /** A `text-*` token class — the builtin completed status. */\n colorClass?: string\n /** A synced hex — a custom completed row. Wins over `colorClass`. */\n colorHex?: string\n class?: string\n}) {\n const geometry = () => ringGeometry(progressRingPercent(props.done, props.total))\n const centre = RING_SIZE / 2\n return (\n <svg\n viewBox={`0 0 ${RING_SIZE} ${RING_SIZE}`}\n width={props.size ?? 14}\n height={props.size ?? 14}\n aria-hidden=\"true\"\n data-slot=\"progress-ring\"\n data-done={props.done}\n data-total={props.total}\n class={cn(PROGRESS_RING_CLASSES.root, props.colorClass, props.class)}\n style={props.colorHex ? { color: props.colorHex } : undefined}\n >\n <circle cx={centre} cy={centre} r={RING_RADIUS} fill=\"none\" stroke=\"currentColor\" stroke-width={RING_STROKE} opacity={0.2} />\n <Show when={props.done > 0}>\n <circle\n data-slot=\"progress-ring-arc\"\n cx={centre}\n cy={centre}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={RING_STROKE}\n stroke-linecap=\"round\"\n stroke-dasharray={String(geometry().circumference)}\n stroke-dashoffset={String(geometry().dashOffset)}\n />\n </Show>\n </svg>\n )\n}\n","import { Show, createContext, createEffect, createSignal, on, onCleanup, onMount, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport {\n SCROLL_AREA_CLASSES,\n SCROLL_AREA_CONTENT_STYLE,\n SCROLL_AREA_SCROLL_INITIAL,\n SCROLL_AREA_SCROLL_MACHINE,\n SCROLL_AREA_THUMB_STYLE,\n SCROLL_AREA_VIEWPORT_CSS,\n scrollAreaCornerStyle,\n scrollAreaRootStyle,\n scrollAreaScrollbarStyle,\n scrollAreaScrollFromPointer,\n scrollAreaThumbOffset,\n scrollAreaThumbRatio,\n scrollAreaThumbSize,\n scrollAreaViewportStyle,\n scrollAreaVisibility,\n type ScrollAreaDir,\n type ScrollAreaOrientation,\n type ScrollAreaScrollState,\n type ScrollAreaSizes,\n} from \"@exponential-at/ui/web/primitives\"\n\nimport { Dynamic } from \"solid-js/web\"\nimport { createPresence } from \"../behaviors\"\nimport { cn } from \"./cn\"\n\n// Radix ScrollArea on plain DOM: the root (`position: relative` + the corner\n// variables), the viewport (Radix's hide-the-native-bar <style>, `overflow`\n// per enabled scrollbar, the `display: table` sizer), the scrollbars by\n// `type` (`hover` default: shown while the pointer is over the root, hidden\n// `scrollHideDelay` ms after it leaves; `scroll`, `auto`, `always`), each\n// sizing its thumb from the viewport/content ratio (min 18px) and moving it\n// with `translate3d` as the viewport scrolls, the corner when both bars show.\n// The timings are Radix's (ResizeObserver → a frame → a 10 ms debounce).\n\ntype Type = `auto` | `always` | `scroll` | `hover`\ntype Dir = ScrollAreaDir\ntype Orientation = ScrollAreaOrientation\ntype Sizes = ScrollAreaSizes\n\ninterface AreaState {\n type: Accessor<Type>\n dir: Accessor<Dir>\n scrollHideDelay: Accessor<number>\n scrollArea: Accessor<HTMLDivElement | undefined>\n viewport: Accessor<HTMLDivElement | undefined>\n setViewport: (el: HTMLDivElement) => void\n content: Accessor<HTMLDivElement | undefined>\n setContent: (el: HTMLDivElement) => void\n scrollbarX: Accessor<HTMLDivElement | undefined>\n setScrollbarX: (el: HTMLDivElement | undefined) => void\n scrollbarY: Accessor<HTMLDivElement | undefined>\n setScrollbarY: (el: HTMLDivElement | undefined) => void\n xEnabled: Accessor<boolean>\n setXEnabled: (v: boolean) => void\n yEnabled: Accessor<boolean>\n setYEnabled: (v: boolean) => void\n setCornerWidth: (v: number) => void\n setCornerHeight: (v: number) => void\n}\nconst AreaContext = createContext<AreaState>()\n\nconst call = (handler: unknown, e: Event) => {\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n}\n\n/** A state update the way React schedules one made outside its own event\n * system (Radix's native listeners and timers): a scheduler task, so a\n * pointerenter that lands right before a frame renders after it. */\nfunction reactTask(fn: () => void) {\n const channel = new MessageChannel()\n channel.port1.onmessage = () => {\n channel.port1.close()\n fn()\n }\n channel.port2.postMessage(null)\n}\n\n/** Radix's `useDebounceCallback`. */\nfunction debounced(fn: () => void, delay: number): () => void {\n let timer = 0\n onCleanup(() => window.clearTimeout(timer))\n return () => {\n window.clearTimeout(timer)\n timer = window.setTimeout(fn, delay)\n }\n}\n\n/** Radix's `useResizeObserver`: a resize → the next frame → `fn`. */\nfunction observeResize(el: Accessor<Element | undefined>, fn: () => void) {\n createEffect(() => {\n const node = el()\n if (!node || typeof ResizeObserver === `undefined`) return\n let raf = 0\n const ro = new ResizeObserver(() => {\n cancelAnimationFrame(raf)\n raf = window.requestAnimationFrame(fn)\n })\n ro.observe(node)\n onCleanup(() => {\n window.cancelAnimationFrame(raf)\n ro.unobserve(node)\n })\n })\n}\n\nconst toInt = (value: string | undefined) => (value ? parseInt(value, 10) : 0)\n\n/** Radix's `addUnlinkedScrollListener`: a frame loop reporting position changes. */\nfunction unlinkedScroll(node: HTMLElement, handler: () => void) {\n let prev = { left: node.scrollLeft, top: node.scrollTop }\n let raf = 0\n const loop = () => {\n const pos = { left: node.scrollLeft, top: node.scrollTop }\n if (prev.left !== pos.left || prev.top !== pos.top) handler()\n prev = pos\n raf = window.requestAnimationFrame(loop)\n }\n loop()\n return () => window.cancelAnimationFrame(raf)\n}\n\nexport type ScrollAreaProps = Omit<ComponentProps<`div`>, `dir` | `style`> & { type?: Type; dir?: Dir; scrollHideDelay?: number; style?: JSX.CSSProperties }\n\nfunction ScrollArea(props: ScrollAreaProps) {\n const [local, rest] = splitProps(props, [`class`, `children`, `type`, `dir`, `scrollHideDelay`, `style`, `ref`])\n const [scrollArea, setScrollArea] = createSignal<HTMLDivElement>()\n const [viewport, setViewport] = createSignal<HTMLDivElement>()\n const [content, setContent] = createSignal<HTMLDivElement>()\n const [scrollbarX, setScrollbarX] = createSignal<HTMLDivElement>()\n const [scrollbarY, setScrollbarY] = createSignal<HTMLDivElement>()\n const [xEnabled, setXEnabled] = createSignal(false)\n const [yEnabled, setYEnabled] = createSignal(false)\n const [cornerWidth, setCornerWidth] = createSignal(0)\n const [cornerHeight, setCornerHeight] = createSignal(0)\n const state: AreaState = {\n type: () => local.type ?? `hover`,\n dir: () => local.dir ?? `ltr`,\n scrollHideDelay: () => local.scrollHideDelay ?? 600,\n scrollArea,\n viewport,\n setViewport,\n content,\n setContent,\n scrollbarX,\n setScrollbarX,\n scrollbarY,\n setScrollbarY,\n xEnabled,\n setXEnabled,\n yEnabled,\n setYEnabled,\n setCornerWidth,\n setCornerHeight,\n }\n return (\n <AreaContext.Provider value={state}>\n <div\n dir={state.dir()}\n data-slot=\"scroll-area\"\n class={cn(SCROLL_AREA_CLASSES.root, local.class)}\n {...rest}\n ref={(el) => {\n setScrollArea(el)\n if (typeof local.ref === `function`) (local.ref as (el: HTMLDivElement) => void)(el)\n }}\n style={{ ...scrollAreaRootStyle(cornerWidth(), cornerHeight()), ...(local.style ?? {}) }}\n >\n <ScrollAreaViewport data-slot=\"scroll-area-viewport\" class={SCROLL_AREA_CLASSES.viewport}>\n {local.children}\n </ScrollAreaViewport>\n <ScrollBar />\n <ScrollAreaCorner />\n </div>\n </AreaContext.Provider>\n )\n}\n\nfunction ScrollAreaViewport(props: Omit<ComponentProps<`div`>, `style`> & { style?: JSX.CSSProperties }) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`children`, `style`])\n return (\n <>\n <style>{SCROLL_AREA_VIEWPORT_CSS}</style>\n <div data-radix-scroll-area-viewport=\"\" {...rest} ref={ctx.setViewport} style={{ ...scrollAreaViewportStyle(ctx.xEnabled(), ctx.yEnabled()), ...(local.style ?? {}) }}>\n <div ref={ctx.setContent} style={{ ...SCROLL_AREA_CONTENT_STYLE }}>\n {local.children}\n </div>\n </div>\n </>\n )\n}\n\ntype ScrollbarProps = Omit<ComponentProps<`div`>, `style`> & { orientation?: Orientation; forceMount?: boolean; style?: JSX.CSSProperties }\n\nfunction ScrollBar(props: ScrollbarProps) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`class`, `orientation`])\n const orientation = () => local.orientation ?? `vertical`\n // Radix's ScrollAreaScrollbar: the orientation's overflow turns on while mounted.\n onMount(() => {\n const horizontal = orientation() === `horizontal`\n if (horizontal) ctx.setXEnabled(true)\n else ctx.setYEnabled(true)\n onCleanup(() => (horizontal ? ctx.setXEnabled(false) : ctx.setYEnabled(false)))\n })\n const impl = () => ({ hover: ScrollbarHover, scroll: ScrollbarScroll, auto: ScrollbarAuto, always: ScrollbarVisible })[ctx.type()]\n return <Dynamic component={impl()} data-slot=\"scroll-area-scrollbar\" orientation={orientation()} class={cn(SCROLL_AREA_CLASSES.scrollbar, SCROLL_AREA_CLASSES.orientations[orientation()], local.class)} {...rest} />\n}\n\ntype InnerProps = ScrollbarProps & { \"data-state\"?: string }\n\nfunction ScrollbarHover(props: InnerProps) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`forceMount`])\n const [visible, setVisible] = createSignal(false)\n createEffect(() => {\n const area = ctx.scrollArea()\n const delay = ctx.scrollHideDelay()\n if (!area) return\n let hideTimer = 0\n const enter = () => {\n window.clearTimeout(hideTimer)\n reactTask(() => setVisible(true))\n }\n const leave = () => {\n hideTimer = window.setTimeout(() => reactTask(() => setVisible(false)), delay)\n }\n area.addEventListener(`pointerenter`, enter)\n area.addEventListener(`pointerleave`, leave)\n onCleanup(() => {\n window.clearTimeout(hideTimer)\n area.removeEventListener(`pointerenter`, enter)\n area.removeEventListener(`pointerleave`, leave)\n })\n })\n const presence = createPresence(() => Boolean(local.forceMount) || visible())\n return (\n <Show when={presence.mounted()}>\n <ScrollbarAuto data-state={scrollAreaVisibility(visible())} {...rest} presenceRef={presence.ref} />\n </Show>\n )\n}\n\nfunction ScrollbarScroll(props: InnerProps) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`forceMount`, `onPointerEnter`, `onPointerLeave`])\n const [state, setState] = createSignal<ScrollAreaScrollState>(SCROLL_AREA_SCROLL_INITIAL)\n const send = (event: string) => setState((s) => SCROLL_AREA_SCROLL_MACHINE[s][event] ?? s)\n const scrollEnd = debounced(() => send(`SCROLL_END`), 100)\n createEffect(() => {\n if (state() !== `idle`) return\n const timer = window.setTimeout(() => send(`HIDE`), ctx.scrollHideDelay())\n onCleanup(() => window.clearTimeout(timer))\n })\n createEffect(() => {\n const viewport = ctx.viewport()\n if (!viewport) return\n const key = props.orientation === `horizontal` ? `scrollLeft` : `scrollTop`\n let prev = viewport[key]\n const onScroll = () => {\n const pos = viewport[key]\n if (prev !== pos) {\n send(`SCROLL`)\n scrollEnd()\n }\n prev = pos\n }\n viewport.addEventListener(`scroll`, onScroll)\n onCleanup(() => viewport.removeEventListener(`scroll`, onScroll))\n })\n const presence = createPresence(() => Boolean(local.forceMount) || state() !== SCROLL_AREA_SCROLL_INITIAL)\n return (\n <Show when={presence.mounted()}>\n <ScrollbarVisible\n data-state={scrollAreaVisibility(state() !== SCROLL_AREA_SCROLL_INITIAL)}\n {...rest}\n presenceRef={presence.ref}\n onPointerEnter={(e) => {\n call(local.onPointerEnter, e)\n if (!e.defaultPrevented) send(`POINTER_ENTER`)\n }}\n onPointerLeave={(e) => {\n call(local.onPointerLeave, e)\n if (!e.defaultPrevented) send(`POINTER_LEAVE`)\n }}\n />\n </Show>\n )\n}\n\nfunction ScrollbarAuto(props: InnerProps & { presenceRef?: (el: HTMLElement) => void }) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`forceMount`, `presenceRef`])\n const [visible, setVisible] = createSignal(false)\n const resize = debounced(() => {\n const viewport = ctx.viewport()\n if (!viewport) return\n const overflowX = viewport.offsetWidth < viewport.scrollWidth\n const overflowY = viewport.offsetHeight < viewport.scrollHeight\n const next = props.orientation === `horizontal` ? overflowX : overflowY\n reactTask(() => setVisible(next))\n }, 10)\n observeResize(ctx.viewport, resize)\n observeResize(ctx.content, resize)\n const presence = createPresence(() => Boolean(local.forceMount) || visible())\n return (\n <Show when={presence.mounted()}>\n <ScrollbarVisible\n data-state={scrollAreaVisibility(visible())}\n {...rest}\n presenceRef={(el) => {\n presence.ref(el)\n local.presenceRef?.(el)\n }}\n />\n </Show>\n )\n}\n\ninterface BarState {\n hasThumb: Accessor<boolean>\n setThumb: (el: HTMLDivElement | undefined) => void\n onThumbPositionChange: () => void\n onThumbPointerDown: (pos: { x: number; y: number }) => void\n onThumbPointerUp: () => void\n}\nconst BarContext = createContext<BarState>()\n\nfunction ScrollbarVisible(props: InnerProps & { presenceRef?: (el: HTMLElement) => void }) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`orientation`, `forceMount`, `presenceRef`, `style`, `onPointerDown`, `onPointerMove`, `onPointerUp`])\n const horizontal = () => local.orientation === `horizontal`\n const [sizes, setSizes] = createSignal<Sizes>({ content: 0, viewport: 0, scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 } })\n const [scrollbar, setScrollbar] = createSignal<HTMLDivElement>()\n const [computed, setComputed] = createSignal<CSSStyleDeclaration>()\n let thumb: HTMLDivElement | undefined\n let pointerOffset = 0\n let rect: DOMRect | null = null\n let prevUserSelect = ``\n const ratio = () => scrollAreaThumbRatio(sizes().viewport, sizes().content)\n const positionThumb = () => {\n const viewport = ctx.viewport()\n if (!viewport || !thumb) return\n if (horizontal()) thumb.style.transform = `translate3d(${scrollAreaThumbOffset(viewport.scrollLeft, sizes(), ctx.dir())}px, 0, 0)`\n else thumb.style.transform = `translate3d(0, ${scrollAreaThumbOffset(viewport.scrollTop, sizes())}px, 0)`\n }\n const bar: BarState = {\n hasThumb: () => ratio() > 0 && ratio() < 1,\n setThumb: (el) => (thumb = el),\n onThumbPositionChange: positionThumb,\n onThumbPointerDown: (pos) => (pointerOffset = horizontal() ? pos.x : pos.y),\n onThumbPointerUp: () => (pointerOffset = 0),\n }\n const dragScroll = (pos: { x: number; y: number }) => {\n const viewport = ctx.viewport()\n if (!viewport) return\n if (horizontal()) viewport.scrollLeft = scrollAreaScrollFromPointer(pos.x, pointerOffset, sizes(), ctx.dir())\n else viewport.scrollTop = scrollAreaScrollFromPointer(pos.y, pointerOffset, sizes())\n }\n const onResize = () => {\n const el = scrollbar()\n const viewport = ctx.viewport()\n const cs = untrack(computed)\n if (!el || !viewport || !cs) return\n setSizes(\n horizontal()\n ? { content: viewport.scrollWidth, viewport: viewport.offsetWidth, scrollbar: { size: el.clientWidth, paddingStart: toInt(cs.paddingLeft), paddingEnd: toInt(cs.paddingRight) } }\n : { content: viewport.scrollHeight, viewport: viewport.offsetHeight, scrollbar: { size: el.clientHeight, paddingStart: toInt(cs.paddingTop), paddingEnd: toInt(cs.paddingBottom) } }\n )\n }\n const resize = debounced(onResize, 10)\n observeResize(scrollbar, resize)\n observeResize(ctx.content, resize)\n onMount(() => {\n const el = scrollbar()\n if (el) setComputed(getComputedStyle(el))\n })\n createEffect(on(sizes, () => positionThumb()))\n createEffect(() => {\n const el = scrollbar()\n const max = sizes().content - sizes().viewport\n const onWheel = (e: WheelEvent) => {\n if (!el?.contains(e.target as Node)) return\n const viewport = ctx.viewport()\n if (!viewport) return\n const pos = horizontal() ? viewport.scrollLeft + e.deltaX : viewport.scrollTop + e.deltaY\n if (horizontal()) viewport.scrollLeft = pos\n else viewport.scrollTop = pos\n if (pos > 0 && pos < max) e.preventDefault()\n }\n document.addEventListener(`wheel`, onWheel, { passive: false })\n onCleanup(() => document.removeEventListener(`wheel`, onWheel))\n })\n const style = (): JSX.CSSProperties => ({ ...scrollAreaScrollbarStyle(local.orientation ?? `vertical`, ctx.dir(), scrollAreaThumbSize(sizes())), ...(local.style ?? {}) })\n const handleDrag = (e: PointerEvent) => {\n if (rect) dragScroll({ x: e.clientX - rect.left, y: e.clientY - rect.top })\n }\n return (\n <BarContext.Provider value={bar}>\n <div\n data-orientation={local.orientation ?? `vertical`}\n {...rest}\n ref={(el) => {\n setScrollbar(el)\n if (horizontal()) ctx.setScrollbarX(el)\n else ctx.setScrollbarY(el)\n onCleanup(() => (horizontal() ? ctx.setScrollbarX(undefined) : ctx.setScrollbarY(undefined)))\n local.presenceRef?.(el)\n }}\n style={style()}\n onPointerDown={(e) => {\n call(local.onPointerDown, e)\n if (e.defaultPrevented || e.button !== 0) return\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n rect = scrollbar()!.getBoundingClientRect()\n prevUserSelect = document.body.style.webkitUserSelect\n document.body.style.webkitUserSelect = `none`\n const viewport = ctx.viewport()\n if (viewport) viewport.style.scrollBehavior = `auto`\n handleDrag(e)\n }}\n onPointerMove={(e) => {\n call(local.onPointerMove, e)\n if (!e.defaultPrevented) handleDrag(e)\n }}\n onPointerUp={(e) => {\n call(local.onPointerUp, e)\n if (e.defaultPrevented) return\n const target = e.target as HTMLElement\n if (target.hasPointerCapture(e.pointerId)) target.releasePointerCapture(e.pointerId)\n document.body.style.webkitUserSelect = prevUserSelect\n const viewport = ctx.viewport()\n if (viewport) viewport.style.scrollBehavior = ``\n rect = null\n }}\n >\n <ScrollAreaThumb data-slot=\"scroll-area-thumb\" class={SCROLL_AREA_CLASSES.thumb} />\n </div>\n </BarContext.Provider>\n )\n}\n\nfunction ScrollAreaThumb(props: Omit<ComponentProps<`div`>, `style`> & { forceMount?: boolean; style?: JSX.CSSProperties }) {\n const ctx = useContext(AreaContext)!\n const bar = useContext(BarContext)!\n const [local, rest] = splitProps(props, [`forceMount`, `style`, `onPointerUp`])\n const presence = createPresence(() => Boolean(local.forceMount) || bar.hasThumb())\n return (\n <Show when={presence.mounted()}>\n {(() => {\n let removeUnlinked: (() => void) | undefined\n const scrollEnd = debounced(() => {\n removeUnlinked?.()\n removeUnlinked = undefined\n }, 100)\n onCleanup(() => {\n bar.setThumb(undefined)\n removeUnlinked?.()\n })\n onMount(() => {\n const viewport = ctx.viewport()\n if (!viewport) return\n const onScroll = () => {\n scrollEnd()\n if (!removeUnlinked) {\n removeUnlinked = unlinkedScroll(viewport, bar.onThumbPositionChange)\n bar.onThumbPositionChange()\n }\n }\n bar.onThumbPositionChange()\n viewport.addEventListener(`scroll`, onScroll)\n onCleanup(() => viewport.removeEventListener(`scroll`, onScroll))\n })\n return (\n <div\n data-state={scrollAreaVisibility(bar.hasThumb())}\n {...rest}\n ref={(el) => {\n bar.setThumb(el)\n presence.ref(el)\n el.addEventListener(\n `pointerdown`,\n (e) => {\n if (e.defaultPrevented) return\n const r = (e.target as HTMLElement).getBoundingClientRect()\n bar.onThumbPointerDown({ x: e.clientX - r.left, y: e.clientY - r.top })\n },\n { capture: true }\n )\n }}\n style={{ ...SCROLL_AREA_THUMB_STYLE, ...(local.style ?? {}) }}\n onPointerUp={(e) => {\n call(local.onPointerUp, e)\n if (!e.defaultPrevented) bar.onThumbPointerUp()\n }}\n />\n )\n })()}\n </Show>\n )\n}\n\nfunction ScrollAreaCorner(props: Omit<ComponentProps<`div`>, `style`> & { style?: JSX.CSSProperties }) {\n const ctx = useContext(AreaContext)!\n const hasCorner = () => ctx.type() !== `scroll` && Boolean(ctx.scrollbarX() && ctx.scrollbarY())\n return (\n <Show when={hasCorner()}>\n <CornerImpl {...props} />\n </Show>\n )\n}\n\nfunction CornerImpl(props: Omit<ComponentProps<`div`>, `style`> & { style?: JSX.CSSProperties }) {\n const ctx = useContext(AreaContext)!\n const [local, rest] = splitProps(props, [`style`])\n const [width, setWidth] = createSignal(0)\n const [height, setHeight] = createSignal(0)\n observeResize(ctx.scrollbarX, () => {\n const h = ctx.scrollbarX()?.offsetHeight || 0\n ctx.setCornerHeight(h)\n setHeight(h)\n })\n observeResize(ctx.scrollbarY, () => {\n const w = ctx.scrollbarY()?.offsetWidth || 0\n ctx.setCornerWidth(w)\n setWidth(w)\n })\n const style = (): JSX.CSSProperties => ({ ...scrollAreaCornerStyle(width(), height(), ctx.dir()), ...(local.style ?? {}) })\n return (\n <Show when={width() && height()}>\n <div {...rest} style={style()} />\n </Show>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","import { Show, createContext, createSignal, createUniqueId, onCleanup, onMount, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { TABS_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { createPresence, rovingFocusFirst, focusIntent, wrapArray } from \"../behaviors\"\nimport { cn } from \"./cn\"\n\nexport { SEGMENTED_ITEM, SEGMENTED_LIST, SEGMENTED_ROW, SEGMENTED_ROW_COMPACT, SEGMENTED_TAB } from \"@exponential-at/ui/web/primitives\"\n\n// Radix Tabs on plain DOM: the root (`dir`, `data-orientation`), the list =\n// a RovingFocusGroup (its own tab stop until a trigger holds it, entry focus\n// to the active trigger, arrows/Home/End by orientation and `dir`, `loop`),\n// the triggers (`role=\"tab\"`, ids `<base>-trigger-<value>` /\n// `<base>-content-<value>`, mouse down / Space / Enter / focus select), the\n// panels (`hidden` + no children while inactive; the panel active at mount\n// keeps `animation-duration: 0s` until the first render after its frame).\n\ntype Orientation = `horizontal` | `vertical`\ntype Dir = `ltr` | `rtl`\n\ninterface TabsState {\n baseId: string\n value: Accessor<string>\n setValue: (v: string) => void\n orientation: Accessor<Orientation>\n dir: Accessor<Dir>\n activationMode: Accessor<`automatic` | `manual`>\n}\nconst TabsContext = createContext<TabsState>()\n\ninterface RovingItem {\n el: HTMLElement\n focusable: Accessor<boolean>\n active: Accessor<boolean>\n}\ninterface RovingState {\n orientation: Accessor<Orientation>\n dir: Accessor<Dir>\n loop: Accessor<boolean>\n stop: Accessor<HTMLElement | null>\n setStop: (el: HTMLElement | null) => void\n shiftTab: () => void\n register: (item: RovingItem) => void\n items: () => RovingItem[]\n}\nconst RovingContext = createContext<RovingState>()\n\ntype HandlerProp = unknown\nconst call = (handler: HandlerProp, e: Event) => {\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n}\n\nexport type TabsProps = Omit<ComponentProps<`div`>, `dir`> & {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n dir?: Dir\n activationMode?: `automatic` | `manual`\n}\n\nfunction Tabs(props: TabsProps) {\n const [local, rest] = splitProps(props, [`class`, `value`, `defaultValue`, `onValueChange`, `orientation`, `dir`, `activationMode`])\n const [inner, setInner] = createSignal(untrack(() => local.defaultValue) ?? ``)\n const controlled = () => local.value !== undefined\n const value = () => (controlled() ? (local.value as string) : inner())\n const setValue = (next: string) => {\n const prev = untrack(value)\n if (!untrack(controlled)) setInner(next)\n if (next !== prev) local.onValueChange?.(next)\n }\n const state: TabsState = {\n baseId: createUniqueId(),\n value,\n setValue,\n orientation: () => local.orientation ?? `horizontal`,\n dir: () => local.dir ?? `ltr`,\n activationMode: () => local.activationMode ?? `automatic`,\n }\n return (\n <TabsContext.Provider value={state}>\n <div dir={state.dir()} data-orientation={state.orientation()} data-slot=\"tabs\" class={cn(TABS_CLASSES.root, local.class)} {...rest} />\n </TabsContext.Provider>\n )\n}\n\nexport type TabsListProps = ComponentProps<`div`> & { loop?: boolean }\n\nfunction TabsList(props: TabsListProps) {\n const ctx = useContext(TabsContext)!\n const [local, rest] = splitProps(props, [`class`, `loop`, `style`, `onMouseDown`])\n const [stop, setStop] = createSignal<HTMLElement | null>(null)\n const [tabbingBackOut, setTabbingBackOut] = createSignal(false)\n const [registered, setRegistered] = createSignal<RovingItem[]>([])\n let clickFocus = false\n const items = () => {\n const all = registered().filter((i) => i.el.isConnected)\n return all.sort((a, b) => (a.el.compareDocumentPosition(b.el) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1))\n }\n const roving: RovingState = {\n orientation: ctx.orientation,\n dir: ctx.dir,\n loop: () => local.loop ?? true,\n stop,\n setStop,\n shiftTab: () => setTabbingBackOut(true),\n register: (item) => {\n setRegistered((list) => [...list, item])\n onCleanup(() => setRegistered((list) => list.filter((i) => i !== item)))\n },\n items,\n }\n const focusableCount = () => registered().filter((i) => i.focusable()).length\n return (\n <RovingContext.Provider value={roving}>\n <div\n role=\"tablist\"\n aria-orientation={ctx.orientation()}\n tabindex={tabbingBackOut() || focusableCount() === 0 ? -1 : 0}\n data-orientation={ctx.orientation()}\n data-slot=\"tabs-list\"\n class={cn(TABS_CLASSES.list, local.class)}\n {...rest}\n style={{ outline: `none`, ...((local.style as JSX.CSSProperties | undefined) ?? {}) }}\n onMouseDown={(e) => {\n call(local.onMouseDown, e)\n if (!e.defaultPrevented) clickFocus = true\n }}\n // React's onFocus/onBlur bubble: Radix's group handlers see the\n // triggers' focus moves too.\n onFocusIn={(e) => {\n const keyboard = !clickFocus\n if (e.target === e.currentTarget && keyboard && !untrack(tabbingBackOut)) {\n const candidates = items().filter((i) => i.focusable())\n const active = candidates.find((i) => i.active())\n const current = candidates.find((i) => i.el === untrack(stop))\n rovingFocusFirst([active, current, ...candidates].filter((i): i is RovingItem => Boolean(i)).map((i) => i.el))\n }\n clickFocus = false\n }}\n onFocusOut={() => setTabbingBackOut(false)}\n />\n </RovingContext.Provider>\n )\n}\n\nexport type TabsTriggerProps = Omit<ComponentProps<`button`>, `value`> & { value: string; disabled?: boolean }\n\nfunction TabsTrigger(props: TabsTriggerProps) {\n const ctx = useContext(TabsContext)!\n const roving = useContext(RovingContext)!\n const [local, rest] = splitProps(props, [`class`, `value`, `disabled`, `onMouseDown`, `onKeyDown`, `onFocus`, `ref`])\n const disabled = () => local.disabled ?? false\n const selected = () => local.value === ctx.value()\n let el!: HTMLButtonElement\n onMount(() => roving.register({ el, focusable: () => !disabled(), active: selected }))\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={selected()}\n aria-controls={`${ctx.baseId}-content-${local.value}`}\n data-state={selected() ? `active` : `inactive`}\n data-disabled={disabled() ? `` : undefined}\n disabled={disabled()}\n id={`${ctx.baseId}-trigger-${local.value}`}\n data-slot=\"tabs-trigger\"\n class={cn(TABS_CLASSES.trigger, local.class)}\n {...rest}\n tabindex={roving.stop() !== null && roving.stop() === el ? 0 : -1}\n data-orientation={roving.orientation()}\n data-radix-collection-item=\"\"\n ref={(node) => {\n el = node\n if (typeof local.ref === `function`) (local.ref as (el: HTMLButtonElement) => void)(node)\n }}\n onMouseDown={(e) => {\n call(local.onMouseDown, e)\n if (e.defaultPrevented) return\n if (!disabled() && e.button === 0 && e.ctrlKey === false) ctx.setValue(local.value)\n else e.preventDefault()\n if (e.defaultPrevented) return\n roving.setStop(el)\n }}\n onKeyDown={(e) => {\n call(local.onKeyDown, e)\n if (!e.defaultPrevented && [` `, `Enter`].includes(e.key)) ctx.setValue(local.value)\n if (e.defaultPrevented) return\n if (e.key === `Tab` && e.shiftKey) {\n roving.shiftTab()\n return\n }\n if (e.target !== e.currentTarget) return\n const intent = focusIntent(e, roving.orientation(), roving.dir())\n if (intent === undefined) return\n if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return\n e.preventDefault()\n let candidates = roving.items().filter((i) => i.focusable()).map((i) => i.el)\n if (intent === `last`) candidates.reverse()\n else if (intent === `prev` || intent === `next`) {\n if (intent === `prev`) candidates.reverse()\n const at = candidates.indexOf(e.currentTarget as HTMLElement)\n candidates = roving.loop() ? wrapArray(candidates, at + 1) : candidates.slice(at + 1)\n }\n setTimeout(() => rovingFocusFirst(candidates))\n }}\n onFocus={(e) => {\n call(local.onFocus, e)\n if (!e.defaultPrevented && !selected() && !disabled() && ctx.activationMode() !== `manual`) ctx.setValue(local.value)\n if (!e.defaultPrevented) roving.setStop(el)\n }}\n />\n )\n}\n\nexport type TabsContentProps = Omit<ComponentProps<`div`>, `style`> & { value: string; forceMount?: boolean; style?: JSX.CSSProperties }\n\nfunction TabsContent(props: TabsContentProps) {\n const ctx = useContext(TabsContext)!\n const [local, rest] = splitProps(props, [`class`, `value`, `forceMount`, `children`, `style`])\n const selected = () => local.value === ctx.value()\n const presence = createPresence(() => Boolean(local.forceMount) || selected())\n // Radix reads its mount-animation flag at render time: the panel selected\n // at mount keeps `0s` until the first render after its frame (a value change).\n let mountPrevented = untrack(selected)\n onMount(() => {\n const raf = requestAnimationFrame(() => (mountPrevented = false))\n onCleanup(() => cancelAnimationFrame(raf))\n })\n const style = (): JSX.CSSProperties | undefined => {\n ctx.value()\n const own = local.style\n if (mountPrevented) return { ...(own ?? {}), \"animation-duration\": `0s` }\n return own\n }\n return (\n <div\n data-state={selected() ? `active` : `inactive`}\n data-orientation={ctx.orientation()}\n role=\"tabpanel\"\n aria-labelledby={`${ctx.baseId}-trigger-${local.value}`}\n hidden={!presence.mounted()}\n id={`${ctx.baseId}-content-${local.value}`}\n tabindex={0}\n data-slot=\"tabs-content\"\n class={cn(TABS_CLASSES.content, local.class)}\n {...rest}\n ref={presence.ref}\n style={style()}\n >\n <Show when={presence.mounted()}>{local.children}</Show>\n </div>\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import { For, Show, type JSX } from \"solid-js\"\nimport { SEGMENTED_CONTROL_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport type { IconComponent } from \"../host\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\nimport { Tabs, TabsList, TabsTrigger } from \"./tabs\"\n\n// The segmented capsule from an option array (React's segmented-control.tsx).\n// React's `embedded` arm (the strip as a glass group's first row) paints the\n// app's `GlassTabsRow`, which this package does not carry: the Solid twin\n// draws the floating capsule only.\n\ninterface SegmentedOption<TValue extends string> {\n value: TValue\n label: JSX.Element\n /** A leading glyph (a lucide-solid component), painted as lucide-react paints it. */\n icon?: IconComponent\n disabled?: boolean\n}\n\ninterface SegmentedControlProps<TValue extends string> {\n value: TValue\n onValueChange: (value: TValue) => void\n options: readonly SegmentedOption<TValue>[]\n /** Span the container instead of the capsule's natural `w-fit`. */\n fill?: boolean\n /** Disables every segment. */\n disabled?: boolean\n /** Extra classes on the strip (the `TabsList`). */\n class?: string\n}\n\nfunction SegmentedControl<TValue extends string>(props: SegmentedControlProps<TValue>) {\n return (\n <Tabs data-slot=\"segmented-control\" value={props.value} onValueChange={(next) => props.onValueChange(next as TValue)}>\n <TabsList class={cn(props.fill && SEGMENTED_CONTROL_CLASSES.fill, props.class)}>\n <For each={props.options}>\n {(option) => (\n <TabsTrigger value={option.value} disabled={props.disabled || option.disabled} class={SEGMENTED_CONTROL_CLASSES.trigger}>\n <Show when={option.icon}>{(glyph) => <PaintIcon icon={glyph()} aria-hidden=\"true\" />}</Show>\n {option.label}\n </TabsTrigger>\n )}\n </For>\n </TabsList>\n </Tabs>\n )\n}\n\nexport { SegmentedControl }\nexport type { SegmentedControlProps, SegmentedOption }\n","// FEED-131: shadcn's Select on Radix Select 2.2.6's DOM, by hand. The\n// closed content renders into a detached DocumentFragment (as Radix does) so\n// the items register for the trigger's typeahead and the selected\n// ItemText's children portal into the SelectValue span; open, the content\n// mounts on <body> in either position mode: `item-aligned` (Radix's fixed\n// wrapper sized by `position()`, its inline writes in Radix's order, the\n// zIndex last) or `popper` (the shared Popper). Inside a <form> Radix's\n// visually-hidden native <select> follows the trigger.\n\nimport { createContext, createEffect, createMemo, createSignal, createUniqueId, on, onCleanup, onMount, Show, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-solid\"\nimport { SELECT_CLASSES, SELECT_INLINE, SELECT_VIEWPORT_ATTR, SELECT_VIEWPORT_CSS, selectItemAlignedContentStyle, selectPopperContentStyle } from \"@exponential-at/ui/web/primitives\"\nimport { bindStyle, createFocusScope, createLayer, findNextItem, LayerContext, mountIn, NativeSelect, OPEN_KEYS, Popper, radixTypeahead, SELECTION_KEYS, styleWriter, useFocusGuards, useModalEffects, type Align, type OutsideEvent, type Side, type StyleObject } from \"../behaviors\"\nimport { insert } from \"solid-js/web\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nconst CONTENT_MARGIN = 10\n\ninterface CollectionItem {\n value: string\n disabled: boolean\n textValue: Accessor<string>\n label: Accessor<string>\n el: HTMLElement\n text: () => HTMLElement | undefined\n}\n\ninterface SelectContextValue {\n value: Accessor<string | undefined>\n setValue: (v: string) => void\n open: Accessor<boolean>\n setOpen: (o: boolean) => void\n dir: Accessor<`ltr` | `rtl`>\n disabled: Accessor<boolean | undefined>\n required: Accessor<boolean | undefined>\n contentId: string\n trigger: Accessor<HTMLButtonElement | undefined>\n setTrigger: (el: HTMLButtonElement) => void\n valueNode: Accessor<HTMLElement | undefined>\n setValueNode: (el: HTMLElement) => void\n valueNodeHasChildren: Accessor<boolean>\n setValueNodeHasChildren: (v: boolean) => void\n triggerPointerDownPos: { current: { x: number; y: number } | null }\n register: (item: CollectionItem) => () => void\n /** Radix's `getItems()`: the mounted items in document order. */\n getItems: () => CollectionItem[]\n items: Accessor<CollectionItem[]>\n}\n\nconst SelectContext = createContext<SelectContextValue>()\nconst useSelect = () => useContext(SelectContext)!\n\ninterface ContentContextValue {\n content: Accessor<HTMLElement | undefined>\n viewport: Accessor<HTMLElement | undefined>\n setViewport: (el: HTMLElement) => void\n selectedItem: () => HTMLElement | undefined\n onItemLeave?: () => void\n focusSelectedItem?: () => void\n isPositioned: Accessor<boolean>\n searchRef: { readonly current: string }\n position: `item-aligned` | `popper`\n}\nconst ContentContext = createContext<ContentContextValue>()\nconst NO_CONTENT: ContentContextValue = { content: () => undefined, viewport: () => undefined, setViewport: () => {}, selectedItem: () => undefined, isPositioned: () => false, searchRef: { current: `` }, position: `item-aligned` }\n\ninterface ViewportContextValue {\n contentWrapper?: () => HTMLElement | undefined\n shouldExpandOnScroll?: { current: boolean }\n onScrollButtonChange?: (node: HTMLElement) => void\n}\nconst ViewportContext = createContext<ViewportContextValue>({})\n\ninterface ItemContextValue {\n value: string\n disabled: boolean\n textId: string\n isSelected: Accessor<boolean>\n onItemTextChange: (node: HTMLElement) => void\n}\nconst ItemContext = createContext<ItemContextValue>()\nconst GroupContext = createContext<string>()\n\n/** Radix's `useControllableState`. */\nfunction createControllable<T>(prop: () => T | undefined, initial: T | undefined, onChange?: (v: T) => void): [Accessor<T | undefined>, (v: T) => void] {\n const [inner, setInner] = createSignal<T | undefined>(initial)\n const controlled = () => prop() !== undefined\n const value = () => (controlled() ? prop() : inner())\n const set = (v: T) => {\n if (controlled()) {\n if (v !== prop()) onChange?.(v)\n } else if (v !== untrack(inner)) {\n setInner(() => v)\n onChange?.(v)\n }\n }\n return [value, set]\n}\n\n/** A JSX expression's DOM node (a component's result may be an accessor). */\nconst node = <T extends Node>(value: unknown): T => {\n let v = value\n while (typeof v === `function`) v = (v as () => unknown)()\n return v as T\n}\n\n/** A second dynamic child: it puts Solid's insert into its marker mode, so\n * swapping the placeholder never clears the selected item's portalled text. */\nconst nothing = (): JSX.Element => undefined\n\nconst shouldShowPlaceholder = (value: string | undefined) => value === `` || value === undefined\n\nconst callHandler = <E extends Event>(handler: unknown, e: E) => {\n if (typeof handler === `function`) (handler as (e: E) => void)(e)\n else if (Array.isArray(handler)) (handler[0] as (d: unknown, e: E) => void)(handler[1], e)\n}\n\nexport interface SelectProps {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n dir?: `ltr` | `rtl`\n name?: string\n autoComplete?: string\n disabled?: boolean\n required?: boolean\n form?: string\n children?: JSX.Element\n}\n\nfunction Select(props: SelectProps) {\n const [value, setValue] = createControllable(() => props.value, untrack(() => props.defaultValue), (v) => props.onValueChange?.(v))\n const [open, setOpen] = createControllable(() => props.open, untrack(() => props.defaultOpen) ?? false, (v) => props.onOpenChange?.(v))\n const [trigger, setTrigger] = createSignal<HTMLButtonElement>()\n const [valueNode, setValueNode] = createSignal<HTMLElement>()\n const [valueNodeHasChildren, setValueNodeHasChildren] = createSignal(false)\n const [items, setItems] = createSignal<CollectionItem[]>([])\n const register = (item: CollectionItem) => {\n setItems((list) => [...list, item])\n return () => setItems((list) => list.filter((i) => i !== item))\n }\n const getItems = () => untrack(items).slice().sort((a, b) => (a.el.compareDocumentPosition(b.el) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1))\n const ctx: SelectContextValue = {\n value,\n setValue,\n open: () => Boolean(open()),\n setOpen,\n dir: () => props.dir ?? `ltr`,\n disabled: () => props.disabled,\n required: () => props.required,\n contentId: createUniqueId(),\n trigger,\n setTrigger,\n valueNode,\n setValueNode,\n valueNodeHasChildren,\n setValueNodeHasChildren,\n triggerPointerDownPos: { current: null },\n register,\n getItems,\n items,\n }\n // Radix's `isFormControl`: decided once the trigger is mounted.\n const [inForm, setInForm] = createSignal(false)\n onMount(() => setInForm(Boolean(props.form) || Boolean(trigger()?.closest(`form`))))\n const options = createMemo(() => {\n void items()\n return getItems().map((i) => ({ value: i.value, label: i.label(), disabled: i.disabled }))\n })\n const optionKey = createMemo(() => options().map((o) => o.value).join(`;`))\n return (\n <SelectContext.Provider value={ctx}>\n {props.children}\n <Show when={inForm() ? `${optionKey()}#` : false} keyed>\n {(_key) => <NativeSelect name={props.name as string} value={value()} disabled={Boolean(props.disabled)} options={options()} onChange={(v) => setValue(v)} />}\n </Show>\n </SelectContext.Provider>\n )\n}\n\nfunction SelectGroup(props: ComponentProps<`div`>) {\n const id = createUniqueId()\n return (\n <GroupContext.Provider value={id}>\n <div role=\"group\" aria-labelledby={id} data-slot=\"select-group\" {...props} />\n </GroupContext.Provider>\n )\n}\n\nfunction SelectValue(props: { placeholder?: JSX.Element; children?: JSX.Element; class?: string; style?: JSX.CSSProperties | string } & Omit<ComponentProps<`span`>, `children` | `class` | `style`>) {\n const ctx = useSelect()\n const [local, rest] = splitProps(props, [`placeholder`, `children`, `class`, `style`])\n const hasChildren = `children` in props && props.children !== undefined\n onMount(() => ctx.setValueNodeHasChildren(hasChildren))\n return (\n <span data-slot=\"select-value\" {...rest} ref={(el) => ctx.setValueNode(el)} style={SELECT_INLINE.value}>\n {shouldShowPlaceholder(ctx.value()) ? (local.placeholder ?? ``) : local.children}\n {nothing()}\n </span>\n )\n}\n\nfunction SelectTrigger(props: ComponentProps<`button`> & { size?: `sm` | `default` }) {\n const ctx = useSelect()\n const [local, rest] = splitProps(props, [`class`, `size`, `children`, `disabled`, `onClick`, `onPointerDown`, `onKeyDown`])\n const isDisabled = () => Boolean(ctx.disabled() || local.disabled)\n let pointerType = `touch`\n const typeahead = radixTypeahead((search) => {\n const list = ctx.getItems().filter((i) => !i.disabled).map((i) => ({ label: i.textValue(), i }))\n const next = findNextItem(list, search, list.find((x) => x.i.value === ctx.value()))\n if (next) ctx.setValue(next.i.value)\n })\n const handleOpen = (e?: PointerEvent | MouseEvent) => {\n if (!isDisabled()) {\n ctx.setOpen(true)\n typeahead.reset()\n }\n if (e) ctx.triggerPointerDownPos.current = { x: Math.round(e.pageX), y: Math.round(e.pageY) }\n }\n return (\n <button\n type=\"button\"\n role=\"combobox\"\n aria-controls={ctx.contentId}\n aria-expanded={ctx.open()}\n aria-required={ctx.required()}\n aria-autocomplete=\"none\"\n dir={ctx.dir()}\n data-state={ctx.open() ? `open` : `closed`}\n disabled={isDisabled()}\n data-disabled={isDisabled() ? `` : undefined}\n data-placeholder={shouldShowPlaceholder(ctx.value()) ? `` : undefined}\n data-slot=\"select-trigger\"\n data-size={local.size ?? `default`}\n class={cn(SELECT_CLASSES.trigger, local.class)}\n {...rest}\n ref={(el) => ctx.setTrigger(el)}\n onClick={(e) => {\n callHandler(local.onClick, e)\n if (e.defaultPrevented) return\n e.currentTarget.focus()\n if (pointerType !== `mouse`) handleOpen(e)\n }}\n onPointerDown={(e) => {\n callHandler(local.onPointerDown, e)\n if (e.defaultPrevented) return\n pointerType = e.pointerType\n const target = e.target as HTMLElement\n if (target.hasPointerCapture?.(e.pointerId)) target.releasePointerCapture(e.pointerId)\n if (e.button === 0 && e.ctrlKey === false && e.pointerType === `mouse`) {\n handleOpen(e)\n e.preventDefault()\n }\n }}\n onKeyDown={(e) => {\n callHandler(local.onKeyDown, e)\n if (e.defaultPrevented) return\n const typing = typeahead.search !== ``\n const modifier = e.ctrlKey || e.altKey || e.metaKey\n if (!modifier && e.key.length === 1) typeahead.type(e.key)\n if (typing && e.key === ` `) return\n if (OPEN_KEYS.includes(e.key)) {\n handleOpen()\n e.preventDefault()\n }\n }}\n >\n {local.children}\n <PaintIcon icon={ChevronDown} aria-hidden=\"true\" class={SELECT_CLASSES.triggerIcon} />\n </button>\n )\n}\n\nexport interface SelectContentProps extends Omit<ComponentProps<`div`>, `onKeyDown`> {\n position?: `item-aligned` | `popper`\n side?: Side\n sideOffset?: number\n align?: Align\n alignOffset?: number\n collisionPadding?: number\n onCloseAutoFocus?: (e: Event) => void\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n onKeyDown?: (e: KeyboardEvent) => void\n}\n\nfunction SelectContent(props: SelectContentProps) {\n const ctx = useSelect()\n const position = () => props.position ?? `item-aligned`\n const content = () => (\n <>\n <SelectScrollUpButton />\n <Viewport class={cn(SELECT_CLASSES.viewport, position() === `popper` && SELECT_CLASSES.viewportPopper)}>{props.children}</Viewport>\n <SelectScrollDownButton />\n </>\n )\n return (\n <Show when={ctx.open()} fallback={<ClosedContent>{content()}</ClosedContent>}>\n <ContentImpl data-slot=\"select-content\" {...props} position={position()} align={props.align ?? `center`} class={cn(SELECT_CLASSES.content, position() === `popper` && SELECT_CLASSES.contentPopper, props.class)}>\n {content()}\n </ContentImpl>\n </Show>\n )\n}\n\n/** Radix's closed SelectContent: the children in a detached fragment. */\nfunction ClosedContent(props: { children: JSX.Element }) {\n const frag = document.createDocumentFragment()\n const div = node<HTMLElement>(\n <ContentContext.Provider value={NO_CONTENT}>\n <div>{props.children}</div>\n </ContentContext.Provider>\n )\n frag.appendChild(div)\n return null\n}\n\nfunction ContentImpl(props: SelectContentProps & { position: `item-aligned` | `popper` }) {\n const ctx = useSelect()\n const [local, rest] = splitProps(props, [`position`, `side`, `sideOffset`, `align`, `alignOffset`, `collisionPadding`, `onCloseAutoFocus`, `onEscapeKeyDown`, `onPointerDownOutside`, `onKeyDown`, `children`, `style`])\n const [content, setContent] = createSignal<HTMLElement>()\n const [viewport, setViewport] = createSignal<HTMLElement>()\n const [isPositioned, setPositioned] = createSignal(false)\n const [registered, setRegistered] = createSignal(false)\n const selectedItem = () => {\n const items = ctx.getItems()\n const v = ctx.value()\n return (items.find((i) => v !== undefined && i.value === v) ?? items.find((i) => !i.disabled))?.el\n }\n const selectedItemText = () => {\n const el = selectedItem()\n return ctx.getItems().find((i) => i.el === el)?.text()\n }\n const focusFirst = (candidates: (HTMLElement | undefined)[]) => {\n const [first, ...others] = ctx.getItems().map((i) => i.el)\n const [last] = others.slice(-1)\n const previous = document.activeElement\n const vp = viewport()\n for (const c of candidates) {\n if (c === previous) return\n c?.scrollIntoView({ block: `nearest` })\n if (c === first && vp) vp.scrollTop = 0\n if (c === last && vp) vp.scrollTop = vp.scrollHeight\n c?.focus()\n if (document.activeElement !== previous) return\n }\n }\n const focusSelectedItem = () => focusFirst([selectedItem(), content()])\n // Radix focuses in a later commit, once the focus scope listens: a focus\n // the trap never saw would be lost to the trigger's own click.\n createEffect(() => {\n if (isPositioned()) queueMicrotask(() => queueMicrotask(() => untrack(focusSelectedItem)))\n })\n const close = () => ctx.setOpen(false)\n onMount(() => {\n window.addEventListener(`blur`, close)\n window.addEventListener(`resize`, close)\n const el = content()\n if (el && ctx.triggerPointerDownPos.current !== null) {\n let delta = { x: 0, y: 0 }\n const move = (e: PointerEvent) => {\n const at = ctx.triggerPointerDownPos.current\n delta = { x: Math.abs(Math.round(e.pageX) - (at?.x ?? 0)), y: Math.abs(Math.round(e.pageY) - (at?.y ?? 0)) }\n }\n const up = (e: PointerEvent) => {\n if (delta.x <= 10 && delta.y <= 10) e.preventDefault()\n else if (!el.contains(e.target as Node)) close()\n document.removeEventListener(`pointermove`, move)\n ctx.triggerPointerDownPos.current = null\n }\n document.addEventListener(`pointermove`, move)\n document.addEventListener(`pointerup`, up, { capture: true, once: true })\n onCleanup(() => {\n document.removeEventListener(`pointermove`, move)\n document.removeEventListener(`pointerup`, up, { capture: true })\n })\n }\n onCleanup(() => {\n window.removeEventListener(`blur`, close)\n window.removeEventListener(`resize`, close)\n })\n })\n const searchRef = { current: `` }\n const typeahead = radixTypeahead((search) => {\n const enabled = ctx.getItems().filter((i) => !i.disabled)\n const list = enabled.map((i) => ({ label: i.textValue(), i }))\n const next = findNextItem(list, search, list.find((x) => x.i.el === document.activeElement))\n if (next) setTimeout(() => next.i.el.focus())\n })\n Object.defineProperty(searchRef, `current`, { get: () => typeahead.search })\n const layer = createLayer({\n disableOutsidePointerEvents: () => true,\n onEscapeKeyDown: (e) => local.onEscapeKeyDown?.(e),\n onPointerDownOutside: (e) => local.onPointerDownOutside?.(e),\n onFocusOutside: (e) => e.preventDefault(),\n onDismiss: close,\n })\n const scope = createFocusScope({\n trapped: () => ctx.open(),\n loop: false,\n onMountAutoFocus: (e) => e.preventDefault(),\n onUnmountAutoFocus: (e) => {\n local.onCloseAutoFocus?.(e)\n if (e.defaultPrevented) return\n ctx.trigger()?.focus({ preventScroll: true })\n e.preventDefault()\n },\n })\n const contentCtx: ContentContextValue = { content, viewport, setViewport, selectedItem, onItemLeave: () => content()?.focus(), focusSelectedItem, isPositioned, searchRef, position: local.position }\n const onKeyDown = (e: KeyboardEvent) => {\n local.onKeyDown?.(e)\n if (!e.defaultPrevented) {\n const modifier = e.ctrlKey || e.altKey || e.metaKey\n if (e.key === `Tab`) e.preventDefault()\n if (!modifier && e.key.length === 1) typeahead.type(e.key)\n if ([`ArrowUp`, `ArrowDown`, `Home`, `End`].includes(e.key)) {\n let candidates = ctx.getItems().filter((i) => !i.disabled).map((i) => i.el)\n if ([`ArrowUp`, `End`].includes(e.key)) candidates = candidates.slice().reverse()\n if ([`ArrowUp`, `ArrowDown`].includes(e.key)) candidates = candidates.slice(candidates.indexOf(e.target as HTMLElement) + 1)\n setTimeout(() => focusFirst(candidates))\n e.preventDefault()\n }\n }\n scope.onKeyDown(e)\n }\n const pointerEvents = () => layer.pointerEvents(registered())\n const build = (extra: Record<string, unknown>) =>\n node<HTMLDivElement>(\n <div role=\"listbox\" id={ctx.contentId} data-state={ctx.open() ? `open` : `closed`} dir={ctx.dir()} {...rest} {...extra} tabindex=\"-1\" onContextMenu={(e) => e.preventDefault()} onKeyDown={onKeyDown}>\n <LayerContext.Provider value={layer.layer}>\n <ContentContext.Provider value={contentCtx}>{local.children}</ContentContext.Provider>\n </LayerContext.Provider>\n </div>\n )\n const activate = (el: HTMLElement) => {\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n scope.attach(el)\n useFocusGuards()\n useModalEffects(el, true)\n })\n }\n if (local.position === `popper`) {\n const wrapper = node<HTMLElement>(\n <Popper anchor={ctx.trigger()} side={local.side ?? `bottom`} align={local.align ?? `start`} sideOffset={local.sideOffset ?? 0} alignOffset={local.alignOffset ?? 0} collisionPadding={local.collisionPadding ?? CONTENT_MARGIN} dir={ctx.dir()}>\n {(popper) => {\n const el = build({ \"data-side\": popper.placedSide(), \"data-align\": popper.placedAlign() })\n setContent(el)\n popper.setContent(el)\n bindStyle(el, (): StyleObject => selectPopperContentStyle(pointerEvents(), popper.isPositioned()))\n createEffect(() => {\n if (popper.isPositioned()) setPositioned(true)\n })\n activate(el)\n return el\n }}\n </Popper>\n )\n mountIn(document.body, wrapper)\n return null\n }\n return <ItemAligned build={build} setContent={setContent} contentCtx={contentCtx} pointerEvents={pointerEvents} onPlaced={() => setPositioned(true)} activate={activate} selectedItemText={selectedItemText} />\n}\n\nfunction ItemAligned(props: { build: (extra: Record<string, unknown>) => HTMLDivElement; setContent: (el: HTMLElement) => void; contentCtx: ContentContextValue; pointerEvents: () => string | undefined; onPlaced: () => void; activate: (el: HTMLElement) => void; selectedItemText: () => HTMLElement | undefined }) {\n const ctx = useSelect()\n const c = props.contentCtx\n let wrapper!: HTMLDivElement\n let shouldReposition = true\n const shouldExpandOnScroll = { current: false }\n const viewportCtx: ViewportContextValue = {\n contentWrapper: () => wrapper,\n shouldExpandOnScroll,\n onScrollButtonChange: (node) => {\n if (node && shouldReposition) {\n // React's isPositioned effect has focused (and scrolled to) the\n // selected item before a scroll button mounts and re-positions.\n c.focusSelectedItem?.()\n position()\n c.focusSelectedItem?.()\n shouldReposition = false\n }\n },\n }\n const el = node<HTMLDivElement>(<ViewportContext.Provider value={viewportCtx}>{props.build({})}</ViewportContext.Provider>)\n props.setContent(el)\n bindStyle(el, (): StyleObject => selectItemAlignedContentStyle(props.pointerEvents()))\n wrapper = (<div>{el}</div>) as HTMLDivElement\n styleWriter(wrapper)({ ...SELECT_INLINE.wrapper })\n const position = () => {\n const trigger = ctx.trigger()\n const valueNode = ctx.valueNode()\n const content = el\n const viewport = c.viewport()\n const selectedItem = c.selectedItem()\n const selectedItemText = props.selectedItemText()\n if (!(trigger && valueNode && wrapper && content && viewport && selectedItem && selectedItemText)) return\n const triggerRect = trigger.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n const valueNodeRect = valueNode.getBoundingClientRect()\n const itemTextRect = selectedItemText.getBoundingClientRect()\n const clamp = (v: number, [min, max]: [number, number]) => Math.min(max, Math.max(min, v))\n if (ctx.dir() !== `rtl`) {\n const itemTextOffset = itemTextRect.left - contentRect.left\n const left = valueNodeRect.left - itemTextOffset\n const leftDelta = triggerRect.left - left\n const minContentWidth = triggerRect.width + leftDelta\n const contentWidth = Math.max(minContentWidth, contentRect.width)\n const rightEdge = window.innerWidth - CONTENT_MARGIN\n const clampedLeft = clamp(left, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, rightEdge - contentWidth)])\n wrapper.style.minWidth = minContentWidth + `px`\n wrapper.style.left = clampedLeft + `px`\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset\n const rightDelta = window.innerWidth - triggerRect.right - right\n const minContentWidth = triggerRect.width + rightDelta\n const contentWidth = Math.max(minContentWidth, contentRect.width)\n const leftEdge = window.innerWidth - CONTENT_MARGIN\n const clampedRight = clamp(right, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, leftEdge - contentWidth)])\n wrapper.style.minWidth = minContentWidth + `px`\n wrapper.style.right = clampedRight + `px`\n }\n const items = ctx.getItems()\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2\n const itemsHeight = viewport.scrollHeight\n const contentStyles = window.getComputedStyle(content)\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10)\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10)\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10)\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10)\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight)\n const viewportStyles = window.getComputedStyle(viewport)\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10)\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10)\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1]!.el\n wrapper.style.bottom = `0px`\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight\n const clampedTriggerMiddleToBottomEdge = Math.max(triggerMiddleToBottomEdge, selectedItemHalfHeight + (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth)\n wrapper.style.height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge + `px`\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0]!.el\n wrapper.style.top = `0px`\n const clampedTopEdgeToTriggerMiddle = Math.max(topEdgeToTriggerMiddle, contentBorderTopWidth + viewport.offsetTop + (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight)\n wrapper.style.height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom + `px`\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop\n }\n wrapper.style.margin = `${CONTENT_MARGIN}px 0`\n wrapper.style.minHeight = minContentHeight + `px`\n wrapper.style.maxHeight = availableHeight + `px`\n props.onPlaced()\n requestAnimationFrame(() => (shouldExpandOnScroll.current = true))\n }\n onMount(() => {\n position()\n // React writes the content's zIndex on the next render, after `position()`.\n wrapper.style.zIndex = window.getComputedStyle(el).zIndex\n })\n // The selected item can change while open (Radix re-runs `position` on it).\n createEffect(on(() => [ctx.value(), c.viewport()], () => position(), { defer: true }))\n props.activate(el)\n mountIn(document.body, wrapper)\n return null\n}\n\nfunction Viewport(props: { class?: string; children?: JSX.Element }) {\n const c = useContext(ContentContext) ?? NO_CONTENT\n const vc = useContext(ViewportContext)\n let prevScrollTop = 0\n return (\n <>\n <style>{SELECT_VIEWPORT_CSS}</style>\n <div\n data-radix-select-viewport=\"\"\n role=\"presentation\"\n class={props.class}\n ref={(el) => {\n c.setViewport(el)\n styleWriter(el)({ ...SELECT_INLINE.viewport })\n }}\n onScroll={(e) => {\n const viewport = e.currentTarget\n const wrapper = vc.contentWrapper?.()\n if (vc.shouldExpandOnScroll?.current && wrapper) {\n const scrolledBy = Math.abs(prevScrollTop - viewport.scrollTop)\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2\n const prevHeight = Math.max(parseFloat(wrapper.style.minHeight), parseFloat(wrapper.style.height))\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy\n const clampedNextHeight = Math.min(availableHeight, nextHeight)\n const heightDiff = nextHeight - clampedNextHeight\n wrapper.style.height = clampedNextHeight + `px`\n if (wrapper.style.bottom === `0px`) {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0\n wrapper.style.justifyContent = SELECT_INLINE.expandEnd\n }\n }\n }\n }\n prevScrollTop = viewport.scrollTop\n }}\n >\n {props.children}\n </div>\n </>\n )\n}\n\nfunction SelectLabel(props: ComponentProps<`div`>) {\n const id = useContext(GroupContext)\n const [local, rest] = splitProps(props, [`class`])\n return <div id={id} data-slot=\"select-label\" class={cn(SELECT_CLASSES.label, local.class)} {...rest} />\n}\n\nfunction SelectItem(props: ComponentProps<`div`> & { value: string; disabled?: boolean; textValue?: string }) {\n const ctx = useSelect()\n const c = useContext(ContentContext) ?? NO_CONTENT\n const [local, rest] = splitProps(props, [`class`, `children`, `value`, `disabled`, `textValue`, `onFocus`, `onBlur`, `onClick`, `onPointerUp`, `onPointerDown`, `onPointerMove`, `onPointerLeave`, `onKeyDown`])\n if (local.value === ``) throw new Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`)\n const value = untrack(() => local.value)\n const disabled = untrack(() => Boolean(local.disabled))\n const isSelected = () => ctx.value() === value\n const [textValue, setTextValue] = createSignal(untrack(() => local.textValue) ?? ``)\n const [label, setLabel] = createSignal(``)\n const [focused, setFocused] = createSignal(false)\n const textId = createUniqueId()\n let pointerType = `touch`\n let el!: HTMLDivElement\n let textEl: HTMLElement | undefined\n const handleSelect = () => {\n if (!disabled) {\n ctx.setValue(value)\n ctx.setOpen(false)\n }\n }\n onMount(() => onCleanup(ctx.register({ value, disabled, textValue, label, el, text: () => textEl })))\n const itemCtx: ItemContextValue = {\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textEl = node\n setTextValue((prev) => prev || (node.textContent ?? ``).trim())\n setLabel(node.textContent ?? ``)\n },\n }\n return (\n <ItemContext.Provider value={itemCtx}>\n <div\n role=\"option\"\n aria-labelledby={textId}\n data-highlighted={focused() ? `` : undefined}\n aria-selected={isSelected() && focused()}\n data-state={isSelected() ? `checked` : `unchecked`}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? `` : undefined}\n tabindex={disabled ? undefined : -1}\n data-slot=\"select-item\"\n class={cn(SELECT_CLASSES.item, local.class)}\n {...rest}\n data-radix-collection-item=\"\"\n ref={el}\n onFocus={(e) => {\n callHandler(local.onFocus, e)\n if (!e.defaultPrevented) setFocused(true)\n }}\n onBlur={(e) => {\n callHandler(local.onBlur, e)\n if (!e.defaultPrevented) setFocused(false)\n }}\n onClick={(e) => {\n callHandler(local.onClick, e)\n if (!e.defaultPrevented && pointerType !== `mouse`) handleSelect()\n }}\n onPointerUp={(e) => {\n callHandler(local.onPointerUp, e)\n if (!e.defaultPrevented && pointerType === `mouse`) handleSelect()\n }}\n onPointerDown={(e) => {\n callHandler(local.onPointerDown, e)\n if (!e.defaultPrevented) pointerType = e.pointerType\n }}\n onPointerMove={(e) => {\n callHandler(local.onPointerMove, e)\n if (e.defaultPrevented) return\n pointerType = e.pointerType\n if (disabled) c.onItemLeave?.()\n else if (pointerType === `mouse`) e.currentTarget.focus({ preventScroll: true })\n }}\n onPointerLeave={(e) => {\n callHandler(local.onPointerLeave, e)\n if (!e.defaultPrevented && e.currentTarget === document.activeElement) c.onItemLeave?.()\n }}\n onKeyDown={(e) => {\n callHandler(local.onKeyDown, e)\n if (e.defaultPrevented) return\n if (c.searchRef.current !== `` && e.key === ` `) return\n if (SELECTION_KEYS.includes(e.key)) handleSelect()\n if (e.key === ` `) e.preventDefault()\n }}\n >\n <span data-slot=\"select-item-indicator\" class={SELECT_CLASSES.itemIndicator}>\n <Show when={isSelected()}>\n <span aria-hidden=\"true\">\n <PaintIcon icon={Check} class={SELECT_CLASSES.itemCheck} />\n </span>\n </Show>\n </span>\n <ItemText>{local.children}</ItemText>\n </div>\n </ItemContext.Provider>\n )\n}\n\n/** Radix `SelectItemText`: the text span, and the selected one's children\n * portalled into the trigger's value span. */\nfunction ItemText(props: { children?: JSX.Element }) {\n const ctx = useSelect()\n const item = useContext(ItemContext)!\n let span!: HTMLSpanElement\n onMount(() => item.onItemTextChange(span))\n const portalTarget = () => (item.isSelected() && !ctx.valueNodeHasChildren() ? (ctx.valueNode() ?? null) : null)\n return (\n <>\n <span id={item.textId} ref={span}>\n {props.children}\n </span>\n <Show when={portalTarget()}>\n {(target) => {\n // Radix's `createPortal(children, valueNode)`: a second copy of the\n // children appended to the value span, removed whole on unmount.\n const el = target()\n const start = document.createTextNode(``)\n const end = document.createTextNode(``)\n el.append(start, end)\n insert(el, () => props.children, end)\n onCleanup(() => {\n while (start.nextSibling && start.nextSibling !== end) start.nextSibling.remove()\n start.remove()\n end.remove()\n })\n return null\n }}\n </Show>\n </>\n )\n}\n\nfunction SelectSeparator(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div aria-hidden=\"true\" data-slot=\"select-separator\" class={cn(SELECT_CLASSES.separator, local.class)} {...rest} />\n}\n\nfunction ScrollButton(props: ComponentProps<`div`> & { direction: `up` | `down`; slot: string }) {\n const c = useContext(ContentContext) ?? NO_CONTENT\n const [can, setCan] = createSignal(false)\n const [local, rest] = splitProps(props, [`class`, `direction`, `slot`, `children`])\n createEffect(() => {\n const viewport = c.viewport()\n if (!viewport || !c.isPositioned()) return\n const handle = () => {\n if (local.direction === `up`) setCan(viewport.scrollTop > 0)\n else setCan(Math.ceil(viewport.scrollTop) < viewport.scrollHeight - viewport.clientHeight)\n }\n handle()\n viewport.addEventListener(`scroll`, handle)\n onCleanup(() => viewport.removeEventListener(`scroll`, handle))\n })\n return (\n <Show when={can()}>\n <ScrollButtonImpl direction={local.direction} slot={local.slot} class={local.class} rest={rest} />\n </Show>\n )\n}\n\nfunction ScrollButtonImpl(props: { direction: `up` | `down`; slot: string; class?: string; rest: Record<string, unknown> }) {\n const c = useContext(ContentContext) ?? NO_CONTENT\n const vc = useContext(ViewportContext)\n let timer: number | null = null\n const clear = () => {\n if (timer !== null) {\n window.clearInterval(timer)\n timer = null\n }\n }\n onCleanup(clear)\n const onAutoScroll = () => {\n const viewport = c.viewport()\n const selected = c.selectedItem()\n if (viewport && selected) viewport.scrollTop = viewport.scrollTop + (props.direction === `up` ? -1 : 1) * selected.offsetHeight\n }\n const start = () => {\n if (timer === null) timer = window.setInterval(onAutoScroll, 50)\n }\n onMount(() => {\n const active = document.activeElement\n if (active instanceof HTMLElement && active.closest(`[${SELECT_VIEWPORT_ATTR}]`)) active.scrollIntoView({ block: `nearest` })\n })\n return (\n <div\n aria-hidden=\"true\"\n data-slot={props.slot}\n class={cn(SELECT_CLASSES.scrollButton, props.class)}\n {...props.rest}\n ref={(el) => {\n styleWriter(el)({ ...SELECT_INLINE.scrollButton })\n queueMicrotask(() => vc.onScrollButtonChange?.(el))\n }}\n onPointerDown={start}\n onPointerMove={() => {\n c.onItemLeave?.()\n start()\n }}\n onPointerLeave={clear}\n >\n <PaintIcon icon={props.direction === `up` ? ChevronUp : ChevronDown} class={SELECT_CLASSES.scrollIcon} />\n </div>\n )\n}\n\nfunction SelectScrollUpButton(props: ComponentProps<`div`>) {\n return <ScrollButton direction=\"up\" slot=\"select-scroll-up-button\" {...props} />\n}\n\nfunction SelectScrollDownButton(props: ComponentProps<`div`>) {\n return <ScrollButton direction=\"down\" slot=\"select-scroll-down-button\" {...props} />\n}\n\nexport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { SEPARATOR_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\n// Radix's Separator as plain DOM: `data-orientation` always, `role=\"none\"`\n// when decorative, else `role=\"separator\"` (+ `aria-orientation` only when\n// vertical).\nfunction Separator(props: ComponentProps<`div`> & { orientation?: `horizontal` | `vertical`; decorative?: boolean }) {\n const [local, rest] = splitProps(props, [`class`, `orientation`, `decorative`])\n const orientation = () => (local.orientation === `vertical` ? `vertical` : `horizontal`)\n const decorative = () => local.decorative ?? true\n return (\n <div\n data-orientation={orientation()}\n role={decorative() ? `none` : `separator`}\n aria-orientation={!decorative() && orientation() === `vertical` ? `vertical` : undefined}\n data-slot=\"separator\"\n class={cn(SEPARATOR_CLASSES.root, local.class)}\n {...rest}\n />\n )\n}\n\nexport { Separator }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { SKELETON_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Skeleton(props: ComponentProps<`div`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <div data-slot=\"skeleton\" class={cn(SKELETON_CLASSES.root, local.class)} {...rest} />\n}\n\nexport { Skeleton }\n","import { splitProps, type JSX } from \"solid-js\"\nimport { LoaderCircle } from \"lucide-solid\"\nimport { SPINNER_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\nfunction Spinner(\n props: Omit<JSX.SvgSVGAttributes<SVGSVGElement>, `children`> & {\n size?: number\n /** The accessible name; the glyph itself never carries words. */\n label?: string\n class?: string\n [data: `data-${string}`]: string | undefined\n }\n) {\n const [local, rest] = splitProps(props, [`size`, `label`, `class`])\n const size = () => local.size ?? 10\n return (\n <PaintIcon\n icon={LoaderCircle}\n data-slot=\"spinner\"\n data-testid=\"feedback-spinner\"\n aria-label={local.label ?? `Loading`}\n width={size()}\n height={size()}\n style={css({ width: size(), height: size() })}\n class={cn(SPINNER_CLASSES.root, local.class)}\n {...rest}\n />\n )\n}\n\nexport { Spinner }\n","import { Show, createEffect, createSignal, splitProps, untrack, type ComponentProps, type JSX } from \"solid-js\"\nimport { SWITCH_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { bubbleOnChange, createElementSize, createInForm, setChecked as setInputChecked } from \"../behaviors\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// Radix Switch on plain DOM: the button (`role=\"switch\"`, `aria-checked`,\n// `data-state`, `value`) holding the thumb, and inside a <form> the hidden\n// bubble input whose `checked` attribute follows the state (React writes\n// `defaultChecked` on every render).\n\nexport type SwitchProps = Omit<ComponentProps<`button`>, `value` | `onChange`> & {\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n required?: boolean\n name?: string\n value?: string\n form?: string\n disabled?: boolean\n size?: `sm` | `default`\n}\n\nfunction Switch(props: SwitchProps) {\n const [local, rest] = splitProps(props, [`class`, `size`, `checked`, `defaultChecked`, `onCheckedChange`, `required`, `name`, `value`, `form`, `disabled`, `onClick`, `ref`])\n const [inner, setInner] = createSignal(untrack(() => local.defaultChecked) ?? false)\n const controlled = () => local.checked !== undefined\n const checked = () => (controlled() ? Boolean(local.checked) : inner())\n const setChecked = (next: boolean) => {\n const prev = untrack(checked)\n if (!untrack(controlled)) setInner(next)\n if (next !== prev) local.onCheckedChange?.(next)\n }\n const [button, setButton] = createSignal<HTMLButtonElement>()\n const inForm = createInForm(button)\n const value = () => local.value ?? `on`\n const state = () => (checked() ? `checked` : `unchecked`)\n let stopped = false\n return (\n <>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked()}\n aria-required={local.required}\n data-state={state()}\n data-disabled={local.disabled ? `` : undefined}\n disabled={local.disabled}\n value={value()}\n data-slot=\"switch\"\n data-size={local.size ?? `default`}\n class={cn(SWITCH_CLASSES.root, local.class)}\n {...rest}\n ref={(el) => {\n setButton(el)\n if (typeof local.ref === `function`) (local.ref as (el: HTMLButtonElement) => void)(el)\n }}\n onClick={(e) => {\n const handler = local.onClick as unknown\n if (typeof handler === `function`) handler(e)\n else if (Array.isArray(handler)) handler[0](handler[1], e)\n if (e.defaultPrevented) return\n setChecked(!untrack(checked))\n if (inForm()) {\n stopped = e.cancelBubble\n if (!stopped) e.stopPropagation()\n }\n }}\n >\n <span data-state={state()} data-disabled={local.disabled ? `` : undefined} data-slot=\"switch-thumb\" class={cn(SWITCH_CLASSES.thumb)} />\n </button>\n <Show when={inForm()}>\n <SwitchBubble control={button()} checked={checked()} required={local.required} disabled={local.disabled} name={local.name} value={value()} form={local.form} bubbles={() => !stopped} />\n </Show>\n </>\n )\n}\n\n/** Radix's `SwitchBubbleInput`: `transform` first (its own style prop),\n * the control's size appended once measured. */\nfunction SwitchBubble(props: { control: HTMLButtonElement | undefined; checked: boolean; required?: boolean; disabled?: boolean; name?: string; value: string; form?: string; bubbles: () => boolean }): JSX.Element {\n let input: HTMLInputElement | undefined\n const size = createElementSize(() => props.control)\n // React's `defaultChecked` update writes the attribute, never the property.\n createEffect(() => {\n if (input) input.defaultChecked = props.checked\n })\n bubbleOnChange(() => input, () => props.checked, setInputChecked, `click`, props.bubbles)\n const style = () => {\n const s = size()\n return css({ transform: `translateX(-100%)`, ...(s ? { width: s.width, height: s.height } : {}), position: `absolute`, pointerEvents: `none`, opacity: 0, margin: 0 })\n }\n return <input ref={input} type=\"checkbox\" aria-hidden=\"true\" attr:checked={untrack(() => props.checked) ? `` : undefined} required={props.required} disabled={props.disabled} name={props.name} attr:value={props.value} form={props.form} tabindex={-1} style={style()} />\n}\n\nexport { Switch }\n","import { splitProps, type ComponentProps } from \"solid-js\"\nimport { TABLE_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Table(props: ComponentProps<`table`>) {\n const [local, rest] = splitProps(props, [`class`])\n return (\n <div data-slot=\"table-container\" class={TABLE_CLASSES.container}>\n <table data-slot=\"table\" class={cn(TABLE_CLASSES.root, local.class)} {...rest} />\n </div>\n )\n}\n\nfunction TableHeader(props: ComponentProps<`thead`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <thead data-slot=\"table-header\" class={cn(TABLE_CLASSES.header, local.class)} {...rest} />\n}\n\nfunction TableBody(props: ComponentProps<`tbody`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <tbody data-slot=\"table-body\" class={cn(TABLE_CLASSES.body, local.class)} {...rest} />\n}\n\nfunction TableFooter(props: ComponentProps<`tfoot`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <tfoot data-slot=\"table-footer\" class={cn(TABLE_CLASSES.footer, local.class)} {...rest} />\n}\n\n/** A selected row says so with `data-state=\"selected\"` (shadcn's convention). */\nfunction TableRow(props: ComponentProps<`tr`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <tr data-slot=\"table-row\" class={cn(TABLE_CLASSES.row, local.class)} {...rest} />\n}\n\nfunction TableHead(props: ComponentProps<`th`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <th data-slot=\"table-head\" class={cn(TABLE_CLASSES.head, local.class)} {...rest} />\n}\n\nfunction TableCell(props: ComponentProps<`td`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <td data-slot=\"table-cell\" class={cn(TABLE_CLASSES.cell, local.class)} {...rest} />\n}\n\nfunction TableCaption(props: ComponentProps<`caption`>) {\n const [local, rest] = splitProps(props, [`class`])\n return <caption data-slot=\"table-caption\" class={cn(TABLE_CLASSES.caption, local.class)} {...rest} />\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption }\n","import { createEffect, splitProps, type ComponentProps } from \"solid-js\"\nimport { TEXTAREA_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\n/** React writes a controlled `value` as the textarea's TEXT (its default\n * value) as well as the property: both, here too. */\nfunction Textarea(props: ComponentProps<`textarea`>) {\n const [local, rest] = splitProps(props, [`class`, `value`, `ref`])\n let el: HTMLTextAreaElement | undefined\n const text = () => (local.value === undefined || local.value === null ? undefined : String(local.value))\n createEffect(() => {\n const v = text()\n if (el && v !== undefined && el.value !== v) el.value = v\n })\n return (\n <textarea\n ref={(node) => {\n el = node\n const ref = local.ref as ((el: HTMLTextAreaElement) => void) | undefined\n if (typeof ref === `function`) ref(node)\n }}\n data-slot=\"textarea\"\n class={cn(TEXTAREA_CLASSES.root, local.class)}\n {...rest}\n >\n {text()}\n </textarea>\n )\n}\n\nexport { Textarea }\n","import { For, Show, createEffect, createMemo, createSignal, from, onCleanup, splitProps, type ComponentProps } from \"solid-js\"\nimport { CircleCheck, CircleX, Info, TriangleAlert, X } from \"lucide-solid\"\nimport {\n TOAST_CLASSES,\n TOAST_TOUCH_QUERY,\n createToastStore,\n toastPlacement,\n toastStackGeometry,\n type ToastKind,\n type ToastRecord,\n type ToastStore,\n} from \"@exponential-at/ui/web/primitives\"\n\nimport { bindStyle } from \"../behaviors/style-writer\"\nimport { PaintIcon } from \"../icons\"\nimport { createMediaQuery } from \"../platform\"\nimport { css } from \"../style\"\nimport { cn } from \"./cn\"\n\n// FEED-131: React's toast.tsx on Solid: the same region, stack box and\n// cards, placed by the engine's geometry; hover (pointer) or a tap (touch)\n// expands the stack and pauses every clock.\n\nconst KIND_ICONS = { success: CircleCheck, error: CircleX, info: Info, warning: TriangleAlert } satisfies Record<ToastKind, unknown>\n\n/** The default store `toast` writes to and `<Toaster />` reads. */\nexport const toastStore: ToastStore = createToastStore()\n\n/** `toast(\"…\")`, `toast.success(\"…\", { description, action })`, … on the default store. */\nexport const toast = toastStore.toast\n\nexport type ToasterProps = Omit<ComponentProps<`section`>, `children`> & {\n store?: ToastStore\n /** The placement input (default: the `touchMaxWidth` media query). */\n touch?: boolean\n /** The close glyph's label. */\n closeLabel?: string\n}\n\nexport function Toaster(props: ToasterProps) {\n const [local, rest] = splitProps(props, [`store`, `touch`, `closeLabel`, `class`])\n const store = local.store ?? toastStore\n const toasts = from<readonly ToastRecord[]>((set) => {\n set(store.toasts())\n return store.subscribe((t) => set(t))\n })\n const list = () => toasts() ?? []\n const touchQuery = createMediaQuery(TOAST_TOUCH_QUERY)\n const placed = createMemo(() => toastPlacement(local.touch ?? touchQuery()))\n const [expanded, setExpanded] = createSignal(false)\n const [measured, setMeasured] = createSignal<Record<string, number>>({})\n const items = new Map<string, HTMLLIElement>()\n const open = () => expanded() && list().length > 0\n\n createEffect(() => {\n if (open()) store.pauseAll()\n else store.resumeAll()\n })\n\n createEffect(() => {\n const next: Record<string, number> = {}\n for (const t of list()) {\n const el = items.get(t.id)\n if (t.height === undefined && el) next[t.id] = el.getBoundingClientRect().height\n }\n const prev = measured()\n if (!(Object.keys(next).length === Object.keys(prev).length && Object.entries(next).every(([k, v]) => prev[k] === v))) setMeasured(next)\n })\n\n const geometry = createMemo(() =>\n toastStackGeometry(\n list().map((t) => t.height ?? measured()[t.id] ?? 0),\n open(),\n placed().anchoredBottom\n )\n )\n\n return (\n <section\n aria-label=\"Notifications\"\n data-slot=\"toaster\"\n data-placement={placed().placement}\n class={cn(TOAST_CLASSES.region, TOAST_CLASSES.regionPlacement[placed().placement], local.class)}\n {...rest}\n >\n <ol\n ref={(el) => bindStyle(el, () => ({ height: `${geometry().height}px` }))}\n data-slot=\"toast-list\"\n data-expanded={open() ? `true` : `false`}\n class={cn(TOAST_CLASSES.list, TOAST_CLASSES.listPlacement[placed().placement])}\n onPointerEnter={(event) => {\n if (event.pointerType !== `touch`) setExpanded(true)\n }}\n onPointerLeave={(event) => {\n if (event.pointerType !== `touch`) setExpanded(false)\n }}\n onPointerDown={(event) => {\n if (event.pointerType === `touch`) setExpanded((was) => !was)\n }}\n >\n <For each={list()}>\n {(t, i) => {\n const item = () => geometry().items[i()] ?? { offset: 0, scale: 1, visible: true }\n const rank = () => list().length - 1 - i()\n let node: HTMLLIElement | undefined\n onCleanup(() => {\n if (items.get(t.id) === node) items.delete(t.id)\n })\n return (\n <li\n ref={(el) => {\n node = el\n items.set(t.id, el)\n bindStyle(el, () => css({ \"--offset\": `${item().offset}px`, \"--scale\": `${item().scale}`, zIndex: i() + 1 })!)\n }}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n data-slot=\"toast\"\n data-kind={t.kind ?? `default`}\n data-front={rank() === 0 ? `true` : `false`}\n data-expanded={open() ? `true` : `false`}\n data-visible={item().visible ? `true` : `false`}\n data-index={rank()}\n class={cn(TOAST_CLASSES.toast, TOAST_CLASSES.toastOrigin[placed().anchoredBottom ? `bottom` : `top`])}\n >\n <Show when={t.kind}>\n {(kind) => (\n <div class={TOAST_CLASSES.iconSlot}>\n <PaintIcon icon={KIND_ICONS[kind()]} data-toast-kind={kind()} class={cn(TOAST_CLASSES.icon, TOAST_CLASSES.kindIcon[kind()])} />\n </div>\n )}\n </Show>\n <div class={TOAST_CLASSES.content}>\n <div data-slot=\"toast-title\" class={TOAST_CLASSES.title}>\n {t.title}\n </div>\n <Show when={t.description !== undefined}>\n <div data-slot=\"toast-description\" class={TOAST_CLASSES.description}>\n {t.description}\n </div>\n </Show>\n </div>\n <Show when={t.action}>\n {(action) => (\n <button\n type=\"button\"\n data-slot=\"toast-action\"\n class={TOAST_CLASSES.action}\n onClick={(event) => {\n action().onClick?.(event)\n store.dismiss(t.id)\n }}\n >\n {action().label}\n </button>\n )}\n </Show>\n <button type=\"button\" data-slot=\"toast-close\" aria-label={local.closeLabel ?? `Close`} class={TOAST_CLASSES.close} onClick={() => store.dismiss(t.id)}>\n <PaintIcon icon={X} />\n </button>\n </li>\n )\n }}\n </For>\n </ol>\n </section>\n )\n}\n\nexport { createToastStore, toastStackGeometry, toastPlacement, TOAST_CONSTANTS, TOAST_KINDS, TOAST_TOUCH_QUERY } from \"@exponential-at/ui/web/primitives\"\nexport type { ToastKind, ToastOptions, ToastRecord, ToastStore, ToastAction, ToastPlacement } from \"@exponential-at/ui/web/primitives\"\n","import { Show, createContext, createSignal, onCleanup, onMount, splitProps, untrack, useContext, type Accessor, type ComponentProps, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { TOOLTIP_CLASSES } from \"@exponential-at/ui/web/primitives\"\n\nimport { Popper, VisuallyHidden, createLayer, createPresence, graceArea, inPolygon, popperContentStyle, type Align, type OutsideEvent, type Point, type Side } from \"../behaviors\"\nimport { DialogPortalPart, layerMountedThisTask, layerPointerEvents, noteLayerMount, callRef, composeHandlers, createId, createOpenState, mergeRefs, styleObject, type AsProps } from \"../behaviors/dialog\"\nimport { bindStyle } from \"../behaviors/style-writer\"\nimport { cn } from \"./cn\"\n\n// Radix Tooltip on plain elements: the provider's delay + skip-delay, the\n// trigger (hover after `delayDuration`, focus at once, a press closes), the\n// portalled content in the popper wrapper with its VisuallyHidden\n// `role=\"tooltip\"` copy, the hoverable grace area between the two, another\n// tooltip opening or the trigger scrolling away closes it.\n\nconst TOOLTIP_OPEN = `tooltip.open`\n\ninterface ProviderValue {\n isOpenDelayed: () => boolean\n delayDuration: number\n onOpen: () => void\n onClose: () => void\n inTransit: () => boolean\n setInTransit: (v: boolean) => void\n disableHoverableContent: boolean\n}\n\nfunction createProvider(o: { delayDuration?: number; skipDelayDuration?: number; disableHoverableContent?: boolean }): ProviderValue {\n let openDelayed = true\n let inTransit = false\n let skipTimer: ReturnType<typeof setTimeout> | undefined\n onCleanup(() => clearTimeout(skipTimer))\n return {\n isOpenDelayed: () => openDelayed,\n delayDuration: o.delayDuration ?? 700,\n onOpen: () => {\n clearTimeout(skipTimer)\n openDelayed = false\n },\n onClose: () => {\n clearTimeout(skipTimer)\n skipTimer = setTimeout(() => (openDelayed = true), o.skipDelayDuration ?? 300)\n },\n inTransit: () => inTransit,\n setInTransit: (v) => (inTransit = v),\n disableHoverableContent: o.disableHoverableContent ?? false,\n }\n}\n\nconst ProviderContext = createContext<ProviderValue>()\n\nexport interface TooltipProviderProps {\n delayDuration?: number\n skipDelayDuration?: number\n disableHoverableContent?: boolean\n children?: JSX.Element\n}\n\nfunction TooltipProvider(props: TooltipProviderProps) {\n const value = createProvider({ delayDuration: untrack(() => props.delayDuration) ?? 0, skipDelayDuration: untrack(() => props.skipDelayDuration), disableHoverableContent: untrack(() => props.disableHoverableContent) })\n return <ProviderContext.Provider value={value}>{props.children}</ProviderContext.Provider>\n}\n\ninterface TooltipContextValue {\n contentId: string\n open: Accessor<boolean>\n stateAttribute: Accessor<string>\n trigger: Accessor<HTMLElement | undefined>\n setTrigger: (el: HTMLElement | undefined) => void\n onTriggerEnter: () => void\n onTriggerLeave: () => void\n onOpen: () => void\n onClose: () => void\n disableHoverableContent: boolean\n provider: ProviderValue\n}\nconst TooltipContext = createContext<TooltipContextValue>()\nconst useTooltip = (part: string) => {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error(`\\`${part}\\` must be used within \\`Tooltip\\``)\n return ctx\n}\n\nexport interface TooltipProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n delayDuration?: number\n disableHoverableContent?: boolean\n children?: JSX.Element\n}\n\nfunction Tooltip(props: TooltipProps) {\n // Radix needs a TooltipProvider; without one this tooltip has its own.\n const provider = useContext(ProviderContext) ?? createProvider({})\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const [wasDelayed, setWasDelayed] = createSignal(false)\n let openTimer: ReturnType<typeof setTimeout> | undefined\n const disableHoverableContent = untrack(() => props.disableHoverableContent) ?? provider.disableHoverableContent\n const delayDuration = () => props.delayDuration ?? provider.delayDuration\n const [open, setOpenState] = createOpenState({\n open: () => props.open,\n defaultOpen: props.defaultOpen,\n onOpenChange: () => (next: boolean) => {\n if (next) {\n provider.onOpen()\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))\n } else provider.onClose()\n props.onOpenChange?.(next)\n },\n })\n const handleOpen = () => {\n clearTimeout(openTimer)\n openTimer = undefined\n setWasDelayed(false)\n setOpenState(true)\n }\n const handleClose = () => {\n clearTimeout(openTimer)\n openTimer = undefined\n setOpenState(false)\n }\n const handleDelayedOpen = () => {\n clearTimeout(openTimer)\n openTimer = setTimeout(() => {\n setWasDelayed(true)\n setOpenState(true)\n openTimer = undefined\n }, untrack(delayDuration))\n }\n onCleanup(() => clearTimeout(openTimer))\n const value: TooltipContextValue = {\n contentId: `radix-${createId()}`,\n open,\n stateAttribute: () => (open() ? (wasDelayed() ? `delayed-open` : `instant-open`) : `closed`),\n trigger,\n setTrigger,\n onTriggerEnter: () => (provider.isOpenDelayed() ? handleDelayedOpen() : handleOpen()),\n onTriggerLeave: () => {\n if (disableHoverableContent) handleClose()\n else {\n clearTimeout(openTimer)\n openTimer = undefined\n }\n },\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n provider,\n }\n return <TooltipContext.Provider value={value}>{props.children}</TooltipContext.Provider>\n}\n\nfunction TooltipTrigger(props: AsProps) {\n const ctx = useTooltip(`TooltipTrigger`)\n const [local, rest] = splitProps(props, [`as`, `ref`, `onPointerMove`, `onPointerLeave`, `onPointerDown`, `onFocus`, `onBlur`, `onClick`])\n let pointerDown = false\n let pointerMoveOpened = false\n const onPointerUp = () => (pointerDown = false)\n onCleanup(() => document.removeEventListener(`pointerup`, onPointerUp))\n return (\n <Dynamic\n component={local.as ?? `button`}\n data-slot=\"tooltip-trigger\"\n aria-describedby={ctx.open() ? ctx.contentId : undefined}\n data-state={ctx.stateAttribute()}\n {...rest}\n ref={mergeRefs(local.ref, ctx.setTrigger)}\n onPointerMove={composeHandlers(local.onPointerMove, (e: PointerEvent) => {\n if (e.pointerType === `touch`) return\n if (!pointerMoveOpened && !ctx.provider.inTransit()) {\n ctx.onTriggerEnter()\n pointerMoveOpened = true\n }\n })}\n onPointerLeave={composeHandlers(local.onPointerLeave, () => {\n ctx.onTriggerLeave()\n pointerMoveOpened = false\n })}\n onPointerDown={composeHandlers(local.onPointerDown, () => {\n if (untrack(ctx.open)) ctx.onClose()\n pointerDown = true\n document.addEventListener(`pointerup`, onPointerUp, { once: true })\n })}\n onFocus={composeHandlers(local.onFocus, () => {\n if (!pointerDown) ctx.onOpen()\n })}\n onBlur={composeHandlers(local.onBlur, () => ctx.onClose())}\n onClick={composeHandlers(local.onClick, () => ctx.onClose())}\n />\n )\n}\n\nexport type TooltipContentProps = Omit<ComponentProps<`div`>, `style`> & {\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n collisionPadding?: number\n container?: HTMLElement | null\n style?: JSX.CSSProperties\n \"aria-label\"?: string\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n}\n\nfunction TooltipContent(props: TooltipContentProps) {\n const ctx = useTooltip(`TooltipContent`)\n const [local, rest] = splitProps(props, [`class`, `side`, `align`, `sideOffset`, `alignOffset`, `collisionPadding`, `container`, `style`, `ref`, `children`, `aria-label`, `onEscapeKeyDown`, `onPointerDownOutside`])\n const presence = createPresence(ctx.open)\n const Content = () => {\n const layer = createLayer({\n onEscapeKeyDown: (e) => local.onEscapeKeyDown?.(e),\n onPointerDownOutside: (e) => local.onPointerDownOutside?.(e),\n onFocusOutside: (e) => e.preventDefault(),\n onDismiss: () => ctx.onClose(),\n })\n const [registered, setRegistered] = createSignal(false)\n const lag = layerMountedThisTask()\n let contentEl: HTMLElement | undefined\n // The hoverable content: leaving the trigger toward the content (or back)\n // keeps it open while the pointer stays in the grace area.\n let grace: Point[] | null = null\n let graceTimer: ReturnType<typeof setTimeout> | undefined\n const removeGrace = () => {\n clearTimeout(graceTimer)\n grace = null\n ctx.provider.setInTransit(false)\n }\n // Radix tracks the grace area from an effect after the leave: the\n // pointer move that caused the leave itself is never judged.\n const createGrace = (e: PointerEvent, from: HTMLElement, to: HTMLElement) => {\n const area = graceArea({ x: e.clientX, y: e.clientY }, from.getBoundingClientRect(), to.getBoundingClientRect())\n ctx.provider.setInTransit(true)\n clearTimeout(graceTimer)\n graceTimer = setTimeout(() => (grace = area), 0)\n }\n const track = (e: PointerEvent) => {\n if (!grace) return\n const target = e.target as Node | null\n const entered = Boolean(ctx.trigger()?.contains(target) || contentEl?.contains(target))\n if (entered) removeGrace()\n else if (!inPolygon({ x: e.clientX, y: e.clientY }, grace)) {\n removeGrace()\n ctx.onClose()\n }\n }\n onCleanup(removeGrace)\n return (\n <Popper anchor={ctx.trigger()} side={local.side ?? `top`} align={local.align ?? `center`} sideOffset={local.sideOffset ?? 0} alignOffset={local.alignOffset} collisionPadding={local.collisionPadding ?? 0}>\n {(popper) => {\n const el = (\n <div data-side={popper.placedSide()} data-align={popper.placedAlign()} data-state={ctx.stateAttribute()} data-slot=\"tooltip-content\" class={cn(TOOLTIP_CLASSES.content, local.class)} {...rest}>\n {local.children}\n <VisuallyHidden id={ctx.contentId}>{local[`aria-label`] || local.children}</VisuallyHidden>\n </div>\n ) as HTMLDivElement\n contentEl = el\n presence.ref(el)\n popper.setContent(el)\n bindStyle(el, () => popperContentStyle(`tooltip`, `trigger`, layerPointerEvents(layer, registered(), lag), popper.isPositioned(), styleObject(local.style)))\n callRef(local.ref, el)\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n noteLayerMount()\n const close = () => ctx.onClose()\n document.addEventListener(TOOLTIP_OPEN, close)\n const onScroll = (e: Event) => {\n const target = e.target as Node | null\n const t = ctx.trigger()\n if (t && target?.contains?.(t)) ctx.onClose()\n }\n window.addEventListener(`scroll`, onScroll, { capture: true })\n const t = ctx.trigger()\n const onTriggerLeave = (e: PointerEvent) => t && createGrace(e, t, el)\n const onContentLeave = (e: PointerEvent) => t && createGrace(e, el, t)\n if (!ctx.disableHoverableContent && t) {\n t.addEventListener(`pointerleave`, onTriggerLeave)\n el.addEventListener(`pointerleave`, onContentLeave)\n document.addEventListener(`pointermove`, track)\n }\n onCleanup(() => {\n document.removeEventListener(TOOLTIP_OPEN, close)\n window.removeEventListener(`scroll`, onScroll, { capture: true })\n t?.removeEventListener(`pointerleave`, onTriggerLeave)\n el.removeEventListener(`pointerleave`, onContentLeave)\n document.removeEventListener(`pointermove`, track)\n })\n })\n return el\n }}\n </Popper>\n )\n }\n return (\n <DialogPortalPart container={local.container}>\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n </DialogPortalPart>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","import { createSignal, onCleanup, type Accessor } from \"solid-js\"\n\n/** Whether `query` matches right now, following changes (React's\n * `useMediaQuery`). Without a `window` or `matchMedia` it answers `false`. */\nexport function createMediaQuery(query: string): Accessor<boolean> {\n if (typeof window === `undefined` || typeof window.matchMedia !== `function`) return () => false\n const mql = window.matchMedia(query)\n const [matches, setMatches] = createSignal(mql.matches)\n const onChange = () => setMatches(window.matchMedia(query).matches)\n mql.addEventListener(`change`, onChange)\n onCleanup(() => mql.removeEventListener(`change`, onChange))\n return matches\n}\n","import { createSignal, onCleanup, onMount, type Accessor } from \"solid-js\"\n\nconst MOBILE_BREAKPOINT = 768\n\n/** Below the mobile breakpoint (React's `useIsMobile`): read synchronously\n * at creation (no first-frame desktop flash), then followed. */\nexport function createIsMobile(): Accessor<boolean> {\n const narrow = () => typeof window !== `undefined` && window.innerWidth < MOBILE_BREAKPOINT\n const [isMobile, setIsMobile] = createSignal(narrow())\n onMount(() => {\n if (typeof window.matchMedia !== `function`) {\n setIsMobile(narrow())\n return\n }\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => setIsMobile(narrow())\n mql.addEventListener(`change`, onChange)\n setIsMobile(narrow())\n onCleanup(() => mql.removeEventListener(`change`, onChange))\n })\n return isMobile\n}\n"],"names":["Alert","props","local","rest","splitProps","_el$","_tmpl$","_$spread","_$mergeProps","cn","alertVariants","variant","class","AlertTitle","_el$2","_tmpl$2","ALERT_CLASSES","title","AlertDescription","_el$3","_tmpl$3","description","callHandler","handler","event","Array","isArray","composeHandlers","user","ours","checkForDefaultPrevented","defaultPrevented","callRef","ref","el","mergeRefs","refs","r","styleObject","style","out","k","v","Object","entries","undefined","String","createOpenState","o","inner","setInner","createSignal","untrack","defaultOpen","open","set","next","prev","onOpenChange","stateOf","layerMounted","noteLayerMount","queueMicrotask","layerMountedThisTask","layerPointerEvents","layer","registered","lag","pointerEvents","DialogContext","createContext","useDialogContext","part","ctx","useContext","Error","DialogRoot","setOpen","trigger","setTrigger","value","modal","contentId","createId","titleId","descriptionId","_$createComponent","Provider","children","idCounter","DialogTriggerPart","Dynamic","component","as","type","r$","_ref$","onClick","DialogClosePart","_ref$2","DialogPortalPart","mounted","setMounted","onMount","LayerPortal","mount","_$memo","container","document","body","DialogOverlayPart","presence","createPresence","Overlay","bindStyle","useScrollLock","Show","when","DialogContentPart","Content","interactedOutside","pointerDownOutside","createLayer","disableOutsidePointerEvents","onEscapeKeyDown","e","onPointerDownOutside","original","detail","originalEvent","ctrlLeftClick","button","ctrlKey","preventDefault","onFocusOutside","onInteractOutside","target","contains","onDismiss","scope","createFocusScope","trapped","loop","onMountAutoFocus","onOpenAutoFocus","onUnmountAutoFocus","onCloseAutoFocus","focus","setRegistered","role","id","onKeyDown","_$insert","attach","useFocusGuards","useModalEffects","DialogTitlePart","DialogDescriptionPart","_el$4","_tmpl$4","CancelContext","AlertDialog","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","ALERT_DIALOG_CLASSES","overlay","AlertDialogContent","cancel","content","preventScroll","AlertDialogHeader","header","AlertDialogFooter","footer","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","action","AlertDialogCancel","AvatarContext","Avatar","status","setStatus","AVATAR_CLASSES","root","AvatarImage","createImageLoadingStatus","src","createEffect","on","s","onLoadingStatusChange","image","AvatarFallback","canRender","setCanRender","delayMs","ms","timer","window","setTimeout","onCleanup","clearTimeout","hue","avatarFallbackHue","userId","h","css","avatarFallbackColors","fallback","fallbackMuted","Badge","tone","count","BADGE_CLASSES","tones","badgeLabel","max","Breadcrumb","BreadcrumbList","BREADCRUMB_CLASSES","list","BreadcrumbItem","item","BreadcrumbLink","link","BreadcrumbPage","page","BreadcrumbSeparator","resolved","_el$5","_tmpl$5","separator","PaintIcon","icon","ChevronRight","BreadcrumbEllipsis","_el$6","_tmpl$6","_el$7","firstChild","ellipsis","Ellipsis","ellipsisIcon","_$effect","_$className","srOnly","Button","size","buttonVariants","className","clone","d","Date","getTime","startOfDay","getFullYear","getMonth","getDate","startOfMonth","endOfMonth","startOfYear","endOfYear","addDays","n","setDate","addMonths","day","end","setMonth","setFullYear","addYears","isSameDay","a","b","isSameMonth","differenceInCalendarDays","Math","round","UTC","differenceInCalendarMonths","maxDate","dates","reduce","minDate","startOfWeek","getDay","diff","weekStartsOn","endOfWeek","ISO","firstWeekContainsDate","getWeek","startOfWeekYear","year","weekYear","MONTHS","WEEKDAYS","WEEKDAYS_SHORT","pad","width","padStart","ordinal","rem100","isoDate","monthId","YEAR_FIRST","Set","EN_US","code","options","intl","Intl","DateTimeFormat","makeFmt","en","yearFirst","has","monthYear","long","weekdayLong","weekdayShort","monthLong","month","format","weekday","slice","CalendarDay","constructor","date","displayMonth","outside","displayMonthId","dateMonthId","isEqualTo","isObj","Boolean","isDateRange","rangeIncludesDate","range","excludeEnds","from","to","min","dateMatchModifiers","matchers","every","m","some","matcher","dow","dayOfWeek","includes","before","after","isDayBefore","isDayAfter","addToRange","initial","required","DEFAULT_CLASS_KEYS","NO_FLAGS","focused","disabled","hidden","today","DAY_FLAGS","keys","SELECTION_STATES","getDefaultClassNames","fromEntries","map","STATUS_STYLE","border","clip","height","margin","overflow","join","padding","position","Calendar","input","mergeProps","showOutsideDays","captionLayout","buttonVariant","locale","createMemo","fmt","week","sow","ISOWeek","eow","classNames","parts","CALENDAR_CLASSES","months","nav","button_previous","button_next","month_caption","dropdowns","dropdown_root","dropdown","caption_label","captionLabel","label","table","weekdays","week_number_header","week_number","showWeekNumber","dayFirst","weekNumbers","plain","range_start","range_middle","range_end","formatters","f","formatCaption","formatDay","formatMonthDropdown","toLocaleString","formatYearDropdown","y","formatWeekdayName","formatWeekNumber","formatWeekNumberHeader","labels","fromLocale","pick","key","own","l","dayLabel","selected","labelDayButton","labelGridcell","labelGrid","labelNav","labelNext","labelPrevious","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelMonthDropdown","labelYearDropdown","navMonths","start","startMonth","fromMonth","fromYear","endMonth","toMonth","toYear","yearDropdown","navStart","navEnd","initialMonth","numberOfMonths","defaultMonth","internalMonth","setInternalMonth","firstMonth","equals","calendar","first","displayMonths","i","push","last","length","gridStart","monthsEnd","constraint","gridEnd","fixedTotal","fixedWeeks","firstOfWeek","lastOfWeek","monthDates","filter","extra","weeks","weekNumber","w","find","x","days","reverseMonths","reverse","flatMap","offset","pagedNavigation","previousMonth","nextMonth","disableNavigation","goToMonth","onMonthChange","goToDay","baseModifiers","t","Map","name","modifiers","values","getModifiers","get","internalSelected","setInternalSelected","onSelect","isSelected","mode","select","triggerDate","p","full","resetOnSelect","singleDay","lastFocused","setLastFocused","focusTarget","focusable","priority","setFocused","autoFocus","blur","nextFocus","moveBy","moveDir","attempt","sign","moves","blocked","moveFocus","current","dayModifiers","dayClass","cls","modifiersClassNames","active","interactive","onDayClick","multiselectable","handlePrevious","onPrevClick","handleNext","onNextClick","onDayKeyDown","rtl","dir","keyMap","ArrowLeft","shiftKey","ArrowRight","ArrowDown","ArrowUp","PageUp","PageDown","Home","End","hit","stopPropagation","Chevron","Custom","components","CalendarChevron","DayButtonComponent","DayButton","CalendarDayButton","rootData","startsWith","kind","_","years","reverseYears","onChange","Number","currentTarget","base","nextSibling","_$use","addEventListener","For","each","_p$","_v$7","_v$8","orientation","chevron","_v$","_v$2","_v$3","months_dropdown","years_dropdown","_v$4","_v$5","_v$6","_$setAttribute","lang","nonce","hideNavigation","_el$8","_el$9","$$click","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","calendarMonth","_el$1","_tmpl$8","_el$10","_el$11","_el$15","_c$","_el$16","_tmpl$9","_el$17","layout","monthControl","_el$18","_tmpl$0","yearControl","_el$19","_v$25","_v$26","_$style","_el$20","_tmpl$1","hideWeekdays","_el$12","_tmpl$7","_el$13","_el$14","_v$17","_v$18","_el$21","_v$27","_v$28","calendarWeek","_el$22","_tmpl$11","_el$23","_tmpl$10","_el$24","_el$25","_tmpl$12","_c$2","day_button","tabindex","mods","onFocus","onDayFocus","onBlur","onDayBlur","onMouseEnter","onDayMouseEnter","onMouseLeave","onDayMouseLeave","_v$29","_v$30","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","_v$37","_v$38","_v$39","_v$19","_v$20","_v$21","_v$22","_v$23","month_grid","_v$24","_el$0","ChevronLeft","ChevronDown","bool","toLocaleDateString","dayButton","_$delegateEvents","slot","recipe","CardPart","CARD_CLASSES","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","isIndeterminate","c","Checkbox","defaultChecked","controlled","checked","setChecked","onCheckedChange","control","setControl","inForm","createInForm","stopped","form","reset","removeEventListener","call","CHECKBOX_CLASSES","cancelBubble","Check","indicator","CheckboxBubble","bubbles","createElementSize","bubbleOnChange","indeterminate","getOwnPropertyDescriptor","HTMLInputElement","prototype","opacity","transform","ChoiceTilesFrame","buttons","order","pictures","enabled","tabStop","firstPicked","findIndex","picked","onPick","choiceToggle","multiple","move","delta","step","forward","back","rootStyle","rootProps","display","gridTemplateColumns","columns","rootRef","invalid","index","state","$$keydown","tileProps","pictureProps","renderPicture","labelProps","descriptionProps","ChoiceTiles","choiceValues","renderImage","CHOICE_TILES_CLASSES","ImageIcon","placeholder","choiceColumns","tile","tileSelected","tileInvalid","picture","CodeBlock","codeBlockVariants","slotPart","CodeBlockPart","CODE_BLOCK_CLASSES","CodeBlockHeader","CodeBlockTitle","CodeBlockActions","CodeBlockFooter","CodeBlockCopyButton","copied","setCopied","copy","timeout","clipboard","navigator","writeText","then","catch","Copy","CodeBlockContent","source","lines","language","tokenizeCode","replace","maxLines","counterReset","startLine","maxHeight","tokenized","tokens","CodeBlockLine","token","text","CODE_TOKEN_CLASS","lineNumbers","split","line","wrap","empty","codeBlockLineVariants","lineContent","CollapsibleContext","Collapsible","createUniqueId","toggle","CollapsibleTrigger","CollapsibleContent","present","forceMount","isPresent","setIsPresent","isOpen","dims","setDims","node","measured","mountPrevented","measure","transitionDuration","animationName","rect","getBoundingClientRect","prevAnimation","stopWaiting","getComputedStyle","onStart","raf","requestAnimationFrame","cancelAnimationFrame","settle","done","CSS","escape","defer","CommandContext","GroupContext","useRoot","LABEL_STYLE","COMMAND_LABEL_STYLE","Command","version","setVersion","scheduled","store","createCommandStore","onValueChange","shouldFilter","schedule","flush","defaultValue","setValue","trim","subscribe","syncValue","track","listId","inputId","labelId","COMMAND_CLASSES","CommandInput","setSearch","shown","search","change","selectedId","Search","inputGlyph","CircleX","clearLabel","inputClear","inputWrapper","CommandList","sizer","observeCommandListHeight","setSizer","CommandEmpty","useEntry","entry","register","update","CommandGroup","headingId","seq","nextSeq","visible","groupVisible","heading","resolveChildren","groupValue","group","groupHeading","CommandItem","known","kids","forced","commandItemValue","keywords","pointer","score","onPointerMove","listener","COMMAND_SELECT_EVENT","CommandSeparator","alwaysRender","CommandShortcut","shortcut","ContextRing","percent","geometry","ringGeometry","showEmpty","CONTEXT_RING_CLASSES","RING_TONE_CLASS","normal","RING_SIZE","RING_RADIUS","RING_STROKE","circumference","dashOffset","svg","SheetDragContext","SheetDragProvider","createSheetDragHandleProps","SheetGrabber","drag","SHEET_CHROME_CLASSES","grabber","Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SHEET_CLASSES","SheetContent","side","showCloseButton","showGrabber","panel","dragClose","handleProps","createSheetDrag","click","sides","isTypeaheadPortalInteraction","close","X","closeIcon","SheetHeader","SheetFooter","SheetTitle","SheetDescription","Dialog","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DIALOG_CLASSES","DialogPresentationContext","DialogContent","mobile","isSheet","isPhone","createMediaQuery","DIALOG_PHONE_QUERY","setRef","MOBILE_ARMS","closePhoneHidden","phoneSheet","phoneSheetFull","DialogHeader","DialogBody","DialogFooter","DialogCancel","keepOnMobile","cancelPhoneHidden","DialogTitle","DialogDescription","DisclosureHeader","glyph","DISCLOSURE_HEADER_CLASSES","chevronTrailing","onToggle","DockCard","tint","pressable","onOpen","tabIndex","openLabel","DOCK_CARD_CLASSES","caption","meta","trailing","row","DockPile","setMeasured","nodes","items","offsetHeight","ResizeObserver","observer","observe","disconnect","dockPileGeometry","expanded","$$focusout","relatedTarget","onExpandedChange","$$focusin","pointerType","DOCK_PILE_CLASSES","placed","scale","delete","zIndex","RootContext","LevelOpenContext","DropdownMenu","useKeyboardTracking","triggerId","DropdownMenuPortal","DropdownMenuTrigger","onPointerDown","was","CONTENT_KEYS","DropdownMenuContent","MenuContent","anchor","align","sideOffset","alignOffset","collisionPadding","lagParentLayer","labelledBy","attrs","DROPDOWN_MENU_CLASSES","setContent","DropdownMenuGroup","insetAttr","inset","createItem","createSelectable","handlers","onPointerUp","onPointerLeave","ITEM_KEYS","DropdownMenuItem","checkedState","IndicatorContext","ItemIndicator","DropdownMenuCheckboxItem","_ref$3","checkItem","checkIcon","itemIndicator","RadioGroupContext","DropdownMenuRadioGroup","DropdownMenuRadioItem","_ref$4","Circle","radioIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","SubContext","useSub","DropdownMenuSub","parentOpen","DropdownMenuSubTrigger","sub","createMenuRow","openTimer","graceTimer","clearOpenTimer","level","setGrace","openKey","_ref$5","subTrigger","onItemEnter","dataset","right","bleed","near","far","area","clientX","clientY","top","bottom","onTriggerLeave","typingAhead","subChevron","DropdownMenuSubContent","closeKey","subContent","LUCIDE_STROKE","UNFOCUSABLE","IconDisc","ICON_DISC_CLASSES","strokeWidth","EmptyState","actions","EMPTY_STATE_CLASSES","listIcon","pageDescription","pageActions","pageTitle","ListEmpty","listEmpty","EmptyCta","cta","ctaIcon","ctaTitle","ctaDescription","GlassCard","GLASS_CARD_CLASSES","HoverCardContext","useHoverCard","excludeTouch","fn","HoverCard","flags","hasSelection","pointerDownOnContent","closeTimer","openDelay","HOVER_CARD_DELAYS","onClose","closeDelay","HoverCardTrigger","onPointerEnter","onTouchStart","HoverCardContent","containSelection","setContainSelection","userSelect","webkitUserSelect","Popper","popper","placedSide","placedAlign","HOVER_CARD_CLASSES","LayerContext","sel","popperContentStyle","isPositioned","getSelection","toString","untab","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","currentNode","setAttribute","MutationObserver","childList","subtree","Input","valueAttr","INPUT_CLASSES","Kbd","KBD_CLASSES","KbdGroup","Label","onMouseDown","closest","LABEL_CLASSES","isNumber","validMax","isNaN","validValue","progressState","Progress","getValueLabel","PROGRESS_CLASSES","indicatorIndeterminate","indicatorDeterminate","progressIndicatorTransform","Meter","METER_CLASSES","PopoverContext","usePopover","Popover","setAnchor","PopoverTrigger","PopoverAnchor","PopoverContent","rightClickOutside","POPOVER_CLASSES","ProgressRing","progressRingPercent","total","centre","PROGRESS_RING_CLASSES","colorClass","colorHex","color","AreaContext","reactTask","channel","MessageChannel","port1","onmessage","port2","postMessage","debounced","delay","observeResize","ro","unobserve","toInt","parseInt","unlinkedScroll","left","scrollLeft","scrollTop","pos","ScrollArea","scrollArea","setScrollArea","viewport","setViewport","scrollbarX","setScrollbarX","scrollbarY","setScrollbarY","xEnabled","setXEnabled","yEnabled","setYEnabled","cornerWidth","setCornerWidth","cornerHeight","setCornerHeight","scrollHideDelay","SCROLL_AREA_CLASSES","scrollAreaRootStyle","ScrollAreaViewport","ScrollBar","ScrollAreaCorner","SCROLL_AREA_VIEWPORT_CSS","scrollAreaViewportStyle","_$p","SCROLL_AREA_CONTENT_STYLE","horizontal","impl","hover","ScrollbarHover","scroll","ScrollbarScroll","auto","ScrollbarAuto","always","ScrollbarVisible","scrollbar","orientations","setVisible","hideTimer","enter","leave","scrollAreaVisibility","presenceRef","setState","SCROLL_AREA_SCROLL_INITIAL","send","SCROLL_AREA_SCROLL_MACHINE","scrollEnd","onScroll","resize","overflowX","offsetWidth","scrollWidth","overflowY","scrollHeight","BarContext","sizes","setSizes","paddingStart","paddingEnd","setScrollbar","computed","setComputed","thumb","pointerOffset","prevUserSelect","ratio","scrollAreaThumbRatio","positionThumb","scrollAreaThumbOffset","bar","hasThumb","setThumb","onThumbPositionChange","onThumbPointerDown","onThumbPointerUp","dragScroll","scrollAreaScrollFromPointer","onResize","cs","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","onWheel","deltaX","deltaY","passive","scrollAreaScrollbarStyle","scrollAreaThumbSize","handleDrag","setPointerCapture","pointerId","scrollBehavior","hasPointerCapture","releasePointerCapture","ScrollAreaThumb","removeUnlinked","capture","SCROLL_AREA_THUMB_STYLE","hasCorner","CornerImpl","setWidth","setHeight","scrollAreaCornerStyle","TabsContext","RovingContext","Tabs","baseId","activationMode","TABS_CLASSES","TabsList","stop","setStop","tabbingBackOut","setTabbingBackOut","clickFocus","all","isConnected","sort","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","roving","shiftTab","focusableCount","outline","keyboard","candidates","rovingFocusFirst","onFocusOut","TabsTrigger","intent","focusIntent","metaKey","altKey","at","indexOf","wrapArray","TabsContent","SegmentedControl","fill","SEGMENTED_CONTROL_CLASSES","option","CONTENT_MARGIN","SelectContext","useSelect","ContentContext","NO_CONTENT","selectedItem","searchRef","ViewportContext","ItemContext","createControllable","prop","nothing","shouldShowPlaceholder","Select","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","setItems","getItems","triggerPointerDownPos","setInForm","optionKey","keyed","_key","NativeSelect","SelectGroup","SelectValue","hasChildren","SELECT_INLINE","SelectTrigger","isDisabled","typeahead","radixTypeahead","textValue","findNextItem","handleOpen","pageX","pageY","SELECT_CLASSES","typing","modifier","OPEN_KEYS","triggerIcon","SelectContent","SelectScrollUpButton","Viewport","viewportPopper","SelectScrollDownButton","ClosedContent","ContentImpl","contentPopper","frag","createDocumentFragment","div","appendChild","setPositioned","selectedItemText","focusFirst","others","previous","activeElement","vp","scrollIntoView","block","focusSelectedItem","abs","up","once","defineProperty","contentCtx","onItemLeave","build","activate","wrapper","selectPopperContentStyle","mountIn","ItemAligned","onPlaced","shouldReposition","shouldExpandOnScroll","viewportCtx","contentWrapper","onScrollButtonChange","selectItemAlignedContentStyle","styleWriter","triggerRect","contentRect","valueNodeRect","itemTextRect","clamp","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","innerWidth","clampedLeft","minWidth","rightDelta","leftEdge","clampedRight","availableHeight","innerHeight","itemsHeight","contentStyles","contentBorderTopWidth","borderTopWidth","contentPaddingTop","contentBorderBottomWidth","borderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","offsetTop","contentTopToItemMiddle","itemMiddleToContentBottom","willAlignWithoutTopOverflow","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","clampedTopEdgeToTriggerMiddle","minHeight","vc","prevScrollTop","SELECT_VIEWPORT_CSS","scrolledBy","prevHeight","parseFloat","nextHeight","clampedNextHeight","heightDiff","justifyContent","expandEnd","SelectLabel","SelectItem","setTextValue","setLabel","textId","textEl","handleSelect","itemCtx","onItemTextChange","textContent","SELECTION_KEYS","itemCheck","ItemText","span","portalTarget","createTextNode","append","insert","remove","SelectSeparator","ScrollButton","can","setCan","handle","direction","ceil","ScrollButtonImpl","clear","clearInterval","onAutoScroll","setInterval","HTMLElement","SELECT_VIEWPORT_ATTR","scrollButton","ChevronUp","scrollIcon","Separator","decorative","SEPARATOR_CLASSES","Skeleton","SKELETON_CLASSES","Spinner","LoaderCircle","SPINNER_CLASSES","Switch","setButton","SWITCH_CLASSES","SwitchBubble","setInputChecked","Table","TABLE_CLASSES","TableHeader","TableBody","TableFooter","TableRow","TableHead","head","TableCell","cell","TableCaption","Textarea","TEXTAREA_CLASSES","KIND_ICONS","success","CircleCheck","error","info","Info","warning","TriangleAlert","toastStore","createToastStore","toast","Toaster","toasts","touchQuery","TOAST_TOUCH_QUERY","toastPlacement","touch","setExpanded","pauseAll","resumeAll","toastStackGeometry","anchoredBottom","placement","TOAST_CLASSES","region","regionPlacement","$$pointerdown","rank","kindIcon","iconSlot","dismiss","toastOrigin","closeLabel","listPlacement","TOOLTIP_OPEN","createProvider","openDelayed","inTransit","skipTimer","isOpenDelayed","delayDuration","skipDelayDuration","setInTransit","disableHoverableContent","ProviderContext","TooltipProvider","TooltipContext","useTooltip","Tooltip","provider","wasDelayed","setWasDelayed","setOpenState","dispatchEvent","CustomEvent","handleClose","handleDelayedOpen","stateAttribute","onTriggerEnter","TooltipTrigger","pointerDown","pointerMoveOpened","TooltipContent","contentEl","grace","removeGrace","createGrace","graceArea","entered","inPolygon","TOOLTIP_CLASSES","VisuallyHidden","onContentLeave"],"mappings":"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"}