@wow-two-beta/ui-vue 0.0.3 → 0.0.5

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 (84) hide show
  1. package/dist/chunks/{BackToTopButton.vue_vue_type_script_setup_true_lang-CkxLllEO.js → BackToTopButton.vue_vue_type_script_setup_true_lang-iLYlhK05.js} +11 -5
  2. package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-iLYlhK05.js.map +1 -0
  3. package/dist/chunks/{Backdrop.vue_vue_type_script_setup_true_lang-DZUhGY9p.js → Backdrop.vue_vue_type_script_setup_true_lang-CKG--_g8.js} +2 -2
  4. package/dist/chunks/{Backdrop.vue_vue_type_script_setup_true_lang-DZUhGY9p.js.map → Backdrop.vue_vue_type_script_setup_true_lang-CKG--_g8.js.map} +1 -1
  5. package/dist/chunks/{BottomSheet.vue_vue_type_script_setup_true_lang-CmNoI4BE.js → BottomSheet.vue_vue_type_script_setup_true_lang-CmNaGird.js} +8 -8
  6. package/dist/chunks/{BottomSheet.vue_vue_type_script_setup_true_lang-CmNoI4BE.js.map → BottomSheet.vue_vue_type_script_setup_true_lang-CmNaGird.js.map} +1 -1
  7. package/dist/chunks/{ChatComposer.vue_vue_type_script_setup_true_lang-lNcRhKIv.js → ChatComposer.vue_vue_type_script_setup_true_lang-DfeVsj9h.js} +1024 -579
  8. package/dist/chunks/ChatComposer.vue_vue_type_script_setup_true_lang-DfeVsj9h.js.map +1 -0
  9. package/dist/chunks/{DateExtensions-QahSUlRy.js → DateExtensions-C6a-h8ji.js} +12 -22
  10. package/dist/chunks/{DateExtensions-QahSUlRy.js.map → DateExtensions-C6a-h8ji.js.map} +1 -1
  11. package/dist/chunks/{DismissableLayer.vue_vue_type_script_setup_true_lang-6nRnzsJW.js → DismissableLayer.vue_vue_type_script_setup_true_lang-ptH1ttBL.js} +3 -3
  12. package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-ptH1ttBL.js.map +1 -0
  13. package/dist/chunks/{DrawerContent.vue_vue_type_script_setup_true_lang-DvvrJdF0.js → DrawerContent.vue_vue_type_script_setup_true_lang-4n5w3lg2.js} +5 -5
  14. package/dist/chunks/{DrawerContent.vue_vue_type_script_setup_true_lang-DvvrJdF0.js.map → DrawerContent.vue_vue_type_script_setup_true_lang-4n5w3lg2.js.map} +1 -1
  15. package/dist/chunks/{ModalContent.vue_vue_type_script_setup_true_lang-CLACSqKg.js → ModalContent.vue_vue_type_script_setup_true_lang-Co5jaeXk.js} +5 -5
  16. package/dist/chunks/{ModalContent.vue_vue_type_script_setup_true_lang-CLACSqKg.js.map → ModalContent.vue_vue_type_script_setup_true_lang-Co5jaeXk.js.map} +1 -1
  17. package/dist/chunks/{Navbar.vue_vue_type_script_setup_true_lang-Cl2ejukE.js → Navbar.vue_vue_type_script_setup_true_lang-Cy0zvm5d.js} +7 -7
  18. package/dist/chunks/Navbar.vue_vue_type_script_setup_true_lang-Cy0zvm5d.js.map +1 -0
  19. package/dist/chunks/{NotificationItem.vue_vue_type_script_setup_true_lang-KC5Iusce.js → NotificationItem.vue_vue_type_script_setup_true_lang-DySfo3fD.js} +5 -5
  20. package/dist/chunks/{NotificationItem.vue_vue_type_script_setup_true_lang-KC5Iusce.js.map → NotificationItem.vue_vue_type_script_setup_true_lang-DySfo3fD.js.map} +1 -1
  21. package/dist/chunks/{OptionTileGroup.vue_vue_type_script_setup_true_lang-BGSmXM_u.js → OptionTileGroup.vue_vue_type_script_setup_true_lang-CKSVGCby.js} +51 -30
  22. package/dist/chunks/OptionTileGroup.vue_vue_type_script_setup_true_lang-CKSVGCby.js.map +1 -0
  23. package/dist/chunks/{PopoverContent.vue_vue_type_script_setup_true_lang-D-OiGICS.js → PopoverContent.vue_vue_type_script_setup_true_lang-DYd617X5.js} +4 -4
  24. package/dist/chunks/{PopoverContent.vue_vue_type_script_setup_true_lang-D-OiGICS.js.map → PopoverContent.vue_vue_type_script_setup_true_lang-DYd617X5.js.map} +1 -1
  25. package/dist/chunks/{Presence-C7IJvh_P.js → Presence-DE4MlrJz.js} +45 -27
  26. package/dist/chunks/Presence-DE4MlrJz.js.map +1 -0
  27. package/dist/chunks/{SortableHandle.vue_vue_type_script_setup_true_lang-CWCXGjZG.js → SortableHandle.vue_vue_type_script_setup_true_lang-8WPwGZ5e.js} +141 -130
  28. package/dist/chunks/SortableHandle.vue_vue_type_script_setup_true_lang-8WPwGZ5e.js.map +1 -0
  29. package/dist/chunks/{SurfaceStyles-ChdpGRBO.js → SurfaceStyles-B6W7zdMi.js} +2 -2
  30. package/dist/chunks/{SurfaceStyles-ChdpGRBO.js.map → SurfaceStyles-B6W7zdMi.js.map} +1 -1
  31. package/dist/chunks/{TableOfContents.vue_vue_type_script_setup_true_lang-HVL4lg_f.js → TableOfContents.vue_vue_type_script_setup_true_lang-C9eM0AoG.js} +18 -20
  32. package/dist/chunks/TableOfContents.vue_vue_type_script_setup_true_lang-C9eM0AoG.js.map +1 -0
  33. package/dist/chunks/{Tones-CI65uuq9.js → Tones-WKBNZ_u2.js} +39 -17
  34. package/dist/chunks/Tones-WKBNZ_u2.js.map +1 -0
  35. package/dist/chunks/{index-BD7H9CkO.js → index-CEoYQiWL.js} +3 -3
  36. package/dist/chunks/{index-BD7H9CkO.js.map → index-CEoYQiWL.js.map} +1 -1
  37. package/dist/chunks/{index-Cbydgcdk.js → index-op-kbVUk.js} +3 -3
  38. package/dist/chunks/{index-Cbydgcdk.js.map → index-op-kbVUk.js.map} +1 -1
  39. package/dist/foundation/primitives/index.js +3 -3
  40. package/dist/foundation/primitives/presence/Presence.d.ts +4 -0
  41. package/dist/foundation/utils/index.js +3 -3
  42. package/dist/index.js +111 -109
  43. package/dist/presentation/actions/index.js +2 -2
  44. package/dist/presentation/actions/speedDial/SpeedDialAction.vue.d.ts +6 -5
  45. package/dist/presentation/actions/speedDial/index.d.ts +3 -5
  46. package/dist/presentation/display/audioWaveform/AudioWaveform.vue.d.ts +1 -0
  47. package/dist/presentation/display/diffViewer/DiffViewer.vue.d.ts +2 -0
  48. package/dist/presentation/display/eventCalendar/EventCalendar.vue.d.ts +1 -0
  49. package/dist/presentation/display/frameGlyph/FrameGlyph.vue.d.ts +2 -0
  50. package/dist/presentation/display/gantt/Gantt.vue.d.ts +1 -0
  51. package/dist/presentation/display/heatmapCalendar/HeatmapCalendar.vue.d.ts +1 -0
  52. package/dist/presentation/display/index.js +98 -96
  53. package/dist/presentation/display/list/ListContext.d.ts +16 -0
  54. package/dist/presentation/display/list/ListItem.vue.d.ts +7 -1
  55. package/dist/presentation/display/list/index.d.ts +1 -0
  56. package/dist/presentation/display/metricChip/MetricChip.vue.d.ts +1 -1
  57. package/dist/presentation/display/moduleGlyphs/CellsGlyph.vue.d.ts +1 -0
  58. package/dist/presentation/display/radiusGlyph/RadiusGlyph.vue.d.ts +1 -0
  59. package/dist/presentation/display/reactionBar/ReactionBar.vue.d.ts +1 -0
  60. package/dist/presentation/feedback/index.js +1 -1
  61. package/dist/presentation/feedback/tour/Tour.vue.d.ts +1 -0
  62. package/dist/presentation/forms/TimeColumns.vue.d.ts +22 -0
  63. package/dist/presentation/forms/dateField/DateField.vue.d.ts +12 -0
  64. package/dist/presentation/forms/dateTimeField/DateTimeField.vue.d.ts +17 -0
  65. package/dist/presentation/forms/index.js +2 -2
  66. package/dist/presentation/forms/multiSelect/MultiSelect.vue.d.ts +8 -0
  67. package/dist/presentation/forms/multiSelect/MultiSelectContext.d.ts +9 -0
  68. package/dist/presentation/forms/multiSelect/MultiSelectTags.vue.d.ts +10 -0
  69. package/dist/presentation/forms/multiSelect/MultiSelectTrigger.vue.d.ts +5 -0
  70. package/dist/presentation/forms/timeField/TimeField.vue.d.ts +20 -5
  71. package/dist/presentation/forms/timePicker/TimePicker.vue.d.ts +5 -5
  72. package/dist/presentation/layout/index.js +1 -1
  73. package/dist/presentation/nav/index.js +1 -1
  74. package/dist/presentation/overlays/index.js +5 -5
  75. package/package.json +3 -2
  76. package/dist/chunks/BackToTopButton.vue_vue_type_script_setup_true_lang-CkxLllEO.js.map +0 -1
  77. package/dist/chunks/ChatComposer.vue_vue_type_script_setup_true_lang-lNcRhKIv.js.map +0 -1
  78. package/dist/chunks/DismissableLayer.vue_vue_type_script_setup_true_lang-6nRnzsJW.js.map +0 -1
  79. package/dist/chunks/Navbar.vue_vue_type_script_setup_true_lang-Cl2ejukE.js.map +0 -1
  80. package/dist/chunks/OptionTileGroup.vue_vue_type_script_setup_true_lang-BGSmXM_u.js.map +0 -1
  81. package/dist/chunks/Presence-C7IJvh_P.js.map +0 -1
  82. package/dist/chunks/SortableHandle.vue_vue_type_script_setup_true_lang-CWCXGjZG.js.map +0 -1
  83. package/dist/chunks/TableOfContents.vue_vue_type_script_setup_true_lang-HVL4lg_f.js.map +0 -1
  84. package/dist/chunks/Tones-CI65uuq9.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableOfContents.vue_vue_type_script_setup_true_lang-C9eM0AoG.js","sources":["../../src/presentation/nav/breadcrumb/Breadcrumb.vue","../../src/presentation/nav/pagination/Pagination.vue","../../src/presentation/nav/menu/MenuContext.ts","../../src/presentation/nav/menu/Menu.variants.ts","../../src/presentation/nav/menu/Menu.vue","../../src/presentation/nav/menu/MenuItem.vue","../../src/presentation/nav/menu/MenuGroup.vue","../../src/presentation/nav/menu/MenuLabel.vue","../../src/presentation/nav/menu/MenuSeparator.vue","../../src/presentation/nav/dropdownMenu/DropdownMenuContext.ts","../../src/presentation/nav/dropdownMenu/DropdownMenu.vue","../../src/presentation/nav/NavHelpers.ts","../../src/presentation/nav/dropdownMenu/DropdownMenuTrigger.vue","../../src/presentation/nav/dropdownMenu/DropdownMenuContent.vue","../../src/presentation/nav/contextMenu/ContextMenuContext.ts","../../src/presentation/nav/contextMenu/ContextMenu.vue","../../src/presentation/nav/contextMenu/ContextMenuTrigger.vue","../../src/presentation/nav/contextMenu/ContextMenuContent.vue","../../src/presentation/nav/menubar/MenubarContext.ts","../../src/presentation/nav/menubar/Menubar.variants.ts","../../src/presentation/nav/menubar/Menubar.vue","../../src/presentation/nav/menubar/MenubarMenu.vue","../../src/presentation/nav/menubar/MenubarTrigger.vue","../../src/presentation/nav/menubar/MenubarContent.vue","../../src/presentation/nav/navigationMenu/NavigationMenuContext.ts","../../src/presentation/nav/navigationMenu/NavigationMenu.vue","../../src/presentation/nav/navigationMenu/NavigationMenuList.vue","../../src/presentation/nav/navigationMenu/NavigationMenuItem.vue","../../src/presentation/nav/navigationMenu/NavigationMenuTrigger.vue","../../src/presentation/nav/navigationMenu/NavigationMenuContent.vue","../../src/presentation/nav/navigationMenu/NavigationMenuLink.vue","../../src/presentation/nav/commandPalette/CommandPaletteContext.ts","../../src/presentation/nav/commandPalette/CommandPalette.vue","../../src/presentation/nav/commandPalette/CommandPaletteContent.vue","../../src/presentation/nav/commandPalette/CommandPaletteInput.vue","../../src/presentation/nav/commandPalette/CommandPaletteList.vue","../../src/presentation/nav/commandPalette/CommandPaletteGroup.vue","../../src/presentation/nav/commandPalette/CommandPaletteItem.vue","../../src/presentation/nav/commandPalette/CommandPaletteEmpty.vue","../../src/presentation/nav/commandPalette/CommandPaletteSeparator.vue","../../src/presentation/nav/scrollSpy/UseScrollSpy.ts","../../src/presentation/nav/scrollSpy/ScrollSpy.vue","../../src/presentation/nav/tableOfContents/TableOfContents.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface BreadcrumbItem {\n /** React typed this `ReactNode`; the scalar form is what an array item can carry — the `#label` scoped slot is the rich override. */\n label: string | number;\n\n /** Make this item a link. Last item is typically rendered as plain text. */\n href?: string;\n}\n\nexport interface BreadcrumbProps {\n items: ReadonlyArray<BreadcrumbItem>;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/utils';\nimport { Icon } from '../../../foundation/icons';\n\n/**\n * Linear position trail — list of links + separators. The last item is\n * always rendered as `aria-current=\"page\"` and not a link. Use the L5\n * collapsing version when the chain gets long.\n */\ndefineOptions({ name: 'Breadcrumb', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for an item's `label`. */\n label?(props: { item: BreadcrumbItem; index: number }): unknown;\n\n /** The custom separator element. React's `separator` prop; defaults to a chevron-right icon. */\n separator?(): unknown;\n}>();\n\nconst props = defineProps<BreadcrumbProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst classes = computed(() => cn('text-sm', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\nconst lastIndex = computed(() => props.items.length - 1);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `aria-label` sits before `v-bind=\"rest\"` so a consumer-supplied one wins,\n the precedence React got from spreading `{...props}` after it. -->\n <nav ref=\"el\" aria-label=\"Breadcrumb\" v-bind=\"rest\" :class=\"classes\">\n <ol class=\"flex flex-wrap items-center gap-1.5\">\n <template v-for=\"(item, i) in props.items\" :key=\"i\">\n <li>\n <a\n v-if=\"item.href && i !== lastIndex\"\n :href=\"item.href\"\n class=\"text-muted-foreground hover:text-foreground hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm\"\n >\n <slot name=\"label\" :item=\"item\" :index=\"i\">{{ item.label }}</slot>\n </a>\n <span v-else :aria-current=\"i === lastIndex ? 'page' : undefined\" class=\"text-foreground\">\n <slot name=\"label\" :item=\"item\" :index=\"i\">{{ item.label }}</slot>\n </span>\n </li>\n <li v-if=\"i !== lastIndex\" aria-hidden=\"true\" class=\"text-subtle-foreground\">\n <slot name=\"separator\"><Icon :icon=\"ChevronRight\" :size=\"14\" /></slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n","<script lang=\"ts\">\nexport interface PaginationProps {\n /** The total page count (1-based). */\n total: number;\n\n /** The current page (1-based). The `v-model:page` binding target. */\n page: number;\n\n /** The number of page buttons surrounding the current. Default `1` (so 1 + current + 1 = 3). */\n siblings?: number;\n\n /** The hide-first/last toggle (just show prev/next + numbers). */\n hideFirstLast?: boolean;\n}\n\nfunction range(start: number, end: number): ReadonlyArray<number> {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n}\n\nfunction buildPages(\n total: number,\n page: number,\n siblings: number,\n): ReadonlyArray<number | 'ellipsis'> {\n if (total <= 1) return [1];\n const left = Math.max(2, page - siblings);\n const right = Math.min(total - 1, page + siblings);\n const pages: Array<number | 'ellipsis'> = [1];\n if (left > 2) pages.push('ellipsis');\n pages.push(...range(left, right));\n if (right < total - 1) pages.push('ellipsis');\n if (total > 1) pages.push(total);\n return pages;\n}\n\nconst BASE_BTN =\n 'inline-flex h-8 min-w-8 items-center justify-center rounded-md border border-transparent px-2 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50';\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/utils';\nimport { Icon } from '../../../foundation/icons';\n\n/**\n * Compact page-number row with prev/next + ellipses for skipped ranges.\n * Stateless — consumer drives `page` and reacts to `page-change`.\n */\ndefineOptions({ name: 'Pagination', inheritAttrs: false });\n\nconst props = withDefaults(defineProps<PaginationProps>(), {\n siblings: 1,\n hideFirstLast: false,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:page` half. */\n 'update:page': [page: number];\n\n /** Replaces React's `onPageChange` — emits the new page on click. */\n 'page-change': [page: number];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst pages = computed(() => buildPages(props.total, props.page, props.siblings));\n\nfunction go(page: number): void {\n const next = Math.min(props.total, Math.max(1, page));\n emit('update:page', next);\n emit('page-change', next);\n}\n\nconst classes = computed(() =>\n cn('inline-flex items-center gap-1', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <nav ref=\"el\" aria-label=\"Pagination\" v-bind=\"rest\" :class=\"classes\">\n <button\n v-if=\"!props.hideFirstLast\"\n type=\"button\"\n aria-label=\"First page\"\n :disabled=\"props.page <= 1\"\n :class=\"cn(BASE_BTN, 'hover:bg-muted')\"\n @click=\"go(1)\"\n >\n <Icon :icon=\"ChevronsLeft\" :size=\"16\" />\n </button>\n <button\n type=\"button\"\n aria-label=\"Previous page\"\n :disabled=\"props.page <= 1\"\n :class=\"cn(BASE_BTN, 'hover:bg-muted')\"\n @click=\"go(props.page - 1)\"\n >\n <Icon :icon=\"ChevronLeft\" :size=\"16\" />\n </button>\n <template v-for=\"(p, i) in pages\">\n <span v-if=\"p === 'ellipsis'\" :key=\"`e-${i}`\" class=\"px-1 text-muted-foreground\">…</span>\n <button\n v-else\n :key=\"p\"\n type=\"button\"\n :aria-current=\"p === props.page ? 'page' : undefined\"\n :class=\"\n cn(\n BASE_BTN,\n p === props.page ? 'border-primary bg-primary text-primary-foreground' : 'hover:bg-muted',\n )\n \"\n @click=\"go(p)\"\n >\n {{ p }}\n </button>\n </template>\n <button\n type=\"button\"\n aria-label=\"Next page\"\n :disabled=\"props.page >= props.total\"\n :class=\"cn(BASE_BTN, 'hover:bg-muted')\"\n @click=\"go(props.page + 1)\"\n >\n <Icon :icon=\"ChevronRight\" :size=\"16\" />\n </button>\n <button\n v-if=\"!props.hideFirstLast\"\n type=\"button\"\n aria-label=\"Last page\"\n :disabled=\"props.page >= props.total\"\n :class=\"cn(BASE_BTN, 'hover:bg-muted')\"\n @click=\"go(props.total)\"\n >\n <Icon :icon=\"ChevronsRight\" :size=\"16\" />\n </button>\n </nav>\n</template>\n","import { inject, type InjectionKey } from 'vue';\n\n/** One registered `MenuItem` — the unit the arrow-key walk moves across. */\nexport interface MenuItemEntry {\n id: string;\n el: HTMLButtonElement | null;\n disabled: boolean;\n}\n\n/**\n * The seam between `Menu` and its `MenuItem` / `MenuGroup` / `MenuLabel` /\n * `MenuSeparator` children.\n *\n * React attached these as `Menu.Item` / `.Group` / … over a `createContext`. An\n * SFC's generated default export cannot carry statics cleanly, so they ship as\n * sibling components and share state through provide/inject instead.\n */\nexport interface MenuContextValue {\n registerItem: (entry: MenuItemEntry) => void;\n unregisterItem: (id: string) => void;\n\n /** The live registry — a plain array, read imperatively, exactly as React's `useRef` list was. */\n items: Array<MenuItemEntry>;\n\n /** Closes the menu. React's `onClose`; the root re-emits it. */\n close: () => void;\n}\n\nexport const MenuKey: InjectionKey<MenuContextValue> = Symbol('wow-two.menu');\n\nexport function useMenuContext(): MenuContextValue {\n const context = inject(MenuKey, null);\n if (!context) {\n throw new Error('MenuItem / MenuGroup / MenuLabel / MenuSeparator must be used inside <Menu>');\n }\n return context;\n}\n","import { tv, type VariantProps } from '../../../foundation/utils';\n\nexport const menuVariants = tv({\n base: 'flex min-w-[8rem] flex-col gap-0.5 rounded-md border border-border bg-popover p-1 text-sm text-popover-foreground shadow-md outline-none',\n});\n\nexport const menuItemVariants = tv({\n base: 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors focus:bg-muted focus:text-foreground hover:bg-muted hover:text-foreground',\n variants: {\n state: {\n default: 'text-popover-foreground',\n destructive: 'text-destructive focus:bg-destructive-soft hover:bg-destructive-soft',\n disabled: 'pointer-events-none opacity-50',\n },\n },\n defaultVariants: { state: 'default' },\n});\n\nexport const menuLabelVariants = tv({\n base: 'px-2 py-1.5 text-xs font-semibold text-muted-foreground',\n});\n\nexport const menuSeparatorVariants = tv({\n base: '-mx-1 my-1 h-px bg-border',\n});\n\nexport type MenuVariants = VariantProps<typeof menuVariants>;\nexport type MenuItemVariants = VariantProps<typeof menuItemVariants>;\n\n/** Defines the visual state of a menu item. */\nexport const MenuItemState = {\n /** Refers to the default, neutral item. */\n Default: 'default',\n /** Refers to a destructive item (e.g. delete). */\n Destructive: 'destructive',\n /** Refers to a non-interactive, dimmed item. */\n Disabled: 'disabled',\n} as const;\n\nexport type MenuItemState = (typeof MenuItemState)[keyof typeof MenuItemState];\n\n/* Compile-time lock: enum values ≡ tv `state` keys (drift = type error). */\ntype AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;\nconst _assertMenuItemState: AssertExact<\n MenuItemState,\n NonNullable<VariantProps<typeof menuItemVariants>['state']>\n> = true;\nvoid _assertMenuItemState;\n","<script lang=\"ts\">\nimport type { Placement } from '@floating-ui/vue';\nimport type {\n SurfaceElevation,\n SurfacePadding,\n SurfaceRadius,\n SurfaceTone,\n SurfaceVariant,\n} from '../../../foundation/utils';\n\n/**\n * Represents the prop surface of `Menu`.\n *\n * React declared the surface axes by `extends SurfaceVariants`; they are\n * spelled out here because the SFC compiler's type resolver cannot follow a\n * `VariantProps<typeof …>` base and fails the build on it. The aliases below\n * are the canonical ones from `foundation/utils`, already locked against the\n * `surfaceVariants` config there, so the two cannot drift. `placement` is\n * `Placement` for the same reason — React read it back off `AnchoredPositioner`\n * with an indexed access, which the resolver cannot follow either.\n *\n * The accessible label is *not* a prop: a declared `'aria-label'` arrives as\n * `props.ariaLabel` and never renders. It stays a fallthrough attr and lands on\n * the menu surface through `v-bind=\"rest\"` below.\n */\nexport interface MenuProps {\n /** The open state, controlled. The React name; `isOpen` is the house spelling and `open` wins when both are set. */\n open?: boolean;\n\n /** The open state, controlled — the house spelling of `open`. */\n isOpen?: boolean;\n\n /** The element the surface anchors to. */\n anchor: HTMLElement | null;\n\n /** The Floating UI placement. Default `bottom-start`. */\n placement?: Placement;\n\n /** The distance between anchor and surface in px. Default 6. */\n offset?: number;\n\n /** The visual recipe. Default `surface`. */\n variant?: SurfaceVariant;\n\n /** The color tone the recipe is tinted with. */\n tone?: SurfaceTone;\n\n /** The corner rounding. Default `md`. */\n radius?: SurfaceRadius;\n\n /** The inner spacing step. Default `xs`. */\n padding?: SurfacePadding;\n\n /** The shadow depth. */\n elevation?: SurfaceElevation;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs } from 'vue';\nimport { cn, surfaceVariants } from '../../../foundation/utils';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n FocusScope,\n Portal,\n Presence,\n} from '../../../foundation/primitives';\nimport { MenuKey, type MenuItemEntry } from './MenuContext';\nimport { menuVariants } from './Menu.variants';\n\n/** The anchored, focus-trapped menu surface. */\ndefineOptions({ name: 'Menu', inheritAttrs: false });\n\n/** The menu contents — `MenuItem` / `MenuGroup` / `MenuLabel` / `MenuSeparator`. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `open` / `isOpen` default to `undefined` so an absent prop cannot read as an explicit `false`. */\nconst props = withDefaults(defineProps<MenuProps>(), {\n open: undefined,\n isOpen: undefined,\n placement: 'bottom-start',\n offset: 6,\n variant: undefined,\n tone: undefined,\n radius: undefined,\n padding: undefined,\n elevation: undefined,\n});\n\nconst emit = defineEmits<{\n /** Replaces React's `onClose` — Escape, an outside pointerdown, Tab, or an item selection. */\n close: [];\n\n /**\n * Replaces React's `onKeyDown` — fires for every keydown on the menu container,\n * ahead of the menu's own Tab handling, so a wrapper (Menubar) can add navigation\n * and opt out with `preventDefault()`.\n */\n keydown: [event: KeyboardEvent];\n}>();\n\nconst attrs = useAttrs();\n\nconst isMenuOpen = computed(() =>\n props.open !== undefined ? props.open : (props.isOpen ?? false),\n);\n\n/** The live item registry — a plain array, not reactive: the ordering is read imperatively. */\nconst items: Array<MenuItemEntry> = [];\n\nfunction registerItem(entry: MenuItemEntry): void {\n const index = items.findIndex((i) => i.id === entry.id);\n if (index >= 0) items[index] = entry;\n else items.push(entry);\n}\n\nfunction unregisterItem(id: string): void {\n const index = items.findIndex((i) => i.id === id);\n if (index >= 0) items.splice(index, 1);\n}\n\nprovide(MenuKey, { registerItem, unregisterItem, items, close: () => emit('close') });\n\nconst classes = computed(() =>\n cn(\n surfaceVariants({\n variant: props.variant ?? 'surface',\n tone: props.tone,\n radius: props.radius ?? 'md',\n padding: props.padding ?? 'xs',\n elevation: props.elevation,\n }),\n menuVariants(),\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. Carries `aria-label` onto the surface. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\nfunction handleEscape(): void {\n emit('close');\n}\n\nfunction handleOutsidePointerDown(event: PointerEvent): void {\n if (props.anchor?.contains(event.target as Node)) return;\n emit('close');\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n emit('keydown', event);\n if (event.defaultPrevented) return;\n if (event.key === 'Tab') {\n event.preventDefault();\n emit('close');\n }\n}\n</script>\n\n<template>\n <!-- No hard `v-if=\"isMenuOpen\"` — Presence keeps the surface mounted through its\n pop-out exit, flipping data-state to \"closed\" and deferring unmount until the\n animation ends. `FocusScope as-child` relays Presence's cloned `ref` +\n `data-state` down onto the DismissableLayer's div, which *is* the surface. -->\n <Portal>\n <AnchoredPositioner\n :anchor=\"props.anchor\"\n :placement=\"props.placement\"\n :offset=\"props.offset\"\n class=\"z-dropdown\"\n >\n <Presence :is-present=\"isMenuOpen\">\n <FocusScope as-child trapped loop>\n <DismissableLayer\n role=\"menu\"\n :on-escape=\"handleEscape\"\n :on-outside-pointer-down=\"handleOutsidePointerDown\"\n v-bind=\"rest\"\n :class=\"classes\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </DismissableLayer>\n </FocusScope>\n </Presence>\n </AnchoredPositioner>\n </Portal>\n</template>\n","<script lang=\"ts\">\nimport type { MenuItemState } from './Menu.variants';\n\n/**\n * Represents the prop surface of `MenuItem`.\n *\n * React declared `extends Omit<MenuItemVariants, 'state'>`; `state` is the only\n * axis `menuItemVariants` carries, so the heritage contributed nothing and is\n * dropped — a `VariantProps<…>` base is unresolvable to the SFC compiler anyway.\n */\nexport interface MenuItemProps {\n /** The visual state of the item. */\n state?: MenuItemState;\n\n /** The disabled state — blocks activation. */\n isDisabled?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, shallowRef, useAttrs, watch } from 'vue';\nimport { cn, dataAttr } from '../../../foundation/utils';\nimport { useId } from '../../../foundation/hooks';\nimport { useMenuContext } from './MenuContext';\nimport { MenuItemState as MenuItemStateToken, menuItemVariants } from './Menu.variants';\n\n/** A single activatable menu row. Arrow keys walk the enabled siblings. */\ndefineOptions({ name: 'MenuItem', inheritAttrs: false });\n\n/** The row content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `isDisabled` defaults to `undefined`, not `false` — an absent optional boolean must stay absent. */\nconst props = withDefaults(defineProps<MenuItemProps>(), {\n state: undefined,\n isDisabled: undefined,\n});\n\nconst emit = defineEmits<{\n /** Replaces React's `onSelect` — the item was activated (Enter / Space / click). The menu closes after. */\n select: [];\n}>();\n\nconst attrs = useAttrs();\nconst menu = useMenuContext();\nconst id = useId();\nconst el = shallowRef<HTMLButtonElement | null>(null);\n\n/* React re-registered from an effect keyed on `[ctx, id, isDisabled]`; the same\n two inputs are watched here, so a disabled toggle re-registers and the arrow\n walk sees it without a remount. */\nwatch(\n [el, () => props.isDisabled],\n ([node, isDisabled]) => {\n menu.registerItem({ id, el: node, disabled: isDisabled === true });\n },\n { immediate: true, flush: 'post' },\n);\n\nonScopeDispose(() => menu.unregisterItem(id));\n\nfunction moveFocus(target: 1 | -1 | 'first' | 'last'): void {\n const list = menu.items.filter((i) => !i.disabled);\n if (list.length === 0) return;\n if (target === 'first' || target === 'last') {\n list[target === 'first' ? 0 : list.length - 1]?.el?.focus();\n return;\n }\n const index = list.findIndex((i) => i.id === id);\n let nextIndex = index + target;\n if (index === -1) nextIndex = target === 1 ? 0 : list.length - 1;\n if (nextIndex < 0) nextIndex = list.length - 1;\n if (nextIndex >= list.length) nextIndex = 0;\n list[nextIndex]?.el?.focus();\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n moveFocus(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n moveFocus(-1);\n break;\n case 'Home':\n event.preventDefault();\n moveFocus('first');\n break;\n case 'End':\n event.preventDefault();\n moveFocus('last');\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n emit('select');\n menu.close();\n break;\n }\n}\n\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n emit('select');\n menu.close();\n}\n\nconst itemState = computed(\n () =>\n props.state ??\n (props.isDisabled ? MenuItemStateToken.Disabled : MenuItemStateToken.Default),\n);\n\nconst classes = computed(() =>\n cn(menuItemVariants({ state: itemState.value }), attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `v-bind=\"rest\"`, then own handlers last — a consumer's\n `click` / `keydown` handler therefore runs first, the order React got from\n calling `onClick?.(e)` ahead of its own logic, which is what makes the\n `defaultPrevented` check meaningful. -->\n <button\n ref=\"el\"\n type=\"button\"\n role=\"menuitem\"\n :disabled=\"isDisabled\"\n :aria-disabled=\"isDisabled || undefined\"\n :data-disabled=\"dataAttr(isDisabled)\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"handleClick\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </button>\n</template>\n","<script lang=\"ts\">\nexport interface MenuGroupProps {\n /** The group heading. React typed this `ReactNode`; the scalar form is the prop and `#label` is the rich override. */\n label?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { useId } from '../../../foundation/hooks';\nimport { menuLabelVariants } from './Menu.variants';\n\n/** A labelled `role=\"group\"` of menu items. */\ndefineOptions({ name: 'MenuGroup', inheritAttrs: false });\n\ndefineSlots<{\n /** The grouped items — React's `children`. */\n default(): unknown;\n\n /** The rich override for the `label` prop. */\n label?(): unknown;\n}>();\n\nconst props = defineProps<MenuGroupProps>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst labelId = useId();\n\nconst hasLabel = computed(() => Boolean(props.label) || Boolean(slots.label));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- React passed `className` straight through (no `cn` merge) and spread the\n rest after it; `v-bind=\"attrs\"` is the same single pass-through. -->\n <div ref=\"el\" role=\"group\" :aria-labelledby=\"hasLabel ? labelId : undefined\" v-bind=\"attrs\">\n <div v-if=\"hasLabel\" :id=\"labelId\" :class=\"menuLabelVariants()\">\n <slot name=\"label\">{{ props.label }}</slot>\n </div>\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `MenuLabel`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach the root\n * through `useAttrs` here and `children` is the default slot, which leaves no\n * declared prop.\n */\nexport type MenuLabelProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { menuLabelVariants } from './Menu.variants';\n\n/** A standalone heading row inside a menu — no `role`, purely visual. */\ndefineOptions({ name: 'MenuLabel', inheritAttrs: false });\n\n/** The label content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() => cn(menuLabelVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `MenuSeparator`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach the root\n * through `useAttrs` here, which leaves no declared prop.\n */\nexport type MenuSeparatorProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { menuSeparatorVariants } from './Menu.variants';\n\n/** The hairline rule between menu sections. */\ndefineOptions({ name: 'MenuSeparator', inheritAttrs: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/* React spread `{...props}` *after* its own `className`, so a consumer's class\n replaced the recipe outright; `cn` reproduces that precedence through\n tailwind-merge rather than concatenating the two. */\nconst classes = computed(() => cn(menuSeparatorVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"separator\" v-bind=\"rest\" :class=\"classes\" />\n</template>\n","import { inject, type ComputedRef, type InjectionKey, type Ref, type ShallowRef } from 'vue';\nimport type { Placement } from '@floating-ui/vue';\n\n/**\n * The value shared with `DropdownMenuTrigger` / `DropdownMenuContent`.\n *\n * React carried the trigger twice — a ref for imperative focus and a state copy\n * so anchored content re-rendered once the ref attached. A `shallowRef` is\n * already reactive, so one field covers both here.\n */\nexport interface DropdownMenuContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n\n /** The trigger element — the positioning anchor and the focus-return target. */\n triggerEl: ShallowRef<HTMLElement | null>;\n\n /**\n * Which item takes focus on open — the trigger arms it per gesture\n * (APG menu-button pattern: ArrowUp → last). A plain mutable box, not a ref:\n * it is a one-shot signal between two handlers, never rendered.\n */\n openFocus: { current: 'first' | 'last' };\n\n placement: ComputedRef<Placement>;\n offset: ComputedRef<number>;\n}\n\nexport const dropdownMenuContextKey: InjectionKey<DropdownMenuContextValue> =\n Symbol('wow-two.dropdownMenu');\n\nexport function useDropdownMenuContext(): DropdownMenuContextValue {\n const context = inject(dropdownMenuContextKey, null);\n if (!context) throw new Error('DropdownMenu.* must be used inside <DropdownMenu>');\n return context;\n}\n","<script lang=\"ts\">\nimport type { Placement } from '@floating-ui/vue';\n\n/**\n * The prop surface of `DropdownMenu`.\n *\n * `open` and `isOpen` are the same controlled state under two names: `open` is\n * the `v-model:open` binding target and React's own spelling, `isOpen` the house\n * boolean spelling that mirrors the rest of the port. `open` wins when both are\n * set. React's `onOpenChange` is the `open-change` emit; `update:open` fires\n * alongside it so `v-model:open` works.\n */\nexport interface DropdownMenuProps {\n /** The open state, controlled. The `v-model:open` binding target. */\n open?: boolean;\n\n /** The open state, controlled — the house spelling of `open`; `open` wins when both are set. */\n isOpen?: boolean;\n\n /** The initial open state when uncontrolled. Default `false`. */\n defaultOpen?: boolean;\n\n /** The Floating UI placement. Default `bottom-start`. */\n placement?: Placement;\n\n /** The distance between trigger and menu in px. Default 6. */\n offset?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, shallowRef } from 'vue';\nimport { useControlled } from '../../../foundation/hooks';\nimport { dropdownMenuContextKey } from './DropdownMenuContext';\n\n/**\n * State owner for a DropdownMenu tree. Renders only its slot — React returned a\n * bare context Provider, which has no element of its own.\n */\ndefineOptions({ name: 'DropdownMenu', inheritAttrs: false });\n\n/** The DropdownMenu tree — `DropdownMenuTrigger` and `DropdownMenuContent`. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `open` / `isOpen` default to `undefined` so an absent prop cannot read as an explicit `false`. */\nconst props = withDefaults(defineProps<DropdownMenuProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n placement: 'bottom-start',\n offset: 6,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nconst controlled = useControlled<boolean>({\n controlled: () => (props.open !== undefined ? props.open : props.isOpen),\n default: () => props.defaultOpen,\n onChange: (value) => {\n emit('update:open', value);\n emit('open-change', value);\n },\n});\n\nprovide(dropdownMenuContextKey, {\n open: controlled.value,\n setOpen: controlled.setValue,\n triggerEl: shallowRef<HTMLElement | null>(null),\n openFocus: { current: 'first' },\n placement: computed(() => props.placement),\n offset: computed(() => props.offset),\n});\n</script>\n\n<template>\n <slot />\n</template>\n","// Domain-internal helpers for `nav/`. Not exported from the group barrel —\n// the \"internal\" signal is absence from `index.ts`, not the file name.\n\n/**\n * The DOM node behind a template ref, or `null`.\n *\n * The `typeof` guard is load-bearing rather than defensive. Every trigger here\n * seeds its anchor element from a `watch(..., { immediate: true, flush: 'post' })`,\n * and Vue runs an *immediate* watcher once during SSR — where `HTMLElement` is\n * not a global, so a bare `value instanceof HTMLElement` throws `ReferenceError`\n * and takes the whole server render down. Returning `null` on the server is\n * correct as well as safe: there is no element to anchor to until hydration.\n */\nexport function toHtmlElement(value: unknown): HTMLElement | null {\n if (typeof HTMLElement === 'undefined') return null;\n return value instanceof HTMLElement ? value : null;\n}\n","<script lang=\"ts\">\n/**\n * The prop surface of `DropdownMenuTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface DropdownMenuTriggerProps {\n /** The as-child toggle — renders the trigger as its single slot child (e.g. `<Button>`). */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { Primitive } from '../../../foundation/primitives';\nimport { toHtmlElement } from '../NavHelpers';\nimport { useDropdownMenuContext } from './DropdownMenuContext';\n\n/** Toggles the enclosing `DropdownMenu` and doubles as its positioning anchor. */\ndefineOptions({ name: 'DropdownMenuTrigger', inheritAttrs: false });\n\n/** The trigger content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<DropdownMenuTriggerProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst context = useDropdownMenuContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/* Lifted to a setup const so the template auto-unwraps it (a plain injected object does not). */\nconst isOpen = context.open;\n\n/* React memoized a composed callback ref to keep the anchor node from thrashing; a post-flush watch is the equivalent. */\nwatch(\n inner,\n (instance) => {\n context.triggerEl.value = toHtmlElement(instance?.$el);\n },\n { immediate: true, flush: 'post' },\n);\n\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.openFocus.current = 'first';\n context.setOpen(!context.open.value);\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'Enter' ||\n event.key === ' '\n ) {\n event.preventDefault();\n // APG menu-button pattern: ArrowUp-open focuses the last item.\n context.openFocus.current = event.key === 'ArrowUp' ? 'last' : 'first';\n context.setOpen(true);\n }\n}\n\n/** `Primitive` renders the real element, so its `$el` is this component's root. */\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `v-bind=\"attrs\"`, then own handlers last — Vue chains the\n caller's handler first and ours second, React's `onClick?.(e)` order, which\n is what makes the `defaultPrevented` opt-out work. -->\n <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"asChild\"\n type=\"button\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n v-bind=\"attrs\"\n @click=\"handleClick\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `DropdownMenuContent`.\n *\n * React declared `className` and `'aria-label'`; both are fallthrough attrs\n * here. `class` lands on the animated panel (as React's did), everything else —\n * `aria-label` above all — is relayed to `Menu`, which puts it on the menu\n * surface. A declared `'aria-label'` would arrive as `props.ariaLabel` and never\n * render, so it stays an attr.\n */\nexport type DropdownMenuContentProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs, watch } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useReducedMotion } from '../../../foundation/hooks';\nimport { Presence } from '../../../foundation/primitives';\nimport Menu from '../menu/Menu.vue';\nimport { useDropdownMenuContext } from './DropdownMenuContext';\n\n/**\n * Animated panel handed to `Menu` as its child. `Presence` clones `data-state`\n * (\"open\" | \"closed\") onto the panel div, so the pop tokens below run gated on\n * that state.\n */\ndefineOptions({ name: 'DropdownMenuContent', inheritAttrs: false });\n\n/** The menu contents — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useDropdownMenuContext();\nconst reducedMotion = useReducedMotion();\n\n/* Lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = context.open;\nconst anchor = computed(() => context.triggerEl.value);\nconst placement = context.placement;\nconst offset = context.offset;\n\nconst panelEl = shallowRef<HTMLElement | null>(null);\n\n/* Keep `Menu` (positioner / focus scope / dismiss layer) mounted while the\n pop-out plays — `Menu` unmounts with this component, which would kill the exit.\n Opening flips this true synchronously; closing defers the unmount until the\n panel's exit animation ends (`animationend` below). Under reduced motion no\n animation fires, so drop it on the next frame instead. */\nconst mounted = shallowRef(context.open.value);\n\nwatch(\n [() => context.open.value, reducedMotion],\n ([open, isReduced], _previous, onCleanup) => {\n if (open) {\n mounted.value = true;\n return;\n }\n if (!isReduced) return;\n /* `immediate: true` makes this watcher run during SSR too, where there is no\n `requestAnimationFrame`. */\n if (typeof requestAnimationFrame === 'undefined') return;\n const raf = requestAnimationFrame(() => {\n mounted.value = false;\n });\n onCleanup(() => cancelAnimationFrame(raf));\n },\n { immediate: true, flush: 'post' },\n);\n\n/* ArrowUp-open focuses the LAST enabled item (APG menu-button pattern); the\n trigger arms `openFocus` per gesture and this consumes it. Other opens leave\n it at 'first' and FocusScope's default first-tabbable autofocus applies. */\nfunction focusLastEnabledItem(panel: HTMLElement): void {\n if (context.openFocus.current !== 'last') return;\n context.openFocus.current = 'first';\n const items = panel.querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([disabled])');\n items[items.length - 1]?.focus();\n}\n\n/* Both the mount path (panel enters the DOM a commit after `mounted` flips) and\n the reopen path (an open while the exit animation still has the panel mounted,\n which fires no fresh ref) are the same watch here — React needed a callback ref\n plus a second effect to cover them separately. */\nwatch(\n [panelEl, () => context.open.value],\n ([panel, open]) => {\n if (!panel || !open) return;\n focusLastEnabledItem(panel);\n },\n { flush: 'post' },\n);\n\nfunction setPanel(node: unknown): void {\n panelEl.value = (node ?? null) as HTMLElement | null;\n}\n\nfunction handleClose(): void {\n context.setOpen(false);\n requestAnimationFrame(() => context.triggerEl.value?.focus());\n}\n\nfunction handleAnimationEnd(): void {\n /* Drop `Menu` once the exit animation completes. */\n if (!context.open.value) mounted.value = false;\n}\n\nconst panelClasses = computed(() =>\n cn(\n /* pop (fade + slight scale) gated on data-state; motion-safe so\n reduced-motion users get no movement. */\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class` — relayed to `Menu`, which lands `aria-label` on the surface. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n</script>\n\n<template>\n <Menu\n v-if=\"mounted\"\n :open=\"mounted\"\n :anchor=\"anchor\"\n :placement=\"placement\"\n :offset=\"offset\"\n v-bind=\"rest\"\n @close=\"handleClose\"\n >\n <Presence :is-present=\"isOpen\">\n <div :ref=\"setPanel\" :class=\"panelClasses\" @animationend=\"handleAnimationEnd\">\n <slot />\n </div>\n </Presence>\n </Menu>\n</template>\n","import { inject, type InjectionKey, type ShallowRef } from 'vue';\n\n/** The value shared with `ContextMenuTrigger` / `ContextMenuContent`. */\nexport interface ContextMenuContextValue {\n open: ShallowRef<boolean>;\n setOpen: (open: boolean) => void;\n\n /** The zero-size virtual element the menu anchors to, positioned at the gesture's coordinates. */\n anchor: ShallowRef<HTMLElement | null>;\n setAnchor: (el: HTMLElement | null) => void;\n\n triggerEl: ShallowRef<HTMLElement | null>;\n\n /**\n * Element to hand focus back to on close — captured before the open gesture\n * moves focus. A plain mutable box, not a ref: it is a one-shot signal\n * between handlers, never rendered.\n */\n restoreFocus: { current: HTMLElement | null };\n}\n\nexport const contextMenuContextKey: InjectionKey<ContextMenuContextValue> =\n Symbol('wow-two.contextMenu');\n\nexport function useContextMenuContext(): ContextMenuContextValue {\n const context = inject(contextMenuContextKey, null);\n if (!context) throw new Error('ContextMenu.* must be used inside <ContextMenu>');\n return context;\n}\n","<script lang=\"ts\">\n/**\n * The prop surface of `ContextMenu`.\n *\n * React declared only `children`, which is the default slot here — leaving no\n * declared prop. The root owns its open state outright; there is no controlled\n * form to mirror.\n */\nexport type ContextMenuProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { onScopeDispose, provide, shallowRef } from 'vue';\nimport { contextMenuContextKey } from './ContextMenuContext';\n\n/**\n * State owner for a ContextMenu tree. Renders only its slot — React returned a\n * bare context Provider, which has no element of its own.\n */\ndefineOptions({ name: 'ContextMenu', inheritAttrs: false });\n\n/** The ContextMenu tree — `ContextMenuTrigger` and `ContextMenuContent`. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst open = shallowRef(false);\nconst anchor = shallowRef<HTMLElement | null>(null);\nconst triggerEl = shallowRef<HTMLElement | null>(null);\nconst restoreFocus: { current: HTMLElement | null } = { current: null };\nlet restoreRaf = 0;\n\n/** Detaches the outgoing body-appended virtual anchor before adopting the new one. */\nfunction setAnchor(el: HTMLElement | null): void {\n const previous = anchor.value;\n if (previous && typeof document !== 'undefined' && previous.parentNode === document.body) {\n previous.remove();\n }\n anchor.value = el;\n}\n\nfunction setOpen(next: boolean): void {\n // The trigger is a non-focusable div, so there is no trigger to hand focus\n // back to (APG wants focus returned on close). The trigger captures the\n // pre-gesture active element into `restoreFocus` on pointerdown (the\n // browser's mousedown focus fixup may have already blurred it by the time\n // `contextmenu` fires); fall back to the current active element for\n // non-pointer opens.\n if (next && !open.value) {\n cancelAnimationFrame(restoreRaf);\n restoreFocus.current ??=\n document.activeElement instanceof HTMLElement && document.activeElement !== document.body\n ? document.activeElement\n : null;\n }\n open.value = next;\n if (next) return;\n\n setAnchor(null);\n const restoreTarget = restoreFocus.current;\n restoreFocus.current = null;\n // The menu stays mounted (and focus-trapped) through its exit animation,\n // yanking focus straight back into itself — so retry each frame until the\n // restore sticks (bounded; the exit lasts a few hundred ms at most).\n // Reopening cancels the loop.\n if (!restoreTarget) return;\n let attempts = 0;\n const tryRestore = (): void => {\n restoreTarget.focus();\n if (document.activeElement !== restoreTarget && attempts++ < 30) {\n restoreRaf = requestAnimationFrame(tryRestore);\n }\n };\n restoreRaf = requestAnimationFrame(tryRestore);\n}\n\n// Cancel a pending focus-restore loop, and drop the body-appended virtual\n// anchor, if the tree unmounts mid-close.\nonScopeDispose(() => {\n if (typeof cancelAnimationFrame !== 'undefined') cancelAnimationFrame(restoreRaf);\n const current = anchor.value;\n if (current && typeof document !== 'undefined' && current.parentNode === document.body) {\n current.remove();\n }\n});\n\nprovide(contextMenuContextKey, { open, setOpen, anchor, setAnchor, triggerEl, restoreFocus });\n</script>\n\n<template>\n <slot />\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `ContextMenuTrigger`.\n *\n * React declared `extends HTMLAttributes<HTMLDivElement>`; attributes reach the\n * root through `useAttrs` here, which leaves `asChild` and `isDisabled`.\n */\nexport interface ContextMenuTriggerProps {\n /** The as-child toggle — renders the trigger as its single slot child. */\n asChild?: boolean;\n\n /** The disabled state — blocks both the right-click and the long-press open. */\n isDisabled?: boolean;\n}\n\n/** The long-press duration, in ms, that opens the menu on touch. */\nconst LONG_PRESS_MS = 600;\n\n/** Build a zero-size virtual element at coordinates to anchor Floating UI. */\nfunction makeVirtualAnchor(x: number, y: number): HTMLElement {\n const el = document.createElement('div');\n el.style.position = 'fixed';\n el.style.left = `${x}px`;\n el.style.top = `${y}px`;\n el.style.width = '0px';\n el.style.height = '0px';\n el.style.pointerEvents = 'none';\n document.body.appendChild(el);\n return el;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { Primitive } from '../../../foundation/primitives';\nimport { toHtmlElement } from '../NavHelpers';\nimport { useContextMenuContext } from './ContextMenuContext';\n\n/** The region a right-click (or a touch long-press) opens the menu over. */\ndefineOptions({ name: 'ContextMenuTrigger', inheritAttrs: false });\n\n/** The region's content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `isDisabled` defaults to `undefined`, not `false` — an absent optional boolean must stay absent. */\nconst props = withDefaults(defineProps<ContextMenuTriggerProps>(), {\n asChild: false,\n isDisabled: undefined,\n});\n\nconst attrs = useAttrs();\nconst context = useContextMenuContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\nlet longPressTimer: ReturnType<typeof setTimeout> | null = null;\n\nwatch(\n inner,\n (instance) => {\n context.triggerEl.value = toHtmlElement(instance?.$el);\n },\n { immediate: true, flush: 'post' },\n);\n\nfunction clearLongPress(): void {\n if (longPressTimer) clearTimeout(longPressTimer);\n longPressTimer = null;\n}\n\n// Clear a pending long-press timer if the trigger unmounts mid-press.\nonScopeDispose(clearLongPress);\n\nfunction handleContextMenu(event: MouseEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n event.preventDefault();\n context.setAnchor(makeVirtualAnchor(event.clientX, event.clientY));\n context.setOpen(true);\n}\n\nfunction handlePointerDown(event: PointerEvent): void {\n // Capture the focus-restore target before the browser's mousedown focus\n // fixup blurs it (this trigger is a non-focusable div, so the press moves\n // focus to <body> before `contextmenu` fires). Only for gestures that can\n // open the menu: right button / touch.\n if (!props.isDisabled && !context.open.value && (event.button === 2 || event.pointerType === 'touch')) {\n context.restoreFocus.current =\n document.activeElement instanceof HTMLElement && document.activeElement !== document.body\n ? document.activeElement\n : null;\n }\n if (event.defaultPrevented || props.isDisabled || event.pointerType !== 'touch') return;\n const x = event.clientX;\n const y = event.clientY;\n longPressTimer = setTimeout(() => {\n context.setAnchor(makeVirtualAnchor(x, y));\n context.setOpen(true);\n }, LONG_PRESS_MS);\n}\n\n/** `Primitive` renders the real element, so its `$el` is this component's root. */\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `v-bind=\"attrs\"` before the own handlers, so a consumer's `contextmenu` /\n `pointerdown` handler runs first — React's `onContextMenu?.(e)` order,\n which is what makes the `defaultPrevented` opt-out work. -->\n <Primitive\n ref=\"inner\"\n as=\"div\"\n :as-child=\"asChild\"\n v-bind=\"attrs\"\n @contextmenu=\"handleContextMenu\"\n @pointerdown=\"handlePointerDown\"\n @pointerup=\"clearLongPress\"\n @pointercancel=\"clearLongPress\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\nimport type { Placement } from '@floating-ui/vue';\n\n/**\n * The prop surface of `ContextMenuContent`.\n *\n * React declared `className` and `'aria-label'` alongside these; both are\n * fallthrough attrs here and are relayed to `Menu`, which lands `aria-label` on\n * the menu surface. A declared `'aria-label'` would arrive as `props.ariaLabel`\n * and never render, so it stays an attr. `placement` is `Placement` rather than\n * an indexed access into `MenuProps`, which the SFC compiler cannot resolve.\n */\nexport interface ContextMenuContentProps {\n /** The Floating UI placement. Default `bottom-start`. */\n placement?: Placement;\n\n /** The distance between the gesture point and the menu in px. Default 2. */\n offset?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport Menu from '../menu/Menu.vue';\nimport { useContextMenuContext } from './ContextMenuContext';\n\n/** The menu surface, anchored to the point the gesture happened at. */\ndefineOptions({ name: 'ContextMenuContent', inheritAttrs: false });\n\n/** The menu contents — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<ContextMenuContentProps>(), {\n placement: 'bottom-start',\n offset: 2,\n});\n\nconst attrs = useAttrs();\nconst context = useContextMenuContext();\n\n/* Lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = context.open;\nconst anchor = context.anchor;\n\n/* Enter-only pop: the surface mounts when `open` flips true, so the anim fires\n once on mount. motion-safe gates it for reduced-motion. (Exit anim is owned by\n the shared `Menu`'s Presence gate.) */\nconst classes = computed(() =>\n cn('motion-safe:animate-(--animate-pop-in)', attrs.class as string | undefined),\n);\n\n/** Everything but `class` — relayed to `Menu`, which lands `aria-label` on the surface. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n</script>\n\n<template>\n <Menu\n :open=\"isOpen\"\n :anchor=\"anchor\"\n :placement=\"placement\"\n :offset=\"offset\"\n v-bind=\"rest\"\n :class=\"classes\"\n @close=\"context.setOpen(false)\"\n >\n <slot />\n </Menu>\n</template>\n","import { inject, type ComputedRef, type InjectionKey, type Ref, type ShallowRef } from 'vue';\n\n/** One registered menu trigger — the unit `moveAcross` walks. */\nexport interface MenubarTriggerEntry {\n id: string;\n el: HTMLButtonElement | null;\n}\n\n/** The bar-level seam: which menu is open, and how focus moves between triggers. */\nexport interface MenubarContextValue {\n /** The id of the currently-open menu, or `null` if none. */\n activeId: Ref<string | null>;\n setActiveId: (id: string | null) => void;\n\n registerTrigger: (id: string, el: HTMLButtonElement | null) => void;\n unregisterTrigger: (id: string) => void;\n\n /** Focuses the trigger adjacent to `fromId`; switches the open menu when one is open. */\n moveAcross: (fromId: string, direction: 1 | -1) => void;\n}\n\nexport const menubarContextKey: InjectionKey<MenubarContextValue> = Symbol('wow-two.menubar');\n\nexport function useMenubarContext(): MenubarContextValue {\n const context = inject(menubarContextKey, null);\n if (!context) throw new Error('Menubar.* must be used inside <Menubar>');\n return context;\n}\n\n/**\n * The per-menu seam.\n *\n * React carried the trigger twice — a ref for imperative focus and a state copy\n * so anchored content re-rendered once the ref attached. A `shallowRef` is\n * already reactive, so one field covers both here.\n */\nexport interface MenubarMenuContextValue {\n id: string;\n open: ComputedRef<boolean>;\n setOpen: (open: boolean) => void;\n\n /** The trigger element — the positioning anchor and the focus-return target. */\n triggerEl: ShallowRef<HTMLButtonElement | null>;\n}\n\nexport const menubarMenuContextKey: InjectionKey<MenubarMenuContextValue> =\n Symbol('wow-two.menubarMenu');\n\nexport function useMenubarMenuContext(): MenubarMenuContextValue {\n const context = inject(menubarMenuContextKey, null);\n if (!context) throw new Error('MenubarTrigger / MenubarContent must be used inside <MenubarMenu>');\n return context;\n}\n","import { tv, type VariantProps } from '../../../foundation/utils';\n\nexport const menubarVariants = tv({\n base: 'flex items-center gap-1 rounded-md border border-border bg-background p-1',\n});\n\nexport const menubarTriggerVariants = tv({\n base: 'inline-flex select-none items-center rounded-sm px-3 py-1 text-sm font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:bg-muted data-[state=open]:bg-muted',\n});\n\nexport type MenubarVariants = VariantProps<typeof menubarVariants>;\n","<script lang=\"ts\">\n/**\n * The prop surface of `Menubar`.\n *\n * React declared `extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'>`;\n * attributes reach the root through `useAttrs` here, which leaves the active-menu\n * value pair. React's `onValueChange` is the `value-change` emit.\n */\nexport interface MenubarProps {\n /** The id of the currently-open menu, or `null` if none. Controlled. */\n value?: string | null;\n\n /** The initially-open menu id when uncontrolled. Default `null`. */\n defaultValue?: string | null;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useControlled } from '../../../foundation/hooks';\nimport { RovingFocusGroup } from '../../../foundation/primitives';\nimport { menubarContextKey, type MenubarTriggerEntry } from './MenubarContext';\nimport { menubarVariants } from './Menubar.variants';\n\n/** The application menu bar — a single composite tab stop holding one menu open at a time. */\ndefineOptions({ name: 'Menubar', inheritAttrs: false });\n\n/** The `MenubarMenu` children — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `value` defaults to `undefined` — the tri-state that separates \"controlled to null\" from \"uncontrolled\". */\nconst props = withDefaults(defineProps<MenubarProps>(), {\n value: undefined,\n defaultValue: null,\n});\n\nconst emit = defineEmits<{\n /** Replaces React's `onValueChange` — fires with the newly-open menu id, or `null`. */\n 'value-change': [value: string | null];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<InstanceType<typeof RovingFocusGroup>>('el');\n\nconst { value: activeId, setValue: setActiveId } = useControlled<string | null>({\n controlled: () => props.value,\n default: () => props.defaultValue,\n onChange: (next) => emit('value-change', next),\n});\n\n/** Plain array, not reactive — the ordering is read imperatively, exactly as React's `useRef` list was. */\nconst triggers: Array<MenubarTriggerEntry> = [];\n\nfunction registerTrigger(id: string, triggerEl: HTMLButtonElement | null): void {\n const index = triggers.findIndex((t) => t.id === id);\n if (index >= 0) triggers[index] = { id, el: triggerEl };\n else triggers.push({ id, el: triggerEl });\n}\n\nfunction unregisterTrigger(id: string): void {\n const index = triggers.findIndex((t) => t.id === id);\n if (index >= 0) triggers.splice(index, 1);\n}\n\nfunction moveAcross(fromId: string, direction: 1 | -1): void {\n const index = triggers.findIndex((t) => t.id === fromId);\n if (index === -1) return;\n let nextIndex = index + direction;\n if (nextIndex < 0) nextIndex = triggers.length - 1;\n if (nextIndex >= triggers.length) nextIndex = 0;\n const next = triggers[nextIndex];\n if (!next) return;\n next.el?.focus();\n // If a menu is already open, switch the open menu to follow focus.\n if (activeId.value !== null) setActiveId(next.id);\n}\n\nprovide(menubarContextKey, {\n activeId,\n setActiveId,\n registerTrigger,\n unregisterTrigger,\n moveAcross,\n});\n\nconst classes = computed(() => cn(menubarVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Roving tabindex (APG): the menubar is a single composite tab stop — one\n trigger holds tabindex 0, arrows / Home / End rove focus. `role` falls\n through and replaces the primitive's own `role=\"group\"`. -->\n <RovingFocusGroup\n ref=\"el\"\n orientation=\"horizontal\"\n can-loop\n role=\"menubar\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\nexport interface MenubarMenuProps {\n /** The stable id for this menu — used for active-menu tracking. */\n value: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, shallowRef } from 'vue';\nimport { menubarMenuContextKey, useMenubarContext } from './MenubarContext';\n\n/**\n * One menu of the bar — pairs a `MenubarTrigger` with its `MenubarContent`.\n * Renders only its slot; React returned a bare context Provider.\n */\ndefineOptions({ name: 'MenubarMenu', inheritAttrs: false });\n\n/** The `MenubarTrigger` and `MenubarContent` pair — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<MenubarMenuProps>();\n\nconst bar = useMenubarContext();\n\nprovide(menubarMenuContextKey, {\n id: props.value,\n open: computed(() => bar.activeId.value === props.value),\n setOpen: (next: boolean) => bar.setActiveId(next ? props.value : null),\n triggerEl: shallowRef<HTMLButtonElement | null>(null),\n});\n</script>\n\n<template>\n <slot />\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `MenubarTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here and `children` is the default\n * slot, which leaves no declared prop.\n */\nexport type MenubarTriggerProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, shallowRef, useAttrs, watch } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\nimport { useMenubarContext, useMenubarMenuContext } from './MenubarContext';\nimport { menubarTriggerVariants } from './Menubar.variants';\n\n/** One `role=\"menuitem\"` button in the bar, and the anchor of its menu. */\ndefineOptions({ name: 'MenubarTrigger', inheritAttrs: false });\n\n/** The trigger label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst bar = useMenubarContext();\nconst menu = useMenubarMenuContext();\n\n// Roving tab stop — one trigger is tabbable; the stop follows focus.\n// Reactive object: read its members, never destructure them.\nconst item = useRovingFocusItem();\n\nconst el = shallowRef<HTMLButtonElement | null>(null);\n\n/* One element, three consumers of `ref` — the roving group needs the node, the\n menu context anchors to it, and `defineExpose` publishes it. React composed\n them with `composeRefs`; this is the same composition. */\nfunction setRef(node: unknown): void {\n const button = (node ?? null) as HTMLButtonElement | null;\n el.value = button;\n menu.triggerEl.value = button;\n item.ref(node);\n}\n\nwatch(el, (node) => bar.registerTrigger(menu.id, node), { immediate: true, flush: 'post' });\nonScopeDispose(() => bar.unregisterTrigger(menu.id));\n\n/* Lifted to a setup const so the template auto-unwraps it (a plain injected object does not). */\nconst isOpen = menu.open;\n\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n menu.setOpen(!menu.open.value);\n}\n\nfunction handlePointerEnter(): void {\n // If any menu is open, moving the pointer onto a trigger switches the active menu.\n if (bar.activeId.value !== null && bar.activeId.value !== menu.id) {\n bar.setActiveId(menu.id);\n }\n}\n\nfunction handleFocus(): void {\n // The roving stop follows focus — however it arrived (arrows, moveAcross from\n // an open popup, focus return on close).\n item.onFocus();\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n case ' ':\n event.preventDefault();\n menu.setOpen(true);\n return;\n case 'ArrowRight':\n case 'ArrowLeft':\n // A menu is open → switching semantics: focus AND open state move to the\n // adjacent menu together.\n if (bar.activeId.value !== null) {\n event.preventDefault();\n bar.moveAcross(menu.id, event.key === 'ArrowRight' ? 1 : -1);\n return;\n }\n break;\n }\n // Closed menubar: arrows / Home / End rove the single tab stop\n // (disabled triggers skipped, RTL-aware).\n item.onKeydown(event);\n}\n\nconst classes = computed(() =>\n cn(menubarTriggerVariants(), attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `v-bind=\"rest\"`, then own handlers last — a consumer's\n handler therefore runs first, the order React got from calling\n `onClick?.(e)` ahead of its own logic. -->\n <button\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n :tabindex=\"item.tabindex\"\n :data-roving-focus-item=\"true\"\n v-bind=\"rest\"\n :ref=\"setRef\"\n :class=\"classes\"\n @click=\"handleClick\"\n @pointerenter=\"handlePointerEnter\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </button>\n</template>\n","<script lang=\"ts\">\nimport type { Placement } from '@floating-ui/vue';\n\n/**\n * The prop surface of `MenubarContent`.\n *\n * React declared `className` and `'aria-label'` alongside these; both are\n * fallthrough attrs here and are relayed to `Menu`, which merges `class` and\n * lands `aria-label` on the menu surface. A declared `'aria-label'` would arrive\n * as `props.ariaLabel` and never render, so it stays an attr. `placement` is\n * `Placement` rather than an indexed access into `MenuProps`, which the SFC\n * compiler cannot resolve.\n */\nexport interface MenubarContentProps {\n /** The Floating UI placement. Default `bottom-start`. */\n placement?: Placement;\n\n /** The distance between trigger and menu in px. Default 4. */\n offset?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport Menu from '../menu/Menu.vue';\nimport { useMenubarContext, useMenubarMenuContext } from './MenubarContext';\n\n/** The menu surface for one bar entry. */\ndefineOptions({ name: 'MenubarContent', inheritAttrs: false });\n\n/** The menu contents — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/* Not bound to a `props` const: with every reference now in the template — where the bare\n name compiles to `$props`, which survives a setup throw — the binding would be unused. */\nwithDefaults(defineProps<MenubarContentProps>(), {\n placement: 'bottom-start',\n offset: 4,\n});\n\nconst attrs = useAttrs();\nconst bar = useMenubarContext();\nconst menu = useMenubarMenuContext();\n\n/* Lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = menu.open;\nconst anchor = computed(() => menu.triggerEl.value);\n\nfunction handleClose(): void {\n menu.setOpen(false);\n requestAnimationFrame(() => menu.triggerEl.value?.focus());\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n // Arrow across menus while a popup is open — close current, open adjacent.\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n bar.moveAcross(menu.id, 1);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n bar.moveAcross(menu.id, -1);\n break;\n }\n}\n</script>\n\n<template>\n <!-- `v-bind=\"attrs\"` carries `class` and `aria-label` straight to `Menu`, which\n merges the first through `cn` and lands the second on the surface. -->\n <Menu\n :open=\"isOpen\"\n :anchor=\"anchor\"\n :placement=\"placement\"\n :offset=\"offset\"\n v-bind=\"attrs\"\n @close=\"handleClose\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </Menu>\n</template>\n","import { inject, type ComputedRef, type InjectionKey, type Ref, type ShallowRef } from 'vue';\n\n/** The root-level seam: which item's panel is open. */\nexport interface NavigationMenuContextValue {\n activeId: Ref<string | null>;\n setActiveId: (id: string | null) => void;\n}\n\nexport const navigationMenuContextKey: InjectionKey<NavigationMenuContextValue> =\n Symbol('wow-two.navigationMenu');\n\nexport function useNavigationMenuContext(): NavigationMenuContextValue {\n const context = inject(navigationMenuContextKey, null);\n if (!context) throw new Error('NavigationMenu.* must be used inside <NavigationMenu>');\n return context;\n}\n\n/**\n * The per-item seam.\n *\n * React carried the trigger as a ref only and read `.current` from the content;\n * a `shallowRef` is reactive, so the anchored panel re-positions once the node\n * attaches without the extra state copy React needed.\n */\nexport interface NavigationMenuItemContextValue {\n value: string;\n open: ComputedRef<boolean>;\n triggerEl: ShallowRef<HTMLElement | null>;\n contentId: string;\n triggerId: string;\n}\n\nexport const navigationMenuItemContextKey: InjectionKey<NavigationMenuItemContextValue> =\n Symbol('wow-two.navigationMenuItem');\n\nexport function useNavigationMenuItemContext(): NavigationMenuItemContextValue {\n const context = inject(navigationMenuItemContextKey, null);\n if (!context) {\n throw new Error(\n 'NavigationMenuTrigger / NavigationMenuContent must be used inside <NavigationMenuItem>',\n );\n }\n return context;\n}\n","<script lang=\"ts\">\n/**\n * The prop surface of `NavigationMenu`.\n *\n * React declared `extends Omit<HTMLAttributes<HTMLElement>, 'defaultValue'>` and\n * read `'aria-label'` off it (defaulting to `Main navigation`). A declared\n * `'aria-label'` would arrive as `props.ariaLabel` and never render, so it stays\n * a fallthrough attr — the default is applied from `useAttrs` below.\n */\nexport interface NavigationMenuProps {\n /** The value of the item whose panel is open, or `null` if none. Controlled. */\n value?: string | null;\n\n /** The initially-open item value when uncontrolled. Default `null`. */\n defaultValue?: string | null;\n}\n\n/** The accessible name used when the consumer supplies no `aria-label`. */\nconst DEFAULT_ARIA_LABEL = 'Main navigation';\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useControlled } from '../../../foundation/hooks';\nimport { navigationMenuContextKey } from './NavigationMenuContext';\n\n/** The top-level site navigation bar — one expandable panel open at a time. */\ndefineOptions({ name: 'NavigationMenu', inheritAttrs: false });\n\n/** The `NavigationMenuList` tree — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `value` defaults to `undefined` — the tri-state that separates \"controlled to null\" from \"uncontrolled\". */\nconst props = withDefaults(defineProps<NavigationMenuProps>(), {\n value: undefined,\n defaultValue: null,\n});\n\nconst emit = defineEmits<{\n /** Replaces React's `onValueChange` — fires with the newly-open item value, or `null`. */\n 'value-change': [value: string | null];\n}>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst { value: activeId, setValue: setActiveId } = useControlled<string | null>({\n controlled: () => props.value,\n default: () => props.defaultValue,\n onChange: (next) => emit('value-change', next),\n});\n\nprovide(navigationMenuContextKey, { activeId, setActiveId });\n\nconst ariaLabel = computed(() => (attrs['aria-label'] as string | undefined) ?? DEFAULT_ARIA_LABEL);\n\nconst classes = computed(() => cn('relative', attrs.class as string | undefined));\n\n/** Everything but `class` and `aria-label`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, 'aria-label': _ariaLabel, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <nav ref=\"el\" :aria-label=\"ariaLabel\" v-bind=\"rest\" :class=\"classes\"><slot /></nav>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `NavigationMenuList`.\n *\n * React declared `extends HTMLAttributes<HTMLDivElement>` plus `children`;\n * attributes reach the root through `useAttrs` here and `children` is the\n * default slot, which leaves no declared prop.\n */\nexport type NavigationMenuListProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { RovingFocusGroup } from '../../../foundation/primitives';\n\n/** The horizontal strip of items. Arrow-key navigation comes from `RovingFocusGroup`. */\ndefineOptions({ name: 'NavigationMenuList', inheritAttrs: false });\n\n/** The `NavigationMenuItem` children — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<InstanceType<typeof RovingFocusGroup>>('el');\n\nconst classes = computed(() =>\n cn('flex items-center gap-1', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `role` falls through and replaces the primitive's own `role=\"group\"`. -->\n <RovingFocusGroup\n ref=\"el\"\n orientation=\"horizontal\"\n can-loop\n role=\"list\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </RovingFocusGroup>\n</template>\n","<script lang=\"ts\">\nexport interface NavigationMenuItemProps {\n /** The stable id for active-state tracking. Required when item has a Trigger + Content. */\n value: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, shallowRef, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useId } from '../../../foundation/hooks';\nimport {\n navigationMenuItemContextKey,\n useNavigationMenuContext,\n} from './NavigationMenuContext';\n\n/** One `<li>` of the strip — pairs a Trigger / Link with its Content panel. */\ndefineOptions({ name: 'NavigationMenuItem', inheritAttrs: false });\n\n/** The trigger / link and optional content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<NavigationMenuItemProps>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLLIElement>('el');\nconst nav = useNavigationMenuContext();\n\nprovide(navigationMenuItemContextKey, {\n value: props.value,\n open: computed(() => nav.activeId.value === props.value),\n triggerEl: shallowRef<HTMLElement | null>(null),\n contentId: useId(),\n triggerId: useId(),\n});\n\n/* `list-none` is load-bearing, not cosmetic. `NavigationMenuList` renders a `<div\n role=\"list\">` (it wraps `RovingFocusGroup`), so this `<li>` has no `ul`/`ol`\n parent — and Tailwind preflight only resets `list-style` on `ul`/`ol`. The\n orphan keeps the UA's `list-item` display and drew a disc: `• Products ⌄`. */\nconst classes = computed(() => cn('relative list-none', attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `role` sits before `v-bind=\"rest\"` so a consumer-supplied one wins. An `<li>`\n only maps to `listitem` under a `ul`/`ol`/`menu` parent; under the list div it\n would leave `role=\"list\"` with no children, so the role is stated. -->\n <li ref=\"el\" role=\"listitem\" v-bind=\"rest\" :class=\"classes\"><slot /></li>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `NavigationMenuTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here and `children` is the default\n * slot, which leaves no declared prop.\n */\nexport type NavigationMenuTriggerProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs } from 'vue';\nimport { ChevronDown } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/utils';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\nimport {\n useNavigationMenuContext,\n useNavigationMenuItemContext,\n} from './NavigationMenuContext';\n\n/** The button that expands an item's panel, and the panel's positioning anchor. */\ndefineOptions({ name: 'NavigationMenuTrigger', inheritAttrs: false });\n\n/** The trigger label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst nav = useNavigationMenuContext();\nconst item = useNavigationMenuItemContext();\n\n// Reactive object: read its members, never destructure them.\nconst roving = useRovingFocusItem();\n\nconst el = shallowRef<HTMLButtonElement | null>(null);\n\n/* One element, three consumers of `ref` — the roving group needs the node, the\n item context anchors the panel to it, and `defineExpose` publishes it. React\n composed them in a single callback ref; this is the same composition. */\nfunction setRef(node: unknown): void {\n const button = (node ?? null) as HTMLButtonElement | null;\n el.value = button;\n item.triggerEl.value = button;\n roving.ref(node);\n}\n\n/* Lifted to a setup const so the template auto-unwraps it (a plain injected object does not). */\nconst isOpen = item.open;\n\n/* Set when a pointer hover-swap opened this panel. With a real pointer the\n `pointerenter` swap always precedes the click, so without this guard the click\n would land on an already-open trigger and toggle it straight back closed\n (Radix guards the same way). Cleared on pointerleave: once the pointer leaves,\n the next click is a deliberate toggle again. Plain mutable box, never rendered. */\nlet wasOpenedByPointer = false;\n\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n if (wasOpenedByPointer) {\n // The hover-swap just opened this panel — keep it open.\n wasOpenedByPointer = false;\n return;\n }\n nav.setActiveId(item.open.value ? null : item.value);\n}\n\nfunction handlePointerEnter(): void {\n if (nav.activeId.value !== null && nav.activeId.value !== item.value) {\n nav.setActiveId(item.value);\n wasOpenedByPointer = true;\n }\n}\n\nfunction handlePointerLeave(): void {\n wasOpenedByPointer = false;\n}\n\nfunction handleFocus(): void {\n roving.onFocus();\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n roving.onKeydown(event);\n}\n\nconst classes = computed(() =>\n cn(\n 'inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-muted',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `v-bind=\"rest\"`, then own handlers last — a consumer's\n handler therefore runs first, the order React got from calling\n `onClick?.(e)` ahead of its own logic. -->\n <button\n :id=\"item.triggerId\"\n type=\"button\"\n aria-haspopup=\"true\"\n :aria-expanded=\"isOpen\"\n :aria-controls=\"item.contentId\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n :tabindex=\"roving.tabindex\"\n :data-roving-focus-item=\"true\"\n v-bind=\"rest\"\n :ref=\"setRef\"\n :class=\"classes\"\n @click=\"handleClick\"\n @pointerenter=\"handlePointerEnter\"\n @pointerleave=\"handlePointerLeave\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n <ChevronDown :class=\"cn('h-4 w-4 transition-transform', isOpen && 'rotate-180')\" />\n </button>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `NavigationMenuContent`.\n *\n * React declared `extends HTMLAttributes<HTMLDivElement>` plus `children`;\n * attributes reach the panel through `useAttrs` here and `children` is the\n * default slot, which leaves no declared prop.\n */\nexport type NavigationMenuContentProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs, watch } from 'vue';\nimport { cn, surfaceVariants } from '../../../foundation/utils';\nimport { useReducedMotion } from '../../../foundation/hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n Portal,\n Presence,\n} from '../../../foundation/primitives';\nimport {\n useNavigationMenuContext,\n useNavigationMenuItemContext,\n} from './NavigationMenuContext';\n\n/**\n * The anchored panel for one item. `Presence` clones `data-state`\n * (\"open\" | \"closed\") onto the panel div, so the pop tokens below run gated on\n * that state.\n */\ndefineOptions({ name: 'NavigationMenuContent', inheritAttrs: false });\n\n/** The panel content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst nav = useNavigationMenuContext();\nconst item = useNavigationMenuItemContext();\nconst reducedMotion = useReducedMotion();\n\n/* Lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = item.open;\nconst anchor = computed(() => item.triggerEl.value);\n\nconst el = shallowRef<HTMLElement | null>(null);\n\n/* Keep the positioner / dismiss layer mounted while the pop-out plays — the\n stack unmounts with this component, which would kill the exit. Opening flips\n this true synchronously; closing defers the unmount until the panel's exit\n animation ends (`animationend` below). Under reduced motion no animation\n fires, so drop it on the next frame instead. */\nconst mounted = shallowRef(item.open.value);\n\nwatch(\n [() => item.open.value, reducedMotion],\n ([open, isReduced], _previous, onCleanup) => {\n if (open) {\n mounted.value = true;\n return;\n }\n if (!isReduced) return;\n /* `immediate: true` makes this watcher run during SSR too, where there is no\n `requestAnimationFrame`. */\n if (typeof requestAnimationFrame === 'undefined') return;\n const raf = requestAnimationFrame(() => {\n mounted.value = false;\n });\n onCleanup(() => cancelAnimationFrame(raf));\n },\n { immediate: true, flush: 'post' },\n);\n\nfunction handleClose(): void {\n nav.setActiveId(null);\n requestAnimationFrame(() => item.triggerEl.value?.focus());\n}\n\nfunction handleOutsidePointerDown(event: PointerEvent): void {\n if (item.triggerEl.value?.contains(event.target as Node)) return;\n nav.setActiveId(null);\n}\n\nfunction handleAnimationEnd(): void {\n /* Drop the positioner stack once the exit animation completes. */\n if (!item.open.value) mounted.value = false;\n}\n\nfunction setPanel(node: unknown): void {\n el.value = (node ?? null) as HTMLElement | null;\n}\n\nconst classes = computed(() =>\n cn(\n /* pop (fade + slight scale) gated on data-state; motion-safe so\n reduced-motion users get no movement. */\n 'min-w-[12rem] outline-none',\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-pop-out)',\n 'motion-reduce:animate-none',\n surfaceVariants({ variant: 'surface', radius: 'md', padding: 'md' }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <Portal v-if=\"mounted\">\n <AnchoredPositioner :anchor=\"anchor\" placement=\"bottom-start\" :offset=\"6\" class=\"z-dropdown\">\n <DismissableLayer\n :on-escape=\"handleClose\"\n :on-outside-pointer-down=\"handleOutsidePointerDown\"\n >\n <Presence :is-present=\"isOpen\">\n <div\n :id=\"item.contentId\"\n :aria-labelledby=\"item.triggerId\"\n v-bind=\"rest\"\n :ref=\"setPanel\"\n :class=\"classes\"\n @animationend=\"handleAnimationEnd\"\n >\n <slot />\n </div>\n </Presence>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `NavigationMenuLink`.\n *\n * React declared `extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here and `children` is the default\n * slot, which leaves no declared prop.\n */\nexport type NavigationMenuLinkProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useRovingFocusItem } from '../../../foundation/primitives';\n\n/** A plain link that joins the strip's roving tab stop. */\ndefineOptions({ name: 'NavigationMenuLink', inheritAttrs: false });\n\n/** The link content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\n\n// Reactive object: read its members, never destructure them.\nconst roving = useRovingFocusItem();\n\nconst el = shallowRef<HTMLAnchorElement | null>(null);\n\nfunction setRef(node: unknown): void {\n el.value = (node ?? null) as HTMLAnchorElement | null;\n roving.ref(node);\n}\n\nfunction handleFocus(): void {\n roving.onFocus();\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n roving.onKeydown(event);\n}\n\nconst classes = computed(() =>\n cn(\n 'inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted hover:underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <a\n :tabindex=\"roving.tabindex\"\n :data-roving-focus-item=\"true\"\n v-bind=\"rest\"\n :ref=\"setRef\"\n :class=\"classes\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n >\n <slot />\n </a>\n</template>\n","import { inject, type InjectionKey, type Ref, type ShallowRef } from 'vue';\n\n/** One registered `CommandPaletteItem` — the unit the filter and the arrow walk move across. */\nexport interface CommandItemEntry {\n id: string;\n value: string;\n searchText: string;\n disabled: boolean;\n select: () => void;\n closeOnSelect: boolean;\n}\n\n/**\n * The seam between `CommandPalette` and its parts.\n *\n * React carried the registry as a mutable `useRef` array plus a `registryVersion`\n * counter, because a ref mutation cannot re-render. A `shallowRef` holding a\n * replaced array is reactive on its own, so the counter is gone — readers watch\n * `items` directly.\n */\nexport interface CommandPaletteContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n\n /** The resolved search text. Writable — an assignment routes through `setInputValue`. */\n inputValue: Ref<string>;\n setInputValue: (input: string) => void;\n\n /** The `aria-activedescendant` target — the id of the highlighted option. */\n activeId: ShallowRef<string | null>;\n setActiveId: (id: string | null) => void;\n\n /** The live item registry. */\n items: ShallowRef<ReadonlyArray<CommandItemEntry>>;\n registerItem: (entry: CommandItemEntry) => void;\n unregisterItem: (id: string) => void;\n\n /** The match predicate. Reads the root's live `filter` prop. */\n filter: (searchText: string, search: string) => boolean;\n\n inputId: string;\n listboxId: string;\n inputEl: ShallowRef<HTMLInputElement | null>;\n}\n\nexport const commandPaletteContextKey: InjectionKey<CommandPaletteContextValue> =\n Symbol('wow-two.commandPalette');\n\nexport function useCommandPaletteContext(): CommandPaletteContextValue {\n const context = inject(commandPaletteContextKey, null);\n if (!context) throw new Error('CommandPalette.* must be used inside <CommandPalette>');\n return context;\n}\n\n/** The default match predicate — case-insensitive substring. */\nexport const defaultFilter = (searchText: string, search: string): boolean =>\n searchText.toLowerCase().includes(search.toLowerCase());\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPalette`.\n *\n * `open` and `isOpen` are the same controlled state under two names: `open` is\n * the `v-model:open` binding target and React's own spelling, `isOpen` the house\n * boolean spelling. `open` wins when both are set. React's `onOpenChange` is the\n * `open-change` emit; `update:open` fires alongside it so `v-model:open` works,\n * and `update:inputValue` does the same for the search text.\n */\nexport interface CommandPaletteProps {\n /** The open state, controlled. The `v-model:open` binding target. */\n open?: boolean;\n\n /** The open state, controlled — the house spelling of `open`; `open` wins when both are set. */\n isOpen?: boolean;\n\n /** The initial open state when uncontrolled. Default `false`. */\n defaultOpen?: boolean;\n\n /** The search text, controlled. The `v-model:input-value` binding target. */\n inputValue?: string;\n\n /** The initial search text when uncontrolled. Default `''`. */\n defaultInputValue?: string;\n\n /** The key that opens the palette with ⌘/Ctrl. Omit to bind no global shortcut. */\n triggerKey?: string;\n\n /** The match predicate. Default case-insensitive substring. */\n filter?: (searchText: string, search: string) => boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, shallowRef, watch } from 'vue';\nimport { useControlled, useId } from '../../../foundation/hooks';\nimport { useHotkeys } from '../../../foundation/shortcuts';\nimport { Modal } from '../../overlays/modal';\nimport {\n commandPaletteContextKey,\n defaultFilter,\n type CommandItemEntry,\n} from './CommandPaletteContext';\n\n/**\n * State owner for a CommandPalette tree — owns open state, search text and the\n * item registry, and renders the whole thing inside a `Modal`.\n */\ndefineOptions({ name: 'CommandPalette', inheritAttrs: false });\n\n/** The palette tree — `CommandPaletteContent` and its parts. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `open` / `isOpen` default to `undefined` so an absent prop cannot read as an explicit `false`. */\nconst props = withDefaults(defineProps<CommandPaletteProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n inputValue: undefined,\n defaultInputValue: undefined,\n triggerKey: undefined,\n filter: defaultFilter,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n\n /** The `v-model:input-value` half. */\n 'update:inputValue': [input: string];\n\n /** Replaces React's `onInputChange`. */\n 'input-change': [input: string];\n}>();\n\nconst openState = useControlled<boolean>({\n controlled: () => (props.open !== undefined ? props.open : props.isOpen),\n default: () => props.defaultOpen,\n onChange: (value) => {\n emit('update:open', value);\n emit('open-change', value);\n },\n});\n\nconst inputState = useControlled<string>({\n controlled: () => props.inputValue,\n default: () => props.defaultInputValue ?? '',\n onChange: (value) => {\n emit('update:inputValue', value);\n emit('input-change', value);\n },\n});\n\nconst items = shallowRef<ReadonlyArray<CommandItemEntry>>([]);\nconst activeId = shallowRef<string | null>(null);\nconst inputEl = shallowRef<HTMLInputElement | null>(null);\nconst inputId = useId();\nconst listboxId = useId();\n\nfunction registerItem(entry: CommandItemEntry): void {\n const next = items.value.slice();\n const index = next.findIndex((i) => i.id === entry.id);\n if (index >= 0) next[index] = entry;\n else next.push(entry);\n items.value = next;\n}\n\nfunction unregisterItem(id: string): void {\n items.value = items.value.filter((i) => i.id !== id);\n}\n\n/* Global keybinding (cmd-/ctrl-K). `mod` = ⌘ on Apple / Ctrl elsewhere; the explicit `ctrl+`/`meta+` pair keeps\n the spec's \"we accept both on every platform\" contract. The chord must always parse (`+` is the token\n separator → `plus`; a falsy `triggerKey` needs a placeholder), so `enabled` — not an early return — unbinds. */\nconst chordKey = computed(() => {\n const key = props.triggerKey;\n return !key ? 'k' : key === '+' ? 'plus' : key;\n});\n\nuseHotkeys(\n () => [`mod+${chordKey.value}`, `ctrl+${chordKey.value}`, `meta+${chordKey.value}`],\n () => openState.setValue(true),\n { enabled: () => Boolean(props.triggerKey) },\n);\n\n// Reset the active id on close.\nwatch(\n () => openState.value.value,\n (isOpen) => {\n if (!isOpen) activeId.value = null;\n },\n { flush: 'post' },\n);\n\nprovide(commandPaletteContextKey, {\n open: openState.value,\n setOpen: openState.setValue,\n inputValue: inputState.value,\n setInputValue: inputState.setValue,\n activeId,\n setActiveId: (id: string | null) => {\n activeId.value = id;\n },\n items,\n registerItem,\n unregisterItem,\n /* Wrapped rather than stored, so a `filter` prop change is picked up live —\n React re-created the whole context value for the same effect. */\n filter: (searchText: string, search: string) => props.filter(searchText, search),\n inputId,\n listboxId,\n inputEl,\n});\n\n/* Lifted to a setup const so the template auto-unwraps it. Named `resolvedOpen`\n rather than `isOpen` — that name is already a declared prop here. */\nconst resolvedOpen = openState.value;\n</script>\n\n<template>\n <Modal :open=\"resolvedOpen\" @open-change=\"openState.setValue\"><slot /></Modal>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPaletteContent`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach `ModalContent`\n * through `useAttrs` here, which leaves no declared prop.\n */\nexport type CommandPaletteContentProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { ModalContent } from '../../overlays/modal';\n\n/** The modal panel the palette lives in — full-bleed, no gap, no padding. */\ndefineOptions({ name: 'CommandPaletteContent', inheritAttrs: false });\n\n/** The palette parts — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\n\nconst classes = computed(() =>\n cn('w-full max-w-xl gap-0 overflow-hidden p-0', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n</script>\n\n<template>\n <ModalContent v-bind=\"rest\" :class=\"classes\"><slot /></ModalContent>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPaletteInput`.\n *\n * React declared `Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>`\n * and destructured `placeholder` out of it for a default; attributes reach the\n * `<input>` through `useAttrs` here and the placeholder default is applied from\n * `attrs`, which leaves no declared prop.\n */\nexport type CommandPaletteInputProps = Record<string, never>;\n\n/** The placeholder used when the consumer supplies none. */\nconst DEFAULT_PLACEHOLDER = 'Type a command…';\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs, watch } from 'vue';\nimport { Search } from 'lucide-vue-next';\nimport { cn } from '../../../foundation/utils';\nimport { Icon } from '../../../foundation/icons';\nimport { useCommandPaletteContext, type CommandItemEntry } from './CommandPaletteContext';\n\n/** The palette's search field — a `role=\"combobox\"` driving the option list. */\ndefineOptions({ name: 'CommandPaletteInput', inheritAttrs: false });\n\nconst attrs = useAttrs();\nconst context = useCommandPaletteContext();\n\nconst el = shallowRef<HTMLInputElement | null>(null);\n\n/* Lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst inputValue = context.inputValue;\nconst activeId = context.activeId;\n\nfunction setRef(node: unknown): void {\n const input = (node ?? null) as HTMLInputElement | null;\n el.value = input;\n context.inputEl.value = input;\n}\n\n// Keep DOM focus on the input whenever the palette is open.\nwatch(\n [() => context.open.value, el],\n ([isOpen, input]) => {\n if (isOpen && input) input.focus();\n },\n { flush: 'post' },\n);\n\nfunction visibleItems(): ReadonlyArray<CommandItemEntry> {\n const search = context.inputValue.value;\n return context.items.value.filter(\n (i) => !i.disabled && (search === '' || context.filter(i.searchText, search)),\n );\n}\n\n// Auto-set first match when the filter or the item registry changes.\nwatch(\n [() => context.inputValue.value, context.items],\n () => {\n const list = visibleItems();\n if (list.length > 0 && !list.some((i) => i.id === context.activeId.value)) {\n context.setActiveId(list[0]!.id);\n } else if (list.length === 0) {\n context.setActiveId(null);\n }\n },\n { immediate: true, flush: 'post' },\n);\n\nfunction moveActive(direction: 1 | -1): void {\n const list = visibleItems();\n if (list.length === 0) return;\n const index = list.findIndex((i) => i.id === context.activeId.value);\n let nextIndex = index + direction;\n if (index === -1) nextIndex = direction === 1 ? 0 : list.length - 1;\n if (nextIndex < 0) nextIndex = list.length - 1;\n if (nextIndex >= list.length) nextIndex = 0;\n context.setActiveId(list[nextIndex]!.id);\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n moveActive(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n moveActive(-1);\n break;\n case 'Home': {\n if (event.target !== context.inputEl.value) break;\n const first = visibleItems();\n if (first.length > 0) context.setActiveId(first[0]!.id);\n break;\n }\n case 'End': {\n if (event.target !== context.inputEl.value) break;\n const last = visibleItems();\n if (last.length > 0) context.setActiveId(last[last.length - 1]!.id);\n break;\n }\n case 'Enter': {\n const id = context.activeId.value;\n if (!id) return;\n const entry = context.items.value.find((i) => i.id === id);\n if (!entry || entry.disabled) return;\n event.preventDefault();\n entry.select();\n if (entry.closeOnSelect) context.setOpen(false);\n break;\n }\n }\n}\n\nfunction handleInput(event: Event): void {\n context.setInputValue((event.target as HTMLInputElement).value);\n}\n\nconst placeholder = computed(\n () => (attrs.placeholder as string | undefined) ?? DEFAULT_PLACEHOLDER,\n);\n\nconst classes = computed(() =>\n cn(\n 'flex h-12 w-full bg-transparent text-sm text-foreground placeholder:text-subtle-foreground outline-none disabled:cursor-not-allowed disabled:opacity-50',\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class` and `placeholder`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, placeholder: _placeholder, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <Icon :icon=\"Search\" :size=\"16\" class=\"text-muted-foreground\" />\n <!-- `v-bind=\"rest\"` comes FIRST here, deliberately: React spread `{...rest}`\n ahead of its own bindings on this element, so `id` / `role` / `value` and\n the ARIA wiring cannot be overridden. `@keydown` still chains after a\n consumer's, which is what makes the `defaultPrevented` check meaningful. -->\n <input\n v-bind=\"rest\"\n :id=\"context.inputId\"\n :ref=\"setRef\"\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n :aria-controls=\"context.listboxId\"\n :aria-activedescendant=\"activeId ?? undefined\"\n aria-autocomplete=\"list\"\n :placeholder=\"placeholder\"\n :value=\"inputValue\"\n :class=\"classes\"\n @input=\"handleInput\"\n @keydown=\"handleKeydown\"\n />\n </div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPaletteList`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach the root\n * through `useAttrs` here, which leaves no declared prop.\n */\nexport type CommandPaletteListProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useCommandPaletteContext } from './CommandPaletteContext';\n\n/** The scrollable `role=\"listbox\"` the input drives. */\ndefineOptions({ name: 'CommandPaletteList', inheritAttrs: false });\n\n/** The groups / items — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst context = useCommandPaletteContext();\n\nconst classes = computed(() =>\n cn('max-h-80 overflow-y-auto p-1', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div\n :id=\"context.listboxId\"\n ref=\"el\"\n role=\"listbox\"\n :aria-labelledby=\"context.inputId\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface CommandPaletteGroupProps {\n /** The group heading. React typed this `ReactNode`; the scalar form is the prop and `#label` is the rich override. */\n label?: string | number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef } from 'vue';\nimport { useId } from '../../../foundation/hooks';\nimport { listboxGroupLabelVariants } from '../../forms/listbox/Listbox.variants';\n\n/** A labelled `role=\"group\"` of palette items. */\ndefineOptions({ name: 'CommandPaletteGroup', inheritAttrs: false });\n\ndefineSlots<{\n /** The grouped items — React's `children`. */\n default(): unknown;\n\n /** The rich override for the `label` prop. */\n label?(): unknown;\n}>();\n\nconst props = defineProps<CommandPaletteGroupProps>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst labelId = useId();\n\nconst hasLabel = computed(() => Boolean(props.label) || Boolean(slots.label));\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- React passed `className` straight through (no `cn` merge) and spread the\n rest after it; `v-bind=\"attrs\"` is the same single pass-through. -->\n <div ref=\"el\" role=\"group\" :aria-labelledby=\"hasLabel ? labelId : undefined\" v-bind=\"attrs\">\n <div v-if=\"hasLabel\" :id=\"labelId\" :class=\"listboxGroupLabelVariants()\">\n <slot name=\"label\">{{ props.label }}</slot>\n </div>\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\nexport interface CommandPaletteItemProps {\n value: string;\n\n /**\n * The text used by the filter; defaults to `value`.\n *\n * React additionally fell back to `children` when they were a plain string.\n * A Vue slot's text cannot be read at setup time without invoking the slot\n * outside the render function (which Vue warns about, and which would not\n * work at all for an item filtered out of the DOM), so the fallback is\n * `value` — pass `searchText` whenever the visible label differs from it.\n */\n searchText?: string;\n\n isDisabled?: boolean;\n\n /** The close-on-activate toggle. Default `true`. */\n closeOnSelect?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useId } from '../../../foundation/hooks';\nimport { listboxItemVariants } from '../../forms/listbox/Listbox.variants';\nimport { useCommandPaletteContext } from './CommandPaletteContext';\n\n/** One `role=\"option\"` row. Hides itself when the current filter excludes it. */\ndefineOptions({ name: 'CommandPaletteItem', inheritAttrs: false });\n\n/** The row content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** `isDisabled` defaults to `undefined`, not `false` — an absent optional boolean must stay absent. */\nconst props = withDefaults(defineProps<CommandPaletteItemProps>(), {\n searchText: undefined,\n isDisabled: undefined,\n closeOnSelect: true,\n});\n\nconst emit = defineEmits<{\n /** Replaces React's `onSelect` — the item was activated (Enter / click). */\n select: [];\n}>();\n\nconst attrs = useAttrs();\nconst context = useCommandPaletteContext();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst id = useId();\n\nconst resolvedSearch = computed(() => props.searchText ?? props.value);\n\nwatch(\n [() => props.value, resolvedSearch, () => props.isDisabled, () => props.closeOnSelect],\n ([value, searchText, isDisabled, closeOnSelect]) => {\n context.registerItem({\n id,\n value,\n searchText,\n disabled: isDisabled === true,\n select: () => emit('select'),\n closeOnSelect,\n });\n },\n { immediate: true, flush: 'post' },\n);\n\nonScopeDispose(() => context.unregisterItem(id));\n\n/** Hidden when the current filter excludes it — React returned `null` for the same case. */\nconst matches = computed(\n () =>\n context.inputValue.value === '' ||\n context.filter(resolvedSearch.value, context.inputValue.value),\n);\n\nconst isActive = computed(() => context.activeId.value === id);\n\nconst state = computed(() =>\n props.isDisabled ? 'disabled' : isActive.value ? 'active' : 'default',\n);\n\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented || props.isDisabled) return;\n emit('select');\n if (props.closeOnSelect) context.setOpen(false);\n}\n\nfunction handlePointerEnter(): void {\n if (!props.isDisabled) context.setActiveId(id);\n}\n\nconst classes = computed(() =>\n cn(listboxItemVariants({ state: state.value }), attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Own attrs, then `v-bind=\"rest\"`, then own handlers last — a consumer's\n handler therefore runs first, the order React got from calling\n `onClick?.(e)` ahead of its own logic. -->\n <div\n v-if=\"matches\"\n :id=\"id\"\n ref=\"el\"\n role=\"option\"\n :aria-selected=\"isActive\"\n :aria-disabled=\"isDisabled || undefined\"\n :data-active=\"isActive ? '' : undefined\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"handleClick\"\n @pointerenter=\"handlePointerEnter\"\n >\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPaletteEmpty`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach the root\n * through `useAttrs` here, which leaves no declared prop.\n */\nexport type CommandPaletteEmptyProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { listboxEmptyVariants } from '../../forms/listbox/Listbox.variants';\nimport { useCommandPaletteContext } from './CommandPaletteContext';\n\n/** The \"no results\" notice — rendered only when the filter matches nothing. */\ndefineOptions({ name: 'CommandPaletteEmpty', inheritAttrs: false });\n\n/** The empty-state copy — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\nconst context = useCommandPaletteContext();\n\n/* React read the mutable `itemsRef` during render; `items` is a reactive ref\n here, so the count re-derives on every register / unregister without the\n `registryVersion` counter React needed. */\nconst matchCount = computed(() => {\n const search = context.inputValue.value;\n return context.items.value.filter((i) => search === '' || context.filter(i.searchText, search))\n .length;\n});\n\nconst classes = computed(() => cn(listboxEmptyVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- Polite live region — \"no results\" must be announced, not hidden as\n presentational chrome. -->\n <div v-if=\"matchCount === 0\" ref=\"el\" role=\"status\" v-bind=\"rest\" :class=\"classes\">\n <slot />\n </div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `CommandPaletteSeparator`.\n *\n * React declared `HTMLAttributes<HTMLDivElement>`; attributes reach the root\n * through `useAttrs` here, which leaves no declared prop.\n */\nexport type CommandPaletteSeparatorProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { listboxSeparatorVariants } from '../../forms/listbox/Listbox.variants';\n\n/** The hairline rule between palette sections. */\ndefineOptions({ name: 'CommandPaletteSeparator', inheritAttrs: false });\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/* React spread `{...props}` *after* its own `className`, so a consumer's class\n replaced the recipe outright; `cn` reproduces that precedence through\n tailwind-merge rather than concatenating the two. */\nconst classes = computed(() => cn(listboxSeparatorVariants(), attrs.class as string | undefined));\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <div ref=\"el\" role=\"separator\" v-bind=\"rest\" :class=\"classes\" />\n</template>\n","import { shallowRef, toValue, watch, type MaybeRefOrGetter, type ShallowRef } from 'vue';\n\n/**\n * The `useScrollSpy` tuning knobs.\n *\n * Every field is a `MaybeRefOrGetter` — pass a getter (`() => props.rootMargin`)\n * so a change re-creates the observer, the job React's effect dependency array did.\n * `ScrollSpy`'s own props are the plain-value mirror of this shape.\n */\nexport interface UseScrollSpyOptions {\n rootMargin?: MaybeRefOrGetter<string | undefined>;\n threshold?: MaybeRefOrGetter<number | number[] | undefined>;\n /** Element to observe within. Defaults to viewport. */\n root?: MaybeRefOrGetter<Element | Document | null | undefined>;\n}\n\n/**\n * Track which of `ids` is currently the topmost in-view section.\n * Uses `IntersectionObserver` — the returned ref holds `null` until the first\n * intersection.\n */\nexport function useScrollSpy(\n ids: MaybeRefOrGetter<ReadonlyArray<string>>,\n options: UseScrollSpyOptions = {},\n): Readonly<ShallowRef<string | null>> {\n const activeId = shallowRef<string | null>(null);\n\n watch(\n [\n () => toValue(ids),\n () => toValue(options.rootMargin) ?? '0px 0px -60% 0px',\n () => toValue(options.threshold) ?? 0,\n () => toValue(options.root) ?? null,\n ],\n ([idList, rootMargin, threshold, root], _previous, onCleanup) => {\n /* `immediate: true` makes this watcher run during SSR too (Vue skips only the\n non-immediate post-flush ones), where neither `document` nor\n `IntersectionObserver` exists. */\n if (\n typeof document === 'undefined' ||\n typeof IntersectionObserver === 'undefined' ||\n idList.length === 0\n ) {\n return;\n }\n\n const seen = new Map<string, number>(); // id → top offset\n const elements = idList\n .map((id) => document.getElementById(id))\n .filter((el): el is HTMLElement => el != null);\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const e of entries) {\n if (e.isIntersecting) {\n seen.set(e.target.id, e.boundingClientRect.top);\n } else {\n seen.delete(e.target.id);\n }\n }\n if (seen.size === 0) return;\n // Pick the section whose top is closest to (but above) the rootMargin band.\n let bestId: string | null = null;\n let bestTop = Number.POSITIVE_INFINITY;\n for (const [id, top] of seen) {\n if (top < bestTop) {\n bestTop = top;\n bestId = id;\n }\n }\n activeId.value = bestId;\n },\n { rootMargin, threshold, root },\n );\n\n for (const el of elements) observer.observe(el);\n onCleanup(() => observer.disconnect());\n },\n { immediate: true, flush: 'post' },\n );\n\n return activeId;\n}\n","<script lang=\"ts\">\n/**\n * The prop surface of `ScrollSpy`.\n *\n * React declared `extends UseScrollSpyOptions`; that interface carries\n * `MaybeRefOrGetter` fields here (the house composable contract), which a prop\n * cannot hold, so the plain-value mirror is spelled out instead.\n */\nexport interface ScrollSpyProps {\n ids: ReadonlyArray<string>;\n rootMargin?: string;\n threshold?: number | number[];\n /** Element to observe within. Defaults to viewport. */\n root?: Element | Document | null;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { watch } from 'vue';\nimport { useScrollSpy } from './UseScrollSpy';\n\n/**\n * Scoped-slot variant of `useScrollSpy`. Emits `activeId` via `active-change`\n * or the default slot. Renders nothing by default.\n */\ndefineOptions({ name: 'ScrollSpy' });\n\ndefineSlots<{\n /** React's render-prop `children` — receives the currently-active section id. */\n default?(props: { activeId: string | null }): unknown;\n}>();\n\nconst props = defineProps<ScrollSpyProps>();\n\nconst emit = defineEmits<{\n /** Replaces React's `onActiveChange`. Fires once on mount with the initial value, as the effect did. */\n 'active-change': [id: string | null];\n}>();\n\nconst activeId = useScrollSpy(\n () => props.ids,\n {\n rootMargin: () => props.rootMargin,\n threshold: () => props.threshold,\n root: () => props.root,\n },\n);\n\nwatch(activeId, (id) => emit('active-change', id), { immediate: true, flush: 'post' });\n</script>\n\n<template>\n <slot v-bind=\"{ activeId }\" />\n</template>\n","<script lang=\"ts\">\nexport interface TableOfContentsItem {\n id: string;\n\n /** React typed this `ReactNode`; the scalar form is what an array item can carry — the `#label` scoped slot is the rich override. */\n label: string | number;\n\n /** Indent level. 0 = top, 1 = nested, … */\n depth?: number;\n}\n\nexport interface TableOfContentsProps {\n items?: ReadonlyArray<TableOfContentsItem>;\n\n /**\n * The element whose headings are auto-extracted. React took a `RefObject`;\n * Vue template refs unwrap to the element itself, so pass the element\n * (`sourceRef` from `useTemplateRef`).\n */\n source?: HTMLElement | null;\n\n /** The CSS selector used with `source`. Default `h2, h3`. */\n headingSelector?: string;\n\n /** The override for the auto-derived active id. `undefined` keeps the derived value. */\n activeId?: string | null;\n\n /** The sticky toggle — applies `sticky top-4 self-start` helper classes. */\n isSticky?: boolean;\n}\n\nfunction depthFromTagName(tag: string): number {\n const match = /^H([1-6])$/i.exec(tag);\n return match ? Number(match[1]) - 2 : 0; // h2 → 0, h3 → 1, h4 → 2\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, shallowRef, useAttrs, useTemplateRef, watch } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useScrollSpy } from '../scrollSpy/UseScrollSpy';\n\n/**\n * Outline of headings — `items` (explicit) or `source` (auto-extract).\n * Active entry derived from `useScrollSpy` over the headings' IDs.\n */\ndefineOptions({ name: 'TableOfContents', inheritAttrs: false });\n\ndefineSlots<{\n /** The rich override for an item's `label`. */\n label?(props: { item: TableOfContentsItem; index: number }): unknown;\n}>();\n\n/** `activeId` defaults to `undefined` — the tri-state that lets an absent prop mean \"derive it\". */\nconst props = withDefaults(defineProps<TableOfContentsProps>(), {\n headingSelector: 'h2, h3',\n activeId: undefined,\n});\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLElement>('el');\n\nconst extracted = shallowRef<ReadonlyArray<TableOfContentsItem>>([]);\n\nwatch(\n [() => props.items, () => props.source, () => props.headingSelector],\n ([itemsProp, source, headingSelector]) => {\n if (itemsProp || !source) return;\n const headings = Array.from(source.querySelectorAll<HTMLElement>(headingSelector));\n extracted.value = headings\n .filter((h) => h.id)\n .map((h) => ({\n id: h.id,\n label: h.textContent ?? '',\n depth: Math.max(0, depthFromTagName(h.tagName)),\n }));\n },\n { immediate: true, flush: 'post' },\n);\n\nconst items = computed(() => props.items ?? extracted.value);\nconst ids = computed(() => items.value.map((i) => i.id));\nconst spyId = useScrollSpy(() => ids.value);\nconst activeId = computed(() => (props.activeId !== undefined ? props.activeId : spyId.value));\n\nconst classes = computed(() =>\n cn(props.isSticky && 'sticky top-4 self-start', attrs.class as string | undefined),\n);\n\n/** Everything but `class`, which is re-applied through `cn` above. */\nconst rest = computed(() => {\n const { class: _class, ...others } = attrs;\n return others;\n});\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- React returned `null` for an empty outline; `v-if` is the same gate. -->\n <nav\n v-if=\"items.length > 0\"\n ref=\"el\"\n aria-label=\"Table of contents\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <ul class=\"space-y-1 text-sm\">\n <li\n v-for=\"(item, i) in items\"\n :key=\"item.id\"\n :style=\"{ paddingLeft: `${(item.depth ?? 0) * 12}px` }\"\n >\n <a\n :href=\"`#${item.id}`\"\n :aria-current=\"item.id === activeId ? 'location' : undefined\"\n :class=\"\n cn(\n 'block rounded-sm px-2 py-1 transition-colors',\n item.id === activeId\n ? 'bg-muted font-medium text-foreground'\n : 'text-muted-foreground hover:bg-muted/40 hover:text-foreground',\n )\n \"\n >\n <slot name=\"label\" :item=\"item\" :index=\"i\">{{ item.label }}</slot>\n </a>\n </li>\n </ul>\n </nav>\n</template>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_createElementVNode","_hoisted_1","_Fragment","_renderSlot","_createTextVNode","_toDisplayString","_hoisted_4","_createVNode","_unref","Icon","_normalizeClass","_renderList","_createBlock","Portal","AnchoredPositioner","FocusScope","MenuItemStateToken","Menu","DismissableLayer","Modal","_normalizeStyle"],"mappings":"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"}
