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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +135 -2
  4. package/dist/chunks/image-loading-status-DZOoj4RQ.js +1724 -0
  5. package/dist/chunks/image-loading-status-DZOoj4RQ.js.map +1 -0
  6. package/dist/exponential-ui-solid.css +2 -0
  7. package/dist/index.js +12305 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/primitives.js +8439 -0
  10. package/dist/primitives.js.map +1 -0
  11. package/dist/types/behaviors/bubble-input.d.ts +35 -0
  12. package/dist/types/behaviors/collapsible.d.ts +15 -0
  13. package/dist/types/behaviors/dialog.d.ts +116 -0
  14. package/dist/types/behaviors/dismissable-layer.d.ts +48 -0
  15. package/dist/types/behaviors/drag-to-dismiss.d.ts +10 -0
  16. package/dist/types/behaviors/element-size.d.ts +7 -0
  17. package/dist/types/behaviors/focus-guards.d.ts +4 -0
  18. package/dist/types/behaviors/focus-scope.d.ts +20 -0
  19. package/dist/types/behaviors/grace-area.d.ts +10 -0
  20. package/dist/types/behaviors/image-loading-status.d.ts +4 -0
  21. package/dist/types/behaviors/index.d.ts +23 -0
  22. package/dist/types/behaviors/listbox.d.ts +44 -0
  23. package/dist/types/behaviors/menu.d.ts +95 -0
  24. package/dist/types/behaviors/modal.d.ts +3 -0
  25. package/dist/types/behaviors/picker-popover.d.ts +22 -0
  26. package/dist/types/behaviors/popper.d.ts +49 -0
  27. package/dist/types/behaviors/portal.d.ts +11 -0
  28. package/dist/types/behaviors/presence.d.ts +7 -0
  29. package/dist/types/behaviors/roving-focus.d.ts +30 -0
  30. package/dist/types/behaviors/scroll-lock.d.ts +4 -0
  31. package/dist/types/behaviors/search-match.d.ts +6 -0
  32. package/dist/types/behaviors/slider.d.ts +8 -0
  33. package/dist/types/behaviors/style-writer.d.ts +8 -0
  34. package/dist/types/behaviors/typeahead.d.ts +11 -0
  35. package/dist/types/behaviors/visually-hidden.d.ts +6 -0
  36. package/dist/types/bind-attrs.d.ts +4 -0
  37. package/dist/types/context.d.ts +74 -0
  38. package/dist/types/create-surface.d.ts +58 -0
  39. package/dist/types/extensions.d.ts +25 -0
  40. package/dist/types/form.d.ts +63 -0
  41. package/dist/types/host-surface.d.ts +33 -0
  42. package/dist/types/host.d.ts +37 -0
  43. package/dist/types/icons.d.ts +56 -0
  44. package/dist/types/index.d.ts +39 -0
  45. package/dist/types/inputs.d.ts +27 -0
  46. package/dist/types/list.d.ts +33 -0
  47. package/dist/types/markdown.d.ts +10 -0
  48. package/dist/types/media.d.ts +16 -0
  49. package/dist/types/natives/actions.d.ts +13 -0
  50. package/dist/types/natives/bound.d.ts +3 -0
  51. package/dist/types/natives/chart.d.ts +4 -0
  52. package/dist/types/natives/chips.d.ts +7 -0
  53. package/dist/types/natives/choice-tiles.d.ts +4 -0
  54. package/dist/types/natives/code.d.ts +4 -0
  55. package/dist/types/natives/dates.d.ts +30 -0
  56. package/dist/types/natives/feedback.d.ts +19 -0
  57. package/dist/types/natives/index.d.ts +6 -0
  58. package/dist/types/natives/inputs.d.ts +20 -0
  59. package/dist/types/natives/layout.d.ts +12 -0
  60. package/dist/types/natives/media.d.ts +14 -0
  61. package/dist/types/natives/nav.d.ts +14 -0
  62. package/dist/types/natives/overlays.d.ts +19 -0
  63. package/dist/types/natives/owners.d.ts +2 -0
  64. package/dist/types/natives/pending.d.ts +3 -0
  65. package/dist/types/natives/resizable.d.ts +4 -0
  66. package/dist/types/natives/search.d.ts +45 -0
  67. package/dist/types/natives/select.d.ts +10 -0
  68. package/dist/types/natives/shared.d.ts +50 -0
  69. package/dist/types/natives/table.d.ts +7 -0
  70. package/dist/types/natives/text.d.ts +5 -0
  71. package/dist/types/node-view.d.ts +83 -0
  72. package/dist/types/platform.d.ts +12 -0
  73. package/dist/types/primitives/alert-dialog.d.ts +24 -0
  74. package/dist/types/primitives/alert.d.ts +6 -0
  75. package/dist/types/primitives/avatar-color.d.ts +1 -0
  76. package/dist/types/primitives/avatar.d.ts +12 -0
  77. package/dist/types/primitives/badge.d.ts +8 -0
  78. package/dist/types/primitives/breadcrumb.d.ts +12 -0
  79. package/dist/types/primitives/button.d.ts +12 -0
  80. package/dist/types/primitives/calendar.d.ts +188 -0
  81. package/dist/types/primitives/card.d.ts +9 -0
  82. package/dist/types/primitives/checkbox.d.ts +14 -0
  83. package/dist/types/primitives/choice-tiles.d.ts +59 -0
  84. package/dist/types/primitives/cn.d.ts +1 -0
  85. package/dist/types/primitives/code-block.d.ts +34 -0
  86. package/dist/types/primitives/collapsible.d.ts +15 -0
  87. package/dist/types/primitives/command.d.ts +51 -0
  88. package/dist/types/primitives/context-ring.d.ts +14 -0
  89. package/dist/types/primitives/dialog-arms.d.ts +2 -0
  90. package/dist/types/primitives/dialog.d.ts +34 -0
  91. package/dist/types/primitives/disclosure-header.d.ts +7 -0
  92. package/dist/types/primitives/dock-card.d.ts +41 -0
  93. package/dist/types/primitives/dropdown-menu.d.ts +73 -0
  94. package/dist/types/primitives/empty-state.d.ts +19 -0
  95. package/dist/types/primitives/glass-card.d.ts +3 -0
  96. package/dist/types/primitives/hover-card.d.ts +28 -0
  97. package/dist/types/primitives/icon-disc.d.ts +11 -0
  98. package/dist/types/primitives/index.d.ts +51 -0
  99. package/dist/types/primitives/input.d.ts +6 -0
  100. package/dist/types/primitives/kbd.d.ts +4 -0
  101. package/dist/types/primitives/label.d.ts +3 -0
  102. package/dist/types/primitives/menu-surface.d.ts +1 -0
  103. package/dist/types/primitives/meter.d.ts +8 -0
  104. package/dist/types/primitives/popover.d.ts +31 -0
  105. package/dist/types/primitives/progress-ring.d.ts +12 -0
  106. package/dist/types/primitives/progress.d.ts +9 -0
  107. package/dist/types/primitives/scroll-area.d.ts +19 -0
  108. package/dist/types/primitives/segmented-control.d.ts +23 -0
  109. package/dist/types/primitives/select.d.ts +51 -0
  110. package/dist/types/primitives/separator.d.ts +6 -0
  111. package/dist/types/primitives/sheet-chrome.d.ts +11 -0
  112. package/dist/types/primitives/sheet.d.ts +21 -0
  113. package/dist/types/primitives/skeleton.d.ts +3 -0
  114. package/dist/types/primitives/spinner.d.ts +9 -0
  115. package/dist/types/primitives/switch.d.ts +14 -0
  116. package/dist/types/primitives/table.d.ts +11 -0
  117. package/dist/types/primitives/tabs.d.ts +29 -0
  118. package/dist/types/primitives/textarea.d.ts +5 -0
  119. package/dist/types/primitives/toast.d.ts +16 -0
  120. package/dist/types/primitives/tooltip.d.ts +34 -0
  121. package/dist/types/primitives/truncate.d.ts +1 -0
  122. package/dist/types/primitives/use-media-query.d.ts +4 -0
  123. package/dist/types/primitives/use-mobile.d.ts +4 -0
  124. package/dist/types/primitives/use-sheet-drag.d.ts +20 -0
  125. package/dist/types/style.d.ts +6 -0
  126. package/dist/types/surface.d.ts +99 -0
  127. package/package.json +55 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-loading-status-DZOoj4RQ.js","sources":["../../src/icons.tsx","../../src/style.ts","../../src/platform.ts","../../src/behaviors/style-writer.ts","../../src/behaviors/portal.tsx","../../src/behaviors/presence.ts","../../src/behaviors/dismissable-layer.ts","../../src/behaviors/focus-scope.ts","../../src/behaviors/focus-guards.ts","../../src/behaviors/scroll-lock.ts","../../src/behaviors/modal.ts","../../src/behaviors/popper.tsx","../../src/behaviors/grace-area.ts","../../src/behaviors/visually-hidden.tsx","../../src/behaviors/typeahead.ts","../../src/behaviors/menu.tsx","../../src/behaviors/roving-focus.ts","../../src/behaviors/listbox.ts","../../src/behaviors/element-size.ts","../../src/behaviors/bubble-input.tsx","../../src/behaviors/image-loading-status.ts"],"sourcesContent":["// FEED-128: icons on Solid (React's icons.tsx). The catalog's `Icon` names\n// come from the host's registry (`host.icons`); the renderer's OWN parts\n// draw the glyph `core.catalog.json` `builtinIcons` names (`BuiltinIcon` in\n// natives/shared.tsx), through the host first and then the fallbacks below:\n// the SAME Lucide glyphs, by the SAME names, as the React renderer.\n//\n// THE INVARIANT: an icon paints the `<svg>` lucide-react paints. lucide-solid\n// 0.544.0 carries the same SVG data as lucide-react 0.544.0 but differs in\n// its wrapper: it adds a `lucide-icon` class, renders each child's `key` as\n// an attribute, keeps `width`/`height` when they are passed undefined, and\n// never adds lucide-react's default `aria-hidden=\"true\"`. So a Lucide glyph\n// is PROBED once (its children's tags + attributes, its class tokens) and\n// painted by `LucideSvg`, which writes lucide-react's attribute set. A host\n// icon that is not a Lucide glyph is rendered as it is.\n\nimport { For, createRoot, splitProps, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport {\n ArrowLeft,\n Calendar,\n Check,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronsUpDown,\n CircleCheck,\n CircleDashed,\n CircleStop,\n CircleX,\n Clock,\n Copy,\n Ellipsis,\n File,\n Info,\n Loader,\n Menu,\n Minus,\n Paperclip,\n Play,\n Plus,\n Search,\n Send,\n Square,\n Star,\n TriangleAlert,\n Upload,\n X,\n} from \"lucide-solid\"\nimport { lookupIcon } from \"@exponential-at/ui/web\"\nimport type { IconComponent, IconMap } from \"./host\"\n\n/** The renderer's own chrome glyphs that are NOT catalog part glyphs. */\nexport const CHROME = {\n check: Check,\n chevronDown: ChevronDown,\n chevronUp: ChevronUp,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n close: X,\n search: Search,\n calendar: Calendar,\n send: Send,\n stop: Square,\n play: Play,\n attach: Paperclip,\n spinner: Loader,\n placeholder: CircleDashed,\n} as const\n\n/** icons.json concept / registry names → the Lucide glyph icons.json gives\n * them, for every name the catalog's `builtinIcons` and the core macros\n * draw (React's table, name for name). */\nexport const FALLBACK_ICONS: Record<string, IconComponent> = {\n \"ui-check\": Check,\n \"ui-chevron-down\": ChevronDown,\n \"ui-chevron-up\": ChevronUp,\n \"ui-chevron-left\": ChevronLeft,\n \"ui-chevron-right\": ChevronRight,\n \"ui-selector\": ChevronsUpDown,\n \"ui-close\": X,\n \"ui-copy\": Copy,\n \"ui-file\": File,\n \"ui-minus\": Minus,\n \"ui-add\": Plus,\n \"ui-clock\": Clock,\n \"ui-info\": Info,\n \"ui-success\": CircleCheck,\n \"ui-warning\": TriangleAlert,\n \"ui-error\": CircleX,\n \"ui-stop\": CircleStop,\n \"ui-attach\": Paperclip,\n \"ui-send\": Send,\n \"ui-back\": ArrowLeft,\n \"ui-more\": Ellipsis,\n \"ui-menu\": Menu,\n \"ui-search\": Search,\n \"ui-icon-placeholder\": CircleDashed,\n calendar: Calendar,\n search: Search,\n upload: Upload,\n star: Star,\n}\n\nexport function resolveIcon(icons: IconMap | undefined, name: string): IconComponent | undefined {\n return lookupIcon(icons, name, FALLBACK_ICONS)\n}\n\n/** A probed Lucide glyph: its class tokens (lucide-react's: `lucide-<name>`\n * twice, deduplicated) and its children. */\ninterface LucideShape {\n classes: string[]\n nodes: [string, Record<string, string>][]\n}\n\nconst shapes = new WeakMap<IconComponent, LucideShape | null>()\n\nfunction probe(icon: IconComponent): LucideShape | null {\n if (shapes.has(icon)) return shapes.get(icon)!\n let shape: LucideShape | null = null\n if (typeof document !== `undefined`) {\n try {\n createRoot((dispose) => {\n const el = icon({}) as unknown\n if (el instanceof Element && el.localName === `svg` && el.classList.contains(`lucide`)) {\n const classes = Array.from(el.classList).filter((c) => c !== `lucide` && c !== `lucide-icon`)\n const nodes = Array.from(el.children).map((child): [string, Record<string, string>] => {\n const attrs: Record<string, string> = {}\n for (const a of Array.from(child.attributes)) if (a.name !== `key`) attrs[a.name] = a.value\n return [child.localName, attrs]\n })\n shape = { classes, nodes }\n }\n dispose()\n })\n } catch {\n shape = null\n }\n }\n shapes.set(icon, shape)\n return shape\n}\n\nconst mergeClasses = (...classes: (string | undefined)[]): string => classes.filter((c, i, all): c is string => Boolean(c) && c!.trim() !== `` && all.indexOf(c) === i).join(` `).trim()\n\nexport type LucideSvgProps = JSX.SvgSVGAttributes<SVGSVGElement> & { shape: LucideShape; size?: number | string; class?: string; \"data-icon\"?: string; \"data-icon-missing\"?: string; \"data-slot\"?: string }\n\n/** lucide-react's `<svg>` for a probed glyph: its defaults (`width`/`height`\n * = `size` ?? 24 unless passed explicitly, even undefined), `class=\"lucide\n * lucide-<name> <class>\"`, `aria-hidden=\"true\"` unless an a11y prop is\n * passed, the children without their `key`. */\nfunction LucideSvg(props: LucideSvgProps) {\n const [local, rest] = splitProps(props, [`shape`, `size`, `class`])\n const hasA11y = () => Object.keys(rest).some((k) => k.startsWith(`aria-`) || k === `role` || k === `title`)\n const size = () => local.size ?? 24\n // React spreads `rest` last: a key present in it wins even when undefined.\n const attr = (name: string, fallback: unknown) => (name in rest ? (rest as Record<string, unknown>)[name] : fallback)\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden={hasA11y() ? undefined : `true`}\n {...rest}\n width={attr(`width`, size()) as string | undefined}\n height={attr(`height`, size()) as string | undefined}\n class={mergeClasses(`lucide`, mergeClasses(...local.shape.classes, local.class))}\n >\n <For each={local.shape.nodes}>{([tag, attrs]) => <Dynamic component={tag} {...attrs} />}</For>\n </svg>\n )\n}\n\n/** One icon as lucide-react paints it (a Lucide glyph through `LucideSvg`,\n * any other host component as it is). */\nexport function PaintIcon(props: { icon: IconComponent } & JSX.SvgSVGAttributes<SVGSVGElement> & { size?: number | string; class?: string; [data: `data-${string}`]: string | undefined }) {\n const [local, rest] = splitProps(props, [`icon`])\n return (\n <Dynamic\n component={(() => {\n const icon = local.icon\n const shape = probe(icon)\n return shape ? (p: Omit<LucideSvgProps, `shape`>) => <LucideSvg shape={shape} {...p} /> : icon\n })()}\n {...rest}\n />\n )\n}\n\nexport function IconGlyph(props: { icons?: IconMap; name: string; size?: number; class?: string } & JSX.SvgSVGAttributes<SVGSVGElement> & { [data: `data-${string}`]: string | undefined }) {\n const [local, rest] = splitProps(props, [`icons`, `name`, `size`, `class`])\n const resolved = () => resolveIcon(local.icons, local.name)\n return (\n <PaintIcon\n icon={resolved() ?? CircleDashed}\n aria-hidden=\"true\"\n data-icon={local.name}\n data-icon-missing={resolved() ? undefined : `true`}\n size={local.size}\n class={local.class}\n {...rest}\n />\n )\n}\n","// FEED-128: React's inline-style semantics for the Solid renderer. A\n// painter writes the SAME style object as its React twin (camelCase keys,\n// numbers for lengths) and passes it through `css()`, which does what\n// react-dom's `setValueForStyle` does: camelCase → kebab-case (`ms` →\n// `-ms-`), a non-zero number gets `px` unless the property is unitless\n// (React's own list), strings are trimmed, null / boolean / '' drop the\n// property, custom properties (`--x`) pass as they are. Key order is kept,\n// so the serialised `style` attribute matches React's.\n\nexport type StyleInput = Record<string, string | number | null | undefined | boolean>\nexport type SolidStyle = Record<string, string>\n\nconst UNITLESS = new Set(\n `animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `)\n)\n\nconst hyphenated = new Map<string, string>()\nfunction hyphenate(name: string): string {\n let hit = hyphenated.get(name)\n if (hit === undefined) {\n hit = name.includes(`-`) ? name : name.replace(/([A-Z])/g, `-$1`).toLowerCase().replace(/^ms-/, `-ms-`)\n hyphenated.set(name, hit)\n }\n return hit\n}\n\n/** A React style object → Solid's (kebab-case keys, string values). */\nexport function css(style: StyleInput | undefined | null): SolidStyle | undefined {\n if (!style) return undefined\n const out: SolidStyle = {}\n for (const [name, value] of Object.entries(style)) {\n if (value === null || value === undefined || typeof value === `boolean` || value === ``) continue\n if (name.startsWith(`--`)) {\n out[name] = String(value)\n continue\n }\n const key = name === `cssFloat` ? `float` : hyphenate(name)\n out[key] = typeof value === `number` && value !== 0 && !UNITLESS.has(name) ? `${value}px` : String(value).trim()\n }\n return out\n}\n\n/** A length prop (`width={390}` / `\"100%\"`) the React way. */\nexport const px = (v: number | string): string => (typeof v === `number` ? (v === 0 ? `0` : `${v}px`) : v)\n","// FEED-128: the platform preferences a surface follows LIVE (dark mode for\n// `mode: system`, `prefers-contrast: more`, reduced motion, a hover-capable\n// pointer) and an element's measured box, as Solid primitives (React's\n// platform.ts). Listeners are removed when the owner is disposed.\n\nimport { createEffect, createSignal, getOwner, onCleanup, type Accessor } from \"solid-js\"\n\n/** `matchMedia(query).matches`, live; `fallback` without `matchMedia`\n * (SSR, jsdom). */\nexport function createMediaQuery(query: string, fallback = false): Accessor<boolean> {\n if (typeof window === `undefined` || typeof window.matchMedia !== `function`) return () => fallback\n const mql = window.matchMedia(query)\n const [matches, setMatches] = createSignal(mql.matches)\n const onChange = () => setMatches(mql.matches)\n mql.addEventListener?.(`change`, onChange)\n if (getOwner()) onCleanup(() => mql.removeEventListener?.(`change`, onChange))\n return matches\n}\n\nexport interface BoxSize {\n width: number\n height: number\n /** False until the first measurement. */\n measured: boolean\n}\n\n/** An element's border box, live (ResizeObserver, disconnected on cleanup). */\nexport function createElementSize(el: Accessor<HTMLElement | null | undefined>, initialWidth = 0): Accessor<BoxSize> {\n const [size, setSize] = createSignal<BoxSize>({ width: initialWidth, height: 0, measured: false })\n createEffect(() => {\n const node = el()\n if (!node) return\n const read = () => {\n const r = node.getBoundingClientRect()\n const cur = size()\n // No layout yet (SSR, jsdom, display:none): keep the initial guess.\n if (!cur.measured && r.width === 0 && r.height === 0) return\n if (cur.measured && cur.width === r.width && cur.height === r.height) return\n setSize({ width: r.width, height: r.height, measured: true })\n }\n read()\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver(read)\n ro.observe(node)\n onCleanup(() => ro.disconnect())\n })\n return size\n}\n","// FEED-131: React's inline-style writes on a live element (react-dom's\n// `setValueForStyles`): the order of the `style` attribute's declarations is\n// what the web-parity check diffs, so every Radix-shaped style write goes\n// through here.\n\nimport { createRenderEffect, type Accessor } from \"solid-js\"\n\nexport type StyleObject = Record<string, string | undefined>\n\n/** React's `setValueForStyles(node, next, prev)` (kebab-case keys): a key\n * gone from `next` is cleared, a changed one is written; an existing\n * declaration keeps its place in the `style` attribute, a new one appends. */\nexport function styleWriter(el: HTMLElement): (next: StyleObject) => void {\n let prev: StyleObject | null = null\n const write = (k: string, v: string | undefined) => el.style.setProperty(k, v === undefined ? `` : v)\n return (next) => {\n if (prev) {\n for (const k of Object.keys(prev)) if (!(k in next)) write(k, ``)\n for (const k of Object.keys(next)) if (prev[k] !== next[k]) write(k, next[k])\n } else for (const k of Object.keys(next)) write(k, next[k])\n prev = { ...next }\n }\n}\n\n/** Write `style()` with React's semantics on `el`, first now, then on change. */\nexport function bindStyle(el: HTMLElement, style: Accessor<StyleObject>) {\n const write = styleWriter(el)\n createRenderEffect(() => write(style()))\n}\n","// FEED-131: Radix `Portal` on Solid: the content is appended to the mount\n// node ITSELF, no wrapper element (Solid's `<Portal>` adds a `<div>`).\n\nimport { Show, children as resolveChildren, onCleanup, type JSX } from \"solid-js\"\nimport { insert } from \"solid-js/web\"\n\n/** A portal WITHOUT a wrapper (Solid's `<Portal>` adds a `<div>`, Radix's\n * appends the content itself): the children are inserted before an empty\n * text marker appended to `mount`, in mount order. */\nexport function LayerPortal(props: { mount: HTMLElement | null; children: JSX.Element }): JSX.Element {\n return (\n <Show when={props.mount}>\n {(mount) => {\n const el = mount()\n // The children first: a portal mounting INSIDE this content in the\n // same pass (a Popover open in an opening Dialog) lands BEFORE it,\n // as React places a portal's deeper host nodes first; one opened\n // later appends after it.\n const nodes = resolveChildren(() => props.children)\n const marker = document.createTextNode(``)\n el.appendChild(marker)\n insert(el, nodes, marker)\n onCleanup(() => {\n for (const n of [nodes()].flat(Infinity as 1) as unknown[]) if (n instanceof Node && n.parentNode === el) el.removeChild(n)\n marker.remove()\n })\n return null\n }}\n </Show>\n )\n}\n\n/** Mounts `el` at the end of `container` while the owner lives (Radix's\n * Portal: no wrapper element, unlike Solid's <Portal>). */\nexport function mountIn(container: HTMLElement, el: Node) {\n container.appendChild(el)\n onCleanup(() => el.parentNode?.removeChild(el))\n}\n","// FEED-131: Radix `Presence`: a closing part stays mounted while the exit\n// animation its closed state starts runs.\n\nimport { createEffect, createSignal, on, onCleanup, untrack, type Accessor } from \"solid-js\"\n\n/** Radix `Presence`: mounted while `present`, and on close until the exit\n * animation the closed state starts has ended (none = at once). */\nexport function createPresence(present: Accessor<boolean>): { mounted: Accessor<boolean>; ref: (el: HTMLElement) => void } {\n const [mounted, setMounted] = createSignal(untrack(present))\n let node: HTMLElement | undefined\n let openName = `none`\n let stop: (() => void) | undefined\n const nameOf = (el: HTMLElement) => getComputedStyle(el).animationName || `none`\n createEffect(\n on(present, (p) => {\n stop?.()\n stop = undefined\n if (p) {\n setMounted(true)\n return\n }\n const el = node\n if (!el || !el.isConnected) return setMounted(false)\n const styles = getComputedStyle(el)\n const current = styles.animationName || `none`\n if (current === `none` || styles.display === `none` || current === openName) return setMounted(false)\n const done = (e: AnimationEvent) => {\n if (e.target !== el || !nameOf(el).split(`,`).map((s) => s.trim()).includes(e.animationName)) return\n stop?.()\n setMounted(false)\n }\n el.addEventListener(`animationend`, done)\n el.addEventListener(`animationcancel`, done)\n stop = () => {\n el.removeEventListener(`animationend`, done)\n el.removeEventListener(`animationcancel`, done)\n }\n }, { defer: true })\n )\n onCleanup(() => stop?.())\n return {\n mounted,\n ref: (el) => {\n node = el\n el.addEventListener(`animationstart`, (e) => {\n if (e.target === el && untrack(present)) openName = nameOf(el)\n })\n },\n }\n}\n","// FEED-131: Radix `DismissableLayer`: the layer stack (Escape answers the\n// highest layer only), a pointer down or a focus outside dismisses, a modal\n// layer turns the body's pointer events off. `dismissable` is the Select's\n// and Combobox's lighter variant with its OWN stack (no modal layers, no\n// nested-layer containment), kept as it was ported.\n\nimport { createContext, createSignal, onCleanup, onMount, untrack, useContext, type Accessor } from \"solid-js\"\n\nexport interface Layer {\n el?: HTMLElement\n parent?: Layer\n kids: Set<Layer>\n}\nexport const LAYERS: Layer[] = []\nexport const MODAL_LAYERS: Layer[] = []\nconst [layersVersion, setLayersVersion] = createSignal(0)\nlet originalBodyPointerEvents = ``\nexport const LayerContext = createContext<Layer | undefined>()\n\n/** Inside this layer or one it opened (Radix checks the React tree, where a\n * portalled child layer still sits under its parent). */\nexport function layerContains(layer: Layer, target: Node | null): boolean {\n if (!target) return false\n if (layer.el?.contains(target)) return true\n for (const kid of layer.kids) if (layerContains(kid, target)) return true\n return false\n}\n\nexport interface OutsideEvent {\n target: EventTarget | null\n detail: { originalEvent: Event }\n defaultPrevented: boolean\n preventDefault: () => void\n}\nexport const outsideEvent = (originalEvent: Event): OutsideEvent => {\n const e: OutsideEvent = { target: originalEvent.target, detail: { originalEvent }, defaultPrevented: false, preventDefault: () => (e.defaultPrevented = true) }\n return e\n}\n\nexport interface LayerOptions {\n disableOutsidePointerEvents?: Accessor<boolean>\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onPointerDownOutside?: (e: OutsideEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n onDismiss: () => void\n}\n\n/** Radix `DismissableLayer` on `el` (call `attach(el)` once it is in the\n * document): Escape (the highest layer only), a pointer down outside, a\n * focus outside; a modal layer turns the body's pointer events off.\n * `pointerEvents()` = the layer's own `pointer-events` (Radix's value). */\nexport function createLayer(o: LayerOptions): { layer: Layer; attach: (el: HTMLElement) => void; pointerEvents: (registered: boolean) => string | undefined } {\n const parent = useContext(LayerContext)\n const layer: Layer = { parent, kids: new Set() }\n const modal = () => o.disableOutsidePointerEvents?.() ?? false\n const enabled = () => {\n const highest = MODAL_LAYERS[MODAL_LAYERS.length - 1]\n return LAYERS.indexOf(layer) >= (highest ? LAYERS.indexOf(highest) : -1)\n }\n const pointerEvents = (registered: boolean) => {\n layersVersion()\n if (MODAL_LAYERS.length === 0) return undefined\n const highest = MODAL_LAYERS[MODAL_LAYERS.length - 1]\n const index = registered ? LAYERS.indexOf(layer) : -1\n return index >= LAYERS.indexOf(highest) ? `auto` : `none`\n }\n const attach = (el: HTMLElement) => {\n layer.el = el\n const doc = el.ownerDocument\n const disable = untrack(modal)\n if (disable) {\n if (MODAL_LAYERS.length === 0) {\n originalBodyPointerEvents = doc.body.style.pointerEvents\n doc.body.style.pointerEvents = `none`\n }\n MODAL_LAYERS.push(layer)\n }\n LAYERS.push(layer)\n parent?.kids.add(layer)\n setLayersVersion((v) => v + 1)\n let clickHandler: ((e: Event) => void) | undefined\n const pointerDown = (event: PointerEvent) => {\n if (event.target && !layerContains(layer, event.target as Node)) {\n const run = () => {\n if (!enabled()) return\n const e = outsideEvent(event)\n o.onPointerDownOutside?.(e)\n o.onInteractOutside?.(e)\n if (!e.defaultPrevented) o.onDismiss()\n }\n if (event.pointerType === `touch`) {\n if (clickHandler) doc.removeEventListener(`click`, clickHandler)\n clickHandler = run\n doc.addEventListener(`click`, clickHandler, { once: true })\n } else run()\n } else if (clickHandler) doc.removeEventListener(`click`, clickHandler)\n }\n const focusIn = (event: FocusEvent) => {\n if (!event.target || layerContains(layer, event.target as Node)) return\n const e = outsideEvent(event)\n o.onFocusOutside?.(e)\n o.onInteractOutside?.(e)\n if (!e.defaultPrevented) o.onDismiss()\n }\n const keyDown = (event: KeyboardEvent) => {\n if (event.key !== `Escape`) return\n if (LAYERS.indexOf(layer) !== LAYERS.length - 1) return\n o.onEscapeKeyDown?.(event)\n if (!event.defaultPrevented) {\n event.preventDefault()\n o.onDismiss()\n }\n }\n const timer = setTimeout(() => doc.addEventListener(`pointerdown`, pointerDown), 0)\n doc.addEventListener(`focusin`, focusIn)\n doc.addEventListener(`keydown`, keyDown, { capture: true })\n onCleanup(() => {\n clearTimeout(timer)\n doc.removeEventListener(`pointerdown`, pointerDown)\n if (clickHandler) doc.removeEventListener(`click`, clickHandler)\n doc.removeEventListener(`focusin`, focusIn)\n doc.removeEventListener(`keydown`, keyDown, { capture: true })\n if (disable && MODAL_LAYERS.length === 1) doc.body.style.pointerEvents = originalBodyPointerEvents\n LAYERS.splice(LAYERS.indexOf(layer), 1)\n const m = MODAL_LAYERS.indexOf(layer)\n if (m >= 0) MODAL_LAYERS.splice(m, 1)\n parent?.kids.delete(layer)\n setLayersVersion((v) => v + 1)\n })\n }\n return { layer, attach, pointerEvents }\n}\n\n/** The open overlay layers, innermost last: only the top one answers\n * Escape (Radix's DismissableLayer stack). */\nconst layers: HTMLElement[] = []\n\n/** Radix's DismissableLayer: Escape, a pointerdown outside (and, unless\n * `keepOnFocusOutside`, focus moving outside) dismiss. `isInside` widens\n * \"inside\" (the trigger of a non-modal popover). */\nexport function dismissable(opts: { layer: () => HTMLElement | undefined; onDismiss: () => void; isInside?: (target: Node) => boolean; keepOnFocusOutside?: boolean; onOutside?: () => void }) {\n onMount(() => {\n const layer = opts.layer()\n if (!layer) return\n layers.push(layer)\n const inside = (t: EventTarget | null) => t instanceof Node && (layer.contains(t) || Boolean(opts.isInside?.(t)))\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== `Escape` || layers[layers.length - 1] !== layer) return\n e.preventDefault()\n e.stopImmediatePropagation()\n opts.onDismiss()\n }\n const onPointer = (e: PointerEvent) => {\n if (inside(e.target)) return\n opts.onOutside?.()\n opts.onDismiss()\n }\n const onFocusIn = (e: FocusEvent) => {\n if (opts.keepOnFocusOutside || inside(e.target)) return\n opts.onOutside?.()\n opts.onDismiss()\n }\n document.addEventListener(`keydown`, onKey, { capture: true })\n document.addEventListener(`focusin`, onFocusIn)\n // Radix registers the pointer listener a tick later: the event that\n // opened the layer must not close it.\n const timer = window.setTimeout(() => document.addEventListener(`pointerdown`, onPointer))\n onCleanup(() => {\n window.clearTimeout(timer)\n document.removeEventListener(`keydown`, onKey, { capture: true })\n document.removeEventListener(`focusin`, onFocusIn)\n document.removeEventListener(`pointerdown`, onPointer)\n const i = layers.indexOf(layer)\n if (i >= 0) layers.splice(i, 1)\n })\n })\n}\n","// FEED-131: Radix `FocusScope`: the scope stack (a newer scope pauses the\n// one below), auto focus on mount and back on unmount, the trap, the Tab loop.\n\nimport { onCleanup, untrack, type Accessor } from \"solid-js\"\n\ninterface Scope {\n paused: boolean\n}\nlet SCOPES: Scope[] = []\nconst scopesAdd = (s: Scope) => {\n const active = SCOPES[0]\n if (active && active !== s) active.paused = true\n SCOPES = [s, ...SCOPES.filter((x) => x !== s)]\n}\nconst scopesRemove = (s: Scope) => {\n SCOPES = SCOPES.filter((x) => x !== s)\n if (SCOPES[0]) SCOPES[0].paused = false\n}\n\nexport function tabbables(container: HTMLElement): HTMLElement[] {\n const nodes: HTMLElement[] = []\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const el = node as HTMLElement & { disabled?: boolean; type?: string }\n const hiddenInput = el.tagName === `INPUT` && el.type === `hidden`\n if (el.disabled || el.hidden || hiddenInput) return NodeFilter.FILTER_SKIP\n return el.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\n },\n })\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement)\n return nodes\n}\nexport function isHidden(node: HTMLElement | null, upTo: HTMLElement): boolean {\n if (node && getComputedStyle(node).visibility === `hidden`) return true\n while (node) {\n if (node === upTo) return false\n if (getComputedStyle(node).display === `none`) return true\n node = node.parentElement\n }\n return false\n}\nexport function focusEl(el: HTMLElement | null | undefined, select = false) {\n if (!el?.focus) return\n const prev = document.activeElement\n el.focus({ preventScroll: true })\n if (el !== prev && select && el instanceof HTMLInputElement && `select` in el) el.select()\n}\nexport function focusFirst(candidates: (HTMLElement | null | undefined)[], select = false) {\n const prev = document.activeElement\n for (const c of candidates) {\n focusEl(c, select)\n if (document.activeElement !== prev) return\n }\n}\n\nexport const AUTOFOCUS_ON_MOUNT = `focusScope.autoFocusOnMount`\nexport const AUTOFOCUS_ON_UNMOUNT = `focusScope.autoFocusOnUnmount`\n\n/** Radix `FocusScope` on `el`: auto focus on mount (the first tabbable, else\n * the container; `onMountAutoFocus` may prevent it), focus back on unmount\n * (`onUnmountAutoFocus` may prevent it), `trapped` keeps the focus inside,\n * `loop` wraps Tab. Returns the container's keydown handler. */\nexport function createFocusScope(o: { trapped: Accessor<boolean>; loop: boolean; onMountAutoFocus?: (e: Event) => void; onUnmountAutoFocus?: (e: Event) => void }): { attach: (el: HTMLElement) => void; onKeyDown: (e: KeyboardEvent) => void } {\n const scope: Scope = { paused: false }\n let container: HTMLElement | undefined\n const attach = (el: HTMLElement) => {\n // Radix's FocusScope effect runs one commit AFTER the dismissable layers\n // of the same mount registered their outside listeners (its container\n // is state): every overlay mounted together listens before any of them\n // takes the focus (a Popover open next to an opening Dialog loses).\n let started = false\n let disposed = false\n let previouslyFocused: HTMLElement | null = null\n let lastFocused: HTMLElement | null = null\n const focusIn = (event: FocusEvent) => {\n if (!untrack(o.trapped) || scope.paused) return\n const target = event.target as HTMLElement | null\n if (el.contains(target)) lastFocused = target\n else focusEl(lastFocused, true)\n }\n const focusOut = (event: FocusEvent) => {\n if (!untrack(o.trapped) || scope.paused) return\n const related = event.relatedTarget as HTMLElement | null\n if (related === null) return\n if (!el.contains(related)) focusEl(lastFocused, true)\n }\n const observer = new MutationObserver((mutations) => {\n if (!untrack(o.trapped) || scope.paused) return\n if (document.activeElement !== document.body) return\n for (const m of mutations) if (m.removedNodes.length > 0) focusEl(el)\n })\n queueMicrotask(() => {\n if (disposed || !el.isConnected) return\n started = true\n container = el\n scopesAdd(scope)\n previouslyFocused = document.activeElement as HTMLElement | null\n if (!el.contains(previouslyFocused)) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, { bubbles: false, cancelable: true })\n const onMount = (e: Event) => o.onMountAutoFocus?.(e)\n el.addEventListener(AUTOFOCUS_ON_MOUNT, onMount)\n el.dispatchEvent(mountEvent)\n el.removeEventListener(AUTOFOCUS_ON_MOUNT, onMount)\n if (!mountEvent.defaultPrevented) {\n focusFirst(tabbables(el).filter((n) => n.tagName !== `A`), true)\n if (document.activeElement === previouslyFocused) focusEl(el)\n }\n }\n // The trap (Radix: focusin/focusout on the document + a mutation watch).\n document.addEventListener(`focusin`, focusIn)\n document.addEventListener(`focusout`, focusOut)\n observer.observe(el, { childList: true, subtree: true })\n })\n onCleanup(() => {\n disposed = true\n if (!started) return\n document.removeEventListener(`focusin`, focusIn)\n document.removeEventListener(`focusout`, focusOut)\n observer.disconnect()\n const prev = previouslyFocused\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, { bubbles: false, cancelable: true })\n const onUnmount = (e: Event) => o.onUnmountAutoFocus?.(e)\n el.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmount)\n el.dispatchEvent(unmountEvent)\n if (!unmountEvent.defaultPrevented) focusEl(prev ?? document.body, true)\n el.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmount)\n scopesRemove(scope)\n }, 0)\n })\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if (!o.loop && !untrack(o.trapped)) return\n if (scope.paused || !container) return\n const isTab = event.key === `Tab` && !event.altKey && !event.ctrlKey && !event.metaKey\n const focused = document.activeElement as HTMLElement | null\n if (!isTab || !focused) return\n const candidates = tabbables(container)\n const first = candidates.find((c) => !isHidden(c, container!))\n const last = [...candidates].reverse().find((c) => !isHidden(c, container!))\n if (!first || !last) {\n if (focused === container) event.preventDefault()\n } else if (!event.shiftKey && focused === last) {\n event.preventDefault()\n if (o.loop) focusEl(first, true)\n } else if (event.shiftKey && focused === first) {\n event.preventDefault()\n if (o.loop) focusEl(last, true)\n }\n }\n return { attach, onKeyDown }\n}\n","// FEED-131: Radix `FocusGuards`.\n\nimport { onCleanup } from \"solid-js\"\n\nlet guardCount = 0\nexport function createGuard(): HTMLSpanElement {\n const el = document.createElement(`span`)\n el.setAttribute(`data-radix-focus-guard`, ``)\n el.tabIndex = 0\n el.style.outline = `none`\n el.style.opacity = `0`\n el.style.position = `fixed`\n el.style.pointerEvents = `none`\n return el\n}\n/** Radix `useFocusGuards`: two focusable spans at the body's edges while\n * any overlay that needs them is up. */\nexport function useFocusGuards() {\n const edges = document.querySelectorAll(`[data-radix-focus-guard]`)\n document.body.insertAdjacentElement(`afterbegin`, edges[0] ?? createGuard())\n document.body.insertAdjacentElement(`beforeend`, edges[1] ?? createGuard())\n guardCount++\n onCleanup(() => {\n if (guardCount === 1) document.querySelectorAll(`[data-radix-focus-guard]`).forEach((n) => n.remove())\n guardCount--\n })\n}\n","// FEED-131: react-remove-scroll-bar's body lock, as Radix's modal parts use it.\n\nimport { onCleanup } from \"solid-js\"\n\nexport const LOCK_ATTRIBUTE = `data-scroll-locked`\nlet lockSheets = 0\nlet lockSheet: HTMLStyleElement | null = null\n/** react-remove-scroll-bar's body lock (the same sheet, the same counter\n * attribute) while a modal overlay is up. */\nexport function useScrollLock() {\n const body = document.body\n const count = () => {\n const n = parseInt(body.getAttribute(LOCK_ATTRIBUTE) || `0`, 10)\n return isFinite(n) ? n : 0\n }\n body.setAttribute(LOCK_ATTRIBUTE, String(count() + 1))\n if (lockSheets === 0) {\n const cs = getComputedStyle(body)\n const parse = (x: string) => parseInt(x || ``, 10) || 0\n const [left, top, right] = [parse(cs.marginLeft), parse(cs.marginTop), parse(cs.marginRight)]\n const gap = Math.max(0, window.innerWidth - document.documentElement.clientWidth + right - left)\n const important = `!important`\n const css = `\\n .with-scroll-bars-hidden {\\n overflow: hidden ${important};\\n padding-right: ${gap}px ${important};\\n }\\n body[${LOCK_ATTRIBUTE}] {\\n overflow: hidden ${important};\\n overscroll-behavior: contain;\\n ${[`position: relative ${important};`, `\\n padding-left: ${left}px;\\n padding-top: ${top}px;\\n padding-right: ${right}px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: ${gap}px ${important};\\n `].join(``)}\\n }\\n \\n .right-scroll-bar-position {\\n right: ${gap}px ${important};\\n }\\n \\n .width-before-scroll-bar {\\n margin-right: ${gap}px ${important};\\n }\\n \\n .right-scroll-bar-position .right-scroll-bar-position {\\n right: 0 ${important};\\n }\\n \\n .width-before-scroll-bar .width-before-scroll-bar {\\n margin-right: 0 ${important};\\n }\\n \\n body[${LOCK_ATTRIBUTE}] {\\n --removed-body-scroll-bar-size: ${gap}px;\\n }\\n`\n lockSheet = document.createElement(`style`)\n lockSheet.type = `text/css`\n lockSheet.appendChild(document.createTextNode(css))\n ;(document.head || document.getElementsByTagName(`head`)[0]).appendChild(lockSheet)\n }\n lockSheets++\n onCleanup(() => {\n const n = count() - 1\n if (n <= 0) body.removeAttribute(LOCK_ATTRIBUTE)\n else body.setAttribute(LOCK_ATTRIBUTE, String(n))\n lockSheets--\n if (!lockSheets && lockSheet) {\n lockSheet.remove()\n lockSheet = null\n }\n })\n}\n","// FEED-131: Radix's modal content effects (`hideOthers` + the scroll lock).\n\nimport { onCleanup } from \"solid-js\"\nimport { hideOthers } from \"aria-hidden\"\nimport { useScrollLock } from \"./scroll-lock\"\n\n/** Radix's modal content: the rest of the page `aria-hidden` (live regions\n * and scripts kept), the focus guards, the scroll lock. */\nexport function useModalEffects(el: HTMLElement, lockScroll: boolean) {\n const undo = hideOthers(el)\n onCleanup(undo)\n if (lockScroll) useScrollLock()\n}\n","// FEED-131: Radix `Popper` on @floating-ui/dom: Radix's middleware (offset\n// → shift(limitShift) → flip → size → transformOrigin, `strategy: fixed`),\n// the `data-radix-popper-content-wrapper` and its inline style in Radix's\n// order, the content's `--radix-<kind>-*` variables. `popperWrapper` is the\n// Select's and Combobox's variant (a reactive `style`, placed once mounted),\n// kept as it was ported.\n\nimport { createEffect, createMemo, createSignal, onCleanup, onMount, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { insert } from \"solid-js/web\"\nimport { autoUpdate, computePosition, flip, limitShift, offset, shift, size, type Middleware, type Placement, type VirtualElement } from \"@floating-ui/dom\"\nimport { css, type StyleInput } from \"../style\"\nimport { styleWriter, type StyleObject } from \"./style-writer\"\n\nexport type Side = `top` | `right` | `bottom` | `left`\nexport type Align = `start` | `center` | `end`\n\n/** Radix Popper's `transformOrigin` middleware (no arrow: always hidden). */\nexport const transformOrigin: Middleware = {\n name: `transformOrigin`,\n fn(data) {\n const [placedSide, placedAlign = `center`] = data.placement.split(`-`) as [Side, Align | undefined]\n const noArrowAlign = { start: `0%`, center: `50%`, end: `100%` }[placedAlign]\n let x = ``\n let y = ``\n if (placedSide === `bottom`) {\n x = noArrowAlign\n y = `${-0}px`\n } else if (placedSide === `top`) {\n x = noArrowAlign\n y = `${data.rects.floating.height + 0}px`\n } else if (placedSide === `right`) {\n x = `${-0}px`\n y = noArrowAlign\n } else if (placedSide === `left`) {\n x = `${data.rects.floating.width + 0}px`\n y = noArrowAlign\n }\n return { data: { x, y } }\n },\n}\n\nexport interface PopperState {\n placedSide: Accessor<Side>\n placedAlign: Accessor<Align>\n isPositioned: Accessor<boolean>\n /** The content element (its computed `z-index` goes on the wrapper). */\n setContent: (el: HTMLElement) => void\n}\n\n/** Radix `PopperContent`: the `data-radix-popper-content-wrapper` (fixed,\n * translated, `min-width: max-content`, the content's z-index, the\n * `--radix-popper-*` variables) around the content `children(state)`.\n * Placement = floating-ui with Radix's middleware, auto-updated. */\nexport function Popper(props: { anchor: Element | VirtualElement | null | undefined; side: Side; align: Align; sideOffset: number; alignOffset?: number; collisionPadding: number; dir?: string; children: (state: PopperState) => JSX.Element }): JSX.Element {\n const desired = () => (props.align === `center` ? props.side : `${props.side}-${props.align}`) as Placement\n const [placement, setPlacement] = createSignal<Placement>(untrack(desired))\n const [isPositioned, setPositioned] = createSignal(false)\n const [content, setContent] = createSignal<HTMLElement>()\n let pos = { x: 0, y: 0, origin: undefined as { x: string; y: string } | undefined }\n let floatingSet = false\n let zIndex: string | undefined\n let disposed = false\n const wrapper = (<div data-radix-popper-content-wrapper=\"\" dir={props.dir as `ltr` | `rtl` | undefined} />) as HTMLDivElement\n const writeWrapper = styleWriter(wrapper)\n const dpr = () => wrapper.ownerDocument.defaultView?.devicePixelRatio || 1\n const roundByDPR = (v: number) => Math.round(v * dpr()) / dpr()\n const paintWrapper = () => {\n const s: StyleObject = { position: `fixed`, left: `0`, top: `0` }\n // floating-ui's floatingStyles: the transform (+ will-change at DPR ≥ 1.5) once the floating element is known.\n if (floatingSet) {\n s.transform = `translate(${roundByDPR(pos.x)}px, ${roundByDPR(pos.y)}px)`\n if (dpr() >= 1.5) s[`will-change`] = `transform`\n }\n s.transform = untrack(isPositioned) ? s.transform : `translate(0, -200%)`\n s[`min-width`] = `max-content`\n s[`z-index`] = zIndex || undefined\n s[`--radix-popper-transform-origin`] = [pos.origin?.x, pos.origin?.y].join(` `)\n writeWrapper(s)\n }\n paintWrapper()\n const state: PopperState = { placedSide: () => placement().split(`-`)[0] as Side, placedAlign: () => (placement().split(`-`)[1] ?? `center`) as Align, isPositioned, setContent }\n insert(wrapper, untrack(() => props.children(state)))\n createEffect(() => {\n const anchor = props.anchor\n const el = content()\n if (!anchor || !el) return\n untrack(() => {\n floatingSet = true\n paintWrapper()\n zIndex = getComputedStyle(el).zIndex\n paintWrapper()\n })\n const padding = props.collisionPadding\n const detect = { padding, boundary: [] as Element[], altBoundary: false }\n const middleware = [\n offset({ mainAxis: props.sideOffset, alignmentAxis: props.alignOffset ?? 0 }),\n shift({ mainAxis: true, crossAxis: false, limiter: limitShift(), ...detect }),\n flip({ ...detect }),\n size({\n ...detect,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const st = elements.floating.style\n st.setProperty(`--radix-popper-available-width`, `${availableWidth}px`)\n st.setProperty(`--radix-popper-available-height`, `${availableHeight}px`)\n st.setProperty(`--radix-popper-anchor-width`, `${rects.reference.width}px`)\n st.setProperty(`--radix-popper-anchor-height`, `${rects.reference.height}px`)\n },\n }),\n transformOrigin,\n ]\n const placementNow = desired()\n const update = () => {\n void computePosition(anchor, wrapper, { strategy: `fixed`, placement: placementNow, middleware }).then((d) => {\n if (disposed) return\n const origin = d.middlewareData.transformOrigin as { x: string; y: string } | undefined\n const same = untrack(isPositioned) && pos.x === d.x && pos.y === d.y && pos.origin?.x === origin?.x && pos.origin?.y === origin?.y && untrack(placement) === d.placement\n if (same) return\n pos = { x: d.x, y: d.y, origin }\n setPlacement(d.placement)\n setPositioned(true)\n paintWrapper()\n })\n }\n const stop = autoUpdate(anchor, wrapper, update, { animationFrame: false })\n onCleanup(stop)\n })\n onCleanup(() => (disposed = true))\n return wrapper\n}\n\n/** The content's own style the way Radix composes it: `prefix` (a menu's\n * `outline`), the dismissable layer's `pointer-events`, the popper's\n * `--radix-<kind>-*` variables, then `animation: none` until placed. */\nexport function popperContentStyle(kind: string, trigger: string, pointerEvents: string | undefined, positioned: boolean, prefix: StyleObject = {}): StyleObject {\n return {\n ...prefix,\n \"pointer-events\": pointerEvents,\n [`--radix-${kind}-content-transform-origin`]: `var(--radix-popper-transform-origin)`,\n [`--radix-${kind}-content-available-width`]: `var(--radix-popper-available-width)`,\n [`--radix-${kind}-content-available-height`]: `var(--radix-popper-available-height)`,\n [`--radix-${kind}-${trigger}-width`]: `var(--radix-popper-anchor-width)`,\n [`--radix-${kind}-${trigger}-height`]: `var(--radix-popper-anchor-height)`,\n animation: positioned ? undefined : `none`,\n }\n}\n\nexport interface Placed {\n side: string\n align: string\n positioned: boolean\n}\n\n/** Radix's PopperContent: the fixed wrapper (`data-radix-popper-content-\n * wrapper`, floating-ui's translate, `--radix-popper-*`), the content's\n * placed side/align. `content` renders the content element. */\nexport function popperWrapper(opts: { anchor: () => HTMLElement | undefined; sideOffset: number; align: `start` | `center` | `end`; collisionPadding: number; dir?: () => `ltr` | `rtl` | `auto` | undefined; onPlaced?: () => void; content: (placed: Accessor<Placed>, ref: (el: HTMLElement) => void) => JSX.Element }): HTMLElement {\n const [pos, setPos] = createSignal<{ x: number; y: number; placement: Placement; origin: [string, string] } | null>(null)\n const [zIndex, setZIndex] = createSignal<string>()\n let contentEl: HTMLElement | undefined\n const dpr = () => (typeof window === `undefined` ? 1 : window.devicePixelRatio || 1)\n const round = (v: number) => Math.round(v * dpr()) / dpr()\n const placed = createMemo<Placed>(() => {\n const p = pos()\n const [side, align = `center`] = (p?.placement ?? `bottom-${opts.align}`).split(`-`)\n return { side, align: opts.align === `center` && !p ? `center` : align, positioned: p !== null }\n })\n const style = () => {\n const p = pos()\n const s: StyleInput = { position: `fixed`, left: 0, top: 0, transform: p ? `translate(${round(p.x)}px, ${round(p.y)}px)` : `translate(0, -200%)` }\n if (dpr() >= 1.5) s.willChange = `transform`\n s.minWidth = `max-content`\n s.zIndex = zIndex()\n s[`--radix-popper-transform-origin`] = p ? p.origin.join(` `) : ` `\n return css(s)\n }\n const wrapper = (\n <div data-radix-popper-content-wrapper=\"\" style={style()} dir={opts.dir?.()}>\n {opts.content(placed, (el) => (contentEl = el))}\n </div>\n ) as HTMLElement\n onMount(() => {\n if (contentEl) setZIndex(getComputedStyle(contentEl).zIndex)\n const anchor = opts.anchor()\n if (!anchor) return\n const detect = { padding: opts.collisionPadding, boundary: [] as Element[], altBoundary: false }\n let alive = true\n const update = () =>\n void computePosition(anchor, wrapper, {\n strategy: `fixed`,\n placement: (opts.align === `center` ? `bottom` : `bottom-${opts.align}`) as Placement,\n middleware: [\n offset({ mainAxis: opts.sideOffset, alignmentAxis: 0 }),\n shift({ mainAxis: true, crossAxis: false, limiter: limitShift(), ...detect }),\n flip({ ...detect }),\n size({\n ...detect,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const st = elements.floating.style\n st.setProperty(`--radix-popper-available-width`, `${availableWidth}px`)\n st.setProperty(`--radix-popper-available-height`, `${availableHeight}px`)\n st.setProperty(`--radix-popper-anchor-width`, `${rects.reference.width}px`)\n st.setProperty(`--radix-popper-anchor-height`, `${rects.reference.height}px`)\n },\n }),\n transformOrigin,\n ],\n }).then((r) => {\n if (!alive) return\n const first = pos() === null\n const origin = r.middlewareData.transformOrigin as { x: string; y: string } | undefined\n setPos({ x: r.x, y: r.y, placement: r.placement, origin: [origin?.x ?? ``, origin?.y ?? ``] })\n if (first) opts.onPlaced?.()\n })\n const stop = autoUpdate(anchor, wrapper, update, { animationFrame: false })\n onCleanup(() => {\n alive = false\n stop()\n })\n })\n return wrapper\n}\n","// FEED-131: Radix's pointer grace area (Tooltip's hoverable content, the\n// Menu's submenu): the polygon from the exit point to the target's box.\n\nexport type Point = { x: number; y: number }\n/** Is the point inside the polygon (ray casting, Radix's `isPointInPolygon`)? */\nexport function inPolygon(point: Point, polygon: Point[]): boolean {\n let inside = false\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const a = polygon[i]\n const b = polygon[j]\n if (a.y > point.y !== b.y > point.y && point.x < ((b.x - a.x) * (point.y - a.y)) / (b.y - a.y) + a.x) inside = !inside\n }\n return inside\n}\n/** The convex hull of points (Andrew's monotone chain, Radix's `getHull`). */\nexport function hull(points: Point[]): Point[] {\n const sorted = [...points].sort((a, b) => (a.x < b.x ? -1 : a.x > b.x ? 1 : a.y < b.y ? -1 : a.y > b.y ? 1 : 0))\n if (sorted.length <= 1) return sorted\n const cross = (o: Point, a: Point, b: Point) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x)\n const upper: Point[] = []\n for (const p of sorted) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], p) >= 0) upper.pop()\n upper.push(p)\n }\n upper.pop()\n const lower: Point[] = []\n for (let i = sorted.length - 1; i >= 0; i--) {\n const p = sorted[i]\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], p) >= 0) lower.pop()\n lower.push(p)\n }\n lower.pop()\n return upper.length === 1 && lower.length === 1 && upper[0].x === lower[0].x && upper[0].y === lower[0].y ? upper : upper.concat(lower)\n}\n/** The grace area from the exit point to a hover target's box. */\nexport function graceArea(exit: Point, from: DOMRect, to: DOMRect): Point[] {\n const padding = 5\n const top = Math.abs(from.top - exit.y)\n const bottom = Math.abs(from.bottom - exit.y)\n const right = Math.abs(from.right - exit.x)\n const left = Math.abs(from.left - exit.x)\n const m = Math.min(top, bottom, right, left)\n const padded: Point[] =\n m === left\n ? [{ x: exit.x + padding, y: exit.y - padding }, { x: exit.x + padding, y: exit.y + padding }]\n : m === right\n ? [{ x: exit.x - padding, y: exit.y - padding }, { x: exit.x - padding, y: exit.y + padding }]\n : m === top\n ? [{ x: exit.x - padding, y: exit.y + padding }, { x: exit.x + padding, y: exit.y + padding }]\n : [{ x: exit.x - padding, y: exit.y - padding }, { x: exit.x + padding, y: exit.y - padding }]\n return hull([...padded, { x: to.left, y: to.top }, { x: to.right, y: to.top }, { x: to.right, y: to.bottom }, { x: to.left, y: to.bottom }])\n}\n","// FEED-131: Radix `VisuallyHidden`.\n\nimport type { JSX } from \"solid-js\"\nimport { styleWriter } from \"./style-writer\"\n\n/** Radix `VisuallyHidden` with `role=\"tooltip\"` (its inline style, in its order). */\nexport function VisuallyHidden(props: { id: string; children: JSX.Element }): JSX.Element {\n const el = (\n <span id={props.id} role=\"tooltip\">\n {props.children}\n </span>\n ) as HTMLSpanElement\n styleWriter(el)({ position: `absolute`, border: `0`, width: `1px`, height: `1px`, padding: `0`, margin: `-1px`, overflow: `hidden`, clip: `rect(0, 0, 0, 0)`, \"white-space\": `nowrap`, \"word-wrap\": `normal` })\n return el\n}\n","// FEED-131: Radix's typeahead (`useTypeaheadSearch` + `getNextMatch`): a\n// 1 s buffer, a repeated letter cycles through the matches. `getNextMatch`\n// takes the labels (Menu), `findNextItem` the items (Select).\n\nimport { onCleanup } from \"solid-js\"\n\nexport const wrapArray = <T,>(array: T[], start: number) => array.map((_, i) => array[(start + i) % array.length])\n\nexport function getNextMatch(values: string[], search: string, currentMatch?: string): string | undefined {\n const isRepeated = search.length > 1 && Array.from(search).every((c) => c === search[0])\n const normalized = isRepeated ? search[0] : search\n const currentIndex = currentMatch ? values.indexOf(currentMatch) : -1\n let wrapped = wrapArray(values, Math.max(currentIndex, 0))\n if (normalized.length === 1) wrapped = wrapped.filter((v) => v !== currentMatch)\n const next = wrapped.find((v) => v.toLowerCase().startsWith(normalized.toLowerCase()))\n return next !== currentMatch ? next : undefined\n}\n\n/** Radix's Select type-ahead: a 1 s buffer, a repeated letter cycles. */\nexport function radixTypeahead(onSearch: (search: string) => void) {\n let search = ``\n let timer = 0\n const update = (v: string) => {\n search = v\n window.clearTimeout(timer)\n if (v !== ``) timer = window.setTimeout(() => update(``), 1000)\n }\n onCleanup(() => window.clearTimeout(timer))\n return {\n get search() {\n return search\n },\n type: (key: string) => {\n const next = search + key\n onSearch(next)\n update(next)\n },\n reset: () => {\n search = ``\n window.clearTimeout(timer)\n },\n }\n}\n\nexport function findNextItem<T extends { label: string }>(items: T[], search: string, current: T | undefined): T | undefined {\n const repeated = search.length > 1 && Array.from(search).every((c) => c === search[0])\n const normalized = repeated ? search[0] : search\n const at = current ? items.indexOf(current) : -1\n let wrapped = items.map((_, i) => items[(Math.max(at, 0) + i) % items.length])\n if (normalized.length === 1) wrapped = wrapped.filter((v) => v !== current)\n const next = wrapped.find((item) => item.label.toLowerCase().startsWith(normalized.toLowerCase()))\n return next !== current ? next : undefined\n}\n","// FEED-131: Radix `Menu`'s content machinery: `MenuContent` (Radix\n// `MenuContentImpl`: a dismissable layer + a focus scope + the popper, roving\n// focus over the items, typeahead, first/last keys, the pointer grace toward\n// a submenu; the ROOT content is modal), `createMenuRow` (`MenuItemImpl` +\n// `RovingFocusGroupItem`) and `createSelectable` (`MenuItem`), the keyboard\n// tracking (`isUsingKeyboardRef`). The rows' own DOM (parts, labels, icons)\n// is the painter's.\n\nimport { createContext, createSignal, onCleanup, onMount, untrack, useContext, type Accessor, type JSX } from \"solid-js\"\nimport type { VirtualElement } from \"@floating-ui/dom\"\nimport { OVERLAY_PADDING } from \"@exponential-at/ui\"\nimport { createLayer, LayerContext, type OutsideEvent } from \"./dismissable-layer\"\nimport { createFocusScope, focusFirst } from \"./focus-scope\"\nimport { useFocusGuards } from \"./focus-guards\"\nimport { useModalEffects } from \"./modal\"\nimport { inPolygon, type Point } from \"./grace-area\"\nimport { Popper, popperContentStyle, type Align, type Side } from \"./popper\"\nimport { bindStyle } from \"./style-writer\"\nimport { getNextMatch } from \"./typeahead\"\n\n/** Whether the person drives the menus with the keyboard (Radix's\n * `isUsingKeyboardRef`: a keydown says yes, a pointer says no). */\nlet usingKeyboard = false\nlet keyboardListeners = 0\nexport function useKeyboardTracking() {\n const key = () => (usingKeyboard = true)\n const pointer = () => (usingKeyboard = false)\n if (keyboardListeners++ === 0) {\n document.addEventListener(`keydown`, key, { capture: true })\n document.addEventListener(`pointerdown`, pointer, { capture: true })\n document.addEventListener(`pointermove`, pointer, { capture: true })\n }\n onCleanup(() => {\n if (--keyboardListeners === 0) {\n document.removeEventListener(`keydown`, key, { capture: true })\n document.removeEventListener(`pointerdown`, pointer, { capture: true })\n document.removeEventListener(`pointermove`, pointer, { capture: true })\n }\n })\n}\n\n/** One menu level's content (Radix `MenuContentImpl`): roving focus over its\n * items, typeahead, first/last keys, the pointer grace toward a submenu. */\nexport interface MenuLevel {\n content: () => HTMLElement | undefined\n highlighted: Accessor<HTMLElement | undefined>\n setHighlighted: (el: HTMLElement | undefined) => void\n tabStop: Accessor<HTMLElement | undefined>\n setTabStop: (el: HTMLElement | undefined) => void\n search: () => string\n onItemEnter: (e: PointerEvent) => boolean\n onItemLeave: (e: PointerEvent) => void\n onTriggerLeave: (e: PointerEvent) => boolean\n setGrace: (grace: { area: Point[]; side: Side } | null) => void\n}\nexport const MenuLevelContext = createContext<MenuLevel>()\n\nexport const FIRST_KEYS = [`ArrowDown`, `PageUp`, `Home`]\nexport const LAST_KEYS = [`ArrowUp`, `PageDown`, `End`]\nexport const itemsOf = (content: HTMLElement | undefined) => (content ? Array.from(content.querySelectorAll<HTMLElement>(`:scope [data-radix-collection-item]`)).filter((el) => el.closest(`[data-radix-menu-content]`) === content) : [])\n\nexport type MenuContentProps = {\n anchor: Element | VirtualElement | null | undefined\n side: Side\n align: Align\n sideOffset: number\n alignOffset?: number\n /** The popper's collision padding (default `OVERLAY_PADDING`, the natives';\n * the primitive set passes Radix's 0). */\n collisionPadding?: number\n /** A layer registered in this same mount pass is not visible to this\n * content's FIRST style (Radix's default-body portals: the outer layer\n * registers one commit after the nested content first renders), so its\n * `pointer-events` starts unset. The primitive set passes it. */\n lagParentLayer?: boolean\n /** Root content: modal (trap, outside pointer events off, scroll lock,\n * aria-hidden), focus to the content on mount. */\n root: boolean\n id?: string\n labelledBy?: string\n attrs: () => Record<string, unknown>\n state: () => string\n onDismiss: () => void\n onEscapeKeyDown?: (e: KeyboardEvent) => void\n onFocusOutside?: (e: OutsideEvent) => void\n onInteractOutside?: (e: OutsideEvent) => void\n onCloseAutoFocus: (e: Event) => void\n /** The reading direction (the popper wrapper's and the content's `dir`). */\n dir: `ltr` | `rtl`\n /** The `--radix-<kind>-content-*` prefix: `dropdown-menu` or `context-menu`. */\n kind: string\n onKeyDown?: (e: KeyboardEvent) => void\n setContent?: (el: HTMLElement | undefined) => void\n children: JSX.Element\n}\n\nexport function MenuContent(props: MenuContentProps): JSX.Element {\n const layer = createLayer({\n disableOutsidePointerEvents: () => props.root,\n onEscapeKeyDown: (e) => props.onEscapeKeyDown?.(e),\n onFocusOutside: (e) => {\n if (props.root) e.preventDefault()\n props.onFocusOutside?.(e)\n },\n onInteractOutside: (e) => props.onInteractOutside?.(e),\n onDismiss: () => props.onDismiss(),\n })\n const scope = createFocusScope({\n trapped: () => props.root,\n loop: false,\n onMountAutoFocus: (e) => {\n e.preventDefault()\n if (props.root || usingKeyboard) contentEl?.focus({ preventScroll: true })\n },\n onUnmountAutoFocus: (e) => props.onCloseAutoFocus(e),\n })\n const [registered, setRegistered] = createSignal(false)\n const [highlighted, setHighlighted] = createSignal<HTMLElement>()\n const [tabStop, setTabStop] = createSignal<HTMLElement>()\n let contentEl: HTMLElement | undefined\n let search = ``\n let searchTimer: ReturnType<typeof setTimeout> | undefined\n let grace: { area: Point[]; side: Side } | null = null\n let pointerDir: Side = `right`\n let lastPointerX = 0\n const movingToSubmenu = (e: PointerEvent) => Boolean(grace && pointerDir === grace.side && inPolygon({ x: e.clientX, y: e.clientY }, grace.area))\n const level: MenuLevel = {\n content: () => contentEl,\n highlighted,\n setHighlighted,\n tabStop,\n setTabStop,\n search: () => search,\n onItemEnter: (e) => movingToSubmenu(e),\n onItemLeave: (e) => {\n if (movingToSubmenu(e)) return\n contentEl?.focus({ preventScroll: true })\n setTabStop(undefined)\n },\n onTriggerLeave: (e) => movingToSubmenu(e),\n setGrace: (g) => (grace = g),\n }\n onCleanup(() => clearTimeout(searchTimer))\n const typeahead = (key: string) => {\n const next = search + key\n const items = itemsOf(contentEl).filter((el) => !el.hasAttribute(`data-disabled`))\n const current = document.activeElement\n const currentMatch = items.find((el) => el === current)?.textContent ?? undefined\n const values = items.map((el) => el.textContent ?? ``)\n const match = getNextMatch(values, next, currentMatch)\n const target = items.find((el) => (el.textContent ?? ``) === match)\n const update = (value: string) => {\n search = value\n clearTimeout(searchTimer)\n if (value !== ``) searchTimer = setTimeout(() => update(``), 1000)\n }\n update(next)\n if (target) setTimeout(() => target.focus())\n }\n return (\n <Popper anchor={props.anchor} side={props.side} align={props.align} sideOffset={props.sideOffset} alignOffset={props.alignOffset} collisionPadding={props.collisionPadding ?? OVERLAY_PADDING} dir={props.dir}>\n {(popper) => {\n const el = (\n <div\n data-side={popper.placedSide()}\n data-align={popper.placedAlign()}\n role=\"menu\"\n aria-orientation=\"vertical\"\n data-state={props.state()}\n data-radix-menu-content=\"\"\n dir={props.dir}\n id={props.id}\n aria-labelledby={props.labelledBy}\n {...props.attrs()}\n tabindex=\"-1\"\n data-orientation=\"vertical\"\n onKeyDown={(e: KeyboardEvent) => {\n scope.onKeyDown(e)\n const target = e.target as HTMLElement\n const inside = target.closest(`[data-radix-menu-content]`) === el\n const modifier = e.ctrlKey || e.altKey || e.metaKey\n if (inside) {\n if (e.key === `Tab`) e.preventDefault()\n if (!modifier && e.key.length === 1) typeahead(e.key)\n }\n props.onKeyDown?.(e)\n if (e.target !== el) return\n if (!FIRST_KEYS.includes(e.key) && !LAST_KEYS.includes(e.key)) return\n e.preventDefault()\n const nodes = itemsOf(el).filter((n) => !n.hasAttribute(`data-disabled`))\n if (LAST_KEYS.includes(e.key)) nodes.reverse()\n focusFirst(nodes)\n }}\n onFocus={(e: FocusEvent) => {\n // Radix RovingFocusGroup entry focus: the keyboard lands on the first item.\n if (e.target !== el || !usingKeyboard) return\n const nodes = itemsOf(el).filter((n) => !n.hasAttribute(`data-disabled`))\n const current = untrack(tabStop)\n focusFirst([current, ...nodes].filter(Boolean))\n }}\n onPointerMove={(e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n if (el.contains(e.target as Node) && lastPointerX !== e.clientX) {\n pointerDir = e.clientX > lastPointerX ? `right` : `left`\n lastPointerX = e.clientX\n }\n }}\n >\n <LayerContext.Provider value={layer.layer}>\n <MenuLevelContext.Provider value={level}>{props.children}</MenuLevelContext.Provider>\n </LayerContext.Provider>\n </div>\n ) as HTMLDivElement\n contentEl = el\n props.setContent?.(el)\n onCleanup(() => props.setContent?.(undefined))\n popper.setContent(el)\n bindStyle(el, () => popperContentStyle(props.kind, `trigger`, props.lagParentLayer && !registered() ? undefined : layer.pointerEvents(registered()), popper.isPositioned(), { outline: `none` }))\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n scope.attach(el)\n useFocusGuards()\n if (props.root) useModalEffects(el, true)\n })\n return el\n }}\n </Popper>\n )\n}\n\n/** The attributes + behaviour every menu row shares (Radix `MenuItemImpl` +\n * `RovingFocusGroupItem`): roving tabindex, `data-highlighted` while\n * focused, pointer highlight, arrow keys. */\nexport function createMenuRow(disabled: Accessor<boolean>) {\n const level = useContext(MenuLevelContext)!\n let el: HTMLElement | undefined\n const attrs = (): Record<string, unknown> => ({\n tabindex: level.tabStop() === el && el !== undefined ? `0` : `-1`,\n \"data-orientation\": `vertical`,\n \"data-radix-collection-item\": ``,\n \"data-highlighted\": level.highlighted() === el && el !== undefined ? `` : undefined,\n \"aria-disabled\": disabled() ? `true` : undefined,\n \"data-disabled\": disabled() ? `` : undefined,\n })\n const handlers = {\n onFocus: () => {\n level.setHighlighted(el)\n if (!untrack(disabled)) level.setTabStop(el)\n },\n onBlur: () => {\n if (untrack(level.highlighted) === el) level.setHighlighted(undefined)\n },\n onPointerMove: (e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n if (untrack(disabled)) level.onItemLeave(e)\n else if (!level.onItemEnter(e)) el?.focus({ preventScroll: true })\n },\n onPointerLeave: (e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n level.onItemLeave(e)\n },\n onKeyDown: (e: KeyboardEvent) => {\n if (e.target !== e.currentTarget) return\n const intent = e.key === `ArrowUp` ? `prev` : e.key === `ArrowDown` ? `next` : e.key === `Home` || e.key === `PageUp` ? `first` : e.key === `End` || e.key === `PageDown` ? `last` : undefined\n if (!intent || e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return\n e.preventDefault()\n let candidates = itemsOf(level.content()).filter((n) => !n.hasAttribute(`data-disabled`))\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 = candidates.slice(at + 1)\n }\n focusFirst(candidates)\n },\n }\n return { attrs, handlers, ref: (node: HTMLElement) => (el = node), level }\n}\n\n/** A selectable row (Radix `MenuItem`): click / Enter / Space select it, a\n * press that started elsewhere selects on release; `onSelect` may prevent\n * the `close` (the root menu's). */\nexport function createSelectable(disabled: Accessor<boolean>, onSelect: (e: Event) => void, close: () => void) {\n const row = createMenuRow(disabled)\n let pointerDownHere = false\n const select = () => {\n if (untrack(disabled)) return\n const e = new CustomEvent(`menu.itemSelect`, { bubbles: true, cancelable: true })\n onSelect(e)\n if (e.defaultPrevented) pointerDownHere = false\n else close()\n }\n const handlers = {\n ...row.handlers,\n onClick: select,\n onPointerDown: () => (pointerDownHere = true),\n onPointerUp: (e: PointerEvent) => {\n if (!pointerDownHere) (e.currentTarget as HTMLElement)?.click()\n },\n onKeyDown: (e: KeyboardEvent) => {\n row.handlers.onKeyDown(e)\n if (e.defaultPrevented) return\n const typingAhead = row.level.search() !== ``\n if (untrack(disabled) || (typingAhead && e.key === ` `)) return\n if (e.key === `Enter` || e.key === ` `) {\n ;(e.currentTarget as HTMLElement).click()\n e.preventDefault()\n }\n },\n }\n return { ...row, handlers }\n}\n","// FEED-131: Radix `RovingFocusGroup`: the group's own tab stop (`tabindex=0`\n// until an item holds the stop, entry focus to the active item), the items'\n// roving `tabindex`, the arrow/Home/End intents by orientation and `dir`,\n// `focusFirst` in a timeout. Tabs, Segmented (Radix ToggleGroup) and the\n// Radio group's keys use it.\n\nimport { createSignal } from \"solid-js\"\nimport { wrapArray } from \"./typeahead\"\n\nexport type Intent = `first` | `last` | `prev` | `next`\nexport const KEY_INTENT: Record<string, Intent> = { ArrowLeft: `prev`, ArrowUp: `prev`, ArrowRight: `next`, ArrowDown: `next`, PageUp: `first`, Home: `first`, PageDown: `last`, End: `last` }\n\nexport function focusIntent(e: KeyboardEvent, orientation: `horizontal` | `vertical` | undefined, dir: `ltr` | `rtl`): Intent | undefined {\n let key = e.key\n if (dir === `rtl`) key = key === `ArrowLeft` ? `ArrowRight` : key === `ArrowRight` ? `ArrowLeft` : key\n if (orientation === `vertical` && (key === `ArrowLeft` || key === `ArrowRight`)) return undefined\n if (orientation === `horizontal` && (key === `ArrowUp` || key === `ArrowDown`)) return undefined\n return KEY_INTENT[key]\n}\n\n/** Radix RovingFocusGroup's `focusFirst`: the first candidate that takes\n * focus (a candidate already focused stops the walk). */\nexport function rovingFocusFirst(candidates: (HTMLElement | null | undefined)[]): void {\n const previous = document.activeElement\n for (const candidate of candidates) {\n if (!candidate) continue\n if (candidate === previous) return\n candidate.focus()\n if (document.activeElement !== previous) return\n }\n}\n\n/** Radix's RovingFocusGroup: the group's own attributes + handlers, and\n * each item's. `items()` = the item elements in order, `focusable(el)`,\n * `active(el)` = the selected one (the group's entry focus). */\nexport function createRovingGroup(opts: { orientation?: `horizontal` | `vertical`; dir: () => `ltr` | `rtl`; loop: boolean; items: () => HTMLElement[]; focusable: (el: HTMLElement) => boolean; active: (el: HTMLElement) => boolean }) {\n const [stop, setStop] = createSignal<HTMLElement | null>(null)\n const [tabbingBackOut, setTabbingBackOut] = createSignal(false)\n let clickFocus = false\n const group = (): Record<string, unknown> => ({ tabindex: tabbingBackOut() ? -1 : 0, \"data-orientation\": opts.orientation })\n // React's onFocus/onBlur BUBBLE (focusin/focusout): a click on an item\n // resets the click flag through the group.\n const groupHandlers = {\n onMouseDown: () => void (clickFocus = true),\n onFocusIn: (e: FocusEvent) => {\n const keyboard = !clickFocus\n if (e.target === e.currentTarget && keyboard && !tabbingBackOut()) {\n const items = opts.items().filter(opts.focusable)\n const activeItem = items.find(opts.active)\n const current = items.find((el) => el === stop())\n rovingFocusFirst([activeItem, current, ...items].filter((el): el is HTMLElement => Boolean(el)))\n }\n clickFocus = false\n },\n onFocusOut: () => setTabbingBackOut(false),\n }\n const item = (el: () => HTMLElement | undefined, focusable: () => boolean) => ({\n tabindex: () => (stop() !== null && stop() === el() ? 0 : -1),\n onMouseDown: (e: MouseEvent) => {\n if (!focusable()) e.preventDefault()\n else setStop(el() ?? null)\n },\n onFocus: () => setStop(el() ?? null),\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === `Tab` && e.shiftKey) {\n setTabbingBackOut(true)\n return\n }\n if (e.target !== e.currentTarget) return\n const intent = focusIntent(e, opts.orientation, opts.dir())\n if (intent === undefined) return\n if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return\n e.preventDefault()\n let candidates = opts.items().filter(opts.focusable)\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 = opts.loop ? wrapArray(candidates, at + 1) : candidates.slice(at + 1)\n }\n setTimeout(() => rovingFocusFirst(candidates))\n },\n })\n return { group, groupHandlers, item }\n}\n","// FEED-131: the listbox keyboard model (React's natives/listbox.ts\n// `useListNavigation`) and Radix Select's trigger keys. `createListNavigation`\n// = the Select's and the ChipInput's (the clamp runs as an effect);\n// `createListNavigationSync` = the TimePicker's (the clamp runs as a\n// computation). The two differ in timing only, kept apart so neither moves.\n\nimport { createComputed, createEffect, createSignal, untrack, type Accessor } from \"solid-js\"\nimport { nextEnabledIndex, typeaheadStep } from \"@exponential-at/ui/web\"\n\nexport interface ListNavOptions {\n count: Accessor<number>\n isDisabled?: (index: number) => boolean\n labelOf?: (index: number) => string\n onPick: (index: number) => void\n /** Type-ahead (off when a search field owns the keys). */\n typeahead?: Accessor<boolean>\n initial?: number\n}\n\n/** React's `useListNavigation`: an active option (aria-activedescendant,\n * focus stays where it is), ArrowUp/ArrowDown move it (wrapping, skipping\n * disabled), Home/End jump, Enter picks, printable keys type-ahead by label\n * when the list owns focus. */\nexport function createListNavigation(o: ListNavOptions) {\n const isDisabled = o.isDisabled ?? (() => false)\n const labelOf = o.labelOf ?? (() => ``)\n const typeahead = o.typeahead ?? (() => false)\n const [active, setActive] = createSignal(o.initial ?? -1)\n let buffer = { text: ``, at: 0 }\n createEffect(() => {\n const count = o.count()\n if (active() >= count) setActive(count - 1)\n })\n const move = (from: number, delta: number) => nextEnabledIndex(o.count(), from, delta, isDisabled)\n const onKeyDown = (e: KeyboardEvent) => {\n const count = o.count()\n const a = active()\n if (e.key === `ArrowDown`) {\n e.preventDefault()\n setActive(move(a < 0 ? -1 : a, 1))\n } else if (e.key === `ArrowUp`) {\n e.preventDefault()\n setActive(move(a < 0 ? 0 : a, -1))\n } else if (e.key === `Home`) {\n e.preventDefault()\n setActive(move(-1, 1))\n } else if (e.key === `End`) {\n e.preventDefault()\n setActive(move(0, -1))\n } else if (e.key === `Enter` || (e.key === ` ` && typeahead() && buffer.text === ``)) {\n if (a >= 0 && a < count && !isDisabled(a)) {\n e.preventDefault()\n o.onPick(a)\n }\n } else if (typeahead() && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {\n const step = typeaheadStep(buffer, e.key, Date.now(), a, count, isDisabled, labelOf)\n buffer = step.buffer\n if (step.index >= 0) setActive(step.index)\n }\n }\n return { active, setActive, onKeyDown }\n}\n\nexport interface ListNavSyncOptions {\n count: Accessor<number>\n isDisabled?: (index: number) => boolean\n labelOf?: (index: number) => string\n onPick: (index: number) => void\n /** Type-ahead (off when a search field owns the keys). */\n typeahead?: boolean\n initial?: number\n}\n\n/** The TimePicker's variant of `createListNavigation`: `typeahead` is a\n * constant, the active index is clamped to the count SYNCHRONOUSLY\n * (`createComputed`, before the list renders) and `setActive` is a plain\n * setter (no updater function). React's `useListNavigation`: an active\n * option (aria-activedescendant, focus stays where it is), ArrowUp/ArrowDown\n * move it (wrapping, skipping disabled), Home/End jump, Enter picks,\n * printable keys type-ahead. */\nexport function createListNavigationSync(o: ListNavSyncOptions): { active: Accessor<number>; setActive: (i: number) => void; onKeyDown: (e: KeyboardEvent) => void } {\n const isDisabled = o.isDisabled ?? (() => false)\n const labelOf = o.labelOf ?? (() => ``)\n const [active, setActive] = createSignal(o.initial ?? -1)\n let buffer = { text: ``, at: 0 }\n createComputed(() => {\n const c = o.count()\n if (untrack(active) >= c) setActive(c - 1)\n })\n const move = (from: number, delta: number) => nextEnabledIndex(o.count(), from, delta, isDisabled)\n const onKeyDown = (e: KeyboardEvent) => {\n const count = o.count()\n const a = active()\n if (e.key === `ArrowDown`) {\n e.preventDefault()\n setActive(move(a < 0 ? -1 : a, 1))\n } else if (e.key === `ArrowUp`) {\n e.preventDefault()\n setActive(move(a < 0 ? 0 : a, -1))\n } else if (e.key === `Home`) {\n e.preventDefault()\n setActive(move(-1, 1))\n } else if (e.key === `End`) {\n e.preventDefault()\n setActive(move(0, -1))\n } else if (e.key === `Enter` || (e.key === ` ` && o.typeahead && buffer.text === ``)) {\n if (a >= 0 && a < count && !isDisabled(a)) {\n e.preventDefault()\n o.onPick(a)\n }\n } else if (o.typeahead && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {\n const step = typeaheadStep(buffer, e.key, Date.now(), a, count, isDisabled, labelOf)\n buffer = step.buffer\n if (step.index >= 0) setActive(step.index)\n }\n }\n return { active, setActive: (i) => setActive(i), onKeyDown }\n}\n\n/** Radix Select: the keys that open the content from the trigger, and the\n * keys that pick the focused item. */\nexport const OPEN_KEYS = [` `, `Enter`, `ArrowUp`, `ArrowDown`]\nexport const SELECTION_KEYS = [` `, `Enter`]\n","// FEED-131: Radix `useSize`. (The renderer's own `createElementSize` in\n// platform.ts is the surface's measured box: a different contract.)\n\nimport { createEffect, createSignal, onCleanup, type Accessor } from \"solid-js\"\n\n/** Radix's `useSize`: the element's border-box size once mounted, then\n * followed by a ResizeObserver (undefined before the first measure). */\nexport function createElementSize(el: Accessor<HTMLElement | undefined>): Accessor<{ width: number; height: number } | undefined> {\n const [size, setSize] = createSignal<{ width: number; height: number } | undefined>(undefined, { equals: (a, b) => a?.width === b?.width && a?.height === b?.height })\n createEffect(() => {\n const node = el()\n if (!node) return setSize(undefined)\n setSize({ width: node.offsetWidth, height: node.offsetHeight })\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n let width: number\n let height: number\n if (`borderBoxSize` in entry && entry.borderBoxSize) {\n const box = (Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize) as ResizeObserverSize\n width = box.inlineSize\n height = box.blockSize\n } else {\n width = node.offsetWidth\n height = node.offsetHeight\n }\n setSize({ width, height })\n })\n ro.observe(node, { box: `border-box` })\n onCleanup(() => ro.unobserve(node))\n })\n return size\n}\n","// FEED-131: Radix's hidden form inputs (`BubbleInput`, `BubbleSelect`):\n// rendered only inside a <form> (`createInForm`, Radix's `isFormControl`),\n// a state change replayed on them with the native setter + a bubbling event\n// so <form> listeners see it.\n\nimport { For, createEffect, createSignal, on, onMount, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { bool, str } from \"@exponential-at/ui/web\"\nimport { css } from \"../style\"\nimport { createElementSize } from \"./element-size\"\n\n/** Radix's `isFormControl`: the control sits in a <form> (decided once\n * mounted; Radix renders its bubble input only then). */\nexport function createInForm(el: Accessor<HTMLElement | undefined>): Accessor<boolean> {\n const [inForm, setInForm] = createSignal(false)\n onMount(() => setInForm(Boolean(el()?.closest(`form`))))\n return inForm\n}\n\n/** Radix's bubble-input effect: a state change replays on the hidden input\n * (the native setter + a bubbling event) so <form> listeners see it. */\nexport function bubbleOnChange<T>(input: () => HTMLInputElement | HTMLSelectElement | undefined, value: Accessor<T>, apply: (el: HTMLInputElement | HTMLSelectElement, v: T) => void, event: string, bubbles: () => boolean = () => true) {\n createEffect(\n on(\n value,\n (v) => {\n const el = input()\n if (!el) return\n apply(el, v)\n el.dispatchEvent(new Event(event, { bubbles: bubbles() }))\n },\n { defer: true }\n )\n )\n}\n\nexport const setChecked = (el: HTMLInputElement | HTMLSelectElement, v: boolean) => Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, `checked`)?.set?.call(el, v)\n\n/** Radix's hidden checkbox/radio bubble input (inside a <form> only). */\nexport function BubbleCheck(props: { type: `checkbox` | `radio`; control: HTMLElement | undefined; checked: boolean; name?: string; value: string; disabled: boolean; transformFirst: boolean; bubbles: () => boolean }): JSX.Element {\n let input: HTMLInputElement | undefined\n const size = createElementSize(() => props.control)\n const initial = untrack(() => props.checked)\n bubbleOnChange(() => input, () => props.checked, setChecked, `click`, props.bubbles)\n const style = () => {\n const s = size()\n const box = s ? { width: s.width, height: s.height } : {}\n const fixed = { position: `absolute`, pointerEvents: `none`, opacity: 0, margin: 0 }\n return css(props.transformFirst ? { transform: `translateX(-100%)`, ...box, ...fixed } : { ...box, ...fixed, transform: `translateX(-100%)` })\n }\n return <input ref={input} type={props.type} aria-hidden=\"true\" attr:checked={initial ? `` : undefined} name={props.name} value={props.value} disabled={props.disabled} tabindex={-1} style={style()} />\n}\n\nexport function SliderBubble(props: { name?: string; value: number }): JSX.Element {\n let input: HTMLInputElement | undefined\n const initial = untrack(() => String(props.value))\n bubbleOnChange(() => input, () => props.value, (el, v) => Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, `value`)?.set?.call(el, v), `input`)\n return <input ref={input} style={css({ display: `none` })} name={props.name} attr:value={initial} />\n}\n\n/** Radix's visually-hidden native <select> (inside a <form>). */\nexport function NativeSelect(props: { name: string; value: string | undefined; disabled: boolean; options: { label: string; value: string; disabled?: boolean }[]; onChange: (v: string) => void }): JSX.Element {\n let el: HTMLSelectElement | undefined\n const initial = untrack(() => props.value)\n createEffect(\n on(\n () => props.value,\n (v) => {\n if (!el) return\n Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype, `value`)?.set?.call(el, v)\n el.dispatchEvent(new Event(`change`, { bubbles: true }))\n },\n { defer: true }\n )\n )\n const hidden = css({ position: `absolute`, border: 0, width: 1, height: 1, padding: 0, margin: -1, overflow: `hidden`, clip: `rect(0, 0, 0, 0)`, whiteSpace: `nowrap`, wordWrap: `normal` })\n return (\n <select ref={el} aria-hidden=\"true\" tabindex={-1} name={props.name} disabled={props.disabled} style={hidden} onChange={(e) => props.onChange(e.currentTarget.value)}>\n {initial === undefined ? <option value=\"\" /> : null}\n <For each={props.options}>\n {(o) => (\n <option value={o.value} disabled={bool(o.disabled)} attr:selected={initial !== undefined && o.value === initial ? `` : undefined}>\n {str(o.label)}\n </option>\n )}\n </For>\n </select>\n )\n}\n","// FEED-131: Radix Avatar's image-load state machine.\n\nimport { createComputed, createSignal, onCleanup } from \"solid-js\"\n\nexport type LoadingStatus = `idle` | `loading` | `loaded` | `error`\n\n/** Radix Avatar's `useImageLoadingStatus`: a detached `Image` probes the\n * src; the <img> paints only once it LOADED. */\nexport function createImageLoadingStatus(src: () => string | undefined): () => LoadingStatus {\n const [status, setStatus] = createSignal<LoadingStatus>(`idle`)\n const image = typeof window === `undefined` ? null : new window.Image()\n const resolve = (s: string | undefined): LoadingStatus => {\n if (!image) return `idle`\n if (!s) return `error`\n if (image.src !== s) image.src = s\n return image.complete && image.naturalWidth > 0 ? `loaded` : `loading`\n }\n createComputed(() => setStatus(resolve(src())))\n if (image) {\n const loaded = () => setStatus(`loaded`)\n const errored = () => setStatus(`error`)\n image.addEventListener(`load`, loaded)\n image.addEventListener(`error`, errored)\n onCleanup(() => {\n image.removeEventListener(`load`, loaded)\n image.removeEventListener(`error`, errored)\n })\n }\n return status\n}\n"],"names":["CHROME","check","Check","chevronDown","ChevronDown","chevronUp","ChevronUp","chevronLeft","ChevronLeft","chevronRight","ChevronRight","close","X","search","Search","calendar","Calendar","send","Send","stop","Square","play","Play","attach","Paperclip","spinner","Loader","placeholder","CircleDashed","FALLBACK_ICONS","ChevronsUpDown","Copy","File","Minus","Plus","Clock","Info","CircleCheck","TriangleAlert","CircleX","CircleStop","ArrowLeft","Ellipsis","Menu","upload","Upload","star","Star","resolveIcon","icons","name","lookupIcon","shapes","WeakMap","probe","icon","has","get","shape","document","createRoot","dispose","el","Element","localName","classList","contains","classes","Array","from","filter","c","nodes","children","map","child","attrs","a","attributes","value","set","mergeClasses","i","all","Boolean","trim","indexOf","join","LucideSvg","props","local","rest","splitProps","hasA11y","Object","keys","some","k","startsWith","size","attr","fallback","_el$","_tmpl$","_$spread","_$mergeProps","undefined","width","height","class","_$insert","_$createComponent","For","each","tag","Dynamic","component","PaintIcon","p","IconGlyph","resolved","style","createElementSize","LayerPortal","Show","when","mount","resolveChildren","marker","createTextNode","appendChild","insert","onCleanup","n","flat","Infinity","Node","parentNode","removeChild","remove","mountIn","container","onMount","css","transformOrigin","fn","data","placedSide","placedAlign","placement","split","noArrowAlign","start","center","end","x","y","rects","floating","Popper","desired","align","side","setPlacement","createSignal","untrack","isPositioned","setPositioned","content","setContent","pos","origin","floatingSet","zIndex","disposed","wrapper","_$effect","_$setAttribute","dir","writeWrapper","styleWriter","dpr","ownerDocument","defaultView","devicePixelRatio","roundByDPR","v","Math","round","paintWrapper","s","position","left","top","transform","state","createEffect","anchor","getComputedStyle","padding","collisionPadding","detect","boundary","altBoundary","middleware","offset","mainAxis","sideOffset","alignmentAxis","alignOffset","shift","crossAxis","limiter","limitShift","flip","apply","elements","availableWidth","availableHeight","st","setProperty","reference","placementNow","update","computePosition","strategy","then","d","middlewareData","same","autoUpdate","animationFrame","popperContentStyle","kind","trigger","pointerEvents","positioned","prefix","animation","popperWrapper","opts","setPos","setZIndex","contentEl","window","placed","createMemo","willChange","minWidth","_el$2","_p$","_v$","_v$2","e","_$style","t","alive","r","first","onPlaced","VisuallyHidden","id","border","margin","overflow","clip","usingKeyboard","keyboardListeners","useKeyboardTracking","key","pointer","addEventListener","capture","removeEventListener","MenuLevelContext","createContext","FIRST_KEYS","LAST_KEYS","itemsOf","querySelectorAll","closest","MenuContent","layer","createLayer","disableOutsidePointerEvents","root","onEscapeKeyDown","onFocusOutside","preventDefault","onInteractOutside","onDismiss","scope","createFocusScope","trapped","loop","onMountAutoFocus","focus","preventScroll","onUnmountAutoFocus","onCloseAutoFocus","registered","setRegistered","highlighted","setHighlighted","tabStop","setTabStop","searchTimer","grace","pointerDir","lastPointerX","movingToSubmenu","inPolygon","clientX","clientY","area","level","onItemEnter","onItemLeave","onTriggerLeave","setGrace","g","clearTimeout","typeahead","next","items","hasAttribute","current","activeElement","currentMatch","find","textContent","values","match","getNextMatch","target","setTimeout","OVERLAY_PADDING","popper","labelledBy","onKeyDown","inside","modifier","ctrlKey","altKey","metaKey","length","includes","reverse","focusFirst","onFocus","onPointerMove","pointerType","LayerContext","Provider","bindStyle","lagParentLayer","outline","useFocusGuards","useModalEffects","createMenuRow","disabled","useContext","tabindex","handlers","onBlur","onPointerLeave","currentTarget","intent","shiftKey","candidates","at","slice","ref","node","createSelectable","onSelect","row","pointerDownHere","select","CustomEvent","bubbles","cancelable","defaultPrevented","onClick","onPointerDown","onPointerUp","click","typingAhead","createInForm","inForm","setInForm","bubbleOnChange","input","event","on","dispatchEvent","Event","defer","setChecked","getOwnPropertyDescriptor","HTMLInputElement","prototype","call","BubbleCheck","control","initial","checked","box","fixed","opacity","transformFirst","_ref$","_$use","type","_v$3","_v$4","o","SliderBubble","String","_tmpl$2","_ref$2","_v$5","display","_v$6","NativeSelect","HTMLSelectElement","hidden","whiteSpace","wordWrap","_el$3","_tmpl$3","onChange","_ref$3","_tmpl$4","options","_el$5","_tmpl$5","str","label","_v$0","bool","_v$1","_v$7","_v$8","_v$9"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-content:"";--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-xs:.125rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--blur-2xl:40px;--color-glass-stroke:var(--glass-stroke-row);--animate-progress-indeterminate:progress-indeterminate 1.4s cubic-bezier(.65, 0, .35, 1) infinite}:where(:root,:host){--menu-item-height:48px;--menu-item-padding-x:12px;--menu-item-gap:12px;--menu-icon-size:16px;--menu-surface-padding:4px;--menu-min-width:180px;--menu-max-width:280px}@media (min-width:768px){:where(:root,:host){--menu-item-height:36px;--menu-item-padding-x:8px;--menu-item-gap:8px}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-\(--offset\){top:var(--offset)}.top-0{top:calc(var(--spacing) * 0)}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.top-\[calc\(env\(safe-area-inset-top\,0px\)\+16px\)\]{top:calc(env(safe-area-inset-top,0px) + 16px)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.left-\[50\%\]{left:50%}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[100\]{z-index:100}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.-mx-\(--menu-surface-padding\){margin-inline:calc(var(--menu-surface-padding) * -1)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing) * -1)}.my-\(--menu-surface-padding\){margin-block:var(--menu-surface-padding)}.my-1{margin-block:calc(var(--spacing) * 1)}.ms-auto{margin-inline-start:auto}.-me-1{margin-inline-end:calc(var(--spacing) * -1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.-mb-1{margin-bottom:calc(var(--spacing) * -1)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.ml-\[calc\(--spacing\(2\)-1px\)\]{margin-left:calc(calc(var(--spacing) * 2) - 1px)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!hidden{display:none!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-\[1\.6\]{aspect-ratio:1.6}.aspect-square{aspect-ratio:1}.\!size-6{width:calc(var(--spacing) * 6)!important;height:calc(var(--spacing) * 6)!important}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-\(--menu-icon-size\){width:var(--menu-icon-size);height:var(--menu-icon-size)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\[20px\]{width:20px;height:20px}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-40{height:calc(var(--spacing) * 40)}.h-\[94dvh\]{height:94dvh}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[18\.75rem\]{max-height:18.75rem}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[94dvh\]{max-height:94dvh}.min-h-\(--menu-item-height\){min-height:var(--menu-item-height)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-lh{min-height:1lh}.w-\(--cell-size\){width:var(--cell-size)}.w-1\/3{width:33.3333%}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\/4{width:75%}.w-9{width:calc(var(--spacing) * 9)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[356px\]{width:356px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\(--menu-max-width\){max-width:var(--menu-max-width)}.max-w-\[7rem\]{max-width:7rem}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-\(--menu-min-width\){min-width:var(--menu-min-width)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-96{min-width:calc(var(--spacing) * 96)}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.origin-bottom{transform-origin:bottom}.origin-top{transform-origin:top}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.motion-press:active:not(:disabled,[aria-disabled=true]){scale:var(--motion-scale-press,.97)}@media (prefers-reduced-motion:reduce){.motion-press:active{scale:none}}.scale-\(--scale\){scale:var(--scale)}.-rotate-90{rotate:-90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.scroll-fade-x{--_scroll-fade-size-s:var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))));--_scroll-fade-size-e:var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))));--scroll-fade-inline:linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%)}.scroll-fade-x:where([dir=rtl],[dir=rtl] *){--scroll-fade-inline:linear-gradient(to left, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%)}.scroll-fade-x{-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-inline));-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-inline));-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-inline));mask-image:var(--scroll-fade-mask,var(--scroll-fade-inline));-webkit-mask-composite:source-in;-webkit-mask-composite:source-in;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-in;mask-composite:intersect}@supports (animation-timeline:scroll()){.scroll-fade-x{animation:1ms ease-in-out scroll-fade-reveal-s,1ms ease-in-out scroll-fade-reveal-e;animation-timeline:scroll(self inline),scroll(self inline);animation-range:0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%;animation-fill-mode:both}}@supports not (animation-timeline:scroll()){.scroll-fade-x{--scroll-fade-s:var(--_scroll-fade-size-s);--scroll-fade-e:var(--_scroll-fade-size-e)}}.motion-sheet[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-slow,.28s);--tw-ease:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1));--tw-enter-opacity:1;--tw-enter-scale:1}.motion-sheet[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));--tw-ease:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1));--tw-exit-opacity:1}@media (prefers-reduced-motion:reduce){.motion-sheet{--tw-enter-opacity:0!important;--tw-exit-opacity:0!important;--tw-enter-translate-x:0!important;--tw-enter-translate-y:0!important;--tw-exit-translate-x:0!important;--tw-exit-translate-y:0!important}}.motion-dialog[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));--tw-ease:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1));--tw-enter-opacity:0;--tw-enter-scale:var(--motion-scale-popover-from,.96)}.motion-dialog[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s));--tw-ease:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1));--tw-exit-opacity:0}@media (prefers-reduced-motion:reduce){.motion-dialog{--tw-enter-scale:1!important}}.motion-popover:is([data-state=open],[data-state=delayed-open]){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));--tw-ease:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1));--tw-enter-opacity:0;--tw-enter-scale:var(--motion-scale-popover-from,.96)}.motion-popover[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s));--tw-ease:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1));--tw-exit-opacity:0}@media (prefers-reduced-motion:reduce){.motion-popover{--tw-enter-scale:1!important}}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.content-start{align-content:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-items-start{justify-items:start}.gap-\(--menu-item-gap\){gap:var(--menu-item-gap)}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[4px\]{gap:4px}.gap-\[8px\]{gap:8px}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-glass-stroke>:not(:last-child)){border-color:var(--glass-stroke-row)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-\[6px\]{border-radius:6px}.rounded-\[10px\]{border-radius:10px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-3xl{border-top-left-radius:calc(var(--radius) + 12px);border-top-right-radius:calc(var(--radius) + 12px)}.rounded-l-3xl{border-top-left-radius:calc(var(--radius) + 12px);border-bottom-left-radius:calc(var(--radius) + 12px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-3xl{border-top-right-radius:calc(var(--radius) + 12px);border-bottom-right-radius:calc(var(--radius) + 12px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-b-3xl{border-bottom-right-radius:calc(var(--radius) + 12px);border-bottom-left-radius:calc(var(--radius) + 12px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-\[1px\]{border-style:var(--tw-border-style);border-width:1px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-destructive,.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.border-glass-stroke{border-color:var(--glass-stroke-row)}.border-glass-stroke-card{border-color:var(--glass-stroke-card)}.border-glass-stroke-section{border-color:var(--glass-stroke-section)}.border-glass-stroke-strong{border-color:var(--glass-stroke-strong)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-glass-card-opaque{background-color:var(--popover);background-image:linear-gradient(var(--glass-fill-card), var(--glass-fill-card))}.bg-accent{background-color:var(--accent)}.bg-avatar-1{background-color:var(--avatar-1,#fb923c)}.bg-avatar-2{background-color:var(--avatar-2,#facc15)}.bg-avatar-3{background-color:var(--avatar-3,#4ade80)}.bg-avatar-5{background-color:var(--avatar-5,#60a5fa)}.bg-avatar-6{background-color:var(--avatar-6,#a78bfa)}.bg-avatar-7{background-color:var(--avatar-7,#f472b6)}.bg-background,.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/85{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/85{background-color:color-mix(in oklab, var(--card) 85%, transparent)}}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-foreground\/30{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/30{background-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.bg-glass-active{background-color:var(--glass-fill-active)}.bg-glass-bottom{background-color:var(--glass-background-bottom)}.bg-glass-card{background-color:var(--glass-fill-card)}.bg-glass-row{background-color:var(--glass-fill-row)}.bg-glass-section{background-color:var(--glass-fill-section)}.bg-glass-stroke{background-color:var(--glass-stroke-row)}.bg-glass-stroke-strong{background-color:var(--glass-stroke-strong)}.bg-muted{background-color:var(--muted)}.bg-popover,.bg-popover\/85{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\/85{background-color:color-mix(in oklab, var(--popover) 85%, transparent)}}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/15{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-\(--menu-surface-padding\){padding:var(--menu-surface-padding)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[3px\]{padding:3px}.p-\[7px\]{padding:7px}.p-\[8px\]{padding:8px}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.px-\(--menu-item-padding-x\){padding-inline:var(--menu-item-padding-x)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-\(--menu-item-padding-x\){padding-right:var(--menu-item-padding-x)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-\[max\(1rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(1rem, env(safe-area-inset-bottom))}.pl-\(--menu-item-padding-x\){padding-left:var(--menu-item-padding-x)}.pl-0\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words,.wrap-break-word{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\(--hljs-addition\){color:var(--hljs-addition)}.text-\(--hljs-keyword\){color:var(--hljs-keyword)}.text-\(--hljs-number\){color:var(--hljs-number)}.text-\(--hljs-string\){color:var(--hljs-string)}.text-\(--hljs-tag\){color:var(--hljs-tag)}.text-\(--hljs-title\){color:var(--hljs-title)}.text-\(--hljs-variable\){color:var(--hljs-variable)}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\/50{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/50{color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-foreground\/85{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/85{color:color-mix(in oklab, var(--foreground) 85%, transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/90{color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.normal-case{text-transform:none}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.\[color-scheme\:dark\]{color-scheme:dark}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.glass-panel{border:1px solid var(--glass-stroke-card);background:var(--popover)}@supports (color:color-mix(in lab, red, red)){.glass-panel{background:color-mix(in oklab, var(--popover) 95%, transparent)}}.glass-panel{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 12px 32px -12px oklch(0% 0 0/.45),inset 0 1px oklch(100% 0 0/.06)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-\[color\,border-color\]{transition-property:color,border-color;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-\[height\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-\[top\,scale\,opacity\]{transition-property:top,scale,opacity;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}.transition-none{transition-property:none}.duration-fast{--tw-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s));transition-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s))}.duration-slow{--tw-duration:var(--motion-duration-slow,.28s);transition-duration:var(--motion-duration-slow,.28s)}.duration-standard{--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));transition-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s))}.ease-standard{--tw-ease:var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1));transition-timing-function:var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--cell-size\:--spacing\(8\)\]{--cell-size:calc(var(--spacing) * 8)}.\[--code-block-pad\:calc\(var\(--spacing\)\*6\)\]{--code-block-pad:calc(var(--spacing) * 6)}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-has-data-\[slot\=code-block-footer\]\/code-block\:pb-2:is(:where(.group\/code-block):has([data-slot=code-block-footer]) *){padding-bottom:calc(var(--spacing) * 2)}.group-has-data-\[slot\=code-block-header\]\/code-block\:pt-2:is(:where(.group\/code-block):has([data-slot=code-block-header]) *){padding-top:calc(var(--spacing) * 2)}.group-has-data-\[slot\=code-block-header\]\/code-block\:\[--code-block-pad\:calc\(var\(--spacing\)\*5\)\]:is(:where(.group\/code-block):has([data-slot=code-block-header]) *){--code-block-pad:calc(var(--spacing) * 5)}.group-aria-expanded\/trace-collapsible-trigger\:rotate-90:is(:where(.group\/trace-collapsible-trigger)[aria-expanded=true] *){rotate:90deg}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--ring)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/code-block\:-mx-2\.5:is(:where(.group\/code-block)[data-size=sm] *){margin-inline:calc(var(--spacing) * -2.5)}.group-data-\[size\=sm\]\/code-block\:px-2\.5:is(:where(.group\/code-block)[data-size=sm] *){padding-inline:calc(var(--spacing) * 2.5)}.group-data-\[size\=sm\]\/code-block\:py-2\.5:is(:where(.group\/code-block)[data-size=sm] *){padding-block:calc(var(--spacing) * 2.5)}.group-data-\[size\=sm\]\/code-block\:pt-2\.5:is(:where(.group\/code-block)[data-size=sm] *){padding-top:calc(var(--spacing) * 2.5)}.group-data-\[size\=sm\]\/code-block\:pb-2\.5:is(:where(.group\/code-block)[data-size=sm] *){padding-bottom:calc(var(--spacing) * 2.5)}.group-data-\[size\=sm\]\/code-block\:text-xs:is(:where(.group\/code-block)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-\[size\=sm\]\/code-block\:\[--code-block-pad\:calc\(var\(--spacing\)\*5\)\]:is(:where(.group\/code-block)[data-size=sm] *){--code-block-pad:calc(var(--spacing) * 5)}.group-data-\[size\=sm\]\/code-block\:group-has-data-\[slot\=code-block-header\]\/code-block\:pt-1\.5:is(:where(.group\/code-block)[data-size=sm] *):is(:where(.group\/code-block):has([data-slot=code-block-header]) *){padding-top:calc(var(--spacing) * 1.5)}.group-data-\[size\=sm\]\/code-block\:group-has-data-\[slot\=code-block-header\]\/code-block\:\[--code-block-pad\:calc\(var\(--spacing\)\*4\)\]:is(:where(.group\/code-block)[data-size=sm] *):is(:where(.group\/code-block):has([data-slot=code-block-header]) *){--code-block-pad:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/trace\:mt-1\.5:is(:where(.group\/trace)[data-size=sm] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[size\=sm\]\/trace\:ml-\[calc\(--spacing\(1\.75\)-1px\)\]:is(:where(.group\/trace)[data-size=sm] *){margin-left:calc(calc(var(--spacing) * 1.75) - 1px)}.group-data-\[size\=sm\]\/trace\:size-3\.5:is(:where(.group\/trace)[data-size=sm] *){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.group-data-\[size\=sm\]\/trace\:gap-1\.5:is(:where(.group\/trace)[data-size=sm] *){gap:calc(var(--spacing) * 1.5)}.group-data-\[size\=sm\]\/trace\:pl-\[calc\(--spacing\(3\.25\)\)\]:is(:where(.group\/trace)[data-size=sm] *){padding-left:calc(calc(var(--spacing) * 3.25))}.group-data-\[size\=sm\]\/trace\:text-xs:is(:where(.group\/trace)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-\[size\=sm\]\/trace\:leading-4\.5:is(:where(.group\/trace)[data-size=sm] *){--tw-leading:calc(var(--spacing) * 4.5);line-height:calc(var(--spacing) * 4.5)}.group-data-\[variant\=destructive\]\/code-block\:text-current:is(:where(.group\/code-block)[data-variant=destructive] *){color:currentColor}.group-data-\[variant\=destructive\]\/code-block\:text-destructive:is(:where(.group\/code-block)[data-variant=destructive] *){color:var(--destructive)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-foreground\/50::placeholder{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-foreground\/50::placeholder{color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.before\:min-w-6:before{content:var(--tw-content);min-width:calc(var(--spacing) * 6)}.before\:text-end:before{content:var(--tw-content);text-align:end}.before\:text-muted-foreground:before{content:var(--tw-content);color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-1:after{content:var(--tw-content);inset-inline-start:calc(var(--spacing) * 1)}.after\:top-0:after{content:var(--tw-content);top:calc(var(--spacing) * 0)}.after\:text-destructive:after{content:var(--tw-content);color:var(--destructive)}.after\:text-muted-foreground:after{content:var(--tw-content);color:var(--muted-foreground)}.after\:content-\[\'\+\'\]:after{--tw-content:"+";content:var(--tw-content)}.after\:content-\[\'−\'\]:after{--tw-content:"−";content:var(--tw-content)}.after\:select-none:after{content:var(--tw-content);-webkit-user-select:none;user-select:none}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-glass-active:hover,.hover\:bg-glass-active\/50:hover{background-color:var(--glass-fill-active)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-glass-active\/50:hover{background-color:color-mix(in oklab, var(--glass-fill-active) 50%, transparent)}}.hover\:bg-glass-row:hover{background-color:var(--glass-fill-row)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-glass-active:focus{background-color:var(--glass-fill-active)}.focus\:text-foreground:focus{color:var(--foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-0:focus-visible{border-style:var(--tw-border-style);border-width:0}.focus-visible\:border-glass-stroke-active:focus-visible{border-color:var(--glass-stroke-active)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}:where([data-numbered]) .in-data-numbered\:col-span-2{grid-column:span 2/span 2}:where([data-numbered]) .in-data-numbered\:grid{display:grid}:where([data-numbered]) .in-data-numbered\:grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}:where([data-numbered]) .in-data-numbered\:grid-cols-subgrid{grid-template-columns:subgrid}:where([data-numbered]) .in-data-numbered\:gap-x-3{column-gap:calc(var(--spacing) * 3)}:where([data-numbered]) .in-data-numbered\:\[counter-increment\:line\]{counter-increment:line}:where([data-numbered]) .in-data-numbered\:before\:content-\[counter\(line\)\]:before{--tw-content:counter(line);content:var(--tw-content)}:where([data-numbered]) .in-data-numbered\:before\:select-none:before{content:var(--tw-content);-webkit-user-select:none;user-select:none}:where([data-wrap]) .in-data-wrap\:min-w-0{min-width:calc(var(--spacing) * 0)}:where(:is(a,button)) .in-\[a\,button\]\:cursor-pointer{cursor:pointer}:where(:is(a:hover,button:hover)) .in-\[a\:hover\,button\:hover\]\:text-foreground{color:var(--foreground)}.has-focus\:border-ring:has(:focus){border-color:var(--ring)}.has-focus\:ring-\[3px\]:has(:focus){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\[data-status\=error\]\]\:text-destructive:has([data-status=error]){color:var(--destructive)}.has-\[\>\[data-slot\=code-block-content\]\:focus-visible\]\:border-ring:has(>[data-slot=code-block-content]:focus-visible){border-color:var(--ring)}.has-\[\>\[data-slot\=code-block-content\]\:focus-visible\]\:ring-3:has(>[data-slot=code-block-content]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\>\[data-slot\=code-block-content\]\:focus-visible\]\:ring-ring\/50:has(>[data-slot=code-block-content]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\>\[data-slot\=code-block-content\]\:focus-visible\]\:ring-ring\/50:has(>[data-slot=code-block-content]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}:is(.\*\:has-\[\>\[data-slot\=code-block-title\]\]\:min-w-0>*):has(>[data-slot=code-block-title]){min-width:calc(var(--spacing) * 0)}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:flex>*):has(>[data-slot=trace-line]){display:flex}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:w-fit>*):has(>[data-slot=trace-line]){width:fit-content}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:max-w-full>*):has(>[data-slot=trace-line]){max-width:100%}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:min-w-0>*):has(>[data-slot=trace-line]){min-width:calc(var(--spacing) * 0)}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:rounded-md>*):has(>[data-slot=trace-line]){border-radius:calc(var(--radius) - 2px)}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:text-left>*):has(>[data-slot=trace-line]){text-align:left}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:outline-none>*):has(>[data-slot=trace-line]){--tw-outline-style:none;outline-style:none}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:focus-visible\:ring-3>*):has(>[data-slot=trace-line]):focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:focus-visible\:ring-ring\/50>*):has(>[data-slot=trace-line]):focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:has-\[\>\[data-slot\=trace-line\]\]\:focus-visible\:ring-ring\/50>*):has(>[data-slot=trace-line]):focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-0:has(>svg){padding-inline:calc(var(--spacing) * 0)}.has-\[\>svg\]\:px-1\.5:has(>svg){padding-inline:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-pressed\:bg-accent[aria-pressed=true]{background-color:var(--accent)}.aria-pressed\:text-accent-foreground[aria-pressed=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-wrap\:scroll-fade-y[data-wrap]{--_scroll-fade-size-t:var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))));--_scroll-fade-size-b:var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))));--scroll-fade-block:linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%);-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-block));-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-block));-webkit-mask-image:var(--scroll-fade-mask,var(--scroll-fade-block));mask-image:var(--scroll-fade-mask,var(--scroll-fade-block));-webkit-mask-composite:source-in;-webkit-mask-composite:source-in;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-in;mask-composite:intersect}@supports (animation-timeline:scroll()){.data-wrap\:scroll-fade-y[data-wrap]{animation:1ms ease-in-out scroll-fade-reveal-t,1ms ease-in-out scroll-fade-reveal-b;animation-timeline:scroll(self y),scroll(self y);animation-range:0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%;animation-fill-mode:both}}@supports not (animation-timeline:scroll()){.data-wrap\:scroll-fade-y[data-wrap]{--scroll-fade-t:var(--_scroll-fade-size-t);--scroll-fade-b:var(--_scroll-fade-size-b)}}.data-wrap\:wrap-break-word[data-wrap]{overflow-wrap:break-word}.data-wrap\:whitespace-pre-wrap[data-wrap]{white-space:pre-wrap}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:cursor-default[data-disabled]{cursor:default}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:cursor-default[data-disabled=true]{cursor:default}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}:is(.data-\[expanded\=false\]\:data-\[front\=false\]\:\*\:opacity-0[data-expanded=false][data-front=false]>*),.data-\[hidden\=true\]\:opacity-0[data-hidden=true]{opacity:0}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-foreground\/50[data-placeholder]{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[placeholder\]\:text-foreground\/50[data-placeholder]{color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--primary)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--primary)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--primary-foreground)}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--primary)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[selected\=true\]\:border-glass-stroke-active[data-selected=true]{border-color:var(--glass-stroke-active)}.data-\[selected\=true\]\:bg-glass-active[data-selected=true]{background-color:var(--glass-fill-active)}.data-\[selected\=true\]\:text-foreground[data-selected=true]{color:var(--foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[size\=default\]\:h-5[data-size=default]{height:calc(var(--spacing) * 5)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=default\]\:h-auto[data-size=default]{height:auto}.data-\[size\=default\]\:w-9[data-size=default]{width:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-3\.5[data-size=sm]{height:calc(var(--spacing) * 3.5)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:w-6[data-size=sm]{width:calc(var(--spacing) * 6)}.data-\[size\=sm\]\:gap-1\.5[data-size=sm]{gap:calc(var(--spacing) * 1.5)}.data-\[size\=sm\]\:text-xs[data-size=sm]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.group-data-\[size\=default\]\/switch\:data-\[state\=checked\]\:translate-x-\[calc\(100\%\+2px\)\]:is(:where(.group\/switch)[data-size=default] *)[data-state=checked]{--tw-translate-x:calc(100% + 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=closed\]\:animate-collapsible-up[data-state=closed]{animation:collapsible-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-fast[data-state=closed]{--tw-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s));transition-duration:var(--motion-duration-fast,var(--xui-duration-fast,.12s))}.data-\[state\=closed\]\:duration-standard[data-state=closed]{--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));transition-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s))}.data-\[state\=closed\]\:ease-accelerate[data-state=closed]{--tw-ease:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1));transition-timing-function:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1))}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-collapsible-down[data-state=open]{animation:collapsible-down var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-glass-active[data-state=open]{background-color:var(--glass-fill-active)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:duration-slow[data-state=open]{--tw-duration:var(--motion-duration-slow,.28s);transition-duration:var(--motion-duration-slow,.28s)}.data-\[state\=open\]\:duration-standard[data-state=open]{--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));transition-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s))}.data-\[state\=open\]\:ease-decelerate[data-state=open]{--tw-ease:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1));transition-timing-function:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1))}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=selected\]\:bg-glass-active[data-state=selected]{background-color:var(--glass-fill-active)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-glass-active[data-state=unchecked]{background-color:var(--glass-fill-active)}.data-\[status\=error\]\:text-destructive[data-status=error],:where(:is(a:hover,button:hover)) .data-\[status\=error\]\:in-\[a\:hover\,button\:hover\]\:text-destructive[data-status=error]{color:var(--destructive)}.data-\[status\=pending\]\:opacity-60[data-status=pending]{opacity:.6}:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]{--_spread:var(--shimmer-spread,calc(3ch + 40px));--_base:currentColor;--_highlight:var(--shimmer-color,oklch(from currentColor l c h / calc(alpha* .2)));background-image:var(--shimmer-image,linear-gradient(calc(90deg + var(--shimmer-angle)), var(--_base) calc(50% - var(--_spread)), var(--_highlight) calc(50% - var(--_spread) * .5), var(--_highlight) 50%, var(--_highlight) calc(50% + var(--_spread) * .5), var(--_base) calc(50% + var(--_spread))))}@supports (color:color-mix(in lab, red, red)){:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]{background-image:var(--shimmer-image,linear-gradient(calc(90deg + var(--shimmer-angle)), var(--_base) calc(50% - var(--_spread)), color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% - var(--_spread) * .5), var(--_highlight) 50%, color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% + var(--_spread) * .5), var(--_base) calc(50% + var(--_spread))))}}:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]{background-repeat:no-repeat;background-size:calc(200% + var(--_spread) * 2) 100%;-webkit-text-fill-color:var(--shimmer-text-fill,transparent);animation:tw-shimmer var(--shimmer-duration,2s) linear infinite;background-position:0 0;-webkit-background-clip:text;background-clip:text}:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]:is(.dark *,[data-xui-mode=dark] *){--_highlight:var(--shimmer-color,oklch(from currentColor max(.8, calc(l + .4)) c h / calc(alpha + .4)))}:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]:where([dir=rtl],[dir=rtl] *){animation-direction:reverse}@media (prefers-reduced-motion:reduce){:is(.data-\[status\=running\]\:\*\:data-\[slot\=trace-title\]\:shimmer[data-status=running]>*)[data-slot=trace-title]{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=destructive\]\:data-\[state\=open\]\:bg-destructive\/10[data-variant=destructive][data-state=open]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:data-\[state\=open\]\:bg-destructive\/10[data-variant=destructive][data-state=open]{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:data-\[state\=open\]\:text-destructive[data-variant=destructive][data-state=open]{color:var(--destructive)}.data-\[visible\=false\]\:pointer-events-none[data-visible=false]{pointer-events:none}.data-\[visible\=false\]\:opacity-0[data-visible=false]{opacity:0}@supports (content:counter(line) / ''){:where([data-numbered]) .in-data-numbered\:supports-\[content\:counter\(line\)_\/_\'\'\]\:before\:content-\[counter\(line\)_\/_\'\'\]:before{--tw-content:counter(line) / "";content:var(--tw-content)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-progress-indeterminate{animation:var(--animate-progress-indeterminate)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:opacity-60{opacity:.6}.motion-reduce\:transition-none{transition-property:none}.motion-reduce\:shimmer-none{--shimmer-image:none;--shimmer-text-fill:currentColor}}@media not all and (min-width:40rem){.max-sm\:inset-0{inset:calc(var(--spacing) * 0)}.max-sm\:inset-x-0{inset-inline:calc(var(--spacing) * 0)}.max-sm\:top-1\/2{top:50%}.max-sm\:bottom-0{bottom:calc(var(--spacing) * 0)}.max-sm\:left-1\/2{left:50%}.max-sm\:block{display:block}.max-sm\:hidden{display:none}.max-sm\:h-\[94dvh\]{height:94dvh}.max-sm\:h-auto{height:auto}.max-sm\:max-h-\[90dvh\]{max-height:90dvh}.max-sm\:max-h-\[calc\(100dvh-3rem\)\]{max-height:calc(100dvh - 3rem)}.max-sm\:w-\[calc\(100\%-3rem\)\]{width:calc(100% - 3rem)}.max-sm\:w-full{width:100%}.max-sm\:max-w-sm{max-width:var(--container-sm)}.max-sm\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-sm\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-sm\:motion-sheet[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-slow,.28s);--tw-ease:var(--motion-ease-decelerate,cubic-bezier(0, 0, .2, 1));--tw-enter-opacity:1;--tw-enter-scale:1}.max-sm\:motion-sheet[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:var(--motion-duration-standard,var(--xui-duration-standard,.18s));--tw-ease:var(--motion-ease-accelerate,cubic-bezier(.3, 0, 1, 1));--tw-exit-opacity:1}@media (prefers-reduced-motion:reduce){.max-sm\:motion-sheet{--tw-enter-opacity:0!important;--tw-exit-opacity:0!important;--tw-enter-translate-x:0!important;--tw-enter-translate-y:0!important;--tw-exit-translate-x:0!important;--tw-exit-translate-y:0!important}}.max-sm\:rounded-2xl{border-radius:calc(var(--radius) + 8px)}.max-sm\:rounded-t-3xl{border-top-left-radius:calc(var(--radius) + 12px);border-top-right-radius:calc(var(--radius) + 12px)}.max-sm\:border{border-style:var(--tw-border-style);border-width:1px}.max-sm\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.max-sm\:border-glass-stroke-card{border-color:var(--glass-stroke-card)}.max-sm\:bg-background{background-color:var(--background)}.max-sm\:bg-glass-bottom{background-color:var(--glass-background-bottom)}.max-sm\:p-5{padding:calc(var(--spacing) * 5)}.max-sm\:p-6{padding:calc(var(--spacing) * 6)}.max-sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.max-sm\:pt-0{padding-top:calc(var(--spacing) * 0)}.max-sm\:pb-\[max\(1rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(1rem, env(safe-area-inset-bottom))}.max-sm\:group-data-\[side\=bottom\]\/sheet\:text-lg:is(:where(.group\/sheet)[data-side=bottom] *){font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.max-sm\:group-data-\[side\=bottom\]\/sheet\:leading-none:is(:where(.group\/sheet)[data-side=bottom] *){--tw-leading:1;line-height:1}.max-sm\:data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.max-sm\:data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}}@media (min-width:40rem){.sm\:inset-auto{inset:auto}.sm\:top-\[50\%\]{top:50%}.sm\:left-\[50\%\]{left:50%}.sm\:max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.sm\:w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:rounded-2xl{border-radius:calc(var(--radius) + 8px)}.sm\:border{border-style:var(--tw-border-style);border-width:1px}.sm\:border-glass-stroke-card{border-color:var(--glass-stroke-card)}.sm\:bg-card\/85{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.sm\:bg-card\/85{background-color:color-mix(in oklab, var(--card) 85%, transparent)}}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:text-left{text-align:left}.sm\:shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.sm\:shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.sm\:shadow-black\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.sm\:backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:48rem){.md\:flex-row{flex-direction:row}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-destructive\/40:is(.dark *,[data-xui-mode=dark] *){border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:border-destructive\/40:is(.dark *,[data-xui-mode=dark] *){border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:border-input:is(.dark *,[data-xui-mode=dark] *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *,[data-xui-mode=dark] *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *,[data-xui-mode=dark] *){background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-glass-row:is(.dark *,[data-xui-mode=dark] *){background-color:var(--glass-fill-row)}.dark\:bg-input\/30:is(.dark *,[data-xui-mode=dark] *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *,[data-xui-mode=dark] *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:text-muted-foreground:is(.dark *,[data-xui-mode=dark] *){color:var(--muted-foreground)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.dark\:hover\:bg-glass-active\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:var(--glass-fill-active)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-glass-active\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:color-mix(in oklab, var(--glass-fill-active) 50%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *,[data-xui-mode=dark] *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:text-accent-foreground:is(.dark *,[data-xui-mode=dark] *):hover{color:var(--accent-foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-xui-mode=dark] *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-xui-mode=dark] *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-xui-mode=dark] *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-xui-mode=dark] *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}@media (hover:hover){.dark\:aria-pressed\:hover\:bg-accent:is(.dark *,[data-xui-mode=dark] *)[aria-pressed=true]:hover{background-color:var(--accent)}}.dark\:data-\[state\=active\]\:border-glass-stroke-active:is(.dark *,[data-xui-mode=dark] *)[data-state=active]{border-color:var(--glass-stroke-active)}.dark\:data-\[state\=active\]\:bg-glass-active:is(.dark *,[data-xui-mode=dark] *)[data-state=active]{background-color:var(--glass-fill-active)}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *,[data-xui-mode=dark] *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *,[data-xui-mode=dark] *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *,[data-xui-mode=dark] *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *,[data-xui-mode=dark] *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *,[data-xui-mode=dark] *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *,[data-xui-mode=dark] *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.\[\&_\[data-slot\=progress-indicator\]\]\:bg-amber-500 [data-slot=progress-indicator]{background-color:var(--color-amber-500)}.\[\&_\[data-slot\=progress-indicator\]\]\:bg-destructive [data-slot=progress-indicator]{background-color:var(--destructive)}.\[\&_\[data-slot\=progress-indicator\]\]\:bg-foreground\/30 [data-slot=progress-indicator]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.\[\&_\[data-slot\=progress-indicator\]\]\:bg-foreground\/30 [data-slot=progress-indicator]{background-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:inline-block svg{display:inline-block}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:align-middle svg{vertical-align:middle}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-\(--menu-icon-size\) svg:not([class*=size-]){width:var(--menu-icon-size);height:var(--menu-icon-size)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-full svg:not([class*=size-]){width:100%;height:100%}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}@media (hover:hover){.\[\&_tr\]\:hover\:bg-transparent tr:hover{background-color:#0000}}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg),:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.\*\:\[svg\]\:me-1\.5>*):is(svg){margin-inline-end:calc(var(--spacing) * 1.5)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive\![data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}@media not all and (min-width:40rem){.max-sm\:\[\&\>\[data-slot\=button\]\]\:h-10>[data-slot=button]{height:calc(var(--spacing) * 10)}.max-sm\:\[\&\>\[data-slot\=button\]\]\:w-full>[data-slot=button]{width:100%}.max-sm\:\[\&\>\[data-slot\=button\]\]\:px-6>[data-slot=button]{padding-inline:calc(var(--spacing) * 6)}}.\[\&\>\[data-slot\=tabs-trigger\]\]\:h-auto>[data-slot=tabs-trigger]{height:auto}.\[\&\>\[data-slot\=tabs-trigger\]\]\:flex-1>[data-slot=tabs-trigger]{flex:1}.\[\&\>\[data-slot\=tabs-trigger\]\]\:py-1\.5>[data-slot=tabs-trigger]{padding-block:calc(var(--spacing) * 1.5)}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>span\+svg\:last-child\]\:ml-0>span+svg:last-child{margin-left:calc(var(--spacing) * 0)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@supports (field-sizing:content){.\[\@supports\(field-sizing\:content\)\]\:resize-none{resize:none}}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent{background-color:#0000}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:absolute{position:absolute}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:end-2{inset-inline-end:calc(var(--spacing) * 2)}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:top-2{top:calc(var(--spacing) * 2)}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:z-10{z-index:10}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:m-0{margin:calc(var(--spacing) * 0)}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:opacity-0{opacity:0}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--motion-ease-standard,cubic-bezier(.2, 0, 0, 1)));transition-duration:var(--tw-duration,var(--motion-duration-fast,var(--xui-duration-fast,.12s)))}[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:group-focus-within\/code-block\:opacity-100:is(:where(.group\/code-block):focus-within *){opacity:1}@media (hover:hover){[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:group-hover\/code-block\:opacity-100:is(:where(.group\/code-block):hover *){opacity:1}}[data-slot=code-block]>.group-data-\[size\=sm\]\/code-block\:\[\[data-slot\=code-block\]\>\&\]\:end-1\.5:is(:where(.group\/code-block)[data-size=sm] *){inset-inline-end:calc(var(--spacing) * 1.5)}[data-slot=code-block]>.group-data-\[size\=sm\]\/code-block\:\[\[data-slot\=code-block\]\>\&\]\:top-1\.5:is(:where(.group\/code-block)[data-size=sm] *){top:calc(var(--spacing) * 1.5)}@media (pointer:coarse){[data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:pointer-coarse\:opacity-100{opacity:1}}:is([data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:\*\:\[button\]\:bg-background>*):is(button){background-color:var(--background)}:is([data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:\*\:\[button\]\:ring-1>*):is(button){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is([data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:\*\:\[button\]\:ring-foreground\/10>*):is(button){--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is([data-slot=code-block]>.\[\[data-slot\=code-block\]\>\&\]\:\*\:\[button\]\:ring-foreground\/10>*):is(button){--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:#0000}[data-slot=trace-title]~.\[\[data-slot\=trace-title\]\~\&\]\:-ml-1{margin-left:calc(var(--spacing) * -1)}}:root{--shimmer-duration:2s;--shimmer-angle:20deg;--shimmer-spread:60px}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes collapsible-down{0%{height:0}to{height:var(--radix-collapsible-content-height,var(--bits-collapsible-content-height,var(--reka-collapsible-content-height,var(--kb-collapsible-content-height,auto))))}}@keyframes collapsible-up{0%{height:var(--radix-collapsible-content-height,var(--bits-collapsible-content-height,var(--reka-collapsible-content-height,var(--kb-collapsible-content-height,auto))))}to{height:0}}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}@keyframes scroll-fade-reveal-t{0%{--scroll-fade-t:0px}to{--scroll-fade-t:var(--_scroll-fade-size-t,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))))}}@keyframes scroll-fade-reveal-b{0%{--scroll-fade-b:var(--_scroll-fade-size-b,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))))}to{--scroll-fade-b:0px}}@keyframes scroll-fade-reveal-s{0%{--scroll-fade-s:0px}to{--scroll-fade-s:var(--_scroll-fade-size-s,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))))}}@keyframes scroll-fade-reveal-e{0%{--scroll-fade-e:var(--_scroll-fade-size-e,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10))))}to{--scroll-fade-e:0px}}@keyframes tw-shimmer{0%{background-position:100% 0}to{background-position:0 0}}