@exponential_app/eui-solid 0.3.0 → 0.5.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.
@@ -1 +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/carousel.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/mosaic.tsx","../src/primitives/outline.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","../src/primitives/voice-wave.tsx"],"sourcesContent":["import { splitProps, type ComponentProps } from \"solid-js\"\nimport { ALERT_CLASSES, alertVariants, type AlertVariantProps } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui-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_app/eui/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_app/eui/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_app/eui/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 { For, Show, createRenderEffect, splitProps, type ComponentProps } from \"solid-js\"\nimport { CAROUSEL_CLASSES, carouselCounterText } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { CAROUSEL_GEOMETRY, carouselCounterText } from \"@exponential_app/eui/web/primitives\"\n\n/** EXP-1495: React's `CarouselCounter` (the `i / n` pill; `page` 0-based). */\nexport function CarouselCounter(props: Omit<ComponentProps<`span`>, `children`> & { page: number; total: number }) {\n const [local, rest] = splitProps(props, [`page`, `total`, `class`])\n return (\n <span data-slot=\"carousel-counter\" aria-hidden=\"true\" class={cn(CAROUSEL_CLASSES.counter, local.class)} {...rest}>\n {carouselCounterText(local.page, local.total)}\n </span>\n )\n}\n\nexport type CarouselThumbnailsProps = Omit<ComponentProps<`div`>, `children` | `onChange`> & {\n /** The page count: one thumbnail per page. */\n count: number\n /** The pictures by page; past `count` ignored, a missing one = the empty square. */\n urls: readonly (string | null | undefined)[]\n /** The current page (0-based). */\n page: number\n onPageChange?: (page: number) => void\n /** Each thumbnail's accessible name (default `Page i of n`). */\n pageLabel?: (page: number, total: number) => string\n}\n\nconst defaultPageLabel = (page: number, total: number) => `Page ${page + 1} of ${total}`\n\n/** EXP-1495: React's `CarouselThumbnails` (one button per page, the current\n * one ringed and scrolled into view inside the strip). */\nexport function CarouselThumbnails(props: CarouselThumbnailsProps) {\n const [local, rest] = splitProps(props, [`count`, `urls`, `page`, `onPageChange`, `pageLabel`, `class`])\n let strip: HTMLDivElement | undefined\n const n = () => Math.max(0, Math.floor(local.count))\n const indexes = () => Array.from({ length: n() }, (_, i) => i)\n const label = (i: number) => (local.pageLabel ?? defaultPageLabel)(i, n())\n createRenderEffect(() => {\n const page = local.page\n n()\n queueMicrotask(() => {\n const el = strip\n const thumb = el?.children[page] as HTMLElement | undefined\n if (!el || !thumb) return\n const a = el.getBoundingClientRect()\n const b = thumb.getBoundingClientRect()\n const delta = b.left < a.left ? b.left - a.left : b.right > a.right ? b.right - a.right : 0\n if (delta !== 0) el.scrollLeft += delta\n })\n })\n return (\n <div ref={strip} data-slot=\"carousel-thumbnails\" class={cn(CAROUSEL_CLASSES.thumbnails, local.class)} {...rest}>\n <For each={indexes()}>\n {(i) => {\n const current = () => i === local.page\n return (\n <button\n type=\"button\"\n data-slot=\"carousel-thumbnail\"\n data-current={current() ? `true` : undefined}\n aria-current={current() ? `true` : undefined}\n aria-label={label(i)}\n class={CAROUSEL_CLASSES.thumbnail}\n onClick={() => local.onPageChange?.(i)}\n >\n <Show when={local.urls[i]}>\n {(src) => <img src={src()} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" draggable={false} class={CAROUSEL_CLASSES.thumbnailImage} />}\n </Show>\n </button>\n )\n }}\n </For>\n </div>\n )\n}\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_app/eui/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_app/eui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css, type StyleInput } from \"../style\"\nimport { cn } from \"./cn\"\n\nexport { choiceColumns, choiceToggle, choiceValues } from \"@exponential_app/eui/web/primitives\"\nexport type { ChoiceTileOption, TileState } from \"@exponential_app/eui/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_app/eui\"\nimport { CODE_BLOCK_CLASSES, CODE_TOKEN_CLASS, codeBlockLineVariants, codeBlockVariants, type CodeBlockLineVariantProps, type CodeBlockVariantProps } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { RingGeometry, RingTone } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { DockCardTint } from \"@exponential_app/eui/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_app/eui/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_app/eui/web/primitives\"\n\nimport type { IconComponent } from \"../host\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nexport { ICON_DISC_TONES } from \"@exponential_app/eui/web/primitives\"\nexport type { IconDiscTone } from \"@exponential_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { EmptyStateSize } from \"@exponential_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { GLASS_CARD_CLASS, GLASS_CARD_CLASSES } from \"@exponential_app/eui/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_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { BARE_FIELD_CLASS, FIELD_CHROME_CLASS } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\n\nimport { Progress, type ProgressProps } from \"./progress\"\nimport { cn } from \"./cn\"\n\nexport type { MeterTone } from \"@exponential_app/eui/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 { For, Show, splitProps, type ComponentProps } from \"solid-js\"\nimport { MOSAIC_CLASSES, mosaicTiles, type MosaicTile } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { MOSAIC_GEOMETRY, mosaicTiles } from \"@exponential_app/eui/web/primitives\"\nexport type { MosaicTile, MosaicTileSize } from \"@exponential_app/eui/web/primitives\"\n\nexport interface MosaicPicture {\n src: string\n alt?: string\n}\n\nexport type MosaicProps = Omit<ComponentProps<`div`>, `onSelect` | `children`> & {\n pictures: readonly MosaicPicture[]\n /** The group's accessible name. */\n label?: string\n /** A tile press: its picture index (0, 1 or 2; the host opens its lightbox). */\n onSelect?: (index: number) => void\n}\n\n/** EXP-1495: React's `Mosaic` (the WIDE picture group on `mosaicTiles`). */\nexport function Mosaic(props: MosaicProps) {\n const [local, rest] = splitProps(props, [`pictures`, `label`, `onSelect`, `class`])\n const tiles = () => mosaicTiles(local.pictures.length)\n const Tile = (p: { tile: MosaicTile; lead: boolean }) => {\n const picture = () => local.pictures[p.tile.index]!\n const alt = () => picture().alt ?? ``\n return (\n <button\n type=\"button\"\n data-slot=\"mosaic-tile\"\n data-size={p.tile.size}\n aria-label={p.tile.more > 0 ? `${alt()}, ${p.tile.more} more` : alt() || undefined}\n class={cn(MOSAIC_CLASSES.tile, p.lead ? MOSAIC_CLASSES.lead : MOSAIC_CLASSES.fill)}\n onClick={() => local.onSelect?.(p.tile.index)}\n >\n <img src={picture().src} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" draggable={false} class={MOSAIC_CLASSES.image} />\n <Show when={p.tile.more > 0}>\n <span aria-hidden=\"true\" class={MOSAIC_CLASSES.more}>\n {`+${p.tile.more}`}\n </span>\n </Show>\n </button>\n )\n }\n return (\n <div data-slot=\"mosaic\" role=\"group\" aria-label={local.label || undefined} class={cn(MOSAIC_CLASSES.root, local.class)} {...rest}>\n <Show when={tiles().length >= 3} fallback={<For each={tiles()}>{(t) => <Tile tile={t} lead={false} />}</For>}>\n <Tile tile={tiles()[0]!} lead />\n <div data-slot=\"mosaic-side\" class={MOSAIC_CLASSES.side}>\n <For each={tiles().slice(1)}>{(t) => <Tile tile={t} lead={false} />}</For>\n </div>\n </Show>\n </div>\n )\n}\n","import { For, Show, splitProps, type ComponentProps } from \"solid-js\"\nimport { OUTLINE_CLASSES, outlineCountText, type OutlineItem } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { OUTLINE_GEOMETRY, outlineCountText } from \"@exponential_app/eui/web/primitives\"\nexport type { OutlineItem } from \"@exponential_app/eui/web/primitives\"\n\nexport type OutlineProps = Omit<ComponentProps<`nav`>, `onSelect` | `children`> & {\n items: readonly OutlineItem[]\n /** The active row's id (the host's scroll-spy binds it); none = no active row. */\n value?: string | null\n /** The uppercase caption over the rows (and the nav's name). */\n caption?: string\n onSelect?: (id: string) => void\n}\n\n/** EXP-1495: React's `Outline` (an anchor list, ONE active row, a `· n` count). */\nexport function Outline(props: OutlineProps) {\n const [local, rest] = splitProps(props, [`items`, `value`, `caption`, `onSelect`, `class`])\n return (\n <nav data-slot=\"outline\" aria-label={local.caption || `Outline`} class={cn(OUTLINE_CLASSES.root, local.class)} {...rest}>\n <Show when={local.caption}>\n <div data-slot=\"outline-caption\" aria-hidden=\"true\" class={OUTLINE_CLASSES.caption}>\n {local.caption}\n </div>\n </Show>\n <For each={local.items}>\n {(item) => {\n const active = () => local.value != null && item.id === local.value\n const count = () => outlineCountText(item.count)\n return (\n <button\n type=\"button\"\n data-slot=\"outline-row\"\n data-active={active() ? `true` : undefined}\n aria-current={active() ? `location` : undefined}\n aria-label={count() ? `${item.title}, ${item.count}` : undefined}\n class={OUTLINE_CLASSES.row}\n onClick={() => local.onSelect?.(item.id)}\n >\n <Show when={active()}>\n <span data-slot=\"outline-bar\" aria-hidden=\"true\" class={OUTLINE_CLASSES.bar} />\n </Show>\n <span class={OUTLINE_CLASSES.title}>{item.title}</span>\n <Show when={count()}>\n <span aria-hidden=\"true\" class={OUTLINE_CLASSES.count}>\n {count()}\n </span>\n </Show>\n </button>\n )\n }}\n </For>\n </nav>\n )\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_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { progressRingPercent } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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// The glass-group row (`embedded`) is the Exponential app's own arm, in\n// @exp/ui; both SDK twins draw 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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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 layoutSize,\n toastPlacement,\n toastStackGeometry,\n type ToastKind,\n type ToastRecord,\n type ToastStore,\n} from \"@exponential_app/eui/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] = layoutSize(el).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_app/eui/web/primitives\"\nexport type { ToastKind, ToastOptions, ToastRecord, ToastStore, ToastAction, ToastPlacement } from \"@exponential_app/eui/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_app/eui/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","import { Index, Show, children as resolveChildren, createEffect, createMemo, createSignal, onCleanup, type JSX } from \"solid-js\"\nimport { voiceWave, voiceWaveChildBox, voiceWavePath } from \"@exponential_app/eui\"\nimport {\n VOICE_WAVE_CLASSES,\n VOICE_WAVE_SIZE_PX,\n voiceWaveAnimates,\n voiceWaveClock,\n voiceWaveFitChild,\n voiceWaveName,\n voiceWaveQuiet,\n type VoiceWaveActivity,\n type VoiceWaveSize,\n} from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { createMediaQuery } from \"./use-media-query\"\n\nexport type { VoiceWaveActivity, VoiceWaveSize } from \"@exponential_app/eui/web/primitives\"\n\nexport interface VoiceWaveProps {\n activity?: VoiceWaveActivity\n /** Loudness 0..1. */\n level?: number\n /** Up to 8 band levels 0..1. */\n bands?: readonly number[]\n size?: VoiceWaveSize\n /** The accessible name (the activity is appended); none = decorative. */\n label?: string\n class?: string\n /** The centre, at its own size, drawn scaled down to the wave's child\n * box (never up; kept but not painted at `sm`). */\n children?: JSX.Element\n}\n\n/** NEW-77 (React's primitives/voice-wave.tsx): the Exponential UI\n * `VoiceWave` native as a primitive: three closed waves (the core's\n * `voiceWave`) around an optional centre child, moving while listening,\n * thinking or speaking (not under reduced motion). */\nexport function VoiceWave(props: VoiceWaveProps) {\n const reducedMotion = createMediaQuery(`(prefers-reduced-motion: reduce)`)\n const activity = () => props.activity ?? `idle`\n const size = () => props.size ?? `md`\n const px = () => VOICE_WAVE_SIZE_PX[size()] ?? VOICE_WAVE_SIZE_PX.md\n const [elapsed, setElapsed] = createSignal(0)\n const animates = createMemo(() => voiceWaveAnimates(activity()) && !reducedMotion())\n createEffect(() => {\n if (!animates()) {\n setElapsed(0)\n return\n }\n onCleanup(voiceWaveClock(setElapsed))\n })\n const wave = createMemo(() => voiceWave({ size: px(), activity: activity(), level: props.level ?? 0, bands: props.bands, reducedMotion: reducedMotion(), elapsed: elapsed() }))\n const quiet = () => voiceWaveQuiet(activity())\n const name = () => voiceWaveName(props.label, activity())\n const child = resolveChildren(() => props.children)\n const hasChild = () => {\n const c = child()\n return c !== undefined && c !== null && (!Array.isArray(c) || c.length > 0)\n }\n return (\n <span\n data-slot=\"voice-wave\"\n data-activity={activity()}\n data-size={size()}\n role={name() ? `img` : undefined}\n aria-label={name()}\n aria-hidden={name() ? undefined : `true`}\n class={cn(VOICE_WAVE_CLASSES.root, VOICE_WAVE_CLASSES.size[size()], quiet() && VOICE_WAVE_CLASSES.quiet, props.class)}\n >\n <svg viewBox={`0 0 ${px()} ${px()}`} width={px()} height={px()} aria-hidden=\"true\" class={VOICE_WAVE_CLASSES.svg}>\n <Index each={wave().rings}>\n {(ring) => (\n <path\n data-slot=\"voice-wave-ring\"\n data-ring={ring().part}\n class={quiet() ? VOICE_WAVE_CLASSES.ringQuiet : VOICE_WAVE_CLASSES.ring[ring().part]}\n d={voiceWavePath(ring())}\n fill=\"currentColor\"\n fill-opacity={ring().fillAlpha}\n stroke=\"currentColor\"\n stroke-opacity={ring().strokeAlpha}\n stroke-width={ring().strokeWidth}\n stroke-linejoin=\"round\"\n />\n )}\n </Index>\n </svg>\n <Show when={hasChild()}>\n <span\n ref={(el) =>\n createEffect(() => {\n const edge = px()\n onCleanup(voiceWaveFitChild(el, (c) => voiceWaveChildBox(edge, c).scale))\n })\n }\n data-slot=\"voice-wave-child\"\n aria-hidden={wave().childSize > 0 ? undefined : `true`}\n class={cn(VOICE_WAVE_CLASSES.child, activity() === `muted` && VOICE_WAVE_CLASSES.childMuted, wave().childSize > 0 ? undefined : VOICE_WAVE_CLASSES.childHidden)}\n >\n {child()}\n </span>\n </Show>\n </span>\n )\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","CarouselCounter","CAROUSEL_CLASSES","counter","carouselCounterText","total","defaultPageLabel","CarouselThumbnails","strip","floor","indexes","pageLabel","createRenderEffect","thumb","getBoundingClientRect","delta","left","right","scrollLeft","thumbnails","onPageChange","urls","thumbnailImage","thumbnail","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","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","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","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","Mosaic","tiles","mosaicTiles","Tile","alt","more","MOSAIC_CLASSES","lead","fill","Outline","OUTLINE_CLASSES","outlineCountText","bar","PopoverContext","usePopover","Popover","setAnchor","PopoverTrigger","PopoverAnchor","PopoverContent","rightClickOutside","POPOVER_CLASSES","ProgressRing","progressRingPercent","centre","PROGRESS_RING_CLASSES","colorClass","colorHex","color","AreaContext","reactTask","channel","MessageChannel","port1","onmessage","port2","postMessage","debounced","delay","observeResize","ro","unobserve","toInt","parseInt","unlinkedScroll","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","pointerOffset","prevUserSelect","ratio","scrollAreaThumbRatio","positionThumb","scrollAreaThumbOffset","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","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","layoutSize","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","VoiceWave","reducedMotion","activity","px","VOICE_WAVE_SIZE_PX","md","elapsed","setElapsed","animates","voiceWaveAnimates","voiceWaveClock","wave","voiceWave","bands","quiet","voiceWaveQuiet","voiceWaveName","child","hasChild","Index","rings","ring","VOICE_WAVE_CLASSES","ringQuiet","voiceWavePath","fillAlpha","strokeAlpha","edge","voiceWaveFitChild","voiceWaveChildBox","childSize","childMuted","childHidden"],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sources":["../src/primitives/alert.tsx","../src/primitives/alert-dialog.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/breadcrumb.tsx","../src/primitives/calendar.tsx","../src/primitives/card.tsx","../src/primitives/carousel.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/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/mosaic.tsx","../src/primitives/outline.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-mobile.ts","../src/primitives/voice-wave.tsx"],"sourcesContent":["import { splitProps, type ComponentProps } from \"solid-js\"\nimport { ALERT_CLASSES, alertVariants, type AlertVariantProps } from \"@exponential_app/eui/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","import { createContext, splitProps, useContext, type ComponentProps, type JSX } from \"solid-js\"\nimport { ALERT_DIALOG_CLASSES } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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","// FEED-131: shadcn's Calendar on Solid, the twin of\n// @exponential_app/eui-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_app/eui/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_app/eui/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_app/eui/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 { For, Show, createRenderEffect, splitProps, type ComponentProps } from \"solid-js\"\nimport { CAROUSEL_CLASSES, carouselCounterText } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { CAROUSEL_GEOMETRY, carouselCounterText } from \"@exponential_app/eui/web/primitives\"\n\n/** EXP-1495: React's `CarouselCounter` (the `i / n` pill; `page` 0-based). */\nexport function CarouselCounter(props: Omit<ComponentProps<`span`>, `children`> & { page: number; total: number }) {\n const [local, rest] = splitProps(props, [`page`, `total`, `class`])\n return (\n <span data-slot=\"carousel-counter\" aria-hidden=\"true\" class={cn(CAROUSEL_CLASSES.counter, local.class)} {...rest}>\n {carouselCounterText(local.page, local.total)}\n </span>\n )\n}\n\nexport type CarouselThumbnailsProps = Omit<ComponentProps<`div`>, `children` | `onChange`> & {\n /** The page count: one thumbnail per page. */\n count: number\n /** The pictures by page; past `count` ignored, a missing one = the empty square. */\n urls: readonly (string | null | undefined)[]\n /** The current page (0-based). */\n page: number\n onPageChange?: (page: number) => void\n /** Each thumbnail's accessible name (default `Page i of n`). */\n pageLabel?: (page: number, total: number) => string\n}\n\nconst defaultPageLabel = (page: number, total: number) => `Page ${page + 1} of ${total}`\n\n/** EXP-1495: React's `CarouselThumbnails` (one button per page, the current\n * one ringed and scrolled into view inside the strip). */\nexport function CarouselThumbnails(props: CarouselThumbnailsProps) {\n const [local, rest] = splitProps(props, [`count`, `urls`, `page`, `onPageChange`, `pageLabel`, `class`])\n let strip: HTMLDivElement | undefined\n const n = () => Math.max(0, Math.floor(local.count))\n const indexes = () => Array.from({ length: n() }, (_, i) => i)\n const label = (i: number) => (local.pageLabel ?? defaultPageLabel)(i, n())\n createRenderEffect(() => {\n const page = local.page\n n()\n queueMicrotask(() => {\n const el = strip\n const thumb = el?.children[page] as HTMLElement | undefined\n if (!el || !thumb) return\n const a = el.getBoundingClientRect()\n const b = thumb.getBoundingClientRect()\n const delta = b.left < a.left ? b.left - a.left : b.right > a.right ? b.right - a.right : 0\n if (delta !== 0) el.scrollLeft += delta\n })\n })\n return (\n <div ref={strip} data-slot=\"carousel-thumbnails\" class={cn(CAROUSEL_CLASSES.thumbnails, local.class)} {...rest}>\n <For each={indexes()}>\n {(i) => {\n const current = () => i === local.page\n return (\n <button\n type=\"button\"\n data-slot=\"carousel-thumbnail\"\n data-current={current() ? `true` : undefined}\n aria-current={current() ? `true` : undefined}\n aria-label={label(i)}\n class={CAROUSEL_CLASSES.thumbnail}\n onClick={() => local.onPageChange?.(i)}\n >\n <Show when={local.urls[i]}>\n {(src) => <img src={src()} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" draggable={false} class={CAROUSEL_CLASSES.thumbnailImage} />}\n </Show>\n </button>\n )\n }}\n </For>\n </div>\n )\n}\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_app/eui/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_app/eui/web/primitives\"\n\nimport { PaintIcon } from \"../icons\"\nimport { css, type StyleInput } from \"../style\"\nimport { cn } from \"./cn\"\n\nexport { choiceColumns, choiceToggle, choiceValues } from \"@exponential_app/eui/web/primitives\"\nexport type { ChoiceTileOption, TileState } from \"@exponential_app/eui/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_app/eui\"\nimport { CODE_BLOCK_CLASSES, CODE_TOKEN_CLASS, codeBlockLineVariants, codeBlockVariants, type CodeBlockLineVariantProps, type CodeBlockVariantProps } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { RingGeometry, RingTone } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { DockCardTint } from \"@exponential_app/eui/web/primitives\"\n","import type { JSX } from \"solid-js\"\nimport { ICON_DISC_CLASSES, type IconDiscTone } from \"@exponential_app/eui/web/primitives\"\n\nimport type { IconComponent } from \"../host\"\nimport { PaintIcon } from \"../icons\"\nimport { cn } from \"./cn\"\n\nexport { ICON_DISC_TONES } from \"@exponential_app/eui/web/primitives\"\nexport type { IconDiscTone } from \"@exponential_app/eui/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_app/eui/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_app/eui/web/primitives\"\nexport type { EmptyStateSize } from \"@exponential_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { GLASS_CARD_CLASS, GLASS_CARD_CLASSES } from \"@exponential_app/eui/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_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { BARE_FIELD_CLASS, FIELD_CHROME_CLASS } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/web/primitives\"\n\nimport { Progress, type ProgressProps } from \"./progress\"\nimport { cn } from \"./cn\"\n\nexport type { MeterTone } from \"@exponential_app/eui/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 { For, Show, splitProps, type ComponentProps } from \"solid-js\"\nimport { MOSAIC_CLASSES, mosaicTiles, type MosaicTile } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { MOSAIC_GEOMETRY, mosaicTiles } from \"@exponential_app/eui/web/primitives\"\nexport type { MosaicTile, MosaicTileSize } from \"@exponential_app/eui/web/primitives\"\n\nexport interface MosaicPicture {\n src: string\n alt?: string\n}\n\nexport type MosaicProps = Omit<ComponentProps<`div`>, `onSelect` | `children`> & {\n pictures: readonly MosaicPicture[]\n /** The group's accessible name. */\n label?: string\n /** A tile press: its picture index (0, 1 or 2; the host opens its lightbox). */\n onSelect?: (index: number) => void\n}\n\n/** EXP-1495: React's `Mosaic` (the WIDE picture group on `mosaicTiles`). */\nexport function Mosaic(props: MosaicProps) {\n const [local, rest] = splitProps(props, [`pictures`, `label`, `onSelect`, `class`])\n const tiles = () => mosaicTiles(local.pictures.length)\n const Tile = (p: { tile: MosaicTile; lead: boolean }) => {\n const picture = () => local.pictures[p.tile.index]!\n const alt = () => picture().alt ?? ``\n return (\n <button\n type=\"button\"\n data-slot=\"mosaic-tile\"\n data-size={p.tile.size}\n aria-label={p.tile.more > 0 ? `${alt()}, ${p.tile.more} more` : alt() || undefined}\n class={cn(MOSAIC_CLASSES.tile, p.lead ? MOSAIC_CLASSES.lead : MOSAIC_CLASSES.fill)}\n onClick={() => local.onSelect?.(p.tile.index)}\n >\n <img src={picture().src} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" draggable={false} class={MOSAIC_CLASSES.image} />\n <Show when={p.tile.more > 0}>\n <span aria-hidden=\"true\" class={MOSAIC_CLASSES.more}>\n {`+${p.tile.more}`}\n </span>\n </Show>\n </button>\n )\n }\n return (\n <div data-slot=\"mosaic\" role=\"group\" aria-label={local.label || undefined} class={cn(MOSAIC_CLASSES.root, local.class)} {...rest}>\n <Show when={tiles().length >= 3} fallback={<For each={tiles()}>{(t) => <Tile tile={t} lead={false} />}</For>}>\n <Tile tile={tiles()[0]!} lead />\n <div data-slot=\"mosaic-side\" class={MOSAIC_CLASSES.side}>\n <For each={tiles().slice(1)}>{(t) => <Tile tile={t} lead={false} />}</For>\n </div>\n </Show>\n </div>\n )\n}\n","import { For, Show, splitProps, type ComponentProps } from \"solid-js\"\nimport { OUTLINE_CLASSES, outlineCountText, type OutlineItem } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { OUTLINE_GEOMETRY, outlineCountText } from \"@exponential_app/eui/web/primitives\"\nexport type { OutlineItem } from \"@exponential_app/eui/web/primitives\"\n\nexport type OutlineProps = Omit<ComponentProps<`nav`>, `onSelect` | `children`> & {\n items: readonly OutlineItem[]\n /** The active row's id (the host's scroll-spy binds it); none = no active row. */\n value?: string | null\n /** The uppercase caption over the rows (and the nav's name). */\n caption?: string\n onSelect?: (id: string) => void\n}\n\n/** EXP-1495: React's `Outline` (an anchor list, ONE active row, a `· n` count). */\nexport function Outline(props: OutlineProps) {\n const [local, rest] = splitProps(props, [`items`, `value`, `caption`, `onSelect`, `class`])\n return (\n <nav data-slot=\"outline\" aria-label={local.caption || `Outline`} class={cn(OUTLINE_CLASSES.root, local.class)} {...rest}>\n <Show when={local.caption}>\n <div data-slot=\"outline-caption\" aria-hidden=\"true\" class={OUTLINE_CLASSES.caption}>\n {local.caption}\n </div>\n </Show>\n <For each={local.items}>\n {(item) => {\n const active = () => local.value != null && item.id === local.value\n const count = () => outlineCountText(item.count)\n return (\n <button\n type=\"button\"\n data-slot=\"outline-row\"\n data-active={active() ? `true` : undefined}\n aria-current={active() ? `location` : undefined}\n aria-label={count() ? `${item.title}, ${item.count}` : undefined}\n class={OUTLINE_CLASSES.row}\n onClick={() => local.onSelect?.(item.id)}\n >\n <Show when={active()}>\n <span data-slot=\"outline-bar\" aria-hidden=\"true\" class={OUTLINE_CLASSES.bar} />\n </Show>\n <span class={OUTLINE_CLASSES.title}>{item.title}</span>\n <Show when={count()}>\n <span aria-hidden=\"true\" class={OUTLINE_CLASSES.count}>\n {count()}\n </span>\n </Show>\n </button>\n )\n }}\n </For>\n </nav>\n )\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_app/eui/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_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { progressRingPercent } from \"@exponential_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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// The glass-group row (`embedded`) is the Exponential app's own arm, in\n// @exp/ui; both SDK twins draw 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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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_app/eui/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 layoutSize,\n toastPlacement,\n toastStackGeometry,\n type ToastKind,\n type ToastRecord,\n type ToastStore,\n} from \"@exponential_app/eui/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] = layoutSize(el).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_app/eui/web/primitives\"\nexport type { ToastKind, ToastOptions, ToastRecord, ToastStore, ToastAction, ToastPlacement } from \"@exponential_app/eui/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_app/eui/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, 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","import { Index, Show, children as resolveChildren, createEffect, createMemo, createSignal, onCleanup, type JSX } from \"solid-js\"\nimport { voiceWave, voiceWaveChildBox, voiceWavePath } from \"@exponential_app/eui\"\nimport {\n VOICE_WAVE_CLASSES,\n VOICE_WAVE_SIZE_PX,\n voiceWaveAnimates,\n voiceWaveClock,\n voiceWaveFitChild,\n voiceWaveName,\n voiceWaveQuiet,\n type VoiceWaveActivity,\n type VoiceWaveSize,\n} from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { createMediaQuery } from \"./use-media-query\"\n\nexport type { VoiceWaveActivity, VoiceWaveSize } from \"@exponential_app/eui/web/primitives\"\n\nexport interface VoiceWaveProps {\n activity?: VoiceWaveActivity\n /** Loudness 0..1. */\n level?: number\n /** Up to 8 band levels 0..1. */\n bands?: readonly number[]\n size?: VoiceWaveSize\n /** The accessible name (the activity is appended); none = decorative. */\n label?: string\n class?: string\n /** The centre, at its own size, drawn scaled down to the wave's child\n * box (never up; kept but not painted at `sm`). */\n children?: JSX.Element\n}\n\n/** NEW-77 (React's primitives/voice-wave.tsx): the Exponential UI\n * `VoiceWave` native as a primitive: three closed waves (the core's\n * `voiceWave`) around an optional centre child, moving while listening,\n * thinking or speaking (not under reduced motion). */\nexport function VoiceWave(props: VoiceWaveProps) {\n const reducedMotion = createMediaQuery(`(prefers-reduced-motion: reduce)`)\n const activity = () => props.activity ?? `idle`\n const size = () => props.size ?? `md`\n const px = () => VOICE_WAVE_SIZE_PX[size()] ?? VOICE_WAVE_SIZE_PX.md\n const [elapsed, setElapsed] = createSignal(0)\n const animates = createMemo(() => voiceWaveAnimates(activity()) && !reducedMotion())\n createEffect(() => {\n if (!animates()) {\n setElapsed(0)\n return\n }\n onCleanup(voiceWaveClock(setElapsed))\n })\n const wave = createMemo(() => voiceWave({ size: px(), activity: activity(), level: props.level ?? 0, bands: props.bands, reducedMotion: reducedMotion(), elapsed: elapsed() }))\n const quiet = () => voiceWaveQuiet(activity())\n const name = () => voiceWaveName(props.label, activity())\n const child = resolveChildren(() => props.children)\n const hasChild = () => {\n const c = child()\n return c !== undefined && c !== null && (!Array.isArray(c) || c.length > 0)\n }\n return (\n <span\n data-slot=\"voice-wave\"\n data-activity={activity()}\n data-size={size()}\n role={name() ? `img` : undefined}\n aria-label={name()}\n aria-hidden={name() ? undefined : `true`}\n class={cn(VOICE_WAVE_CLASSES.root, VOICE_WAVE_CLASSES.size[size()], quiet() && VOICE_WAVE_CLASSES.quiet, props.class)}\n >\n <svg viewBox={`0 0 ${px()} ${px()}`} width={px()} height={px()} aria-hidden=\"true\" class={VOICE_WAVE_CLASSES.svg}>\n <Index each={wave().rings}>\n {(ring) => (\n <path\n data-slot=\"voice-wave-ring\"\n data-ring={ring().part}\n class={quiet() ? VOICE_WAVE_CLASSES.ringQuiet : VOICE_WAVE_CLASSES.ring[ring().part]}\n d={voiceWavePath(ring())}\n fill=\"currentColor\"\n fill-opacity={ring().fillAlpha}\n stroke=\"currentColor\"\n stroke-opacity={ring().strokeAlpha}\n stroke-width={ring().strokeWidth}\n stroke-linejoin=\"round\"\n />\n )}\n </Index>\n </svg>\n <Show when={hasChild()}>\n <span\n ref={(el) =>\n createEffect(() => {\n const edge = px()\n onCleanup(voiceWaveFitChild(el, (c) => voiceWaveChildBox(edge, c).scale))\n })\n }\n data-slot=\"voice-wave-child\"\n aria-hidden={wave().childSize > 0 ? undefined : `true`}\n class={cn(VOICE_WAVE_CLASSES.child, activity() === `muted` && VOICE_WAVE_CLASSES.childMuted, wave().childSize > 0 ? undefined : VOICE_WAVE_CLASSES.childHidden)}\n >\n {child()}\n </span>\n </Show>\n </span>\n )\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","CancelContext","createContext","AlertDialog","_$createComponent","DialogRoot","modal","AlertDialogTrigger","DialogTriggerPart","AlertDialogPortal","DialogPortalPart","AlertDialogOverlay","DialogOverlayPart","ALERT_DIALOG_CLASSES","overlay","AlertDialogContent","cancel","container","children","Provider","value","DialogContentPart","role","content","onOpenAutoFocus","e","defaultPrevented","preventDefault","focus","preventScroll","onPointerDownOutside","onInteractOutside","AlertDialogHeader","header","AlertDialogFooter","footer","AlertDialogTitle","DialogTitlePart","AlertDialogDescription","DialogDescriptionPart","AlertDialogAction","DialogClosePart","action","AlertDialogCancel","ctx","useContext","ref","r$","_ref$","mergeRefs","el","AvatarContext","Avatar","status","setStatus","createSignal","AVATAR_CLASSES","root","AvatarImage","createImageLoadingStatus","src","createEffect","on","s","onLoadingStatusChange","Show","when","image","AvatarFallback","canRender","setCanRender","delayMs","undefined","ms","timer","window","setTimeout","onCleanup","clearTimeout","hue","avatarFallbackHue","userId","style","h","css","avatarFallbackColors","_$memo","fallback","fallbackMuted","Badge","tone","count","BADGE_CLASSES","tones","_$insert","badgeLabel","max","Breadcrumb","BreadcrumbList","BREADCRUMB_CLASSES","list","BreadcrumbItem","item","BreadcrumbLink","Dynamic","component","as","link","BreadcrumbPage","_el$4","_tmpl$4","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","clone","d","Date","getTime","startOfDay","getFullYear","getMonth","getDate","startOfMonth","endOfMonth","startOfYear","endOfYear","addDays","n","out","setDate","addMonths","day","end","setMonth","setFullYear","addYears","isSameDay","a","b","isSameMonth","differenceInCalendarDays","Math","round","UTC","differenceInCalendarMonths","maxDate","dates","reduce","minDate","startOfWeek","o","getDay","diff","weekStartsOn","endOfWeek","ISO","firstWeekContainsDate","getWeek","startOfWeekYear","year","weekYear","MONTHS","WEEKDAYS","WEEKDAYS_SHORT","pad","width","String","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","v","Boolean","isDateRange","rangeIncludesDate","range","excludeEnds","from","to","min","dateMatchModifiers","matchers","Array","isArray","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","Object","keys","SELECTION_STATES","getDefaultClassNames","fromEntries","map","k","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","ours","months","nav","button_previous","buttonVariants","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","entries","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","untrack","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","set","values","getModifiers","get","internalSelected","setInternalSelected","onSelect","isSelected","mode","select","triggerDate","p","next","r","full","resetOnSelect","singleDay","lastFocused","setLastFocused","focusTarget","focusable","target","priority","setFocused","autoFocus","blur","nextFocus","moveBy","moveDir","attempt","sign","moves","blocked","moveFocus","current","dayModifiers","dayClass","cls","modifiersClassNames","active","interactive","onDayClick","multiselectable","handlePrevious","prev","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","queueMicrotask","addEventListener","For","each","_p$","_v$7","_v$8","orientation","size","chevron","_v$","_v$2","_v$3","months_dropdown","years_dropdown","_v$4","_v$5","_v$6","_$setAttribute","id","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","type","tabindex","onClick","mods","onFocus","onDayFocus","onBlur","onDayBlur","onKeyDown","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","Button","toLocaleDateString","dayButton","_$delegateEvents","part","slot","recipe","CardPart","CARD_CLASSES","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","CarouselCounter","CAROUSEL_CLASSES","counter","carouselCounterText","total","defaultPageLabel","CarouselThumbnails","strip","floor","indexes","pageLabel","createRenderEffect","thumb","getBoundingClientRect","delta","left","right","scrollLeft","thumbnails","onPageChange","urls","thumbnailImage","thumbnail","isIndeterminate","c","stateOf","Checkbox","inner","setInner","defaultChecked","controlled","checked","setChecked","onCheckedChange","control","setControl","inForm","createInForm","stopped","form","reset","removeEventListener","presence","createPresence","call","handler","CHECKBOX_CLASSES","cancelBubble","mounted","Check","indicator","pointerEvents","CheckboxBubble","bubbles","createElementSize","bubbleOnChange","indeterminate","getOwnPropertyDescriptor","HTMLInputElement","prototype","opacity","transform","_ref$2","ChoiceTilesFrame","buttons","order","pictures","enabled","tabStop","firstPicked","findIndex","picked","onPick","choiceToggle","multiple","move","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","event","clipboard","navigator","writeText","then","catch","Copy","CodeBlockContent","source","lines","language","tokenizeCode","replace","maxLines","counterReset","startLine","maxHeight","body","tokenized","tokens","CodeBlockLine","token","text","CODE_TOKEN_CLASS","lineNumbers","split","line","wrap","empty","codeBlockLineVariants","lineContent","CollapsibleContext","Collapsible","defaultOpen","open","contentId","createUniqueId","toggle","onOpenChange","CollapsibleTrigger","CollapsibleContent","present","forceMount","isPresent","setIsPresent","isOpen","dims","setDims","node","original","measured","mountPrevented","measure","transitionDuration","animationName","rect","prevAnimation","stopWaiting","getComputedStyle","onMount","onStart","raf","requestAnimationFrame","cancelAnimationFrame","settle","done","CSS","escape","defer","CommandContext","GroupContext","useRoot","Error","LABEL_STYLE","COMMAND_LABEL_STYLE","callHandler","Command","version","setVersion","scheduled","store","createCommandStore","onValueChange","shouldFilter","loop","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","useDialogContext","side","showCloseButton","showGrabber","panel","dragClose","handleProps","createSheetDrag","onDismiss","click","setOpen","callRef","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","contains","onExpandedChange","$$focusin","pointerType","bindStyle","DOCK_PILE_CLASSES","placed","scale","delete","zIndex","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","createOpenState","trigger","setTrigger","flags","hasSelection","pointerDownOnContent","openTimer","closeTimer","openDelay","HOVER_CARD_DELAYS","onClose","closeDelay","HoverCardTrigger","onPointerEnter","composeHandlers","onPointerLeave","onTouchStart","HoverCardContent","Content","layer","createLayer","onEscapeKeyDown","onFocusOutside","registered","setRegistered","lag","layerMountedThisTask","containSelection","setContainSelection","document","userSelect","webkitUserSelect","Popper","anchor","align","sideOffset","alignOffset","collisionPadding","popper","placedSide","placedAlign","HOVER_CARD_CLASSES","onPointerDown","LayerContext","setContent","sel","popperContentStyle","layerPointerEvents","isPositioned","styleObject","attach","noteLayerMount","onPointerUp","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","detail","LABEL_CLASSES","isNumber","validMax","isNaN","validValue","progressState","Progress","getValueLabel","PROGRESS_CLASSES","indicatorIndeterminate","indicatorDeterminate","progressIndicatorTransform","Meter","METER_CLASSES","Mosaic","tiles","mosaicTiles","Tile","alt","more","MOSAIC_CLASSES","lead","fill","Outline","OUTLINE_CLASSES","outlineCountText","bar","PopoverContext","usePopover","Popover","setAnchor","createId","PopoverTrigger","PopoverAnchor","PopoverContent","interactedOutside","pointerDownOutside","rightClickOutside","disableOutsidePointerEvents","originalEvent","button","ctrlKey","scope","createFocusScope","trapped","onMountAutoFocus","onUnmountAutoFocus","onCloseAutoFocus","POPOVER_CLASSES","useFocusGuards","useModalEffects","ProgressRing","progressRingPercent","centre","PROGRESS_RING_CLASSES","colorClass","colorHex","color","AreaContext","reactTask","channel","MessageChannel","port1","onmessage","port2","postMessage","debounced","delay","observeResize","ro","unobserve","toInt","parseInt","unlinkedScroll","top","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","area","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","pointerOffset","prevUserSelect","ratio","scrollAreaThumbRatio","positionThumb","scrollAreaThumbOffset","hasThumb","setThumb","onThumbPositionChange","onThumbPointerDown","onThumbPointerUp","dragScroll","scrollAreaScrollFromPointer","onResize","cs","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","onWheel","deltaX","deltaY","passive","scrollAreaScrollbarStyle","scrollAreaThumbSize","handleDrag","clientX","clientY","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","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","bottom","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","itemIndicator","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","layoutSize","toastStackGeometry","anchoredBottom","placement","TOAST_CLASSES","region","regionPlacement","$$pointerdown","was","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","onTriggerLeave","TooltipTrigger","pointerDown","pointerMoveOpened","TooltipContent","contentEl","grace","graceTimer","removeGrace","createGrace","graceArea","entered","inPolygon","TOOLTIP_CLASSES","VisuallyHidden","onContentLeave","VoiceWave","reducedMotion","activity","px","VOICE_WAVE_SIZE_PX","md","elapsed","setElapsed","animates","voiceWaveAnimates","voiceWaveClock","wave","voiceWave","level","bands","quiet","voiceWaveQuiet","voiceWaveName","child","hasChild","Index","rings","ring","VOICE_WAVE_CLASSES","ringQuiet","voiceWavePath","fillAlpha","strokeAlpha","edge","voiceWaveFitChild","voiceWaveChildBox","childSize","childMuted","childHidden"],"mappings":"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"}