@@ -24,14 +24,21 @@ const Tones = {
24
24
  warning: "bg-warning text-warning-foreground",
25
25
  info: "bg-info text-info-foreground"
26
26
  },
27
- /** Muted/tinted bg + tone-readable foreground. */
27
+ /**
28
+ * Muted/tinted bg + tone-readable foreground.
29
+ *
30
+ * Pairs `bg-{tone}-soft` with `text-{tone}-soft-foreground`, the token minted for
31
+ * exactly this background — `themes/validate.ts` asserts that pair at AA. The
32
+ * full-strength `text-{tone}` is a *solid*-fill foreground: on the soft tint it
33
+ * measured 2.07:1 for `warning` and 3.15:1 for `success`.
34
+ */
28
35
  soft: {
29
36
  neutral: "bg-muted text-foreground",
30
- primary: "bg-primary-soft text-primary",
31
- danger: "bg-destructive-soft text-destructive",
32
- success: "bg-success-soft text-success",
33
- warning: "bg-warning-soft text-warning",
34
- info: "bg-info-soft text-info"
37
+ primary: "bg-primary-soft text-primary-soft-foreground",
38
+ danger: "bg-destructive-soft text-destructive-soft-foreground",
39
+ success: "bg-success-soft text-success-soft-foreground",
40
+ warning: "bg-warning-soft text-warning-soft-foreground",
41
+ info: "bg-info-soft text-info-soft-foreground"
35
42
  },
