@wow-two-beta/ui-vue 0.0.4 → 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
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.vue_vue_type_script_setup_true_lang-CmNoI4BE.js","sources":["../../src/presentation/overlays/modal/ModalTrigger.vue","../../src/presentation/overlays/OverlayHeader.vue","../../src/presentation/overlays/OverlayTitle.vue","../../src/presentation/overlays/OverlayDescription.vue","../../src/presentation/overlays/OverlayBody.vue","../../src/presentation/overlays/OverlayFooter.vue","../../src/presentation/overlays/OverlayCloseButton.vue","../../src/presentation/overlays/alertModal/AlertModal.vue","../../src/presentation/overlays/alertModal/AlertModalContent.vue","../../src/presentation/overlays/alertModal/AlertModalAction.vue","../../src/presentation/overlays/alertModal/AlertModalCancel.vue","../../src/presentation/overlays/drawer/DrawerTrigger.vue","../../src/presentation/overlays/popover/PopoverArrow.vue","../../src/presentation/overlays/hoverCard/HoverCard.vue","../../src/presentation/overlays/hoverCard/HoverCardTrigger.vue","../../src/presentation/overlays/hoverCard/HoverCardContent.vue","../../src/presentation/overlays/hoverCard/HoverCardArrow.vue","../../src/presentation/overlays/actionSheet/ActionSheet.vue","../../src/presentation/overlays/actionSheet/ActionSheetAction.vue","../../src/presentation/overlays/actionSheet/ActionSheetCancel.vue","../../src/presentation/overlays/bottomSheet/BottomSheet.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * The prop surface of `ModalTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface ModalTriggerProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useModalContext } from './Modal.vue';\n\n/* Opens the enclosing `Modal` and registers itself as the focus-return target. */\ndefineOptions({ name: 'ModalTrigger', inheritAttrs: false });\n\n/** The trigger content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ModalTriggerProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst context = useModalContext();\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 composed a ref onto the trigger to seed `ctx.triggerRef`; 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\n/**\n * `@click` is declared after `v-bind=\"attrs\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order, which is\n * what makes the `defaultPrevented` opt-out work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(true);\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n v-bind=\"attrs\"\n @click=\"handleClick\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayHeader`.\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 OverlayHeaderProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* Stacked title + description region at the top of a Modal / Drawer panel. */\ndefineOptions({ name: 'OverlayHeader', inheritAttrs: false });\n\n/** The header content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn('mb-4 flex flex-col gap-1.5', 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 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayTitle`.\n *\n * React declared `extends HTMLAttributes<HTMLHeadingElement>` 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 OverlayTitleProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* The accessible name of the enclosing dialog — carries the `id` its `aria-labelledby` points at. */\ndefineOptions({ name: 'OverlayTitle', inheritAttrs: false });\n\n/** The title text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useOverlayChromeContext();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst classes = computed(() =>\n cn('text-lg font-semibold leading-none text-foreground', 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 <!-- `id` sits before `v-bind`, so a caller-supplied `id` still wins — React's prop order. -->\n <h2 ref=\"el\" :id=\"context.titleId\" v-bind=\"rest\" :class=\"classes\"><slot /></h2>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayDescription`.\n *\n * React declared `extends HTMLAttributes<HTMLParagraphElement>` 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 OverlayDescriptionProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* The accessible description of the enclosing dialog — carries the `id` its `aria-describedby` points at. */\ndefineOptions({ name: 'OverlayDescription', inheritAttrs: false });\n\n/** The description text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useOverlayChromeContext();\nconst el = useTemplateRef<HTMLParagraphElement>('el');\n\nconst classes = computed(() =>\n cn('text-sm text-muted-foreground', 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 <!-- `id` sits before `v-bind`, so a caller-supplied `id` still wins — React's prop order. -->\n <p ref=\"el\" :id=\"context.descriptionId\" v-bind=\"rest\" :class=\"classes\"><slot /></p>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayBody`.\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 OverlayBodyProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* The main content region of a Modal / Drawer panel. */\ndefineOptions({ name: 'OverlayBody', inheritAttrs: false });\n\n/** The body content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn('text-sm text-foreground', 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 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayFooter`.\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 OverlayFooterProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* The trailing action row of a Modal / Drawer panel — stacked on narrow, right-aligned from `sm`. */\ndefineOptions({ name: 'OverlayFooter', inheritAttrs: false });\n\n/** The footer content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\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 <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayCloseButton`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface OverlayCloseButtonProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { X } from 'lucide-vue-next';\nimport { cn } from '../../foundation/utils';\nimport { Primitive } from '../../foundation/primitives';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* Dismiss control for a Modal / Drawer panel — closes the overlay and hands focus back to the trigger. */\ndefineOptions({ name: 'OverlayCloseButton', inheritAttrs: false });\n\n/** The button content — React's `children`. Falls back to an `X` glyph. */\ndefineSlots<{ default?(): unknown }>();\n\nconst props = withDefaults(defineProps<OverlayCloseButtonProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst context = useOverlayChromeContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/** `asChild` hands styling to the caller's element — React applied `className` bare in that branch. */\nconst classes = computed(() =>\n props.asChild\n ? (attrs.class as string | undefined)\n : cn(\n 'absolute right-4 top-4 grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground 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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — the order React's `onClick?.(e)` had, and\n * what makes the `defaultPrevented` opt-out below work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.close();\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n :aria-label=\"slots.default ? undefined : 'Close'\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"handleClick\"\n >\n <slot><X class=\"h-4 w-4\" /></slot>\n </Primitive>\n</template>\n","<script lang=\"ts\">\nimport type { ModalProps } from '../modal';\n\n/**\n * The prop surface of `AlertModal` — `Modal`'s, minus the two axes an alert\n * dialog fixes: `role` is always `alertdialog` and outside-click dismissal is\n * always off, so a destructive confirmation cannot be dismissed by accident.\n */\nexport type AlertModalProps = Omit<ModalProps, 'role' | 'dismissOnOutsideClick'>;\n</script>\n\n<script setup lang=\"ts\">\nimport Modal from '../modal/Modal.vue';\n\n/* Confirmation dialog — a `Modal` locked to `role=\"alertdialog\"` with outside-click dismissal off. */\ndefineOptions({ name: 'AlertModal', inheritAttrs: false });\n\n/** The AlertModal tree — `ModalTrigger` and `AlertModalContent`. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** Same `undefined` defaults as `Modal` — an absent `Boolean` prop must not read as an explicit `false`. */\nconst props = withDefaults(defineProps<AlertModalProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n dismissOnEscape: true,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nfunction handleOpenChange(open: boolean): void {\n emit('update:open', open);\n emit('open-change', open);\n}\n</script>\n\n<template>\n <Modal\n :open=\"props.open\"\n :is-open=\"props.isOpen\"\n :default-open=\"props.defaultOpen\"\n :dismiss-on-escape=\"props.dismissOnEscape\"\n role=\"alertdialog\"\n :dismiss-on-outside-click=\"false\"\n @open-change=\"handleOpenChange\"\n >\n <slot />\n </Modal>\n</template>\n","<script lang=\"ts\">\nimport type { ModalContentProps } from '../modal';\n\n/** The prop surface of `AlertModalContent` — identical to `ModalContent`'s. */\nexport type AlertModalContentProps = ModalContentProps;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport ModalContent from '../modal/ModalContent.vue';\n\n/* The alert dialog's panel — `ModalContent` verbatim; the alert semantics live on the root. */\ndefineOptions({ name: 'AlertModalContent', inheritAttrs: false });\n\n/** The panel content — chrome subcomponents and the dialog body. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<AlertModalContentProps>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/** Declared props first, attrs (including `class`) after, so a caller's attribute wins — React's spread order. */\nconst forwarded = computed(() => ({ ...props, ...attrs }));\n\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <ModalContent ref=\"inner\" v-bind=\"forwarded\"><slot /></ModalContent>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `AlertModalAction`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`\n * plus an `onAction` callback; attributes reach the root through `useAttrs` here\n * and `onAction` is the `action` emit, which leaves no declared prop.\n */\nexport type AlertModalActionProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport OverlayCloseButton from '../OverlayCloseButton.vue';\n\n/* The confirming button of an `AlertModal` — fires `action`, then closes the dialog. */\ndefineOptions({ name: 'AlertModalAction', inheritAttrs: false });\n\n/** The button label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst emit = defineEmits<{\n /** Replaces React's `onAction`. Fires when the action is confirmed, before the dialog closes. */\n action: [];\n}>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/**\n * Passed on to `OverlayCloseButton`, which merges it over its own chrome the way\n * React's `ModalClose` did — `cn` resolves the two, last-in wins per utility.\n */\nconst classes = computed(() =>\n cn(\n 'inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 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\n/**\n * Declared after `v-bind=\"rest\"`, so Vue chains the caller's own handler first\n * and this one second; `OverlayCloseButton`'s close runs last. React's order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n emit('action');\n}\n\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <OverlayCloseButton ref=\"inner\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot />\n </OverlayCloseButton>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `AlertModalCancel`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, which leaves no declared prop.\n */\nexport type AlertModalCancelProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport OverlayCloseButton from '../OverlayCloseButton.vue';\n\n/* The dismissing button of an `AlertModal` — closes the dialog without firing an action. */\ndefineOptions({ name: 'AlertModalCancel', inheritAttrs: false });\n\n/** The button label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/**\n * Passed on to `OverlayCloseButton`, which merges it over its own chrome the way\n * React's `ModalClose` did — `cn` resolves the two, last-in wins per utility.\n */\nconst classes = computed(() =>\n cn(\n 'inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted 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\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <OverlayCloseButton ref=\"inner\" v-bind=\"rest\" :class=\"classes\"><slot /></OverlayCloseButton>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `DrawerTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface DrawerTriggerProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useDrawerContext } from './Drawer.vue';\n\n/* Opens the enclosing `Drawer` and registers itself as the focus-return target. */\ndefineOptions({ name: 'DrawerTrigger', inheritAttrs: false });\n\n/** The trigger content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<DrawerTriggerProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst context = useDrawerContext();\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 composed a ref onto the trigger to seed `ctx.triggerRef`; 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\n/**\n * `@click` is declared after `v-bind=\"attrs\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order, which is\n * what makes the `defaultPrevented` opt-out work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(true);\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n v-bind=\"attrs\"\n @click=\"handleClick\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `PopoverArrow` — the `OverlayArrow` primitive's, unchanged. */\nexport interface PopoverArrowProps {\n /** The arrow width in px. Default 12. */\n width?: number;\n\n /** The arrow height in px. Default 6. */\n height?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { OverlayArrow } from '../../../foundation/primitives';\n\n/* Tip arrow tinted to the popover surface. Pair with Floating UI's `arrow()` middleware to position. */\ndefineOptions({ name: 'PopoverArrow', inheritAttrs: false });\n\nconst props = defineProps<PopoverArrowProps>();\n\nconst attrs = useAttrs();\n\nconst classes = computed(() => cn('text-popover', 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</script>\n\n<template>\n <OverlayArrow\n :width=\"props.width\"\n :height=\"props.height\"\n v-bind=\"rest\"\n :class=\"classes\"\n />\n</template>\n","<script lang=\"ts\">\nimport { inject, type ComputedRef, type InjectionKey, type Ref, type ShallowRef } from 'vue';\nimport type { Placement } from '@floating-ui/vue';\n\n/** The value shared with `HoverCardTrigger` / `HoverCardContent`. */\nexport interface HoverCardContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n /** The trigger element — the positioning anchor. */\n triggerEl: ShallowRef<HTMLElement | null>;\n /** Opens after `openDelay`. */\n show: () => void;\n /** Closes after `closeDelay`. */\n hide: () => void;\n /** Cancels a pending close — the pointer moved onto the card. */\n cancelHide: () => void;\n placement: ComputedRef<Placement>;\n offset: ComputedRef<number>;\n}\n\nexport const hoverCardContextKey: InjectionKey<HoverCardContextValue> = Symbol('wow-two.hoverCard');\n\nexport function useHoverCardContext(): HoverCardContextValue {\n const context = inject(hoverCardContextKey, null);\n if (!context) throw new Error('HoverCard.* must be used inside <HoverCard>');\n return context;\n}\n\n/**\n * The prop surface of `HoverCard`.\n *\n * `open` and `isOpen` are the same controlled state under two names: `open` is\n * the `v-model:open` binding target, `isOpen` the house boolean spelling that\n * mirrors the rest of the port. `open` wins when both are set. React's\n * `onOpenChange` is the `open-change` emit; `update:open` fires alongside it so\n * `v-model:open` works.\n */\nexport interface HoverCardProps {\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 hover dwell before opening, in ms. Default 700. */\n openDelay?: number;\n\n /** The grace period before closing, in ms. Default 300. */\n closeDelay?: number;\n\n /** The Floating UI placement. Default `bottom`. */\n placement?: Placement;\n\n /** The distance between anchor and card in px. Default 8. */\n offset?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, provide, shallowRef } from 'vue';\nimport { useControlled, useEscape } from '../../../foundation/hooks';\n\n/**\n * State + hover-timing owner for a HoverCard tree. Renders only its slot —\n * React returned a bare context Provider, which has no element of its own.\n */\ndefineOptions({ name: 'HoverCard', inheritAttrs: false });\n\n/** The HoverCard tree — `HoverCardTrigger` and `HoverCardContent`. 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<HoverCardProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n openDelay: 700,\n closeDelay: 300,\n placement: 'bottom',\n offset: 8,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\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\nconst triggerEl = shallowRef<HTMLElement | null>(null);\n\nlet openTimer: ReturnType<typeof setTimeout> | null = null;\nlet closeTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction clear(): void {\n if (openTimer) clearTimeout(openTimer);\n if (closeTimer) clearTimeout(closeTimer);\n openTimer = null;\n closeTimer = null;\n}\n\nfunction show(): void {\n clear();\n openTimer = setTimeout(() => controlled.setValue(true), props.openDelay);\n}\n\nfunction hide(): void {\n clear();\n closeTimer = setTimeout(() => controlled.setValue(false), props.closeDelay);\n}\n\nfunction cancelHide(): void {\n if (closeTimer) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n}\n\n/* Clear pending timers on teardown — React's `useEffect(() => clear, …)`. */\nonScopeDispose(clear);\n\n// WCAG 1.4.13 — hover content must be dismissible without moving the pointer.\nuseEscape(\n () => {\n clear();\n controlled.setValue(false);\n },\n () => controlled.value.value,\n);\n\nprovide(hoverCardContextKey, {\n open: controlled.value,\n setOpen: controlled.setValue,\n triggerEl,\n show,\n hide,\n cancelHide,\n placement: computed(() => props.placement),\n offset: computed(() => props.offset),\n});\n</script>\n\n<template>\n <slot />\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `HoverCardTrigger`. */\nexport interface HoverCardTriggerProps {\n /**\n * Merge onto the single slot child instead of rendering a `<span>`. Default `true`.\n *\n * React declared this prop but always cloned the child regardless; honouring it\n * gives the same default with an escape hatch when the slot is not a single element.\n */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useHoverCardContext } from './HoverCard.vue';\n\n/* Opens the enclosing `HoverCard` on hover / focus and doubles as its positioning anchor. */\ndefineOptions({ name: 'HoverCardTrigger', inheritAttrs: false });\n\n/** The trigger element — React's `children`, typed there as a single `ReactElement`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<HoverCardTriggerProps>(), { asChild: true });\n\nconst attrs = useAttrs();\nconst context = useHoverCardContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/* React composed a ref onto the cloned child to seed `ctx.triggerRef`; 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\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 <!--\n Handlers come after `v-bind=\"attrs\"`, so Vue chains the caller's own first —\n React called `trigger.props.onPointerEnter?.(e)` before its own in each clone.\n -->\n <Primitive\n ref=\"inner\"\n as=\"span\"\n :as-child=\"props.asChild\"\n v-bind=\"attrs\"\n @pointerenter=\"context.show()\"\n @pointerleave=\"context.hide()\"\n @focus=\"context.show()\"\n @blur=\"context.hide()\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `HoverCardContent`.\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 HoverCardContentProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { AnchoredPositioner, Portal, Presence } from '../../../foundation/primitives';\nimport { useHoverCardContext } from './HoverCard.vue';\n\n/* The anchored hover card panel — stays open while the pointer is over it. */\ndefineOptions({ name: 'HoverCardContent', inheritAttrs: false });\n\n/** The card content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useHoverCardContext();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/* Refs lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = context.open;\nconst placement = context.placement;\nconst offset = context.offset;\n\nconst anchor = computed(() => context.triggerEl.value);\n\nconst classes = computed(() =>\n cn(\n 'w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in) motion-safe:data-[state=closed]:animate-(--animate-pop-out) motion-reduce:animate-none',\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 <!--\n React nested `Portal` + `AnchoredPositioner` inside the Presence-cloned panel\n and bridged the injected `ref` / `data-state` past them with `forwardRef`. Vue\n resolves a cloned `ref` through `$el` and a Teleport has no element, so both\n are hoisted above `Presence` and the panel stays Presence's direct child —\n keeping `data-state` and the pop animation on the same node React had them on.\n The trade: the positioner stays mounted (empty) while the card is closed.\n -->\n <Portal>\n <AnchoredPositioner\n :anchor=\"anchor\"\n :placement=\"placement\"\n :offset=\"offset\"\n class=\"z-dropdown\"\n >\n <Presence :is-present=\"isOpen\">\n <div\n ref=\"el\"\n v-bind=\"rest\"\n :class=\"classes\"\n @pointerenter=\"context.cancelHide()\"\n @pointerleave=\"context.hide()\"\n >\n <slot />\n </div>\n </Presence>\n </AnchoredPositioner>\n </Portal>\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `HoverCardArrow` — the `OverlayArrow` primitive's, unchanged. */\nexport interface HoverCardArrowProps {\n /** The arrow width in px. Default 12. */\n width?: number;\n\n /** The arrow height in px. Default 6. */\n height?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { OverlayArrow } from '../../../foundation/primitives';\n\n/* Tip arrow tinted to the popover surface. Pair with Floating UI's `arrow()` middleware to position. */\ndefineOptions({ name: 'HoverCardArrow', inheritAttrs: false });\n\nconst props = defineProps<HoverCardArrowProps>();\n\nconst attrs = useAttrs();\n\nconst classes = computed(() => cn('text-popover', 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</script>\n\n<template>\n <OverlayArrow\n :width=\"props.width\"\n :height=\"props.height\"\n v-bind=\"rest\"\n :class=\"classes\"\n />\n</template>\n","<script lang=\"ts\">\nimport { inject, type InjectionKey } from 'vue';\n\n/** The value shared with `ActionSheetAction` / `ActionSheetCancel`. */\nexport interface ActionSheetContextValue {\n setOpen: (open: boolean) => void;\n}\n\nexport const actionSheetContextKey: InjectionKey<ActionSheetContextValue> = Symbol(\n 'wow-two.actionSheet',\n);\n\nexport function useActionSheetContext(): ActionSheetContextValue {\n const context = inject(actionSheetContextKey, null);\n if (!context) throw new Error('ActionSheet.* must be used inside <ActionSheet>');\n return context;\n}\n\n/**\n * The prop surface of `ActionSheet`.\n *\n * React's `title` / `description` were `ReactNode`; they are `string` props here\n * with matching named slots for rich content. React's `className` is the `class`\n * attr, forwarded to the panel exactly as React forwarded it.\n */\nexport interface ActionSheetProps {\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 heading above the action rows. Use the `title` slot for rich content. */\n title?: string;\n\n /** The supporting line under the heading. Use the `description` slot for rich content. */\n description?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useSlots } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useControlled } from '../../../foundation/hooks';\nimport Drawer from '../drawer/Drawer.vue';\nimport DrawerContent from '../drawer/DrawerContent.vue';\nimport OverlayTitle from '../OverlayTitle.vue';\nimport OverlayDescription from '../OverlayDescription.vue';\n\n/**\n * iOS-style action sheet — opinionated bottom Drawer with stacked button rows\n * and a separated Cancel.\n */\ndefineOptions({ name: 'ActionSheet', inheritAttrs: false });\n\ndefineSlots<{\n /** The action rows — `ActionSheetAction` / `ActionSheetCancel`. React's `children`. */\n default(): unknown;\n /** The heading, when it is richer than the `title` string prop. */\n title?(): unknown;\n /** The supporting line, when it is richer than the `description` string prop. */\n description?(): unknown;\n}>();\n\n/** `open` / `isOpen` / the node-ish props default to `undefined` so an absent prop cannot read as a set one. */\nconst props = withDefaults(defineProps<ActionSheetProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n title: undefined,\n description: undefined,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\n\n/*\n * ActionSheet owns open state and drives Drawer fully controlled, so `setOpen`\n * works in both controlled and uncontrolled modes (Drawer's context isn't\n * interceptable).\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\nconst resolvedOpen = controlled.value;\n\nprovide(actionSheetContextKey, { setOpen: controlled.setValue });\n\nconst hasTitle = computed(() => props.title !== undefined || slots.title !== undefined);\nconst hasDescription = computed(\n () => props.description !== undefined || slots.description !== undefined,\n);\n\nconst classes = computed(() =>\n cn(\n 'mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground',\n attrs.class as string | undefined,\n ),\n);\n</script>\n\n<template>\n <Drawer :open=\"resolvedOpen\" side=\"bottom\" @open-change=\"controlled.setValue\">\n <DrawerContent :class=\"classes\">\n <div v-if=\"hasTitle || hasDescription\" class=\"px-3 py-2 text-center\">\n <OverlayTitle v-if=\"hasTitle\" class=\"text-sm font-medium text-muted-foreground\">\n <slot name=\"title\">{{ props.title }}</slot>\n </OverlayTitle>\n <OverlayDescription\n v-if=\"hasDescription\"\n class=\"mt-1 text-xs text-muted-foreground\"\n >\n <slot name=\"description\">{{ props.description }}</slot>\n </OverlayDescription>\n </div>\n <div class=\"flex flex-col gap-px overflow-hidden rounded-lg bg-border\">\n <slot />\n </div>\n </DrawerContent>\n </Drawer>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `ActionSheetAction`.\n *\n * React declared `extends ButtonHTMLAttributes<HTMLButtonElement>` plus an\n * `onSelect` callback; attributes reach the root through `useAttrs` here and\n * `onSelect` is the `select` emit.\n */\nexport interface ActionSheetActionProps {\n /** The destructive tone — renders the label in the danger color. */\n isDestructive?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useActionSheetContext } from './ActionSheet.vue';\n\n/* One action row of an `ActionSheet` — fires `select`, then closes the sheet. */\ndefineOptions({ name: 'ActionSheetAction', inheritAttrs: false });\n\n/** The row label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ActionSheetActionProps>(), { isDestructive: false });\n\nconst emit = defineEmits<{\n /** Replaces React's `onSelect`. Fires before the sheet closes. */\n select: [];\n}>();\n\nconst attrs = useAttrs();\nconst context = useActionSheetContext();\nconst el = useTemplateRef<HTMLButtonElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n props.isDestructive ? 'text-destructive' : 'text-foreground',\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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n emit('select');\n context.setOpen(false);\n}\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` sits before `v-bind`, so a caller-supplied `type` still wins — React's `type = 'button'` default. -->\n <button ref=\"el\" type=\"button\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot />\n </button>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `ActionSheetCancel`.\n *\n * React declared it as `ButtonHTMLAttributes<HTMLButtonElement>`; attributes\n * reach the root through `useAttrs` here, which leaves no declared prop.\n */\nexport type ActionSheetCancelProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useActionSheetContext } from './ActionSheet.vue';\n\n/* The separated dismiss row of an `ActionSheet`. */\ndefineOptions({ name: 'ActionSheetCancel', inheritAttrs: false });\n\n/** The row label — React's `children`, which defaulted to `Cancel`. */\ndefineSlots<{ default?(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useActionSheetContext();\nconst el = useTemplateRef<HTMLButtonElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted 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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(false);\n}\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` sits before `v-bind`, so a caller-supplied `type` still wins — React's `type = 'button'` default. -->\n <button ref=\"el\" type=\"button\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot>Cancel</slot>\n </button>\n</template>\n","<script lang=\"ts\">\nimport { inject, type ComputedRef, type InjectionKey, type Ref } from 'vue';\nimport type {\n SurfaceElevation,\n SurfacePadding,\n SurfaceRadius,\n SurfaceTone,\n SurfaceVariant,\n} from '../../../foundation/utils';\n\nexport type SnapPoint = number | string;\n\n/** The value `useBottomSheet()` hands to anything rendered inside the sheet. */\nexport interface BottomSheetContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n /** The index of the active snap point. */\n currentSnap: Ref<number>;\n setCurrentSnap: (index: number) => void;\n snapPoints: ComputedRef<ReadonlyArray<SnapPoint>>;\n}\n\nexport const bottomSheetContextKey: InjectionKey<BottomSheetContextValue> = Symbol(\n 'wow-two.bottomSheet',\n);\n\nexport function useBottomSheet(): BottomSheetContextValue {\n const context = inject(bottomSheetContextKey, null);\n if (!context) throw new Error('useBottomSheet must be used inside <BottomSheet>');\n return context;\n}\n\nexport function resolveSnapPx(point: SnapPoint, viewport: number): number {\n if (typeof point === 'number') return point;\n const trimmed = point.trim();\n if (trimmed.endsWith('vh')) return (parseFloat(trimmed) / 100) * viewport;\n if (trimmed.endsWith('px')) return parseFloat(trimmed);\n if (trimmed.endsWith('%')) return (parseFloat(trimmed) / 100) * viewport;\n // Fallback: try parseFloat as px.\n const n = parseFloat(trimmed);\n return Number.isFinite(n) ? n : 0;\n}\n\n/**\n * Represents the prop surface of `BottomSheet`.\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.\n */\nexport interface BottomSheetProps {\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 heights the sheet snaps between — px numbers or CSS lengths. Default `['40vh', '90vh']`. */\n snapPoints?: ReadonlyArray<SnapPoint>;\n\n /** The snap index the sheet opens at. Default 0. */\n initialSnap?: number;\n\n /** The outside-click dismissal toggle. Default `true`. */\n dismissOnOutsideClick?: boolean;\n\n /** The Escape dismissal toggle. Default `true`. */\n dismissOnEscape?: boolean;\n\n /** The drag-below-lowest-snap dismissal toggle. Default `true`. */\n dragToDismiss?: boolean;\n\n /** The visual recipe. Default `elevated`. */\n variant?: SurfaceVariant;\n\n /** The color tone the recipe is tinted with. */\n tone?: SurfaceTone;\n\n /** The corner rounding. Default `none`. */\n radius?: SurfaceRadius;\n\n /** The inner spacing step. Default `none`. */\n padding?: SurfacePadding;\n\n /** The shadow depth. Default `5`. */\n elevation?: SurfaceElevation;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n normalizeStyle,\n provide,\n ref,\n shallowRef,\n useAttrs,\n useTemplateRef,\n watch,\n type ComponentPublicInstance,\n} from 'vue';\nimport { cn, surfaceVariants } from '../../../foundation/utils';\nimport { useControlled, useId } from '../../../foundation/hooks';\nimport {\n DismissableLayer,\n FocusScope,\n Portal,\n Presence,\n ScrollLockProvider,\n} from '../../../foundation/primitives';\nimport Backdrop from '../backdrop/Backdrop.vue';\nimport { overlayChromeContextKey } from '../OverlayChrome';\nimport { toHtmlElement } from '../OverlayHelpers';\n\n/**\n * Mobile bottom sheet with drag handle + snap points. Pointer-event drag\n * between heights; releasing snaps to the nearest point. Past the lowest\n * snap with `dragToDismiss`, the sheet closes.\n */\ndefineOptions({ name: 'BottomSheet', inheritAttrs: false });\n\n/** The sheet content — `BottomSheetTitle` / `BottomSheetDescription` and the body. 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<BottomSheetProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n snapPoints: () => ['40vh', '90vh'],\n initialSnap: 0,\n dismissOnOutsideClick: true,\n dismissOnEscape: true,\n dragToDismiss: true,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nconst attrs = useAttrs();\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\nconst resolvedOpen = controlled.value;\nconst currentSnap = ref(Math.min(props.initialSnap, props.snapPoints.length - 1));\nconst dragHeight = shallowRef<number | null>(null);\nconst titleId = useId('bottom-sheet-title');\nconst descriptionId = useId('bottom-sheet-description');\n\nconst panel = useTemplateRef<ComponentPublicInstance>('panel');\nconst handle = useTemplateRef<HTMLDivElement>('handle');\n\nlet startY: number | null = null;\nlet startHeight = 0;\n\n/* Reset to `initialSnap` each time the sheet re-opens — React's `useEffect` on `[open, initialSnap, snapPoints.length]`. */\nwatch(\n () => [resolvedOpen.value, props.initialSnap, props.snapPoints.length] as const,\n () => {\n if (resolvedOpen.value)\n currentSnap.value = Math.min(props.initialSnap, props.snapPoints.length - 1);\n },\n);\n\nprovide(bottomSheetContextKey, {\n open: resolvedOpen,\n setOpen: controlled.setValue,\n currentSnap,\n setCurrentSnap: (index: number) => {\n currentSnap.value = index;\n },\n snapPoints: computed(() => props.snapPoints),\n});\n\n// The chrome pieces wire `id={titleId}` / `id={descriptionId}`, which is what\n// the panel's `aria-labelledby` / `aria-describedby` resolve against.\nprovide(overlayChromeContextKey, {\n titleId,\n descriptionId,\n close: () => controlled.setValue(false),\n});\n\n/** `DismissableLayer` renders the panel div and exposes it, so `$el` is the sheet element. */\nfunction panelEl(): HTMLElement | null {\n return toHtmlElement(panel.value?.$el);\n}\n\nfunction handlePointerDown(event: PointerEvent): void {\n startY = event.clientY;\n const rect = panelEl()?.getBoundingClientRect();\n startHeight = rect ? rect.height : 0;\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n}\n\nfunction handlePointerMove(event: PointerEvent): void {\n if (startY === null) return;\n const dy = event.clientY - startY;\n dragHeight.value = Math.max(0, startHeight - dy);\n}\n\nfunction handlePointerUp(event: PointerEvent): void {\n if (startY === null) return;\n startY = null;\n (event.currentTarget as HTMLElement).releasePointerCapture?.(event.pointerId);\n\n const viewport = typeof window !== 'undefined' ? window.innerHeight : 800;\n const heights = props.snapPoints.map((point) => resolveSnapPx(point, viewport));\n const liveHeight = dragHeight.value ?? heights[currentSnap.value] ?? 0;\n dragHeight.value = null;\n\n // Below lowest snap by 60px → dismiss.\n if (props.dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {\n controlled.setValue(false);\n return;\n }\n // Snap to nearest.\n let bestIdx = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n heights.forEach((height, index) => {\n const distance = Math.abs(height - liveHeight);\n if (distance < bestDist) {\n bestDist = distance;\n bestIdx = index;\n }\n });\n currentSnap.value = bestIdx;\n}\n\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowUp' && currentSnap.value < props.snapPoints.length - 1) {\n event.preventDefault();\n currentSnap.value += 1;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (currentSnap.value > 0) currentSnap.value -= 1;\n else if (props.dragToDismiss) controlled.setValue(false);\n }\n}\n\n/**\n * The drag handle is the sheet's primary keyboard affordance (ArrowUp/ArrowDown\n * drive the snap state) — give it initial focus instead of FocusScope's default\n * first-tabbable walk, which falls back to the layer container here.\n */\nfunction handleMountAutoFocus(event: CustomEvent): void {\n event.preventDefault();\n handle.value?.focus();\n}\n\nfunction handleBackdropClick(): void {\n if (props.dismissOnOutsideClick) controlled.setValue(false);\n}\n\nfunction handleEscape(): void {\n controlled.setValue(false);\n}\n\nconst heightStyle = computed<string>(() => {\n if (dragHeight.value !== null) return `${dragHeight.value}px`;\n const point = props.snapPoints[currentSnap.value];\n if (typeof point === 'number') return `${point}px`;\n return point ?? '40vh';\n});\n\n/** Own declarations first so a caller's `style` still wins — React's `style={{…}}` then `{...rest}`. */\nconst panelStyle = computed(() =>\n normalizeStyle([\n {\n height: heightStyle.value,\n transition:\n dragHeight.value === null\n ? 'height 220ms ease-out, transform var(--duration-base) var(--ease-out)'\n : 'none',\n },\n attrs.style,\n ]),\n);\n\nconst classes = computed(() =>\n cn(\n 'fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t outline-none',\n 'will-change-transform',\n 'motion-safe:data-[state=closed]:translate-y-full',\n 'motion-reduce:translate-y-0',\n surfaceVariants({\n variant: props.variant ?? 'elevated',\n tone: props.tone,\n radius: props.radius ?? 'none',\n padding: props.padding ?? 'none',\n elevation: props.elevation ?? 5,\n }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\nconst el = computed(() => panelEl());\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!--\n React nested `Portal` + `ScrollLockProvider` inside the Presence-cloned\n surface and forwarded the injected `ref` past them onto the panel with\n `forwardRef`. Vue resolves a cloned `ref` through `$el`, and a Teleport /\n renderless root has no element, so both are hoisted above `Presence` and the\n lock now follows open state rather than mount. Presence's cloned child is the\n sheet panel itself — the node that carries `data-state` and the\n `transition-transform` whose end defers the unmount.\n -->\n <Portal>\n <ScrollLockProvider :is-enabled=\"resolvedOpen\">\n <!-- The scrim runs on `Backdrop`'s own `Presence` (its `isOpen` prop) so the\n fade-out plays before it unmounts. -->\n <Backdrop is-inline :is-open=\"resolvedOpen\" @click=\"handleBackdropClick\" />\n <Presence :is-present=\"resolvedOpen\">\n <!--\n `FocusScope as-child` merges into `DismissableLayer`, whose own root div\n *is* the sheet panel — React kept the layer div and the panel div separate\n and forwarded `data-state` down to the inner one. Collapsing them keeps\n every attribute of React's panel on the node `Presence` clones.\n -->\n <FocusScope\n as-child\n trapped\n loop\n :on-mount-auto-focus=\"handleMountAutoFocus\"\n >\n <DismissableLayer\n ref=\"panel\"\n :is-escape-disabled=\"!props.dismissOnEscape\"\n is-outside-click-disabled\n :on-escape=\"handleEscape\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n :style=\"panelStyle\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <div\n ref=\"handle\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n :aria-valuenow=\"currentSnap\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"props.snapPoints.length - 1\"\n tabindex=\"0\"\n class=\"flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerUp\"\n @keydown=\"handleKeyDown\"\n >\n <span class=\"h-1 w-10 rounded-full bg-border-strong\" aria-hidden=\"true\" />\n </div>\n <div class=\"flex-1 overflow-y-auto px-4 pb-4\"><slot /></div>\n </DismissableLayer>\n </FocusScope>\n </Presence>\n </ScrollLockProvider>\n </Portal>\n</template>\n"],"names":["_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_createElementBlock","_createVNode","Modal","ModalContent","OverlayCloseButton","Portal","AnchoredPositioner","_createElementVNode","Drawer","DrawerContent","_hoisted_1","OverlayTitle","_createTextVNode","_toDisplayString","OverlayDescription","_hoisted_2","ScrollLockProvider","Backdrop","FocusScope"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,gBAAA;AAChB,UAAM,QAAQ,eAAwC,OAAO;AAG7D,UAAM,SAAS,QAAQ;AAGvB;AAAA,MACE;AAAA,MACA,CAAC,aAAa;AACZ,gBAAQ,UAAU,QAAQ,cAAc,UAAU,GAAG;AAAA,MACvD;AAAA,MACA,EAAE,WAAW,MAAM,OAAO,OAAA;AAAA,IAAO;AAQnC,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAGA,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAA,aAAAC,YAYYC,kBAZZC,WAYY;AAAA,iBAXN;AAAA,QAAJ,KAAI;AAAA,QACJ,IAAG;AAAA,QACF,YAAU,MAAM;AAAA,QACjB,MAAK;AAAA,QACL,iBAAc;AAAA,QACb,iBAAeD,MAAA,MAAA;AAAA,QACf,cAAYA,MAAA,MAAA,IAAM,SAAA;AAAA,MAAA,GACXA,MAAA,KAAA,GAAK,EACZ,SAAO,YAAA,CAAW,GAAA;AAAA,yBAEnB,MAAQ;AAAA,UAARE,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;AClDZ,UAAM,QAAQ,SAAA;AACd,UAAM,KAAK,eAA+B,IAAI;AAE9C,UAAM,UAAU;AAAA,MAAS,MACvB,GAAG,8BAA8B,MAAM,KAA2B;AAAA,IAAA;AAIpE,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAK,mBAA2D,OAA3DF,WAA2D;AAAA,iBAAlD;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAa,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,QAAEC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;AChBvD,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,wBAAA;AAChB,UAAM,KAAK,eAAmC,IAAI;AAElD,UAAM,UAAU;AAAA,MAAS,MACvB,GAAG,sDAAsD,MAAM,KAA2B;AAAA,IAAA;AAI5F,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;AAKjB,aAAAJ,UAAA,GAAAK,mBAA+E,MAA/EF,WAA+E;AAAA,iBAAvE;AAAA,QAAJ,KAAI;AAAA,QAAM,IAAID,MAAA,OAAA,EAAQ;AAAA,MAAA,GAAiB,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,QAAEE,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;ACnB5E,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,wBAAA;AAChB,UAAM,KAAK,eAAqC,IAAI;AAEpD,UAAM,UAAU;AAAA,MAAS,MACvB,GAAG,iCAAiC,MAAM,KAA2B;AAAA,IAAA;AAIvE,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;AAKjB,aAAAJ,UAAA,GAAAK,mBAAmF,KAAnFF,WAAmF;AAAA,iBAA5E;AAAA,QAAJ,KAAI;AAAA,QAAM,IAAID,MAAA,OAAA,EAAQ;AAAA,MAAA,GAAuB,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,QAAEE,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;ACpBjF,UAAM,QAAQ,SAAA;AACd,UAAM,KAAK,eAA+B,IAAI;AAE9C,UAAM,UAAU;AAAA,MAAS,MACvB,GAAG,2BAA2B,MAAM,KAA2B;AAAA,IAAA;AAIjE,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAK,mBAA2D,OAA3DF,WAA2D;AAAA,iBAAlD;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAa,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,QAAEC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;ACjBvD,UAAM,QAAQ,SAAA;AACd,UAAM,KAAK,eAA+B,IAAI;AAE9C,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAK,mBAA2D,OAA3DF,WAA2D;AAAA,iBAAlD;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAa,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,QAAEC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;ACfvD,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AACd,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,wBAAA;AAChB,UAAM,QAAQ,eAAwC,OAAO;AAG7D,UAAM,UAAU;AAAA,MAAS,MACvB,MAAM,UACD,MAAM,QACP;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIN,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAOD,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,MAAA;AAAA,IACV;AAGA,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,aAAAC,YAWYC,kBAXZC,WAWY;AAAA,iBAVN;AAAA,QAAJ,KAAI;AAAA,QACJ,IAAG;AAAA,QACF,YAAU,MAAM;AAAA,QACjB,MAAK;AAAA,QACJ,cAAYD,MAAA,KAAA,EAAM,UAAU,SAAS;AAAA,MAAA,GAC9B,KAAA,OAAI;AAAA,QACX,OAAO,QAAA;AAAA,QACP,SAAO;AAAA,MAAA;yBAER,MAAkC;AAAA,UAAlCE,WAAkC,4BAAlC,MAAkC;AAAA,YAA5BE,YAAqBJ,MAAA,CAAA,GAAA,EAAlB,OAAM,WAAS;AAAA,UAAA;;;;;;;;;;;;;;;;;;ACvD5B,UAAM,QAAQ;AAOd,UAAM,OAAO;AAOb,aAAS,iBAAiB,MAAqB;AAC7C,WAAK,eAAe,IAAI;AACxB,WAAK,eAAe,IAAI;AAAA,IAC1B;;0BAIED,YAUQM,aAAA;AAAA,QATL,MAAM,MAAM;AAAA,QACZ,WAAS,MAAM;AAAA,QACf,gBAAc,MAAM;AAAA,QACpB,qBAAmB,MAAM;AAAA,QAC1B,MAAK;AAAA,QACJ,4BAA0B;AAAA,QAC1B,cAAa;AAAA,MAAA;yBAEd,MAAQ;AAAA,UAARH,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;AClCZ,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AACd,UAAM,QAAQ,eAA2D,OAAO;AAGhF,UAAM,YAAY,SAAS,OAAO,EAAE,GAAG,OAAO,GAAG,QAAQ;AAEzD,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAC,YAAoEO,aAApEL,WAAoE;AAAA,iBAAlD;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAgB,UAAA,KAAS,GAAA;AAAA,yBAAE,MAAQ;AAAA,UAARC,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;ACTvD,UAAM,OAAO;AAKb,UAAM,QAAQ,SAAA;AACd,UAAM,QAAQ,eAA2D,OAAO;AAMhF,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAMD,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,WAAK,QAAQ;AAAA,IACf;AAEA,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAC,YAEqBQ,aAFrBN,WAEqB;AAAA,iBAFG;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAgB,KAAA,OAAI;AAAA,QAAG,OAAO,QAAA;AAAA,QAAU,SAAO;AAAA,MAAA;yBACrE,MAAQ;AAAA,UAARC,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;AC1CZ,UAAM,QAAQ,SAAA;AACd,UAAM,QAAQ,eAA2D,OAAO;AAMhF,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,UAAA,GAAAC,YAA4FQ,aAA5FN,WAA4F;AAAA,iBAApE;AAAA,QAAJ,KAAI;AAAA,MAAA,GAAgB,KAAA,OAAI,EAAG,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,yBAAE,MAAQ;AAAA,UAARC,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;;ACtBzE,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,iBAAA;AAChB,UAAM,QAAQ,eAAwC,OAAO;AAG7D,UAAM,SAAS,QAAQ;AAGvB;AAAA,MACE;AAAA,MACA,CAAC,aAAa;AACZ,gBAAQ,UAAU,QAAQ,cAAc,UAAU,GAAG;AAAA,MACvD;AAAA,MACA,EAAE,WAAW,MAAM,OAAO,OAAA;AAAA,IAAO;AAQnC,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAGA,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAIjB,aAAAJ,aAAAC,YAYYC,kBAZZC,WAYY;AAAA,iBAXN;AAAA,QAAJ,KAAI;AAAA,QACJ,IAAG;AAAA,QACF,YAAU,MAAM;AAAA,QACjB,MAAK;AAAA,QACL,iBAAc;AAAA,QACb,iBAAeD,MAAA,MAAA;AAAA,QACf,cAAYA,MAAA,MAAA,IAAM,SAAA;AAAA,MAAA,GACXA,MAAA,KAAA,GAAK,EACZ,SAAO,YAAA,CAAW,GAAA;AAAA,yBAEnB,MAAQ;AAAA,UAARE,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;;;ACpDZ,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AAEd,UAAM,UAAU,SAAS,MAAM,GAAG,gBAAgB,MAAM,KAA2B,CAAC;AAGpF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;;AAIC,aAAAJ,aAAAC,YAKEC,oBALFC,WAKE;AAAA,QAJC,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MAAA,GACP,KAAA,OAAI,EACX,OAAO,QAAA,MAAA,CAAO,GAAA,MAAA,IAAA,CAAA,SAAA,UAAA,OAAA,CAAA;AAAA;;;AChBZ,MAAM,sBAA2D,OAAO,mBAAmB;AAE3F,SAAS,sBAA6C;AAC3D,QAAM,UAAU,OAAO,qBAAqB,IAAI;AAChD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,6CAA6C;AAC3E,SAAO;AACT;;;;;;;;;;;;;;;AAiDA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAOb,UAAM,aAAa,cAAuB;AAAA,MACxC,YAAY,MAAO,MAAM,SAAS,SAAY,MAAM,OAAO,MAAM;AAAA,MACjE,SAAS,MAAM,MAAM;AAAA,MACrB,UAAU,CAAC,UAAU;AACnB,aAAK,eAAe,KAAK;AACzB,aAAK,eAAe,KAAK;AAAA,MAC3B;AAAA,IAAA,CACD;AAED,UAAM,YAAY,WAA+B,IAAI;AAErD,QAAI,YAAkD;AACtD,QAAI,aAAmD;AAEvD,aAAS,QAAc;AACrB,UAAI,wBAAwB,SAAS;AACrC,UAAI,yBAAyB,UAAU;AACvC,kBAAY;AACZ,mBAAa;AAAA,IACf;AAEA,aAAS,OAAa;AACpB,YAAA;AACA,kBAAY,WAAW,MAAM,WAAW,SAAS,IAAI,GAAG,MAAM,SAAS;AAAA,IACzE;AAEA,aAAS,OAAa;AACpB,YAAA;AACA,mBAAa,WAAW,MAAM,WAAW,SAAS,KAAK,GAAG,MAAM,UAAU;AAAA,IAC5E;AAEA,aAAS,aAAmB;AAC1B,UAAI,YAAY;AACd,qBAAa,UAAU;AACvB,qBAAa;AAAA,MACf;AAAA,IACF;AAGA,mBAAe,KAAK;AAGpB;AAAA,MACE,MAAM;AACJ,cAAA;AACA,mBAAW,SAAS,KAAK;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW,MAAM;AAAA,IAAA;AAGzB,YAAQ,qBAAqB;AAAA,MAC3B,MAAM,WAAW;AAAA,MACjB,SAAS,WAAW;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,SAAS,MAAM,MAAM,SAAS;AAAA,MACzC,QAAQ,SAAS,MAAM,MAAM,MAAM;AAAA,IAAA,CACpC;;aAICC,WAAQ,KAAA,QAAA,SAAA;AAAA;;;;;;;;;;ACnIV,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,oBAAA;AAChB,UAAM,QAAQ,eAAwC,OAAO;AAG7D;AAAA,MACE;AAAA,MACA,CAAC,aAAa;AACZ,gBAAQ,UAAU,QAAQ,cAAc,UAAU,GAAG;AAAA,MACvD;AAAA,MACA,EAAE,WAAW,MAAM,OAAO,OAAA;AAAA,IAAO;AAInC,UAAM,KAAK,SAAS,MAAO,MAAM,OAAO,OAAO,IAA2B;AAE1E,aAAa,EAAE,IAAI;;AAQjB,aAAAJ,aAAAC,YAWYC,kBAXZC,WAWY;AAAA,iBAVN;AAAA,QAAJ,KAAI;AAAA,QACJ,IAAG;AAAA,QACF,YAAU,MAAM;AAAA,MAAA,GACTD,MAAA,KAAA,GAAK;AAAA,QACZ,gBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,OAAA,EAAQ,KAAA;AAAA,QACtB,gBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,OAAA,EAAQ,KAAA;AAAA,QACtB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,OAAA,EAAQ,KAAA;AAAA,QACf,QAAI,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,OAAA,EAAQ,KAAA;AAAA,MAAI;yBAEnB,MAAQ;AAAA,UAARE,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;ACtCZ,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,oBAAA;AAChB,UAAM,KAAK,eAA+B,IAAI;AAG9C,UAAM,SAAS,QAAQ;AACvB,UAAM,YAAY,QAAQ;AAC1B,UAAM,SAAS,QAAQ;AAEvB,UAAM,SAAS,SAAS,MAAM,QAAQ,UAAU,KAAK;AAErD,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAED,aAAa,EAAE,IAAI;;0BAYjBH,YAmBSC,MAAAQ,WAAA,GAAA,MAAA;AAAA,yBAlBP,MAiBqB;AAAA,UAjBrBJ,YAiBqBJ,MAAAS,WAAA,GAAA;AAAA,YAhBlB,QAAQ,OAAA;AAAA,YACR,WAAWT,MAAA,SAAA;AAAA,YACX,QAAQA,MAAA,MAAA;AAAA,YACT,OAAM;AAAA,UAAA;6BAEN,MAUW;AAAA,cAVXI,YAUWJ,MAAA,QAAA,GAAA,EAVA,cAAYA,MAAA,MAAA,KAAM;AAAA,iCAC3B,MAQM;AAAA,kBARNU,mBAQM,OARNT,WAQM;AAAA,6BAPA;AAAA,oBAAJ,KAAI;AAAA,kBAAA,GACI,KAAA,OAAI;AAAA,oBACX,OAAO,QAAA;AAAA,oBACP,gBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAED,MAAA,OAAA,EAAQ,WAAA;AAAA,oBACtB,gBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,OAAA,EAAQ,KAAA;AAAA,kBAAI;oBAE3BE,WAAQ,KAAA,QAAA,SAAA;AAAA,kBAAA;;;;;;;;;;;;;;;;;;;;;ACxDlB,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAA;AAEd,UAAM,UAAU,SAAS,MAAM,GAAG,gBAAgB,MAAM,KAA2B,CAAC;AAGpF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;;AAIC,aAAAJ,aAAAC,YAKEC,oBALFC,WAKE;AAAA,QAJC,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MAAA,GACP,KAAA,OAAI,EACX,OAAO,QAAA,MAAA,CAAO,GAAA,MAAA,IAAA,CAAA,SAAA,UAAA,OAAA,CAAA;AAAA;;;;;;;;AC7BZ,MAAM,wBAA+D;AAAA,EAC1E;AACF;AAEO,SAAS,wBAAiD;AAC/D,QAAM,UAAU,OAAO,uBAAuB,IAAI;AAClD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,iDAAiD;AAC/E,SAAO;AACT;;;;;;;;;;;;;AAoDA,UAAM,QAAQ;AAQd,UAAM,OAAO;AAOb,UAAM,QAAQ,SAAA;AACd,UAAM,QAAQ,SAAA;AAOd,UAAM,aAAa,cAAuB;AAAA,MACxC,YAAY,MAAO,MAAM,SAAS,SAAY,MAAM,OAAO,MAAM;AAAA,MACjE,SAAS,MAAM,MAAM;AAAA,MACrB,UAAU,CAAC,UAAU;AACnB,aAAK,eAAe,KAAK;AACzB,aAAK,eAAe,KAAK;AAAA,MAC3B;AAAA,IAAA,CACD;AAED,UAAM,eAAe,WAAW;AAEhC,YAAQ,uBAAuB,EAAE,SAAS,WAAW,UAAU;AAE/D,UAAM,WAAW,SAAS,MAAM,MAAM,UAAU,UAAa,MAAM,UAAU,MAAS;AACtF,UAAM,iBAAiB;AAAA,MACrB,MAAM,MAAM,gBAAgB,UAAa,MAAM,gBAAgB;AAAA,IAAA;AAGjE,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;;0BAKAF,YAiBSY,aAAA;AAAA,QAjBA,MAAMX,MAAA,YAAA;AAAA,QAAc,MAAK;AAAA,QAAU,cAAaA,MAAA,UAAA,EAAW;AAAA,MAAA;yBAClE,MAegB;AAAA,UAfhBI,YAegBQ,aAAA;AAAA,YAfA,sBAAO,QAAA,KAAO;AAAA,UAAA;6BAC5B,MAUM;AAAA,cAVK,SAAA,SAAY,eAAA,SAAvBd,aAAAK,mBAUM,OAVNU,cAUM;AAAA,gBATgB,SAAA,sBAApBd,YAEee,aAAA;AAAA;kBAFe,OAAM;AAAA,gBAAA;mCAClC,MAA2C;AAAA,oBAA3CZ,WAA2C,0BAA3C,MAA2C;AAAA,sBAArBa,gBAAAC,gBAAA,MAAM,KAAK,GAAA,CAAA;AAAA,oBAAA;;;;gBAG3B,eAAA,sBADRjB,YAKqBkB,aAAA;AAAA;kBAHnB,OAAM;AAAA,gBAAA;mCAEN,MAAuD;AAAA,oBAAvDf,WAAuD,gCAAvD,MAAuD;AAAA,sBAA3Ba,gBAAAC,gBAAA,MAAM,WAAW,GAAA,CAAA;AAAA,oBAAA;;;;;cAGjDN,mBAEM,OAFNQ,cAEM;AAAA,gBADJhB,WAAQ,KAAA,QAAA,SAAA;AAAA,cAAA;;;;;;;;;;;;;;;;;;AC3GhB,UAAM,QAAQ;AAEd,UAAM,OAAO;AAKb,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,sBAAA;AAChB,UAAM,KAAK,eAAkC,IAAI;AAEjD,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM,gBAAgB,qBAAqB;AAAA,QAC3C,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAMD,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,WAAK,QAAQ;AACb,cAAQ,QAAQ,KAAK;AAAA,IACvB;AAEA,aAAa,EAAE,IAAI;;AAKjB,aAAAJ,UAAA,GAAAK,mBAES,UAFTF,WAES;AAAA,iBAFG;AAAA,QAAJ,KAAI;AAAA,QAAK,MAAK;AAAA,MAAA,GAAiB,KAAA,OAAI;AAAA,QAAG,OAAO,QAAA;AAAA,QAAU,SAAO;AAAA,MAAA;QACpEC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;AC7CZ,UAAM,QAAQ,SAAA;AACd,UAAM,UAAU,sBAAA;AAChB,UAAM,KAAK,eAAkC,IAAI;AAEjD,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,GAAG,WAAW;AACrC,aAAO;AAAA,IACT,CAAC;AAMD,aAAS,YAAY,OAAyB;AAC5C,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,QAAQ,KAAK;AAAA,IACvB;AAEA,aAAa,EAAE,IAAI;;AAKjB,aAAAJ,UAAA,GAAAK,mBAES,UAFTF,WAES;AAAA,iBAFG;AAAA,QAAJ,KAAI;AAAA,QAAK,MAAK;AAAA,MAAA,GAAiB,KAAA,OAAI;AAAA,QAAG,OAAO,QAAA;AAAA,QAAU,SAAO;AAAA,MAAA;QACpEC,WAAmB,4BAAnB,MAAmB;AAAA,oDAAb,UAAM,EAAA;AAAA,QAAA;;;;;;;AC9BT,MAAM,wBAA+D;AAAA,EAC1E;AACF;AAEO,SAAS,iBAA0C;AACxD,QAAM,UAAU,OAAO,uBAAuB,IAAI;AAClD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,kDAAkD;AAChF,SAAO;AACT;AAEO,SAAS,cAAc,OAAkB,UAA0B;AACxE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAA;AACtB,MAAI,QAAQ,SAAS,IAAI,UAAW,WAAW,OAAO,IAAI,MAAO;AACjE,MAAI,QAAQ,SAAS,IAAI,EAAG,QAAO,WAAW,OAAO;AACrD,MAAI,QAAQ,SAAS,GAAG,UAAW,WAAW,OAAO,IAAI,MAAO;AAEhE,QAAM,IAAI,WAAW,OAAO;AAC5B,SAAO,OAAO,SAAS,CAAC,IAAI,IAAI;AAClC;;;;;;;;;;;;;;;;;;;;;AAyFA,UAAM,QAAQ;AAWd,UAAM,OAAO;AAOb,UAAM,QAAQ,SAAA;AAEd,UAAM,aAAa,cAAuB;AAAA,MACxC,YAAY,MAAO,MAAM,SAAS,SAAY,MAAM,OAAO,MAAM;AAAA,MACjE,SAAS,MAAM,MAAM;AAAA,MACrB,UAAU,CAAC,UAAU;AACnB,aAAK,eAAe,KAAK;AACzB,aAAK,eAAe,KAAK;AAAA,MAC3B;AAAA,IAAA,CACD;AAED,UAAM,eAAe,WAAW;AAChC,UAAM,cAAc,IAAI,KAAK,IAAI,MAAM,aAAa,MAAM,WAAW,SAAS,CAAC,CAAC;AAChF,UAAM,aAAa,WAA0B,IAAI;AACjD,UAAM,UAAU,MAAM,oBAAoB;AAC1C,UAAM,gBAAgB,MAAM,0BAA0B;AAEtD,UAAM,QAAQ,eAAwC,OAAO;AAC7D,UAAM,SAAS,eAA+B,QAAQ;AAEtD,QAAI,SAAwB;AAC5B,QAAI,cAAc;AAGlB;AAAA,MACE,MAAM,CAAC,aAAa,OAAO,MAAM,aAAa,MAAM,WAAW,MAAM;AAAA,MACrE,MAAM;AACJ,YAAI,aAAa;AACf,sBAAY,QAAQ,KAAK,IAAI,MAAM,aAAa,MAAM,WAAW,SAAS,CAAC;AAAA,MAC/E;AAAA,IAAA;AAGF,YAAQ,uBAAuB;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,gBAAgB,CAAC,UAAkB;AACjC,oBAAY,QAAQ;AAAA,MACtB;AAAA,MACA,YAAY,SAAS,MAAM,MAAM,UAAU;AAAA,IAAA,CAC5C;AAID,YAAQ,yBAAyB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,MAAM,WAAW,SAAS,KAAK;AAAA,IAAA,CACvC;AAGD,aAAS,UAA8B;AACrC,aAAO,cAAc,MAAM,OAAO,GAAG;AAAA,IACvC;AAEA,aAAS,kBAAkB,OAA2B;AACpD,eAAS,MAAM;AACf,YAAM,OAAO,QAAA,GAAW,sBAAA;AACxB,oBAAc,OAAO,KAAK,SAAS;AAClC,YAAM,cAA8B,kBAAkB,MAAM,SAAS;AAAA,IACxE;AAEA,aAAS,kBAAkB,OAA2B;AACpD,UAAI,WAAW,KAAM;AACrB,YAAM,KAAK,MAAM,UAAU;AAC3B,iBAAW,QAAQ,KAAK,IAAI,GAAG,cAAc,EAAE;AAAA,IACjD;AAEA,aAAS,gBAAgB,OAA2B;AAClD,UAAI,WAAW,KAAM;AACrB,eAAS;AACR,YAAM,cAA8B,wBAAwB,MAAM,SAAS;AAE5E,YAAM,WAAW,OAAO,WAAW,cAAc,OAAO,cAAc;AACtE,YAAM,UAAU,MAAM,WAAW,IAAI,CAAC,UAAU,cAAc,OAAO,QAAQ,CAAC;AAC9E,YAAM,aAAa,WAAW,SAAS,QAAQ,YAAY,KAAK,KAAK;AACrE,iBAAW,QAAQ;AAGnB,UAAI,MAAM,iBAAiB,cAAc,QAAQ,CAAC,KAAK,KAAK,IAAI;AAC9D,mBAAW,SAAS,KAAK;AACzB;AAAA,MACF;AAEA,UAAI,UAAU;AACd,UAAI,WAAW,OAAO;AACtB,cAAQ,QAAQ,CAAC,QAAQ,UAAU;AACjC,cAAM,WAAW,KAAK,IAAI,SAAS,UAAU;AAC7C,YAAI,WAAW,UAAU;AACvB,qBAAW;AACX,oBAAU;AAAA,QACZ;AAAA,MACF,CAAC;AACD,kBAAY,QAAQ;AAAA,IACtB;AAEA,aAAS,cAAc,OAA4B;AACjD,UAAI,MAAM,QAAQ,aAAa,YAAY,QAAQ,MAAM,WAAW,SAAS,GAAG;AAC9E,cAAM,eAAA;AACN,oBAAY,SAAS;AAAA,MACvB,WAAW,MAAM,QAAQ,aAAa;AACpC,cAAM,eAAA;AACN,YAAI,YAAY,QAAQ,EAAG,aAAY,SAAS;AAAA,iBACvC,MAAM,cAAe,YAAW,SAAS,KAAK;AAAA,MACzD;AAAA,IACF;AAOA,aAAS,qBAAqB,OAA0B;AACtD,YAAM,eAAA;AACN,aAAO,OAAO,MAAA;AAAA,IAChB;AAEA,aAAS,sBAA4B;AACnC,UAAI,MAAM,sBAAuB,YAAW,SAAS,KAAK;AAAA,IAC5D;AAEA,aAAS,eAAqB;AAC5B,iBAAW,SAAS,KAAK;AAAA,IAC3B;AAEA,UAAM,cAAc,SAAiB,MAAM;AACzC,UAAI,WAAW,UAAU,KAAM,QAAO,GAAG,WAAW,KAAK;AACzD,YAAM,QAAQ,MAAM,WAAW,YAAY,KAAK;AAChD,UAAI,OAAO,UAAU,SAAU,QAAO,GAAG,KAAK;AAC9C,aAAO,SAAS;AAAA,IAClB,CAAC;AAGD,UAAM,aAAa;AAAA,MAAS,MAC1B,eAAe;AAAA,QACb;AAAA,UACE,QAAQ,YAAY;AAAA,UACpB,YACE,WAAW,UAAU,OACjB,0EACA;AAAA,QAAA;AAAA,QAER,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAGH,UAAM,UAAU;AAAA,MAAS,MACvB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,UACd,SAAS,MAAM,WAAW;AAAA,UAC1B,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM,UAAU;AAAA,UACxB,SAAS,MAAM,WAAW;AAAA,UAC1B,WAAW,MAAM,aAAa;AAAA,QAAA,CAC/B;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IACR;AAIF,UAAM,OAAO,SAAS,MAAM;AAC1B,YAAM,EAAE,OAAO,QAAQ,OAAO,QAAQ,GAAG,WAAW;AACpD,aAAO;AAAA,IACT,CAAC;AAED,UAAM,KAAK,SAAS,MAAM,SAAS;AAEnC,aAAa,EAAE,IAAI;;0BAajBH,YAqDSC,MAAAQ,WAAA,GAAA,MAAA;AAAA,yBApDP,MAmDqB;AAAA,UAnDrBJ,YAmDqBJ,MAAAmB,WAAA,GAAA,EAnDA,cAAYnB,MAAA,YAAA,KAAY;AAAA,6BAG3C,MAA2E;AAAA,cAA3EI,YAA2EgB,aAAA;AAAA,gBAAjE,aAAA;AAAA,gBAAW,WAASpB,MAAA,YAAA;AAAA,gBAAe,SAAO;AAAA,cAAA;cACpDI,YA8CWJ,MAAA,QAAA,GAAA,EA9CA,cAAYA,MAAA,YAAA,KAAY;AAAA,iCAOjC,MAsCa;AAAA,kBAtCbI,YAsCaJ,MAAAqB,WAAA,GAAA;AAAA,oBArCX,YAAA;AAAA,oBACA,SAAA;AAAA,oBACA,MAAA;AAAA,oBACC,uBAAqB;AAAA,kBAAA;qCAEtB,MA+BmB;AAAA,sBA/BnBjB,YA+BmBJ,oBA/BnBC,WA+BmB;AAAA,iCA9Bb;AAAA,wBAAJ,KAAI;AAAA,wBACH,sBAAkB,CAAG,MAAM;AAAA,wBAC5B,6BAAA;AAAA,wBACC,aAAW;AAAA,wBACZ,MAAK;AAAA,wBACL,cAAW;AAAA,wBACV,mBAAiBD,MAAA,OAAA;AAAA,wBACjB,oBAAkBA,MAAA,aAAA;AAAA,wBAClB,OAAO,WAAA;AAAA,sBAAA,GACA,KAAA,OAAI,EACX,OAAO,QAAA,MAAA,CAAO,GAAA;AAAA,yCAEf,MAgBM;AAAA,0BAhBNU,mBAgBM,OAAA;AAAA,qCAfA;AAAA,4BAAJ,KAAI;AAAA,4BACJ,MAAK;AAAA,4BACL,oBAAiB;AAAA,4BAChB,iBAAe,YAAA;AAAA,4BACf,iBAAe;AAAA,4BACf,iBAAe,MAAM,WAAW,SAAM;AAAA,4BACvC,UAAS;AAAA,4BACT,OAAM;AAAA,4BACL,eAAa;AAAA,4BACb,eAAa;AAAA,4BACb,aAAW;AAAA,4BACX,iBAAe;AAAA,4BACf,WAAS;AAAA,0BAAA;4BAEVA,mBAA0E,QAAA;AAAA,8BAApE,OAAM;AAAA,8BAAyC,eAAY;AAAA,4BAAA;;0BAEnEA,mBAA4D,OAA5D,YAA4D;AAAA,4BAAdR,WAAQ,KAAA,QAAA,SAAA;AAAA,0BAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BottomSheet.vue_vue_type_script_setup_true_lang-CmNaGird.js","sources":["../../src/presentation/overlays/modal/ModalTrigger.vue","../../src/presentation/overlays/OverlayHeader.vue","../../src/presentation/overlays/OverlayTitle.vue","../../src/presentation/overlays/OverlayDescription.vue","../../src/presentation/overlays/OverlayBody.vue","../../src/presentation/overlays/OverlayFooter.vue","../../src/presentation/overlays/OverlayCloseButton.vue","../../src/presentation/overlays/alertModal/AlertModal.vue","../../src/presentation/overlays/alertModal/AlertModalContent.vue","../../src/presentation/overlays/alertModal/AlertModalAction.vue","../../src/presentation/overlays/alertModal/AlertModalCancel.vue","../../src/presentation/overlays/drawer/DrawerTrigger.vue","../../src/presentation/overlays/popover/PopoverArrow.vue","../../src/presentation/overlays/hoverCard/HoverCard.vue","../../src/presentation/overlays/hoverCard/HoverCardTrigger.vue","../../src/presentation/overlays/hoverCard/HoverCardContent.vue","../../src/presentation/overlays/hoverCard/HoverCardArrow.vue","../../src/presentation/overlays/actionSheet/ActionSheet.vue","../../src/presentation/overlays/actionSheet/ActionSheetAction.vue","../../src/presentation/overlays/actionSheet/ActionSheetCancel.vue","../../src/presentation/overlays/bottomSheet/BottomSheet.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * The prop surface of `ModalTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface ModalTriggerProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useModalContext } from './Modal.vue';\n\n/* Opens the enclosing `Modal` and registers itself as the focus-return target. */\ndefineOptions({ name: 'ModalTrigger', inheritAttrs: false });\n\n/** The trigger content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ModalTriggerProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst context = useModalContext();\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 composed a ref onto the trigger to seed `ctx.triggerRef`; 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\n/**\n * `@click` is declared after `v-bind=\"attrs\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order, which is\n * what makes the `defaultPrevented` opt-out work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(true);\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n v-bind=\"attrs\"\n @click=\"handleClick\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayHeader`.\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 OverlayHeaderProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* Stacked title + description region at the top of a Modal / Drawer panel. */\ndefineOptions({ name: 'OverlayHeader', inheritAttrs: false });\n\n/** The header content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn('mb-4 flex flex-col gap-1.5', 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 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayTitle`.\n *\n * React declared `extends HTMLAttributes<HTMLHeadingElement>` 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 OverlayTitleProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* The accessible name of the enclosing dialog — carries the `id` its `aria-labelledby` points at. */\ndefineOptions({ name: 'OverlayTitle', inheritAttrs: false });\n\n/** The title text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useOverlayChromeContext();\nconst el = useTemplateRef<HTMLHeadingElement>('el');\n\nconst classes = computed(() =>\n cn('text-lg font-semibold leading-none text-foreground', 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 <!-- `id` sits before `v-bind`, so a caller-supplied `id` still wins — React's prop order. -->\n <h2 ref=\"el\" :id=\"context.titleId\" v-bind=\"rest\" :class=\"classes\"><slot /></h2>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayDescription`.\n *\n * React declared `extends HTMLAttributes<HTMLParagraphElement>` 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 OverlayDescriptionProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* The accessible description of the enclosing dialog — carries the `id` its `aria-describedby` points at. */\ndefineOptions({ name: 'OverlayDescription', inheritAttrs: false });\n\n/** The description text — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useOverlayChromeContext();\nconst el = useTemplateRef<HTMLParagraphElement>('el');\n\nconst classes = computed(() =>\n cn('text-sm text-muted-foreground', 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 <!-- `id` sits before `v-bind`, so a caller-supplied `id` still wins — React's prop order. -->\n <p ref=\"el\" :id=\"context.descriptionId\" v-bind=\"rest\" :class=\"classes\"><slot /></p>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayBody`.\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 OverlayBodyProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* The main content region of a Modal / Drawer panel. */\ndefineOptions({ name: 'OverlayBody', inheritAttrs: false });\n\n/** The body content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn('text-sm text-foreground', 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 ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayFooter`.\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 OverlayFooterProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../foundation/utils';\n\n/* The trailing action row of a Modal / Drawer panel — stacked on narrow, right-aligned from `sm`. */\ndefineOptions({ name: 'OverlayFooter', inheritAttrs: false });\n\n/** The footer content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\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 <div ref=\"el\" v-bind=\"rest\" :class=\"classes\"><slot /></div>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `OverlayCloseButton`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface OverlayCloseButtonProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { X } from 'lucide-vue-next';\nimport { cn } from '../../foundation/utils';\nimport { Primitive } from '../../foundation/primitives';\nimport { useOverlayChromeContext } from './OverlayChrome';\n\n/* Dismiss control for a Modal / Drawer panel — closes the overlay and hands focus back to the trigger. */\ndefineOptions({ name: 'OverlayCloseButton', inheritAttrs: false });\n\n/** The button content — React's `children`. Falls back to an `X` glyph. */\ndefineSlots<{ default?(): unknown }>();\n\nconst props = withDefaults(defineProps<OverlayCloseButtonProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst slots = useSlots();\nconst context = useOverlayChromeContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/** `asChild` hands styling to the caller's element — React applied `className` bare in that branch. */\nconst classes = computed(() =>\n props.asChild\n ? (attrs.class as string | undefined)\n : cn(\n 'absolute right-4 top-4 grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground 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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — the order React's `onClick?.(e)` had, and\n * what makes the `defaultPrevented` opt-out below work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.close();\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n :aria-label=\"slots.default ? undefined : 'Close'\"\n v-bind=\"rest\"\n :class=\"classes\"\n @click=\"handleClick\"\n >\n <slot><X class=\"h-4 w-4\" /></slot>\n </Primitive>\n</template>\n","<script lang=\"ts\">\nimport type { ModalProps } from '../modal';\n\n/**\n * The prop surface of `AlertModal` — `Modal`'s, minus the two axes an alert\n * dialog fixes: `role` is always `alertdialog` and outside-click dismissal is\n * always off, so a destructive confirmation cannot be dismissed by accident.\n */\nexport type AlertModalProps = Omit<ModalProps, 'role' | 'dismissOnOutsideClick'>;\n</script>\n\n<script setup lang=\"ts\">\nimport Modal from '../modal/Modal.vue';\n\n/* Confirmation dialog — a `Modal` locked to `role=\"alertdialog\"` with outside-click dismissal off. */\ndefineOptions({ name: 'AlertModal', inheritAttrs: false });\n\n/** The AlertModal tree — `ModalTrigger` and `AlertModalContent`. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\n/** Same `undefined` defaults as `Modal` — an absent `Boolean` prop must not read as an explicit `false`. */\nconst props = withDefaults(defineProps<AlertModalProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n dismissOnEscape: true,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nfunction handleOpenChange(open: boolean): void {\n emit('update:open', open);\n emit('open-change', open);\n}\n</script>\n\n<template>\n <Modal\n :open=\"props.open\"\n :is-open=\"props.isOpen\"\n :default-open=\"props.defaultOpen\"\n :dismiss-on-escape=\"props.dismissOnEscape\"\n role=\"alertdialog\"\n :dismiss-on-outside-click=\"false\"\n @open-change=\"handleOpenChange\"\n >\n <slot />\n </Modal>\n</template>\n","<script lang=\"ts\">\nimport type { ModalContentProps } from '../modal';\n\n/** The prop surface of `AlertModalContent` — identical to `ModalContent`'s. */\nexport type AlertModalContentProps = ModalContentProps;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport ModalContent from '../modal/ModalContent.vue';\n\n/* The alert dialog's panel — `ModalContent` verbatim; the alert semantics live on the root. */\ndefineOptions({ name: 'AlertModalContent', inheritAttrs: false });\n\n/** The panel content — chrome subcomponents and the dialog body. React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = defineProps<AlertModalContentProps>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/** Declared props first, attrs (including `class`) after, so a caller's attribute wins — React's spread order. */\nconst forwarded = computed(() => ({ ...props, ...attrs }));\n\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <ModalContent ref=\"inner\" v-bind=\"forwarded\"><slot /></ModalContent>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `AlertModalAction`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`\n * plus an `onAction` callback; attributes reach the root through `useAttrs` here\n * and `onAction` is the `action` emit, which leaves no declared prop.\n */\nexport type AlertModalActionProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport OverlayCloseButton from '../OverlayCloseButton.vue';\n\n/* The confirming button of an `AlertModal` — fires `action`, then closes the dialog. */\ndefineOptions({ name: 'AlertModalAction', inheritAttrs: false });\n\n/** The button label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst emit = defineEmits<{\n /** Replaces React's `onAction`. Fires when the action is confirmed, before the dialog closes. */\n action: [];\n}>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/**\n * Passed on to `OverlayCloseButton`, which merges it over its own chrome the way\n * React's `ModalClose` did — `cn` resolves the two, last-in wins per utility.\n */\nconst classes = computed(() =>\n cn(\n 'inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 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\n/**\n * Declared after `v-bind=\"rest\"`, so Vue chains the caller's own handler first\n * and this one second; `OverlayCloseButton`'s close runs last. React's order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n emit('action');\n}\n\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <OverlayCloseButton ref=\"inner\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot />\n </OverlayCloseButton>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `AlertModalCancel`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, which leaves no declared prop.\n */\nexport type AlertModalCancelProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, type ComponentPublicInstance } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport OverlayCloseButton from '../OverlayCloseButton.vue';\n\n/* The dismissing button of an `AlertModal` — closes the dialog without firing an action. */\ndefineOptions({ name: 'AlertModalCancel', inheritAttrs: false });\n\n/** The button label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst inner = useTemplateRef<ComponentPublicInstance & { el?: unknown }>('inner');\n\n/**\n * Passed on to `OverlayCloseButton`, which merges it over its own chrome the way\n * React's `ModalClose` did — `cn` resolves the two, last-in wins per utility.\n */\nconst classes = computed(() =>\n cn(\n 'inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted 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\nconst el = computed(() => (inner.value?.$el ?? null) as HTMLElement | null);\n\ndefineExpose({ el });\n</script>\n\n<template>\n <OverlayCloseButton ref=\"inner\" v-bind=\"rest\" :class=\"classes\"><slot /></OverlayCloseButton>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `DrawerTrigger`.\n *\n * React declared `extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>`;\n * attributes reach the root through `useAttrs` here, so only `asChild` remains.\n */\nexport interface DrawerTriggerProps {\n /** Merge onto the single slot child instead of rendering a `<button>`. */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useDrawerContext } from './Drawer.vue';\n\n/* Opens the enclosing `Drawer` and registers itself as the focus-return target. */\ndefineOptions({ name: 'DrawerTrigger', inheritAttrs: false });\n\n/** The trigger content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<DrawerTriggerProps>(), { asChild: false });\n\nconst attrs = useAttrs();\nconst context = useDrawerContext();\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 composed a ref onto the trigger to seed `ctx.triggerRef`; 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\n/**\n * `@click` is declared after `v-bind=\"attrs\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order, which is\n * what makes the `defaultPrevented` opt-out work.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(true);\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 <Primitive\n ref=\"inner\"\n as=\"button\"\n :as-child=\"props.asChild\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n :aria-expanded=\"isOpen\"\n :data-state=\"isOpen ? 'open' : 'closed'\"\n v-bind=\"attrs\"\n @click=\"handleClick\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `PopoverArrow` — the `OverlayArrow` primitive's, unchanged. */\nexport interface PopoverArrowProps {\n /** The arrow width in px. Default 12. */\n width?: number;\n\n /** The arrow height in px. Default 6. */\n height?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { OverlayArrow } from '../../../foundation/primitives';\n\n/* Tip arrow tinted to the popover surface. Pair with Floating UI's `arrow()` middleware to position. */\ndefineOptions({ name: 'PopoverArrow', inheritAttrs: false });\n\nconst props = defineProps<PopoverArrowProps>();\n\nconst attrs = useAttrs();\n\nconst classes = computed(() => cn('text-popover', 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</script>\n\n<template>\n <OverlayArrow\n :width=\"props.width\"\n :height=\"props.height\"\n v-bind=\"rest\"\n :class=\"classes\"\n />\n</template>\n","<script lang=\"ts\">\nimport { inject, type ComputedRef, type InjectionKey, type Ref, type ShallowRef } from 'vue';\nimport type { Placement } from '@floating-ui/vue';\n\n/** The value shared with `HoverCardTrigger` / `HoverCardContent`. */\nexport interface HoverCardContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n /** The trigger element — the positioning anchor. */\n triggerEl: ShallowRef<HTMLElement | null>;\n /** Opens after `openDelay`. */\n show: () => void;\n /** Closes after `closeDelay`. */\n hide: () => void;\n /** Cancels a pending close — the pointer moved onto the card. */\n cancelHide: () => void;\n placement: ComputedRef<Placement>;\n offset: ComputedRef<number>;\n}\n\nexport const hoverCardContextKey: InjectionKey<HoverCardContextValue> = Symbol('wow-two.hoverCard');\n\nexport function useHoverCardContext(): HoverCardContextValue {\n const context = inject(hoverCardContextKey, null);\n if (!context) throw new Error('HoverCard.* must be used inside <HoverCard>');\n return context;\n}\n\n/**\n * The prop surface of `HoverCard`.\n *\n * `open` and `isOpen` are the same controlled state under two names: `open` is\n * the `v-model:open` binding target, `isOpen` the house boolean spelling that\n * mirrors the rest of the port. `open` wins when both are set. React's\n * `onOpenChange` is the `open-change` emit; `update:open` fires alongside it so\n * `v-model:open` works.\n */\nexport interface HoverCardProps {\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 hover dwell before opening, in ms. Default 700. */\n openDelay?: number;\n\n /** The grace period before closing, in ms. Default 300. */\n closeDelay?: number;\n\n /** The Floating UI placement. Default `bottom`. */\n placement?: Placement;\n\n /** The distance between anchor and card in px. Default 8. */\n offset?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onScopeDispose, provide, shallowRef } from 'vue';\nimport { useControlled, useEscape } from '../../../foundation/hooks';\n\n/**\n * State + hover-timing owner for a HoverCard tree. Renders only its slot —\n * React returned a bare context Provider, which has no element of its own.\n */\ndefineOptions({ name: 'HoverCard', inheritAttrs: false });\n\n/** The HoverCard tree — `HoverCardTrigger` and `HoverCardContent`. 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<HoverCardProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n openDelay: 700,\n closeDelay: 300,\n placement: 'bottom',\n offset: 8,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\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\nconst triggerEl = shallowRef<HTMLElement | null>(null);\n\nlet openTimer: ReturnType<typeof setTimeout> | null = null;\nlet closeTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction clear(): void {\n if (openTimer) clearTimeout(openTimer);\n if (closeTimer) clearTimeout(closeTimer);\n openTimer = null;\n closeTimer = null;\n}\n\nfunction show(): void {\n clear();\n openTimer = setTimeout(() => controlled.setValue(true), props.openDelay);\n}\n\nfunction hide(): void {\n clear();\n closeTimer = setTimeout(() => controlled.setValue(false), props.closeDelay);\n}\n\nfunction cancelHide(): void {\n if (closeTimer) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n}\n\n/* Clear pending timers on teardown — React's `useEffect(() => clear, …)`. */\nonScopeDispose(clear);\n\n// WCAG 1.4.13 — hover content must be dismissible without moving the pointer.\nuseEscape(\n () => {\n clear();\n controlled.setValue(false);\n },\n () => controlled.value.value,\n);\n\nprovide(hoverCardContextKey, {\n open: controlled.value,\n setOpen: controlled.setValue,\n triggerEl,\n show,\n hide,\n cancelHide,\n placement: computed(() => props.placement),\n offset: computed(() => props.offset),\n});\n</script>\n\n<template>\n <slot />\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `HoverCardTrigger`. */\nexport interface HoverCardTriggerProps {\n /**\n * Merge onto the single slot child instead of rendering a `<span>`. Default `true`.\n *\n * React declared this prop but always cloned the child regardless; honouring it\n * gives the same default with an escape hatch when the slot is not a single element.\n */\n asChild?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef, watch, type ComponentPublicInstance } from 'vue';\nimport { toHtmlElement } from '../OverlayHelpers';\nimport { Primitive } from '../../../foundation/primitives';\nimport { useHoverCardContext } from './HoverCard.vue';\n\n/* Opens the enclosing `HoverCard` on hover / focus and doubles as its positioning anchor. */\ndefineOptions({ name: 'HoverCardTrigger', inheritAttrs: false });\n\n/** The trigger element — React's `children`, typed there as a single `ReactElement`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<HoverCardTriggerProps>(), { asChild: true });\n\nconst attrs = useAttrs();\nconst context = useHoverCardContext();\nconst inner = useTemplateRef<ComponentPublicInstance>('inner');\n\n/* React composed a ref onto the cloned child to seed `ctx.triggerRef`; 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\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 <!--\n Handlers come after `v-bind=\"attrs\"`, so Vue chains the caller's own first —\n React called `trigger.props.onPointerEnter?.(e)` before its own in each clone.\n -->\n <Primitive\n ref=\"inner\"\n as=\"span\"\n :as-child=\"props.asChild\"\n v-bind=\"attrs\"\n @pointerenter=\"context.show()\"\n @pointerleave=\"context.hide()\"\n @focus=\"context.show()\"\n @blur=\"context.hide()\"\n >\n <slot />\n </Primitive>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `HoverCardContent`.\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 HoverCardContentProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { AnchoredPositioner, Portal, Presence } from '../../../foundation/primitives';\nimport { useHoverCardContext } from './HoverCard.vue';\n\n/* The anchored hover card panel — stays open while the pointer is over it. */\ndefineOptions({ name: 'HoverCardContent', inheritAttrs: false });\n\n/** The card content — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useHoverCardContext();\nconst el = useTemplateRef<HTMLDivElement>('el');\n\n/* Refs lifted to setup consts so the template auto-unwraps them (a plain injected object does not). */\nconst isOpen = context.open;\nconst placement = context.placement;\nconst offset = context.offset;\n\nconst anchor = computed(() => context.triggerEl.value);\n\nconst classes = computed(() =>\n cn(\n 'w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in) motion-safe:data-[state=closed]:animate-(--animate-pop-out) motion-reduce:animate-none',\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 <!--\n React nested `Portal` + `AnchoredPositioner` inside the Presence-cloned panel\n and bridged the injected `ref` / `data-state` past them with `forwardRef`. Vue\n resolves a cloned `ref` through `$el` and a Teleport has no element, so both\n are hoisted above `Presence` and the panel stays Presence's direct child —\n keeping `data-state` and the pop animation on the same node React had them on.\n The trade: the positioner stays mounted (empty) while the card is closed.\n -->\n <Portal>\n <AnchoredPositioner\n :anchor=\"anchor\"\n :placement=\"placement\"\n :offset=\"offset\"\n class=\"z-dropdown\"\n >\n <Presence :is-present=\"isOpen\">\n <div\n ref=\"el\"\n v-bind=\"rest\"\n :class=\"classes\"\n @pointerenter=\"context.cancelHide()\"\n @pointerleave=\"context.hide()\"\n >\n <slot />\n </div>\n </Presence>\n </AnchoredPositioner>\n </Portal>\n</template>\n","<script lang=\"ts\">\n/** The prop surface of `HoverCardArrow` — the `OverlayArrow` primitive's, unchanged. */\nexport interface HoverCardArrowProps {\n /** The arrow width in px. Default 12. */\n width?: number;\n\n /** The arrow height in px. Default 6. */\n height?: number;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { OverlayArrow } from '../../../foundation/primitives';\n\n/* Tip arrow tinted to the popover surface. Pair with Floating UI's `arrow()` middleware to position. */\ndefineOptions({ name: 'HoverCardArrow', inheritAttrs: false });\n\nconst props = defineProps<HoverCardArrowProps>();\n\nconst attrs = useAttrs();\n\nconst classes = computed(() => cn('text-popover', 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</script>\n\n<template>\n <OverlayArrow\n :width=\"props.width\"\n :height=\"props.height\"\n v-bind=\"rest\"\n :class=\"classes\"\n />\n</template>\n","<script lang=\"ts\">\nimport { inject, type InjectionKey } from 'vue';\n\n/** The value shared with `ActionSheetAction` / `ActionSheetCancel`. */\nexport interface ActionSheetContextValue {\n setOpen: (open: boolean) => void;\n}\n\nexport const actionSheetContextKey: InjectionKey<ActionSheetContextValue> = Symbol(\n 'wow-two.actionSheet',\n);\n\nexport function useActionSheetContext(): ActionSheetContextValue {\n const context = inject(actionSheetContextKey, null);\n if (!context) throw new Error('ActionSheet.* must be used inside <ActionSheet>');\n return context;\n}\n\n/**\n * The prop surface of `ActionSheet`.\n *\n * React's `title` / `description` were `ReactNode`; they are `string` props here\n * with matching named slots for rich content. React's `className` is the `class`\n * attr, forwarded to the panel exactly as React forwarded it.\n */\nexport interface ActionSheetProps {\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 heading above the action rows. Use the `title` slot for rich content. */\n title?: string;\n\n /** The supporting line under the heading. Use the `description` slot for rich content. */\n description?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, provide, useAttrs, useSlots } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useControlled } from '../../../foundation/hooks';\nimport Drawer from '../drawer/Drawer.vue';\nimport DrawerContent from '../drawer/DrawerContent.vue';\nimport OverlayTitle from '../OverlayTitle.vue';\nimport OverlayDescription from '../OverlayDescription.vue';\n\n/**\n * iOS-style action sheet — opinionated bottom Drawer with stacked button rows\n * and a separated Cancel.\n */\ndefineOptions({ name: 'ActionSheet', inheritAttrs: false });\n\ndefineSlots<{\n /** The action rows — `ActionSheetAction` / `ActionSheetCancel`. React's `children`. */\n default(): unknown;\n /** The heading, when it is richer than the `title` string prop. */\n title?(): unknown;\n /** The supporting line, when it is richer than the `description` string prop. */\n description?(): unknown;\n}>();\n\n/** `open` / `isOpen` / the node-ish props default to `undefined` so an absent prop cannot read as a set one. */\nconst props = withDefaults(defineProps<ActionSheetProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n title: undefined,\n description: undefined,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\n\n/*\n * ActionSheet owns open state and drives Drawer fully controlled, so `setOpen`\n * works in both controlled and uncontrolled modes (Drawer's context isn't\n * interceptable).\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\nconst resolvedOpen = controlled.value;\n\nprovide(actionSheetContextKey, { setOpen: controlled.setValue });\n\nconst hasTitle = computed(() => props.title !== undefined || slots.title !== undefined);\nconst hasDescription = computed(\n () => props.description !== undefined || slots.description !== undefined,\n);\n\nconst classes = computed(() =>\n cn(\n 'mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground',\n attrs.class as string | undefined,\n ),\n);\n</script>\n\n<template>\n <Drawer :open=\"resolvedOpen\" side=\"bottom\" @open-change=\"controlled.setValue\">\n <DrawerContent :class=\"classes\">\n <div v-if=\"hasTitle || hasDescription\" class=\"px-3 py-2 text-center\">\n <OverlayTitle v-if=\"hasTitle\" class=\"text-sm font-medium text-muted-foreground\">\n <slot name=\"title\">{{ props.title }}</slot>\n </OverlayTitle>\n <OverlayDescription\n v-if=\"hasDescription\"\n class=\"mt-1 text-xs text-muted-foreground\"\n >\n <slot name=\"description\">{{ props.description }}</slot>\n </OverlayDescription>\n </div>\n <div class=\"flex flex-col gap-px overflow-hidden rounded-lg bg-border\">\n <slot />\n </div>\n </DrawerContent>\n </Drawer>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `ActionSheetAction`.\n *\n * React declared `extends ButtonHTMLAttributes<HTMLButtonElement>` plus an\n * `onSelect` callback; attributes reach the root through `useAttrs` here and\n * `onSelect` is the `select` emit.\n */\nexport interface ActionSheetActionProps {\n /** The destructive tone — renders the label in the danger color. */\n isDestructive?: boolean;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useActionSheetContext } from './ActionSheet.vue';\n\n/* One action row of an `ActionSheet` — fires `select`, then closes the sheet. */\ndefineOptions({ name: 'ActionSheetAction', inheritAttrs: false });\n\n/** The row label — React's `children`. */\ndefineSlots<{ default(): unknown }>();\n\nconst props = withDefaults(defineProps<ActionSheetActionProps>(), { isDestructive: false });\n\nconst emit = defineEmits<{\n /** Replaces React's `onSelect`. Fires before the sheet closes. */\n select: [];\n}>();\n\nconst attrs = useAttrs();\nconst context = useActionSheetContext();\nconst el = useTemplateRef<HTMLButtonElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n props.isDestructive ? 'text-destructive' : 'text-foreground',\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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n emit('select');\n context.setOpen(false);\n}\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` sits before `v-bind`, so a caller-supplied `type` still wins — React's `type = 'button'` default. -->\n <button ref=\"el\" type=\"button\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot />\n </button>\n</template>\n","<script lang=\"ts\">\n/**\n * The prop surface of `ActionSheetCancel`.\n *\n * React declared it as `ButtonHTMLAttributes<HTMLButtonElement>`; attributes\n * reach the root through `useAttrs` here, which leaves no declared prop.\n */\nexport type ActionSheetCancelProps = Record<string, never>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useTemplateRef } from 'vue';\nimport { cn } from '../../../foundation/utils';\nimport { useActionSheetContext } from './ActionSheet.vue';\n\n/* The separated dismiss row of an `ActionSheet`. */\ndefineOptions({ name: 'ActionSheetCancel', inheritAttrs: false });\n\n/** The row label — React's `children`, which defaulted to `Cancel`. */\ndefineSlots<{ default?(): unknown }>();\n\nconst attrs = useAttrs();\nconst context = useActionSheetContext();\nconst el = useTemplateRef<HTMLButtonElement>('el');\n\nconst classes = computed(() =>\n cn(\n 'mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted 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\n/**\n * `@click` is declared after `v-bind=\"rest\"`, so Vue chains the caller's own\n * handler first and this one second — React's `onClick?.(e)` order.\n */\nfunction handleClick(event: MouseEvent): void {\n if (event.defaultPrevented) return;\n context.setOpen(false);\n}\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!-- `type` sits before `v-bind`, so a caller-supplied `type` still wins — React's `type = 'button'` default. -->\n <button ref=\"el\" type=\"button\" v-bind=\"rest\" :class=\"classes\" @click=\"handleClick\">\n <slot>Cancel</slot>\n </button>\n</template>\n","<script lang=\"ts\">\nimport { inject, type ComputedRef, type InjectionKey, type Ref } from 'vue';\nimport type {\n SurfaceElevation,\n SurfacePadding,\n SurfaceRadius,\n SurfaceTone,\n SurfaceVariant,\n} from '../../../foundation/utils';\n\nexport type SnapPoint = number | string;\n\n/** The value `useBottomSheet()` hands to anything rendered inside the sheet. */\nexport interface BottomSheetContextValue {\n /** The resolved open state. Writable — an assignment routes through `setOpen`. */\n open: Ref<boolean>;\n setOpen: (open: boolean) => void;\n /** The index of the active snap point. */\n currentSnap: Ref<number>;\n setCurrentSnap: (index: number) => void;\n snapPoints: ComputedRef<ReadonlyArray<SnapPoint>>;\n}\n\nexport const bottomSheetContextKey: InjectionKey<BottomSheetContextValue> = Symbol(\n 'wow-two.bottomSheet',\n);\n\nexport function useBottomSheet(): BottomSheetContextValue {\n const context = inject(bottomSheetContextKey, null);\n if (!context) throw new Error('useBottomSheet must be used inside <BottomSheet>');\n return context;\n}\n\nexport function resolveSnapPx(point: SnapPoint, viewport: number): number {\n if (typeof point === 'number') return point;\n const trimmed = point.trim();\n if (trimmed.endsWith('vh')) return (parseFloat(trimmed) / 100) * viewport;\n if (trimmed.endsWith('px')) return parseFloat(trimmed);\n if (trimmed.endsWith('%')) return (parseFloat(trimmed) / 100) * viewport;\n // Fallback: try parseFloat as px.\n const n = parseFloat(trimmed);\n return Number.isFinite(n) ? n : 0;\n}\n\n/**\n * Represents the prop surface of `BottomSheet`.\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.\n */\nexport interface BottomSheetProps {\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 heights the sheet snaps between — px numbers or CSS lengths. Default `['40vh', '90vh']`. */\n snapPoints?: ReadonlyArray<SnapPoint>;\n\n /** The snap index the sheet opens at. Default 0. */\n initialSnap?: number;\n\n /** The outside-click dismissal toggle. Default `true`. */\n dismissOnOutsideClick?: boolean;\n\n /** The Escape dismissal toggle. Default `true`. */\n dismissOnEscape?: boolean;\n\n /** The drag-below-lowest-snap dismissal toggle. Default `true`. */\n dragToDismiss?: boolean;\n\n /** The visual recipe. Default `elevated`. */\n variant?: SurfaceVariant;\n\n /** The color tone the recipe is tinted with. */\n tone?: SurfaceTone;\n\n /** The corner rounding. Default `none`. */\n radius?: SurfaceRadius;\n\n /** The inner spacing step. Default `none`. */\n padding?: SurfacePadding;\n\n /** The shadow depth. Default `5`. */\n elevation?: SurfaceElevation;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n normalizeStyle,\n provide,\n ref,\n shallowRef,\n useAttrs,\n useTemplateRef,\n watch,\n type ComponentPublicInstance,\n} from 'vue';\nimport { cn, surfaceVariants } from '../../../foundation/utils';\nimport { useControlled, useId } from '../../../foundation/hooks';\nimport {\n DismissableLayer,\n FocusScope,\n Portal,\n Presence,\n ScrollLockProvider,\n} from '../../../foundation/primitives';\nimport Backdrop from '../backdrop/Backdrop.vue';\nimport { overlayChromeContextKey } from '../OverlayChrome';\nimport { toHtmlElement } from '../OverlayHelpers';\n\n/**\n * Mobile bottom sheet with drag handle + snap points. Pointer-event drag\n * between heights; releasing snaps to the nearest point. Past the lowest\n * snap with `dragToDismiss`, the sheet closes.\n */\ndefineOptions({ name: 'BottomSheet', inheritAttrs: false });\n\n/** The sheet content — `BottomSheetTitle` / `BottomSheetDescription` and the body. 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<BottomSheetProps>(), {\n open: undefined,\n isOpen: undefined,\n defaultOpen: false,\n snapPoints: () => ['40vh', '90vh'],\n initialSnap: 0,\n dismissOnOutsideClick: true,\n dismissOnEscape: true,\n dragToDismiss: true,\n});\n\nconst emit = defineEmits<{\n /** The `v-model:open` half. */\n 'update:open': [open: boolean];\n /** Replaces React's `onOpenChange`. */\n 'open-change': [open: boolean];\n}>();\n\nconst attrs = useAttrs();\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\nconst resolvedOpen = controlled.value;\nconst currentSnap = ref(Math.min(props.initialSnap, props.snapPoints.length - 1));\nconst dragHeight = shallowRef<number | null>(null);\nconst titleId = useId('bottom-sheet-title');\nconst descriptionId = useId('bottom-sheet-description');\n\nconst panel = useTemplateRef<ComponentPublicInstance>('panel');\nconst handle = useTemplateRef<HTMLDivElement>('handle');\n\nlet startY: number | null = null;\nlet startHeight = 0;\n\n/* Reset to `initialSnap` each time the sheet re-opens — React's `useEffect` on `[open, initialSnap, snapPoints.length]`. */\nwatch(\n () => [resolvedOpen.value, props.initialSnap, props.snapPoints.length] as const,\n () => {\n if (resolvedOpen.value)\n currentSnap.value = Math.min(props.initialSnap, props.snapPoints.length - 1);\n },\n);\n\nprovide(bottomSheetContextKey, {\n open: resolvedOpen,\n setOpen: controlled.setValue,\n currentSnap,\n setCurrentSnap: (index: number) => {\n currentSnap.value = index;\n },\n snapPoints: computed(() => props.snapPoints),\n});\n\n// The chrome pieces wire `id={titleId}` / `id={descriptionId}`, which is what\n// the panel's `aria-labelledby` / `aria-describedby` resolve against.\nprovide(overlayChromeContextKey, {\n titleId,\n descriptionId,\n close: () => controlled.setValue(false),\n});\n\n/** `DismissableLayer` renders the panel div and exposes it, so `$el` is the sheet element. */\nfunction panelEl(): HTMLElement | null {\n return toHtmlElement(panel.value?.$el);\n}\n\nfunction handlePointerDown(event: PointerEvent): void {\n startY = event.clientY;\n const rect = panelEl()?.getBoundingClientRect();\n startHeight = rect ? rect.height : 0;\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n}\n\nfunction handlePointerMove(event: PointerEvent): void {\n if (startY === null) return;\n const dy = event.clientY - startY;\n dragHeight.value = Math.max(0, startHeight - dy);\n}\n\nfunction handlePointerUp(event: PointerEvent): void {\n if (startY === null) return;\n startY = null;\n (event.currentTarget as HTMLElement).releasePointerCapture?.(event.pointerId);\n\n const viewport = typeof window !== 'undefined' ? window.innerHeight : 800;\n const heights = props.snapPoints.map((point) => resolveSnapPx(point, viewport));\n const liveHeight = dragHeight.value ?? heights[currentSnap.value] ?? 0;\n dragHeight.value = null;\n\n // Below lowest snap by 60px → dismiss.\n if (props.dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {\n controlled.setValue(false);\n return;\n }\n // Snap to nearest.\n let bestIdx = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n heights.forEach((height, index) => {\n const distance = Math.abs(height - liveHeight);\n if (distance < bestDist) {\n bestDist = distance;\n bestIdx = index;\n }\n });\n currentSnap.value = bestIdx;\n}\n\nfunction handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowUp' && currentSnap.value < props.snapPoints.length - 1) {\n event.preventDefault();\n currentSnap.value += 1;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (currentSnap.value > 0) currentSnap.value -= 1;\n else if (props.dragToDismiss) controlled.setValue(false);\n }\n}\n\n/**\n * The drag handle is the sheet's primary keyboard affordance (ArrowUp/ArrowDown\n * drive the snap state) — give it initial focus instead of FocusScope's default\n * first-tabbable walk, which falls back to the layer container here.\n */\nfunction handleMountAutoFocus(event: CustomEvent): void {\n event.preventDefault();\n handle.value?.focus();\n}\n\nfunction handleBackdropClick(): void {\n if (props.dismissOnOutsideClick) controlled.setValue(false);\n}\n\nfunction handleEscape(): void {\n controlled.setValue(false);\n}\n\nconst heightStyle = computed<string>(() => {\n if (dragHeight.value !== null) return `${dragHeight.value}px`;\n const point = props.snapPoints[currentSnap.value];\n if (typeof point === 'number') return `${point}px`;\n return point ?? '40vh';\n});\n\n/** Own declarations first so a caller's `style` still wins — React's `style={{…}}` then `{...rest}`. */\nconst panelStyle = computed(() =>\n normalizeStyle([\n {\n height: heightStyle.value,\n transition:\n dragHeight.value === null\n ? 'height 220ms ease-out, transform var(--duration-base) var(--ease-out)'\n : 'none',\n },\n attrs.style,\n ]),\n);\n\nconst classes = computed(() =>\n cn(\n 'fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t outline-none',\n 'will-change-transform',\n 'motion-safe:data-[state=closed]:translate-y-full',\n 'motion-reduce:translate-y-0',\n surfaceVariants({\n variant: props.variant ?? 'elevated',\n tone: props.tone,\n radius: props.radius ?? 'none',\n padding: props.padding ?? 'none',\n elevation: props.elevation ?? 5,\n }),\n attrs.class as string | undefined,\n ),\n);\n\n/** Everything but `class` / `style`, both re-applied above. */\nconst rest = computed(() => {\n const { class: _class, style: _style, ...others } = attrs;\n return others;\n});\n\nconst el = computed(() => panelEl());\n\ndefineExpose({ el });\n</script>\n\n<template>\n <!--\n React nested `Portal` + `ScrollLockProvider` inside the Presence-cloned\n surface and forwarded the injected `ref` past them onto the panel with\n `forwardRef`. Vue resolves a cloned `ref` through `$el`, and a Teleport /\n renderless root has no element, so both are hoisted above `Presence` and the\n lock now follows open state rather than mount. Presence's cloned child is the\n sheet panel itself — the node that carries `data-state` and the\n `transition-transform` whose end defers the unmount.\n -->\n <Portal>\n <ScrollLockProvider :is-enabled=\"resolvedOpen\">\n <!-- The scrim runs on `Backdrop`'s own `Presence` (its `isOpen` prop) so the\n fade-out plays before it unmounts. -->\n <Backdrop is-inline :is-open=\"resolvedOpen\" @click=\"handleBackdropClick\" />\n <Presence :is-present=\"resolvedOpen\">\n <!--\n `FocusScope as-child` merges into `DismissableLayer`, whose own root div\n *is* the sheet panel — React kept the layer div and the panel div separate\n and forwarded `data-state` down to the inner one. Collapsing them keeps\n every attribute of React's panel on the node `Presence` clones.\n -->\n <FocusScope\n as-child\n trapped\n loop\n :on-mount-auto-focus=\"handleMountAutoFocus\"\n >\n <DismissableLayer\n ref=\"panel\"\n :is-escape-disabled=\"!props.dismissOnEscape\"\n is-outside-click-disabled\n :on-escape=\"handleEscape\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n :style=\"panelStyle\"\n v-bind=\"rest\"\n :class=\"classes\"\n >\n <div\n ref=\"handle\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n :aria-valuenow=\"currentSnap\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"props.snapPoints.length - 1\"\n tabindex=\"0\"\n class=\"flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerUp\"\n @keydown=\"handleKeyDown\"\n >\n <span class=\"h-1 w-10 rounded-full bg-border-strong\" aria-hidden=\"true\" />\n </div>\n <div class=\"flex-1 overflow-y-auto px-4 pb-4\"><slot /></div>\n </DismissableLayer>\n </FocusScope>\n </Presence>\n </ScrollLockProvider>\n </Portal>\n</template>\n"],"names":["_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_createElementBlock","_createVNode","Modal","ModalContent","OverlayCloseButton","Portal","AnchoredPositioner","_createElementVNode","Drawer","DrawerContent","_hoisted_1","OverlayTitle","_createTextVNode","_toDisplayString","OverlayDescription","_hoisted_2","ScrollLockProvider","Backdrop","FocusScope"],"mappings":"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"}