36
43
  /** Popover bg + tone-accent border. The "default" subtle look. */
37
44
  surface: {
@@ -42,31 +49,46 @@ const Tones = {
42
49
  warning: "border-warning/40 bg-popover text-popover-foreground",
43
50
  info: "border-info/40 bg-popover text-popover-foreground"
44
51
  },
45
- /** Transparent bg, tone border + tone text. */
52
+ /**
53
+ * Transparent bg, tone border + tone text.
54
+ *
55
+ * The fill is transparent, so the text lands on whatever surface hosts the
56
+ * component — the same situation `-soft-foreground` is toned for. Keeping the
57
+ * border at full-strength `{tone}` preserves the tone read; only the text
58
+ * darkens (light) / lightens (dark). Full-strength `text-{tone}` measured
59
+ * 2.15:1 for `warning` on the default light background.
60
+ */
46
61
  outline: {
47
62
  neutral: "border-border text-foreground",
48
- primary: "border-primary text-primary",
49
- danger: "border-destructive text-destructive",
50
- success: "border-success text-success",
51
- warning: "border-warning text-warning",
52
- info: "border-info text-info"
63
+ primary: "border-primary text-primary-soft-foreground",
64
+ danger: "border-destructive text-destructive-soft-foreground",
65
+ success: "border-success text-success-soft-foreground",
66
+ warning: "border-warning text-warning-soft-foreground",
67
+ info: "border-info text-info-soft-foreground"
53
68
  },
54
- /** Translucent tone bg + blur — used by `glass`. */
69
+ /**
70
+ * Translucent tone bg + blur — used by `glass`.
71
+ *
72
+ * `warning` is the one tone whose `-foreground` is not white (`#78350f`, picked
73
+ * to stay legible on the *solid* amber fill). Over a 30% wash it disappears —
74
+ * 1.23:1 in dark mode. `-soft-foreground` is the token toned for a tinted
75
+ * backdrop, so `warning` uses it and lands light-on-dark like its siblings.
76
+ */
55
77
  glass: {
56
78
  neutral: "bg-popover/70 text-popover-foreground",
57
79
  primary: "bg-primary/30 text-primary-foreground",
58
80
  danger: "bg-destructive/30 text-destructive-foreground",
59
81
  success: "bg-success/30 text-success-foreground",
60
- warning: "bg-warning/30 text-warning-foreground",
82
+ warning: "bg-warning/30 text-warning-soft-foreground",
61
83
  info: "bg-info/30 text-info-foreground"
62
84
  },
63
- /** Glass + tone-accent border at 50% alpha. */
85
+ /** Glass + tone-accent border at 50% alpha. Same foreground reasoning as `glass`. */
64
86
  glassOutline: {
65
87
  neutral: "border-border/50 bg-popover/70 text-popover-foreground",
66
88
  primary: "border-primary/50 bg-primary/30 text-primary-foreground",
67
89
  danger: "border-destructive/50 bg-destructive/30 text-destructive-foreground",
68
90
  success: "border-success/50 bg-success/30 text-success-foreground",
69
- warning: "border-warning/50 bg-warning/30 text-warning-foreground",
91
+ warning: "border-warning/50 bg-warning/30 text-warning-soft-foreground",
70
92
  info: "border-info/50 bg-info/30 text-info-foreground"
71
93
  },
72
94
  /**
@@ -87,4 +109,4 @@ export {
87
109
  Tones as T,
88
110
  ToneFamily as a
89
111
  };
90
- //# sourceMappingURL=Tones-CI65uuq9.js.map
112
+ //# sourceMappingURL=Tones-WKBNZ_u2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tones-WKBNZ_u2.js","sources":["../../src/foundation/utils/Tones/Tones.ts"],"sourcesContent":["import type { Tone } from '../StyleTokens';\n\n/* Contains the (variant-family × tone) → Tailwind class lookup shared between\n `surfaceVariants` and `buttonVariants` (and any future variant config). */\n\n/** Defines a tone-family — the variant group that picks the same bg/border/text palette. */\nexport const ToneFamily = {\n /** Refers to an opaque tone bg + foreground. */\n Solid: 'solid',\n /** Refers to a muted/tinted bg + tone-readable foreground. */\n Soft: 'soft',\n /** Refers to a popover bg + tone-accent border. */\n Surface: 'surface',\n /** Refers to a transparent bg, tone border + tone text. */\n Outline: 'outline',\n /** Refers to a translucent tone bg + blur. */\n Glass: 'glass',\n /** Refers to a glass fill + tone-accent border at 50% alpha. */\n GlassOutline: 'glassOutline',\n /** Refers to a low-alpha tinted fill + neutral border, no shadow. */\n Subtle: 'subtle',\n} as const;\n\nexport type ToneFamily = (typeof ToneFamily)[keyof typeof ToneFamily];\n\n/** Contains the cross-engine palette: bg / text (+ border where applicable) per tone-family × tone. */\nexport const Tones: Record<ToneFamily, Record<Tone, string>> = {\n /** Opaque tone bg + foreground. Used by `solid`, `elevated`, `flat`, button defaults. */\n solid: {\n neutral: 'bg-popover text-popover-foreground',\n primary: 'bg-primary text-primary-foreground',\n danger: 'bg-destructive text-destructive-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n info: 'bg-info text-info-foreground',\n },\n /**\n * Muted/tinted bg + tone-readable foreground.\n *\n * Pairs `bg-{tone}-soft` with `text-{tone}-soft-foreground`, the token minted for\n * exactly this background — `themes/validate.ts` asserts that pair at AA. The\n * full-strength `text-{tone}` is a *solid*-fill foreground: on the soft tint it\n * measured 2.07:1 for `warning` and 3.15:1 for `success`.\n */\n soft: {\n neutral: 'bg-muted text-foreground',\n primary: 'bg-primary-soft text-primary-soft-foreground',\n danger: 'bg-destructive-soft text-destructive-soft-foreground',\n success: 'bg-success-soft text-success-soft-foreground',\n warning: 'bg-warning-soft text-warning-soft-foreground',\n info: 'bg-info-soft text-info-soft-foreground',\n },\n /** Popover bg + tone-accent border. The \"default\" subtle look. */\n surface: {\n neutral: 'border-border bg-popover text-popover-foreground',\n primary: 'border-primary/40 bg-popover text-popover-foreground',\n danger: 'border-destructive/40 bg-popover text-popover-foreground',\n success: 'border-success/40 bg-popover text-popover-foreground',\n warning: 'border-warning/40 bg-popover text-popover-foreground',\n info: 'border-info/40 bg-popover text-popover-foreground',\n },\n /**\n * Transparent bg, tone border + tone text.\n *\n * The fill is transparent, so the text lands on whatever surface hosts the\n * component — the same situation `-soft-foreground` is toned for. Keeping the\n * border at full-strength `{tone}` preserves the tone read; only the text\n * darkens (light) / lightens (dark). Full-strength `text-{tone}` measured\n * 2.15:1 for `warning` on the default light background.\n */\n outline: {\n neutral: 'border-border text-foreground',\n primary: 'border-primary text-primary-soft-foreground',\n danger: 'border-destructive text-destructive-soft-foreground',\n success: 'border-success text-success-soft-foreground',\n warning: 'border-warning text-warning-soft-foreground',\n info: 'border-info text-info-soft-foreground',\n },\n /**\n * Translucent tone bg + blur — used by `glass`.\n *\n * `warning` is the one tone whose `-foreground` is not white (`#78350f`, picked\n * to stay legible on the *solid* amber fill). Over a 30% wash it disappears —\n * 1.23:1 in dark mode. `-soft-foreground` is the token toned for a tinted\n * backdrop, so `warning` uses it and lands light-on-dark like its siblings.\n */\n glass: {\n neutral: 'bg-popover/70 text-popover-foreground',\n primary: 'bg-primary/30 text-primary-foreground',\n danger: 'bg-destructive/30 text-destructive-foreground',\n success: 'bg-success/30 text-success-foreground',\n warning: 'bg-warning/30 text-warning-soft-foreground',\n info: 'bg-info/30 text-info-foreground',\n },\n /** Glass + tone-accent border at 50% alpha. Same foreground reasoning as `glass`. */\n glassOutline: {\n neutral: 'border-border/50 bg-popover/70 text-popover-foreground',\n primary: 'border-primary/50 bg-primary/30 text-primary-foreground',\n danger: 'border-destructive/50 bg-destructive/30 text-destructive-foreground',\n success: 'border-success/50 bg-success/30 text-success-foreground',\n warning: 'border-warning/50 bg-warning/30 text-warning-soft-foreground',\n info: 'border-info/50 bg-info/30 text-info-foreground',\n },\n /**\n * Low-alpha tinted fill + neutral `border-border`, no shadow. The understated\n * \"tinted panel / section band\" look — quieter than `soft`, flatter than `surface`.\n * Neutral fills from the muted token; coloured tones tint their `-soft` token at low alpha.\n */\n subtle: {\n neutral: 'border-border bg-muted/30 text-foreground',\n primary: 'border-primary/20 bg-primary-soft/60 text-foreground',\n danger: 'border-destructive/20 bg-destructive-soft/60 text-foreground',\n success: 'border-success/20 bg-success-soft/60 text-foreground',\n warning: 'border-warning/20 bg-warning-soft/60 text-foreground',\n info: 'border-info/20 bg-info-soft/60 text-foreground',\n },\n};\n"],"names":[],"mappings":"AAMO,MAAM,aAAa;AAAA;AAAA,EAExB,OAAO;AAAA;AAAA,EAEP,MAAM;AAAA;AAAA,EAEN,SAAS;AAAA;AAAA,EAET,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,cAAc;AAAA;AAAA,EAEd,QAAQ;AACV;AAKO,MAAM,QAAkD;AAAA;AAAA,EAE7D,OAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUR,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA,EAGR,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWR,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUR,OAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA,EAGR,cAAc;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOR,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAEV;"}
@@ -13,8 +13,8 @@ import { P as ProgressTone } from "./ProgressTone-BpLPUptx.js";
13
13
  import { S as Severity } from "./Severity-D0C5oAt-.js";
14
14
  import { S as Side, c as composeEventHandlers } from "./Side-CSys3p-F.js";
15
15
  import { S as StatusTone } from "./StatusTone-BoPK1s09.js";
16
- import { S as SurfaceVariant, s as surfaceVariants } from "./SurfaceStyles-ChdpGRBO.js";
17
- import { a as ToneFamily, T as Tones } from "./Tones-CI65uuq9.js";
16
+ import { S as SurfaceVariant, s as surfaceVariants } from "./SurfaceStyles-B6W7zdMi.js";
17
+ import { a as ToneFamily, T as Tones } from "./Tones-WKBNZ_u2.js";
18
18
  import { T as TransitionExtensions } from "./TransitionExtensions-hFi80JX2.js";
19
19
  import { c as cn } from "./cn-CzDCF-Ah.js";
20
20
  import { c as compareStrings, a as createCollator } from "./Compare-Du6p-OX1.js";
@@ -127,4 +127,4 @@ export {
127
127
  index as i,
128
128
  layerStyle as l
129
129
  };
130
- //# sourceMappingURL=index-BD7H9CkO.js.map
130
+ //# sourceMappingURL=index-CEoYQiWL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BD7H9CkO.js","sources":["../../src/foundation/utils/Layers/Layers.ts","../../src/foundation/utils/ElementTag/ElementTag.ts"],"sourcesContent":["/* Provides semantic z-index tiers — the single source of truth for stacking order. */\n\n/** Contains the semantic z-index tiers; matching `z-{name}` utilities ship via @theme. */\nexport const Layer = {\n /** Slips under the base layer; visually hidden. */\n Hide: -1,\n /** Sits in the default DOM flow with no z-index applied. */\n Base: 0,\n /** Slightly elevates over siblings — badges, sticky list items, in-grid overlays. */\n Raised: 10,\n /** Pins widgets inside a section — panels, inline overlays. */\n Docked: 20,\n /** Anchors a page-level sticky header or footer. */\n Sticky: 30,\n /** Hosts system banners — cookie notice, status banner, persistent FAB. */\n Banner: 40,\n /** Hosts dropdowns, popovers, comboboxes, menus, hover-cards anchored to a trigger. */\n Dropdown: 50,\n /** Dims the page behind a modal — backdrop / scrim layer. */\n Overlay: 60,\n /** Hosts modal / dialog / drawer / sheet content above its backdrop. */\n Modal: 70,\n /** Hosts popovers / menus opened FROM inside a modal — must beat Modal. */\n Popover: 80,\n /** Hosts toasts, snackbars, undo bars — survives above modals. */\n Toast: 90,\n /** Hosts tooltips and live-cursors — highest functional layer. */\n Tooltip: 100,\n /** Hosts DevTools / design-system inspector overlays — always wins. */\n Debug: 9999,\n} as const;\n\n/** Represents the name of a semantic z-index tier. */\nexport type LayerName = keyof typeof Layer;\n\n/** Provides an inline `style` object for programmatic z-index assignment. */\nexport function layerStyle(layer: LayerName): { zIndex: number } {\n return { zIndex: Layer[layer] };\n}\n","/* Provides the shared polymorphic-element vocabulary for the `as` prop (countUp / typewriter / animatedNumber / tilt / gradientText / scrollReveal). */\n\n/** Defines the HTML tag a polymorphic component renders as. */\nexport const ElementTag = {\n /** Refers to a `<span>`. */\n Span: 'span',\n /** Refers to a `<div>`. */\n Div: 'div',\n /** Refers to a `<p>`. */\n P: 'p',\n /** Refers to an `<h1>`. */\n H1: 'h1',\n /** Refers to an `<h2>`. */\n H2: 'h2',\n /** Refers to an `<h3>`. */\n H3: 'h3',\n /** Refers to an `<h4>`. */\n H4: 'h4',\n /** Refers to an `<h5>`. */\n H5: 'h5',\n /** Refers to an `<h6>`. */\n H6: 'h6',\n /** Refers to a `<section>`. */\n Section: 'section',\n /** Refers to an `<article>`. */\n Article: 'article',\n /** Refers to an `<li>`. */\n Li: 'li',\n} as const;\n\nexport type ElementTag = (typeof ElementTag)[keyof typeof ElementTag];\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,QAAQ;AAAA;AAAA,EAEnB,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,UAAU;AAAA;AAAA,EAEV,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA;AAAA,EAET,OAAO;AACT;AAMO,SAAS,WAAW,OAAsC;AAC/D,SAAO,EAAE,QAAQ,MAAM,KAAK,EAAA;AAC9B;ACnCO,MAAM,aAAa;AAAA;AAAA,EAExB,MAAM;AAAA;AAAA,EAEN,KAAK;AAAA;AAAA,EAEL,GAAG;AAAA;AAAA,EAEH,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,SAAS;AAAA;AAAA,EAET,SAAS;AAAA;AAAA,EAET,IAAI;AACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index-CEoYQiWL.js","sources":["../../src/foundation/utils/Layers/Layers.ts","../../src/foundation/utils/ElementTag/ElementTag.ts"],"sourcesContent":["/* Provides semantic z-index tiers — the single source of truth for stacking order. */\n\n/** Contains the semantic z-index tiers; matching `z-{name}` utilities ship via @theme. */\nexport const Layer = {\n /** Slips under the base layer; visually hidden. */\n Hide: -1,\n /** Sits in the default DOM flow with no z-index applied. */\n Base: 0,\n /** Slightly elevates over siblings — badges, sticky list items, in-grid overlays. */\n Raised: 10,\n /** Pins widgets inside a section — panels, inline overlays. */\n Docked: 20,\n /** Anchors a page-level sticky header or footer. */\n Sticky: 30,\n /** Hosts system banners — cookie notice, status banner, persistent FAB. */\n Banner: 40,\n /** Hosts dropdowns, popovers, comboboxes, menus, hover-cards anchored to a trigger. */\n Dropdown: 50,\n /** Dims the page behind a modal — backdrop / scrim layer. */\n Overlay: 60,\n /** Hosts modal / dialog / drawer / sheet content above its backdrop. */\n Modal: 70,\n /** Hosts popovers / menus opened FROM inside a modal — must beat Modal. */\n Popover: 80,\n /** Hosts toasts, snackbars, undo bars — survives above modals. */\n Toast: 90,\n /** Hosts tooltips and live-cursors — highest functional layer. */\n Tooltip: 100,\n /** Hosts DevTools / design-system inspector overlays — always wins. */\n Debug: 9999,\n} as const;\n\n/** Represents the name of a semantic z-index tier. */\nexport type LayerName = keyof typeof Layer;\n\n/** Provides an inline `style` object for programmatic z-index assignment. */\nexport function layerStyle(layer: LayerName): { zIndex: number } {\n return { zIndex: Layer[layer] };\n}\n","/* Provides the shared polymorphic-element vocabulary for the `as` prop (countUp / typewriter / animatedNumber / tilt / gradientText / scrollReveal). */\n\n/** Defines the HTML tag a polymorphic component renders as. */\nexport const ElementTag = {\n /** Refers to a `<span>`. */\n Span: 'span',\n /** Refers to a `<div>`. */\n Div: 'div',\n /** Refers to a `<p>`. */\n P: 'p',\n /** Refers to an `<h1>`. */\n H1: 'h1',\n /** Refers to an `<h2>`. */\n H2: 'h2',\n /** Refers to an `<h3>`. */\n H3: 'h3',\n /** Refers to an `<h4>`. */\n H4: 'h4',\n /** Refers to an `<h5>`. */\n H5: 'h5',\n /** Refers to an `<h6>`. */\n H6: 'h6',\n /** Refers to a `<section>`. */\n Section: 'section',\n /** Refers to an `<article>`. */\n Article: 'article',\n /** Refers to an `<li>`. */\n Li: 'li',\n} as const;\n\nexport type ElementTag = (typeof ElementTag)[keyof typeof ElementTag];\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,QAAQ;AAAA;AAAA,EAEnB,MAAM;AAAA;AAAA,EAEN,MAAM;AAAA;AAAA,EAEN,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,QAAQ;AAAA;AAAA,EAER,UAAU;AAAA;AAAA,EAEV,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA;AAAA,EAET,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA;AAAA,EAET,OAAO;AACT;AAMO,SAAS,WAAW,OAAsC;AAC/D,SAAO,EAAE,QAAQ,MAAM,KAAK,EAAA;AAC9B;ACnCO,MAAM,aAAa;AAAA;AAAA,EAExB,MAAM;AAAA;AAAA,EAEN,KAAK;AAAA;AAAA,EAEL,GAAG;AAAA;AAAA,EAEH,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,IAAI;AAAA;AAAA,EAEJ,SAAS;AAAA;AAAA,EAET,SAAS;AAAA;AAAA,EAET,IAAI;AACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,7 +3,7 @@ import { _ as _sfc_main$5, P as Politeness } from "./Announce.vue_vue_type_scrip
3
3
  import { defineComponent, useAttrs, computed, openBlock, createElementBlock, mergeProps, renderSlot, cloneVNode, h, Fragment, shallowRef, provide, inject, useTemplateRef, watchEffect } from "vue";
4
4
  import { C as ColorMode, s as systemMode, a as ColorModeKey, u as useColorMode } from "./ColorModeContext-Bz6CBL0V.js";
5
5
  import { p as provideDirection, D as Direction, a as DirectionKey, O as Orientation, _ as _sfc_main$b, R as RovingFocusKey, u as useDirection, b as useRovingFocusItem } from "./RovingFocusGroup.vue_vue_type_script_setup_true_lang-DCpYSP2V.js";
6
- import { a as _sfc_main$6, _ as _sfc_main$7 } from "./DismissableLayer.vue_vue_type_script_setup_true_lang-6nRnzsJW.js";
6
+ import { a as _sfc_main$6, _ as _sfc_main$7 } from "./DismissableLayer.vue_vue_type_script_setup_true_lang-ptH1ttBL.js";
7
7
  import { _ as _sfc_main$8 } from "./FormControlProvider.vue_vue_type_script_setup_true_lang-Fak7Jv46.js";
8
8
  import { _ as _sfc_main$9 } from "./OverlayArrow.vue_vue_type_script_setup_true_lang-CLYhnI8i.js";
9
9
  import { _ as _sfc_main$a } from "./Portal.vue_vue_type_script_setup_true_lang-CF3R0VCZ.js";
@@ -12,7 +12,7 @@ import { u as useReducedMotion } from "./useReducedMotion-B9LqQ3UT.js";
12
12
  import { c as cn } from "./cn-CzDCF-Ah.js";
13
13
  import { r as renderableChildren, S as Slottable, m as mergeProps$1, a as renderSlotClone } from "./Slot-D2lIitvV.js";
14
14
  import { F as FormControlKey, u as useFormControl, a as useFormControlChrome } from "./FormControlContext-B71MFW26.js";
15
- import { P as Presence } from "./Presence-C7IJvh_P.js";
15
+ import { P as Presence } from "./Presence-DE4MlrJz.js";
16
16
  import { P as Primitive } from "./Primitive-Cm3ECaVw.js";
17
17
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
18
18
  ...{ name: "VisuallyHidden", inheritAttrs: false },
@@ -231,4 +231,4 @@ export {
231
231
  createCollection as d,
232
232
  index as i
233
233
  };
234
- //# sourceMappingURL=index-Cbydgcdk.js.map
234
+ //# sourceMappingURL=index-op-kbVUk.js.map