@iris-ui-kit/vue 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/LICENSE +21 -0
  2. package/dist/admin.cjs +1869 -0
  3. package/dist/admin.cjs.map +1 -0
  4. package/dist/admin.d.cts +376 -0
  5. package/dist/admin.d.ts +376 -0
  6. package/dist/admin.js +10 -0
  7. package/dist/admin.js.map +1 -0
  8. package/dist/async.cjs +76 -0
  9. package/dist/async.cjs.map +1 -0
  10. package/dist/async.d.cts +59 -0
  11. package/dist/async.d.ts +59 -0
  12. package/dist/async.js +3 -0
  13. package/dist/async.js.map +1 -0
  14. package/dist/behaviors.cjs +659 -0
  15. package/dist/behaviors.cjs.map +1 -0
  16. package/dist/behaviors.d.cts +441 -0
  17. package/dist/behaviors.d.ts +441 -0
  18. package/dist/behaviors.js +3 -0
  19. package/dist/behaviors.js.map +1 -0
  20. package/dist/chunk-3FJUCHCC.js +146 -0
  21. package/dist/chunk-3FJUCHCC.js.map +1 -0
  22. package/dist/chunk-3R3QDLJC.js +172 -0
  23. package/dist/chunk-3R3QDLJC.js.map +1 -0
  24. package/dist/chunk-4FLIW67H.js +137 -0
  25. package/dist/chunk-4FLIW67H.js.map +1 -0
  26. package/dist/chunk-4FQ7XF52.js +3 -0
  27. package/dist/chunk-4FQ7XF52.js.map +1 -0
  28. package/dist/chunk-72PZMU6R.js +99 -0
  29. package/dist/chunk-72PZMU6R.js.map +1 -0
  30. package/dist/chunk-75GSYEJS.js +17 -0
  31. package/dist/chunk-75GSYEJS.js.map +1 -0
  32. package/dist/chunk-7IOJADZC.js +38 -0
  33. package/dist/chunk-7IOJADZC.js.map +1 -0
  34. package/dist/chunk-CIZGSGXN.js +651 -0
  35. package/dist/chunk-CIZGSGXN.js.map +1 -0
  36. package/dist/chunk-F77KIPOH.js +103 -0
  37. package/dist/chunk-F77KIPOH.js.map +1 -0
  38. package/dist/chunk-FJBYAIL4.js +1318 -0
  39. package/dist/chunk-FJBYAIL4.js.map +1 -0
  40. package/dist/chunk-H7HVVPYR.js +66 -0
  41. package/dist/chunk-H7HVVPYR.js.map +1 -0
  42. package/dist/chunk-I6D5VXQK.js +167 -0
  43. package/dist/chunk-I6D5VXQK.js.map +1 -0
  44. package/dist/chunk-PPYNXNGZ.js +73 -0
  45. package/dist/chunk-PPYNXNGZ.js.map +1 -0
  46. package/dist/chunk-QLUIKEMJ.js +1197 -0
  47. package/dist/chunk-QLUIKEMJ.js.map +1 -0
  48. package/dist/chunk-ROJV6RON.js +3 -0
  49. package/dist/chunk-ROJV6RON.js.map +1 -0
  50. package/dist/chunk-S43IHHBU.js +82 -0
  51. package/dist/chunk-S43IHHBU.js.map +1 -0
  52. package/dist/chunk-TCAXRWT6.js +108 -0
  53. package/dist/chunk-TCAXRWT6.js.map +1 -0
  54. package/dist/chunk-TQB5LVOH.js +17 -0
  55. package/dist/chunk-TQB5LVOH.js.map +1 -0
  56. package/dist/chunk-VM2CXEUA.js +46 -0
  57. package/dist/chunk-VM2CXEUA.js.map +1 -0
  58. package/dist/chunk-W2JVHGFR.js +103 -0
  59. package/dist/chunk-W2JVHGFR.js.map +1 -0
  60. package/dist/chunk-WL67XCH5.js +59 -0
  61. package/dist/chunk-WL67XCH5.js.map +1 -0
  62. package/dist/chunk-XCNCIG2I.js +165 -0
  63. package/dist/chunk-XCNCIG2I.js.map +1 -0
  64. package/dist/chunk-XSLBANUV.js +16 -0
  65. package/dist/chunk-XSLBANUV.js.map +1 -0
  66. package/dist/chunk-ZY4NLITM.js +73 -0
  67. package/dist/chunk-ZY4NLITM.js.map +1 -0
  68. package/dist/data.cjs +59 -0
  69. package/dist/data.cjs.map +1 -0
  70. package/dist/data.d.cts +46 -0
  71. package/dist/data.d.ts +46 -0
  72. package/dist/data.js +4 -0
  73. package/dist/data.js.map +1 -0
  74. package/dist/error-boundary.cjs +115 -0
  75. package/dist/error-boundary.cjs.map +1 -0
  76. package/dist/error-boundary.d.cts +60 -0
  77. package/dist/error-boundary.d.ts +60 -0
  78. package/dist/error-boundary.js +4 -0
  79. package/dist/error-boundary.js.map +1 -0
  80. package/dist/floating.cjs +149 -0
  81. package/dist/floating.cjs.map +1 -0
  82. package/dist/floating.d.cts +106 -0
  83. package/dist/floating.d.ts +106 -0
  84. package/dist/floating.js +4 -0
  85. package/dist/floating.js.map +1 -0
  86. package/dist/form.cjs +144 -0
  87. package/dist/form.cjs.map +1 -0
  88. package/dist/form.d.cts +128 -0
  89. package/dist/form.d.ts +128 -0
  90. package/dist/form.js +3 -0
  91. package/dist/form.js.map +1 -0
  92. package/dist/i18n.cjs +112 -0
  93. package/dist/i18n.cjs.map +1 -0
  94. package/dist/i18n.d.cts +99 -0
  95. package/dist/i18n.d.ts +99 -0
  96. package/dist/i18n.js +3 -0
  97. package/dist/i18n.js.map +1 -0
  98. package/dist/index.cjs +18673 -0
  99. package/dist/index.cjs.map +1 -0
  100. package/dist/index.d.cts +8087 -0
  101. package/dist/index.d.ts +8087 -0
  102. package/dist/index.js +13525 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/layouts.cjs +392 -0
  105. package/dist/layouts.cjs.map +1 -0
  106. package/dist/layouts.d.cts +406 -0
  107. package/dist/layouts.d.ts +406 -0
  108. package/dist/layouts.js +5 -0
  109. package/dist/layouts.js.map +1 -0
  110. package/dist/machine.cjs +19 -0
  111. package/dist/machine.cjs.map +1 -0
  112. package/dist/machine.d.cts +18 -0
  113. package/dist/machine.d.ts +18 -0
  114. package/dist/machine.js +4 -0
  115. package/dist/machine.js.map +1 -0
  116. package/dist/modal-utils.cjs +170 -0
  117. package/dist/modal-utils.cjs.map +1 -0
  118. package/dist/modal-utils.d.cts +43 -0
  119. package/dist/modal-utils.d.ts +43 -0
  120. package/dist/modal-utils.js +3 -0
  121. package/dist/modal-utils.js.map +1 -0
  122. package/dist/motion.cjs +88 -0
  123. package/dist/motion.cjs.map +1 -0
  124. package/dist/motion.d.cts +43 -0
  125. package/dist/motion.d.ts +43 -0
  126. package/dist/motion.js +3 -0
  127. package/dist/motion.js.map +1 -0
  128. package/dist/provider.cjs +272 -0
  129. package/dist/provider.cjs.map +1 -0
  130. package/dist/provider.d.cts +130 -0
  131. package/dist/provider.d.ts +130 -0
  132. package/dist/provider.js +6 -0
  133. package/dist/provider.js.map +1 -0
  134. package/dist/resource.cjs +25 -0
  135. package/dist/resource.cjs.map +1 -0
  136. package/dist/resource.d.cts +17 -0
  137. package/dist/resource.d.ts +17 -0
  138. package/dist/resource.js +3 -0
  139. package/dist/resource.js.map +1 -0
  140. package/dist/skeletons.cjs +1659 -0
  141. package/dist/skeletons.cjs.map +1 -0
  142. package/dist/skeletons.d.cts +179 -0
  143. package/dist/skeletons.d.ts +179 -0
  144. package/dist/skeletons.js +7 -0
  145. package/dist/skeletons.js.map +1 -0
  146. package/dist/skins.cjs +138 -0
  147. package/dist/skins.cjs.map +1 -0
  148. package/dist/skins.d.cts +67 -0
  149. package/dist/skins.d.ts +67 -0
  150. package/dist/skins.js +3 -0
  151. package/dist/skins.js.map +1 -0
  152. package/dist/theme.cjs +106 -0
  153. package/dist/theme.cjs.map +1 -0
  154. package/dist/theme.d.cts +103 -0
  155. package/dist/theme.d.ts +103 -0
  156. package/dist/theme.js +3 -0
  157. package/dist/theme.js.map +1 -0
  158. package/dist/undo.cjs +51 -0
  159. package/dist/undo.cjs.map +1 -0
  160. package/dist/undo.d.cts +48 -0
  161. package/dist/undo.d.ts +48 -0
  162. package/dist/undo.js +3 -0
  163. package/dist/undo.js.map +1 -0
  164. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/useStore.ts","../src/theme/ThemeProvider.ts","../src/theme/useTheme.ts","../src/theme/useColorScheme.ts","../src/skins/SkinProvider.ts","../src/skins/useSkin.ts","../src/machine/useMachine.ts","../src/form/context.ts","../src/form/Form.ts","../src/form/useForm.ts","../src/form/useField.ts","../src/form/useFieldArray.ts","../src/i18n/context.ts","../src/i18n/I18nProvider.ts","../src/i18n/useI18n.ts","../src/async/useAsyncResource.ts","../src/async/usePaginatedResource.ts","../src/resource/useResourceController.ts","../src/data/useDataSource.ts","../src/data/useGroupedView.ts","../src/motion/usePrefersReducedMotion.ts","../src/motion/styles.ts","../src/motion/useDataState.ts","../src/layouts/SidebarLayout.ts","../src/layouts/HeaderLayout.ts","../src/primitives/icon/Icon.ts","../src/admin/NavMenu.ts","../src/primitives/breadcrumb/Breadcrumb.ts","../src/primitives/breadcrumb/BreadcrumbItem.ts","../src/admin/AdminBreadcrumb.ts","../src/admin/useTabsNav.ts","../src/primitives/dropdown/context.ts","../src/primitives/dropdown/Dropdown.ts","../src/primitives/slot/Slot.ts","../src/primitives/dropdown/DropdownTrigger.ts","../src/primitives/floating/useFloating.ts","../src/primitives/floating/useDismiss.ts","../src/primitives/dropdown/DropdownMenu.ts","../src/primitives/dropdown/DropdownItem.ts","../src/admin/AdminTabs.ts","../src/admin/useAdminShell.ts","../src/admin/AdminLayout.ts","../src/undo/useUndoStack.ts","../src/provider/context.ts","../src/provider/IrisProvider.ts","../src/provider/hooks.ts","../src/error-boundary/IrisErrorBoundary.ts","../src/primitives/button/styles.ts","../src/primitives/button/Button.ts","../src/primitives/popover/context.ts","../src/primitives/popover/Popover.ts","../src/primitives/popover/PopoverTrigger.ts","../src/primitives/popover/PopoverContent.ts","../src/primitives/tooltip/Tooltip.ts","../src/primitives/dialog/context.ts","../src/primitives/dialog/Dialog.ts","../src/primitives/dialog/DialogTrigger.ts","../src/primitives/modal-utils/useFocusTrap.ts","../src/primitives/modal-utils/useBodyScrollLock.ts","../src/primitives/dialog/DialogContent.ts","../src/primitives/drawer/context.ts","../src/primitives/drawer/Drawer.ts","../src/primitives/drawer/DrawerTrigger.ts","../src/primitives/drawer/DrawerContent.ts","../src/primitives/input/Input.ts","../src/primitives/textarea/Textarea.ts","../src/primitives/number-input/NumberInput.ts","../src/primitives/otp-input/OtpInput.ts","../src/primitives/rating/Rating.ts","../src/primitives/combobox/Combobox.ts","../src/primitives/password-input/PasswordInput.ts","../src/primitives/form-field/FormField.ts","../src/primitives/switch/Switch.ts","../src/primitives/checkbox/Checkbox.ts","../src/primitives/radio/Radio.ts","../src/primitives/list/List.ts","../src/primitives/select/Select.ts","../src/primitives/drag/useDrag.ts","../src/primitives/badge/Badge.ts","../src/primitives/avatar/Avatar.ts","../src/primitives/spinner/styles.ts","../src/primitives/spinner/Spinner.ts","../src/primitives/skeleton/styles.ts","../src/primitives/skeleton/Skeleton.ts","../src/primitives/progress/styles.ts","../src/primitives/progress/Progress.ts","../src/primitives/alert/Alert.ts","../src/primitives/banner/Banner.ts","../src/primitives/slider/Slider.ts","../src/primitives/pagination/Pagination.ts","../src/primitives/card/Card.ts","../src/primitives/divider/Divider.ts","../src/primitives/empty-state/EmptyState.ts","../src/primitives/chip/Chip.ts","../src/primitives/accordion/context.ts","../src/primitives/accordion/Accordion.ts","../src/primitives/accordion/AccordionItem.ts","../src/primitives/stepper/context.ts","../src/primitives/stepper/Stepper.ts","../src/primitives/stepper/StepperStep.ts","../src/primitives/toggle-group/context.ts","../src/primitives/toggle-group/ToggleGroupItem.ts","../src/primitives/toggle-group/ToggleGroup.ts","../src/primitives/kbd/Kbd.ts","../src/primitives/splitter/Splitter.ts","../src/primitives/resizer/Resizer.ts","../src/primitives/dragger/Dragger.ts","../src/primitives/virtual-scroll/VirtualScroll.ts","../src/primitives/table/Table.ts","../src/primitives/table/exportCsv.ts","../src/primitives/table/exportExcel.ts","../src/primitives/tabs/context.ts","../src/primitives/tabs/Tabs.ts","../src/primitives/tabs/TabsList.ts","../src/primitives/tabs/TabsTrigger.ts","../src/primitives/tabs/TabsContent.ts","../src/primitives/menu/context.ts","../src/primitives/menu/Menu.ts","../src/primitives/menu/MenuTrigger.ts","../src/primitives/menu/MenuContent.ts","../src/primitives/menu/MenuItem.ts","../src/primitives/menu/MenuSub.ts","../src/primitives/toast/store.ts","../src/primitives/toast/useToast.ts","../src/primitives/toast/ToastViewport.ts","../src/primitives/tree/Tree.ts","../src/primitives/timeline/Timeline.ts","../src/primitives/carousel/Carousel.ts","../src/primitives/statistic/Statistic.ts","../src/primitives/descriptions/Descriptions.ts","../src/primitives/transfer/Transfer.ts","../src/primitives/watermark/Watermark.ts","../src/primitives/back-top/BackTop.ts","../src/primitives/affix/Affix.ts","../src/primitives/result/Result.ts","../src/primitives/tree-select/TreeSelect.ts","../src/primitives/mentions/Mentions.ts","../src/primitives/cascader/Cascader.ts","../src/primitives/segmented/Segmented.ts","../src/primitives/image/Image.ts","../src/primitives/float-button/FloatButton.ts","../src/primitives/anchor/Anchor.ts","../src/primitives/countdown/Countdown.ts","../src/primitives/tour/Tour.ts","../src/primitives/tag-input/TagInput.ts","../src/primitives/copy-button/CopyButton.ts","../src/primitives/progress-circle/ProgressCircle.ts","../src/primitives/split-button/SplitButton.ts","../src/primitives/aspect-ratio/AspectRatio.ts","../src/primitives/visually-hidden/VisuallyHidden.ts","../src/primitives/scroll-area/ScrollArea.ts","../src/primitives/ribbon/Ribbon.ts","../src/primitives/gauge/Gauge.ts","../src/primitives/marquee/Marquee.ts","../src/primitives/masonry/Masonry.ts","../src/primitives/fieldset/Fieldset.ts","../src/primitives/toolbar/Toolbar.ts","../src/primitives/calendar/dateUtils.ts","../src/primitives/calendar/Calendar.ts","../src/primitives/date-picker/DatePicker.ts","../src/primitives/file-upload/FileUpload.ts","../src/primitives/range-slider/RangeSlider.ts","../src/primitives/color-picker/ColorPicker.ts","../src/primitives/command-palette/types.ts","../src/primitives/command-palette/CommandPalette.ts","../src/primitives/time-picker/TimePicker.ts","../src/primitives/date-range-picker/DateRangePicker.ts","../src/layouts/DashboardGrid.ts","../src/layouts/Stack.ts","../src/layouts/Container.ts","../src/layouts/Grid.ts","../src/skeletons/LoginTemplate.ts","../src/skeletons/DashboardTemplate.ts","../src/behaviors/Resizable.ts","../src/behaviors/Movable.ts","../src/behaviors/Hotkey.ts","../src/behaviors/ClickOutside.ts","../src/behaviors/Sortable.ts","../src/behaviors/LongPress.ts"],"names":["store","shallowRef","onScopeDispose","defineComponent","ref","applyTheme","applyDirection","onMounted","injectGlobalStyles","watch","onBeforeUnmount","provide","computed","inject","getColorScheme","watchColorScheme","applySkin","h","createFormStore","formatPath","getByPath","createI18n","localeDirection","createAsyncResource","createPaginatedResource","createResourceController","createDataSource","createGroupedView","resolveDataState","defaultIconRegistry","resolveThemedIcon","visibleNav","findNavPath","createExpansion","branchTrail","isBranch","firstLeaf","findNavNode","Fragment","createFloatingMachine","useId","composeEventHandlers","offsetMiddleware","flipMiddleware","shiftMiddleware","sizeMiddleware","arrowMiddleware","computePosition","autoUpdate","nextTick","nextEnabledIndex","matchTypeahead","Teleport","isClosable","toValue","createAdminShell","watchEffect","createUndoStack","undo","runPlugins","applyCssVars","onErrorCaptured","CSS","installed","createHoverIntent","SIZE_MAP","clamp","px","cloneVNode","createKeyboardNav","resolveSize","TONE_TO_VAR","decimalsOf","roundToStep","getDirection","getPageRange","onBeforeMount","createSelectionModel","createVirtualizer","flattenLeafColumns","buildHeaderMatrix","compareValues","flattenTree","withSortedChildren","t","createCellRange","nextGridCell","computeVirtualRange","aggregate","saveFile","toSpreadsheetXml","createStore","generateId","createAutoDismiss","createTreeSelection","Comment","pad","prefersReducedMotion","resolve","firstEnabledIndex","VALUE_FONT","copyText","COLOR","startOfMonth","clampDate","isSameMonth","buildMonthMatrix","getWeekdayNames","formatMonthYear","addMonths","addDays","isOutOfRange","startOfDay","endOfMonth","isSameDay","formatLocalISO","hexToRgba","rgbaToHsva","hsvaToRgba","rgbToHex","clamp01","matches","h12","h24","formatDisplay","toCssSpacing","ALL_HANDLES","HANDLE_CURSORS","handlePosition","onUpdated","createSortable","createLongPress"],"mappings":"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","file":"index.cjs","sourcesContent":["import { shallowRef, onScopeDispose, type ShallowRef } from 'vue'\nimport type { ReadonlyStore, Store } from '@iris-ui-kit/core'\n\n/**\n * Bridge a framework-agnostic `@iris-ui-kit/core` store into a Vue ref — updates on\n * every store emission. The mirror of React's `useSyncExternalStore`, Solid's\n * `createSignal`, and Svelte's `readable`. Seeds synchronously from\n * `store.getState()` (SSR-safe); detaches on scope dispose.\n */\nexport function useStore<T>(store: ReadonlyStore<T>): Readonly<ShallowRef<T>> {\n const state = shallowRef(store.getState()) as ShallowRef<T>\n onScopeDispose(store.subscribe((next) => (state.value = next)))\n return state\n}\n\n/**\n * Subscribe to a DERIVED slice of a core store — the ref updates only when\n * `selector(state)` changes per `equals` (default `Object.is`), not on every\n * store emission. Built on {@link Store.subscribeWith}.\n */\nexport function useStoreSelector<T, U>(\n store: Store<T>,\n selector: (state: T) => U,\n equals?: (a: U, b: U) => boolean,\n): Readonly<ShallowRef<U>> {\n const slice = shallowRef(selector(store.getState())) as ShallowRef<U>\n onScopeDispose(store.subscribeWith(selector, (v) => (slice.value = v), equals))\n return slice\n}\n","import {\n computed,\n defineComponent,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n watch,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type Ref,\n} from 'vue'\nimport {\n applyDirection,\n applyTheme,\n injectGlobalStyles,\n type ApplyDirectionResult,\n type ApplyThemeResult,\n type Direction,\n type ThemeStore,\n} from '@iris-ui-kit/theme'\nimport type { IrisTheme } from '@iris-ui-kit/tokens'\n\nexport interface IrisThemeContext {\n store: ThemeStore\n current: Ref<IrisTheme>\n dir: ComputedRef<Direction>\n}\n\nexport const IrisThemeKey: InjectionKey<IrisThemeContext> = Symbol('IrisTheme')\n\n/**\n * Renderless provider that:\n * 1. exposes the theme store to descendants via `provide`,\n * 2. applies the current theme to a target element on mount and on change,\n * 3. reverts the inline custom properties on unmount.\n *\n * `target` defaults to `document.documentElement`. Pass an element ref to\n * scope a theme to a subtree.\n */\nexport const ThemeProvider = defineComponent({\n name: 'IrisThemeProvider',\n props: {\n store: {\n type: Object as PropType<ThemeStore>,\n required: true,\n },\n target: {\n type: Object as PropType<HTMLElement | null>,\n default: null,\n },\n /** Writing direction; sets `dir` on the target for RTL. Default `'ltr'`. */\n dir: {\n type: String as PropType<Direction>,\n default: 'ltr',\n },\n /** CSP nonce for injected inline stylesheets. */\n cspNonce: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const current = ref(props.store.store.getState()) as Ref<IrisTheme>\n const unsubscribe = props.store.store.subscribe((next) => {\n current.value = next\n })\n\n let applied: ApplyThemeResult | null = null\n let dirApplied: ApplyDirectionResult | null = null\n\n const targetEl = () => props.target ?? document.documentElement\n\n const applyCurrent = () => {\n applied?.revert()\n applied = applyTheme(current.value, targetEl())\n }\n\n const applyDir = () => {\n dirApplied?.revert()\n dirApplied = applyDirection(props.dir, targetEl())\n }\n\n onMounted(() => {\n injectGlobalStyles(props.cspNonce)\n applyCurrent()\n applyDir()\n })\n\n watch(current, () => {\n if (applied) applyCurrent()\n })\n\n watch(\n () => props.dir,\n () => {\n if (dirApplied) applyDir()\n },\n )\n\n onBeforeUnmount(() => {\n unsubscribe()\n applied?.revert()\n applied = null\n dirApplied?.revert()\n dirApplied = null\n })\n\n provide(IrisThemeKey, { store: props.store, current, dir: computed(() => props.dir) })\n\n return () => slots.default?.()\n },\n})\n\nexport function useThemeContext(): IrisThemeContext {\n const ctx = inject(IrisThemeKey)\n if (!ctx) {\n throw new Error('[iris-ui] useTheme(): no <ThemeProvider> ancestor found')\n }\n return ctx\n}\n\n/**\n * Current writing direction (`'ltr'` / `'rtl'`) from the nearest\n * `<ThemeProvider>`, or a static `'ltr'` ref when there is none.\n */\nexport function useDirection(): ComputedRef<Direction> {\n const ctx = inject(IrisThemeKey, null)\n return ctx ? ctx.dir : computed(() => 'ltr' as Direction)\n}\n","import { computed, type ComputedRef } from 'vue'\nimport type { IrisTheme } from '@iris-ui-kit/tokens'\nimport { useThemeContext } from './ThemeProvider'\n\nexport interface UseThemeReturn {\n /** Reactive ref to the active theme. */\n theme: ComputedRef<IrisTheme>\n /** Switch by name or by passing a theme directly. */\n setTheme: (target: string | IrisTheme) => void\n /** Map of all themes registered with the store. */\n availableThemes: Record<string, IrisTheme>\n}\n\n/**\n * Read and write the current theme from anywhere inside a <ThemeProvider>.\n *\n * @example\n * const { theme, setTheme } = useTheme()\n * theme.value.colors['iris.primary']\n * setTheme('dark')\n */\nexport function useTheme(): UseThemeReturn {\n const ctx = useThemeContext()\n return {\n theme: computed(() => ctx.current.value),\n setTheme: ctx.store.setTheme,\n availableThemes: ctx.store.availableThemes,\n }\n}\n","import { onBeforeUnmount, ref, type Ref } from 'vue'\nimport { getColorScheme, watchColorScheme, type ColorScheme } from '@iris-ui-kit/theme'\n\n/**\n * Reactive system color scheme (`'light'` / `'dark'`) from\n * `prefers-color-scheme`. SSR-safe (reports `'light'` until matchMedia is\n * available). Wire it to a theme store to auto-follow the system:\n *\n * ```ts\n * const scheme = useColorScheme()\n * watch(scheme, (s) => store.setTheme(s === 'dark' ? 'dark' : 'light'), { immediate: true })\n * ```\n */\nexport function useColorScheme(): Ref<ColorScheme> {\n const scheme = ref<ColorScheme>(getColorScheme())\n const stop = watchColorScheme((s) => {\n scheme.value = s\n })\n onBeforeUnmount(stop)\n return scheme\n}\n","import {\n defineComponent,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n watch,\n type InjectionKey,\n type PropType,\n type Ref,\n} from 'vue'\nimport { injectGlobalStyles } from '@iris-ui-kit/theme'\nimport {\n applySkin,\n type ApplySkinResult,\n type ResolvedSkin,\n type SkinEngine,\n} from '@iris-ui-kit/skins'\n\nexport interface IrisSkinContext {\n engine: SkinEngine\n current: Ref<ResolvedSkin>\n}\n\nexport const IrisSkinKey: InjectionKey<IrisSkinContext> = Symbol('IrisSkin')\n\n/**\n * Renderless provider mirroring `<IrisThemeProvider>` for skins: subscribes to\n * the engine store, applies/reverts the resolved skin on the target element,\n * and provides the engine + current skin to descendants. Zero skin logic.\n */\nexport const SkinProvider = defineComponent({\n name: 'IrisSkinProvider',\n props: {\n engine: { type: Object as PropType<SkinEngine>, required: true },\n target: { type: Object as PropType<HTMLElement | null>, default: null },\n cspNonce: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n const current = ref(props.engine.current()) as Ref<ResolvedSkin>\n const unsubscribe = props.engine.subscribe((next) => {\n current.value = next\n })\n\n let applied: ApplySkinResult | null = null\n const targetEl = () => props.target ?? document.documentElement\n const apply = () => {\n applied?.revert()\n applied = applySkin(current.value, targetEl())\n }\n\n onMounted(() => {\n injectGlobalStyles(props.cspNonce)\n apply()\n })\n watch(current, () => {\n if (applied) apply()\n })\n onBeforeUnmount(() => {\n unsubscribe()\n applied?.revert()\n applied = null\n })\n\n provide(IrisSkinKey, { engine: props.engine, current })\n return () => slots.default?.()\n },\n})\n\nexport function useSkinContext(): IrisSkinContext {\n const ctx = inject(IrisSkinKey)\n if (!ctx) throw new Error('[iris-ui] useSkin(): no <SkinProvider> ancestor found')\n return ctx\n}\n","import type { ComputedRef } from 'vue'\nimport { computed } from 'vue'\nimport type { ResolvedSkin, Skin, SkinMode, SkinPatch, SkinError } from '@iris-ui-kit/skins'\nimport { useSkinContext } from './SkinProvider'\n\nexport interface UseSkinReturn {\n skin: ComputedRef<ResolvedSkin>\n setSkin: (id: string) => void\n loadSkin: (source: string | Skin) => Promise<ResolvedSkin>\n useFromCatalog: (id: string) => Promise<ResolvedSkin>\n patch: (overrides: SkinPatch) => void\n resetPatch: () => void\n setMode: (mode: SkinMode) => void\n getMode: () => SkinMode\n /** Logical selected id (pre system-variant remap) — e.g. 'auto' while following the system. */\n getActiveId: () => string\n availableSkins: () => Skin[]\n errors: () => SkinError[]\n}\n\n/** Read + control the active skin from anywhere inside a `<SkinProvider>`. */\nexport function useSkin(): UseSkinReturn {\n const { engine, current } = useSkinContext()\n return {\n skin: computed(() => current.value),\n setSkin: engine.setSkin,\n loadSkin: engine.loadSkin,\n useFromCatalog: engine.useFromCatalog,\n patch: engine.patch,\n resetPatch: engine.resetPatch,\n setMode: engine.setMode,\n getMode: engine.getMode,\n getActiveId: engine.getActiveId,\n availableSkins: engine.availableSkins,\n errors: engine.errors,\n }\n}\n","import { onBeforeUnmount, ref, type Ref } from 'vue'\nimport type { Machine, MachineEvent, MachineState } from '@iris-ui-kit/core'\n\n/**\n * Bridge a framework-agnostic `Machine` into Vue reactivity.\n *\n * Returns a reactive ref of the current `{ value, context }` state and a\n * stable `send` function. Subscription is created eagerly and cleaned up on\n * unmount, so this hook is safe to call from any component's `setup()`.\n *\n * No primitive consumes this yet (Phase 0 ships the bridge for Phase 1).\n */\nexport function useMachine<TState extends string, TContext, TEvent extends MachineEvent>(\n machine: Machine<TState, TContext, TEvent>,\n): {\n state: Ref<MachineState<TState, TContext>>\n send: (event: TEvent) => void\n} {\n const state = ref(machine.store.getState()) as Ref<MachineState<TState, TContext>>\n const unsubscribe = machine.store.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(() => {\n unsubscribe()\n })\n return { state, send: machine.send }\n}\n","import { inject, type InjectionKey } from 'vue'\nimport type { FormStore, FormValues } from '@iris-ui-kit/core'\n\n/**\n * Provides the active form's {@link FormStore} to descendant fields so\n * `useField` can bind without prop drilling. The generic is erased at the\n * injection boundary; `useField<T>` re-applies the value type at the call site.\n */\nexport const FormInjectionKey: InjectionKey<FormStore<FormValues>> = Symbol('IrisForm')\n\nexport function useFormContext(): FormStore<FormValues> {\n const form = inject(FormInjectionKey, null)\n if (!form) {\n throw new Error('useField / useFormContext must be used within an <IrisForm>')\n }\n return form\n}\n","import { defineComponent, h, provide, ref, type PropType } from 'vue'\nimport type { FormStore, FormValues } from '@iris-ui-kit/core'\nimport { FormInjectionKey } from './context'\n\n/** Focus (and best-effort scroll to) the first errored named control in DOM order. */\nfunction focusFirstError(\n formEl: HTMLElement | null,\n errors: Record<string, string | undefined>,\n): void {\n if (!formEl) return\n const keys = Object.keys(errors)\n if (keys.length === 0) return\n const controls = formEl.querySelectorAll<HTMLElement>(\n 'input[name], select[name], textarea[name], [data-iris-field]',\n )\n for (const el of Array.from(controls)) {\n const name = el.getAttribute('name') ?? el.getAttribute('data-iris-field')\n if (name && keys.includes(name)) {\n el.focus()\n try {\n el.scrollIntoView({ block: 'center' })\n } catch {\n /* scrollIntoView is unavailable in jsdom — focus is the contract */\n }\n return\n }\n }\n}\n\n/**\n * Provides the form store to descendant `useField` calls and wires the native\n * `<form>` submit to `handleSubmit` (with `preventDefault`). Composition:\n *\n * ```html\n * <IrisForm :form=\"f.form\">\n * <IrisFormField label=\"Email\"><IrisInput v-bind=\"email.fieldProps.value\" /></IrisFormField>\n * <IrisButton type=\"submit\" :disabled=\"f.isSubmitting.value\">Save</IrisButton>\n * </IrisForm>\n * ```\n */\nexport const IrisForm = defineComponent({\n name: 'IrisForm',\n props: {\n /** The store from `useForm(...).form`. */\n form: {\n type: Object as PropType<FormStore<FormValues>>,\n required: true,\n },\n },\n setup(props, { slots }) {\n provide(FormInjectionKey, props.form)\n const formRef = ref<HTMLElement | null>(null)\n return () =>\n h(\n 'form',\n {\n ref: formRef,\n 'data-iris-form': '',\n onSubmit: (event: Event) => {\n event.preventDefault()\n // On a failed submit, move focus to the first errored field (a11y).\n void props.form\n .handleSubmit()\n .then(() => focusFirstError(formRef.value, props.form.getState().errors))\n },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, onBeforeUnmount, ref, type ComputedRef, type Ref } from 'vue'\nimport {\n createFormStore,\n type FieldErrors,\n type FieldFlags,\n type FormConfig,\n type FormState,\n type FormStore,\n type FormValues,\n} from '@iris-ui-kit/core'\n\nexport interface UseFormReturn<V extends FormValues> {\n /** The form store — pass to `<IrisForm :form=\"...\">`. */\n form: FormStore<V>\n /** The full reactive state snapshot. */\n state: Ref<FormState<V>>\n values: ComputedRef<V>\n errors: ComputedRef<FieldErrors<V>>\n touched: ComputedRef<FieldFlags<V>>\n dirty: ComputedRef<FieldFlags<V>>\n isSubmitting: ComputedRef<boolean>\n isValidating: ComputedRef<boolean>\n submitCount: ComputedRef<number>\n isValid: ComputedRef<boolean>\n setFieldValue: FormStore<V>['setFieldValue']\n setValues: FormStore<V>['setValues']\n setFieldTouched: FormStore<V>['setFieldTouched']\n setFieldError: FormStore<V>['setFieldError']\n setErrors: FormStore<V>['setErrors']\n validateField: FormStore<V>['validateField']\n validateForm: FormStore<V>['validateForm']\n handleSubmit: FormStore<V>['handleSubmit']\n reset: FormStore<V>['reset']\n}\n\n/**\n * Vue binding for the framework-agnostic form engine. Creates the store in\n * `setup()` (runs once) and bridges it into Vue reactivity via a `ref` updated\n * on each store change, cleaned up on unmount. Because `setup` runs once,\n * `onSubmit` / `validate` closures stay live against reactive state — no\n * stale-callback handling is needed (unlike the React adapter).\n */\nexport function useForm<V extends FormValues>(config: FormConfig<V>): UseFormReturn<V> {\n const form = createFormStore(config)\n const state = ref(form.getState()) as Ref<FormState<V>>\n const unsubscribe = form.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n return {\n form,\n state,\n values: computed(() => state.value.values),\n errors: computed(() => state.value.errors),\n touched: computed(() => state.value.touched),\n dirty: computed(() => state.value.dirty),\n isSubmitting: computed(() => state.value.isSubmitting),\n isValidating: computed(() => state.value.isValidating),\n submitCount: computed(() => state.value.submitCount),\n isValid: computed(() => Object.keys(state.value.errors).length === 0),\n setFieldValue: form.setFieldValue,\n setValues: form.setValues,\n setFieldTouched: form.setFieldTouched,\n setFieldError: form.setFieldError,\n setErrors: form.setErrors,\n validateField: form.validateField,\n validateForm: form.validateForm,\n handleSubmit: form.handleSubmit,\n reset: form.reset,\n }\n}\n","import { computed, onBeforeUnmount, ref, type ComputedRef, type Ref } from 'vue'\nimport { formatPath, getByPath, type FormState, type FormValues } from '@iris-ui-kit/core'\nimport { useFormContext } from './context'\n\nexport interface FieldBindProps {\n modelValue: unknown\n 'onUpdate:modelValue': (value: unknown) => void\n invalid: boolean\n onBlur: () => void\n}\n\nexport interface UseFieldReturn<T> {\n name: string\n value: ComputedRef<T>\n error: ComputedRef<string | undefined>\n touched: ComputedRef<boolean>\n dirty: ComputedRef<boolean>\n setValue: (value: T) => void\n setTouched: (touched?: boolean) => void\n /**\n * Bundle for `v-bind` onto a v-model'd Iris control (`IrisInput`,\n * `IrisSelect`, …): wires `modelValue` / `update:modelValue` / `invalid` /\n * `blur`. Use `value` + `setValue` directly for bespoke bindings.\n */\n fieldProps: ComputedRef<FieldBindProps>\n}\n\n/**\n * Binds a single field to the surrounding `<IrisForm>`. `T` is the value type\n * at the call site (the injection erases the form's generic).\n *\n * `name` may be a flat top-level key OR a nested PATH (`'address.city'`,\n * `'items[2].sku'`); a flat key is a 1-segment path and stays back-compatible\n * (v3 R19).\n */\nexport function useField<T = unknown>(name: string): UseFieldReturn<T> {\n const form = useFormContext()\n const state = ref(form.getState()) as Ref<FormState<FormValues>>\n const unsubscribe = form.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n // Canonical key for per-field state lookups (a flat key maps to itself).\n const key = formatPath(name)\n const value = computed(() => getByPath(state.value.values, name) as T)\n const error = computed(() => state.value.errors[key])\n\n return {\n name,\n value,\n error,\n touched: computed(() => Boolean(state.value.touched[key])),\n dirty: computed(() => Boolean(state.value.dirty[key])),\n setValue: (next) => form.setFieldValue(name, next as never),\n setTouched: (touched = true) => form.setFieldTouched(name, touched),\n fieldProps: computed(() => ({\n modelValue: value.value,\n 'onUpdate:modelValue': (next: unknown) => form.setFieldValue(name, next as never),\n invalid: Boolean(error.value),\n onBlur: () => form.setFieldTouched(name, true),\n })),\n }\n}\n","import { computed, onBeforeUnmount, ref, type ComputedRef, type Ref } from 'vue'\nimport type { FormState, FormValues } from '@iris-ui-kit/core'\nimport { useFormContext } from './context'\n\nexport interface UseFieldArrayReturn<T> {\n name: string\n /** Current array value (reactive). */\n fields: ComputedRef<T[]>\n /** Append an item. */\n push: (item: T) => void\n /** Remove the item at `index`. */\n remove: (index: number) => void\n /** Insert `item` at `index` (shifting the rest right). */\n insert: (index: number, item: T) => void\n /** Move the item from `from` to `to`. */\n move: (from: number, to: number) => void\n /** Replace the whole array. */\n replace: (items: T[]) => void\n}\n\n/**\n * Manage a dynamic array field (repeatable rows) inside an `<IrisForm>`. Mutators\n * delegate to the core {@link FormStore} array helpers (`arrayPush`/`arrayInsert`/\n * `arrayRemove`/`arrayMove`), which RE-KEY each element's error/touched/dirty/\n * validating state across the mutation — so a row's per-element validation state\n * FOLLOWS the row when rows are removed or reordered (removing `items[0]` shifts\n * `items[2]`'s error down to `items[1]`). `replace` swaps the whole array.\n */\nexport function useFieldArray<T = unknown>(name: string): UseFieldArrayReturn<T> {\n const form = useFormContext()\n const state = ref(form.getState()) as Ref<FormState<FormValues>>\n const unsubscribe = form.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n return {\n name,\n fields: computed(\n () => (Array.isArray(state.value.values[name]) ? state.value.values[name] : []) as T[],\n ),\n push: (item) => form.arrayPush(name as never, item as never),\n remove: (index) => form.arrayRemove(name as never, index),\n insert: (index, item) => form.arrayInsert(name as never, index, item as never),\n move: (from, to) => form.arrayMove(name as never, from, to),\n replace: (items) => form.setFieldValue(name, items as never),\n }\n}\n","import { type InjectionKey } from 'vue'\nimport type { I18n } from '@iris-ui-kit/core'\n\n/** Injection key carrying the active {@link I18n} instance to `useI18n`. */\nexport const I18nInjectionKey: InjectionKey<I18n> = Symbol('IrisI18n')\n","import { defineComponent, onScopeDispose, provide, watch, type PropType } from 'vue'\nimport { createI18n, localeDirection, type I18n, type I18nMessages } from '@iris-ui-kit/core'\nimport { applyDirection } from '@iris-ui-kit/theme'\nimport { I18nInjectionKey } from './context'\n\n/**\n * Makes a locale + message dictionary available to descendant components via\n * `useI18n`. Pass `locale` / `messages` (an instance is created and kept in\n * sync) or a pre-built `i18n` instance you control externally. Renderless:\n * renders its default slot.\n */\nexport const IrisI18nProvider = defineComponent({\n name: 'IrisI18nProvider',\n props: {\n locale: { type: String, default: undefined },\n messages: { type: Object as PropType<I18nMessages>, default: undefined },\n i18n: { type: Object as PropType<I18n>, default: undefined },\n /**\n * When set, the locale's writing direction ({@link localeDirection}) is\n * applied to `directionTarget` (`dir` + `data-iris-dir`) and `<html lang>`\n * is set whenever `locale` changes — so \"set locale → flip direction +\n * announce language\" needs no manual wiring. Off by default so it never\n * fights an explicit `<ThemeProvider dir>`. Reverts on unmount.\n */\n autoDirection: { type: Boolean, default: false },\n /** Element to receive dir/lang when `autoDirection` is set. Defaults to `document.documentElement`. */\n directionTarget: { type: Object as PropType<HTMLElement | null>, default: undefined },\n },\n setup(props, { slots }) {\n const instance = props.i18n ?? createI18n({ locale: props.locale, messages: props.messages })\n provide(I18nInjectionKey, instance)\n\n if (!props.i18n) {\n watch(\n () => props.locale,\n (locale) => {\n if (locale) instance.setLocale(locale)\n },\n )\n watch(\n () => props.messages,\n (messages) => {\n if (messages) instance.setMessages(messages)\n },\n )\n }\n\n // Auto-apply writing direction + `lang` from the active locale (opt-in).\n let revertDirection: (() => void) | null = null\n watch(\n () => [props.autoDirection, props.locale, props.directionTarget] as const,\n ([autoDirection, locale]) => {\n revertDirection?.()\n revertDirection = null\n if (!autoDirection || !locale || typeof document === 'undefined') return\n const el = props.directionTarget ?? document.documentElement\n const applied = applyDirection(localeDirection(locale), el)\n const prevLang = el.getAttribute('lang')\n el.setAttribute('lang', locale)\n revertDirection = () => {\n applied.revert()\n if (prevLang === null) el.removeAttribute('lang')\n else el.setAttribute('lang', prevLang)\n }\n },\n { immediate: true },\n )\n onScopeDispose(() => {\n revertDirection?.()\n revertDirection = null\n })\n\n return () => slots.default?.()\n },\n})\n","import { computed, inject, onBeforeUnmount, ref, type ComputedRef, type Ref } from 'vue'\nimport { createI18n, type I18n, type I18nState } from '@iris-ui-kit/core'\nimport { I18nInjectionKey } from './context'\n\nexport interface UseI18nReturn {\n locale: ComputedRef<string>\n t: I18n['t']\n formatDate: I18n['formatDate']\n formatNumber: I18n['formatNumber']\n formatRelativeTime: I18n['formatRelativeTime']\n setLocale: I18n['setLocale']\n setMessages: I18n['setMessages']\n}\n\n// Shared fallback so components can call `useI18n()` without an enclosing\n// provider — they get English defaults rather than throwing.\nlet fallbackI18n: I18n | null = null\nfunction getFallback(): I18n {\n if (fallbackI18n === null) fallbackI18n = createI18n()\n return fallbackI18n\n}\n\n/**\n * Reactive access to the active locale + translation/formatting helpers.\n * Works with or without an `<IrisI18nProvider>` (falls back to English\n * defaults). `t` / formatters read the live locale at call time, and `locale`\n * is a reactive ref so templates re-render on change.\n */\nexport function useI18n(): UseI18nReturn {\n const i18n = inject(I18nInjectionKey, null) ?? getFallback()\n const state = ref(i18n.getState()) as Ref<I18nState>\n const unsubscribe = i18n.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n return {\n locale: computed(() => state.value.locale),\n t: (key, params) => {\n void state.value.locale\n return i18n.t(key, params)\n },\n formatDate: (value, options) => {\n void state.value.locale\n return i18n.formatDate(value, options)\n },\n formatNumber: (value, options) => {\n void state.value.locale\n return i18n.formatNumber(value, options)\n },\n formatRelativeTime: (value, unit, options) => {\n void state.value.locale\n return i18n.formatRelativeTime(value, unit, options)\n },\n setLocale: i18n.setLocale,\n setMessages: i18n.setMessages,\n }\n}\n","import { computed, onBeforeUnmount, onMounted, ref, type ComputedRef, type Ref } from 'vue'\nimport {\n createAsyncResource,\n type AsyncResource,\n type AsyncResourceConfig,\n type AsyncState,\n type AsyncStatus,\n} from '@iris-ui-kit/core'\n\nexport interface UseAsyncResourceOptions<T> extends AsyncResourceConfig<T> {\n /** Run `load()` (no params) once on mount. Default `false`. */\n immediate?: boolean\n}\n\nexport interface UseAsyncResourceReturn<T, P extends unknown[]> {\n status: ComputedRef<AsyncStatus>\n data: ComputedRef<T | undefined>\n error: ComputedRef<unknown>\n isLoading: ComputedRef<boolean>\n isError: ComputedRef<boolean>\n load: AsyncResource<T, P>['load']\n reload: AsyncResource<T, P>['reload']\n mutate: AsyncResource<T, P>['mutate']\n cancel: AsyncResource<T, P>['cancel']\n reset: AsyncResource<T, P>['reset']\n}\n\n/**\n * Vue binding for the framework-agnostic async resource. Creates the resource\n * in `setup()` (runs once, so the fetcher closure stays live) and bridges its\n * state into computed refs.\n *\n * ```ts\n * const users = useAsyncResource(() => api.listUsers(), { immediate: true })\n * // <IrisTable :data=\"users.data.value ?? []\" :loading=\"users.isLoading.value\" />\n * ```\n */\nexport function useAsyncResource<T, P extends unknown[] = []>(\n fetcher: (...params: P) => Promise<T>,\n options: UseAsyncResourceOptions<T> = {},\n): UseAsyncResourceReturn<T, P> {\n const config: AsyncResourceConfig<T> =\n 'initialData' in options ? { initialData: options.initialData } : {}\n const resource = createAsyncResource<T, P>(fetcher, config)\n\n const state = ref(resource.getState()) as Ref<AsyncState<T>>\n const unsubscribe = resource.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(() => {\n unsubscribe()\n // Abort any in-flight request on unmount so it can't write back into an\n // unmounted component (and cancels the underlying request when the fetcher\n // honors `signal`). Idempotent and safe with no in-flight load.\n resource.cancel()\n })\n\n if (options.immediate) {\n onMounted(() => {\n void resource.load(...([] as unknown as P))\n })\n }\n\n return {\n status: computed(() => state.value.status),\n data: computed(() => state.value.data),\n error: computed(() => state.value.error),\n isLoading: computed(() => state.value.status === 'loading'),\n isError: computed(() => state.value.status === 'error'),\n load: resource.load,\n reload: resource.reload,\n mutate: resource.mutate,\n cancel: resource.cancel,\n reset: resource.reset,\n }\n}\n","import { computed, onBeforeUnmount, onMounted, ref, type ComputedRef, type Ref } from 'vue'\nimport {\n createPaginatedResource,\n type PageQuery,\n type PageResult,\n type PaginatedResource,\n type PaginatedState,\n type PaginationMode,\n} from '@iris-ui-kit/core'\n\nexport interface UsePaginatedResourceOptions {\n pageSize?: number\n mode?: PaginationMode\n /** Load the first page on mount (page 1, or `loadMore` in infinite mode). */\n immediate?: boolean\n}\n\nexport interface UsePaginatedResourceReturn<T> {\n status: ComputedRef<PaginatedState<T>['status']>\n items: ComputedRef<T[]>\n page: ComputedRef<number>\n pageSize: ComputedRef<number>\n total: ComputedRef<number | undefined>\n error: ComputedRef<unknown>\n isLoading: ComputedRef<boolean>\n isError: ComputedRef<boolean>\n hasMore: ComputedRef<boolean>\n goToPage: PaginatedResource<T>['goToPage']\n loadMore: PaginatedResource<T>['loadMore']\n refresh: PaginatedResource<T>['refresh']\n setPageSize: PaginatedResource<T>['setPageSize']\n}\n\n/**\n * Vue binding for the server-side pagination resource. Created in `setup()`\n * (fetcher closure stays live) and bridged to computed refs.\n */\nexport function usePaginatedResource<T>(\n fetcher: (query: PageQuery) => Promise<PageResult<T>>,\n options: UsePaginatedResourceOptions = {},\n): UsePaginatedResourceReturn<T> {\n const resource = createPaginatedResource<T>(fetcher, {\n pageSize: options.pageSize,\n mode: options.mode,\n })\n\n const state = ref(resource.getState()) as Ref<PaginatedState<T>>\n const unsubscribe = resource.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n if (options.immediate) {\n onMounted(() => {\n void (options.mode === 'infinite' ? resource.loadMore() : resource.goToPage(1))\n })\n }\n\n return {\n status: computed(() => state.value.status),\n items: computed(() => state.value.items),\n page: computed(() => state.value.page),\n pageSize: computed(() => state.value.pageSize),\n total: computed(() => state.value.total),\n error: computed(() => state.value.error),\n isLoading: computed(() => state.value.status === 'loading'),\n isError: computed(() => state.value.status === 'error'),\n // Touch state so this recomputes on every store change; hasMore() then\n // reads the resource's fresh internal batch state.\n hasMore: computed(() => {\n void state.value\n return resource.hasMore()\n }),\n goToPage: resource.goToPage,\n loadMore: resource.loadMore,\n refresh: resource.refresh,\n setPageSize: resource.setPageSize,\n }\n}\n","import { onBeforeUnmount, shallowRef, type ShallowRef } from 'vue'\nimport {\n createResourceController,\n type ResourceController,\n type ResourceControllerConfig,\n type ResourceState,\n} from '@iris-ui-kit/core'\n\nexport interface UseResourceController<T> extends ResourceController<T> {\n /** The live resource state as a reactive ref (rows, total, page, loading, selectedKeys). */\n state: ShallowRef<ResourceState<T>>\n}\n\n/**\n * Vue bridge over the framework-agnostic {@link createResourceController} (L4\n * CRUD list composite). Creates the controller once in `setup()`, mirrors its\n * store into a `shallowRef`, and returns the controller plus that live `state`.\n * A ~15-line thin bridge — all logic lives in `@iris-ui-kit/core`.\n */\nexport function useResourceController<T>(\n config: ResourceControllerConfig<T>,\n): UseResourceController<T> {\n const controller = createResourceController(config)\n const state = shallowRef(controller.getState())\n onBeforeUnmount(controller.subscribe((next) => (state.value = next)))\n // Abort any in-flight fetch + detach the controller's internal subscriptions\n // on unmount (a late response must not write back to a torn-down instance).\n onBeforeUnmount(() => controller.destroy())\n return { ...controller, state }\n}\n","import { onMounted, onScopeDispose, type ShallowRef } from 'vue'\nimport {\n createDataSource,\n type DataSourceController,\n type DataSourceConfig,\n type DataSourceState,\n} from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\n\nexport interface UseDataSource<T> extends DataSourceController<T> {\n /**\n * The live data-source state as a reactive ref: rows, total, page/pageSize,\n * sort/multiSort, filters/filterRules, loading/loadingMore, hasMore,\n * selectedKeys, and the per-row pendingRows/rowErrors.\n */\n state: ShallowRef<DataSourceState<T>>\n}\n\n/**\n * Vue bridge over the framework-agnostic {@link createDataSource} — the unified\n * data engine (paged/infinite + multi-sort + typed filters + selection +\n * per-row + optimistic mutate). Creates the controller once in `setup()`,\n * mirrors its store into a reactive ref, and returns the controller plus its\n * live `state`. A thin bridge — all logic lives in `@iris-ui-kit/core`.\n *\n * Constructed with `immediate: false` so no fetch fires during `setup()`; the\n * initial load is kicked from `onMounted` and the controller is torn down on\n * scope dispose (aborting any in-flight request) so a late response never\n * writes back to a torn-down instance.\n */\nexport function useDataSource<T>(config: DataSourceConfig<T>): UseDataSource<T> {\n const controller = createDataSource({ ...config, immediate: false })\n const immediate = config.immediate !== false\n\n onMounted(() => {\n if (immediate) void controller.load()\n })\n // Abort any in-flight fetch + detach the controller's internal subscriptions\n // on unmount (a late response must not write back to a torn-down instance).\n onScopeDispose(() => controller.destroy())\n\n const state = useStore(controller.store)\n return { ...controller, state }\n}\n","import { computed, type ComputedRef } from 'vue'\nimport {\n createGroupedView,\n type GroupedViewConfig,\n type GroupedViewState,\n type GroupedViewStore,\n} from '@iris-ui-kit/core'\nimport type { DataViewColumn } from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\n\nexport interface UseGroupedView<Row, K = string> {\n store: ReturnType<typeof createGroupedView<Row, K>>['store']\n setRows: (rows: readonly Row[], columns?: readonly DataViewColumn<Row>[]) => void\n toggleGroup: (key: K) => void\n expandGroup: (key: K) => void\n collapseGroup: (key: K) => void\n expandAll: () => void\n collapseAll: () => void\n /** Reactive live grouped-view state. */\n state: ComputedRef<GroupedViewState<Row, K>>\n setConfig: (partial: Partial<GroupedViewConfig<Row, K>>) => void\n}\n\n/**\n * Vue bridge over the framework-agnostic {@link createGroupedView}.\n * Creates the controller once, subscribes its store to a reactive ref,\n * and returns the controller plus a computed `state`.\n */\nexport function useGroupedView<Row, K = string>(\n config: GroupedViewConfig<Row, K>,\n): UseGroupedView<Row, K> {\n const controller = createGroupedView<Row, K>(config)\n const storeRef = useStore(controller.store)\n const state = computed(() => {\n const s = storeRef.value as GroupedViewStore<Row, K>\n return s.state\n })\n\n return {\n store: controller.store,\n setRows: (rows, columns) => controller.setRows(rows, columns),\n toggleGroup: (key) => controller.toggleGroup(key),\n expandGroup: (key) => controller.expandGroup(key),\n collapseGroup: (key) => controller.collapseGroup(key),\n expandAll: () => controller.expandAll(),\n collapseAll: () => controller.collapseAll(),\n state,\n setConfig: (partial) => controller.setConfig(partial),\n }\n}\n","import { onBeforeUnmount, onMounted, ref, type Ref } from 'vue'\n\nconst QUERY = '(prefers-reduced-motion: reduce)'\n\nfunction read(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false\n return window.matchMedia(QUERY).matches\n}\n\n/**\n * Reactive `prefers-reduced-motion` flag. Returns `false` where `matchMedia`\n * is unavailable (SSR / older jsdom) so animation is the safe default only when\n * the user has not asked to reduce it.\n */\nexport function usePrefersReducedMotion(): Ref<boolean> {\n const reduced = ref<boolean>(read())\n let mq: MediaQueryList | null = null\n const onChange = () => {\n if (mq) reduced.value = mq.matches\n }\n\n onMounted(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return\n mq = window.matchMedia(QUERY)\n reduced.value = mq.matches\n mq.addEventListener?.('change', onChange)\n })\n onBeforeUnmount(() => {\n mq?.removeEventListener?.('change', onChange)\n })\n\n return reduced\n}\n","export const __DATA_STATE_STYLE_ID = 'iris-data-state-styles'\n\n/** Class applied to a state node so its entry cross-fades in. */\nexport const DATA_STATE_CLASS = 'iris-data-state-enter'\n\nconst CSS = `\n@keyframes iris-data-state-enter {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: none; }\n}\n.${DATA_STATE_CLASS} {\n animation: iris-data-state-enter var(--iris-duration-md, 200ms) ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .${DATA_STATE_CLASS} { animation: none; }\n}\n`.trim()\n\nlet installed = false\n\n/** Idempotently inject the data-state enter keyframes (SSR-safe no-op). */\nexport function installDataStateStyles(): void {\n if (installed) return\n if (typeof document === 'undefined') return\n if (document.getElementById(__DATA_STATE_STYLE_ID)) {\n installed = true\n return\n }\n const el = document.createElement('style')\n el.id = __DATA_STATE_STYLE_ID\n el.textContent = CSS\n document.head.appendChild(el)\n installed = true\n}\n\nexport function __resetDataStateStyles(): void {\n installed = false\n if (typeof document !== 'undefined') {\n document.getElementById(__DATA_STATE_STYLE_ID)?.remove()\n }\n}\n","import { computed, onMounted, type ComputedRef } from 'vue'\nimport { resolveDataState, type DataState, type DataStateInput } from '@iris-ui-kit/core'\nimport { DATA_STATE_CLASS, installDataStateStyles } from './styles'\nimport { usePrefersReducedMotion } from './usePrefersReducedMotion'\n\nexport interface DataStateNodeProps {\n class: string\n 'data-iris-state': DataState\n}\n\nexport interface UseDataStateReturn {\n /** Resolved state (`error → loading → empty → content` precedence). */\n state: ComputedRef<DataState>\n /** `true` when the host should render its real content. */\n isContent: ComputedRef<boolean>\n /** Use as the vnode `key` of the state node so the enter animation replays on each transition. */\n stateKey: ComputedRef<DataState>\n /** Spread onto the rendered loading/error/empty node. */\n stateProps: ComputedRef<DataStateNodeProps>\n}\n\n/**\n * State-transition + entry-animation composable for data components. Resolves\n * the active {@link DataState} from a reactive `{ loading, error, empty }`\n * getter, and returns props for the state node that (a) re-key on every\n * transition so the cross-fade replays and (b) drop the animation class when\n * the user prefers reduced motion.\n *\n * The framework-agnostic precedence lives in `@iris-ui-kit/core`'s\n * {@link resolveDataState}; this composable is the thin Vue animation bridge.\n */\nexport function useDataState(input: () => DataStateInput): UseDataStateReturn {\n onMounted(installDataStateStyles)\n const reduced = usePrefersReducedMotion()\n const state = computed(() => resolveDataState(input()))\n return {\n state,\n isContent: computed(() => state.value === 'content'),\n stateKey: state,\n stateProps: computed(() => ({\n class: reduced.value ? '' : DATA_STATE_CLASS,\n 'data-iris-state': state.value,\n })),\n }\n}\n","import { computed, defineComponent, h, ref, watch } from 'vue'\n\n/**\n * Two-column layout with a collapsible sidebar.\n *\n * Slots:\n * - `sidebar` — content rendered in the sidebar (kept mounted across collapses).\n * - `default` — the main content area.\n *\n * Use `:collapsed` for controlled mode or `:default-collapsed` for the\n * uncontrolled initial state. When collapsed, the sidebar shrinks to\n * `:collapsed-width` so icon-only navigation still fits.\n */\nexport const IrisSidebarLayout = defineComponent({\n name: 'IrisSidebarLayout',\n inheritAttrs: false,\n props: {\n collapsed: { type: Boolean, default: undefined },\n defaultCollapsed: { type: Boolean, default: false },\n /** Sidebar width when expanded (px or CSS length). */\n width: { type: [Number, String], default: 240 },\n /** Sidebar width when collapsed. */\n collapsedWidth: { type: [Number, String], default: 60 },\n /** Sidebar position. */\n side: { type: String as () => 'left' | 'right', default: 'left' },\n },\n emits: {\n 'update:collapsed': (_value: boolean) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const isControlled = computed(() => props.collapsed !== undefined)\n const internalCollapsed = ref(props.defaultCollapsed)\n const collapsed = computed(() =>\n isControlled.value ? Boolean(props.collapsed) : internalCollapsed.value,\n )\n\n // Sync controlled prop changes into internal state on first run so a later\n // detach to uncontrolled mode preserves the last-known value.\n watch(\n () => props.collapsed,\n (value) => {\n if (value !== undefined) internalCollapsed.value = value\n },\n )\n\n const setCollapsed = (value: boolean) => {\n if (!isControlled.value) internalCollapsed.value = value\n emit('update:collapsed', value)\n }\n\n const asLen = (v: number | string) => (typeof v === 'number' ? `${v}px` : v)\n\n return () => {\n const sidebarStyle: Record<string, string> = {\n width: collapsed.value ? asLen(props.collapsedWidth) : asLen(props.width),\n flexShrink: '0',\n background: 'var(--iris-surface)',\n borderRight: props.side === 'left' ? '1px solid var(--iris-border)' : 'none',\n borderLeft: props.side === 'right' ? '1px solid var(--iris-border)' : 'none',\n transition: 'width 180ms ease',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }\n const mainStyle: Record<string, string> = {\n flex: '1',\n minWidth: '0',\n overflow: 'auto',\n background: 'var(--iris-background)',\n }\n const direction = props.side === 'right' ? 'row-reverse' : 'row'\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-sidebar-layout': '',\n 'data-collapsed': collapsed.value ? '' : undefined,\n 'data-side': props.side,\n style: {\n display: 'flex',\n flexDirection: direction,\n width: '100%',\n height: '100%',\n minHeight: '0',\n color: 'var(--iris-foreground)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'aside',\n {\n role: 'complementary',\n 'data-iris-sidebar': '',\n 'data-collapsed': collapsed.value ? '' : undefined,\n style: sidebarStyle,\n },\n slots.sidebar?.({ collapsed: collapsed.value, setCollapsed }),\n ),\n h('div', { 'data-iris-sidebar-main': '', style: mainStyle }, slots.default?.()),\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\n/**\n * Two-region vertical layout: a sticky header on top, scrollable main below.\n *\n * Slots:\n * - `header` — fixed at top.\n * - `footer` — optional fixed at bottom.\n * - `default` — scrollable main region.\n */\nexport const IrisHeaderLayout = defineComponent({\n name: 'IrisHeaderLayout',\n inheritAttrs: false,\n props: {\n /** Header height (px or CSS length). Default `'auto'`. */\n headerHeight: { type: [Number, String] as PropType<number | string>, default: 'auto' },\n /** Footer height (px or CSS length). Default `'auto'`. */\n footerHeight: { type: [Number, String] as PropType<number | string>, default: 'auto' },\n /** When true, header sticks via `position: sticky` instead of static. */\n sticky: { type: Boolean, default: true },\n },\n setup(props, { slots, attrs }) {\n const asLen = (v: number | string) => (typeof v === 'number' ? `${v}px` : v)\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-header-layout': '',\n style: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n minHeight: '0',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n slots.header\n ? h(\n 'header',\n {\n role: 'banner',\n 'data-iris-header': '',\n style: {\n flexShrink: '0',\n height: asLen(props.headerHeight),\n borderBottom: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n position: props.sticky ? 'sticky' : 'static',\n top: '0',\n zIndex: '50',\n },\n },\n slots.header(),\n )\n : null,\n h(\n 'main',\n {\n role: 'main',\n 'data-iris-header-main': '',\n style: { flex: '1', minHeight: '0', overflow: 'auto' },\n },\n slots.default?.(),\n ),\n slots.footer\n ? h(\n 'footer',\n {\n role: 'contentinfo',\n 'data-iris-footer': '',\n style: {\n flexShrink: '0',\n height: asLen(props.footerHeight),\n borderTop: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n },\n },\n slots.footer(),\n )\n : null,\n ],\n )\n },\n})\n","import { defineComponent, h, inject, type PropType, type VNode } from 'vue'\nimport { defaultIconRegistry, resolveThemedIcon, type IrisIconRegistry } from '@iris-ui-kit/icons'\nimport { IrisThemeKey } from '../../theme'\n\n/**\n * Renders a registered icon as inline SVG. Resolves `name` through an\n * `@iris-ui-kit/icons` registry and renders the icon's structured nodes as real\n * SVG child elements (no raw-HTML injection). Colors follow `currentColor`, so\n * the surrounding CSS `color` themes it. Renders nothing for an unresolved name.\n */\nexport const IrisIcon = defineComponent({\n name: 'IrisIcon',\n inheritAttrs: false,\n props: {\n /** Semantic icon name resolved via the registry (e.g. 'check'). */\n name: { type: String, required: true },\n /** Width & height (number → px). */\n size: { type: [Number, String] as PropType<number | string>, default: 24 },\n /** Stroke width for line icons. */\n strokeWidth: { type: Number, default: 2 },\n /** Render as a filled glyph instead of a stroked line icon. */\n fill: { type: Boolean, default: false },\n /** Accessible title; sets role=\"img\" + aria-label. Omit for decorative icons. */\n title: { type: String, default: undefined },\n /** Registry to resolve `name` against. Defaults to the built-in set. */\n registry: { type: Object as PropType<IrisIconRegistry>, default: () => defaultIconRegistry },\n },\n setup(props, { attrs }) {\n const themeCtx = inject(IrisThemeKey, undefined)\n return () => {\n const icon = resolveThemedIcon(props.registry, props.name, themeCtx?.current.value)\n if (!icon) return null\n\n const paint = props.fill\n ? { fill: 'currentColor' }\n : {\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': props.strokeWidth,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }\n\n const children: VNode[] = icon.nodes.map((node, i) => h(node.tag, { key: i, ...node.attrs }))\n if (props.title) children.unshift(h('title', props.title))\n\n return h(\n 'svg',\n {\n ...attrs,\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: icon.viewBox ?? '0 0 24 24',\n width: props.size,\n height: props.size,\n ...paint,\n role: props.title ? 'img' : undefined,\n 'aria-label': props.title || undefined,\n 'aria-hidden': props.title ? undefined : 'true',\n 'data-iris-icon': props.name,\n style: {\n display: 'inline-block',\n verticalAlign: 'middle',\n flexShrink: 0,\n ...((attrs.style as Record<string, string>) ?? {}),\n },\n },\n children,\n )\n }\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n ref,\n shallowRef,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport {\n branchTrail,\n createExpansion,\n findNavNode,\n findNavPath,\n isBranch,\n visibleNav,\n firstLeaf,\n type NavNode,\n} from '@iris-ui-kit/core'\nimport { IrisIcon } from '../primitives/icon/Icon'\nimport { useI18n } from '../i18n'\n\n/**\n * Data-driven nested navigation menu — the sidebar nav of the admin shell.\n * Renders a normalized `NavNode[]` tree as an accordion of expandable branches\n * and selectable leaves; the active leaf and its ancestor branches are\n * highlighted, and the active branch trail auto-expands. Router-agnostic: it\n * takes `activeKey` + emits `select(key, node)`; the host owns navigation.\n *\n * `collapsed` switches to an icon-only rail (top-level items only); a branch\n * click then jumps to its first leaf.\n */\nexport const IrisNavMenu = defineComponent({\n name: 'IrisNavMenu',\n inheritAttrs: false,\n props: {\n /** Normalized nav tree. */\n items: { type: Array as PropType<NavNode[]>, required: true },\n /** Key of the active leaf. */\n activeKey: { type: String, default: undefined },\n /** Controlled expanded branch keys (v-model:expandedKeys). */\n expandedKeys: { type: Array as PropType<string[]>, default: undefined },\n /** Initial expanded keys when uncontrolled (else the active trail expands). */\n defaultExpandedKeys: { type: Array as PropType<string[]>, default: undefined },\n /** Icon-only rail (top-level items only). */\n collapsed: { type: Boolean, default: false },\n ariaLabel: { type: String, default: undefined },\n },\n emits: {\n select: (_key: string, _node: NavNode) => true,\n 'update:expandedKeys': (_keys: string[]) => true,\n },\n setup(props, { emit, attrs }) {\n const { t } = useI18n()\n const tree = computed(() => visibleNav(props.items))\n const activePath = computed(() =>\n props.activeKey ? findNavPath(props.items, props.activeKey).map((n) => n.key) : [],\n )\n\n const isControlled = computed(() => props.expandedKeys !== undefined)\n\n // The expand/collapse set — toggle, dedup and the active-trail union — lives in\n // the core expansion model; this component only layers on the controlled /\n // uncontrolled split. v-model here is *strict*: while controlled, rendering\n // reads the `expandedKeys` prop (not the store) so a toggle stays closed until\n // the parent updates it. The model therefore backs the uncontrolled state, and\n // `branchTrail` feeds the auto-open union through `merge`.\n const model = createExpansion({\n mode: 'multiple',\n defaultExpanded:\n props.defaultExpandedKeys ??\n (props.activeKey ? branchTrail(props.items, props.activeKey) : []),\n })\n const internalExpanded = shallowRef<string[]>(model.get())\n onBeforeUnmount(\n model.store.subscribe((keys) => {\n internalExpanded.value = keys\n }),\n )\n const expanded = computed(() =>\n isControlled.value ? (props.expandedKeys as string[]) : internalExpanded.value,\n )\n\n // Auto-open the active branch trail as the active leaf changes (uncontrolled).\n watch(\n () => props.activeKey,\n (key) => {\n if (!isControlled.value) model.merge(key ? branchTrail(props.items, key) : [])\n },\n )\n\n const toggle = (key: string): void => {\n if (isControlled.value) {\n const cur = props.expandedKeys as string[]\n emit(\n 'update:expandedKeys',\n cur.includes(key) ? cur.filter((k) => k !== key) : [...cur, key],\n )\n } else {\n model.toggle(key)\n emit('update:expandedKeys', model.get())\n }\n }\n\n const select = (node: NavNode): void => {\n if (node.disabled) return\n emit('select', node.key, node)\n }\n\n const hovered = ref<string | null>(null)\n\n const itemStyle = (opts: {\n depth: number\n active: boolean\n trail: boolean\n disabled: boolean\n }): Record<string, string> => {\n const bg = opts.active\n ? 'var(--iris-primary)'\n : hovered.value && !opts.disabled\n ? 'var(--iris-surface)'\n : 'transparent'\n return {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n width: '100%',\n boxSizing: 'border-box',\n border: 'none',\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: bg,\n color: opts.active\n ? 'var(--iris-primary-foreground, #fff)'\n : opts.trail\n ? 'var(--iris-primary)'\n : 'var(--iris-foreground)',\n font: 'inherit',\n fontSize: '14px',\n fontWeight: opts.active || opts.trail ? '600' : '400',\n textAlign: 'start',\n cursor: opts.disabled ? 'not-allowed' : 'pointer',\n opacity: opts.disabled ? '0.5' : '1',\n padding: props.collapsed ? '10px' : `8px 10px 8px ${12 + opts.depth * 16}px`,\n justifyContent: props.collapsed ? 'center' : 'flex-start',\n }\n }\n\n const hoverHandlers = (key: string): Record<string, (e: Event) => void> => ({\n onMouseenter: () => (hovered.value = key),\n onMouseleave: () => {\n if (hovered.value === key) hovered.value = null\n },\n })\n\n const iconNode = (node: NavNode, size = 18): VNode | null =>\n node.icon ? h(IrisIcon, { name: node.icon, size }) : null\n\n const badgeNode = (node: NavNode): VNode | null =>\n node.badge !== undefined && node.badge !== '' && !props.collapsed\n ? h(\n 'span',\n {\n 'data-iris-nav-badge': '',\n style: {\n marginInlineStart: 'auto',\n fontSize: '11px',\n lineHeight: '1',\n padding: '2px 6px',\n borderRadius: '999px',\n background: 'var(--iris-danger, #e5484d)',\n color: '#fff',\n },\n },\n String(node.badge),\n )\n : null\n\n // Collapsed rail: top-level items only, icon + native tooltip; branch → first leaf.\n const renderCollapsed = (): VNode[] =>\n tree.value.map((node) => {\n const branch = isBranch(node)\n const active = branch ? activePath.value.includes(node.key) : node.key === props.activeKey\n return h(\n 'button',\n {\n key: node.key,\n type: 'button',\n 'data-iris-nav-item': '',\n 'data-key': node.key,\n 'data-active': active ? 'true' : undefined,\n 'data-branch': branch ? 'true' : undefined,\n disabled: node.disabled,\n title: node.title,\n 'aria-label': branch ? `${node.title} (section)` : node.title,\n 'aria-current': active && !branch ? 'page' : undefined,\n style: itemStyle({ depth: 0, active, trail: false, disabled: !!node.disabled }),\n ...hoverHandlers(node.key),\n onClick: () => select(branch ? firstLeaf(node) : node),\n },\n [iconNode(node, 20) ?? h('span', { style: { fontWeight: '700' } }, node.title.charAt(0))],\n )\n })\n\n const renderItem = (node: NavNode, depth: number): VNode => {\n const branch = isBranch(node)\n const open = expanded.value.includes(node.key)\n const active = node.key === props.activeKey\n const trail = branch && activePath.value.includes(node.key)\n\n const row = h(\n 'button',\n {\n type: 'button',\n 'data-iris-nav-item': '',\n 'data-key': node.key,\n 'data-branch': branch ? 'true' : undefined,\n 'data-active': active ? 'true' : undefined,\n 'data-open': branch && open ? 'true' : undefined,\n 'data-depth': String(depth),\n disabled: node.disabled,\n 'aria-expanded': branch ? (open ? 'true' : 'false') : undefined,\n 'aria-current': active ? 'page' : undefined,\n style: itemStyle({ depth, active, trail, disabled: !!node.disabled }),\n ...hoverHandlers(node.key),\n onClick: () => (branch ? toggle(node.key) : select(node)),\n },\n [\n iconNode(node),\n h(\n 'span',\n {\n style: {\n flex: branch ? '1' : '0 1 auto',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n },\n node.title,\n ),\n badgeNode(node),\n branch\n ? h(IrisIcon, {\n name: open ? 'chevron-down' : 'chevron-right',\n size: 16,\n style: { marginInlineStart: badgeNode(node) ? '6px' : 'auto', opacity: '0.6' },\n })\n : null,\n ],\n )\n\n if (!branch || !open)\n return h('div', { key: node.key, 'data-iris-nav-group': branch ? '' : undefined }, [row])\n\n return h('div', { key: node.key, 'data-iris-nav-group': '', 'data-open': 'true' }, [\n row,\n h(\n 'div',\n { 'data-iris-nav-children': '', role: 'group' },\n (node.children ?? []).map((child) => renderItem(child, depth + 1)),\n ),\n ])\n }\n\n // Arrow-key navigation over the visible items (Tab still works as a\n // fallback). Up/Down/Home/End move focus; Right expands a branch then steps\n // into it; Left collapses an open branch else moves to the parent.\n const onKeydown = (e: KeyboardEvent): void => {\n const root = e.currentTarget as HTMLElement\n const buttons = Array.from(root.querySelectorAll<HTMLElement>('[data-iris-nav-item]'))\n if (buttons.length === 0) return\n const idx = buttons.indexOf(document.activeElement as HTMLElement)\n const focusAt = (i: number): void => buttons[(i + buttons.length) % buttons.length]?.focus()\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault()\n focusAt(idx < 0 ? 0 : idx + 1)\n return\n case 'ArrowUp':\n e.preventDefault()\n focusAt(idx < 0 ? buttons.length - 1 : idx - 1)\n return\n case 'Home':\n e.preventDefault()\n buttons[0]?.focus()\n return\n case 'End':\n e.preventDefault()\n buttons[buttons.length - 1]?.focus()\n return\n }\n\n if (props.collapsed || idx < 0) return\n const key = buttons[idx]?.getAttribute('data-key')\n if (!key) return\n const node = findNavNode(props.items, key)\n\n if (e.key === 'ArrowRight' && node && isBranch(node)) {\n e.preventDefault()\n if (!expanded.value.includes(key)) toggle(key)\n else focusAt(idx + 1)\n } else if (e.key === 'ArrowLeft') {\n if (node && isBranch(node) && expanded.value.includes(key)) {\n e.preventDefault()\n toggle(key)\n } else {\n const parentKey = findNavPath(props.items, key).at(-2)?.key\n if (parentKey) {\n e.preventDefault()\n buttons.find((b) => b.getAttribute('data-key') === parentKey)?.focus()\n }\n }\n }\n }\n\n return () =>\n h(\n 'nav',\n {\n ...attrs,\n 'data-iris-nav-menu': '',\n 'data-collapsed': props.collapsed ? 'true' : undefined,\n 'aria-label': props.ariaLabel ?? t('admin.nav'),\n onKeydown,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n props.collapsed ? renderCollapsed() : tree.value.map((node) => renderItem(node, 0)),\n )\n },\n})\n","import { Fragment, defineComponent, h, type VNode } from 'vue'\nimport { useI18n } from '../../i18n'\n\n/**\n * Container for breadcrumb navigation. Renders a `<nav>` with `<ol>` per\n * WAI-ARIA. The `separator` slot (or prop) is inserted between items;\n * defaults to `/`.\n *\n * Children should be `IrisBreadcrumbItem`s.\n */\nexport const IrisBreadcrumb = defineComponent({\n name: 'IrisBreadcrumb',\n inheritAttrs: false,\n props: {\n /** String separator. Ignored if the `separator` slot is provided. */\n separator: { type: String, default: '/' },\n },\n setup(props, { slots, attrs }) {\n const { t } = useI18n()\n return () => {\n const children = slots.default?.() ?? []\n // Flatten Fragment / array children to a flat list of VNodes.\n const flat: VNode[] = []\n const walk = (nodes: VNode[] | undefined) => {\n if (!nodes) return\n nodes.forEach((n) => {\n if (n.type === Fragment) walk(n.children as VNode[])\n else flat.push(n)\n })\n }\n walk(children as VNode[])\n\n const total = flat.length\n const slotsSep = slots.separator\n const sep = (key: number) =>\n h(\n 'li',\n {\n key: `sep-${key}`,\n 'data-iris-breadcrumb-separator': '',\n 'aria-hidden': 'true',\n style: { color: 'var(--iris-muted)', display: 'inline-flex', alignItems: 'center' },\n },\n slotsSep ? slotsSep() : props.separator,\n )\n\n const items: VNode[] = []\n flat.forEach((child, i) => {\n // Inject is-last hint so the item can self-mark as `aria-current=page`.\n const isLast = i === total - 1\n const wrapped = h(\n 'li',\n {\n key: `item-${i}`,\n 'data-iris-breadcrumb-item': '',\n 'data-iris-breadcrumb-last': isLast ? 'true' : undefined,\n style: { display: 'inline-flex', alignItems: 'center' },\n },\n // Pass isCurrent=true to the last child so it self-marks aria-current.\n h(\n child.type as never,\n { ...(child.props ?? {}), isCurrent: isLast } as Record<string, unknown>,\n child.children as never,\n ),\n )\n items.push(wrapped)\n if (!isLast) items.push(sep(i))\n })\n\n return h(\n 'nav',\n {\n ...attrs,\n 'aria-label': t('breadcrumb.label'),\n 'data-iris-breadcrumb': '',\n },\n h(\n 'ol',\n {\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n fontSize: '14px',\n },\n },\n items,\n ),\n )\n }\n },\n})\n","import { defineComponent, h } from 'vue'\n\n/**\n * A single breadcrumb crumb. Renders an `<a>` when `href` is given and the\n * crumb is not the last one; otherwise a `<span>`.\n *\n * The `isCurrent` flag (set by the parent IrisBreadcrumb based on position)\n * adds `aria-current=\"page\"` and switches to the non-link rendering.\n */\nexport const IrisBreadcrumbItem = defineComponent({\n name: 'IrisBreadcrumbItem',\n inheritAttrs: false,\n props: {\n href: { type: String, default: '' },\n /** Internal: set by parent IrisBreadcrumb when this is the last item. */\n isCurrent: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n return () => {\n const last = props.isCurrent\n const baseStyle: Record<string, string> = {\n color: last ? 'var(--iris-muted)' : 'var(--iris-primary)',\n textDecoration: 'none',\n cursor: last ? 'default' : props.href ? 'pointer' : 'default',\n }\n\n const baseAttrs = {\n ...attrs,\n 'aria-current': last ? 'page' : undefined,\n 'data-iris-breadcrumb-crumb': '',\n style: { ...baseStyle, ...((attrs.style as Record<string, string> | undefined) ?? {}) },\n }\n\n if (props.href && !last) {\n return h('a', { ...baseAttrs, href: props.href }, slots.default?.())\n }\n return h('span', baseAttrs, slots.default?.())\n }\n },\n})\n","import { defineComponent, h, type PropType, type VNode } from 'vue'\nimport type { NavNode } from '@iris-ui-kit/core'\nimport { IrisBreadcrumb } from '../primitives/breadcrumb/Breadcrumb'\nimport { IrisBreadcrumbItem } from '../primitives/breadcrumb/BreadcrumbItem'\nimport { IrisIcon } from '../primitives/icon/Icon'\n\n/**\n * Breadcrumb trail for the admin header, driven by a `NavNode[]` ancestor chain\n * (typically `findNavPath(menus, activeKey)`). The last crumb is the current\n * page (auto-marked `aria-current` by IrisBreadcrumb); earlier crumbs are\n * clickable and emit `select(key, node)` so the host can navigate.\n */\nexport const IrisAdminBreadcrumb = defineComponent({\n name: 'IrisAdminBreadcrumb',\n inheritAttrs: false,\n props: {\n /** Root→current ancestor chain. */\n trail: { type: Array as PropType<NavNode[]>, required: true },\n /** Show each node's icon before its title. */\n showIcon: { type: Boolean, default: true },\n /** Hide the breadcrumb when the trail has a single crumb. */\n hideSingle: { type: Boolean, default: false },\n separator: { type: String, default: '/' },\n },\n emits: {\n select: (_key: string, _node: NavNode) => true,\n },\n setup(props, { emit, attrs }) {\n return () => {\n const trail = props.trail\n if (trail.length === 0 || (props.hideSingle && trail.length === 1)) return null\n\n return h(\n IrisBreadcrumb,\n { ...attrs, separator: props.separator },\n {\n default: () =>\n trail.map((node, i) => {\n const last = i === trail.length - 1\n const content: VNode[] = []\n if (props.showIcon && node.icon) {\n content.push(\n h(IrisIcon, { name: node.icon, size: 14, style: { marginInlineEnd: '4px' } }),\n )\n }\n content.push(h('span', node.title))\n return h(\n IrisBreadcrumbItem,\n {\n key: node.key,\n 'data-iris-admin-crumb': '',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: last ? 'default' : 'pointer',\n },\n onClick: last ? undefined : () => emit('select', node.key, node),\n },\n { default: () => content },\n )\n }),\n },\n )\n }\n },\n})\n","import { computed, onBeforeUnmount, ref, type ComputedRef, type Ref } from 'vue'\nimport type { TabsNav, TabsNavState, TabItem } from '@iris-ui-kit/core'\n\nexport interface UseTabsNavReturn {\n tabs: ComputedRef<TabItem[]>\n activeKey: ComputedRef<string | undefined>\n /** Keep-alive include-set (composite cache keys of all open tabs). */\n cacheKeys: ComputedRef<string[]>\n open: TabsNav['open']\n activate: TabsNav['activate']\n close: TabsNav['close']\n closeOthers: TabsNav['closeOthers']\n closeAll: TabsNav['closeAll']\n closeLeft: TabsNav['closeLeft']\n closeRight: TabsNav['closeRight']\n refresh: TabsNav['refresh']\n setPinned: TabsNav['setPinned']\n cacheKey: TabsNav['cacheKey']\n}\n\n/**\n * Vue binding for a framework-agnostic {@link TabsNav} store. Pass a shared\n * `createTabsNav()` instance (the host owns it so the tab bar and the keep-alive\n * content can read the same state) and get reactive `tabs` / `activeKey` /\n * `cacheKeys` plus the store's mutators.\n *\n * ```ts\n * const nav = createTabsNav({ tabs: [{ key: 'home', title: 'Home', pinned: true }] })\n * const { tabs, activeKey, open, close } = useTabsNav(nav)\n * ```\n */\nexport function useTabsNav(nav: TabsNav): UseTabsNavReturn {\n const state = ref(nav.getState()) as Ref<TabsNavState>\n const unsubscribe = nav.subscribe((next) => {\n state.value = next\n })\n onBeforeUnmount(unsubscribe)\n\n return {\n tabs: computed(() => state.value.tabs),\n activeKey: computed(() => state.value.activeKey),\n cacheKeys: computed(() => state.value.tabs.map((t) => nav.cacheKey(t.key))),\n open: nav.open,\n activate: nav.activate,\n close: nav.close,\n closeOthers: nav.closeOthers,\n closeAll: nav.closeAll,\n closeLeft: nav.closeLeft,\n closeRight: nav.closeRight,\n refresh: nav.refresh,\n setPinned: nav.setPinned,\n cacheKey: nav.cacheKey,\n }\n}\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { Placement } from '@iris-ui-kit/core'\n\nexport interface DropdownContext {\n open: ComputedRef<boolean>\n setOpen: (value: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n contentId: string\n placement: Placement\n offset: number\n}\n\nexport const DropdownContextKey: InjectionKey<DropdownContext> = Symbol('IrisDropdown')\n","import { computed, defineComponent, provide, ref, useId, watch, type PropType } from 'vue'\nimport { createFloatingMachine, type Placement } from '@iris-ui-kit/core'\nimport { useMachine } from '../../machine/useMachine'\nimport { DropdownContextKey } from './context'\n\n/**\n * Dropdown menu root. Composes `createFloatingMachine` (state) with\n * `useFloating` (positioning) and `useDismiss` (close-on-outside / Escape) —\n * all delegated to the standard hooks used by `IrisPopover`. The dropdown\n * panel's semantics differ from a popover: it uses `role=\"menu\"`, supports\n * arrow-key navigation among items, and items auto-close the menu when\n * selected.\n *\n * @example\n * <IrisDropdown placement=\"bottom-end\">\n * <IrisDropdownTrigger as-child>\n * <IrisButton>Actions</IrisButton>\n * </IrisDropdownTrigger>\n * <IrisDropdownMenu>\n * <IrisDropdownItem @select=\"onCopy\">Copy</IrisDropdownItem>\n * <IrisDropdownItem @select=\"onDelete\">Delete</IrisDropdownItem>\n * </IrisDropdownMenu>\n * </IrisDropdown>\n */\nexport const IrisDropdown = defineComponent({\n name: 'IrisDropdown',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n offset: { type: Number, default: 6 },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const isControlled = computed(() => props.open !== undefined)\n const machine = createFloatingMachine(props.defaultOpen ? 'open' : 'closed')\n const { state, send } = useMachine(machine)\n\n watch(\n () => props.open,\n (value) => {\n if (value === undefined) return\n const currentlyOpen = state.value.value === 'open'\n if (value && !currentlyOpen) send({ type: 'OPEN' })\n if (!value && currentlyOpen) send({ type: 'CLOSE' })\n },\n { immediate: true },\n )\n\n const open = computed(() =>\n isControlled.value ? Boolean(props.open) : state.value.value === 'open',\n )\n\n const setOpen = (value: boolean) => {\n if (!isControlled.value) send({ type: value ? 'OPEN' : 'CLOSE' })\n emit('update:open', value)\n }\n\n provide(DropdownContextKey, {\n open,\n setOpen,\n triggerRef: ref(null),\n contentRef: ref(null),\n contentId: useId(),\n placement: props.placement,\n offset: props.offset,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, Fragment, h, type VNode } from 'vue'\nimport { composeEventHandlers } from '@iris-ui-kit/core'\n\n/** Test whether a prop key looks like a Vue event listener: `onXxx`. */\nfunction isEventListenerKey(key: string): boolean {\n return key.startsWith('on') && key.length > 2 && /[A-Z]/.test(key.charAt(2))\n}\n\n/**\n * Compose multiple Vue template refs into a single function ref. Each input\n * may be a `Ref<HTMLElement | null>`, a function ref `(el) => void`, or null.\n * All non-null inputs are invoked / assigned with the same element.\n */\nexport function composeRefs(...refs: Array<unknown>): (el: unknown) => void {\n return (el: unknown) => {\n for (const r of refs) {\n if (r == null) continue\n if (typeof r === 'function') {\n ;(r as (el: unknown) => void)(el)\n } else if (typeof r === 'object' && 'value' in (r as object)) {\n ;(r as { value: unknown }).value = el\n }\n }\n }\n}\n\n/**\n * Merge parent (slot) props onto a child VNode's props with Radix-style\n * semantics:\n *\n * - **Event handlers (`on*`)**: composed via `composeEventHandlers` — the\n * parent's handler runs first; if it calls `event.preventDefault()`, the\n * child's handler is skipped. This lets the parent intercept (e.g. when\n * IrisButton is `disabled`).\n * - **`class`**: concatenated, parent first.\n * - **`style`**: shallow-merged, child wins on key conflicts.\n * - **Anything else**: child wins (the user's explicit prop is authoritative).\n */\nexport function mergeSlotProps(\n parent: Record<string, unknown>,\n child: Record<string, unknown>,\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...child }\n\n for (const key in parent) {\n const parentVal = parent[key]\n const childVal = child[key]\n\n if (isEventListenerKey(key)) {\n if (typeof parentVal === 'function' && typeof childVal === 'function') {\n out[key] = composeEventHandlers(\n parentVal as (e: { defaultPrevented: boolean }) => void,\n childVal as (e: { defaultPrevented: boolean }) => void,\n )\n } else if (typeof parentVal === 'function' && childVal == null) {\n out[key] = parentVal\n }\n // If only child has it, child wins (already in `out`).\n } else if (key === 'ref') {\n if (parentVal != null && childVal != null) {\n out[key] = composeRefs(parentVal, childVal)\n } else if (parentVal != null) {\n out[key] = parentVal\n }\n // If only child has a ref, child wins (already in `out`).\n } else if (key === 'class') {\n const merged = [parentVal, childVal].filter(Boolean).join(' ').trim()\n if (merged) out[key] = merged\n } else if (key === 'style') {\n if (parentVal || childVal) {\n out[key] = { ...(parentVal as object | undefined), ...(childVal as object | undefined) }\n }\n } else if (!(key in child)) {\n out[key] = parentVal\n }\n // else: non-handler, present in both — child wins (already in `out`).\n }\n\n return out\n}\n\n/**\n * Polymorphic root helper. Renders the user's single child VNode with the\n * parent's attrs merged onto it via `mergeSlotProps`.\n *\n * Inspired by Radix UI's `<Slot>`. Used by primitives that need to render\n * \"as\" the user's child element instead of their own default element.\n *\n * **Limitation (intentional in this iteration)**: template `ref`s placed on\n * the slotted child are not forwarded. Use a wrapping element or wait for a\n * future iteration.\n *\n * @example\n * <IrisSlot class=\"iris-button\" data-iris-button-variant=\"solid\">\n * <RouterLink to=\"/save\">Save</RouterLink>\n * </IrisSlot>\n * // → <RouterLink class=\"iris-button\" data-iris-button-variant=\"solid\" to=\"/save\">Save</RouterLink>\n */\nexport const IrisSlot = defineComponent({\n name: 'IrisSlot',\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n return () => {\n const children = slots.default?.()\n const root = findFirstElement(children)\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisSlot expected exactly one child element; got none.')\n }\n return null\n }\n const merged = mergeSlotProps(\n attrs as Record<string, unknown>,\n (root.props ?? {}) as Record<string, unknown>,\n )\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n },\n})\n\n/**\n * Walk a VNode array (which may contain Fragments / Comments / Text) and\n * return the first usable element VNode. Warns in dev if there are multiple\n * sibling roots.\n */\nexport function findFirstElement(children: VNode[] | undefined): VNode | null {\n if (!children || children.length === 0) return null\n\n let found: VNode | null = null\n let extraCount = 0\n\n const walk = (nodes: VNode[]) => {\n for (const node of nodes) {\n if (node.type === Fragment) {\n const fragChildren = Array.isArray(node.children) ? (node.children as VNode[]) : []\n walk(fragChildren)\n continue\n }\n if (\n typeof node.type === 'string' ||\n typeof node.type === 'object' ||\n typeof node.type === 'function'\n ) {\n if (found) {\n extraCount += 1\n } else {\n found = node\n }\n }\n }\n }\n walk(children)\n\n if (\n extraCount > 0 &&\n (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production')\n ) {\n console.warn(`[iris-ui] IrisSlot got ${extraCount + 1} root elements; only the first is used.`)\n }\n\n return found\n}\n","import { defineComponent, h, inject, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { DropdownContextKey } from './context'\n\nexport const IrisDropdownTrigger = defineComponent({\n name: 'IrisDropdownTrigger',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DropdownContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDropdownTrigger must be a descendant of IrisDropdown')\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(!ctx.open.value)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n // Pressing ArrowDown / Enter / Space on the trigger opens AND focuses the menu.\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n ctx.setOpen(true)\n }\n }\n\n const captureRef = (el: unknown) => {\n ctx.triggerRef.value = (el ?? null) as HTMLElement | null\n }\n\n return () => {\n const triggerProps: Record<string, unknown> = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': ctx.open.value ? 'true' : 'false',\n 'aria-controls': ctx.contentId,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n onClick,\n onKeydown: onKeyDown,\n ref: captureRef,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisDropdownTrigger: as-child requires a single child element')\n }\n return null\n }\n const merged = mergeSlotProps(\n { ...triggerProps, ...attrs },\n (root.props ?? {}) as Record<string, unknown>,\n )\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n return h('button', { type: 'button', ...attrs, ...triggerProps }, slots.default?.())\n }\n },\n})\n","import { computed, onScopeDispose, ref, shallowRef, watch, type ComputedRef, type Ref } from 'vue'\nimport {\n autoUpdate,\n computePosition,\n arrow as arrowMiddleware,\n flip as flipMiddleware,\n offset as offsetMiddleware,\n shift as shiftMiddleware,\n size as sizeMiddleware,\n type Middleware,\n type Placement,\n type Strategy,\n} from '@floating-ui/dom'\n\nexport interface UseFloatingOptions {\n /** Element the floating panel is positioned relative to. */\n anchor: Ref<HTMLElement | null | undefined>\n /** The floating element itself. */\n floating: Ref<HTMLElement | null | undefined>\n /** Whether the floating element is visible. Controls `autoUpdate` lifecycle. */\n open: Ref<boolean>\n /** Default placement. Floating UI may flip it if `flip` is true. */\n placement?: Placement\n /** CSS position strategy. */\n strategy?: Strategy\n /** Pixel offset between anchor and floating element. */\n offset?: number\n /** Flip to the opposite side when the requested side overflows. Default `true`. */\n flip?: boolean\n /** Shift along the cross-axis to stay in view. Default `true`. */\n shift?: boolean\n /**\n * Constrain the floating element to the available viewport space — sets\n * `maxWidth`/`maxHeight` (minus 8px padding) on it so a long dropdown/popover\n * never overflows the screen (pair with `overflow:auto` for scroll). Off by\n * default. Pass a number to override the viewport padding.\n */\n size?: boolean | number\n /** Extra Floating UI middleware to append. */\n middleware?: Middleware[]\n /**\n * Optional ref to an arrow element inside the floating panel. When provided,\n * `arrowX`, `arrowY`, and `arrowSide` in the return value are populated.\n */\n arrow?: Ref<HTMLElement | null | undefined>\n}\n\nexport interface UseFloatingReturn {\n /** Computed x coordinate (px). */\n x: Ref<number>\n /** Computed y coordinate (px). */\n y: Ref<number>\n /** Final strategy (echo of input). */\n strategy: Ref<Strategy>\n /** Final placement, possibly flipped from the input placement. */\n finalPlacement: Ref<Placement>\n /** Ready-to-bind inline style object for the floating element. */\n floatingStyles: ComputedRef<Record<string, string>>\n /** Trigger a manual recompute. Usually not needed — `autoUpdate` handles scrolling/resizing. */\n update: () => Promise<void>\n /** Arrow x offset (px). Present when `arrow` option is set. */\n arrowX: Ref<number | undefined>\n /** Arrow y offset (px). Present when `arrow` option is set. */\n arrowY: Ref<number | undefined>\n /**\n * Side of the floating element the arrow is on.\n * E.g. `'bottom'` placement → `'top'` (arrow at top pointing up).\n */\n arrowSide: ComputedRef<'top' | 'right' | 'bottom' | 'left' | undefined>\n}\n\n/**\n * Reactive Floating UI integration. Subscribes `autoUpdate` whenever\n * `open === true` and both refs are populated; tears it down on close,\n * unmount, or ref clearing. Returns `floatingStyles` ready to be spread onto\n * the floating element.\n *\n * Pure positioning — does NOT render anything, does NOT manage focus,\n * does NOT handle dismiss behavior. Those concerns live in the consuming\n * primitive (Popover, Tooltip, Dialog, Menu, ...).\n *\n * @example\n * const triggerEl = ref<HTMLElement | null>(null)\n * const contentEl = ref<HTMLElement | null>(null)\n * const open = ref(false)\n * const { floatingStyles } = useFloating({\n * anchor: triggerEl,\n * floating: contentEl,\n * open,\n * placement: 'bottom-start',\n * offset: 8,\n * })\n */\nexport function useFloating(options: UseFloatingOptions): UseFloatingReturn {\n const x = ref(0)\n const y = ref(0)\n const strategy = ref<Strategy>(options.strategy ?? 'absolute')\n const finalPlacement = ref<Placement>(options.placement ?? 'bottom')\n const arrowX = ref<number | undefined>()\n const arrowY = ref<number | undefined>()\n\n const middleware = shallowRef<Middleware[]>([])\n rebuildMiddleware()\n\n function rebuildMiddleware() {\n const mw: Middleware[] = []\n if (options.offset !== undefined) mw.push(offsetMiddleware(options.offset))\n if (options.flip !== false) mw.push(flipMiddleware())\n if (options.shift !== false) mw.push(shiftMiddleware({ padding: 8 }))\n if (options.size) {\n const padding = typeof options.size === 'number' ? options.size : 8\n mw.push(\n sizeMiddleware({\n padding,\n apply({ availableWidth, availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.max(0, Math.floor(availableWidth))}px`,\n maxHeight: `${Math.max(0, Math.floor(availableHeight))}px`,\n })\n },\n }),\n )\n }\n if (options.arrow?.value) mw.push(arrowMiddleware({ element: options.arrow.value }))\n if (options.middleware) mw.push(...options.middleware)\n middleware.value = mw\n }\n\n let cleanupAutoUpdate: (() => void) | null = null\n // Monotonic token bumped on every new positioning cycle and on teardown, so a\n // computePosition() that resolves after the panel closed/re-opened (or after a\n // newer update started) drops its result instead of applying stale coords.\n let epoch = 0\n\n async function update() {\n const a = options.anchor.value\n const f = options.floating.value\n if (!a || !f) return\n rebuildMiddleware()\n const token = ++epoch\n const result = await computePosition(a, f, {\n placement: options.placement ?? 'bottom',\n strategy: strategy.value,\n middleware: middleware.value,\n })\n if (token !== epoch) return\n x.value = result.x\n y.value = result.y\n finalPlacement.value = result.placement\n const arrowData = result.middlewareData.arrow as { x?: number; y?: number } | undefined\n arrowX.value = arrowData?.x\n arrowY.value = arrowData?.y\n }\n\n watch(\n [options.open, options.anchor, options.floating],\n ([isOpen, anchorEl, floatingEl]) => {\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = null\n epoch++\n if (isOpen && anchorEl && floatingEl) {\n cleanupAutoUpdate = autoUpdate(anchorEl, floatingEl, () => {\n void update()\n })\n }\n },\n { flush: 'post', immediate: true },\n )\n\n onScopeDispose(() => {\n cleanupAutoUpdate?.()\n cleanupAutoUpdate = null\n epoch++\n })\n\n const OPPOSITE: Record<string, 'top' | 'right' | 'bottom' | 'left'> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }\n const arrowSide = computed(\n () =>\n OPPOSITE[finalPlacement.value.split('-')[0]] as\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | undefined,\n )\n\n const floatingStyles = computed<Record<string, string>>(() => ({\n position: strategy.value,\n top: '0',\n left: '0',\n transform: `translate3d(${Math.round(x.value)}px, ${Math.round(y.value)}px, 0)`,\n width: 'max-content',\n }))\n\n return { x, y, strategy, finalPlacement, floatingStyles, update, arrowX, arrowY, arrowSide }\n}\n","import { onScopeDispose, watch, type Ref } from 'vue'\n\nexport interface UseDismissOptions {\n /** While true, the dismiss listeners are active. */\n enabled: Ref<boolean>\n /** Elements that, if clicked, should NOT trigger dismiss (typically trigger + content). */\n exclude: Array<Ref<HTMLElement | null | undefined>>\n /** Called when the user attempts to dismiss the surface. */\n onDismiss: () => void\n /** Close on Escape key. Default `true`. */\n escape?: boolean\n /** Close on pointerdown outside the excluded elements. Default `true`. */\n outsidePointerDown?: boolean\n}\n\n/**\n * Listen for the universal \"dismiss\" gestures: Escape key and outside\n * pointer-down. Used by Popover / Dialog / Menu / Combobox. Tooltip does\n * NOT use this — it dismisses on mouseleave/blur instead.\n *\n * Listeners are attached to `document` only while `enabled` is true, and\n * removed on disable / unmount. SSR-safe (no-op without `document`).\n */\nexport function useDismiss(options: UseDismissOptions): void {\n const escape = options.escape !== false\n const outsidePointerDown = options.outsidePointerDown !== false\n\n const isExcluded = (target: EventTarget | null): boolean => {\n if (!target || !(target instanceof Node)) return false\n for (const r of options.exclude) {\n const el = r.value\n if (!el) continue\n if (el === target || el.contains(target)) return true\n }\n return false\n }\n\n const onPointerDown = (event: PointerEvent) => {\n if (!options.enabled.value) return\n if (isExcluded(event.target)) return\n options.onDismiss()\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!options.enabled.value) return\n if (event.key === 'Escape') {\n event.stopPropagation()\n options.onDismiss()\n }\n }\n\n const attach = () => {\n if (typeof document === 'undefined') return\n if (outsidePointerDown) {\n document.addEventListener('pointerdown', onPointerDown, true)\n }\n if (escape) {\n document.addEventListener('keydown', onKeyDown)\n }\n }\n\n const detach = () => {\n if (typeof document === 'undefined') return\n document.removeEventListener('pointerdown', onPointerDown, true)\n document.removeEventListener('keydown', onKeyDown)\n }\n\n watch(\n options.enabled,\n (enabled) => {\n detach()\n if (enabled) attach()\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(detach)\n}\n","import { Teleport, defineComponent, h, inject, nextTick, ref, watch, type PropType } from 'vue'\nimport { matchTypeahead, nextEnabledIndex } from '@iris-ui-kit/core'\nimport { useFloating } from '../floating/useFloating'\nimport { useDismiss } from '../floating/useDismiss'\nimport { DropdownContextKey } from './context'\n\n/**\n * The menu surface. Renders `role=\"menu\"` and handles ArrowUp/Down navigation\n * across child `IrisDropdownItem`s. Closes on Escape and outside pointerdown.\n * Teleports to body by default.\n */\nexport const IrisDropdownMenu = defineComponent({\n name: 'IrisDropdownMenu',\n inheritAttrs: false,\n props: {\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DropdownContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDropdownMenu must be a descendant of IrisDropdown')\n }\n\n const innerRef = ref<HTMLElement | null>(null)\n watch(innerRef, (el) => {\n ctx.contentRef.value = el\n })\n\n const { floatingStyles } = useFloating({\n anchor: ctx.triggerRef,\n floating: innerRef,\n open: ctx.open,\n placement: ctx.placement,\n offset: ctx.offset,\n })\n\n useDismiss({\n enabled: ctx.open,\n exclude: [ctx.triggerRef, innerRef],\n onDismiss: () => ctx.setOpen(false),\n })\n\n // Focus first menu item on open.\n watch(ctx.open, async (open) => {\n if (open) {\n await nextTick()\n const items = innerRef.value?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')\n items?.[0]?.focus()\n } else {\n // Restore focus to trigger.\n ctx.triggerRef.value?.focus?.()\n }\n })\n\n // Typeahead buffer: accumulated printable chars, reset after a ~500ms pause.\n // Plain closure state — does not need to be reactive.\n const typeahead: { buffer: string; timer: ReturnType<typeof setTimeout> | null } = {\n buffer: '',\n timer: null,\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!ctx.open.value) return\n const items = Array.from(\n innerRef.value?.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"])',\n ) ?? [],\n )\n if (items.length === 0) return\n const current = document.activeElement as HTMLElement | null\n const index = current ? items.indexOf(current) : -1\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault()\n items[nextEnabledIndex(index, 1, items.length)]?.focus()\n break\n }\n case 'ArrowUp': {\n event.preventDefault()\n items[nextEnabledIndex(index, -1, items.length)]?.focus()\n break\n }\n case 'Home':\n event.preventDefault()\n items[0]?.focus()\n break\n case 'End':\n event.preventDefault()\n items[items.length - 1]?.focus()\n break\n case 'Tab':\n // Tab closes the menu and lets focus continue.\n ctx.setOpen(false)\n break\n default: {\n // Typeahead: a single printable char jumps to (and repeated chars\n // cycle through) items whose label matches the accumulated buffer.\n if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead.buffer += event.key\n if (typeahead.timer) clearTimeout(typeahead.timer)\n typeahead.timer = setTimeout(() => {\n typeahead.buffer = ''\n }, 500)\n const match = matchTypeahead(\n items.map((it) => it.textContent ?? ''),\n typeahead.buffer,\n index,\n )\n if (match >= 0) {\n event.preventDefault()\n items[match]?.focus()\n }\n }\n }\n }\n }\n\n return () => {\n if (!ctx.open.value) return null\n const menuNode = h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n innerRef.value = (el ?? null) as HTMLElement | null\n },\n id: ctx.contentId,\n role: 'menu',\n tabindex: -1,\n 'data-iris-dropdown-menu': '',\n 'data-state': 'open',\n onKeydown: onKeyDown,\n style: {\n ...floatingStyles.value,\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md)',\n padding: 'var(--iris-padding-sm)',\n boxShadow: '0 8px 24px -8px rgba(0, 0, 0, 0.16), 0 4px 8px -2px rgba(0, 0, 0, 0.08)',\n minWidth: '160px',\n outline: 'none',\n zIndex: '1000',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n if (props.teleport === false) return menuNode\n return h(Teleport, { to: props.teleport as string | HTMLElement }, [menuNode])\n }\n },\n})\n","import { defineComponent, h, inject, ref } from 'vue'\nimport { DropdownContextKey } from './context'\n\n/**\n * A single selectable menu item. Emits `select` (with the underlying event)\n * and auto-closes the parent dropdown after selection. Disabled items are\n * skipped by arrow-key navigation in the parent menu.\n */\nexport const IrisDropdownItem = defineComponent({\n name: 'IrisDropdownItem',\n inheritAttrs: false,\n props: {\n disabled: { type: Boolean, default: false },\n /** When true, selecting does NOT close the dropdown. Useful for sub-actions. */\n keepOpen: { type: Boolean, default: false },\n },\n emits: {\n select: (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const ctx = inject(DropdownContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDropdownItem must be a descendant of IrisDropdownMenu')\n }\n\n const hovered = ref(false)\n\n const fire = (event: Event) => {\n if (props.disabled) return\n emit('select', event)\n if (!props.keepOpen) ctx.setOpen(false)\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n fire(event)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n fire(event)\n }\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'menuitem',\n tabindex: props.disabled ? -1 : 0,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-dropdown-item': '',\n 'data-disabled': props.disabled ? '' : undefined,\n onClick,\n onKeydown: onKeyDown,\n onPointerenter: () => (hovered.value = true),\n onPointerleave: () => (hovered.value = false),\n onFocus: () => (hovered.value = true),\n onBlur: () => (hovered.value = false),\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n padding: '6px var(--iris-padding-md)',\n borderRadius: 'var(--iris-radius-sm)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.5' : '1',\n background:\n hovered.value && !props.disabled ? 'var(--iris-surface-hover)' : 'transparent',\n color: 'inherit',\n outline: 'none',\n fontSize: '14px',\n transition: 'background-color 80ms ease',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/** Visual divider between groups of items. */\nexport const IrisDropdownSeparator = defineComponent({\n name: 'IrisDropdownSeparator',\n inheritAttrs: false,\n setup(_, { attrs }) {\n return () =>\n h('div', {\n ...attrs,\n role: 'separator',\n 'data-iris-dropdown-separator': '',\n style: {\n height: '1px',\n background: 'var(--iris-border)',\n margin: '4px 0',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n })\n },\n})\n","import { defineComponent, h, nextTick, type PropType, type VNode } from 'vue'\nimport { isClosable, type TabsNav, type TabItem } from '@iris-ui-kit/core'\nimport { useTabsNav } from './useTabsNav'\nimport { IrisIcon } from '../primitives/icon/Icon'\nimport { IrisDropdown } from '../primitives/dropdown/Dropdown'\nimport { IrisDropdownTrigger } from '../primitives/dropdown/DropdownTrigger'\nimport { IrisDropdownMenu } from '../primitives/dropdown/DropdownMenu'\nimport { IrisDropdownItem, IrisDropdownSeparator } from '../primitives/dropdown/DropdownItem'\nimport { useI18n } from '../i18n'\n\n/**\n * Vben-style multi-tab bar over a shared {@link TabsNav} store. Each open page\n * is a closable chip; clicking activates (`@change`), the × closes, and a\n * trailing actions dropdown runs Refresh / Close / Close-others / Close-all on\n * the active tab. The store owns the tab list + active key; the host watches it\n * to sync routing + keep-alive.\n *\n * Keyboard (WAI-ARIA tablist, automatic activation): ←/→ move + activate the\n * adjacent tab, Home/End jump to the first/last, Delete/Backspace closes the\n * focused tab. Roving tabindex keeps a single tab stop.\n */\nexport const IrisAdminTabs = defineComponent({\n name: 'IrisAdminTabs',\n inheritAttrs: false,\n props: {\n /** Shared tabs store (from `createTabsNav`). */\n nav: { type: Object as PropType<TabsNav>, required: true },\n },\n emits: {\n change: (_key: string) => true,\n close: (_key: string) => true,\n refresh: (_key: string) => true,\n },\n setup(props, { emit, attrs }) {\n const { t: tr } = useI18n()\n const t = useTabsNav(props.nav)\n\n const activate = (key: string): void => {\n props.nav.activate(key)\n emit('change', key)\n }\n const close = (key: string): void => {\n props.nav.close(key)\n emit('close', key)\n }\n const refresh = (key: string): void => {\n props.nav.refresh(key)\n emit('refresh', key)\n }\n\n const focusTab = (root: HTMLElement | null, key: string | undefined): void => {\n if (!root || !key) return\n const labels = root.querySelectorAll<HTMLElement>('[data-iris-tab-label]')\n labels.forEach((el) => {\n if (el.getAttribute('data-key') === key) el.focus()\n })\n }\n\n const onTablistKeydown = (e: KeyboardEvent): void => {\n const root = e.currentTarget as HTMLElement\n const tabs = t.tabs.value\n const idx = tabs.findIndex((x) => x.key === t.activeKey.value)\n if (idx < 0 || tabs.length === 0) return\n\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const cur = tabs[idx]\n if (cur && isClosable(cur)) {\n e.preventDefault()\n close(cur.key)\n void nextTick(() => focusTab(root, props.nav.getState().activeKey))\n }\n return\n }\n\n let target = -1\n if (e.key === 'ArrowRight') target = (idx + 1) % tabs.length\n else if (e.key === 'ArrowLeft') target = (idx - 1 + tabs.length) % tabs.length\n else if (e.key === 'Home') target = 0\n else if (e.key === 'End') target = tabs.length - 1\n else return\n\n e.preventDefault()\n const key = tabs[target]?.key\n if (!key) return\n activate(key)\n void nextTick(() => focusTab(root, key))\n }\n\n const chip = (tab: TabItem): VNode => {\n const active = tab.key === t.activeKey.value\n const closable = isClosable(tab)\n const labelChildren: VNode[] = []\n if (tab.icon) labelChildren.push(h(IrisIcon, { name: tab.icon, size: 14 }))\n labelChildren.push(h('span', { style: { whiteSpace: 'nowrap' } }, tab.title))\n\n const label = h(\n 'button',\n {\n type: 'button',\n role: 'tab',\n 'data-iris-tab-label': '',\n 'data-key': tab.key,\n 'aria-selected': active ? 'true' : 'false',\n 'aria-current': active ? 'page' : undefined,\n tabindex: active ? 0 : -1,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n border: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n fontSize: '13px',\n cursor: 'pointer',\n padding: '0',\n },\n onClick: () => activate(tab.key),\n },\n labelChildren,\n )\n\n const closeBtn = closable\n ? h(\n 'button',\n {\n type: 'button',\n tabindex: -1,\n 'data-iris-tab-close': '',\n 'aria-label': tr('admin.closeTab', { title: tab.title }),\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '16px',\n height: '16px',\n border: 'none',\n borderRadius: '4px',\n background: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n padding: '0',\n opacity: '0.6',\n },\n onClick: (e: Event) => {\n e.stopPropagation()\n close(tab.key)\n },\n },\n [h(IrisIcon, { name: 'x', size: 12 })],\n )\n : tab.pinned\n ? h(IrisIcon, { name: 'check-circle', size: 12, style: { opacity: '0.5' } })\n : null\n\n return h(\n 'div',\n {\n key: tab.key,\n 'data-iris-tab': '',\n 'data-active': active ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '5px 8px 5px 10px',\n borderRadius: 'var(--iris-radius-md, 6px)',\n border: `1px solid ${active ? 'var(--iris-primary)' : 'var(--iris-border)'}`,\n background: active ? 'var(--iris-primary)' : 'var(--iris-surface)',\n color: active ? 'var(--iris-primary-foreground, #fff)' : 'var(--iris-foreground)',\n flex: '0 0 auto',\n },\n },\n [label, closeBtn],\n )\n }\n\n const action = (label: string, run: () => void, disabled = false): VNode =>\n h(IrisDropdownItem, { disabled, onSelect: run }, { default: () => label })\n\n const actionsMenu = (): VNode =>\n h(IrisDropdown, null, {\n default: () => [\n h(\n IrisDropdownTrigger,\n { 'aria-label': tr('admin.tabActions') },\n {\n default: () =>\n h(\n 'span',\n {\n 'data-iris-tab-actions': '',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n borderRadius: 'var(--iris-radius-md, 6px)',\n border: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n },\n },\n [h(IrisIcon, { name: 'more-horizontal', size: 16 })],\n ),\n },\n ),\n h(IrisDropdownMenu, null, {\n default: () => {\n const key = t.activeKey.value\n if (!key) return [action('No active tab', () => {}, true)]\n return [\n action(tr('admin.refresh'), () => refresh(key)),\n action(tr('admin.close'), () => close(key)),\n h(IrisDropdownSeparator),\n action(tr('admin.closeOthers'), () => props.nav.closeOthers(key)),\n action(tr('admin.closeAll'), () => props.nav.closeAll()),\n ]\n },\n }),\n ],\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-admin-tabs': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n padding: '6px 10px',\n borderBottom: '1px solid var(--iris-border)',\n background: 'var(--iris-background)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n 'data-iris-tabs-scroll': '',\n role: 'tablist',\n 'aria-label': tr('admin.openPages'),\n onKeydown: onTablistKeydown,\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n overflowX: 'auto',\n flex: '1',\n },\n },\n t.tabs.value.map((tab) => chip(tab)),\n ),\n actionsMenu(),\n ],\n )\n },\n})\n","import { computed, watch, watchEffect, type ComputedRef, type MaybeRefOrGetter, toValue } from 'vue'\nimport {\n createAdminShell,\n findNavPath,\n type AdminShell,\n type NavNode,\n type TabsNav,\n} from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\n\nexport interface UseAdminShellConfig {\n /** Normalized nav tree driving menu + breadcrumb. */\n menus: MaybeRefOrGetter<NavNode[]>\n /** Active page key (controlled); undefined = uncontrolled. */\n activeKey?: MaybeRefOrGetter<string | undefined>\n defaultActiveKey?: string\n onActiveKeyChange?: (key: string) => void\n /** Fired whenever a nav node / tab becomes active, with the resolved leaf node. */\n onSelect?: (key: string, node: NavNode) => void\n /** Optional shared tabs store; the shell opens/reconciles tabs through it. */\n tabs?: TabsNav\n}\n\nexport interface UseAdminShellReturn {\n /** Current active leaf key ('' when none). */\n activeKey: ComputedRef<string>\n /** Select a nav node: a branch redirects to its first leaf, opens its tab. */\n navigate: (node: NavNode) => void\n /** Reconcile when the active TAB changed (e.g. a close picked a neighbor). */\n syncFromTab: (key: string) => void\n /** Ancestor→node breadcrumb trail of the active key. */\n breadcrumb: ComputedRef<NavNode[]>\n}\n\n/**\n * Vue binding for the framework-agnostic {@link createAdminShell} controller —\n * the menu→tab→active-key wiring that every AdminLayout used to re-implement\n * byte-for-byte. The composable owns the controlled/uncontrolled `activeKey`\n * reconciliation (idiomatic to Vue) and delegates navigate / syncFromTab /\n * branch-resolution / breadcrumb to the shared core shell.\n *\n * Controlled mode renders from the prop directly (no flicker); a watcher keeps\n * the shell's guard-base synced to the prop so the active-change callback fires\n * with the same semantics as before.\n */\nexport function useAdminShell(config: UseAdminShellConfig): UseAdminShellReturn {\n const { defaultActiveKey, onActiveKeyChange, onSelect, tabs } = config\n\n const menus = (): NavNode[] => toValue(config.menus)\n const activeKeyProp = (): string | undefined => toValue(config.activeKey)\n const activeControlled = (): boolean => activeKeyProp() !== undefined\n\n // The shell instance is stable for the composable's lifetime; it reads the\n // latest callbacks via the closure-captured config.\n const shell: AdminShell = createAdminShell({\n menus: menus(),\n defaultActiveKey: activeKeyProp() ?? defaultActiveKey,\n tabs,\n onActiveChange: (key, node) => {\n onActiveKeyChange?.(key)\n if (node) onSelect?.(key, node)\n },\n })\n const state = useStore(shell.store)\n\n // Keep the shell reconciling against the live menu tree.\n watch(menus, (next) => shell.setMenus(next), { flush: 'sync' })\n\n // Controlled: keep the shell's guard-base aligned with the prop (silent — no\n // callback), so navigate fires the active-change callback exactly as before\n // even when a controlled parent does not write the new key back.\n watchEffect(() => {\n const prop = activeKeyProp()\n if (prop !== undefined && shell.getActiveKey() !== prop) {\n shell.store.setState({ activeKey: prop })\n }\n })\n\n const activeKey = computed(() =>\n activeControlled() ? (activeKeyProp() ?? '') : (state.value.activeKey ?? ''),\n )\n\n return {\n activeKey,\n navigate: shell.navigate,\n syncFromTab: shell.syncFromTab,\n breadcrumb: computed(() => (activeKey.value ? findNavPath(menus(), activeKey.value) : [])),\n }\n}\n","import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n ref,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport { type NavNode, type TabsNav } from '@iris-ui-kit/core'\nimport { IrisSidebarLayout } from '../layouts/SidebarLayout'\nimport { IrisHeaderLayout } from '../layouts/HeaderLayout'\nimport { IrisNavMenu } from './NavMenu'\nimport { IrisAdminBreadcrumb } from './AdminBreadcrumb'\nimport { IrisAdminTabs } from './AdminTabs'\nimport { IrisIcon } from '../primitives/icon/Icon'\nimport { useI18n } from '../i18n'\nimport { useAdminShell } from './useAdminShell'\n\nexport type IrisAdminLayoutMode = 'sidebar' | 'full-content'\n\n/**\n * The CMS / admin shell — a Vben-style, router-agnostic, data-driven layout that\n * composes IrisSidebarLayout + IrisHeaderLayout with the admin nav pieces. One\n * `menus` tree drives the collapsible sidebar nav, the header breadcrumb, and\n * (when a `tabs` store is passed) the multi-tab bar; `activeKey` is the current\n * page (v-model). The host owns routing: react to `@select` / `update:activeKey`\n * and render the page in the default slot (wrap it in `<KeepAlive>` keyed by\n * `tabs.cacheKey` for Vben-style tab caching).\n *\n * Slots: `logo({ collapsed })`, `toolbar` (header end), default `({ activeKey })`,\n * `footer`. Modes: `sidebar` (default) and `full-content` (chrome hidden).\n */\nexport const IrisAdminLayout = defineComponent({\n name: 'IrisAdminLayout',\n inheritAttrs: false,\n props: {\n /** Normalized nav tree driving menu + breadcrumb. */\n menus: { type: Array as PropType<NavNode[]>, required: true },\n /** Active page key (v-model:activeKey). */\n activeKey: { type: String, default: undefined },\n /** Sidebar collapsed (v-model:collapsed); undefined = uncontrolled. */\n collapsed: { type: Boolean as PropType<boolean | undefined>, default: undefined },\n defaultCollapsed: { type: Boolean, default: false },\n mode: { type: String as PropType<IrisAdminLayoutMode>, default: 'sidebar' },\n /** Brand text shown next to the logo when expanded. */\n appTitle: { type: String, default: 'Iris Admin' },\n /** Optional shared tabs store; when present the tab bar is rendered. */\n tabs: { type: Object as PropType<TabsNav>, default: undefined },\n showBreadcrumb: { type: Boolean, default: true },\n sidebarWidth: { type: [Number, String] as PropType<number | string>, default: 240 },\n collapsedWidth: { type: [Number, String] as PropType<number | string>, default: 64 },\n },\n emits: {\n 'update:activeKey': (_key: string) => true,\n 'update:collapsed': (_value: boolean) => true,\n select: (_key: string, _node: NavNode) => true,\n },\n setup(props, { emit, slots, attrs }) {\n const { t } = useI18n()\n\n const {\n activeKey,\n navigate,\n syncFromTab,\n breadcrumb: trail,\n } = useAdminShell({\n menus: () => props.menus,\n activeKey: () => props.activeKey,\n tabs: props.tabs,\n onActiveKeyChange: (key) => emit('update:activeKey', key),\n onSelect: (key, node) => emit('select', key, node),\n })\n\n const collapseControlled = computed(() => props.collapsed !== undefined)\n const internalCollapsed = ref(props.defaultCollapsed)\n const collapsed = computed(() =>\n collapseControlled.value ? (props.collapsed as boolean) : internalCollapsed.value,\n )\n const setCollapsed = (value: boolean): void => {\n if (!collapseControlled.value) internalCollapsed.value = value\n emit('update:collapsed', value)\n }\n\n // NavMenu / Breadcrumb emit (key, node); route the node through navigate.\n const onSelect = (_key: string, node: NavNode): void => navigate(node)\n\n // Tab activation (incl. close → neighbor) is the store's job; mirror it into\n // the layout's active key so the breadcrumb + content stay in sync.\n if (props.tabs) {\n const tabsActive = ref(props.tabs.getState().activeKey)\n const unsubscribe = props.tabs.subscribe((s) => {\n tabsActive.value = s.activeKey\n })\n onBeforeUnmount(unsubscribe)\n watch(tabsActive, (key) => {\n if (key) syncFromTab(key)\n })\n }\n\n const renderLogo = (state: { collapsed: boolean }): VNode | VNode[] => {\n if (slots.logo) return slots.logo(state) as VNode[]\n return h(\n 'div',\n {\n 'data-iris-admin-logo': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n height: '52px',\n padding: '0 16px',\n color: 'var(--iris-foreground)',\n fontWeight: '700',\n fontSize: '16px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n flexShrink: 0,\n },\n },\n [\n h(\n 'span',\n {\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: 'var(--iris-primary)',\n color: 'var(--iris-primary-foreground, #fff)',\n flexShrink: 0,\n },\n },\n [h(IrisIcon, { name: 'menu', size: 18 })],\n ),\n state.collapsed ? null : h('span', props.appTitle),\n ],\n )\n }\n\n const collapseToggle = (): VNode =>\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-admin-collapse': '',\n 'aria-label': collapsed.value ? t('admin.expandSidebar') : t('admin.collapseSidebar'),\n 'aria-pressed': collapsed.value ? 'true' : 'false',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '32px',\n height: '32px',\n border: 'none',\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: 'transparent',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n flexShrink: 0,\n },\n onClick: () => setCollapsed(!collapsed.value),\n },\n [h(IrisIcon, { name: collapsed.value ? 'chevron-right' : 'menu', size: 18 })],\n )\n\n const renderHeaderBar = (): VNode =>\n h(\n 'div',\n {\n 'data-iris-admin-headerbar': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n height: '52px',\n padding: '0 16px',\n borderBottom: '1px solid var(--iris-border)',\n background: 'var(--iris-background)',\n },\n },\n [\n collapseToggle(),\n props.showBreadcrumb\n ? h(IrisAdminBreadcrumb, { trail: trail.value, hideSingle: false, onSelect })\n : null,\n h('div', { style: { flex: '1' } }),\n slots.toolbar\n ? h(\n 'div',\n {\n 'data-iris-admin-toolbar': '',\n style: { display: 'flex', alignItems: 'center', gap: '8px' },\n },\n slots.toolbar(),\n )\n : null,\n ],\n )\n\n const renderContent = (): VNode =>\n h(\n 'div',\n { 'data-iris-admin-content': '', style: { padding: '16px' } },\n slots.default?.({ activeKey: activeKey.value }) ?? [],\n )\n\n return () => {\n if (props.mode === 'full-content') {\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-admin-layout': '',\n 'data-mode': 'full-content',\n style: {\n height: '100%',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.({ activeKey: activeKey.value }) ?? [],\n )\n }\n\n return h(\n IrisSidebarLayout,\n {\n ...attrs,\n collapsed: collapsed.value,\n width: props.sidebarWidth,\n collapsedWidth: props.collapsedWidth,\n 'onUpdate:collapsed': setCollapsed,\n 'data-iris-admin-layout': '',\n 'data-mode': 'sidebar',\n style: {\n height: '100vh',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n {\n sidebar: (state: { collapsed: boolean }) =>\n h(\n 'div',\n {\n 'data-iris-admin-sidebar': '',\n style: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n borderInlineEnd: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n },\n },\n [\n renderLogo(state),\n h(\n 'div',\n { style: { flex: '1', overflowY: 'auto', overflowX: 'hidden', padding: '8px' } },\n [\n h(IrisNavMenu, {\n items: props.menus,\n activeKey: activeKey.value,\n collapsed: state.collapsed,\n onSelect,\n }),\n ],\n ),\n ],\n ),\n default: () =>\n h(\n IrisHeaderLayout,\n { sticky: true },\n {\n header: () =>\n h('div', { 'data-iris-admin-header': '' }, [\n renderHeaderBar(),\n props.tabs ? h(IrisAdminTabs, { nav: props.tabs }) : null,\n ]),\n default: () => renderContent(),\n ...(slots.footer ? { footer: () => slots.footer!() } : {}),\n },\n ),\n },\n )\n }\n },\n})\n","import { shallowRef, type ShallowRef } from 'vue'\nimport { createUndoStack, type UndoStack, type UndoStackOptions } from '@iris-ui-kit/core/undo'\n\n/**\n * Reactive snapshot metadata for the UndoStack: convenience booleans that\n * update on every push/undo/redo/clear for use in UI bindings (enable/disable\n * undo/redo buttons).\n */\nexport interface UndoStackReactiveState {\n canUndo: boolean\n canRedo: boolean\n depth: number\n index: number\n}\n\n/**\n * Vue bridge over the framework-agnostic {@link createUndoStack}.\n * Creates the stack once in `setup()` and returns a stable controller\n * plus a reactive `state` that tracks `canUndo`/`canRedo`/`depth`/`index` for\n * easy UI binding.\n *\n * The returned `push`/`undo`/`redo`/`clear` automatically update the reactive\n * state — no manual `.value = ...` needed.\n *\n * @example\n * const { push, undo, redo, state } = useUndoStack({ initial: formValues })\n * // After mutation:\n * push(currentValues)\n * // In template:\n * <button :disabled=\"!state.canUndo\" @click=\"undo\">Undo</button>\n * <button :disabled=\"!state.canRedo\" @click=\"redo\">Redo</button>\n */\nexport function useUndoStack<T>(options?: UndoStackOptions<T>): {\n /** Push a new snapshot onto the stack. Returns the stored value. */\n push: (snapshot: T) => T\n /** Undo: returns the previous snapshot, or undefined if nothing to undo. */\n undo: () => T | undefined\n /** Redo: returns the next snapshot, or undefined if nothing to redo. */\n redo: () => T | undefined\n /** Clear all history. */\n clear: () => void\n /** The raw undo stack (stable reference, same across renders). */\n stack: UndoStack<T>\n /** Reactive metadata: canUndo, canRedo, depth, index. */\n state: ShallowRef<UndoStackReactiveState>\n} {\n const stack = createUndoStack<T>(options)\n\n const state = shallowRef<UndoStackReactiveState>({\n canUndo: stack.canUndo(),\n canRedo: stack.canRedo(),\n depth: stack.depth,\n index: stack.index,\n })\n\n const sync = () => {\n state.value = {\n canUndo: stack.canUndo(),\n canRedo: stack.canRedo(),\n depth: stack.depth,\n index: stack.index,\n }\n }\n\n const push = (snapshot: T): T => {\n const result = stack.push(snapshot)\n sync()\n return result\n }\n\n const undo = (): T | undefined => {\n const result = stack.undo()\n if (result !== undefined) sync()\n return result\n }\n\n const redo = (): T | undefined => {\n const result = stack.redo()\n if (result !== undefined) sync()\n return result\n }\n\n const clear = () => {\n stack.clear()\n sync()\n }\n\n return { push, undo, redo, clear, stack, state }\n}\n","import { type InjectionKey } from 'vue'\n\n/**\n * Shape carried by the plugin-store context: the live store instances collected\n * from every installed plugin, plus the set of installed plugin names. Surfaced\n * to descendants through `usePluginStore` / `usePlugin`.\n */\nexport interface PluginStoreContext {\n stores: Map<string, unknown>\n installed: Set<string>\n}\n\n/**\n * Injection key for the {@link PluginStoreContext}. The name ends in `Key` (and\n * the type in `Context`) so the manifest's discover step never mistakes it for a\n * component export.\n */\nexport const PluginStoreContextKey: InjectionKey<PluginStoreContext> = Symbol('IrisPluginStore')\n","import {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n provide,\n type PropType,\n type VNode,\n} from 'vue'\nimport { runPlugins, type IrisPlugin } from '@iris-ui-kit/core'\nimport { applyCssVars, type ApplyCssVarsResult, type ThemeStore } from '@iris-ui-kit/theme'\nimport type { SkinEngine } from '@iris-ui-kit/skins'\nimport { ThemeProvider } from '../theme'\nimport { SkinProvider } from '../skins'\nimport { IrisI18nProvider } from '../i18n'\nimport { PluginStoreContextKey } from './context'\n\nconst DEFAULT_LOCALE = 'en-US'\n\n/** Public prop surface of {@link IrisProvider}. */\nexport interface IrisProviderProps {\n /** Theme store; when present the inner `ThemeProvider` wraps the subtree. */\n theme?: ThemeStore\n /** Skin engine; when present the inner `SkinProvider` wraps the subtree. */\n skin?: SkinEngine\n /** Writing direction, forwarded to `ThemeProvider` when a theme is given. */\n dir?: 'ltr' | 'rtl'\n /** Active BCP-47 locale; defaults to `'en-US'`. */\n locale?: string\n /** User messages — merged OVER plugin-registered messages (user wins). */\n messages?: Record<string, string>\n /** Plugins to install; their tokens / messages / stores are collected once. */\n plugins?: IrisPlugin[]\n /** Element receiving the plugin token layer; defaults to `documentElement`. */\n target?: HTMLElement | null\n}\n\n/**\n * The single unified Iris entry point. Runs `plugins` through the core\n * `runPlugins` collector and wires the result into the theme (tokens), i18n\n * (messages) and a plugin-store context, composing the existing per-framework\n * providers. A thin bridge — the real logic lives in `@iris-ui-kit/core`.\n *\n * Render order when present: Theme → Skin → I18n → PluginContext → children.\n */\nexport const IrisProvider = defineComponent({\n name: 'IrisProvider',\n props: {\n theme: { type: Object as PropType<ThemeStore>, default: undefined },\n skin: { type: Object as PropType<SkinEngine>, default: undefined },\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n locale: { type: String, default: undefined },\n messages: { type: Object as PropType<Record<string, string>>, default: undefined },\n plugins: { type: Array as PropType<IrisPlugin[]>, default: undefined },\n target: { type: Object as PropType<HTMLElement | null>, default: null },\n },\n setup(props, { slots }) {\n // Sync, pure, deterministic — computed once per setup over `plugins`.\n const collected = runPlugins(props.plugins ?? [])\n\n // tokens → additive CSS-var layer over the active theme; reverted on unmount.\n let applied: ApplyCssVarsResult | null = null\n onMounted(() => {\n if (typeof document === 'undefined') return\n const el = props.target ?? document.documentElement\n applied = applyCssVars(Object.entries(collected.tokens), el)\n })\n onBeforeUnmount(() => {\n applied?.revert()\n applied = null\n // Run plugin teardowns on unmount so eager stores / subscriptions /\n // timers don't leak. Idempotent and safe with no plugins.\n collected.teardown()\n })\n\n // stores + installed names → PluginStoreContext.\n provide(PluginStoreContextKey, {\n stores: collected.stores,\n installed: new Set((props.plugins ?? []).map((p) => p.name)),\n })\n\n return () => {\n const locale = props.locale ?? DEFAULT_LOCALE\n // Plugin messages as BASE, user messages WIN.\n const messages = { ...collected.messages[locale], ...(props.messages ?? {}) }\n\n // I18n always renders, wrapping children.\n let tree: VNode = h(\n IrisI18nProvider,\n { locale: props.locale, messages },\n { default: () => slots.default?.() },\n )\n // Skin wraps only when a `skin` engine is supplied.\n if (props.skin) {\n tree = h(\n SkinProvider,\n { engine: props.skin, target: props.target },\n { default: () => tree },\n )\n }\n // Theme wraps only when a `theme` store is supplied.\n if (props.theme) {\n tree = h(\n ThemeProvider,\n { store: props.theme, target: props.target, dir: props.dir ?? 'ltr' },\n { default: () => tree },\n )\n }\n return tree\n }\n },\n})\n","import { inject } from 'vue'\nimport { PluginStoreContextKey } from './context'\n\n/** Whether the named plugin is installed by the nearest `<IrisProvider>`. */\nexport function usePlugin(name: string): boolean {\n const ctx = inject(PluginStoreContextKey, null)\n return ctx ? ctx.installed.has(name) : false\n}\n\n// Tracks ambiguous store key warnings to avoid spamming the console.\nconst warnedKeys = new Map<string, boolean>()\n\n/**\n * Read a plugin-registered store by `key` (backward-compatible single-arg form).\n * Throws a clear error when used outside an `<IrisProvider>`.\n */\nexport function usePluginStore<T>(key: string): T\n\n/**\n * Read a plugin-registered store by `namespace` + `key`.\n */\nexport function usePluginStore<T>(namespace: string, key: string): T\n\nexport function usePluginStore<T>(nsOrKey: string, key?: string): T {\n const ctx = inject(PluginStoreContextKey, null)\n if (!ctx) {\n const displayKey = key !== undefined ? `${nsOrKey}::${key}` : nsOrKey\n throw new Error(`[iris-ui] usePluginStore(\"${displayKey}\"): no <IrisProvider> ancestor found`)\n }\n\n const fullKey = key !== undefined ? `${nsOrKey}::${key}` : nsOrKey\n\n // 1. Direct lookup\n let store = ctx.stores.get(fullKey) as T | undefined\n if (store !== undefined) return store\n\n // 2. Single-arg fallback\n if (key === undefined) {\n store = ctx.stores.get(nsOrKey) as T | undefined\n if (store !== undefined) return store\n\n for (const k of ctx.stores.keys()) {\n if (typeof k === 'string' && k.endsWith(`::${nsOrKey}`)) {\n // Warn at most once per ambiguous key.\n if (!warnedKeys.has(nsOrKey)) {\n warnedKeys.set(nsOrKey, true)\n console.warn(\n `[iris-ui] Ambiguous plugin store key \"${nsOrKey}\". ` +\n `Found \"${k}\". Use the namespaced form: usePluginStore(\"${k}\").`,\n )\n }\n return ctx.stores.get(k) as T\n }\n }\n }\n\n throw new Error(\n `[iris-ui] Plugin store \"${fullKey}\" not found. ` +\n `Ensure the plugin is installed in IrisProvider and the key is correct.`,\n )\n}\n","import { defineComponent, h, onErrorCaptured, ref, type PropType, type VNode } from 'vue'\nimport { useI18n } from '../i18n'\n\n/** Render-customization payload handed to the `#fallback` slot / `fallback` prop. */\nexport interface IrisErrorBoundaryFallbackProps {\n /** The error caught while rendering the guarded subtree. */\n error: unknown\n /** Clears the error and re-attempts rendering the children. */\n reset: () => void\n}\n\n/** Public prop surface of {@link IrisErrorBoundary}. */\nexport interface IrisErrorBoundaryProps {\n /**\n * Custom fallback renderer. Receives `{ error, reset }` and returns the\n * fallback UI. A `#fallback` scoped slot takes precedence when both are given.\n * When neither is supplied the themed DEFAULT fallback renders.\n */\n fallback?: (props: IrisErrorBoundaryFallbackProps) => VNode | VNode[] | string\n /** Invoked with the caught error (and Vue's error-info string) for logging. */\n onError?: (error: unknown, info?: string) => void\n}\n\n/**\n * IrisErrorBoundary: catches errors thrown while rendering its guarded subtree\n * (default slot), switches to a fallback, and exposes `reset()` to clear the\n * error and re-attempt rendering. Catching does NOT rethrow — a single broken\n * subtree no longer crashes the whole tree.\n *\n * Customize via a `#fallback` scoped slot or the `fallback` prop, each receiving\n * `{ error, reset }`. Without either, a themed, accessible (`role=\"alert\"`)\n * default fallback shows the error message + a retry button, i18n'd through\n * `useI18n()` (English defaults without a provider).\n */\nexport const IrisErrorBoundary = defineComponent({\n name: 'IrisErrorBoundary',\n inheritAttrs: false,\n props: {\n fallback: {\n type: Function as PropType<IrisErrorBoundaryProps['fallback']>,\n default: undefined,\n },\n onError: {\n type: Function as PropType<IrisErrorBoundaryProps['onError']>,\n default: undefined,\n },\n },\n setup(props, { attrs, slots }) {\n const { t } = useI18n()\n const error = ref<unknown>(null)\n\n const reset = () => {\n error.value = null\n }\n\n onErrorCaptured((err, _instance, info) => {\n error.value = err\n props.onError?.(err, info)\n // Stop further propagation so the error does not crash the parent tree.\n return false\n })\n\n const renderDefaultFallback = (): VNode => {\n const message =\n error.value instanceof Error && error.value.message\n ? error.value.message\n : t('errorBoundary.message')\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-error-boundary': '',\n role: 'alert',\n style: {\n padding: '16px',\n border: '1px solid var(--iris-danger)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n color: 'var(--iris-danger)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('div', { 'data-iris-error-boundary-message': '' }, message),\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-error-boundary-retry': '',\n onClick: reset,\n },\n t('errorBoundary.retry'),\n ),\n ],\n )\n }\n\n return () => {\n if (error.value !== null) {\n const custom = slots.fallback ?? props.fallback\n if (custom) {\n return custom({ error: error.value, reset })\n }\n return renderDefaultFallback()\n }\n return slots.default?.()\n }\n },\n})\n","/**\n * Singleton stylesheet for `IrisButton`. Lives in a single injected\n * `<style id=\"iris-button-styles\">` block. Holds only what cannot be inline:\n *\n * - `:hover` / `:focus-visible` pseudo-states\n * - `:disabled` / `[aria-busy=\"true\"]` attribute selectors\n * - The spinner keyframe\n *\n * Everything else (variant colors, size paddings) ships as inline `style`\n * bindings on each button instance, which keeps theme switching instant\n * because the values are CSS variables.\n *\n * Injection is **lazy** (first `IrisButton` mount triggers it) and\n * **idempotent** (subsequent mounts are no-ops). Safe under SSR — the\n * function short-circuits when `document` is undefined.\n */\n\nconst STYLE_ID = 'iris-button-styles'\n\nconst CSS = `\n.iris-button {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--iris-gap-sm, 4px);\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n border-radius: var(--iris-radius-md, 6px);\n white-space: nowrap;\n user-select: none;\n position: relative;\n transition:\n background-color 120ms ease,\n border-color 120ms ease,\n color 120ms ease,\n filter 120ms ease;\n}\n.iris-button:focus-visible {\n outline: 2px solid var(--iris-primary);\n outline-offset: 2px;\n}\n.iris-button[disabled],\n.iris-button[aria-busy=\"true\"] {\n cursor: not-allowed;\n opacity: 0.6;\n}\n.iris-button[data-iris-button-variant=\"solid\"]:not([disabled]):not([aria-busy=\"true\"]):hover {\n filter: brightness(1.08);\n}\n.iris-button[data-iris-button-variant=\"outline\"]:not([disabled]):not([aria-busy=\"true\"]):hover,\n.iris-button[data-iris-button-variant=\"ghost\"]:not([disabled]):not([aria-busy=\"true\"]):hover {\n background-color: var(--iris-surface-hover);\n}\n.iris-button[data-iris-button-variant=\"link\"]:not([disabled]):not([aria-busy=\"true\"]):hover {\n text-decoration: underline;\n}\n.iris-button-leading {\n display: inline-flex;\n align-items: center;\n}\n.iris-button-spinner {\n width: 1em;\n height: 1em;\n display: inline-block;\n animation: iris-button-spin 0.7s linear infinite;\n}\n@keyframes iris-button-spin {\n to { transform: rotate(360deg); }\n}\n`\n\nlet installed = false\n\nexport function installButtonStyles(): void {\n if (installed) return\n if (typeof document === 'undefined') return\n if (document.getElementById(STYLE_ID)) {\n installed = true\n return\n }\n const style = document.createElement('style')\n style.id = STYLE_ID\n style.textContent = CSS\n document.head.appendChild(style)\n installed = true\n}\n\n/** Test-only reset. Removes the injected `<style>` and clears the flag. */\nexport function __resetButtonStyles(): void {\n installed = false\n if (typeof document === 'undefined') return\n document.getElementById(STYLE_ID)?.remove()\n}\n\n/** Test-only inspection of the cached install flag. */\nexport const __BUTTON_STYLE_ID = STYLE_ID\n","import { computed, defineComponent, h, type PropType, type VNode } from 'vue'\nimport type { IrisButtonSize, IrisButtonType, IrisButtonVariant } from './types'\nimport { installButtonStyles } from './styles'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\n\ntype StyleMap = Record<string, string>\n\nconst SIZE_STYLES: Record<IrisButtonSize, StyleMap> = {\n sm: {\n padding: 'var(--iris-padding-sm) var(--iris-padding-md)',\n fontSize: '12px',\n },\n md: {\n padding: 'var(--iris-padding-sm) var(--iris-padding-lg)',\n fontSize: '14px',\n },\n lg: {\n padding: 'var(--iris-padding-md) var(--iris-padding-lg)',\n fontSize: '16px',\n },\n}\n\nconst VARIANT_STYLES: Record<IrisButtonVariant, StyleMap> = {\n solid: {\n background: 'var(--iris-primary)',\n color: 'var(--iris-primary-foreground)',\n border: '1px solid var(--iris-primary)',\n },\n outline: {\n background: 'transparent',\n color: 'var(--iris-primary)',\n border: '1px solid var(--iris-border)',\n },\n ghost: {\n background: 'transparent',\n color: 'var(--iris-foreground)',\n border: '1px solid transparent',\n },\n link: {\n background: 'transparent',\n color: 'var(--iris-primary)',\n border: '1px solid transparent',\n textDecoration: 'none',\n },\n}\n\nfunction buildInlineStyle(variant: IrisButtonVariant, size: IrisButtonSize): StyleMap {\n const base: StyleMap = { ...SIZE_STYLES[size], ...VARIANT_STYLES[variant] }\n if (variant === 'link') {\n base.padding = '0'\n }\n return base\n}\n\nfunction renderSpinner(): VNode {\n return h(\n 'svg',\n {\n class: 'iris-button-spinner',\n viewBox: '0 0 24 24',\n fill: 'none',\n 'aria-hidden': 'true',\n },\n [\n h('circle', {\n cx: '12',\n cy: '12',\n r: '10',\n stroke: 'currentColor',\n 'stroke-opacity': '0.25',\n 'stroke-width': '3',\n }),\n h('path', {\n d: 'M22 12a10 10 0 0 1-10 10',\n stroke: 'currentColor',\n 'stroke-width': '3',\n 'stroke-linecap': 'round',\n }),\n ],\n )\n}\n\n/**\n * Foundational button primitive. Props-driven, no internal state machine —\n * Button's behavior is fully derived from `variant`, `size`, `disabled`, and\n * `loading`. Composite primitives (Popover, Tooltip, Dialog, Select) **do**\n * need state machines; Button does not, and forcing one on it would violate\n * the project's \"use a machine only when there is observable state to model\"\n * rule.\n *\n * Styling: variant colors and size paddings ship as inline `style` referencing\n * `var(--iris-*)` so theme switching is instant. A small singleton stylesheet\n * (auto-installed on first mount, removable in tests) covers `:hover`,\n * `:focus-visible`, and the spinner keyframe — things inline `style` cannot\n * express.\n *\n * Accessibility:\n * - native `<button>` (focusable, keyboard-activatable by default)\n * - `disabled` → HTML `disabled` + `aria-disabled=\"true\"`\n * - `loading` → `aria-busy=\"true\"` + click swallowed\n * - default `type=\"button\"` to prevent accidental form submission\n *\n * @example\n * <IrisButton variant=\"solid\" size=\"md\" @click=\"save\">Save</IrisButton>\n *\n * @example\n * <IrisButton variant=\"outline\" :loading=\"isSaving\" @click=\"save\">\n * <template #leading><CheckIcon /></template>\n * Save\n * </IrisButton>\n */\nexport const IrisButton = defineComponent({\n name: 'IrisButton',\n props: {\n variant: { type: String as PropType<IrisButtonVariant>, default: 'solid' },\n size: { type: String as PropType<IrisButtonSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n type: { type: String as PropType<IrisButtonType>, default: 'button' },\n asChild: { type: Boolean, default: false },\n },\n emits: {\n click: (_event: MouseEvent) => true,\n },\n setup(props, { slots, emit }) {\n installButtonStyles()\n\n const isInteractive = computed(() => !props.disabled && !props.loading)\n const inlineStyle = computed(() => buildInlineStyle(props.variant, props.size))\n\n const onClick = (event: MouseEvent) => {\n if (!isInteractive.value) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n emit('click', event)\n }\n\n return () => {\n const baseProps: Record<string, unknown> = {\n class: 'iris-button',\n 'data-iris-button-variant': props.variant,\n 'data-iris-button-size': props.size,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'aria-busy': props.loading ? 'true' : undefined,\n style: inlineStyle.value,\n onClick,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisButton: as-child requires a single child element')\n }\n return null\n }\n // For non-<button> roots, the `disabled` HTML attribute may be a no-op.\n // We still set `aria-disabled` (above) and intercept clicks via\n // `composeEventHandlers` inside `mergeSlotProps`, which bails out if\n // the parent handler calls `event.preventDefault()`.\n const parentProps: Record<string, unknown> = {\n ...baseProps,\n disabled: isInteractive.value ? undefined : true,\n }\n const merged = mergeSlotProps(parentProps, (root.props ?? {}) as Record<string, unknown>)\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n const leadingContent: VNode | VNode[] | undefined = props.loading\n ? renderSpinner()\n : slots.leading?.()\n\n const children: Array<VNode | VNode[] | undefined> = []\n if (leadingContent) {\n children.push(h('span', { class: 'iris-button-leading' }, leadingContent))\n }\n const defaultSlot = slots.default?.()\n if (defaultSlot) children.push(defaultSlot)\n\n return h(\n 'button',\n {\n ...baseProps,\n type: props.type,\n disabled: isInteractive.value ? undefined : true,\n },\n children,\n )\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { FloatingMachine, Placement } from '@iris-ui-kit/core'\n\nexport interface PopoverContext {\n machine: FloatingMachine\n open: ComputedRef<boolean>\n setOpen: (value: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n contentId: string\n placement: Placement\n offset: number\n}\n\nexport const PopoverContextKey: InjectionKey<PopoverContext> = Symbol('IrisPopover')\n","import { computed, defineComponent, provide, ref, useId, watch, type PropType } from 'vue'\nimport { createFloatingMachine, type Placement } from '@iris-ui-kit/core'\nimport { useMachine } from '../../machine/useMachine'\nimport { PopoverContextKey } from './context'\n\n/**\n * Root provider for a Popover surface. Wraps the trigger and the content,\n * threads a state machine + DOM refs + positioning options through provide /\n * inject. Supports controlled (`open` + `@update:open`) and uncontrolled\n * (`defaultOpen`) modes.\n *\n * Composition:\n *\n * <IrisPopover v-model:open=\"open\" placement=\"bottom-start\">\n * <IrisPopoverTrigger>Click me</IrisPopoverTrigger>\n * <IrisPopoverContent>...</IrisPopoverContent>\n * </IrisPopover>\n */\nexport const IrisPopover = defineComponent({\n name: 'IrisPopover',\n props: {\n /** Controlled open value. Combine with `@update:open` (or `v-model:open`). */\n open: { type: Boolean, default: undefined },\n /** Initial open value in uncontrolled mode. */\n defaultOpen: { type: Boolean, default: false },\n /** Anchor placement; may be flipped by Floating UI to stay in view. */\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n /** Distance in px between trigger and content. */\n offset: { type: Number, default: 8 },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const isControlled = computed(() => props.open !== undefined)\n\n const machine = createFloatingMachine(props.defaultOpen ? 'open' : 'closed')\n const { state, send } = useMachine(machine)\n\n // Sync controlled prop → machine\n watch(\n () => props.open,\n (value) => {\n if (value === undefined) return\n const currentlyOpen = state.value.value === 'open'\n if (value && !currentlyOpen) send({ type: 'OPEN' })\n if (!value && currentlyOpen) send({ type: 'CLOSE' })\n },\n { immediate: true },\n )\n\n const open = computed(() =>\n isControlled.value ? Boolean(props.open) : state.value.value === 'open',\n )\n\n const setOpen = (value: boolean) => {\n if (!isControlled.value) {\n send({ type: value ? 'OPEN' : 'CLOSE' })\n }\n emit('update:open', value)\n }\n\n const triggerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const contentId = useId()\n\n provide(PopoverContextKey, {\n machine,\n open,\n setOpen,\n triggerRef,\n contentRef,\n contentId,\n placement: props.placement,\n offset: props.offset,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, inject, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { PopoverContextKey } from './context'\n\n/**\n * The element the user interacts with to toggle the Popover. Defaults to a\n * `<button type=\"button\">`; pass `as-child` to attach behavior to any\n * existing element (e.g. `<IrisButton>` or `<RouterLink>`).\n *\n * Wires a11y attributes:\n * - `aria-haspopup=\"dialog\"`\n * - `aria-expanded=\"true|false\"` driven by the open state\n * - `aria-controls` pointing at the content's id\n *\n * Clicking it sends `TOGGLE` to the Popover's state machine.\n */\nexport const IrisPopoverTrigger = defineComponent({\n name: 'IrisPopoverTrigger',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(PopoverContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisPopoverTrigger must be a descendant of IrisPopover')\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(!ctx.open.value)\n }\n\n const captureRef = (el: unknown) => {\n ctx.triggerRef.value = (el ?? null) as HTMLElement | null\n }\n\n return () => {\n const triggerProps: Record<string, unknown> = {\n 'aria-haspopup': 'dialog',\n 'aria-expanded': ctx.open.value ? 'true' : 'false',\n 'aria-controls': ctx.contentId,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n onClick,\n ref: captureRef,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisPopoverTrigger: as-child requires a single child element')\n }\n return null\n }\n const childProps = (root.props ?? {}) as Record<string, unknown>\n // Compose: parent attrs + our trigger props + child's existing props.\n const parentSide = mergeSlotProps(attrs as Record<string, unknown>, triggerProps)\n const merged = mergeSlotProps(parentSide, childProps)\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n return h(\n 'button',\n {\n type: 'button',\n ...attrs,\n ...triggerProps,\n },\n slots.default?.(),\n )\n }\n },\n})\n","import {\n Teleport,\n computed,\n defineComponent,\n h,\n inject,\n nextTick,\n ref,\n watch,\n type PropType,\n} from 'vue'\nimport { useFloating } from '../floating/useFloating'\nimport { useDismiss } from '../floating/useDismiss'\nimport { PopoverContextKey } from './context'\n\n/**\n * The floating panel rendered when the Popover is open. Position is computed\n * by `useFloating` (Floating UI); dismissal (outside pointerdown + Escape)\n * is handled by `useDismiss`. Focus moves into the content on open and back\n * to the trigger on close.\n *\n * The content is teleported to `document.body` by default to avoid stacking\n * / overflow / z-index foot-guns. Pass `:teleport=\"false\"` to render inline.\n */\nexport const IrisPopoverContent = defineComponent({\n name: 'IrisPopoverContent',\n inheritAttrs: false,\n props: {\n /** Teleport target — pass `false` to render in place. */\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(PopoverContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisPopoverContent must be a descendant of IrisPopover')\n }\n\n const innerRef = ref<HTMLElement | null>(null)\n // Mirror into ctx.contentRef so siblings (Trigger, useDismiss) can see it.\n watch(innerRef, (el) => {\n ctx.contentRef.value = el\n })\n\n const { floatingStyles } = useFloating({\n anchor: ctx.triggerRef,\n floating: innerRef,\n open: ctx.open,\n placement: ctx.placement,\n offset: ctx.offset,\n })\n\n useDismiss({\n enabled: ctx.open,\n exclude: [ctx.triggerRef, innerRef],\n onDismiss: () => ctx.setOpen(false),\n })\n\n // Focus management: focus content on open; restore focus to trigger on close.\n let lastFocused: HTMLElement | null = null\n watch(ctx.open, async (isOpen, wasOpen) => {\n if (isOpen && !wasOpen) {\n lastFocused = (document.activeElement as HTMLElement | null) ?? ctx.triggerRef.value\n await nextTick()\n innerRef.value?.focus()\n } else if (!isOpen && wasOpen) {\n const target = ctx.triggerRef.value ?? lastFocused\n target?.focus()\n }\n })\n\n const contentVNode = computed(() =>\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n innerRef.value = (el ?? null) as HTMLElement | null\n },\n id: ctx.contentId,\n role: 'dialog',\n tabindex: -1,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n 'data-placement': ctx.placement,\n style: {\n ...floatingStyles.value,\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md)',\n padding: 'var(--iris-padding-md)',\n boxShadow: '0 8px 24px -8px rgba(0, 0, 0, 0.16), 0 4px 8px -2px rgba(0, 0, 0, 0.08)',\n fontSize: '14px',\n zIndex: '1000',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n ),\n )\n\n return () => {\n if (!ctx.open.value) return null\n const node = contentVNode.value\n if (props.teleport === false) return node\n return h(Teleport, { to: props.teleport as string | HTMLElement }, [node])\n }\n },\n})\n","import {\n Fragment,\n Teleport,\n defineComponent,\n h,\n onScopeDispose,\n ref,\n useId,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport { createHoverIntent, type Placement } from '@iris-ui-kit/core'\nimport { useFloating } from '../floating/useFloating'\nimport { composeRefs, findFirstElement, mergeSlotProps } from '../slot/Slot'\n\n/**\n * Hover / focus triggered tooltip. Powered by `createHoverIntent` state machine.\n *\n * Zero-delay uses `hi.open()`/`hi.close()` (FORCE_OPEN/FORCE_CLOSE — single\n * machine transition) so Vue reactively updates synchronously. Positive delays\n * use `hi.pointerEnter()`/`hi.pointerLeave()` with the machine's after-timer.\n *\n * @example\n * <IrisTooltip content=\"Save changes\">\n * <IrisButton>Save</IrisButton>\n * </IrisTooltip>\n */\nexport const IrisTooltip = defineComponent({\n name: 'IrisTooltip',\n inheritAttrs: false,\n props: {\n /** Plain-text tooltip content. Use the `content` slot for rich content. */\n content: { type: String, default: '' },\n /** Side relative to the trigger; may flip to stay in view. */\n placement: { type: String as PropType<Placement>, default: 'top' },\n /** Pixel offset between trigger and tooltip. */\n offset: { type: Number, default: 6 },\n /** Hover/focus dwell before opening, in ms. */\n openDelay: { type: Number, default: 600 },\n /** Hover/blur dwell before closing, in ms. */\n closeDelay: { type: Number, default: 0 },\n /** Teleport target — pass `false` to render in place. */\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n /** Portal target (cross-framework alias for `teleport`). Overrides `teleport` when set. */\n portalTarget: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: undefined,\n },\n /** Disable the tooltip without removing the trigger. */\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const triggerRef = ref<HTMLElement | null>(null)\n const tooltipRef = ref<HTMLElement | null>(null)\n const tooltipId = useId()\n const open = ref(false)\n\n // createHoverIntent with synchronous onChange bridge to Vue ref.\n let hi: ReturnType<typeof createHoverIntent> = createHoverIntent({\n openDelay: props.openDelay,\n closeDelay: props.closeDelay,\n onChange: (v) => {\n open.value = v\n },\n })\n\n // Re-create when delays change (watcher fires on mount too).\n watch(\n () => [props.openDelay, props.closeDelay],\n ([od, cd]) => {\n hi.stop()\n hi = createHoverIntent({\n openDelay: od,\n closeDelay: cd,\n onChange: (v) => {\n open.value = v\n },\n })\n },\n )\n\n onScopeDispose(() => hi.stop())\n\n // Escape closes immediately.\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && open.value) hi.close()\n }\n watch(open, (isOpen) => {\n if (typeof document === 'undefined') return\n if (isOpen) document.addEventListener('keydown', onKeyDown)\n else document.removeEventListener('keydown', onKeyDown)\n })\n\n // If disabled while open, close immediately.\n watch(\n () => props.disabled,\n (disabled) => {\n if (disabled && open.value) hi.close()\n },\n )\n\n const { floatingStyles } = useFloating({\n anchor: triggerRef,\n floating: tooltipRef,\n open,\n placement: props.placement,\n offset: props.offset,\n })\n\n // 0-delay → FORCE_OPEN/COSE (single transition, sync Vue reactivity).\n // Positive delay → pointerEnter/Leave (machine after-timer).\n const handleEnter = () => {\n if (props.disabled) return\n if (props.openDelay > 0) hi.pointerEnter()\n else hi.open()\n }\n const handleLeave = () => {\n if (props.disabled) return\n if (props.closeDelay > 0) hi.pointerLeave()\n else hi.close()\n }\n\n const triggerListeners: Record<string, (event: Event) => void> = {\n onPointerenter: handleEnter as unknown as (e: Event) => void,\n onPointerleave: handleLeave as unknown as (e: Event) => void,\n onFocus: (() => {\n if (!props.disabled) hi.open()\n }) as unknown as (e: Event) => void,\n onBlur: (() => {\n if (!props.disabled) hi.close()\n }) as unknown as (e: Event) => void,\n }\n\n const captureTriggerRef = (el: unknown) => {\n triggerRef.value = (el ?? null) as HTMLElement | null\n }\n\n const renderTrigger = () => {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn(\n '[iris-ui] IrisTooltip requires a single trigger element in the default slot',\n )\n }\n return null\n }\n\n const parentProps: Record<string, unknown> = {\n ...triggerListeners,\n ref: captureTriggerRef,\n 'aria-describedby': open.value ? tooltipId : undefined,\n }\n\n const merged = mergeSlotProps(parentProps, (root.props ?? {}) as Record<string, unknown>)\n if (root.props && 'ref' in root.props) {\n merged.ref = composeRefs(captureTriggerRef, (root.props as Record<string, unknown>).ref)\n }\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n const renderTooltip = (): VNode | null => {\n if (!open.value) return null\n const tooltipNode = h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n tooltipRef.value = (el ?? null) as HTMLElement | null\n },\n id: tooltipId,\n role: 'tooltip',\n 'data-state': open.value ? 'open' : 'closed',\n 'data-placement': props.placement,\n style: {\n ...floatingStyles.value,\n background: 'var(--iris-foreground)',\n color: 'var(--iris-background)',\n padding: '4px 8px',\n borderRadius: 'var(--iris-radius-sm)',\n fontSize: '12px',\n lineHeight: '1.4',\n maxWidth: '240px',\n pointerEvents: 'none',\n zIndex: '1100',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.content?.() ?? props.content,\n )\n const portalDest = props.portalTarget !== undefined ? props.portalTarget : props.teleport\n if (portalDest === false) return tooltipNode\n return h(Teleport, { to: portalDest as string | HTMLElement }, [tooltipNode])\n }\n\n return () => {\n const trigger = renderTrigger()\n const tooltip = renderTooltip()\n return h(Fragment, null, [trigger, tooltip])\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { FloatingMachine } from '@iris-ui-kit/core'\n\nexport interface DialogContext {\n machine: FloatingMachine\n open: ComputedRef<boolean>\n setOpen: (value: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n contentId: string\n titleId: string\n descriptionId: string\n hasTitle: Ref<boolean>\n hasDescription: Ref<boolean>\n /** Close when the user clicks outside the content (on the backdrop). */\n closeOnOutsideClick: boolean\n /** Close when the user presses Escape. */\n closeOnEscape: boolean\n}\n\nexport const DialogContextKey: InjectionKey<DialogContext> = Symbol('IrisDialog')\n","import { computed, defineComponent, provide, ref, useId, watch } from 'vue'\nimport { createFloatingMachine } from '@iris-ui-kit/core'\nimport { useMachine } from '../../machine/useMachine'\nimport { DialogContextKey } from './context'\n\n/**\n * Modal dialog root. Wraps a Trigger + Content (+ optional Title /\n * Description / Close) and threads a state machine + DOM refs + IDs through\n * provide / inject. Supports controlled (`open` + `@update:open`) and\n * uncontrolled (`defaultOpen`) modes.\n *\n * Unlike `IrisPopover`, Dialog:\n * - centers content with no anchor positioning,\n * - locks body scroll while open,\n * - traps Tab focus inside the content,\n * - renders a backdrop overlay that dismisses on click.\n */\nexport const IrisDialog = defineComponent({\n name: 'IrisDialog',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n /** Close on backdrop click. Default `true`. */\n closeOnOutsideClick: { type: Boolean, default: true },\n /** Close on Escape key. Default `true`. */\n closeOnEscape: { type: Boolean, default: true },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const isControlled = computed(() => props.open !== undefined)\n\n const machine = createFloatingMachine(props.defaultOpen ? 'open' : 'closed')\n const { state, send } = useMachine(machine)\n\n watch(\n () => props.open,\n (value) => {\n if (value === undefined) return\n const currentlyOpen = state.value.value === 'open'\n if (value && !currentlyOpen) send({ type: 'OPEN' })\n if (!value && currentlyOpen) send({ type: 'CLOSE' })\n },\n { immediate: true },\n )\n\n const open = computed(() =>\n isControlled.value ? Boolean(props.open) : state.value.value === 'open',\n )\n\n const setOpen = (value: boolean) => {\n if (!isControlled.value) {\n send({ type: value ? 'OPEN' : 'CLOSE' })\n }\n emit('update:open', value)\n }\n\n const triggerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const contentId = useId()\n const titleId = useId()\n const descriptionId = useId()\n const hasTitle = ref(false)\n const hasDescription = ref(false)\n\n provide(DialogContextKey, {\n machine,\n open,\n setOpen,\n triggerRef,\n contentRef,\n contentId,\n titleId,\n descriptionId,\n hasTitle,\n hasDescription,\n closeOnOutsideClick: props.closeOnOutsideClick,\n closeOnEscape: props.closeOnEscape,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, inject, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { DialogContextKey } from './context'\n\n/** Trigger button that opens the Dialog. Supports `as-child` polymorphism. */\nexport const IrisDialogTrigger = defineComponent({\n name: 'IrisDialogTrigger',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DialogContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDialogTrigger must be a descendant of IrisDialog')\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(true)\n }\n\n const captureRef = (el: unknown) => {\n ctx.triggerRef.value = (el ?? null) as HTMLElement | null\n }\n\n return () => {\n const triggerProps: Record<string, unknown> = {\n 'aria-haspopup': 'dialog',\n 'aria-expanded': ctx.open.value ? 'true' : 'false',\n 'aria-controls': ctx.contentId,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n onClick,\n ref: captureRef,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisDialogTrigger: as-child requires a single child element')\n }\n return null\n }\n const parentSide = mergeSlotProps(attrs as Record<string, unknown>, triggerProps)\n const merged = mergeSlotProps(parentSide, (root.props ?? {}) as Record<string, unknown>)\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n return h('button', { type: 'button', ...attrs, ...triggerProps }, slots.default?.())\n }\n },\n})\n","import { onScopeDispose, watch, type Ref } from 'vue'\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n 'iframe',\n 'object',\n 'embed',\n].join(',')\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !el.hasAttribute('disabled') && el.tabIndex !== -1,\n )\n}\n\nexport interface UseFocusTrapOptions {\n /** Element whose Tab key cycle is being trapped. */\n container: Ref<HTMLElement | null>\n /** Whether the trap is currently active. */\n active: Ref<boolean>\n /** Element to restore focus to when the trap deactivates. */\n returnFocusTo?: Ref<HTMLElement | null | undefined>\n /** Whether to focus the first focusable element on activation. Default `true`. */\n initialFocus?: boolean\n}\n\n/**\n * Constrain Tab / Shift+Tab focus traversal to descendants of `container`.\n *\n * Behavior on activation:\n * - Records the currently focused element.\n * - If `initialFocus !== false`, focuses the first focusable descendant\n * (or the container itself if there are none).\n *\n * Behavior while active:\n * - Tab on the last focusable element wraps to the first; Shift+Tab on\n * the first wraps to the last.\n *\n * Behavior on deactivation:\n * - Restores focus to `returnFocusTo?.value` if provided, else to the\n * element that was focused when the trap activated.\n */\nexport function useFocusTrap(options: UseFocusTrapOptions): void {\n let previouslyFocused: HTMLElement | null = null\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!options.active.value || event.key !== 'Tab') return\n const root = options.container.value\n if (!root) return\n const focusables = getFocusable(root)\n if (focusables.length === 0) {\n event.preventDefault()\n root.focus()\n return\n }\n const first = focusables[0]!\n const last = focusables[focusables.length - 1]!\n const active = document.activeElement as HTMLElement | null\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault()\n last.focus()\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault()\n first.focus()\n }\n }\n }\n\n const activate = () => {\n if (typeof document === 'undefined') return\n previouslyFocused = (document.activeElement as HTMLElement | null) ?? null\n document.addEventListener('keydown', onKeyDown)\n if (options.initialFocus !== false) {\n requestAnimationFrame(() => {\n const root = options.container.value\n if (!root) return\n const focusables = getFocusable(root)\n ;(focusables[0] ?? root).focus()\n })\n }\n }\n\n const deactivate = () => {\n if (typeof document === 'undefined') return\n document.removeEventListener('keydown', onKeyDown)\n const restore = options.returnFocusTo?.value ?? previouslyFocused\n requestAnimationFrame(() => {\n // The element that had focus when the trap opened may have been\n // unmounted while it was open; focusing a detached node silently drops\n // focus to <body>. Only restore if it is still in the document.\n if (restore && restore.isConnected) restore.focus?.()\n })\n previouslyFocused = null\n }\n\n watch(\n options.active,\n (active, wasActive) => {\n if (active && !wasActive) activate()\n else if (!active && wasActive) deactivate()\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(() => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', onKeyDown)\n }\n })\n}\n","import { onScopeDispose, watch, type Ref } from 'vue'\n\nlet lockCount = 0\nlet savedOverflow: string | null = null\nlet savedPaddingRight: string | null = null\n// What we actually wrote, so unlock can detect a host mutation made while\n// locked and avoid clobbering it.\nlet appliedOverflow: string | null = null\nlet appliedPaddingRight: string | null = null\n\nfunction lock() {\n if (typeof document === 'undefined') return\n lockCount += 1\n if (lockCount > 1) return\n const body = document.body\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n savedOverflow = body.style.overflow\n savedPaddingRight = body.style.paddingRight\n body.style.overflow = 'hidden'\n appliedOverflow = 'hidden'\n if (scrollbarWidth > 0) {\n const currentPadding = parseFloat(getComputedStyle(body).paddingRight || '0')\n appliedPaddingRight = `${currentPadding + scrollbarWidth}px`\n body.style.paddingRight = appliedPaddingRight\n } else {\n appliedPaddingRight = null\n }\n}\n\nfunction unlock() {\n if (typeof document === 'undefined') return\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount > 0) return\n const body = document.body\n // Only restore if our locked value is still in place; if a host changed body\n // overflow / padding-right while locked, respect that rather than clobber it.\n if (body.style.overflow === appliedOverflow) {\n body.style.overflow = savedOverflow ?? ''\n }\n if (appliedPaddingRight !== null && body.style.paddingRight === appliedPaddingRight) {\n body.style.paddingRight = savedPaddingRight ?? ''\n }\n savedOverflow = null\n savedPaddingRight = null\n appliedOverflow = null\n appliedPaddingRight = null\n}\n\n/**\n * Lock the document body's scroll while `active` is true. Reference-counted\n * so multiple stacked Dialogs cooperate. Restores prior `overflow` and\n * `padding-right` (to compensate for the scrollbar gap) when the last lock\n * releases. SSR-safe.\n */\nexport function useBodyScrollLock(active: Ref<boolean>): void {\n let isLockedByThis = false\n\n watch(\n active,\n (value) => {\n if (value && !isLockedByThis) {\n lock()\n isLockedByThis = true\n } else if (!value && isLockedByThis) {\n unlock()\n isLockedByThis = false\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(() => {\n if (isLockedByThis) {\n unlock()\n isLockedByThis = false\n }\n })\n}\n\n/** Test-only: read the current lock count. */\nexport function __getBodyScrollLockCount(): number {\n return lockCount\n}\n\n/** Test-only: hard-reset the module-level lock state. */\nexport function __resetBodyScrollLock(): void {\n lockCount = 0\n savedOverflow = null\n savedPaddingRight = null\n appliedOverflow = null\n appliedPaddingRight = null\n if (typeof document !== 'undefined') {\n document.body.style.overflow = ''\n document.body.style.paddingRight = ''\n }\n}\n","import { Teleport, defineComponent, h, inject, ref, watch, type PropType, type VNode } from 'vue'\nimport { DialogContextKey } from './context'\nimport { useFocusTrap, useBodyScrollLock } from '../modal-utils'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\n\n/**\n * The modal surface (and its backdrop). Renders only while the dialog is\n * open. Behaviors enabled automatically:\n *\n * - **Body scroll lock** — uses `useBodyScrollLock` (reference-counted).\n * - **Focus trap** — uses `useFocusTrap`; restores focus to the trigger on close.\n * - **Escape to dismiss** — controlled by `Dialog.closeOnEscape`.\n * - **Backdrop click to dismiss** — controlled by `Dialog.closeOnOutsideClick`.\n * - **ARIA** — `role=\"dialog\"`, `aria-modal=\"true\"`, `aria-labelledby` / `aria-describedby` wired automatically when `<IrisDialogTitle>` / `<IrisDialogDescription>` are present.\n */\nexport const IrisDialogContent = defineComponent({\n name: 'IrisDialogContent',\n inheritAttrs: false,\n props: {\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DialogContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDialogContent must be a descendant of IrisDialog')\n }\n\n const innerRef = ref<HTMLElement | null>(null)\n watch(innerRef, (el) => {\n ctx.contentRef.value = el\n })\n\n useBodyScrollLock(ctx.open)\n useFocusTrap({\n container: innerRef,\n active: ctx.open,\n returnFocusTo: ctx.triggerRef,\n })\n\n // Escape handler — scoped to the document while open.\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && ctx.closeOnEscape) {\n event.stopPropagation()\n ctx.setOpen(false)\n }\n }\n watch(\n ctx.open,\n (open) => {\n if (typeof document === 'undefined') return\n if (open) document.addEventListener('keydown', onKeyDown)\n else document.removeEventListener('keydown', onKeyDown)\n },\n { flush: 'post', immediate: true },\n )\n\n const onBackdropPointerDown = (event: Event) => {\n if (!ctx.closeOnOutsideClick) return\n if (event.target === event.currentTarget) {\n ctx.setOpen(false)\n }\n }\n\n const onContentPointerDown = (event: Event) => {\n // Stop bubbling so the backdrop doesn't see the click and close.\n event.stopPropagation()\n }\n\n return () => {\n if (!ctx.open.value) return null\n\n const backdrop = h(\n 'div',\n {\n 'data-iris-dialog-backdrop': '',\n onPointerdown: onBackdropPointerDown,\n style: {\n position: 'fixed',\n inset: '0',\n background: 'rgba(0, 0, 0, 0.5)',\n zIndex: '1200',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '24px',\n },\n },\n [\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n innerRef.value = (el ?? null) as HTMLElement | null\n },\n id: ctx.contentId,\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': ctx.hasTitle.value ? ctx.titleId : undefined,\n 'aria-describedby': ctx.hasDescription.value ? ctx.descriptionId : undefined,\n tabindex: -1,\n 'data-state': 'open',\n onPointerdown: onContentPointerDown,\n style: {\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-lg)',\n padding: 'var(--iris-padding-lg)',\n boxShadow: '0 24px 48px -16px rgba(0,0,0,0.32), 0 8px 16px -4px rgba(0,0,0,0.16)',\n maxWidth: '90vw',\n maxHeight: '85vh',\n overflow: 'auto',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n ),\n ],\n )\n\n if (props.teleport === false) return backdrop\n return h(Teleport, { to: props.teleport as string | HTMLElement }, [backdrop])\n }\n },\n})\n\n/**\n * Sets `aria-labelledby` on the dialog content automatically. Renders a\n * heading element (default `<h2>`).\n */\nexport const IrisDialogTitle = defineComponent({\n name: 'IrisDialogTitle',\n props: {\n as: { type: String, default: 'h2' },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DialogContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDialogTitle must be a descendant of IrisDialog')\n }\n ctx.hasTitle.value = true\n return () =>\n h(\n props.as,\n {\n ...attrs,\n id: ctx.titleId,\n style: {\n margin: '0 0 var(--iris-gap-md) 0',\n fontSize: '18px',\n fontWeight: '600',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/**\n * Sets `aria-describedby` on the dialog content automatically. Renders a\n * `<p>` by default.\n */\nexport const IrisDialogDescription = defineComponent({\n name: 'IrisDialogDescription',\n props: {\n as: { type: String, default: 'p' },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DialogContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDialogDescription must be a descendant of IrisDialog')\n }\n ctx.hasDescription.value = true\n return () =>\n h(\n props.as,\n {\n ...attrs,\n id: ctx.descriptionId,\n style: {\n margin: '0 0 var(--iris-gap-lg) 0',\n color: 'var(--iris-muted)',\n fontSize: '14px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/** Close button. Supports `as-child`. */\nexport const IrisDialogClose = defineComponent({\n name: 'IrisDialogClose',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DialogContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisDialogClose must be a descendant of IrisDialog')\n }\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(false)\n }\n return () => {\n const baseProps: Record<string, unknown> = { onClick }\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) return null\n const parentSide = mergeSlotProps(attrs as Record<string, unknown>, baseProps)\n const merged = mergeSlotProps(parentSide, (root.props ?? {}) as Record<string, unknown>)\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n return h('button', { type: 'button', ...attrs, ...baseProps }, slots.default?.())\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { FloatingMachine } from '@iris-ui-kit/core'\n\nexport type IrisDrawerSide = 'left' | 'right' | 'top' | 'bottom'\n\nexport interface DrawerContext {\n machine: FloatingMachine\n open: ComputedRef<boolean>\n setOpen: (value: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n contentId: string\n titleId: string\n side: ComputedRef<IrisDrawerSide>\n size: ComputedRef<string>\n closeOnOutsideClick: boolean\n closeOnEscape: boolean\n hasTitle: Ref<boolean>\n}\n\nexport const DrawerContextKey: InjectionKey<DrawerContext> = Symbol('IrisDrawer')\n","import { computed, defineComponent, provide, ref, useId, watch, type PropType } from 'vue'\nimport { createFloatingMachine } from '@iris-ui-kit/core'\nimport { useMachine } from '../../machine/useMachine'\nimport { DrawerContextKey, type IrisDrawerSide } from './context'\n\n/**\n * Slide-in overlay. Mirrors {@link IrisDialog}'s composition but renders on\n * one screen edge with a transform-based open animation. Defaults to the\n * right edge.\n *\n * Composition:\n *\n * ```html\n * <IrisDrawer v-model:open=\"open\">\n * <IrisDrawerTrigger>Open</IrisDrawerTrigger>\n * <IrisDrawerContent>\n * <IrisDrawerTitle>Settings</IrisDrawerTitle>\n * <p>...</p>\n * <IrisDrawerClose>Close</IrisDrawerClose>\n * </IrisDrawerContent>\n * </IrisDrawer>\n * ```\n */\nexport const IrisDrawer = defineComponent({\n name: 'IrisDrawer',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n side: { type: String as PropType<IrisDrawerSide>, default: 'right' },\n /** Width (for left/right) or height (for top/bottom). Any CSS length. */\n size: { type: String, default: '320px' },\n closeOnOutsideClick: { type: Boolean, default: true },\n closeOnEscape: { type: Boolean, default: true },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const machine = createFloatingMachine((props.open ?? props.defaultOpen) ? 'open' : 'closed')\n const { state } = useMachine(machine)\n\n const isControlled = computed(() => props.open !== undefined)\n const open = computed(() =>\n isControlled.value ? Boolean(props.open) : state.value.value === 'open',\n )\n\n const setOpen = (value: boolean) => {\n if (!isControlled.value) {\n machine.send({ type: value ? 'OPEN' : 'CLOSE' })\n }\n emit('update:open', value)\n }\n\n watch(\n () => props.open,\n (value) => {\n if (value === undefined) return\n machine.send({ type: value ? 'OPEN' : 'CLOSE' })\n },\n )\n\n const id = useId()\n const triggerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const hasTitle = ref(false)\n\n provide(DrawerContextKey, {\n machine,\n open,\n setOpen,\n triggerRef,\n contentRef,\n contentId: `${id}-content`,\n titleId: `${id}-title`,\n side: computed(() => props.side),\n size: computed(() => props.size),\n closeOnOutsideClick: props.closeOnOutsideClick,\n closeOnEscape: props.closeOnEscape,\n hasTitle,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, inject, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { DrawerContextKey } from './context'\n\n/** Trigger button that opens the Drawer. Supports `as-child` polymorphism. */\nexport const IrisDrawerTrigger = defineComponent({\n name: 'IrisDrawerTrigger',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DrawerContextKey)\n if (!ctx) {\n throw new Error('IrisDrawerTrigger must be used inside <IrisDrawer>')\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(!ctx.open.value)\n }\n\n return () => {\n const baseProps: Record<string, unknown> = {\n type: 'button',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': ctx.open.value,\n 'aria-controls': ctx.contentId,\n 'data-iris-drawer-trigger': '',\n 'data-state': ctx.open.value ? 'open' : 'closed',\n ref: (el: unknown) => {\n ctx.triggerRef.value = (el ?? null) as HTMLElement | null\n },\n onClick,\n ...attrs,\n }\n\n if (props.asChild) {\n const child = findFirstElement(slots.default?.()) as VNode | null\n if (!child) return null\n const merged = mergeSlotProps(baseProps, (child.props ?? {}) as Record<string, unknown>)\n return h(child.type as never, merged, child.children as never)\n }\n\n return h('button', baseProps, slots.default?.())\n }\n },\n})\n","import { Teleport, defineComponent, h, inject, ref, watch, type VNode } from 'vue'\nimport { DrawerContextKey } from './context'\nimport { useFocusTrap, useBodyScrollLock } from '../modal-utils'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\n\nconst SIDE_TO_TRANSFORM: Record<string, string> = {\n left: 'translateX(-100%)',\n right: 'translateX(100%)',\n top: 'translateY(-100%)',\n bottom: 'translateY(100%)',\n}\n\n/**\n * Safe-area padding for the screen edges the panel actually touches, so its\n * content clears the notch / home indicator on mobile webviews (Cordova). The\n * insets resolve to 0 on devices/orientations without a cutout, and the whole\n * declaration is simply ignored on engines without env() support.\n * (Host must set <meta name=\"viewport\" content=\"...,viewport-fit=cover\">.)\n */\nfunction safeAreaPadding(side: string): Record<string, string> {\n const top = 'max(0px, env(safe-area-inset-top))'\n const right = 'max(0px, env(safe-area-inset-right))'\n const bottom = 'max(0px, env(safe-area-inset-bottom))'\n const left = 'max(0px, env(safe-area-inset-left))'\n switch (side) {\n case 'left':\n return { paddingTop: top, paddingBottom: bottom, paddingLeft: left }\n case 'right':\n return { paddingTop: top, paddingBottom: bottom, paddingRight: right }\n case 'top':\n return { paddingTop: top, paddingLeft: left, paddingRight: right }\n case 'bottom':\n return { paddingBottom: bottom, paddingLeft: left, paddingRight: right }\n default:\n return {}\n }\n}\n\nfunction panelPositionStyle(side: string, size: string): Record<string, string> {\n const base: Record<string, string> = {\n position: 'fixed',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n boxShadow: 'var(--iris-shadow-md, 0 8px 24px rgba(0,0,0,.18))',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n transition: 'transform 220ms ease',\n willChange: 'transform',\n ...safeAreaPadding(side),\n }\n // `100vh` is the fallback; `maxHeight: 100dvh` clamps full-height side panels to\n // the DYNAMIC viewport so they don't overflow under mobile browser chrome\n // (dvh ≤ vh). A separate property, so it's simply ignored where dvh is\n // unsupported, leaving the 100vh fallback.\n switch (side) {\n case 'left':\n return {\n ...base,\n top: '0',\n bottom: '0',\n left: '0',\n width: size,\n height: '100vh',\n maxHeight: '100dvh',\n }\n case 'right':\n return {\n ...base,\n top: '0',\n bottom: '0',\n right: '0',\n width: size,\n height: '100vh',\n maxHeight: '100dvh',\n }\n case 'top':\n return { ...base, top: '0', left: '0', right: '0', width: '100vw', height: size }\n case 'bottom':\n return { ...base, bottom: '0', left: '0', right: '0', width: '100vw', height: size }\n default:\n return base\n }\n}\n\n/**\n * The slide-in surface. Renders only while open OR while the close animation\n * is still playing — controlled via a small \"isExiting\" timer so the\n * `transform: translate(0)` → `transform: translate(±100%)` transition runs\n * before unmount.\n *\n * Behaviors:\n * - Body scroll lock (reference-counted, see modal-utils).\n * - Focus trap; returns focus to the trigger on close.\n * - Escape (when `closeOnEscape`) + click-on-backdrop (when\n * `closeOnOutsideClick`) → close.\n */\nexport const IrisDrawerContent = defineComponent({\n name: 'IrisDrawerContent',\n inheritAttrs: false,\n props: {\n teleport: {\n type: [String, Object, Boolean] as import('vue').PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DrawerContextKey)\n if (!ctx) {\n throw new Error('IrisDrawerContent must be used inside <IrisDrawer>')\n }\n\n const mounted = ref(false)\n const visible = ref(false) // controls the transform — toggled one frame after mount\n let exitTimer: ReturnType<typeof setTimeout> | null = null\n\n watch(\n ctx.open,\n (open) => {\n if (open) {\n if (exitTimer) {\n clearTimeout(exitTimer)\n exitTimer = null\n }\n mounted.value = true\n // Wait one frame so the initial off-screen transform is committed\n // BEFORE we set it to on-screen — otherwise the transition is skipped.\n requestAnimationFrame(() => {\n visible.value = true\n })\n } else if (mounted.value) {\n visible.value = false\n exitTimer = setTimeout(() => {\n mounted.value = false\n exitTimer = null\n }, 220)\n }\n },\n { immediate: true },\n )\n\n useBodyScrollLock(ctx.open)\n useFocusTrap({\n container: ctx.contentRef,\n active: ctx.open,\n returnFocusTo: ctx.triggerRef,\n })\n\n if (ctx.closeOnEscape) {\n watch(\n ctx.open,\n (open, _prev, onCleanup) => {\n if (!open) return\n const handler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n ctx.setOpen(false)\n }\n }\n document.addEventListener('keydown', handler)\n onCleanup(() => document.removeEventListener('keydown', handler))\n },\n { immediate: true },\n )\n }\n\n const onBackdropClick = (event: MouseEvent) => {\n if (!ctx.closeOnOutsideClick) return\n if (event.target !== event.currentTarget) return\n ctx.setOpen(false)\n }\n\n return () => {\n if (!mounted.value) return null\n\n const side = ctx.side.value\n const panelStyle = panelPositionStyle(side, ctx.size.value)\n const offScreen = SIDE_TO_TRANSFORM[side] ?? 'translateX(100%)'\n\n const backdrop = h(\n 'div',\n {\n 'data-iris-drawer-backdrop': '',\n 'data-state': visible.value ? 'open' : 'closed',\n style: {\n position: 'fixed',\n inset: '0',\n background: 'rgba(0,0,0,.4)',\n opacity: visible.value ? '1' : '0',\n transition: 'opacity 220ms ease',\n },\n onClick: onBackdropClick,\n },\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n ctx.contentRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': ctx.hasTitle.value ? ctx.titleId : undefined,\n id: ctx.contentId,\n 'data-iris-drawer-content': '',\n 'data-iris-drawer-side': side,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n tabindex: -1,\n style: {\n ...panelStyle,\n transform: visible.value ? 'translate(0,0)' : offScreen,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n ),\n )\n\n if (props.teleport === false) return backdrop\n return h(Teleport, { to: props.teleport as string | HTMLElement }, [backdrop])\n }\n },\n})\n\n/** Accessible title; wiring `aria-labelledby` on the surface. */\nexport const IrisDrawerTitle = defineComponent({\n name: 'IrisDrawerTitle',\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const ctx = inject(DrawerContextKey)\n if (!ctx) throw new Error('IrisDrawerTitle must be used inside <IrisDrawer>')\n ctx.hasTitle.value = true\n return () =>\n h(\n 'h2',\n {\n id: ctx.titleId,\n 'data-iris-drawer-title': '',\n style: {\n margin: '0',\n padding: 'var(--iris-padding-md)',\n fontSize: 'var(--iris-font-size-lg, 16px)',\n fontWeight: '600',\n borderBottom: '1px solid var(--iris-border)',\n },\n ...attrs,\n },\n slots.default?.(),\n )\n },\n})\n\n/** Close button that calls `setOpen(false)`. Supports `as-child`. */\nexport const IrisDrawerClose = defineComponent({\n name: 'IrisDrawerClose',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(DrawerContextKey)\n if (!ctx) throw new Error('IrisDrawerClose must be used inside <IrisDrawer>')\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(false)\n }\n\n return () => {\n const baseProps: Record<string, unknown> = {\n type: 'button',\n 'data-iris-drawer-close': '',\n onClick,\n ...attrs,\n }\n if (props.asChild) {\n const child = findFirstElement(slots.default?.()) as VNode | null\n if (!child) return null\n const merged = mergeSlotProps(baseProps, (child.props ?? {}) as Record<string, unknown>)\n return h(child.type as never, merged, child.children as never)\n }\n return h('button', baseProps, slots.default?.())\n }\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { Size } from '@iris-ui-kit/core'\n\nexport type IrisInputSize = Size\nexport type IrisInputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'\n\n/**\n * Text input primitive. Wraps a native `<input>` with token-driven styling\n * plus optional `prefix` / `suffix` slots for icons or text adornments. The\n * value is two-way bound via `v-model`.\n *\n * Focus styling is handled with `:focus-within` on the wrapping `<label>`,\n * which doubles as the click target so the entire pill is clickable.\n */\nexport const IrisInput = defineComponent({\n name: 'IrisInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: [String, Number] as PropType<string | number>, default: '' },\n type: { type: String as PropType<IrisInputType>, default: 'text' },\n size: { type: String as PropType<IrisInputSize>, default: 'md' },\n placeholder: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n /** Visual error state — does NOT enforce validation. */\n invalid: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the inner <input>. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n focus: (_event: FocusEvent) => true,\n blur: (_event: FocusEvent) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const focused = ref(false)\n\n const sizeStyles = computed<Record<string, string>>(() => {\n const map: Record<IrisInputSize, { padding: string; fontSize: string; minHeight: string }> = {\n sm: {\n padding: '4px var(--iris-padding-sm)',\n fontSize: '12px',\n minHeight: '28px',\n },\n md: {\n padding: '6px var(--iris-padding-md)',\n fontSize: '14px',\n minHeight: '34px',\n },\n lg: {\n padding: '8px var(--iris-padding-md)',\n fontSize: '16px',\n minHeight: '40px',\n },\n }\n return map[props.size]\n })\n\n const wrapperStyle = computed<Record<string, string>>(() => {\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n const boxShadow = focused.value\n ? `0 0 0 3px ${props.invalid ? 'rgba(239, 68, 68, 0.18)' : 'rgba(99, 102, 241, 0.18)'}`\n : 'none'\n return {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md)',\n cursor: props.disabled ? 'not-allowed' : 'text',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n boxShadow,\n ...sizeStyles.value,\n padding: sizeStyles.value.padding,\n minHeight: sizeStyles.value.minHeight,\n }\n })\n\n const inputStyle: Record<string, string> = {\n flex: '1',\n minWidth: '0',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n padding: '0',\n }\n\n const onInput = (event: Event) => {\n emit('update:modelValue', (event.target as HTMLInputElement).value)\n }\n const onFocus = (event: FocusEvent) => {\n focused.value = true\n emit('focus', event)\n }\n const onBlur = (event: FocusEvent) => {\n focused.value = false\n emit('blur', event)\n }\n\n return () => {\n const prefix = slots.prefix?.()\n const suffix = slots.suffix?.()\n return h(\n 'label',\n {\n ...attrs,\n 'data-iris-input': '',\n 'data-iris-input-size': props.size,\n 'data-state': props.invalid ? 'invalid' : focused.value ? 'focused' : 'idle',\n style: {\n ...wrapperStyle.value,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n prefix &&\n h(\n 'span',\n {\n 'data-iris-input-prefix': '',\n style: { display: 'inline-flex', alignItems: 'center', color: 'var(--iris-muted)' },\n },\n prefix,\n ),\n h('input', {\n id: props.id,\n type: props.type,\n value: props.modelValue,\n placeholder: props.placeholder,\n disabled: props.disabled || undefined,\n readonly: props.readonly || undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n style: inputStyle,\n onInput,\n onFocus,\n onBlur,\n }),\n suffix &&\n h(\n 'span',\n {\n 'data-iris-input-suffix': '',\n style: { display: 'inline-flex', alignItems: 'center', color: 'var(--iris-muted)' },\n },\n suffix,\n ),\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, nextTick, onMounted, ref, watch, type PropType } from 'vue'\nimport type { Size } from '@iris-ui-kit/core'\n\nexport type IrisTextareaSize = Size\n\n/**\n * Multi-line text input. Mirrors {@link IrisInput}'s visual + a11y model but\n * renders a native `<textarea>`. Adds `autosize` — the textarea grows with\n * its content up to `maxRows`.\n */\nexport const IrisTextarea = defineComponent({\n name: 'IrisTextarea',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: '' },\n size: { type: String as PropType<IrisTextareaSize>, default: 'md' },\n placeholder: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n rows: { type: Number, default: 3 },\n /** Grow with content. When true, `rows` is the minimum; `maxRows` is the cap. */\n autosize: { type: Boolean, default: false },\n /** Cap for autosize. 0 = no cap. */\n maxRows: { type: Number, default: 8 },\n maxLength: { type: Number, default: undefined },\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the inner <textarea>. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n focus: (_event: FocusEvent) => true,\n blur: (_event: FocusEvent) => true,\n },\n setup(props, { attrs, emit }) {\n const focused = ref(false)\n const textareaRef = ref<HTMLTextAreaElement | null>(null)\n\n const sizeStyles = computed<{ padding: string; fontSize: string; lineHeight: string }>(() => {\n const map: Record<\n IrisTextareaSize,\n { padding: string; fontSize: string; lineHeight: string }\n > = {\n sm: { padding: '6px var(--iris-padding-sm)', fontSize: '12px', lineHeight: '1.5' },\n md: { padding: '8px var(--iris-padding-md)', fontSize: '14px', lineHeight: '1.5' },\n lg: { padding: '10px var(--iris-padding-md)', fontSize: '16px', lineHeight: '1.5' },\n }\n return map[props.size]\n })\n\n const wrapperStyle = computed<Record<string, string>>(() => {\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n const boxShadow = focused.value\n ? `0 0 0 3px ${props.invalid ? 'rgba(239, 68, 68, 0.18)' : 'rgba(99, 102, 241, 0.18)'}`\n : 'none'\n return {\n display: 'flex',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md)',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n boxShadow,\n ...sizeStyles.value,\n }\n })\n\n const textareaStyle: Record<string, string> = {\n width: '100%',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n padding: '0',\n resize: 'vertical',\n }\n\n const resize = () => {\n const el = textareaRef.value\n if (!el || !props.autosize) return\n // jsdom doesn't compute layout; guard for that — falls back to rows attr.\n const lineHeight = parseFloat(getComputedStyle(el).lineHeight || '0') || 20\n el.style.height = 'auto'\n const maxPx = props.maxRows > 0 ? lineHeight * props.maxRows : Infinity\n el.style.height = `${Math.min(maxPx, el.scrollHeight)}px`\n }\n\n watch(\n () => props.modelValue,\n () => {\n if (props.autosize) nextTick(resize)\n },\n )\n onMounted(() => {\n if (props.autosize) nextTick(resize)\n })\n\n const onInput = (event: Event) => {\n const v = (event.target as HTMLTextAreaElement).value\n emit('update:modelValue', v)\n }\n const onFocus = (event: FocusEvent) => {\n focused.value = true\n emit('focus', event)\n }\n const onBlur = (event: FocusEvent) => {\n focused.value = false\n emit('blur', event)\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-textarea': '',\n 'data-iris-textarea-size': props.size,\n 'data-state': props.invalid ? 'invalid' : focused.value ? 'focused' : 'idle',\n style: {\n ...wrapperStyle.value,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n h('textarea', {\n ref: (el: unknown) => {\n textareaRef.value = (el ?? null) as HTMLTextAreaElement | null\n },\n id: props.id,\n rows: props.rows,\n value: props.modelValue,\n placeholder: props.placeholder,\n disabled: props.disabled || undefined,\n readonly: props.readonly || undefined,\n maxlength: props.maxLength,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n style: textareaStyle,\n onInput,\n onFocus,\n onBlur,\n }),\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { Size } from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\n\nexport type IrisNumberInputSize = Size\n\nfunction decimalsOf(step: number): number {\n if (!Number.isFinite(step)) return 0\n const s = step.toString()\n const dot = s.indexOf('.')\n return dot < 0 ? 0 : s.length - dot - 1\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction roundToStep(value: number, step: number): number {\n const places = decimalsOf(step)\n return Number(value.toFixed(places))\n}\n\n/**\n * Numeric input with step buttons + min/max/step clamping + keyboard ↑/↓\n * controls. Emits `null` for invalid / empty input so consumers can apply\n * their own validation logic.\n */\nexport const IrisNumberInput = defineComponent({\n name: 'IrisNumberInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number as PropType<number | null>, default: null },\n size: { type: String as PropType<IrisNumberInputSize>, default: 'md' },\n min: { type: Number, default: -Infinity },\n max: { type: Number, default: Infinity },\n step: { type: Number, default: 1 },\n placeholder: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n /** Show the +/- step buttons. */\n showControls: { type: Boolean, default: true },\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the inner <input>. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: number | null) => true,\n focus: (_event: FocusEvent) => true,\n blur: (_event: FocusEvent) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const focused = ref(false)\n const rawText = ref<string>(\n props.modelValue === null || props.modelValue === undefined ? '' : String(props.modelValue),\n )\n\n const startValue = computed(() => {\n if (Number.isFinite(props.min) && props.min !== -Infinity) return props.min\n return 0\n })\n\n const setValue = (next: number | null) => {\n if (next === null) {\n rawText.value = ''\n emit('update:modelValue', null)\n return\n }\n const clamped = clamp(next, props.min, props.max)\n const rounded = roundToStep(clamped, props.step)\n rawText.value = String(rounded)\n emit('update:modelValue', rounded)\n }\n\n const increment = (factor: 1 | -1) => {\n if (props.disabled || props.readonly) return\n const base =\n props.modelValue === null || props.modelValue === undefined\n ? startValue.value\n : props.modelValue\n setValue(base + factor * props.step)\n }\n\n const onInput = (event: Event) => {\n const text = (event.target as HTMLInputElement).value\n rawText.value = text\n if (text === '' || text === '-') {\n emit('update:modelValue', null)\n return\n }\n const parsed = Number(text)\n if (Number.isNaN(parsed)) {\n emit('update:modelValue', null)\n return\n }\n // Don't clamp/round mid-typing — user might be entering \"1.\" or \"0.0001\".\n emit('update:modelValue', parsed)\n }\n\n const onBlur = (event: FocusEvent) => {\n focused.value = false\n // On blur, normalize: clamp + round.\n if (props.modelValue !== null && props.modelValue !== undefined) {\n const clamped = clamp(props.modelValue, props.min, props.max)\n const rounded = roundToStep(clamped, props.step)\n if (rounded !== props.modelValue) {\n rawText.value = String(rounded)\n emit('update:modelValue', rounded)\n } else {\n rawText.value = String(rounded)\n }\n }\n emit('blur', event)\n }\n const onFocus = (event: FocusEvent) => {\n focused.value = true\n emit('focus', event)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n increment(1)\n } else if (event.key === 'ArrowDown') {\n event.preventDefault()\n increment(-1)\n }\n }\n\n const sizeStyles = computed<{ padding: string; fontSize: string; minHeight: string }>(() => {\n const map: Record<\n IrisNumberInputSize,\n { padding: string; fontSize: string; minHeight: string }\n > = {\n sm: { padding: '4px var(--iris-padding-sm)', fontSize: '12px', minHeight: '28px' },\n md: { padding: '6px var(--iris-padding-md)', fontSize: '14px', minHeight: '34px' },\n lg: { padding: '8px var(--iris-padding-md)', fontSize: '16px', minHeight: '40px' },\n }\n return map[props.size]\n })\n\n const wrapperStyle = computed<Record<string, string>>(() => {\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n const boxShadow = focused.value\n ? `0 0 0 3px ${props.invalid ? 'rgba(239, 68, 68, 0.18)' : 'rgba(99, 102, 241, 0.18)'}`\n : 'none'\n return {\n display: 'inline-flex',\n alignItems: 'center',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md)',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n boxShadow,\n padding: sizeStyles.value.padding,\n minHeight: sizeStyles.value.minHeight,\n fontSize: sizeStyles.value.fontSize,\n }\n })\n\n const inputStyle: Record<string, string> = {\n flex: '1',\n minWidth: '40px',\n width: '4ch',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n padding: '0',\n textAlign: 'end',\n }\n\n const controlBtnStyle: Record<string, string> = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '22px',\n height: '22px',\n background: 'transparent',\n border: 'none',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: 'pointer',\n color: 'var(--iris-muted)',\n lineHeight: '1',\n flexShrink: '0',\n }\n\n return () => {\n const atMin =\n props.modelValue !== null && props.modelValue !== undefined && props.modelValue <= props.min\n const atMax =\n props.modelValue !== null && props.modelValue !== undefined && props.modelValue >= props.max\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-number-input': '',\n 'data-iris-number-input-size': props.size,\n 'data-state': props.invalid ? 'invalid' : focused.value ? 'focused' : 'idle',\n style: {\n ...wrapperStyle.value,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n props.showControls\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-number-input-dec': '',\n 'aria-label': t('numberInput.decrement'),\n disabled: props.disabled || atMin || undefined,\n onClick: () => increment(-1),\n style: { ...controlBtnStyle, marginInlineEnd: '4px' },\n },\n '−',\n )\n : null,\n h('input', {\n id: props.id,\n type: 'text',\n inputmode: 'decimal',\n role: 'spinbutton',\n value: rawText.value,\n placeholder: props.placeholder,\n disabled: props.disabled || undefined,\n readonly: props.readonly || undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'aria-valuenow':\n props.modelValue === null || props.modelValue === undefined\n ? undefined\n : props.modelValue,\n 'aria-valuemin': Number.isFinite(props.min) ? props.min : undefined,\n 'aria-valuemax': Number.isFinite(props.max) ? props.max : undefined,\n style: inputStyle,\n onInput,\n onFocus,\n onBlur,\n onKeydown: onKeyDown,\n }),\n props.showControls\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-number-input-inc': '',\n 'aria-label': t('numberInput.increment'),\n disabled: props.disabled || atMax || undefined,\n onClick: () => increment(1),\n style: { ...controlBtnStyle, marginInlineStart: '4px' },\n },\n '+',\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, onMounted, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisOtpInputSize = 'sm' | 'md' | 'lg'\nexport type IrisOtpInputType = 'numeric' | 'alphanumeric'\n\nconst SIZE_MAP: Record<IrisOtpInputSize, { box: string; height: string; fontSize: string }> = {\n sm: { box: '32px', height: '36px', fontSize: '14px' },\n md: { box: '38px', height: '44px', fontSize: '18px' },\n lg: { box: '44px', height: '52px', fontSize: '20px' },\n}\n\nconst PATTERNS: Record<IrisOtpInputType, RegExp> = {\n numeric: /[0-9]/,\n alphanumeric: /[0-9a-zA-Z]/,\n}\n\n/** Keep only characters allowed by `type`. */\nfunction sanitize(str: string, type: IrisOtpInputType): string {\n const re = PATTERNS[type]\n let out = ''\n for (const ch of str) if (re.test(ch)) out += ch\n return out\n}\n\n/**\n * One-time-code / PIN entry: a row of single-character cells with smart focus\n * movement, paste-to-fill, and keyboard editing. The value (`v-model`) is kept\n * contiguous (no interior gaps) and optionally masked; `complete` fires when\n * every cell is filled. Drop it inside `IrisFormField` — the injected `id`\n * lands on the first cell so the label focuses it.\n */\nexport const IrisOtpInput = defineComponent({\n name: 'IrisOtpInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: '' },\n /** Number of cells. */\n length: { type: Number, default: 6 },\n /** Allowed characters: digits only, or digits + letters. */\n type: { type: String as PropType<IrisOtpInputType>, default: 'numeric' },\n /** Mask entered characters (renders password cells). */\n mask: { type: Boolean, default: false },\n size: { type: String as PropType<IrisOtpInputSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n autofocus: { type: Boolean, default: false },\n /** Placeholder glyph shown in empty cells. */\n placeholder: { type: String, default: '' },\n /** id forwarded to the first cell. Set by IrisFormField. */\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on every cell. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n /** Fired once the code fills every cell. */\n complete: (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const focusedIndex = ref(-1)\n const cellEls: (HTMLInputElement | null)[] = []\n\n const value = computed(() =>\n sanitize(props.modelValue ?? '', props.type).slice(0, props.length),\n )\n\n const focusCell = (i: number) => {\n const el = cellEls[Math.max(0, Math.min(props.length - 1, i))]\n if (el) {\n el.focus()\n el.select()\n }\n }\n\n const commit = (next: string) => {\n const v = sanitize(next, props.type).slice(0, props.length)\n if (v === value.value) return\n emit('update:modelValue', v)\n if (v.length === props.length) emit('complete', v)\n }\n\n // Overwrite from `startIndex`, clamped to ≤ current length so no interior\n // gap can form. Used by both typing (one char) and paste (many).\n const writeFrom = (startIndex: number, chars: string) => {\n const clean = sanitize(chars, props.type)\n if (!clean) return\n const start = Math.min(startIndex, value.value.length)\n const arr = value.value.split('')\n for (let k = 0; k < clean.length && start + k < props.length; k++)\n arr[start + k] = clean.charAt(k)\n commit(arr.join('').slice(0, props.length))\n focusCell(start + clean.length)\n }\n\n const onInput = (i: number, event: Event) => {\n // One char when typing; a longer value means OTP autofill — distribute it.\n const clean = sanitize((event.target as HTMLInputElement).value, props.type)\n if (clean) writeFrom(i, clean)\n }\n\n const onKeyDown = (i: number, event: KeyboardEvent) => {\n if (props.disabled) return\n const key = event.key\n const v = value.value\n if (key === 'Backspace') {\n event.preventDefault()\n if (v[i]) {\n commit(v.slice(0, i) + v.slice(i + 1))\n focusCell(i - 1)\n } else if (i > 0) {\n commit(v.slice(0, i - 1) + v.slice(i))\n focusCell(i - 1)\n }\n } else if (key === 'Delete') {\n event.preventDefault()\n if (v[i]) commit(v.slice(0, i) + v.slice(i + 1))\n } else if (key === 'ArrowLeft') {\n event.preventDefault()\n focusCell(i - 1)\n } else if (key === 'ArrowRight') {\n event.preventDefault()\n focusCell(i + 1)\n } else if (key === 'Home') {\n event.preventDefault()\n focusCell(0)\n } else if (key === 'End') {\n event.preventDefault()\n focusCell(v.length)\n } else if (key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n if (!PATTERNS[props.type].test(key)) event.preventDefault()\n }\n }\n\n const onPaste = (i: number, event: ClipboardEvent) => {\n event.preventDefault()\n if (props.disabled) return\n writeFrom(i, event.clipboardData?.getData('text') ?? '')\n }\n\n onMounted(() => {\n if (props.autofocus) cellEls[0]?.focus()\n })\n\n return () => {\n const sz = SIZE_MAP[props.size]\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-otp-input': '',\n 'data-iris-otp-input-size': props.size,\n 'data-state': props.invalid ? 'invalid' : 'idle',\n role: 'group',\n 'aria-disabled': props.disabled ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n gap: '8px',\n direction: 'inherit',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n Array.from({ length: props.length }, (_unused, i) => {\n const char = value.value.charAt(i)\n const focused = focusedIndex.value === i\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n return h('input', {\n key: i,\n ref: (el: unknown) => {\n cellEls[i] = (el ?? null) as HTMLInputElement | null\n },\n id: i === 0 ? props.id : undefined,\n type: props.mask ? 'password' : 'text',\n inputmode: props.type === 'numeric' ? 'numeric' : 'text',\n autocomplete: i === 0 ? 'one-time-code' : 'off',\n maxlength: 1,\n value: char,\n placeholder: props.placeholder || undefined,\n disabled: props.disabled || undefined,\n 'aria-label': t('otpInput.cell', { index: i + 1, total: props.length }),\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'data-iris-otp-input-cell': '',\n 'data-filled': char ? 'true' : undefined,\n onInput: (e: Event) => onInput(i, e),\n onKeydown: (e: KeyboardEvent) => onKeyDown(i, e),\n onPaste: (e: ClipboardEvent) => onPaste(i, e),\n onFocus: (e: FocusEvent) => {\n focusedIndex.value = i\n ;(e.target as HTMLInputElement).select()\n },\n onBlur: () => {\n focusedIndex.value = -1\n },\n style: {\n width: sz.box,\n height: sz.height,\n textAlign: 'center',\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n fontVariantNumeric: 'tabular-nums',\n color: 'var(--iris-foreground)',\n background: 'var(--iris-background)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n outline: 'none',\n opacity: props.disabled ? '0.6' : '1',\n boxShadow: focused\n ? `0 0 0 3px ${props.invalid ? 'rgba(239, 68, 68, 0.18)' : 'rgba(99, 102, 241, 0.18)'}`\n : 'none',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n },\n })\n }),\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisRatingSize = 'sm' | 'md' | 'lg'\n\nconst SIZE_MAP: Record<IrisRatingSize, number> = { sm: 16, md: 22, lg: 28 }\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\n/** Snap to the nearest allowed step (1, or 0.5 when half is enabled). */\nfunction snap(value: number, step: number): number {\n return Math.round(value / step) * step\n}\n\n/**\n * Star rating with optional half-star precision, hover preview, keyboard\n * support, and a `readonly` display mode. Uses the `slider` ARIA pattern\n * (`aria-valuemin/now/max` + arrow keys); stars are decorative. RTL-safe via\n * logical fill clipping.\n */\nexport const IrisRating = defineComponent({\n name: 'IrisRating',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: 0 },\n /** Number of stars. */\n max: { type: Number, default: 5 },\n /** Allow half-star precision. */\n allowHalf: { type: Boolean, default: false },\n /** Display-only — no interaction. */\n readonly: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n /** Clicking the current value again resets to 0. */\n clearable: { type: Boolean, default: true },\n size: { type: String as PropType<IrisRatingSize>, default: 'md' },\n invalid: { type: Boolean, default: false },\n /** Accessible label for the slider. */\n label: { type: String, default: undefined },\n /** id forwarded to the slider. Set by IrisFormField. */\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby`. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: number) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const hover = ref<number | null>(null)\n\n const step = computed(() => (props.allowHalf ? 0.5 : 1))\n const value = computed(() => clamp(props.modelValue ?? 0, 0, props.max))\n const interactive = computed(() => !props.readonly && !props.disabled)\n const display = computed(() => hover.value ?? value.value)\n\n const setValue = (next: number) => {\n const v = clamp(snap(next, step.value), 0, props.max)\n if (v === value.value) return\n emit('update:modelValue', v)\n }\n\n const valueAt = (i: number, event: MouseEvent): number => {\n if (!props.allowHalf) return i + 1\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n const past = event.clientX - rect.left\n return past < rect.width / 2 ? i + 0.5 : i + 1\n }\n\n const onClick = (i: number, event: MouseEvent) => {\n if (!interactive.value) return\n let next = valueAt(i, event)\n if (props.clearable && next === value.value) next = 0\n setValue(next)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!interactive.value) return\n let next = value.value\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = value.value + step.value\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n next = value.value - step.value\n break\n case 'Home':\n next = 0\n break\n case 'End':\n next = props.max\n break\n default:\n return\n }\n event.preventDefault()\n setValue(next)\n }\n\n return () => {\n const px = SIZE_MAP[props.size]\n const fillColor = props.invalid ? 'var(--iris-danger)' : 'var(--iris-warning, #f59e0b)'\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-rating': '',\n 'data-iris-rating-size': props.size,\n 'data-state': props.invalid ? 'invalid' : 'idle',\n role: 'slider',\n id: props.id,\n tabindex: interactive.value ? 0 : -1,\n 'aria-label': props.label ?? t('rating.label'),\n 'aria-valuemin': 0,\n 'aria-valuemax': props.max,\n 'aria-valuenow': value.value,\n 'aria-valuetext': t('rating.value', { value: value.value, max: props.max }),\n 'aria-readonly': props.readonly ? 'true' : undefined,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n onKeydown: onKeyDown,\n onMouseleave: () => {\n hover.value = null\n },\n style: {\n display: 'inline-flex',\n gap: `${Math.round(px * 0.18)}px`,\n lineHeight: '1',\n color: 'var(--iris-border)',\n cursor: interactive.value ? 'pointer' : 'default',\n opacity: props.disabled ? '0.6' : '1',\n outline: 'none',\n direction: 'inherit',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n Array.from({ length: props.max }, (_unused, i) => {\n const fill = clamp(display.value - i, 0, 1) * 100\n return h(\n 'span',\n {\n key: i,\n 'data-iris-rating-star': '',\n 'data-filled': fill >= 100 ? 'true' : fill > 0 ? 'half' : undefined,\n onClick: (e: MouseEvent) => onClick(i, e),\n onMousemove: interactive.value\n ? (e: MouseEvent) => (hover.value = valueAt(i, e))\n : undefined,\n style: {\n position: 'relative',\n display: 'inline-block',\n width: `${px}px`,\n height: `${px}px`,\n fontSize: `${px}px`,\n },\n },\n [\n h('span', { 'aria-hidden': 'true' }, '★'),\n h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: {\n position: 'absolute',\n insetBlockStart: '0',\n insetInlineStart: '0',\n overflow: 'hidden',\n width: `${fill}%`,\n color: fillColor,\n whiteSpace: 'nowrap',\n },\n },\n '★',\n ),\n ],\n )\n }),\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, useId, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisComboboxSize = 'sm' | 'md' | 'lg'\n\nexport interface IrisComboboxOption {\n label: string\n value: string\n disabled?: boolean\n}\n\nconst SIZE_MAP: Record<IrisComboboxSize, { padding: string; fontSize: string; minHeight: string }> =\n {\n sm: { padding: '4px 8px', fontSize: '12px', minHeight: '28px' },\n md: { padding: '6px 12px', fontSize: '14px', minHeight: '34px' },\n lg: { padding: '8px 12px', fontSize: '16px', minHeight: '40px' },\n }\n\n/**\n * Filterable single-select (searchable select): a text input that type-ahead\n * filters a listbox of options. The displayed text is derived\n * (`filtering ? query : selected label`) so `v-model` changes stay in sync.\n * Opens downward; follows the ARIA 1.2 combobox pattern.\n */\nexport const IrisCombobox = defineComponent({\n name: 'IrisCombobox',\n inheritAttrs: false,\n props: {\n /** Selected option value ('' = none). */\n modelValue: { type: String, default: '' },\n options: { type: Array as PropType<IrisComboboxOption[]>, default: () => [] },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n size: { type: String as PropType<IrisComboboxSize>, default: 'md' },\n /** Text shown when no option matches the query. Defaults to the i18n value. */\n emptyText: { type: String, default: undefined },\n /** id forwarded to the input. Set by IrisFormField. */\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the input. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const reactId = useId()\n const listboxId = `${reactId}-listbox`\n const optionId = (i: number) => `${reactId}-opt-${i}`\n\n const query = ref('')\n const filtering = ref(false)\n const open = ref(false)\n const activeIndex = ref(-1)\n const focused = ref(false)\n\n const selected = computed(() => props.options.find((o) => o.value === props.modelValue))\n const display = computed(() => (filtering.value ? query.value : (selected.value?.label ?? '')))\n const filtered = computed(() => {\n const needle = query.value.trim().toLowerCase()\n return filtering.value && needle\n ? props.options.filter((o) => o.label.toLowerCase().startsWith(needle))\n : props.options\n })\n\n const close = () => {\n open.value = false\n filtering.value = false\n activeIndex.value = -1\n }\n\n const selectOption = (opt: IrisComboboxOption) => {\n if (opt.disabled) return\n emit('update:modelValue', opt.value)\n query.value = ''\n close()\n }\n\n const onInput = (event: Event) => {\n query.value = (event.target as HTMLInputElement).value\n filtering.value = true\n open.value = true\n activeIndex.value = 0\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (props.disabled) return\n const list = filtered.value\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n if (!open.value) {\n open.value = true\n filtering.value = false\n activeIndex.value = 0\n return\n }\n activeIndex.value = Math.min(list.length - 1, activeIndex.value + 1)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n if (open.value) activeIndex.value = Math.max(0, activeIndex.value - 1)\n } else if (event.key === 'Enter') {\n if (open.value && activeIndex.value >= 0 && list[activeIndex.value]) {\n event.preventDefault()\n selectOption(list[activeIndex.value])\n }\n } else if (event.key === 'Escape') {\n if (open.value) {\n event.preventDefault()\n close()\n }\n } else if (event.key === 'Home') {\n if (open.value) {\n event.preventDefault()\n activeIndex.value = 0\n }\n } else if (event.key === 'End') {\n if (open.value) {\n event.preventDefault()\n activeIndex.value = list.length - 1\n }\n }\n }\n\n return () => {\n const sz = SIZE_MAP[props.size]\n const list = filtered.value\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n const activeId =\n open.value && activeIndex.value >= 0 && list[activeIndex.value]\n ? optionId(activeIndex.value)\n : undefined\n const resolvedEmpty = props.emptyText ?? t('combobox.empty')\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-combobox': '',\n 'data-iris-combobox-size': props.size,\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n position: 'relative',\n display: 'inline-block',\n minWidth: '200px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('input', {\n id: props.id,\n type: 'text',\n role: 'combobox',\n autocomplete: 'off',\n spellcheck: false,\n value: display.value,\n placeholder: props.placeholder,\n disabled: props.disabled || undefined,\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-controls': listboxId,\n 'aria-autocomplete': 'list',\n 'aria-activedescendant': activeId,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'data-iris-combobox-input': '',\n onInput,\n onKeydown: onKeyDown,\n onMousedown: (_e: MouseEvent) => {\n if (props.disabled) return\n focused.value = true\n open.value = true\n filtering.value = false\n },\n onFocus: () => {\n if (props.disabled) return\n focused.value = true\n open.value = true\n filtering.value = false\n },\n onBlur: () => {\n focused.value = false\n close()\n },\n style: {\n boxSizing: 'border-box',\n width: '100%',\n padding: sz.padding,\n minHeight: sz.minHeight,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n color: 'var(--iris-foreground)',\n background: 'var(--iris-background)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n outline: 'none',\n opacity: props.disabled ? '0.6' : '1',\n boxShadow: focused.value\n ? `0 0 0 3px ${props.invalid ? 'rgba(239, 68, 68, 0.18)' : 'rgba(99, 102, 241, 0.18)'}`\n : 'none',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n },\n }),\n open.value\n ? h(\n 'ul',\n {\n id: listboxId,\n role: 'listbox',\n 'data-iris-combobox-listbox': '',\n style: {\n position: 'absolute',\n insetInlineStart: '0',\n insetInlineEnd: '0',\n top: '100%',\n marginBlockStart: '4px',\n maxHeight: '240px',\n overflowY: 'auto',\n listStyle: 'none',\n margin: '0',\n padding: '4px',\n zIndex: '50',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n },\n },\n list.length === 0\n ? [\n h(\n 'li',\n {\n 'data-iris-combobox-empty': '',\n 'aria-disabled': 'true',\n style: {\n padding: '6px 10px',\n color: 'var(--iris-muted)',\n fontSize: sz.fontSize,\n },\n },\n resolvedEmpty,\n ),\n ]\n : list.map((opt, i) => {\n const isActive = i === activeIndex.value\n const isSelected = opt.value === props.modelValue\n return h(\n 'li',\n {\n key: opt.value,\n id: optionId(i),\n role: 'option',\n 'aria-selected': isSelected ? 'true' : 'false',\n 'aria-disabled': opt.disabled ? 'true' : undefined,\n 'data-iris-combobox-option': '',\n 'data-active': isActive ? 'true' : undefined,\n onMousedown: (e: MouseEvent) => e.preventDefault(),\n onMouseenter: () => {\n activeIndex.value = i\n },\n onClick: () => selectOption(opt),\n style: {\n padding: '6px 10px',\n fontSize: sz.fontSize,\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: opt.disabled ? 'not-allowed' : 'pointer',\n color: opt.disabled ? 'var(--iris-muted)' : 'var(--iris-foreground)',\n background: isActive\n ? 'var(--iris-surface-hover, rgba(99,102,241,0.1))'\n : 'transparent',\n fontWeight: isSelected ? '600' : '400',\n },\n },\n opt.label,\n )\n }),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, ref, type PropType } from 'vue'\nimport { IrisInput } from '../input/Input'\nimport { useI18n } from '../../i18n'\nimport type { Size } from '@iris-ui-kit/core'\n\nexport type IrisPasswordInputSize = Size\n\n/**\n * Password field wrapping {@link IrisInput}. Adds a visibility toggle as\n * the input's suffix slot — clicking it flips the input type between\n * `password` and `text`.\n */\nexport const IrisPasswordInput = defineComponent({\n name: 'IrisPasswordInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: '' },\n size: { type: String as PropType<IrisPasswordInputSize>, default: 'md' },\n placeholder: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n /** Allow the user to toggle visibility. Default `true`. */\n showToggle: { type: Boolean, default: true },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n focus: (_event: FocusEvent) => true,\n blur: (_event: FocusEvent) => true,\n },\n setup(props, { attrs, emit, slots }) {\n const { t } = useI18n()\n const visible = ref(false)\n\n const onUpdate = (value: string) => emit('update:modelValue', value)\n const onFocus = (e: FocusEvent) => emit('focus', e)\n const onBlur = (e: FocusEvent) => emit('blur', e)\n\n const toggle = () => {\n if (props.disabled || props.readonly) return\n visible.value = !visible.value\n }\n\n return () =>\n h(\n IrisInput,\n {\n ...attrs,\n modelValue: props.modelValue,\n type: visible.value ? 'text' : 'password',\n size: props.size,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readonly: props.readonly,\n invalid: props.invalid,\n id: props.id,\n 'data-iris-password-input': '',\n 'onUpdate:modelValue': onUpdate,\n onFocus,\n onBlur,\n },\n {\n prefix: slots.prefix,\n suffix: () => [\n slots.suffix?.(),\n props.showToggle\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-password-input-toggle': '',\n 'aria-label': visible.value ? t('passwordInput.hide') : t('passwordInput.show'),\n 'aria-pressed': visible.value ? 'true' : 'false',\n onClick: toggle,\n style: {\n background: 'transparent',\n border: 'none',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n color: 'var(--iris-muted)',\n padding: '0 2px',\n fontSize: '13px',\n lineHeight: '1',\n },\n },\n visible.value ? '🙈' : '👁',\n )\n : null,\n ],\n },\n )\n },\n})\n","import { Fragment, cloneVNode, computed, defineComponent, h, useId, type VNode } from 'vue'\n\n/**\n * Form-field wrapper that handles the label / hint / error trio with the\n * right a11y plumbing. Works as a non-invasive wrapper around any input-like\n * primitive (`IrisInput`, `IrisTextarea`, `IrisSelect`, `IrisNumberInput`,\n * `IrisSwitch`, `IrisCheckbox`, …): it locates the first VNode in the\n * default slot and clones it with the generated `id`, `aria-describedby`,\n * and `aria-invalid` attributes.\n *\n * Composition:\n *\n * ```html\n * <IrisFormField label=\"Email\" :error=\"errors.email\" hint=\"We never share it.\">\n * <IrisInput v-model=\"email\" />\n * </IrisFormField>\n * ```\n *\n * Pass `labelFor` if you want to pin the rendered `<label for>` to a\n * specific id (e.g. when the wrapped control is a custom non-`<input>`\n * widget).\n */\nexport const IrisFormField = defineComponent({\n name: 'IrisFormField',\n inheritAttrs: false,\n props: {\n label: { type: String, default: '' },\n hint: { type: String, default: '' },\n error: { type: String, default: '' },\n required: { type: Boolean, default: false },\n /** Override the auto-generated control id. */\n labelFor: { type: String, default: '' },\n /** Visual size of the label. */\n size: { type: String as () => 'sm' | 'md', default: 'md' },\n },\n setup(props, { slots, attrs }) {\n const baseId = useId()\n const controlId = computed(() => props.labelFor || `${baseId}-control`)\n const hintId = `${baseId}-hint`\n const errorId = `${baseId}-error`\n\n const describedBy = computed(() => {\n const ids: string[] = []\n if (props.hint) ids.push(hintId)\n if (props.error) ids.push(errorId)\n return ids.length > 0 ? ids.join(' ') : undefined\n })\n\n const labelStyle = computed<Record<string, string>>(() => ({\n fontSize: props.size === 'sm' ? '12px' : '14px',\n fontWeight: '500',\n color: props.error ? 'var(--iris-danger)' : 'var(--iris-foreground)',\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n }))\n\n return () => {\n const children = (slots.default?.() ?? []) as VNode[]\n // Find the first non-text VNode and inject id + aria-*.\n let injected: VNode | null = null\n const restChildren: (VNode | null)[] = []\n let foundFirst = false\n children.forEach((child) => {\n if (!foundFirst && typeof child.type !== 'symbol' && typeof child.type !== 'string') {\n // Pass props that ALL Iris field primitives understand:\n // - id → forwarded to the native control\n // - invalid → flips aria-invalid + invalid styling\n // - ariaDescribedby → forwarded as aria-describedby on the native control\n injected = cloneVNode(child, {\n id: controlId.value,\n invalid: props.error ? true : undefined,\n ariaDescribedby: describedBy.value,\n })\n foundFirst = true\n } else {\n restChildren.push(child)\n }\n })\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-form-field': '',\n 'data-iris-form-field-state': props.error ? 'invalid' : 'valid',\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n props.label\n ? h(\n 'label',\n {\n for: controlId.value,\n 'data-iris-form-field-label': '',\n style: labelStyle.value,\n },\n [\n props.label,\n props.required\n ? h(\n 'span',\n {\n 'aria-hidden': 'true',\n 'data-iris-form-field-required': '',\n style: { color: 'var(--iris-danger)' },\n },\n '*',\n )\n : null,\n ],\n )\n : null,\n // The wrapped control + any trailing siblings.\n h(Fragment, null, [injected, ...restChildren]),\n props.hint && !props.error\n ? h(\n 'div',\n {\n id: hintId,\n 'data-iris-form-field-hint': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)' },\n },\n props.hint,\n )\n : null,\n props.error\n ? h(\n 'div',\n {\n id: errorId,\n 'data-iris-form-field-error': '',\n role: 'alert',\n style: { fontSize: '12px', color: 'var(--iris-danger)' },\n },\n props.error,\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\nimport type { Size } from '@iris-ui-kit/core'\n\nexport type IrisSwitchSize = Size\n\n/**\n * Two-state toggle. Backed by a native checkbox for keyboard and form\n * compatibility; the visible markup is a styled pill driven by `checked`.\n *\n * The native checkbox is visually hidden but focusable — focus styles ride\n * on the wrapping label via `:focus-within`.\n */\nexport const IrisSwitch = defineComponent({\n name: 'IrisSwitch',\n inheritAttrs: false,\n props: {\n modelValue: { type: Boolean, default: false },\n size: { type: String as PropType<IrisSwitchSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n /** Optional name attribute on the underlying checkbox (for form submission). */\n name: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the inner <input>. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n /** Invalid state — sets aria-invalid. Set by IrisFormField. */\n invalid: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: boolean) => true,\n change: (_value: boolean) => true,\n },\n setup(props, { attrs, emit }) {\n const dims = computed(() => {\n const map: Record<IrisSwitchSize, { width: string; height: string; thumb: string }> = {\n sm: { width: '28px', height: '16px', thumb: '12px' },\n md: { width: '36px', height: '20px', thumb: '16px' },\n lg: { width: '44px', height: '24px', thumb: '20px' },\n }\n return map[props.size]\n })\n\n const trackStyle = computed<Record<string, string>>(() => ({\n position: 'relative',\n display: 'inline-block',\n width: dims.value.width,\n height: dims.value.height,\n background: props.modelValue ? 'var(--iris-primary)' : 'var(--iris-border)',\n borderRadius: '999px',\n transition: 'background-color 120ms ease',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n verticalAlign: 'middle',\n }))\n\n const thumbStyle = computed<Record<string, string>>(() => {\n const offset = props.modelValue\n ? `calc(${dims.value.width} - ${dims.value.thumb} - 2px)`\n : '2px'\n return {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n left: offset,\n width: dims.value.thumb,\n height: dims.value.thumb,\n background: 'var(--iris-background)',\n borderRadius: '999px',\n transition: 'left 140ms ease',\n boxShadow: '0 1px 3px rgba(0,0,0,0.18)',\n }\n })\n\n const onChange = (event: Event) => {\n const next = (event.target as HTMLInputElement).checked\n emit('update:modelValue', next)\n emit('change', next)\n }\n\n return () =>\n h(\n 'label',\n {\n ...attrs,\n 'data-iris-switch': '',\n 'data-iris-switch-size': props.size,\n 'data-state': props.modelValue ? 'checked' : 'unchecked',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('input', {\n type: 'checkbox',\n role: 'switch',\n id: props.id,\n name: props.name,\n checked: props.modelValue,\n disabled: props.disabled || undefined,\n 'aria-checked': props.modelValue ? 'true' : 'false',\n 'aria-describedby': props.ariaDescribedby,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n style: {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n },\n onChange,\n }),\n h('span', { 'aria-hidden': 'true', style: trackStyle.value }, [\n h('span', { style: thumbStyle.value }),\n ]),\n ],\n )\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\nimport type { Size } from '@iris-ui-kit/core'\n\nexport type IrisCheckboxSize = Size\nexport type IrisCheckboxValue = boolean | 'indeterminate'\n\n/**\n * Tri-state checkbox: `false` (unchecked), `true` (checked), or\n * `'indeterminate'`. The native checkbox is hidden but focusable; the\n * visible box is purely visual and mirrors the state via `data-state`.\n *\n * `v-model` emits `boolean` only — switching FROM indeterminate emits the\n * boolean the user chose by clicking (becomes `true`).\n */\nexport const IrisCheckbox = defineComponent({\n name: 'IrisCheckbox',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: [Boolean, String] as PropType<IrisCheckboxValue>,\n default: false,\n },\n size: { type: String as PropType<IrisCheckboxSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n name: { type: String, default: undefined },\n value: { type: [String, Number] as PropType<string | number>, default: undefined },\n /** Forwarded as `aria-describedby` on the native checkbox input. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n /**\n * Accessible name for the native checkbox input. Bound as `aria-label` on\n * the `<input>` itself (the element with the checkbox role), NOT the label\n * wrapper. Use when there is no visible label text.\n */\n ariaLabel: { type: String, default: undefined },\n /** Invalid state — sets aria-invalid. Set by IrisFormField. */\n invalid: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: boolean) => true,\n change: (_value: boolean) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const state = computed<'checked' | 'unchecked' | 'indeterminate'>(() => {\n if (props.modelValue === 'indeterminate') return 'indeterminate'\n return props.modelValue ? 'checked' : 'unchecked'\n })\n\n const dim = computed(() => {\n const map: Record<IrisCheckboxSize, string> = { sm: '14px', md: '18px', lg: '22px' }\n return map[props.size]\n })\n\n const boxStyle = computed<Record<string, string>>(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: dim.value,\n height: dim.value,\n borderRadius: 'var(--iris-radius-sm)',\n border: '1px solid var(--iris-border)',\n background: state.value === 'unchecked' ? 'var(--iris-background)' : 'var(--iris-primary)',\n borderColor: state.value === 'unchecked' ? 'var(--iris-border)' : 'var(--iris-primary)',\n color: 'var(--iris-primary-foreground)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'background-color 120ms ease, border-color 120ms ease',\n verticalAlign: 'middle',\n }))\n\n const onChange = (event: Event) => {\n const next = (event.target as HTMLInputElement).checked\n emit('update:modelValue', next)\n emit('change', next)\n }\n\n const renderIndicator = () => {\n if (state.value === 'unchecked') return null\n if (state.value === 'indeterminate') {\n return h('span', {\n 'aria-hidden': 'true',\n style: { width: '60%', height: '2px', background: 'currentColor', borderRadius: '1px' },\n })\n }\n return h(\n 'svg',\n {\n 'aria-hidden': 'true',\n viewBox: '0 0 16 16',\n width: '80%',\n height: '80%',\n fill: 'none',\n },\n [\n h('path', {\n d: 'M3 8.5 L6.5 12 L13 4.5',\n stroke: 'currentColor',\n 'stroke-width': '2.4',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ],\n )\n }\n\n return () =>\n h(\n 'label',\n {\n ...attrs,\n 'data-iris-checkbox': '',\n 'data-iris-checkbox-size': props.size,\n 'data-state': state.value,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('input', {\n type: 'checkbox',\n id: props.id,\n name: props.name,\n value: props.value,\n checked: props.modelValue === true,\n indeterminate: props.modelValue === 'indeterminate',\n disabled: props.disabled || undefined,\n 'aria-checked':\n state.value === 'indeterminate'\n ? 'mixed'\n : state.value === 'checked'\n ? 'true'\n : 'false',\n 'aria-describedby': props.ariaDescribedby,\n 'aria-label': props.ariaLabel,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n style: {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n },\n onChange,\n }),\n h('span', { 'aria-hidden': 'true', style: boxStyle.value }, [renderIndicator()]),\n slots.default && h('span', null, slots.default()),\n ],\n )\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n inject,\n provide,\n ref,\n useId,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n} from 'vue'\nimport { type Size } from '@iris-ui-kit/core'\n\nexport type IrisRadioSize = Size\n\ninterface RadioGroupContext {\n name: string\n value: ComputedRef<string | number | boolean | null>\n setValue: (value: string | number | boolean) => void\n size: ComputedRef<IrisRadioSize>\n disabled: ComputedRef<boolean>\n}\n\nconst RadioGroupKey: InjectionKey<RadioGroupContext> = Symbol('IrisRadioGroup')\n\n/**\n * Container for a set of mutually exclusive `IrisRadio` choices. Provides\n * `name` for native form grouping and routes selection via context.\n */\nexport const IrisRadioGroup = defineComponent({\n name: 'IrisRadioGroup',\n props: {\n modelValue: {\n type: [String, Number, Boolean] as PropType<string | number | boolean | null>,\n default: undefined,\n },\n /** Uncontrolled initial value, used when `modelValue` is omitted. */\n defaultValue: {\n type: [String, Number, Boolean] as PropType<string | number | boolean | null>,\n default: null,\n },\n name: { type: String, default: undefined },\n size: { type: String as PropType<IrisRadioSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: string | number | boolean) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const fallbackName = useId()\n const groupName = props.name ?? fallbackName\n const isControlled = computed(() => props.modelValue !== undefined)\n const internal = ref<string | number | boolean | null>(props.defaultValue)\n const current = computed(() =>\n isControlled.value ? (props.modelValue ?? null) : internal.value,\n )\n provide(RadioGroupKey, {\n name: groupName,\n value: current,\n setValue: (v) => {\n if (!isControlled.value) internal.value = v\n emit('update:modelValue', v)\n },\n size: computed(() => props.size),\n disabled: computed(() => props.disabled),\n })\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'radiogroup',\n 'data-iris-radio-group': '',\n style: {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: 'var(--iris-gap-sm)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/**\n * A single radio button. Lives inside an `IrisRadioGroup`. Native `<input\n * type=\"radio\">` is hidden but receives focus; the visible dot mirrors the\n * group's value. Standalone usage (no group) is also supported by passing\n * `v-model` directly — the radio then behaves like a single boolean choice.\n */\nexport const IrisRadio = defineComponent({\n name: 'IrisRadio',\n inheritAttrs: false,\n props: {\n /** Value emitted to the group when this radio is selected. */\n value: {\n type: [String, Number, Boolean] as PropType<string | number | boolean>,\n required: true,\n },\n /** Standalone mode only: two-way binding without a group. */\n modelValue: {\n type: [String, Number, Boolean] as PropType<string | number | boolean | null>,\n default: undefined,\n },\n size: { type: String as PropType<IrisRadioSize>, default: undefined },\n disabled: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string | number | boolean) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const group = inject(RadioGroupKey, null)\n const size = computed<IrisRadioSize>(() => props.size ?? group?.size.value ?? 'md')\n const disabled = computed(() => props.disabled || Boolean(group?.disabled.value))\n const checked = computed(() => {\n if (group) return group.value.value === props.value\n return props.modelValue === props.value\n })\n\n const dim = computed(() => {\n const map: Record<IrisRadioSize, string> = { sm: '14px', md: '18px', lg: '22px' }\n return map[size.value]\n })\n\n const boxStyle = computed<Record<string, string>>(() => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: dim.value,\n height: dim.value,\n borderRadius: '999px',\n border: `1px solid ${checked.value ? 'var(--iris-primary)' : 'var(--iris-border)'}`,\n background: 'var(--iris-background)',\n cursor: disabled.value ? 'not-allowed' : 'pointer',\n opacity: disabled.value ? '0.6' : '1',\n transition: 'border-color 120ms ease',\n }))\n\n const dotStyle = computed<Record<string, string>>(() => ({\n width: '50%',\n height: '50%',\n borderRadius: '999px',\n background: 'var(--iris-primary)',\n transform: checked.value ? 'scale(1)' : 'scale(0)',\n transition: 'transform 140ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n }))\n\n const onChange = () => {\n if (disabled.value) return\n if (group) group.setValue(props.value)\n else emit('update:modelValue', props.value)\n }\n\n return () =>\n h(\n 'label',\n {\n ...attrs,\n 'data-iris-radio': '',\n 'data-iris-radio-size': size.value,\n 'data-state': checked.value ? 'checked' : 'unchecked',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n cursor: disabled.value ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('input', {\n type: 'radio',\n id: props.id,\n name: group?.name,\n value: String(props.value),\n checked: checked.value,\n disabled: disabled.value || undefined,\n style: {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n },\n onChange,\n }),\n h('span', { 'aria-hidden': 'true', style: boxStyle.value }, [\n h('span', { style: dotStyle.value }),\n ]),\n slots.default && h('span', null, slots.default()),\n ],\n )\n },\n})\n","import { defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { createKeyboardNav } from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\nimport { useDataState } from '../../motion'\n\nexport interface IrisListItem<T = unknown> {\n value: T\n label?: string\n disabled?: boolean\n}\n\nconst LIST_STATE_STYLE: Record<string, string> = {\n listStyle: 'none',\n padding: '12px',\n textAlign: 'center',\n color: 'var(--iris-muted)',\n fontSize: '14px',\n}\n\n/**\n * Generic selectable list. Foundation for `IrisSelect`, dropdowns, command\n * palettes, etc. Implements the WAI-ARIA Listbox pattern:\n *\n * - `role=\"listbox\"` (or `listbox` with `aria-multiselectable=\"true\"`)\n * - Roving tabindex (one item has `tabindex=0`, others `-1`)\n * - Arrow keys / Home / End to move focus\n * - Enter / Space to (de)select\n *\n * The list is data-driven — pass an array of `{ value, label?, disabled? }`.\n * Render custom items via the `#item` slot.\n *\n * Async lifecycle: pass `loading` / `error` (and empty `items`) to render the\n * animated loading / error / empty state in place of options. Customize each\n * via the `#loading` / `#error` / `#empty` slots; state precedence and entry\n * animation come from {@link useDataState}.\n */\nexport const IrisList = defineComponent({\n name: 'IrisList',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<IrisListItem<unknown>[]>, required: true },\n /** Selected value(s). For multi mode, pass an array. */\n modelValue: { type: null as unknown as PropType<unknown> },\n /** Allow multi-select. */\n multi: { type: Boolean, default: false },\n /** Loop ArrowDown past the last item back to the first (and vice versa). Default `true`. */\n loop: { type: Boolean, default: true },\n /** ARIA label. */\n ariaLabel: { type: String, default: undefined },\n /** Show the loading state instead of items. */\n loading: { type: Boolean, default: false },\n /** Show the error state instead of items (takes precedence over loading). */\n error: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: unknown) => true,\n select: (_item: IrisListItem<unknown>) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n const { state, isContent, stateKey, stateProps } = useDataState(() => ({\n loading: props.loading,\n error: props.error,\n empty: props.items.length === 0,\n }))\n\n const isEnabled = (i: number) => !props.items[i]?.disabled\n\n // Keyboard navigation (single-sourced in core controller)\n const nav = createKeyboardNav({\n count: props.items.length,\n loop: props.loop,\n isEnabled,\n })\n const activeIndex = ref<number>(nav.index)\n watch(\n () => props.items,\n () => {\n nav.reset(props.items.length)\n activeIndex.value = nav.index\n },\n { immediate: true, flush: 'post' },\n )\n\n const isSelected = (value: unknown): boolean => {\n if (props.multi) {\n return Array.isArray(props.modelValue) && (props.modelValue as unknown[]).includes(value)\n }\n return props.modelValue === value\n }\n\n const select = (item: IrisListItem<unknown>) => {\n if (item.disabled) return\n if (props.multi) {\n const arr: unknown[] = Array.isArray(props.modelValue)\n ? [...(props.modelValue as unknown[])]\n : []\n const idx = arr.indexOf(item.value)\n if (idx >= 0) arr.splice(idx, 1)\n else arr.push(item.value)\n emit('update:modelValue', arr)\n } else {\n emit('update:modelValue', item.value)\n }\n emit('select', item)\n }\n\n const focusActive = () => {\n const root = listRef.value\n if (!root || activeIndex.value < 0) return\n const el = root.querySelector<HTMLElement>(`[data-iris-list-index=\"${activeIndex.value}\"]`)\n el?.focus()\n }\n\n const listRef = ref<HTMLElement | null>(null)\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!isContent.value) return\n const action = nav.handleKeyDown({\n key: event.key,\n preventDefault: () => event.preventDefault(),\n })\n if (action.type === 'focus') {\n activeIndex.value = action.target\n focusActive()\n } else if (action.type === 'select') {\n const item = props.items[action.target]\n if (item) select(item)\n } else if (action.type === 'escape') {\n // allow popover/portal to handle\n }\n }\n\n const renderStateNode = () => {\n const content =\n state.value === 'error'\n ? slots.error\n ? slots.error()\n : t('list.error')\n : state.value === 'loading'\n ? slots.loading\n ? slots.loading()\n : t('list.loading')\n : slots.empty\n ? slots.empty()\n : t('list.empty')\n return h(\n 'li',\n {\n key: stateKey.value,\n role: 'presentation',\n 'data-iris-list-state': state.value,\n 'aria-live': 'polite',\n ...stateProps.value,\n style: LIST_STATE_STYLE,\n },\n content,\n )\n }\n\n const renderItems = () =>\n props.items.map((item, index) => {\n const selected = isSelected(item.value)\n const active = index === activeIndex.value\n const onClick = () => {\n activeIndex.value = index\n select(item)\n }\n const onFocus = () => {\n activeIndex.value = index\n }\n const baseStyle: Record<string, string> = {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n padding: '6px var(--iris-padding-md)',\n borderRadius: 'var(--iris-radius-sm)',\n cursor: item.disabled ? 'not-allowed' : 'pointer',\n opacity: item.disabled ? '0.5' : '1',\n fontSize: '14px',\n background: selected\n ? 'var(--iris-primary)'\n : active\n ? 'var(--iris-surface-hover)'\n : 'transparent',\n color: selected ? 'var(--iris-primary-foreground)' : 'var(--iris-foreground)',\n outline: 'none',\n }\n\n const slotContent = slots.item?.({\n item,\n index,\n selected,\n active,\n })\n\n return h(\n 'li',\n {\n key: String(item.value ?? index),\n role: 'option',\n tabindex: active ? 0 : -1,\n 'aria-selected': selected ? 'true' : 'false',\n 'aria-disabled': item.disabled ? 'true' : undefined,\n 'data-iris-list-index': index,\n 'data-iris-list-item': '',\n 'data-state': selected ? 'selected' : active ? 'active' : 'idle',\n onClick: item.disabled ? undefined : onClick,\n onFocus,\n style: baseStyle,\n },\n slotContent ?? item.label ?? String(item.value),\n )\n })\n\n return () =>\n h(\n 'ul',\n {\n ...attrs,\n ref: (el: unknown) => {\n listRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'listbox',\n 'aria-label': props.ariaLabel,\n 'aria-multiselectable': props.multi ? 'true' : undefined,\n 'aria-busy': state.value === 'loading' ? 'true' : undefined,\n 'data-iris-list': '',\n onKeydown: onKeyDown,\n style: {\n listStyle: 'none',\n margin: '0',\n padding: 'var(--iris-padding-sm)',\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n isContent.value ? renderItems() : [renderStateNode()],\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { Placement, Size } from '@iris-ui-kit/core'\nimport { IrisPopover } from '../popover/Popover'\nimport { IrisPopoverTrigger } from '../popover/PopoverTrigger'\nimport { IrisPopoverContent } from '../popover/PopoverContent'\nimport { IrisList, type IrisListItem } from '../list/List'\nimport { useI18n } from '../../i18n'\n\nexport type IrisSelectSize = Size\n\n/**\n * Single-select dropdown. Composes Popover (positioning + dismiss) with List\n * (keyboard nav + selection). Two-way binds via `v-model`.\n *\n * The trigger is a styled `<button>` showing the current item's `label` (or\n * `value` as fallback) or `placeholder` when empty. Pass `#trigger` to fully\n * customize the visible trigger element.\n */\nexport const IrisSelect = defineComponent({\n name: 'IrisSelect',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<IrisListItem<unknown>[]>, required: true },\n modelValue: { type: null as unknown as PropType<unknown> },\n placeholder: { type: String, default: undefined },\n size: { type: String as PropType<IrisSelectSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n /** Visual invalid state. */\n invalid: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n /** Forwarded as `aria-describedby` on the trigger button. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n /** Pass `false` to render the popover content inline (no teleport). */\n teleport: {\n type: [Boolean, Object] as PropType<false | HTMLElement | string>,\n default: undefined,\n },\n },\n emits: {\n 'update:modelValue': (_value: unknown) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n const open = ref(false)\n\n const selectedItem = computed(\n () => props.items.find((item) => item.value === props.modelValue) ?? null,\n )\n\n const triggerLabel = computed(() => {\n const item = selectedItem.value\n if (!item) return props.placeholder ?? t('select.placeholder')\n return item.label ?? String(item.value)\n })\n\n const onSelect = (item: IrisListItem<unknown>) => {\n emit('update:modelValue', item.value)\n open.value = false\n }\n\n const sizeStyles = computed(() => {\n const map: Record<IrisSelectSize, { padding: string; fontSize: string; minHeight: string }> =\n {\n sm: { padding: '4px 24px 4px 8px', fontSize: '12px', minHeight: '28px' },\n md: { padding: '6px 28px 6px 12px', fontSize: '14px', minHeight: '34px' },\n lg: { padding: '8px 32px 8px 12px', fontSize: '16px', minHeight: '40px' },\n }\n return map[props.size]\n })\n\n const triggerStyle = computed<Record<string, string>>(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n background: 'var(--iris-background)',\n color: selectedItem.value ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n border: `1px solid ${props.invalid ? 'var(--iris-danger)' : 'var(--iris-border)'}`,\n borderRadius: 'var(--iris-radius-md)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n textAlign: 'start',\n fontFamily: 'inherit',\n position: 'relative',\n width: 'auto',\n minWidth: '140px',\n ...sizeStyles.value,\n }))\n\n const chevron = () =>\n h(\n 'svg',\n {\n 'aria-hidden': 'true',\n viewBox: '0 0 16 16',\n width: '14',\n height: '14',\n style: {\n position: 'absolute',\n right: '8px',\n top: '50%',\n transform: 'translateY(-50%)',\n color: 'var(--iris-muted)',\n pointerEvents: 'none',\n },\n },\n [\n h('path', {\n d: 'M4 6l4 4 4-4',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ],\n )\n\n return () =>\n h(\n IrisPopover,\n {\n open: open.value,\n placement: props.placement,\n 'onUpdate:open': (v: boolean) => (open.value = v),\n },\n {\n default: () => [\n h(IrisPopoverTrigger, { asChild: true }, () => [\n slots.trigger\n ? slots.trigger({\n value: props.modelValue,\n label: triggerLabel.value,\n open: open.value,\n })\n : h(\n 'button',\n {\n ...attrs,\n type: 'button',\n id: props.id,\n disabled: props.disabled || undefined,\n 'data-iris-select-trigger': '',\n 'data-iris-select-size': props.size,\n 'data-state': open.value ? 'open' : 'closed',\n // A select opens a listbox, not a generic dialog — override\n // the popover trigger's default aria-haspopup=\"dialog\".\n 'aria-haspopup': 'listbox',\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n style: {\n ...triggerStyle.value,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('span', { style: { flex: '1', minWidth: '0' } }, triggerLabel.value),\n chevron(),\n ],\n ),\n ]),\n h(\n IrisPopoverContent,\n {\n style: { padding: 'var(--iris-padding-sm)', minWidth: '180px' },\n ...(props.teleport !== undefined ? { teleport: props.teleport } : {}),\n },\n () =>\n h(IrisList, {\n items: props.items,\n modelValue: props.modelValue,\n 'onUpdate:modelValue': (v: unknown) => emit('update:modelValue', v),\n onSelect,\n ariaLabel: t('select.options'),\n }),\n ),\n ],\n },\n )\n },\n})\n","import { onScopeDispose, watch, type Ref } from 'vue'\n\nexport interface DragState {\n /** Pointer x in client coordinates. */\n x: number\n /** Pointer y in client coordinates. */\n y: number\n /** Cumulative delta from pointerdown. */\n dx: number\n /** Cumulative delta from pointerdown. */\n dy: number\n /** The active pointer event. */\n event: PointerEvent\n}\n\nexport interface UseDragOptions {\n /** The element the drag handle is bound to. */\n handle: Ref<HTMLElement | null | undefined>\n /** Drag is only initiated for these pointer button(s). Default `[0]` (primary). */\n buttons?: number[]\n /** Called on pointerdown that starts a drag. Return `false` to cancel. */\n onStart?: (state: DragState) => boolean | void\n /** Called on every pointermove while dragging. */\n onDrag?: (state: DragState) => void\n /** Called on pointerup or pointercancel. */\n onEnd?: (state: DragState) => void\n /** Disable the drag. */\n disabled?: Ref<boolean | undefined>\n}\n\n/**\n * Bind pointer-driven drag handlers to an element. Uses `setPointerCapture`\n * so the drag continues even if the pointer leaves the element. Cancels on\n * `pointercancel` (e.g. browser interruption).\n *\n * Pure pointer events — works for mouse, touch, and pen. The handle element\n * gets `touchAction: 'none'` automatically while a drag is in progress to\n * prevent scrolling interference on touch devices.\n *\n * @example\n * const handleRef = ref<HTMLElement | null>(null)\n * useDrag({\n * handle: handleRef,\n * onDrag: ({ dx }) => (offsetX.value = startOffset + dx),\n * })\n */\nexport function useDrag(options: UseDragOptions): void {\n const buttons = options.buttons ?? [0]\n let startX = 0\n let startY = 0\n let active: PointerEvent | null = null\n\n const onPointerDown = (event: PointerEvent) => {\n if (options.disabled?.value) return\n if (!buttons.includes(event.button)) return\n const handle = options.handle.value\n if (!handle) return\n\n startX = event.clientX\n startY = event.clientY\n const state: DragState = {\n x: event.clientX,\n y: event.clientY,\n dx: 0,\n dy: 0,\n event,\n }\n const result = options.onStart?.(state)\n if (result === false) return\n active = event\n handle.setPointerCapture?.(event.pointerId)\n handle.style.touchAction = 'none'\n event.preventDefault()\n }\n\n const onPointerMove = (event: PointerEvent) => {\n if (!active || active.pointerId !== event.pointerId) return\n options.onDrag?.({\n x: event.clientX,\n y: event.clientY,\n dx: event.clientX - startX,\n dy: event.clientY - startY,\n event,\n })\n }\n\n const onPointerEnd = (event: PointerEvent) => {\n if (!active || active.pointerId !== event.pointerId) return\n const handle = options.handle.value\n handle?.releasePointerCapture?.(event.pointerId)\n if (handle) handle.style.touchAction = ''\n options.onEnd?.({\n x: event.clientX,\n y: event.clientY,\n dx: event.clientX - startX,\n dy: event.clientY - startY,\n event,\n })\n active = null\n }\n\n const attach = (el: HTMLElement) => {\n el.addEventListener('pointerdown', onPointerDown)\n el.addEventListener('pointermove', onPointerMove)\n el.addEventListener('pointerup', onPointerEnd)\n el.addEventListener('pointercancel', onPointerEnd)\n }\n\n const detach = (el: HTMLElement) => {\n el.removeEventListener('pointerdown', onPointerDown)\n el.removeEventListener('pointermove', onPointerMove)\n el.removeEventListener('pointerup', onPointerEnd)\n el.removeEventListener('pointercancel', onPointerEnd)\n }\n\n watch(\n options.handle,\n (el, prev) => {\n if (prev) detach(prev)\n if (el) attach(el)\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(() => {\n const el = options.handle.value\n if (el) detach(el)\n })\n}\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisBadgeVariant = 'solid' | 'outline' | 'subtle'\nexport type IrisBadgeTone = 'primary' | 'success' | 'warning' | 'danger' | 'neutral'\nexport type IrisBadgeSize = 'sm' | 'md'\n\nconst TONE_TO_VAR: Record<IrisBadgeTone, string> = {\n primary: '--iris-primary',\n success: '--iris-success',\n warning: '--iris-warning',\n danger: '--iris-danger',\n neutral: '--iris-muted',\n}\n\nfunction badgeStyle(\n variant: IrisBadgeVariant,\n tone: IrisBadgeTone,\n size: IrisBadgeSize,\n): Record<string, string> {\n const v = `var(${TONE_TO_VAR[tone]})`\n const base: Record<string, string> = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n fontFamily: 'var(--iris-font-family, inherit)',\n fontWeight: '500',\n lineHeight: '1',\n whiteSpace: 'nowrap',\n fontSize: size === 'sm' ? '11px' : '12px',\n padding: size === 'sm' ? '2px 6px' : '3px 8px',\n }\n switch (variant) {\n case 'solid':\n return {\n ...base,\n background: v,\n color: 'var(--iris-primary-foreground, #fff)',\n border: '1px solid transparent',\n }\n case 'outline':\n return {\n ...base,\n background: 'transparent',\n color: v,\n border: `1px solid ${v}`,\n }\n case 'subtle':\n return {\n ...base,\n // Precomputed fallback first; color-mix shorthand overrides on modern engines.\n backgroundColor: `var(${TONE_TO_VAR[tone]}-subtle)`,\n background: `color-mix(in srgb, ${v} 12%, transparent)`,\n color: v,\n border: '1px solid transparent',\n }\n }\n}\n\n/**\n * Inline status / tag indicator. Three visual variants (solid / outline /\n * subtle) × five semantic tones (primary / success / warning / danger /\n * neutral). All colors come from theme CSS variables.\n */\nexport const IrisBadge = defineComponent({\n name: 'IrisBadge',\n inheritAttrs: false,\n props: {\n variant: { type: String as PropType<IrisBadgeVariant>, default: 'subtle' },\n tone: { type: String as PropType<IrisBadgeTone>, default: 'primary' },\n size: { type: String as PropType<IrisBadgeSize>, default: 'md' },\n },\n setup(props, { slots, attrs }) {\n const style = computed(() => badgeStyle(props.variant, props.tone, props.size))\n return () =>\n h(\n 'span',\n {\n ...attrs,\n 'data-iris-badge': '',\n 'data-iris-badge-variant': props.variant,\n 'data-iris-badge-tone': props.tone,\n 'data-iris-badge-size': props.size,\n style: { ...style.value, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, ref, watch, type PropType } from 'vue'\n\nexport type IrisAvatarShape = 'circle' | 'square'\nexport type IrisAvatarSize = 'sm' | 'md' | 'lg' | number\n\nconst SIZE_MAP: Record<Exclude<IrisAvatarSize, number>, number> = {\n sm: 24,\n md: 32,\n lg: 48,\n}\n\nfunction resolveSize(size: IrisAvatarSize): number {\n return typeof size === 'number' ? size : SIZE_MAP[size]\n}\n\nfunction initialsFromName(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return ''\n if (parts.length === 1) return parts[0]!.slice(0, 2).toUpperCase()\n return (parts[0]![0]! + parts[parts.length - 1]![0]!).toUpperCase()\n}\n\n/**\n * User profile picture with graceful fallback.\n *\n * Behavior:\n * - When `src` is provided, renders an `<img>`. If the image fails to load\n * (404, CORS, etc.) we swap to the fallback.\n * - When no `src` is provided, or after failure, render `fallback` (or\n * auto-derived initials from `name`).\n * - Default size 32px (`md`); pass any number for a custom pixel size.\n */\nexport const IrisAvatar = defineComponent({\n name: 'IrisAvatar',\n inheritAttrs: false,\n props: {\n src: { type: String, default: '' },\n alt: { type: String, default: '' },\n /** Name used to auto-derive initials when no fallback slot is supplied. */\n name: { type: String, default: '' },\n /** Explicit fallback string. Takes precedence over derived initials. */\n fallback: { type: String, default: '' },\n size: { type: [String, Number] as PropType<IrisAvatarSize>, default: 'md' },\n shape: { type: String as PropType<IrisAvatarShape>, default: 'circle' },\n },\n setup(props, { slots, attrs }) {\n const failed = ref(false)\n\n watch(\n () => props.src,\n () => {\n failed.value = false\n },\n )\n\n const px = computed(() => resolveSize(props.size))\n const showImage = computed(() => Boolean(props.src) && !failed.value)\n const fallbackText = computed(\n () => props.fallback || (props.name ? initialsFromName(props.name) : ''),\n )\n\n const containerStyle = computed<Record<string, string>>(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: `${px.value}px`,\n height: `${px.value}px`,\n borderRadius: props.shape === 'circle' ? '50%' : 'var(--iris-radius-sm, 4px)',\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n fontSize: `${Math.max(10, Math.round(px.value * 0.4))}px`,\n fontWeight: '600',\n lineHeight: '1',\n overflow: 'hidden',\n userSelect: 'none',\n verticalAlign: 'middle',\n }))\n\n return () => {\n const baseAttrs = {\n ...attrs,\n 'data-iris-avatar': '',\n 'data-iris-avatar-shape': props.shape,\n 'data-iris-avatar-state': showImage.value ? 'image' : 'fallback',\n style: { ...containerStyle.value, ...((attrs.style as Record<string, string>) ?? {}) },\n }\n\n if (showImage.value) {\n return h('span', baseAttrs, [\n h('img', {\n src: props.src,\n alt: props.alt,\n 'data-iris-avatar-img': '',\n style: { width: '100%', height: '100%', objectFit: 'cover', display: 'block' },\n onError: () => {\n failed.value = true\n },\n }),\n ])\n }\n\n const fallbackContent = slots.fallback?.() ?? fallbackText.value ?? ''\n\n return h('span', baseAttrs, fallbackContent)\n }\n },\n})\n","export const __SPINNER_STYLE_ID = 'iris-spinner-styles'\n\nconst CSS = `\n@keyframes iris-spinner-rotate {\n to { transform: rotate(360deg); }\n}\n[data-iris-spinner] {\n display: inline-block;\n animation: iris-spinner-rotate 0.9s linear infinite;\n vertical-align: middle;\n}\n[data-iris-spinner] > circle {\n fill: none;\n stroke-linecap: round;\n stroke-dasharray: 60 200;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-iris-spinner] {\n animation: none;\n }\n [data-iris-spinner] > circle {\n stroke-dasharray: 0;\n }\n}\n`.trim()\n\nlet installed = false\n\nexport function installSpinnerStyles(): void {\n if (installed) return\n if (typeof document === 'undefined') return\n if (document.getElementById(__SPINNER_STYLE_ID)) {\n installed = true\n return\n }\n const el = document.createElement('style')\n el.id = __SPINNER_STYLE_ID\n el.textContent = CSS\n document.head.appendChild(el)\n installed = true\n}\n\n/** Test-only: reset and remove the injected stylesheet. */\nexport function __resetSpinnerStyles(): void {\n installed = false\n if (typeof document !== 'undefined') {\n document.getElementById(__SPINNER_STYLE_ID)?.remove()\n }\n}\n","import { computed, defineComponent, h, onMounted, type PropType } from 'vue'\nimport { installSpinnerStyles } from './styles'\nimport { useI18n } from '../../i18n'\n\nexport type IrisSpinnerSize = 'sm' | 'md' | 'lg' | number\n\nconst SIZE_MAP: Record<Exclude<IrisSpinnerSize, number>, number> = {\n sm: 14,\n md: 18,\n lg: 24,\n}\n\nfunction resolveSize(size: IrisSpinnerSize): number {\n return typeof size === 'number' ? size : SIZE_MAP[size]\n}\n\n/**\n * Activity indicator. Pure SVG + a single keyframes rule injected once\n * (idempotent, SSR-safe). Honors `prefers-reduced-motion`.\n *\n * Accessibility: defaults to `role=\"status\"` + an `aria-label` so screen\n * readers announce the loading state. Pass an empty `label` only if the\n * surrounding context already announces the activity.\n */\nexport const IrisSpinner = defineComponent({\n name: 'IrisSpinner',\n inheritAttrs: false,\n props: {\n size: { type: [String, Number] as PropType<IrisSpinnerSize>, default: 'md' },\n /** CSS color value. Defaults to the primary tone. */\n color: { type: String, default: 'var(--iris-primary)' },\n /** SVG stroke width in px. Auto-scaled by size when not specified. */\n strokeWidth: { type: Number, default: 0 },\n /** Visually-hidden screen reader label. */\n label: { type: String, default: undefined },\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n onMounted(installSpinnerStyles)\n const px = computed(() => resolveSize(props.size))\n const sw = computed(() => props.strokeWidth || Math.max(1.5, Math.round(px.value * 0.12)))\n\n return () => {\n const label = props.label ?? t('spinner.loading')\n return h(\n 'span',\n {\n ...attrs,\n role: 'status',\n 'aria-live': 'polite',\n 'data-iris-spinner-wrap': '',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n ...((attrs.style as Record<string, string>) ?? {}),\n },\n },\n [\n h(\n 'svg',\n {\n 'data-iris-spinner': '',\n width: px.value,\n height: px.value,\n viewBox: '0 0 50 50',\n 'aria-hidden': 'true',\n focusable: 'false',\n style: { color: props.color },\n },\n h('circle', {\n cx: '25',\n cy: '25',\n r: '20',\n stroke: 'currentColor',\n 'stroke-width': sw.value,\n }),\n ),\n label\n ? h(\n 'span',\n {\n style: {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: '0',\n },\n },\n label,\n )\n : null,\n ],\n )\n }\n },\n})\n","export const __SKELETON_STYLE_ID = 'iris-skeleton-styles'\n\nconst CSS = `\n@keyframes iris-skeleton-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n[data-iris-skeleton] {\n display: block;\n background-color: var(--iris-surface);\n border-radius: var(--iris-radius-sm, 4px);\n}\n[data-iris-skeleton][data-iris-skeleton-animated=\"true\"] {\n /* Fallback shimmer (no color-mix) for engines without it; the color-mix\n gradient below overrides it on modern engines (same source-order cascade). */\n background-image: linear-gradient(\n 90deg,\n var(--iris-surface) 0%,\n var(--iris-muted-subtle) 50%,\n var(--iris-surface) 100%\n );\n background-image: linear-gradient(\n 90deg,\n var(--iris-surface) 0%,\n color-mix(in srgb, var(--iris-foreground) 8%, var(--iris-surface)) 50%,\n var(--iris-surface) 100%\n );\n background-size: 200% 100%;\n animation: iris-skeleton-shimmer 1.4s linear infinite;\n}\n[data-iris-skeleton-shape=\"circle\"] {\n border-radius: 50%;\n}\n[data-iris-skeleton-shape=\"text\"] {\n border-radius: 4px;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-iris-skeleton][data-iris-skeleton-animated=\"true\"] {\n animation: none;\n }\n}\n`.trim()\n\nlet installed = false\n\nexport function installSkeletonStyles(): void {\n if (installed) return\n if (typeof document === 'undefined') return\n if (document.getElementById(__SKELETON_STYLE_ID)) {\n installed = true\n return\n }\n const el = document.createElement('style')\n el.id = __SKELETON_STYLE_ID\n el.textContent = CSS\n document.head.appendChild(el)\n installed = true\n}\n\nexport function __resetSkeletonStyles(): void {\n installed = false\n if (typeof document !== 'undefined') {\n document.getElementById(__SKELETON_STYLE_ID)?.remove()\n }\n}\n","import { computed, defineComponent, h, onMounted, type PropType } from 'vue'\nimport { installSkeletonStyles } from './styles'\nimport { useI18n } from '../../i18n'\n\nexport type IrisSkeletonShape = 'rect' | 'circle' | 'text'\n\nfunction defaultHeight(shape: IrisSkeletonShape, w: string | number | undefined): string {\n if (shape === 'text') return '1em'\n if (shape === 'circle') return typeof w === 'number' ? `${w}px` : (w ?? '40px')\n return 'auto'\n}\n\nfunction defaultWidth(shape: IrisSkeletonShape): string {\n if (shape === 'text') return '100%'\n if (shape === 'circle') return '40px'\n return '100%'\n}\n\nfunction toCss(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value\n}\n\n/**\n * Loading placeholder. Three shapes (`rect` / `circle` / `text`) drive\n * sensible defaults; pass `width` and `height` to override. Shimmer\n * animation is on by default and respects `prefers-reduced-motion`.\n *\n * For grouped loading layouts, just nest skeletons inside a normal flex/grid\n * container — there's no dedicated `SkeletonGroup` primitive on purpose\n * (composition > yet-another-wrapper).\n */\nexport const IrisSkeleton = defineComponent({\n name: 'IrisSkeleton',\n inheritAttrs: false,\n props: {\n width: { type: [String, Number], default: undefined },\n height: { type: [String, Number], default: undefined },\n shape: { type: String as PropType<IrisSkeletonShape>, default: 'rect' },\n animated: { type: Boolean, default: true },\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n onMounted(installSkeletonStyles)\n\n const style = computed<Record<string, string>>(() => {\n const w = props.width !== undefined ? toCss(props.width) : defaultWidth(props.shape)\n const h =\n props.height !== undefined ? toCss(props.height) : defaultHeight(props.shape, props.width)\n return { width: w, height: h }\n })\n\n return () =>\n h('div', {\n ...attrs,\n 'data-iris-skeleton': '',\n 'data-iris-skeleton-shape': props.shape,\n 'data-iris-skeleton-animated': String(props.animated),\n role: 'status',\n 'aria-busy': 'true',\n 'aria-label': t('skeleton.loading'),\n style: { ...style.value, ...((attrs.style as Record<string, string>) ?? {}) },\n })\n },\n})\n","export const __PROGRESS_STYLE_ID = 'iris-progress-styles'\n\nconst CSS = `\n@keyframes iris-progress-indeterminate {\n 0% { left: -40%; right: 100%; }\n 60% { left: 100%; right: -20%; }\n 100% { left: 100%; right: -20%; }\n}\n[data-iris-progress] {\n position: relative;\n overflow: hidden;\n background: var(--iris-surface);\n border-radius: 9999px;\n}\n[data-iris-progress-bar] {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n border-radius: 9999px;\n transition: width 200ms ease;\n}\n[data-iris-progress][data-state=\"indeterminate\"] [data-iris-progress-bar] {\n width: auto;\n right: 100%;\n animation: iris-progress-indeterminate 1.2s ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-iris-progress][data-state=\"indeterminate\"] [data-iris-progress-bar] {\n animation: none;\n right: 50%;\n left: 0;\n }\n}\n`.trim()\n\nlet installed = false\n\nexport function installProgressStyles(): void {\n if (installed) return\n if (typeof document === 'undefined') return\n if (document.getElementById(__PROGRESS_STYLE_ID)) {\n installed = true\n return\n }\n const el = document.createElement('style')\n el.id = __PROGRESS_STYLE_ID\n el.textContent = CSS\n document.head.appendChild(el)\n installed = true\n}\n\nexport function __resetProgressStyles(): void {\n installed = false\n if (typeof document !== 'undefined') {\n document.getElementById(__PROGRESS_STYLE_ID)?.remove()\n }\n}\n","import { computed, defineComponent, h, onMounted, type PropType } from 'vue'\nimport { installProgressStyles } from './styles'\n\nexport type IrisProgressTone = 'primary' | 'success' | 'warning' | 'danger'\nexport type IrisProgressSize = 'sm' | 'md'\n\nconst TONE_TO_VAR: Record<IrisProgressTone, string> = {\n primary: '--iris-primary',\n success: '--iris-success',\n warning: '--iris-warning',\n danger: '--iris-danger',\n}\n\nconst HEIGHT_MAP: Record<IrisProgressSize, string> = {\n sm: '4px',\n md: '8px',\n}\n\n/**\n * Linear progress bar with two modes:\n *\n * - **Determinate** — pass `value` (and optionally `max`). Width interpolates\n * smoothly between renders. `aria-valuenow` is set.\n * - **Indeterminate** — pass `indeterminate` or leave `value` as `null`.\n * A continuous slide animation runs; `aria-valuenow` is omitted.\n *\n * Honors `prefers-reduced-motion`: indeterminate becomes a static half-bar.\n */\nexport const IrisProgress = defineComponent({\n name: 'IrisProgress',\n inheritAttrs: false,\n props: {\n value: { type: Number, default: null as number | null },\n max: { type: Number, default: 100 },\n indeterminate: { type: Boolean, default: false },\n tone: { type: String as PropType<IrisProgressTone>, default: 'primary' },\n size: { type: String as PropType<IrisProgressSize>, default: 'md' },\n },\n setup(props, { attrs }) {\n onMounted(installProgressStyles)\n\n const isIndeterminate = computed(\n () => props.indeterminate || props.value === null || props.value === undefined,\n )\n\n const clamped = computed(() => {\n if (isIndeterminate.value || props.value === null) return 0\n return Math.max(0, Math.min(props.max, props.value))\n })\n const percent = computed(() =>\n isIndeterminate.value ? 0 : (clamped.value / Math.max(1, props.max)) * 100,\n )\n\n const containerStyle = computed<Record<string, string>>(() => ({\n width: '100%',\n height: HEIGHT_MAP[props.size],\n }))\n\n const barStyle = computed<Record<string, string>>(() => ({\n background: `var(${TONE_TO_VAR[props.tone]})`,\n width: isIndeterminate.value ? 'auto' : `${percent.value}%`,\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': props.max,\n 'aria-valuenow': isIndeterminate.value ? undefined : clamped.value,\n 'data-iris-progress': '',\n 'data-state': isIndeterminate.value ? 'indeterminate' : 'determinate',\n 'data-iris-progress-tone': props.tone,\n 'data-iris-progress-size': props.size,\n style: { ...containerStyle.value, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n h('div', { 'data-iris-progress-bar': '', style: barStyle.value }),\n )\n },\n})\n","import { computed, defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisAlertTone = 'info' | 'success' | 'warning' | 'danger'\n\nconst TONE_TO_VAR: Record<IrisAlertTone, string> = {\n info: '--iris-primary',\n success: '--iris-success',\n warning: '--iris-warning',\n danger: '--iris-danger',\n}\n\n/**\n * Inline status / feedback callout. Use for page- or section-level messages\n * that are part of the document flow (NOT transient — those use Toast).\n *\n * Composition:\n *\n * ```html\n * <IrisAlert tone=\"warning\" closable @close=\"...\">\n * <template #title>Heads up</template>\n * Storage is at 85 % of quota.\n * </IrisAlert>\n * ```\n *\n * Controlled (`v-model:open`) or uncontrolled (default visible). When closed\n * (uncontrolled), the component returns `null` from render rather than\n * leaving an empty wrapper in the tree.\n */\nexport const IrisAlert = defineComponent({\n name: 'IrisAlert',\n inheritAttrs: false,\n props: {\n tone: { type: String as PropType<IrisAlertTone>, default: 'info' },\n title: { type: String, default: '' },\n /** When true, a close button is rendered. */\n closable: { type: Boolean, default: false },\n /** Controlled visibility. Omit for uncontrolled (defaults to visible). */\n open: { type: Boolean, default: undefined },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n close: () => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n const internalOpen = ref(true)\n\n watch(\n () => props.open,\n (value) => {\n if (value !== undefined) internalOpen.value = value\n },\n )\n\n const isOpen = computed(() => (props.open !== undefined ? props.open : internalOpen.value))\n\n const onClose = () => {\n if (props.open === undefined) internalOpen.value = false\n emit('update:open', false)\n emit('close')\n }\n\n const tonalVar = computed(() => `var(${TONE_TO_VAR[props.tone]})`)\n\n const containerStyle = computed<Record<string, string>>(() => ({\n display: 'flex',\n gap: 'var(--iris-gap-md, 12px)',\n padding: 'var(--iris-padding-md, 12px)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n border: `1px solid ${tonalVar.value}`,\n // `backgroundColor` is the precomputed fallback under color-mix (engines\n // without it); the `background` shorthand overrides with the exact mix.\n backgroundColor: `var(${TONE_TO_VAR[props.tone]}-subtle)`,\n background: `color-mix(in srgb, ${tonalVar.value} 10%, var(--iris-background))`,\n color: 'var(--iris-foreground)',\n alignItems: 'flex-start',\n }))\n\n return () => {\n if (!isOpen.value) return null\n return h(\n 'div',\n {\n ...attrs,\n role: props.tone === 'danger' || props.tone === 'warning' ? 'alert' : 'status',\n 'data-iris-alert': '',\n 'data-iris-alert-tone': props.tone,\n style: { ...containerStyle.value, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n [\n slots.icon\n ? h(\n 'span',\n {\n 'data-iris-alert-icon': '',\n style: { color: tonalVar.value, flexShrink: '0', display: 'inline-flex' },\n },\n slots.icon(),\n )\n : null,\n h('div', { 'data-iris-alert-body': '', style: { flex: '1', minWidth: '0' } }, [\n props.title || slots.title\n ? h(\n 'div',\n {\n 'data-iris-alert-title': '',\n style: { fontWeight: '600', marginBottom: '4px', color: tonalVar.value },\n },\n slots.title?.() ?? props.title,\n )\n : null,\n h('div', { 'data-iris-alert-content': '' }, slots.default?.()),\n ]),\n props.closable\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-alert-close': '',\n 'aria-label': t('alert.close'),\n onClick: onClose,\n style: {\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: 'var(--iris-muted)',\n fontSize: '16px',\n padding: '0',\n lineHeight: '1',\n flexShrink: '0',\n },\n },\n '✕',\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, watch, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisBannerTone = 'info' | 'success' | 'warning' | 'danger' | 'neutral'\n\nconst TONE_TO_VAR: Record<IrisBannerTone, string> = {\n info: '--iris-primary',\n success: '--iris-success',\n warning: '--iris-warning',\n danger: '--iris-danger',\n neutral: '--iris-muted',\n}\n\n/**\n * Edge-to-edge announcement bar — typically pinned to the top of the layout.\n * Distinct from {@link IrisAlert} in three ways: (a) edge-to-edge layout,\n * (b) optional `sticky` positioning, (c) tighter vertical padding for a\n * smaller visual footprint.\n */\nexport const IrisBanner = defineComponent({\n name: 'IrisBanner',\n inheritAttrs: false,\n props: {\n tone: { type: String as PropType<IrisBannerTone>, default: 'info' },\n closable: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n /** Use `position: sticky; top: 0;`. */\n sticky: { type: Boolean, default: false },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n close: () => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n const internalOpen = ref(true)\n\n watch(\n () => props.open,\n (value) => {\n if (value !== undefined) internalOpen.value = value\n },\n )\n\n const isOpen = computed(() => (props.open !== undefined ? props.open : internalOpen.value))\n\n const onClose = () => {\n if (props.open === undefined) internalOpen.value = false\n emit('update:open', false)\n emit('close')\n }\n\n const tonalVar = computed(() => `var(${TONE_TO_VAR[props.tone]})`)\n\n const containerStyle = computed<Record<string, string>>(() => ({\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-md, 12px)',\n padding: '8px var(--iris-padding-md, 16px)',\n width: '100%',\n // Tonal surface: `backgroundColor` is the precomputed fallback (used on\n // engines without color-mix); the `background` shorthand (later in source\n // order) overrides it with the exact color-mix on modern engines.\n backgroundColor: `var(${TONE_TO_VAR[props.tone]}-subtle)`,\n background: `color-mix(in srgb, ${tonalVar.value} 14%, var(--iris-background))`,\n color: 'var(--iris-foreground)',\n // Border: shorthand carries width/style + a solid fallback color; the\n // `borderBottomColor` longhand (later) refines it to the color-mix.\n borderBottom: `1px solid ${tonalVar.value}`,\n borderBottomColor: `color-mix(in srgb, ${tonalVar.value} 50%, transparent)`,\n ...(props.sticky ? { position: 'sticky' as const, top: '0', zIndex: '40' } : {}),\n }))\n\n return () => {\n if (!isOpen.value) return null\n return h(\n 'div',\n {\n ...attrs,\n role: 'status',\n 'data-iris-banner': '',\n 'data-iris-banner-tone': props.tone,\n style: { ...containerStyle.value, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n [\n slots.icon\n ? h(\n 'span',\n {\n 'data-iris-banner-icon': '',\n style: { color: tonalVar.value, display: 'inline-flex', flexShrink: '0' },\n },\n slots.icon(),\n )\n : null,\n h(\n 'div',\n {\n 'data-iris-banner-content': '',\n style: { flex: '1', minWidth: '0' },\n },\n slots.default?.(),\n ),\n slots.actions\n ? h(\n 'div',\n {\n 'data-iris-banner-actions': '',\n style: { display: 'inline-flex', gap: '8px', flexShrink: '0' },\n },\n slots.actions(),\n )\n : null,\n props.closable\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-banner-close': '',\n 'aria-label': t('banner.close'),\n onClick: onClose,\n style: {\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: 'var(--iris-muted)',\n fontSize: '16px',\n padding: '0 4px',\n lineHeight: '1',\n flexShrink: '0',\n },\n },\n '✕',\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport { getDirection } from '@iris-ui-kit/theme'\nimport { useDrag } from '../drag/useDrag'\nimport { useI18n } from '../../i18n'\n\nexport type IrisSliderOrientation = 'horizontal' | 'vertical'\n\nfunction decimalsOf(step: number): number {\n if (!Number.isFinite(step)) return 0\n const s = step.toString()\n const dot = s.indexOf('.')\n return dot < 0 ? 0 : s.length - dot - 1\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction roundToStep(value: number, step: number, min: number): number {\n if (step <= 0) return value\n const places = decimalsOf(step)\n const offset = Math.round((value - min) / step) * step + min\n return Number(offset.toFixed(places))\n}\n\n/**\n * Numeric slider with keyboard + pointer support. Single thumb today; a\n * range variant can be added when needed (two thumbs, same skeleton).\n *\n * Keyboard:\n * - ←/↓ : −step\n * - →/↑ : +step\n * - Home : min\n * - End : max\n * - PgUp / PgDn : ±step × 10\n */\nexport const IrisSlider = defineComponent({\n name: 'IrisSlider',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n disabled: { type: Boolean, default: false },\n orientation: { type: String as PropType<IrisSliderOrientation>, default: 'horizontal' },\n /** Accessible label for screen readers. */\n label: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: number) => true,\n change: (_value: number) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const trackRef = ref<HTMLElement | null>(null)\n const thumbRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n\n const isHorizontal = computed(() => props.orientation === 'horizontal')\n\n const percent = computed(() => {\n const range = props.max - props.min\n if (range <= 0) return 0\n return ((props.modelValue - props.min) / range) * 100\n })\n\n const setValue = (next: number, emitChange: boolean) => {\n const clamped = clamp(next, props.min, props.max)\n const rounded = roundToStep(clamped, props.step, props.min)\n const finalValue = clamp(rounded, props.min, props.max)\n if (finalValue !== props.modelValue) {\n emit('update:modelValue', finalValue)\n if (emitChange) emit('change', finalValue)\n } else if (emitChange) {\n emit('change', finalValue)\n }\n }\n\n const valueFromPointer = (clientX: number, clientY: number): number => {\n const track = trackRef.value\n if (!track) return props.modelValue\n const rect = track.getBoundingClientRect()\n let ratio: number\n if (isHorizontal.value) {\n if (rect.width <= 0) return props.modelValue\n // RTL: the horizontal value axis runs right-to-left.\n const rtl = getDirection(track.closest<HTMLElement>('[data-iris-dir],[dir]')) === 'rtl'\n ratio = (rtl ? rect.right - clientX : clientX - rect.left) / rect.width\n } else {\n if (rect.height <= 0) return props.modelValue\n // Vertical: top = max, bottom = min (common convention)\n ratio = 1 - (clientY - rect.top) / rect.height\n }\n ratio = Math.max(0, Math.min(1, ratio))\n return props.min + ratio * (props.max - props.min)\n }\n\n useDrag({\n handle: thumbRef,\n disabled: computed(() => props.disabled),\n onStart: ({ x, y }) => {\n if (props.disabled) return false\n dragging.value = true\n setValue(valueFromPointer(x, y), false)\n return true\n },\n onDrag: ({ x, y }) => {\n setValue(valueFromPointer(x, y), false)\n },\n onEnd: () => {\n dragging.value = false\n emit('change', props.modelValue)\n },\n })\n\n const onTrackClick = (event: MouseEvent) => {\n if (props.disabled) return\n // Only handle direct clicks on the track (not the thumb — drag handles that).\n if (event.target !== event.currentTarget) return\n setValue(valueFromPointer(event.clientX, event.clientY), true)\n thumbRef.value?.focus()\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (props.disabled) return\n const big = props.step * 10\n let next: number | null = null\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n next = props.modelValue - props.step\n break\n case 'ArrowRight':\n case 'ArrowUp':\n next = props.modelValue + props.step\n break\n case 'Home':\n next = props.min\n break\n case 'End':\n next = props.max\n break\n case 'PageUp':\n next = props.modelValue + big\n break\n case 'PageDown':\n next = props.modelValue - big\n break\n }\n if (next !== null) {\n event.preventDefault()\n setValue(next, true)\n }\n }\n\n const trackStyle = computed<Record<string, string>>(() => {\n const horiz = isHorizontal.value\n return {\n position: 'relative',\n background: 'var(--iris-surface)',\n borderRadius: '9999px',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n ...(horiz ? { width: '100%', height: '6px' } : { width: '6px', height: '120px' }),\n }\n })\n\n const fillStyle = computed<Record<string, string>>(() => {\n const horiz = isHorizontal.value\n return {\n position: 'absolute',\n background: 'var(--iris-primary)',\n borderRadius: '9999px',\n pointerEvents: 'none',\n ...(horiz\n ? { top: '0', bottom: '0', insetInlineStart: '0', width: `${percent.value}%` }\n : { left: '0', right: '0', bottom: '0', height: `${percent.value}%` }),\n }\n })\n\n const thumbStyle = computed<Record<string, string>>(() => {\n const horiz = isHorizontal.value\n return {\n position: 'absolute',\n width: '16px',\n height: '16px',\n borderRadius: '50%',\n background: 'var(--iris-background)',\n border: '2px solid var(--iris-primary)',\n boxShadow: dragging.value\n ? '0 0 0 4px rgba(99, 102, 241, 0.18)'\n : '0 1px 2px rgba(0,0,0,.15)',\n cursor: props.disabled ? 'not-allowed' : 'grab',\n transition: 'box-shadow 120ms ease',\n touchAction: 'none',\n ...(horiz\n ? {\n top: '50%',\n insetInlineStart: `${percent.value}%`,\n transform: 'translate(-50%, -50%)',\n }\n : { left: '50%', bottom: `${percent.value}%`, transform: 'translate(-50%, 50%)' }),\n }\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-slider': '',\n 'data-iris-slider-orientation': props.orientation,\n 'data-state': props.disabled ? 'disabled' : dragging.value ? 'dragging' : 'idle',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n ...(isHorizontal.value ? { width: '100%', padding: '8px 0' } : { padding: '0 8px' }),\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n h(\n 'div',\n {\n ref: (el: unknown) => {\n trackRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-slider-track': '',\n style: trackStyle.value,\n onClick: onTrackClick,\n },\n [\n h('div', { 'data-iris-slider-fill': '', style: fillStyle.value }),\n h('div', {\n ref: (el: unknown) => {\n thumbRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-slider-thumb': '',\n role: 'slider',\n 'aria-label': props.label ?? t('slider.label'),\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': props.modelValue,\n 'aria-orientation': props.orientation,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n tabindex: props.disabled ? -1 : 0,\n style: thumbStyle.value,\n onKeydown: onKeyDown,\n }),\n ],\n ),\n )\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\nimport { getPageRange, type IrisPageItem } from './types'\nimport { useI18n } from '../../i18n'\n\nexport type IrisPaginationSize = 'sm' | 'md'\n\n/**\n * Numeric page selector with prev/next + optional first/last buttons and\n * two-sided ellipsis. Stateless — caller owns the `current` page (via\n * `v-model`) and is told the page count implicitly through `total +\n * pageSize`.\n */\nexport const IrisPagination = defineComponent({\n name: 'IrisPagination',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: 1 },\n /** Total number of items across all pages. */\n total: { type: Number, required: true },\n pageSize: { type: Number, default: 10 },\n siblingCount: { type: Number, default: 1 },\n showFirstLast: { type: Boolean, default: false },\n size: { type: String as PropType<IrisPaginationSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: number) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const totalPages = computed(() =>\n Math.max(1, Math.ceil(props.total / Math.max(1, props.pageSize))),\n )\n const current = computed(() => Math.min(totalPages.value, Math.max(1, props.modelValue)))\n const items = computed<IrisPageItem[]>(() =>\n getPageRange(current.value, totalPages.value, props.siblingCount),\n )\n\n const go = (page: number) => {\n if (props.disabled) return\n const next = Math.min(totalPages.value, Math.max(1, page))\n if (next === current.value) return\n emit('update:modelValue', next)\n }\n\n const btnSize = computed(() => (props.size === 'sm' ? '28px' : '32px'))\n const fontSize = computed(() => (props.size === 'sm' ? '12px' : '14px'))\n\n const baseBtnStyle = computed<Record<string, string>>(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: btnSize.value,\n height: btnSize.value,\n padding: '0 8px',\n background: 'transparent',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n cursor: 'pointer',\n fontSize: fontSize.value,\n fontFamily: 'inherit',\n lineHeight: '1',\n }))\n\n const renderBtn = (\n page: number | null,\n label: string,\n opts: { kind: string; disabled?: boolean; active?: boolean },\n ) => {\n const isDisabled = opts.disabled || props.disabled\n const isActive = opts.active === true\n const style: Record<string, string> = {\n ...baseBtnStyle.value,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n opacity: isDisabled ? '0.5' : '1',\n ...(isActive\n ? {\n background: 'var(--iris-primary)',\n color: 'var(--iris-primary-foreground, #fff)',\n borderColor: 'var(--iris-primary)',\n }\n : {}),\n }\n return h(\n 'button',\n {\n type: 'button',\n 'data-iris-pagination-item': opts.kind,\n 'data-iris-pagination-active': isActive ? 'true' : undefined,\n 'aria-label': label,\n 'aria-current': isActive ? 'page' : undefined,\n disabled: isDisabled || undefined,\n onClick: () => {\n if (page !== null) go(page)\n },\n style,\n },\n opts.kind === 'page' ? String(page) : label,\n )\n }\n\n const renderEllipsis = (side: 'left' | 'right') =>\n h(\n 'span',\n {\n 'data-iris-pagination-ellipsis': side,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: btnSize.value,\n height: btnSize.value,\n color: 'var(--iris-muted)',\n fontSize: fontSize.value,\n },\n },\n '…',\n )\n\n return () =>\n h(\n 'nav',\n {\n ...attrs,\n 'aria-label': t('pagination.label'),\n 'data-iris-pagination': '',\n 'data-iris-pagination-size': props.size,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n props.showFirstLast\n ? renderBtn(1, t('pagination.first'), { kind: 'first', disabled: current.value <= 1 })\n : null,\n renderBtn(current.value - 1, t('pagination.previous'), {\n kind: 'prev',\n disabled: current.value <= 1,\n }),\n ...items.value.map((item) => {\n if (item === 'ellipsis-left') return renderEllipsis('left')\n if (item === 'ellipsis-right') return renderEllipsis('right')\n return renderBtn(item, t('pagination.page', { page: item }), {\n kind: 'page',\n active: item === current.value,\n })\n }),\n renderBtn(current.value + 1, t('pagination.next'), {\n kind: 'next',\n disabled: current.value >= totalPages.value,\n }),\n props.showFirstLast\n ? renderBtn(totalPages.value, t('pagination.last'), {\n kind: 'last',\n disabled: current.value >= totalPages.value,\n })\n : null,\n ],\n )\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisCardVariant = 'elevated' | 'outline' | 'subtle'\nexport type IrisCardPadding = 'none' | 'sm' | 'md' | 'lg'\n\nconst PADDING_MAP: Record<IrisCardPadding, string> = {\n none: '0',\n sm: '12px',\n md: 'var(--iris-padding-md, 16px)',\n lg: '24px',\n}\n\n/**\n * Card surface with three visual variants:\n * - `elevated` — soft drop-shadow, no border (default).\n * - `outline` — bordered, no shadow.\n * - `subtle` — tinted surface, no border, no shadow.\n *\n * Slots: `header`, default body, `footer`. Slots are only rendered when\n * supplied (no empty wrapper divs).\n */\nexport const IrisCard = defineComponent({\n name: 'IrisCard',\n inheritAttrs: false,\n props: {\n variant: { type: String as PropType<IrisCardVariant>, default: 'elevated' },\n padding: { type: String as PropType<IrisCardPadding>, default: 'md' },\n hover: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const containerStyle = computed<Record<string, string>>(() => {\n const base: Record<string, string> = {\n display: 'flex',\n flexDirection: 'column',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n borderRadius: 'var(--iris-radius-md, 8px)',\n overflow: 'hidden',\n transition: props.hover ? 'transform 160ms ease, box-shadow 160ms ease' : 'none',\n }\n switch (props.variant) {\n case 'elevated':\n return { ...base, boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 4px 12px rgba(0,0,0,.06)' }\n case 'outline':\n return { ...base, border: '1px solid var(--iris-border)' }\n case 'subtle':\n return { ...base, background: 'var(--iris-surface)' }\n }\n })\n\n return () => {\n const header = slots.header?.()\n const footer = slots.footer?.()\n const body = slots.default?.()\n\n const sectionPadding = PADDING_MAP[props.padding]\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-card': '',\n 'data-iris-card-variant': props.variant,\n 'data-iris-card-padding': props.padding,\n 'data-iris-card-hover': props.hover ? 'true' : undefined,\n style: {\n ...containerStyle.value,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n header\n ? h(\n 'div',\n {\n 'data-iris-card-header': '',\n style: {\n padding: sectionPadding,\n borderBottom: '1px solid var(--iris-border)',\n fontWeight: '600',\n },\n },\n header,\n )\n : null,\n body\n ? h(\n 'div',\n {\n 'data-iris-card-body': '',\n style: { padding: sectionPadding, flex: '1' },\n },\n body,\n )\n : null,\n footer\n ? h(\n 'div',\n {\n 'data-iris-card-footer': '',\n style: {\n padding: sectionPadding,\n borderTop: '1px solid var(--iris-border)',\n },\n },\n footer,\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisDividerOrientation = 'horizontal' | 'vertical'\nexport type IrisDividerSpacing = 'sm' | 'md' | 'lg'\n\nconst SPACING_MAP: Record<IrisDividerSpacing, string> = {\n sm: '8px',\n md: '16px',\n lg: '24px',\n}\n\n/**\n * Visual separator. Horizontal renders an `<hr>` for semantic correctness\n * (or a labelled `<div role=\"separator\">` when a label slot is supplied).\n * Vertical always renders a `<div role=\"separator\">`.\n *\n * Pass a `label` (or label slot) to render text in the middle — \"OR\"\n * separators, section dividers, etc.\n */\nexport const IrisDivider = defineComponent({\n name: 'IrisDivider',\n inheritAttrs: false,\n props: {\n orientation: { type: String as PropType<IrisDividerOrientation>, default: 'horizontal' },\n label: { type: String, default: '' },\n spacing: { type: String as PropType<IrisDividerSpacing>, default: 'md' },\n },\n setup(props, { slots, attrs }) {\n const isHorizontal = computed(() => props.orientation === 'horizontal')\n const hasLabel = computed(() => Boolean(props.label || slots.default))\n\n return () => {\n if (isHorizontal.value && !hasLabel.value) {\n return h('hr', {\n ...attrs,\n 'data-iris-divider': '',\n 'data-iris-divider-orientation': 'horizontal',\n style: {\n border: 'none',\n borderTop: '1px solid var(--iris-border)',\n margin: `${SPACING_MAP[props.spacing]} 0`,\n width: '100%',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n })\n }\n\n if (!isHorizontal.value) {\n return h('div', {\n ...attrs,\n role: 'separator',\n 'aria-orientation': 'vertical',\n 'data-iris-divider': '',\n 'data-iris-divider-orientation': 'vertical',\n style: {\n display: 'inline-block',\n width: '1px',\n alignSelf: 'stretch',\n background: 'var(--iris-border)',\n margin: `0 ${SPACING_MAP[props.spacing]}`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n })\n }\n\n // Horizontal + label → 3-column flex with text in the middle.\n return h(\n 'div',\n {\n ...attrs,\n role: 'separator',\n 'aria-orientation': 'horizontal',\n 'data-iris-divider': '',\n 'data-iris-divider-orientation': 'horizontal',\n 'data-iris-divider-has-label': 'true',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n margin: `${SPACING_MAP[props.spacing]} 0`,\n color: 'var(--iris-muted)',\n fontSize: '12px',\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('span', { 'data-iris-divider-line': 'before', style: lineStyle() }),\n h('span', { 'data-iris-divider-label': '' }, slots.default?.() ?? props.label),\n h('span', { 'data-iris-divider-line': 'after', style: lineStyle() }),\n ],\n )\n }\n },\n})\n\nfunction lineStyle(): Record<string, string> {\n return {\n flex: '1',\n height: '1px',\n background: 'var(--iris-border)',\n }\n}\n","import { defineComponent, h } from 'vue'\n\n/**\n * Placeholder shown when a list / table / page has no content. Centered\n * column layout with optional icon, title, description, and an action slot\n * (typically a \"Create new\" button).\n */\nexport const IrisEmptyState = defineComponent({\n name: 'IrisEmptyState',\n inheritAttrs: false,\n props: {\n title: { type: String, default: '' },\n description: { type: String, default: '' },\n },\n setup(props, { slots, attrs }) {\n return () => {\n const icon = slots.icon?.()\n const action = slots.action?.()\n const titleNode = slots.title?.() ?? (props.title || null)\n const descNode = slots.description?.() ?? (props.description || null)\n\n return h(\n 'div',\n {\n ...attrs,\n role: 'status',\n 'data-iris-empty-state': '',\n style: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n padding: '32px 16px',\n textAlign: 'center',\n color: 'var(--iris-foreground)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n icon\n ? h(\n 'div',\n {\n 'data-iris-empty-state-icon': '',\n style: { color: 'var(--iris-muted)', fontSize: '32px', lineHeight: '1' },\n },\n icon,\n )\n : null,\n titleNode\n ? h(\n 'div',\n {\n 'data-iris-empty-state-title': '',\n style: { fontWeight: '600', fontSize: '16px' },\n },\n titleNode,\n )\n : null,\n descNode\n ? h(\n 'div',\n {\n 'data-iris-empty-state-description': '',\n style: { color: 'var(--iris-muted)', fontSize: '14px', maxWidth: '380px' },\n },\n descNode,\n )\n : null,\n action\n ? h('div', { 'data-iris-empty-state-action': '', style: { marginTop: '4px' } }, action)\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisChipVariant = 'solid' | 'outline' | 'subtle'\nexport type IrisChipTone = 'primary' | 'success' | 'warning' | 'danger' | 'neutral'\nexport type IrisChipSize = 'sm' | 'md'\n\nconst TONE_TO_VAR: Record<IrisChipTone, string> = {\n primary: '--iris-primary',\n success: '--iris-success',\n warning: '--iris-warning',\n danger: '--iris-danger',\n neutral: '--iris-muted',\n}\n\nfunction chipStyle(\n variant: IrisChipVariant,\n tone: IrisChipTone,\n size: IrisChipSize,\n clickable: boolean,\n disabled: boolean,\n): Record<string, string> {\n const v = `var(${TONE_TO_VAR[tone]})`\n const base: Record<string, string> = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n borderRadius: '9999px',\n fontFamily: 'var(--iris-font-family, inherit)',\n fontWeight: '500',\n lineHeight: '1',\n whiteSpace: 'nowrap',\n cursor: disabled ? 'not-allowed' : clickable ? 'pointer' : 'default',\n opacity: disabled ? '0.6' : '1',\n transition: 'background-color 120ms ease, box-shadow 120ms ease',\n fontSize: size === 'sm' ? '11px' : '12px',\n padding: size === 'sm' ? '3px 8px' : '4px 10px',\n userSelect: 'none',\n }\n switch (variant) {\n case 'solid':\n return {\n ...base,\n background: v,\n color: 'var(--iris-primary-foreground, #fff)',\n border: '1px solid transparent',\n }\n case 'outline':\n return {\n ...base,\n background: 'transparent',\n color: v,\n border: `1px solid ${v}`,\n }\n case 'subtle':\n return {\n ...base,\n // Precomputed fallback first; color-mix shorthand overrides on modern engines.\n backgroundColor: `var(${TONE_TO_VAR[tone]}-subtle)`,\n background: `color-mix(in srgb, ${v} 14%, transparent)`,\n color: v,\n border: '1px solid transparent',\n }\n }\n}\n\n/**\n * Tag / filter chip. Three variants × five tones. Three modes:\n *\n * - Pure display (default): renders a `<span>`.\n * - Closable (`closable=true`): adds an \"×\" button that emits `@close`.\n * - Clickable (`clickable=true`): renders a `<button>` so the whole chip\n * becomes a control. Emits `@click`.\n *\n * Closable + clickable can combine; the close button's click is stopped\n * from propagating so the parent click still fires only for chip-body\n * clicks.\n */\nexport const IrisChip = defineComponent({\n name: 'IrisChip',\n inheritAttrs: false,\n props: {\n variant: { type: String as PropType<IrisChipVariant>, default: 'subtle' },\n tone: { type: String as PropType<IrisChipTone>, default: 'neutral' },\n size: { type: String as PropType<IrisChipSize>, default: 'md' },\n closable: { type: Boolean, default: false },\n clickable: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n close: () => true,\n click: (_event: MouseEvent) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n const style = computed(() =>\n chipStyle(props.variant, props.tone, props.size, props.clickable, props.disabled),\n )\n\n const onClick = (event: MouseEvent) => {\n if (props.disabled) return\n emit('click', event)\n }\n\n const onCloseClick = (event: MouseEvent) => {\n if (props.disabled) return\n event.stopPropagation()\n emit('close')\n }\n\n return () => {\n const baseProps: Record<string, unknown> = {\n ...attrs,\n 'data-iris-chip': '',\n 'data-iris-chip-variant': props.variant,\n 'data-iris-chip-tone': props.tone,\n 'data-iris-chip-size': props.size,\n style: { ...style.value, ...((attrs.style as Record<string, string>) ?? {}) },\n }\n\n const children = [\n slots.icon\n ? h(\n 'span',\n {\n 'data-iris-chip-icon': '',\n style: { display: 'inline-flex', alignItems: 'center', flexShrink: '0' },\n },\n slots.icon(),\n )\n : null,\n h('span', { 'data-iris-chip-label': '' }, slots.default?.()),\n props.closable\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-chip-close': '',\n 'aria-label': t('chip.remove'),\n disabled: props.disabled || undefined,\n onClick: onCloseClick,\n style: {\n background: 'transparent',\n border: 'none',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n color: 'inherit',\n padding: '0',\n marginInlineStart: '2px',\n fontSize: '12px',\n lineHeight: '1',\n flexShrink: '0',\n opacity: '0.7',\n },\n },\n '✕',\n )\n : null,\n ]\n\n if (props.clickable) {\n return h(\n 'button',\n {\n ...baseProps,\n type: 'button',\n disabled: props.disabled || undefined,\n onClick,\n },\n children,\n )\n }\n return h('span', baseProps, children)\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref, ShallowRef } from 'vue'\n\nexport interface AccordionContext {\n /** True when this item's value is currently open. */\n isOpen: (value: string) => boolean\n toggle: (value: string) => void\n /** Used to wire ARIA + key generation. */\n rootId: string\n /** Allow zero items open at once in single mode. */\n collapsible: ComputedRef<boolean>\n multiple: ComputedRef<boolean>\n /** Current keyboard-navigation active index. */\n activeIndex: Readonly<ShallowRef<number>>\n /**\n * Register a trigger element for keyboard navigation.\n * Returns an unregister function for cleanup.\n */\n registerItem: (value: string, el: Ref<HTMLButtonElement | null>) => () => void\n /** Tell the nav controller to focus the item with the given value. */\n focusItem: (value: string) => void\n}\n\nexport const AccordionContextKey: InjectionKey<AccordionContext> = Symbol('IrisAccordion')\n","import {\n computed,\n defineComponent,\n h,\n provide,\n ref,\n useId,\n watch,\n type PropType,\n type Ref,\n} from 'vue'\nimport { createKeyboardNav, type KeyboardNavAction } from '@iris-ui-kit/core'\nimport { useStore } from '../../useStore'\nimport { AccordionContextKey } from './context'\n\nexport type IrisAccordionValue = string | string[] | null\n\n/**\n * Container for collapsible sections.\n *\n * - `multiple=false` (default): zero or one item open at a time. The\n * `modelValue` is `string | null`. Set `collapsible=true` to allow\n * closing the currently-open item.\n * - `multiple=true`: any number of items open. `modelValue` is `string[]`.\n *\n * Each child `IrisAccordionItem` registers itself by `value` and self-renders\n * its header (button) + content (region).\n */\nexport const IrisAccordion = defineComponent({\n name: 'IrisAccordion',\n inheritAttrs: false,\n props: {\n /** Either a string (single mode) or string[] (multiple mode). */\n modelValue: {\n type: null as unknown as PropType<IrisAccordionValue>,\n default: undefined,\n },\n /** Uncontrolled initial value. */\n defaultValue: {\n type: null as unknown as PropType<IrisAccordionValue>,\n default: undefined,\n },\n multiple: { type: Boolean, default: false },\n /** In single mode, allow zero items open. */\n collapsible: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: IrisAccordionValue) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const isControlled = computed(() => props.modelValue !== undefined)\n\n const initialInternal: IrisAccordionValue =\n props.defaultValue !== undefined ? props.defaultValue : props.multiple ? [] : null\n\n const internal = ref<IrisAccordionValue>(initialInternal)\n\n watch(\n () => props.modelValue,\n (value) => {\n if (value === undefined) return\n internal.value = value\n },\n )\n\n const current = computed<IrisAccordionValue>(() =>\n isControlled.value ? (props.modelValue as IrisAccordionValue) : internal.value,\n )\n\n const isOpen = (value: string): boolean => {\n const c = current.value\n if (c === null || c === undefined) return false\n if (Array.isArray(c)) return c.includes(value)\n return c === value\n }\n\n const setValue = (next: IrisAccordionValue) => {\n if (!isControlled.value) internal.value = next\n emit('update:modelValue', next)\n }\n\n const toggle = (value: string) => {\n if (props.multiple) {\n const arr = Array.isArray(current.value) ? current.value : []\n const idx = arr.indexOf(value)\n const next = idx >= 0 ? arr.filter((v) => v !== value) : [...arr, value]\n setValue(next)\n return\n }\n if (current.value === value) {\n if (props.collapsible) setValue(null)\n } else {\n setValue(value)\n }\n }\n\n // ── Keyboard navigation (single-sourced in core controller) ──────────\n interface RegisteredItem {\n value: string\n el: Ref<HTMLButtonElement | null>\n }\n const items: RegisteredItem[] = []\n\n const nav = createKeyboardNav({\n count: items.length,\n loop: true,\n orientation: 'vertical',\n })\n\n const activeIndex = useStore(nav.store)\n\n const registerItem = (value: string, el: Ref<HTMLButtonElement | null>): (() => void) => {\n if (!items.find((it) => it.value === value)) {\n items.push({ value, el })\n nav.reset(items.length)\n }\n return () => {\n const idx = items.findIndex((it) => it.value === value)\n if (idx >= 0) {\n items.splice(idx, 1)\n nav.reset(items.length)\n }\n }\n }\n\n const focusItem = (value: string) => {\n const idx = items.findIndex((it) => it.value === value)\n if (idx >= 0) nav.focus(idx)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const action: KeyboardNavAction = nav.handleKeyDown({\n key: event.key,\n preventDefault: () => event.preventDefault(),\n })\n if (action.type === 'focus') {\n items[action.target]?.el.value?.focus()\n }\n }\n\n provide(AccordionContextKey, {\n isOpen,\n toggle,\n rootId: useId(),\n collapsible: computed(() => props.collapsible),\n multiple: computed(() => props.multiple),\n activeIndex,\n registerItem,\n focusItem,\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-accordion': '',\n 'data-iris-accordion-multiple': props.multiple ? 'true' : undefined,\n onKeydown: handleKeyDown,\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, inject, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { AccordionContextKey } from './context'\n\n/**\n * A single accordion section: a button-styled header + a collapsible body.\n *\n * Wires the WAI-ARIA accordion pattern: `aria-expanded` on the trigger,\n * `aria-controls` pointing at the region, and the region has `role=\"region\"`\n * + `aria-labelledby` referencing the trigger.\n */\nexport const IrisAccordionItem = defineComponent({\n name: 'IrisAccordionItem',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n /** Static title text. Overridden by the `title` slot when provided. */\n title: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(AccordionContextKey)\n if (!ctx) {\n throw new Error('IrisAccordionItem must be used inside <IrisAccordion>')\n }\n\n const open = computed(() => ctx.isOpen(props.value))\n const headerId = `${ctx.rootId}-h-${props.value}`\n const contentId = `${ctx.rootId}-c-${props.value}`\n\n // Register this item's trigger element for keyboard navigation\n const triggerRef = ref<HTMLButtonElement | null>(null)\n let unregister: (() => void) | undefined\n onMounted(() => {\n unregister = ctx.registerItem(props.value, triggerRef)\n })\n onBeforeUnmount(() => {\n unregister?.()\n })\n\n const onTrigger = () => {\n if (props.disabled) return\n ctx.toggle(props.value)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (props.disabled) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n ctx.toggle(props.value)\n }\n }\n\n const onFocus = () => {\n if (!props.disabled) ctx.focusItem(props.value)\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-accordion-item': '',\n 'data-state': open.value ? 'open' : 'closed',\n 'data-disabled': props.disabled ? 'true' : undefined,\n style: {\n borderBottom: '1px solid var(--iris-border)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'button',\n {\n type: 'button',\n id: headerId,\n 'data-iris-accordion-trigger': '',\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-controls': contentId,\n disabled: props.disabled || undefined,\n ref: (el: unknown) => {\n triggerRef.value = (el ?? null) as HTMLButtonElement | null\n },\n onClick: onTrigger,\n onKeydown: onKeyDown,\n onFocus,\n style: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n padding: 'var(--iris-padding-md, 12px)',\n background: 'transparent',\n color: 'var(--iris-foreground)',\n border: 'none',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n font: 'inherit',\n textAlign: 'start',\n },\n },\n [\n h(\n 'span',\n { 'data-iris-accordion-title': '', style: { flex: '1', minWidth: '0' } },\n slots.title?.() ?? props.title,\n ),\n h(\n 'span',\n {\n 'aria-hidden': 'true',\n 'data-iris-accordion-chevron': '',\n style: {\n transition: 'transform 160ms ease',\n transform: open.value ? 'rotate(180deg)' : 'rotate(0deg)',\n color: 'var(--iris-muted)',\n },\n },\n '⌄',\n ),\n ],\n ),\n open.value\n ? h(\n 'div',\n {\n role: 'region',\n id: contentId,\n 'aria-labelledby': headerId,\n 'data-iris-accordion-content': '',\n style: { padding: '0 var(--iris-padding-md, 12px) var(--iris-padding-md, 12px)' },\n },\n slots.default?.(),\n )\n : null,\n ],\n )\n },\n})\n","import type { ComputedRef, InjectionKey } from 'vue'\n\nexport type IrisStepperOrientation = 'horizontal' | 'vertical'\nexport type IrisStepStatus = 'pending' | 'active' | 'completed' | 'error'\n\nexport interface StepperContext {\n /** Active step index (0-based). */\n current: ComputedRef<number>\n orientation: ComputedRef<IrisStepperOrientation>\n linear: ComputedRef<boolean>\n /** Register a step and get back its assigned index. */\n registerStep: () => number\n unregisterStep: (index: number) => void\n /** Total number of registered steps. */\n total: ComputedRef<number>\n /** Move to the given step (no-op if blocked by linear / out of range). */\n goTo: (index: number) => void\n /** Auto-status given a step's index (caller may override with prop). */\n computeStatus: (index: number) => IrisStepStatus\n}\n\nexport const StepperContextKey: InjectionKey<StepperContext> = Symbol('IrisStepper')\n","import { computed, defineComponent, h, provide, ref, watch, type PropType } from 'vue'\nimport { StepperContextKey, type IrisStepperOrientation } from './context'\n\n/**\n * Multi-step flow container. Children should be `IrisStepperStep`s; each\n * registers itself with the stepper's context and self-renders its\n * indicator + title.\n *\n * Modes:\n * - `linear=true` (default) — clicking a future step is blocked. Use\n * this for wizards where order matters (signup, upload, checkout).\n * - `linear=false` — any step is clickable. Use for navigation-style\n * steppers (settings sections, page anchors).\n */\nexport const IrisStepper = defineComponent({\n name: 'IrisStepper',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: 0 },\n orientation: { type: String as PropType<IrisStepperOrientation>, default: 'horizontal' },\n linear: { type: Boolean, default: true },\n },\n emits: {\n 'update:modelValue': (_value: number) => true,\n change: (_value: number) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const stepCount = ref(0)\n // Map from step index → \"alive\" — we recycle indexes when steps unmount,\n // but in practice the rendered tree is static enough that the simple\n // monotonic counter works.\n\n const current = computed(() => Math.max(0, Math.min(stepCount.value - 1, props.modelValue)))\n const total = computed(() => stepCount.value)\n\n const computeStatus = (index: number) => {\n if (index < current.value) return 'completed' as const\n if (index === current.value) return 'active' as const\n return 'pending' as const\n }\n\n const registerStep = (): number => {\n const idx = stepCount.value\n stepCount.value += 1\n return idx\n }\n\n const unregisterStep = () => {\n // No-op — indices are stable; we just won't render the removed step.\n // If you need to support truly dynamic step lists, revisit this.\n }\n\n const goTo = (index: number) => {\n if (index < 0 || index >= total.value) return\n if (props.linear && index > current.value) return\n if (index === current.value) return\n emit('update:modelValue', index)\n emit('change', index)\n }\n\n // Clamp the controlled value when steps unmount (e.g. dynamic flows).\n watch(stepCount, (count) => {\n if (props.modelValue > count - 1 && count > 0) {\n emit('update:modelValue', count - 1)\n }\n })\n\n provide(StepperContextKey, {\n current,\n orientation: computed(() => props.orientation),\n linear: computed(() => props.linear),\n registerStep,\n unregisterStep,\n total,\n goTo,\n computeStatus,\n })\n\n return () =>\n h(\n 'ol',\n {\n ...attrs,\n 'data-iris-stepper': '',\n 'data-iris-stepper-orientation': props.orientation,\n role: 'list',\n style: {\n display: 'flex',\n flexDirection: props.orientation === 'horizontal' ? 'row' : 'column',\n gap: '0',\n margin: '0',\n padding: '0',\n listStyle: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, inject, onBeforeMount, ref, type PropType } from 'vue'\nimport { StepperContextKey, type IrisStepStatus } from './context'\n\nconst STATUS_COLOR: Record<IrisStepStatus, string> = {\n pending: 'var(--iris-muted)',\n active: 'var(--iris-primary)',\n completed: 'var(--iris-success)',\n error: 'var(--iris-danger)',\n}\n\n/**\n * A single step in an {@link IrisStepper}. Auto-numbers based on its\n * position in the document order (registers on mount). Override `status`\n * to force a specific visual (most common case: `error` for a step the\n * user just failed validation on).\n *\n * Click forwards through `IrisStepper`'s `goTo` (which gates by `linear`).\n */\nexport const IrisStepperStep = defineComponent({\n name: 'IrisStepperStep',\n inheritAttrs: false,\n props: {\n title: { type: String, default: '' },\n description: { type: String, default: '' },\n /** Force a status; otherwise computed from position vs. current. */\n status: { type: String as PropType<IrisStepStatus>, default: undefined },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(StepperContextKey)\n if (!ctx) throw new Error('IrisStepperStep must be used inside <IrisStepper>')\n\n const index = ref<number>(-1)\n onBeforeMount(() => {\n index.value = ctx.registerStep()\n })\n\n const status = computed<IrisStepStatus>(() => props.status ?? ctx.computeStatus(index.value))\n\n const onClick = () => {\n if (props.disabled) return\n ctx.goTo(index.value)\n }\n\n return () => {\n const isHorizontal = ctx.orientation.value === 'horizontal'\n const s = status.value\n const color = STATUS_COLOR[s]\n const isLast = index.value === ctx.total.value - 1\n\n const indicator = h(\n 'span',\n {\n 'data-iris-stepper-indicator': '',\n 'data-iris-stepper-status': s,\n 'aria-hidden': 'true',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n minWidth: '28px',\n borderRadius: '50%',\n background: s === 'completed' ? color : 'var(--iris-background)',\n color: s === 'completed' ? 'var(--iris-primary-foreground, #fff)' : color,\n border: `2px solid ${color}`,\n fontSize: '13px',\n fontWeight: '600',\n lineHeight: '1',\n transition: 'background-color 120ms ease, color 120ms ease, border-color 120ms ease',\n },\n },\n s === 'completed' ? '✓' : s === 'error' ? '!' : String(index.value + 1),\n )\n\n const titleNode =\n props.title || slots.title\n ? h(\n 'div',\n {\n 'data-iris-stepper-title': '',\n style: {\n fontSize: '13px',\n fontWeight: s === 'active' ? '600' : '500',\n color: s === 'pending' ? 'var(--iris-muted)' : 'var(--iris-foreground)',\n },\n },\n slots.title?.() ?? props.title,\n )\n : null\n\n const descNode =\n props.description || slots.description\n ? h(\n 'div',\n {\n 'data-iris-stepper-description': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)' },\n },\n slots.description?.() ?? props.description,\n )\n : null\n\n const connector = !isLast\n ? h('span', {\n 'data-iris-stepper-connector': '',\n 'aria-hidden': 'true',\n style: isHorizontal\n ? {\n flex: '1',\n height: '1px',\n background:\n index.value < ctx.current.value ? STATUS_COLOR.completed : 'var(--iris-border)',\n margin: '0 8px',\n alignSelf: 'center',\n }\n : {\n width: '1px',\n minHeight: '24px',\n background:\n index.value < ctx.current.value ? STATUS_COLOR.completed : 'var(--iris-border)',\n marginInlineStart: '13px',\n marginTop: '4px',\n marginBottom: '4px',\n },\n })\n : null\n\n const clickable = !props.disabled && (!ctx.linear.value || index.value <= ctx.current.value)\n\n return h(\n 'li',\n {\n ...attrs,\n 'data-iris-stepper-step': '',\n 'data-iris-stepper-step-status': s,\n 'data-iris-stepper-step-disabled': props.disabled ? 'true' : undefined,\n 'aria-current': s === 'active' ? 'step' : undefined,\n style: isHorizontal\n ? {\n display: 'flex',\n alignItems: 'flex-start',\n flex: isLast ? '0 0 auto' : '1 1 0',\n gap: '8px',\n minWidth: '0',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n }\n : {\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n isHorizontal\n ? [\n h(\n 'button',\n {\n type: 'button',\n disabled: !clickable || undefined,\n 'data-iris-stepper-step-trigger': '',\n onClick,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n background: 'transparent',\n border: 'none',\n padding: '0',\n cursor: clickable ? 'pointer' : 'default',\n color: 'inherit',\n font: 'inherit',\n textAlign: 'start',\n },\n },\n [indicator, h('div', null, [titleNode, descNode])],\n ),\n connector,\n ]\n : [\n h(\n 'button',\n {\n type: 'button',\n disabled: !clickable || undefined,\n 'data-iris-stepper-step-trigger': '',\n onClick,\n style: {\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: '8px',\n background: 'transparent',\n border: 'none',\n padding: '0',\n cursor: clickable ? 'pointer' : 'default',\n color: 'inherit',\n font: 'inherit',\n textAlign: 'start',\n },\n },\n [indicator, h('div', null, [titleNode, descNode])],\n ),\n connector,\n ],\n )\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nexport type IrisToggleGroupType = 'single' | 'multiple'\nexport type IrisToggleGroupOrientation = 'horizontal' | 'vertical'\nexport type IrisToggleGroupVariant = 'solid' | 'outline'\n\nexport interface ToggleGroupContext {\n type: ComputedRef<IrisToggleGroupType>\n orientation: ComputedRef<IrisToggleGroupOrientation>\n size: ComputedRef<'sm' | 'md' | 'lg'>\n variant: ComputedRef<IrisToggleGroupVariant>\n disabled: ComputedRef<boolean>\n isActive: (value: string) => boolean\n toggle: (value: string) => void\n /** Sequential focus order of registered items, used by arrow-key nav. */\n registerItem: (value: string, el: Ref<HTMLElement | null>) => void\n unregisterItem: (value: string) => void\n moveFocus: (from: string, delta: 1 | -1 | 'home' | 'end') => void\n}\n\nexport const ToggleGroupContextKey: InjectionKey<ToggleGroupContext> = Symbol('IrisToggleGroup')\n","import { computed, defineComponent, h, inject, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { ToggleGroupContextKey } from './context'\n\nconst SIZE_PADDING: Record<'sm' | 'md' | 'lg', string> = {\n sm: '4px 10px',\n md: '6px 14px',\n lg: '8px 18px',\n}\nconst SIZE_FONT: Record<'sm' | 'md' | 'lg', string> = {\n sm: '12px',\n md: '13px',\n lg: '14px',\n}\n\n/**\n * One toggle in an {@link IrisToggleGroup}. Self-registers with the parent\n * and renders a `<button>` with the right `role` / `aria-checked` /\n * `aria-pressed` depending on the group's `type`.\n */\nexport const IrisToggleGroupItem = defineComponent({\n name: 'IrisToggleGroupItem',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(ToggleGroupContextKey)\n if (!ctx) throw new Error('IrisToggleGroupItem must be used inside <IrisToggleGroup>')\n\n const elRef = ref<HTMLElement | null>(null)\n\n onMounted(() => ctx.registerItem(props.value, elRef))\n onBeforeUnmount(() => ctx.unregisterItem(props.value))\n\n const isActive = computed(() => ctx.isActive(props.value))\n const isDisabled = computed(() => props.disabled || ctx.disabled.value)\n const isSingle = computed(() => ctx.type.value === 'single')\n\n const onClick = () => {\n if (isDisabled.value) return\n ctx.toggle(props.value)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (isDisabled.value) return\n switch (event.key) {\n case ' ':\n case 'Enter':\n event.preventDefault()\n ctx.toggle(props.value)\n break\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault()\n ctx.moveFocus(props.value, 1)\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault()\n ctx.moveFocus(props.value, -1)\n break\n case 'Home':\n event.preventDefault()\n ctx.moveFocus(props.value, 'home')\n break\n case 'End':\n event.preventDefault()\n ctx.moveFocus(props.value, 'end')\n break\n }\n }\n\n return () => {\n const active = isActive.value\n const variant = ctx.variant.value\n const size = ctx.size.value\n return h(\n 'button',\n {\n ...attrs,\n ref: (el: unknown) => {\n elRef.value = (el ?? null) as HTMLElement | null\n },\n type: 'button',\n role: isSingle.value ? 'radio' : undefined,\n 'aria-checked': isSingle.value ? (active ? 'true' : 'false') : undefined,\n 'aria-pressed': isSingle.value ? undefined : active ? 'true' : 'false',\n 'aria-disabled': isDisabled.value ? 'true' : undefined,\n disabled: isDisabled.value || undefined,\n tabindex: active ? 0 : -1,\n 'data-iris-toggle-group-item': '',\n 'data-state': active ? 'on' : 'off',\n onClick,\n onKeydown: onKeyDown,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n padding: SIZE_PADDING[size],\n fontSize: SIZE_FONT[size],\n fontFamily: 'inherit',\n fontWeight: '500',\n lineHeight: '1',\n background: active\n ? variant === 'solid'\n ? 'var(--iris-primary)'\n : 'var(--iris-primary)'\n : 'transparent',\n color: active ? 'var(--iris-primary-foreground, #fff)' : 'var(--iris-foreground)',\n border: 'none',\n cursor: isDisabled.value ? 'not-allowed' : 'pointer',\n opacity: isDisabled.value ? '0.5' : '1',\n transition: 'background-color 120ms ease, color 120ms ease',\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n provide,\n shallowRef,\n watch,\n type PropType,\n type Ref,\n} from 'vue'\nimport { createSelectionModel } from '@iris-ui-kit/core'\nimport {\n ToggleGroupContextKey,\n type IrisToggleGroupType,\n type IrisToggleGroupOrientation,\n type IrisToggleGroupVariant,\n} from './context'\n\n/**\n * Segmented control. Two modes:\n *\n * - `type=\"single\"` — radio-like; `modelValue` is `string | null`. Root\n * gets `role=\"radiogroup\"`, items get `role=\"radio\"` + `aria-checked`.\n * - `type=\"multiple\"` — toggle-like; `modelValue` is `string[]`. Root\n * gets `role=\"group\"`, items get `aria-pressed`.\n *\n * Keyboard: arrow keys move focus among items (roving tabindex); Space /\n * Enter activates.\n */\nexport const IrisToggleGroup = defineComponent({\n name: 'IrisToggleGroup',\n inheritAttrs: false,\n props: {\n type: { type: String as PropType<IrisToggleGroupType>, default: 'single' },\n modelValue: {\n type: null as unknown as PropType<string | string[] | null>,\n default: undefined,\n },\n orientation: { type: String as PropType<IrisToggleGroupOrientation>, default: 'horizontal' },\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\n variant: { type: String as PropType<IrisToggleGroupVariant>, default: 'outline' },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: string | string[] | null) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const items: { value: string; el: Ref<HTMLElement | null> }[] = []\n\n // Selection logic (single/multiple toggle, dedup) lives in the core model;\n // this component only maps its union value shape (string | string[] | null)\n // to/from the model's flat key array. Mode is fixed at creation (mirrors the\n // React `IrisToggleGroup` reference).\n const isMultiple = props.type === 'multiple'\n const toKeys = (v: string | string[] | null | undefined): string[] =>\n v == null ? [] : Array.isArray(v) ? v : [v]\n const fromKeys = (keys: string[]): string | string[] | null =>\n isMultiple ? keys : (keys[0] ?? null)\n\n const isControlled = computed(() => props.modelValue !== undefined)\n const model = createSelectionModel<string>({\n mode: isMultiple ? 'multiple' : 'single',\n defaultSelected: toKeys(props.modelValue),\n onChange: (keys) => emit('update:modelValue', fromKeys(keys)),\n })\n const selected = shallowRef<string[]>(model.get())\n onBeforeUnmount(\n model.store.subscribe((keys) => {\n selected.value = keys\n }),\n )\n\n // Controlled (v-model): mirror the prop into the model without re-emitting.\n watch(\n () => props.modelValue,\n (v) => model.sync(toKeys(v)),\n )\n\n // Controlled groups RENDER from the prop (true controlled semantics): a press\n // emits update:modelValue but the active items only change when the parent\n // writes `modelValue` back; uncontrolled renders from the model store.\n const displaySelected = computed<string[]>(() =>\n isControlled.value ? toKeys(props.modelValue) : selected.value,\n )\n\n const isActive = (value: string): boolean => displaySelected.value.includes(value)\n\n const toggle = (value: string) => {\n if (props.disabled) return\n // Re-base on the prop so the emitted next value is computed against what the\n // parent holds (not a prior, possibly-rejected, optimistic value).\n if (isControlled.value) model.sync(toKeys(props.modelValue))\n model.toggle(value)\n }\n\n const registerItem = (value: string, el: Ref<HTMLElement | null>) => {\n if (!items.find((it) => it.value === value)) items.push({ value, el })\n }\n\n const unregisterItem = (value: string) => {\n const idx = items.findIndex((it) => it.value === value)\n if (idx >= 0) items.splice(idx, 1)\n }\n\n const moveFocus = (from: string, delta: 1 | -1 | 'home' | 'end') => {\n if (items.length === 0) return\n const idx = items.findIndex((it) => it.value === from)\n let next: number\n if (delta === 'home') next = 0\n else if (delta === 'end') next = items.length - 1\n else next = (idx + delta + items.length) % items.length\n items[next]?.el.value?.focus()\n }\n\n provide(ToggleGroupContextKey, {\n type: computed(() => props.type),\n orientation: computed(() => props.orientation),\n size: computed(() => props.size),\n variant: computed(() => props.variant),\n disabled: computed(() => props.disabled),\n isActive,\n toggle,\n registerItem,\n unregisterItem,\n moveFocus,\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: props.type === 'single' ? 'radiogroup' : 'group',\n 'aria-orientation': props.orientation,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-toggle-group': '',\n 'data-iris-toggle-group-type': props.type,\n 'data-iris-toggle-group-orientation': props.orientation,\n 'data-iris-toggle-group-size': props.size,\n style: {\n display: 'inline-flex',\n flexDirection: props.orientation === 'horizontal' ? 'row' : 'column',\n borderRadius: 'var(--iris-radius-md, 6px)',\n overflow: 'hidden',\n background: props.variant === 'outline' ? 'transparent' : 'var(--iris-surface)',\n border:\n props.variant === 'outline'\n ? '1px solid var(--iris-border)'\n : '1px solid transparent',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/** Re-export the item from a separate file. */\nexport { IrisToggleGroupItem } from './ToggleGroupItem'\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisKbdSize = 'sm' | 'md'\n\nconst SIZE_MAP: Record<IrisKbdSize, { fontSize: string; padding: string }> = {\n sm: { fontSize: '10px', padding: '2px 5px' },\n md: { fontSize: '12px', padding: '3px 6px' },\n}\n\n/**\n * Render a keyboard shortcut hint, e.g. `Ctrl + K` or `⌘ + ⇧ + P`.\n *\n * - `keys` as a string renders a single key.\n * - `keys` as an array renders each key separated by the `separator`\n * (default `+`).\n * - Or use the default slot with hand-rolled markup.\n */\nexport const IrisKbd = defineComponent({\n name: 'IrisKbd',\n inheritAttrs: false,\n props: {\n keys: {\n type: [String, Array] as PropType<string | string[]>,\n default: () => [] as string[],\n },\n separator: { type: String, default: '+' },\n size: { type: String as PropType<IrisKbdSize>, default: 'md' },\n },\n setup(props, { slots, attrs }) {\n const keyList = computed<string[]>(() => {\n if (typeof props.keys === 'string') return props.keys ? [props.keys] : []\n return props.keys\n })\n\n const baseStyle: Record<string, string> = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '3px',\n fontFamily: 'var(--iris-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)',\n fontSize: SIZE_MAP[props.size].fontSize,\n verticalAlign: 'middle',\n }\n\n const keyStyle: Record<string, string> = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: SIZE_MAP[props.size].padding,\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: '4px',\n boxShadow: '0 1px 0 var(--iris-border)',\n lineHeight: '1',\n fontWeight: '500',\n }\n\n return () => {\n if (slots.default) {\n return h(\n 'kbd',\n {\n ...attrs,\n 'data-iris-kbd': '',\n style: { ...baseStyle, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n slots.default(),\n )\n }\n const list = keyList.value\n if (list.length === 0) return null\n const items: ReturnType<typeof h>[] = []\n list.forEach((k, i) => {\n items.push(\n h(\n 'kbd',\n {\n key: `k-${i}`,\n 'data-iris-kbd-key': '',\n style: keyStyle,\n },\n k,\n ),\n )\n if (i < list.length - 1) {\n items.push(\n h(\n 'span',\n {\n key: `s-${i}`,\n 'data-iris-kbd-separator': '',\n 'aria-hidden': 'true',\n style: { color: 'var(--iris-muted)' },\n },\n props.separator,\n ),\n )\n }\n })\n return h(\n 'span',\n {\n ...attrs,\n 'data-iris-kbd': '',\n 'data-iris-kbd-size': props.size,\n style: { ...baseStyle, ...((attrs.style as Record<string, string>) ?? {}) },\n },\n items,\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport { useDrag } from '../drag/useDrag'\n\nexport type IrisSplitterOrientation = 'horizontal' | 'vertical'\n\n/**\n * Two-pane splitter with a draggable divider. Children supplied via slots\n * `start` and `end`. The split position is a number in `[0, 1]` and can be\n * controlled via `v-model`.\n *\n * Orientation:\n * - `horizontal` (default) — divider is a vertical bar; panes are side-by-side.\n * - `vertical` — divider is a horizontal bar; panes are stacked.\n *\n * Clamping respects `minStart` / `minEnd` (in px) so panes don't collapse\n * below a usable size.\n */\nexport const IrisSplitter = defineComponent({\n name: 'IrisSplitter',\n inheritAttrs: false,\n props: {\n orientation: {\n type: String as PropType<IrisSplitterOrientation>,\n default: 'horizontal',\n },\n /** Split ratio in `[0, 1]`. */\n modelValue: { type: Number, default: 0.5 },\n /** Minimum size of the start pane in px. */\n minStart: { type: Number, default: 80 },\n /** Minimum size of the end pane in px. */\n minEnd: { type: Number, default: 80 },\n /** Disable dragging. */\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: number) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const containerRef = ref<HTMLElement | null>(null)\n const handleRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n\n const isHorizontal = computed(() => props.orientation === 'horizontal')\n\n let startRatio = 0\n let totalSize = 0\n\n useDrag({\n handle: handleRef,\n disabled: computed(() => props.disabled),\n onStart: () => {\n const container = containerRef.value\n if (!container) return false\n const rect = container.getBoundingClientRect()\n totalSize = isHorizontal.value ? rect.width : rect.height\n if (totalSize <= 0) return false\n startRatio = props.modelValue\n dragging.value = true\n return true\n },\n onDrag: ({ dx, dy }) => {\n if (totalSize <= 0) return\n const delta = isHorizontal.value ? dx : dy\n const nextRatio = startRatio + delta / totalSize\n const minStartRatio = props.minStart / totalSize\n const maxRatio = 1 - props.minEnd / totalSize\n const clamped = Math.max(minStartRatio, Math.min(maxRatio, nextRatio))\n emit('update:modelValue', clamped)\n },\n onEnd: () => {\n dragging.value = false\n },\n })\n\n const containerStyle = computed<Record<string, string>>(() => ({\n display: 'flex',\n flexDirection: isHorizontal.value ? 'row' : 'column',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n }))\n\n const startStyle = computed<Record<string, string>>(() => ({\n flex: `${props.modelValue} 1 0`,\n minWidth: '0',\n minHeight: '0',\n overflow: 'auto',\n }))\n\n const endStyle = computed<Record<string, string>>(() => ({\n flex: `${1 - props.modelValue} 1 0`,\n minWidth: '0',\n minHeight: '0',\n overflow: 'auto',\n }))\n\n const handleStyle = computed<Record<string, string>>(() => ({\n flex: '0 0 4px',\n background: dragging.value ? 'var(--iris-primary)' : 'var(--iris-border)',\n cursor: props.disabled ? 'not-allowed' : isHorizontal.value ? 'col-resize' : 'row-resize',\n transition: 'background-color 120ms ease',\n position: 'relative',\n touchAction: 'none',\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n containerRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-splitter': '',\n 'data-iris-splitter-orientation': props.orientation,\n 'data-state': dragging.value ? 'dragging' : 'idle',\n style: containerStyle.value,\n },\n [\n h(\n 'div',\n { 'data-iris-splitter-pane': 'start', style: startStyle.value },\n slots.start?.(),\n ),\n h('div', {\n ref: (el: unknown) => {\n handleRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-splitter-handle': '',\n role: 'separator',\n 'aria-orientation': props.orientation,\n 'aria-valuenow': Math.round(props.modelValue * 100),\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n tabindex: props.disabled ? -1 : 0,\n style: handleStyle.value,\n }),\n h('div', { 'data-iris-splitter-pane': 'end', style: endStyle.value }, slots.end?.()),\n ],\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType, type VNode } from 'vue'\nimport { useDrag } from '../drag/useDrag'\n\nexport type IrisResizerHandle =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n\nexport interface IrisResizerSize {\n width: number\n height: number\n}\n\nconst ALL_HANDLES: IrisResizerHandle[] = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n]\n\nconst HANDLE_CURSORS: Record<IrisResizerHandle, string> = {\n top: 'ns-resize',\n right: 'ew-resize',\n bottom: 'ns-resize',\n left: 'ew-resize',\n 'top-left': 'nwse-resize',\n 'top-right': 'nesw-resize',\n 'bottom-left': 'nesw-resize',\n 'bottom-right': 'nwse-resize',\n}\n\nfunction handlePosition(handle: IrisResizerHandle): Record<string, string> {\n const s: Record<string, string> = { position: 'absolute' }\n const t = handle.includes('top')\n const b = handle.includes('bottom')\n const l = handle.includes('left')\n const r = handle.includes('right')\n\n if (t) s.top = '-4px'\n if (b) s.bottom = '-4px'\n if (l) s.left = '-4px'\n if (r) s.right = '-4px'\n\n const isCorner = (t || b) && (l || r)\n if (isCorner) {\n s.width = '12px'\n s.height = '12px'\n } else if (t || b) {\n s.left = '0'\n s.right = '0'\n s.height = '8px'\n } else {\n s.top = '0'\n s.bottom = '0'\n s.width = '8px'\n }\n s.cursor = HANDLE_CURSORS[handle]\n return s\n}\n\n/**\n * 8-direction resizer wrapping a single child element. The child is rendered\n * in a relative-positioned wrapper; handles overlay each side and corner.\n * Drag updates `v-model:size` ({ width, height } in px) clamped by `minWidth`\n * / `minHeight` / `maxWidth` / `maxHeight`.\n *\n * Only requested handles are rendered — pass `handles=\"bottom-right\"` for a\n * common diagonal corner drag, or omit to enable all 8.\n */\nexport const IrisResizer = defineComponent({\n name: 'IrisResizer',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Object as PropType<IrisResizerSize>,\n required: true,\n },\n handles: {\n type: Array as PropType<IrisResizerHandle[]>,\n default: () => ALL_HANDLES,\n },\n minWidth: { type: Number, default: 40 },\n minHeight: { type: Number, default: 40 },\n maxWidth: { type: Number, default: Infinity },\n maxHeight: { type: Number, default: Infinity },\n disabled: { type: Boolean, default: false },\n /** Maintain `width / height` ratio when dragging corner handles. */\n keepAspect: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: IrisResizerSize) => true,\n resizeStart: (_value: IrisResizerSize) => true,\n resizeEnd: (_value: IrisResizerSize) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const wrapperStyle = computed<Record<string, string>>(() => ({\n position: 'relative',\n display: 'inline-block',\n width: `${props.modelValue.width}px`,\n height: `${props.modelValue.height}px`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n }))\n\n const renderHandle = (handle: IrisResizerHandle): VNode => {\n const handleRef = ref<HTMLElement | null>(null)\n let startSize: IrisResizerSize = { width: 0, height: 0 }\n let aspect = 1\n\n useDrag({\n handle: handleRef,\n disabled: computed(() => props.disabled),\n onStart: () => {\n startSize = { ...props.modelValue }\n aspect = startSize.width / Math.max(1, startSize.height)\n emit('resizeStart', startSize)\n },\n onDrag: ({ dx, dy }) => {\n const t = handle.includes('top')\n const b = handle.includes('bottom')\n const l = handle.includes('left')\n const r = handle.includes('right')\n\n let nextW = startSize.width\n let nextH = startSize.height\n if (r) nextW = startSize.width + dx\n if (l) nextW = startSize.width - dx\n if (b) nextH = startSize.height + dy\n if (t) nextH = startSize.height - dy\n\n if (props.keepAspect && (t || b) && (l || r)) {\n // For corners, lock to aspect by driving height from width.\n nextH = nextW / aspect\n }\n\n nextW = Math.max(props.minWidth, Math.min(props.maxWidth, nextW))\n nextH = Math.max(props.minHeight, Math.min(props.maxHeight, nextH))\n\n emit('update:modelValue', { width: nextW, height: nextH })\n },\n onEnd: () => {\n emit('resizeEnd', { ...props.modelValue })\n },\n })\n\n return h('div', {\n ref: (el: unknown) => {\n handleRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-resizer-handle': handle,\n style: {\n ...handlePosition(handle),\n touchAction: 'none',\n background: 'transparent',\n zIndex: '1',\n },\n })\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-resizer': '',\n 'data-state': props.disabled ? 'disabled' : 'idle',\n style: wrapperStyle.value,\n },\n [slots.default?.(), ...props.handles.map(renderHandle)],\n )\n },\n})\n","import { computed, defineComponent, h, ref } from 'vue'\nimport { useDrag } from '../drag/useDrag'\n\nexport interface IrisDraggerPosition {\n x: number\n y: number\n}\n\n/**\n * Make a child element positionable by drag. The child renders inside a\n * relative-positioned wrapper; position is driven by `v-model` (px from the\n * wrapper's top-left). Drag uses pointer capture so the gesture survives the\n * pointer leaving the element.\n *\n * The drag handle can be the whole element (default) or restricted to a\n * specific child via the `#handle` slot — useful for \"title-bar\" dragging\n * of window-like surfaces.\n */\nexport const IrisDragger = defineComponent({\n name: 'IrisDragger',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Object as () => IrisDraggerPosition,\n default: () => ({ x: 0, y: 0 }),\n },\n disabled: { type: Boolean, default: false },\n /** Constrain the position to within these bounds (px from wrapper origin). */\n bounds: {\n type: Object as () => { minX?: number; maxX?: number; minY?: number; maxY?: number },\n default: () => ({}),\n },\n },\n emits: {\n 'update:modelValue': (_value: IrisDraggerPosition) => true,\n dragStart: (_value: IrisDraggerPosition) => true,\n dragEnd: (_value: IrisDraggerPosition) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const handleRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n\n let startPos: IrisDraggerPosition = { x: 0, y: 0 }\n\n const clamp = (pos: IrisDraggerPosition): IrisDraggerPosition => ({\n x: Math.max(props.bounds.minX ?? -Infinity, Math.min(props.bounds.maxX ?? Infinity, pos.x)),\n y: Math.max(props.bounds.minY ?? -Infinity, Math.min(props.bounds.maxY ?? Infinity, pos.y)),\n })\n\n // The handle is either the named slot or the root element.\n const effectiveHandle = computed(() => handleRef.value ?? rootRef.value)\n\n useDrag({\n handle: effectiveHandle,\n disabled: computed(() => props.disabled),\n onStart: () => {\n startPos = { ...props.modelValue }\n dragging.value = true\n emit('dragStart', startPos)\n },\n onDrag: ({ dx, dy }) => {\n emit('update:modelValue', clamp({ x: startPos.x + dx, y: startPos.y + dy }))\n },\n onEnd: () => {\n dragging.value = false\n emit('dragEnd', { ...props.modelValue })\n },\n })\n\n return () => {\n const hasHandleSlot = !!slots.handle\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n rootRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-dragger': '',\n 'data-state': dragging.value ? 'dragging' : 'idle',\n style: {\n position: 'absolute',\n left: '0',\n top: '0',\n transform: `translate3d(${props.modelValue.x}px, ${props.modelValue.y}px, 0)`,\n cursor: hasHandleSlot ? 'default' : props.disabled ? 'not-allowed' : 'grab',\n touchAction: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n hasHandleSlot &&\n h(\n 'div',\n {\n ref: (el: unknown) => {\n handleRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-dragger-handle': '',\n style: {\n cursor: props.disabled ? 'not-allowed' : 'grab',\n touchAction: 'none',\n },\n },\n slots.handle?.(),\n ),\n slots.default?.(),\n ],\n )\n }\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport { createVirtualizer, type Virtualizer, type VirtualizerState } from '@iris-ui-kit/core'\n\nexport type IrisVirtualScrollAlign = 'start' | 'center' | 'end'\n\nexport interface IrisVirtualScrollExposed {\n /** Programmatically scroll so the item at `index` is visible. */\n scrollToIndex: (index: number, align?: IrisVirtualScrollAlign) => void\n /** Imperatively scroll to a pixel offset (clamped to the scrollable range). */\n scrollToOffset: (offset: number) => void\n /** Force-recompute the visible range (e.g. after resizing externally). */\n refresh: () => void\n}\n\n/**\n * Virtual scroller. Renders only the visible window of items plus a\n * configurable buffer above and below, so lists of 10k+ rows stay smooth.\n *\n * The container is `overflow: auto` with explicit height; an inner spacer\n * is sized to the full virtual height, and each visible item is absolutely\n * positioned at its natural Y offset. Scroll events are throttled with\n * `requestAnimationFrame` to avoid layout thrash. `itemHeight` may be a fixed\n * number, a `(index) => px` function for variable-height rows, or `'auto'` to\n * measure rendered rows via `ResizeObserver`.\n *\n * Internally driven by the stateful core {@link createVirtualizer}: one\n * controller owns the measured-size cache (keyed by item, so a row's real\n * height survives scroll/reorder), the offset tree (O(log n) total/offset/\n * lower-bound — no O(n) rebuild per scroll), and `scrollToIndex`/`scrollToOffset`.\n * At a uniform `itemHeight` the visible window is identical to the bare math, so\n * the public props/output are unchanged.\n *\n * **Limitations (intentional in this iteration)**:\n * - Vertical only (no horizontal virtualization).\n * - Items must be addressable by stable index (`items[index]`).\n *\n * @example\n * <IrisVirtualScroll :items=\"rows\" :item-height=\"40\" :height=\"400\">\n * <template #item=\"{ item, index }\">\n * Row #{{ index }} — {{ item.name }}\n * </template>\n * </IrisVirtualScroll>\n */\nexport const IrisVirtualScroll = defineComponent({\n name: 'IrisVirtualScroll',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<readonly unknown[]>, required: true },\n /**\n * Per-item height in px (fixed), a `(index) => px` function for known\n * variable heights, or `'auto'` to measure rendered rows via\n * `ResizeObserver` and cache them (wrapped text, expandable rows).\n */\n itemHeight: {\n type: [Number, Function, String] as PropType<number | ((index: number) => number) | 'auto'>,\n required: true,\n },\n /** Initial row-height estimate before measurement, when `item-height=\"auto\"`. */\n estimatedItemHeight: { type: Number, default: 40 },\n /** Viewport height. Number → px; string → CSS length passed through. */\n height: { type: [Number, String], default: 400 },\n /** Number of extra rows to render above and below the viewport. */\n buffer: { type: Number, default: 4 },\n /** Optional `keyOf` lookup so DOM reuse keys are stable across reorders. */\n keyOf: {\n type: Function as PropType<(item: unknown, index: number) => string | number>,\n default: undefined,\n },\n },\n emits: {\n scroll: (_scrollTop: number) => true,\n rangeChange: (_range: { start: number; end: number }) => true,\n },\n setup(props, { slots, attrs, emit, expose }) {\n const viewportRef = ref<HTMLElement | null>(null)\n const scrollTop = ref(0)\n const viewportHeight = ref(typeof props.height === 'number' ? props.height : 0)\n let rafId: number | null = null\n\n const auto = computed(() => props.itemHeight === 'auto')\n const userFn = computed<((index: number) => number) | null>(() =>\n typeof props.itemHeight === 'function' ? props.itemHeight : null,\n )\n const fixedHeight = computed(() =>\n typeof props.itemHeight === 'number' ? props.itemHeight : 0,\n )\n // Variable when sizing comes from a user fn or `auto` measurement; for a\n // plain number the window uses the closed-form fixed formula below.\n const variable = computed(() => userFn.value !== null || auto.value)\n\n // Auto mode: measured row heights cached by index; bumping `measureVersion`\n // recomputes offsets after a measurement changes (semantics preserved; the\n // virtualizer's keyed cache is fed from this).\n const measuredHeights = new Map<number, number>()\n const measureVersion = ref(0)\n\n // estimateSize source of truth, read by the virtualizer per index. Reads\n // live `props`, so the controller never needs recreating on a closure swap.\n const estimateSize = (index: number): number => {\n const fn = userFn.value\n if (fn) return fn(index)\n if (auto.value) return measuredHeights.get(index) ?? props.estimatedItemHeight\n return fixedHeight.value\n }\n\n // One stateful controller, rebuilt only when count or sizing MODE changes.\n // Sizing CHANGES within a mode (a new user fn / a measurement) are pushed via\n // remeasure below — recreating on every change would drop scroll state.\n // `estimateSize` / `getItemKey` read live `props`, so a fresh closure /\n // estimate / keyOf never busts this.\n const buildVirtualizer = (): Virtualizer =>\n createVirtualizer({\n count: props.items.length,\n estimateSize: (index: number) => estimateSize(index),\n getItemKey: (index: number) => {\n const fn = props.keyOf\n const it = props.items[index]\n return fn && it !== undefined ? fn(it, index) : index\n },\n buffer: props.buffer,\n viewportSize: typeof props.height === 'number' ? props.height : 0,\n })\n\n const virtualizer = shallowRef<Virtualizer>(buildVirtualizer())\n const vstate = shallowRef<VirtualizerState>(virtualizer.value.getState())\n let unsubscribe: (() => void) | null = virtualizer.value.subscribe((s) => {\n vstate.value = s\n })\n\n // Wire/rewire the controller: subscribe its store into `vstate` and push the\n // current live scroll + viewport so the new instance reflects reality.\n const wire = (v: Virtualizer): void => {\n unsubscribe?.()\n virtualizer.value = v\n vstate.value = v.getState()\n unsubscribe = v.subscribe((s) => {\n vstate.value = s\n })\n v.setViewportSize(viewportHeight.value)\n v.setScroll(scrollTop.value)\n }\n\n // Rebuild only on count / buffer / sizing-mode change (mirrors the React memo\n // key `[items.length, buffer, variable]`). Sizing changes within a mode go\n // through remeasure below, preserving scroll + cache.\n watch([() => props.items.length, () => props.buffer, variable], () => wire(buildVirtualizer()))\n\n // Push sizing changes (new user fn, a fresh measurement, or estimate change)\n // into the controller without recreating it: drop the cache + rebuild the\n // tree from the current `estimateSize`. Cheap; runs only when sizing changes.\n watch(\n [userFn, measureVersion, () => props.estimatedItemHeight],\n () => {\n if (variable.value) virtualizer.value.remeasure()\n },\n { flush: 'post' },\n )\n\n // Drive the controller's scroll + viewport from local state so its window,\n // total size, and offsets reflect the live scroll position. A no-op when\n // unchanged.\n watch([scrollTop, viewportHeight], ([st, vh]) => {\n virtualizer.value.setViewportSize(vh)\n virtualizer.value.setScroll(st)\n })\n\n const totalHeight = computed(() => vstate.value.totalSize)\n // Offset/size of a single index, sourced from the controller's windowed\n // items (the render loop only ever asks for in-window indices). For the\n // common fixed case this is the same `i * height` arithmetic.\n const itemInState = (i: number) => vstate.value.items.find((it) => it.index === i)\n const offsetOf = (i: number): number =>\n variable.value ? (itemInState(i)?.start ?? i * estimateSize(i)) : i * fixedHeight.value\n const heightOf = (i: number): number =>\n variable.value ? (itemInState(i)?.size ?? estimateSize(i)) : fixedHeight.value\n\n // Render window. Fixed: closed-form (preserves the exact uniform-height\n // window). Variable/auto: the controller's measured window (offset-tree walk).\n const range = computed(() => {\n if (variable.value) {\n return { start: vstate.value.startIndex, end: vstate.value.endIndex + 1 }\n }\n const h0 = fixedHeight.value\n const startRaw = Math.floor(scrollTop.value / Math.max(1, h0))\n const visibleCount = h0 <= 0 ? 0 : Math.ceil(viewportHeight.value / h0)\n const start = Math.max(0, startRaw - props.buffer)\n const end = Math.min(props.items.length, startRaw + visibleCount + props.buffer)\n return { start, end }\n })\n\n watch(range, (next) => emit('rangeChange', next), { flush: 'post' })\n\n const onScroll = () => {\n if (rafId !== null) return\n rafId = requestAnimationFrame(() => {\n rafId = null\n const el = viewportRef.value\n if (!el) return\n const next = el.scrollTop\n if (next === scrollTop.value) return\n scrollTop.value = next\n emit('scroll', next)\n })\n }\n\n const measureViewport = () => {\n const el = viewportRef.value\n if (!el) return\n viewportHeight.value = el.clientHeight\n }\n\n let observer: ResizeObserver | null = null\n\n // Auto-measurement: one ResizeObserver watches rendered rows; measured\n // heights are cached by index and feed the offset table.\n let rowObserver: ResizeObserver | null = null\n const indexByEl = new WeakMap<Element, number>()\n const elByIndex = new Map<number, HTMLElement>()\n const rowRef = (index: number) => (el: unknown) => {\n const node = (el ?? null) as HTMLElement | null\n const prev = elByIndex.get(index)\n if (prev && prev !== node) {\n rowObserver?.unobserve(prev)\n indexByEl.delete(prev)\n elByIndex.delete(index)\n }\n if (node) {\n elByIndex.set(index, node)\n indexByEl.set(node, index)\n rowObserver?.observe(node)\n }\n }\n\n onMounted(() => {\n measureViewport()\n if (typeof ResizeObserver !== 'undefined' && viewportRef.value) {\n observer = new ResizeObserver(measureViewport)\n observer.observe(viewportRef.value)\n }\n if (auto.value && typeof ResizeObserver !== 'undefined') {\n rowObserver = new ResizeObserver((entries) => {\n let changed = false\n for (const entry of entries) {\n const idx = indexByEl.get(entry.target)\n if (idx === undefined) continue\n const hgt = (entry.target as HTMLElement).offsetHeight\n if (hgt > 0 && measuredHeights.get(idx) !== hgt) {\n measuredHeights.set(idx, hgt)\n changed = true\n }\n }\n if (changed) measureVersion.value += 1\n })\n // Row refs run during mount, before this hook — observe the first window.\n for (const el of elByIndex.values()) rowObserver.observe(el)\n }\n })\n\n onBeforeUnmount(() => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n observer?.disconnect()\n observer = null\n rowObserver?.disconnect()\n rowObserver = null\n unsubscribe?.()\n unsubscribe = null\n })\n\n // Re-clamp scroll if items shrink so the current scrollTop falls past the new totalHeight.\n watch(\n () => props.items.length,\n () => {\n const el = viewportRef.value\n if (!el) return\n const max = Math.max(0, totalHeight.value - viewportHeight.value)\n if (el.scrollTop > max) el.scrollTop = max\n },\n { flush: 'post' },\n )\n\n const scrollToIndex = (index: number, align: IrisVirtualScrollAlign = 'start') => {\n const el = viewportRef.value\n if (!el) return\n // The controller computes (and clamps to the scrollable range) the target\n // pixel offset; the host scroll element applies it.\n el.scrollTop = virtualizer.value.scrollToIndex(index, align)\n }\n\n const scrollToOffset = (offset: number) => {\n const el = viewportRef.value\n if (!el) return\n el.scrollTop = virtualizer.value.scrollToOffset(offset)\n }\n\n const refresh = () => {\n measureViewport()\n onScroll()\n }\n\n expose({ scrollToIndex, scrollToOffset, refresh } satisfies IrisVirtualScrollExposed)\n\n const containerStyle = computed<Record<string, string>>(() => ({\n position: 'relative',\n overflow: 'auto',\n height: typeof props.height === 'number' ? `${props.height}px` : String(props.height),\n width: '100%',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n }))\n\n const spacerStyle = computed<Record<string, string>>(() => ({\n position: 'relative',\n height: `${totalHeight.value}px`,\n width: '100%',\n }))\n\n return () => {\n const { start, end } = range.value\n const visible: VNode[] = []\n for (let i = start; i < end; i++) {\n const item = props.items[i]\n if (item === undefined) continue\n const slotContent = slots.item?.({ item, index: i })\n const key = props.keyOf ? props.keyOf(item, i) : i\n visible.push(\n h(\n 'div',\n {\n key,\n ref: auto.value ? rowRef(i) : undefined,\n 'data-iris-virtual-item': '',\n 'data-iris-virtual-index': i,\n style: {\n position: 'absolute',\n top: '0',\n left: '0',\n right: '0',\n // Auto mode: let content set the height so it can be measured.\n height: auto.value ? undefined : `${heightOf(i)}px`,\n transform: `translateY(${offsetOf(i)}px)`,\n },\n },\n slotContent,\n ),\n )\n }\n\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n viewportRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-virtual-scroll': '',\n onScroll,\n style: containerStyle.value,\n },\n [h('div', { 'data-iris-virtual-spacer': '', style: spacerStyle.value }, visible)],\n )\n }\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport {\n aggregate,\n buildHeaderMatrix,\n compareValues,\n computeVirtualRange,\n createCellRange,\n createExpansion,\n createSelectionModel,\n flattenLeafColumns,\n flattenTree,\n withSortedChildren,\n nextGridCell,\n type CellRangeState,\n type GridNavKey,\n type TreeRow,\n} from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\nimport { IrisCheckbox } from '../checkbox/Checkbox'\nimport { useDrag } from '../drag/useDrag'\nimport { IrisVirtualScroll } from '../virtual-scroll/VirtualScroll'\nimport type {\n IrisTableCellEditEvent,\n IrisTableColumn,\n IrisTableColumnWidths,\n IrisTableRenderDetail,\n IrisTableRowExpandable,\n IrisTableSortDirection,\n IrisTableSortState,\n IrisTableVirtualOptions,\n} from './types'\n\nfunction getCellValue<Row extends Record<string, unknown>>(\n row: Row,\n column: IrisTableColumn<Row>,\n): unknown {\n const key = (column.dataIndex ?? column.key) as keyof Row\n return row[key]\n}\n\nconst SELECTION_COL_WIDTH = 40\nconst EXPAND_COL_WIDTH = 40\nconst DEFAULT_COL_WIDTH = 140\nconst DEFAULT_MIN_WIDTH = 60\nconst RESIZE_STEP = 16\n\nfunction resolveInitialWidth(col: IrisTableColumn): number {\n if (typeof col.width === 'number') return col.width\n if (typeof col.width === 'string') {\n const m = col.width.match(/^(\\d+(?:\\.\\d+)?)px$/)\n if (m) return Number(m[1])\n }\n return DEFAULT_COL_WIDTH\n}\n\n/**\n * Data-driven table. Renders as a CSS-grid layout under the hood (no native\n * `<table>` element) so it can support virtual scrolling and column resize\n * uniformly. ARIA roles (`role=\"table\" / \"row\" / \"columnheader\" / \"cell\"`)\n * are wired explicitly for screen readers.\n *\n * **Features**:\n * - Column-driven rendering with optional `#cell.<key>` slots\n * - Sorting (controlled or uncontrolled, cycles `none → asc → desc → none`)\n * - Row selection (single / multi) with master checkbox + indeterminate\n * - **Column resize** (`resizable-columns`) — draggable handle on each\n * column boundary, `v-model:columnWidths` exposes the map\n * - **Virtual scrolling** (`:virtual-scroll=\"{ itemHeight, height }\"`) —\n * renders only the visible row window; viable for 100k+ rows\n *\n * @example\n * <IrisTable\n * :columns=\"cols\"\n * :data=\"rows\"\n * row-key=\"id\"\n * selectable=\"multi\"\n * resizable-columns\n * :virtual-scroll=\"{ itemHeight: 36, height: 480 }\"\n * />\n */\nexport const IrisTable = defineComponent({\n name: 'IrisTable',\n inheritAttrs: false,\n props: {\n columns: {\n type: Array as PropType<IrisTableColumn<Record<string, unknown>>[]>,\n required: true,\n },\n data: {\n type: Array as PropType<Array<Record<string, unknown>>>,\n required: true,\n },\n rowKey: { type: String, default: 'id' },\n selectable: {\n type: String as PropType<'none' | 'single' | 'multi'>,\n default: 'none',\n },\n selection: {\n type: Array as PropType<Array<string | number>>,\n default: undefined,\n },\n sort: {\n type: Object as PropType<IrisTableSortState | null>,\n default: undefined,\n },\n striped: { type: Boolean, default: false },\n bordered: { type: Boolean, default: true },\n /** Enable per-column resize handles. Combine with `v-model:columnWidths` for persistence. */\n resizableColumns: { type: Boolean, default: false },\n /** Controlled column widths in px. */\n columnWidths: {\n type: Object as PropType<IrisTableColumnWidths>,\n default: undefined,\n },\n /** Enable virtual scrolling for the body. */\n virtualScroll: {\n type: Object as PropType<IrisTableVirtualOptions>,\n default: undefined,\n },\n /** Show the loading state instead of rows. */\n loading: { type: Boolean, default: false },\n /** Show the error state instead of rows (takes precedence over loading). */\n error: { type: Boolean, default: false },\n /** Render only the horizontally-visible columns (+ pinned + overscan) for wide tables. */\n columnVirtualization: { type: Boolean, default: false },\n /**\n * Enable WAI-ARIA grid keyboard navigation: the table becomes `role=\"grid\"`\n * and Arrow / Home / End / Page Up·Down move a roving cell focus across the\n * data cells. Off by default; opt-in and additive (no effect on mouse / Tab\n * behavior). Pairs best without virtualization (the focused cell must be\n * rendered) and does not hijack keystrokes while a cell is being edited.\n */\n keyboardNavigation: { type: Boolean, default: false },\n /**\n * Enable rectangular cell-range selection (Excel-style). Click starts a\n * range; Shift+Click or Shift+Arrow extends it; Escape clears it.\n * Cells within the range get `data-iris-cell-selected=\"true\"`.\n */\n cellRange: { type: Boolean, default: false },\n /**\n * Render an expandable detail panel beneath a row. Providing this adds a\n * leading expand-toggle column; clicking it reveals a full-width detail row.\n * (Not applied in the virtual-scroll path.)\n */\n renderDetail: {\n type: Function as PropType<IrisTableRenderDetail<Record<string, unknown>>>,\n default: undefined,\n },\n /** Which rows can expand a detail panel. Defaults to all rows when `renderDetail` is set. */\n rowExpandable: {\n type: Function as PropType<IrisTableRowExpandable<Record<string, unknown>>>,\n default: undefined,\n },\n /** Initially-expanded row keys (uncontrolled). */\n defaultExpandedRowKeys: {\n type: Array as PropType<Array<string | number>>,\n default: undefined,\n },\n /**\n * Read a row's child rows to render the table as a TREE. Providing this\n * enables tree mode: `data` is treated as the root rows, each row's first\n * cell gains a depth indent + an expand/collapse toggle (when it has\n * children), and the expand state reuses `defaultExpandedRowKeys` /\n * `expandedRowsChange`. Column sort reorders siblings hierarchically (each\n * level sorted, structure kept), and tree rows virtualize like flat rows\n * when `virtualScroll` is set (unless `renderDetail` is also used, since\n * detail panels are variable-height).\n */\n getSubRows: {\n type: Function as PropType<\n (row: Record<string, unknown>) => Array<Record<string, unknown>> | undefined\n >,\n default: undefined,\n },\n },\n emits: {\n 'update:selection': (_value: Array<string | number>) => true,\n 'update:sort': (_value: IrisTableSortState | null) => true,\n 'update:columnWidths': (_value: IrisTableColumnWidths) => true,\n rowClick: (_row: Record<string, unknown>, _index: number) => true,\n cellEdit: (_payload: IrisTableCellEditEvent<Record<string, unknown>>) => true,\n expandedRowsChange: (_keys: Array<string | number>) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const { t } = useI18n()\n\n // -------- Multi-level (grouped) headers --------\n // A column carrying `children` is a header GROUP spanning its leaf\n // descendants; the leaves drive the body. When nothing is grouped,\n // `leafColumns` is the original `columns` (same reference) so every\n // body-affecting iteration stays byte-identical to the flat path.\n const grouped = computed(() => props.columns.some((c) => c.children && c.children.length > 0))\n const leafColumns = computed(() =>\n grouped.value ? flattenLeafColumns(props.columns) : props.columns,\n )\n const headerMatrix = computed(() => (grouped.value ? buildHeaderMatrix(props.columns) : null))\n\n // -------- Sort --------\n const internalSortValue = ref<IrisTableSortState | null>(null)\n const internalSort = computed<IrisTableSortState | null>({\n get: () => (props.sort === undefined ? internalSortValue.value : props.sort),\n set: (value) => {\n if (props.sort === undefined) internalSortValue.value = value\n emit('update:sort', value)\n },\n })\n\n // The active sort comparator (or null). Shared by the root-row sort AND the\n // tree-mode child sort so a sortable tree reorders siblings at every depth.\n const sortComparator = computed<\n ((a: Record<string, unknown>, b: Record<string, unknown>) => number) | null\n >(() => {\n const state = internalSort.value\n if (!state) return null\n const column = leafColumns.value.find((c) => c.key === state.key)\n if (!column) return null\n const dir = state.direction === 'asc' ? 1 : -1\n const sorter =\n column.sorter ??\n ((a: Record<string, unknown>, b: Record<string, unknown>) =>\n compareValues(getCellValue(a, column), getCellValue(b, column)))\n return (a, b) => sorter(a, b) * dir\n })\n\n const sortedRows = computed(() => {\n const compare = sortComparator.value\n if (!compare) return props.data ?? []\n return [...(props.data ?? [])].sort(compare)\n })\n\n // -------- Selection (single-sourced via core createSelectionModel) --------\n // The model owns the selected-key set plus the toggle / dedup / select-all\n // logic; the table keeps only its controlled-or-uncontrolled value shape\n // (`Array<string | number>`) and the row-id mapping. It runs in the default\n // `multiple` mode so `selectable` stays runtime-reactive — single-select is a\n // replace (`set`) and multi-select a `toggle`, matching the previous behavior.\n const selControlled = computed(() => props.selection !== undefined)\n const selectionModel = createSelectionModel<string | number>({\n defaultSelected: props.selection ?? [],\n onChange: (keys) => emit('update:selection', keys),\n })\n const selectedKeys = shallowRef<Array<string | number>>(selectionModel.get())\n onBeforeUnmount(\n selectionModel.store.subscribe((keys) => {\n selectedKeys.value = keys\n }),\n )\n // Controlled: mirror the prop into the model without re-emitting onChange.\n watch(\n () => props.selection,\n (sel) => {\n if (sel !== undefined) selectionModel.sync(sel)\n },\n )\n // Controlled tables RENDER from the prop (true controlled semantics): a local\n // toggle emits update:selection, but the displayed selection only changes when\n // the parent writes `selection` back — so a parent that validates/rejects a\n // change no longer sees the row flip optimistically. Uncontrolled renders from\n // the model store as before.\n const displaySelection = computed<Array<string | number>>(() =>\n selControlled.value ? (props.selection as Array<string | number>) : selectedKeys.value,\n )\n // Re-base the model on the controlled prop before a toggle so the emitted next\n // value is computed against what the parent actually holds (not a prior,\n // possibly-rejected, optimistic value).\n const rebaseToProp = (): void => {\n if (selControlled.value) selectionModel.sync(props.selection as Array<string | number>)\n }\n\n // -------- Expandable detail rows (single-sourced via core createExpansion) --------\n // A leading toggle column + a full-width detail panel beneath an expanded\n // row, driven by the framework-agnostic expansion model (multiple-open). The\n // keys are the row keys as strings (matching React). Mirrors the selection\n // pattern: shallowRef + subscribe so toggling re-renders.\n const hasDetail = computed(() => props.renderDetail !== undefined)\n const expansion = createExpansion({\n mode: 'multiple',\n defaultExpanded: (props.defaultExpandedRowKeys ?? []).map(String),\n onChange: (keys) => emit('expandedRowsChange', keys),\n })\n const expandedKeys = shallowRef<string[]>(expansion.get())\n onBeforeUnmount(\n expansion.store.subscribe((keys) => {\n expandedKeys.value = keys\n }),\n )\n const isRowExpandable = (row: Record<string, unknown>, idx: number): boolean =>\n hasDetail.value && (props.rowExpandable ? props.rowExpandable(row, idx) : true)\n\n const rowId = (row: Record<string, unknown>, index: number): string | number => {\n const v = row[props.rowKey]\n if (typeof v === 'string' || typeof v === 'number') return v\n return index\n }\n\n // -------- Tree rows (opt-in via getSubRows) --------\n // Flatten the nested data into the visible rows honoring the (shared)\n // expansion model. `bodyData` is the row list the body, select-all, and\n // summary all operate on — identical to `sortedRows` in flat mode, so\n // non-tree behavior is byte-identical. Tree mode is mutually exclusive with\n // detail rows and is gated off the virtual-scroll path.\n const treeMode = computed(() => props.getSubRows !== undefined)\n const flatTree = computed<Array<TreeRow<Record<string, unknown>>> | null>(() =>\n treeMode.value\n ? flattenTree(sortedRows.value, {\n getKey: (r) => String(r[props.rowKey]),\n // With an active sort, sort each level's children by the same\n // comparator so the whole tree reorders hierarchically.\n getChildren: sortComparator.value\n ? withSortedChildren((r) => props.getSubRows!(r), sortComparator.value)\n : (r) => props.getSubRows!(r),\n isExpanded: (k) => expandedKeys.value.includes(k),\n })\n : null,\n )\n const bodyData = computed(() =>\n flatTree.value ? flatTree.value.map((t) => t.row) : sortedRows.value,\n )\n\n const isSelected = (id: string | number) => displaySelection.value.includes(id)\n const allRowIds = computed(() => bodyData.value.map((r, i) => rowId(r, i)))\n const allSelected = computed(() => {\n const sel = displaySelection.value\n return allRowIds.value.length > 0 && allRowIds.value.every((id) => sel.includes(id))\n })\n const someSelected = computed(() => {\n const sel = displaySelection.value\n return !allSelected.value && allRowIds.value.some((id) => sel.includes(id))\n })\n\n const toggleRow = (id: string | number) => {\n rebaseToProp()\n if (props.selectable === 'single') {\n selectionModel.set(selectionModel.isSelected(id) ? [] : [id])\n } else if (props.selectable === 'multi') {\n selectionModel.toggle(id)\n }\n }\n const toggleAll = () => {\n rebaseToProp()\n selectionModel.set(allSelected.value ? [] : [...allRowIds.value])\n }\n\n // -------- Inline editing --------\n /** Encode a unique cell identity: row id + column key. */\n const editingCellId = ref<string | null>(null)\n const editingDraft = ref<string>('')\n const editError = ref<string | null>(null)\n const editorInputRef = ref<HTMLInputElement | null>(null)\n\n const cellId = (rowIdent: string | number, colKey: string) => `${rowIdent}::${colKey}`\n\n const beginEdit = (\n row: Record<string, unknown>,\n column: IrisTableColumn,\n rowIdent: string | number,\n ) => {\n if (!column.editable) return\n editingCellId.value = cellId(rowIdent, column.key)\n const current = getCellValue(row, column)\n editingDraft.value = current == null ? '' : String(current)\n editError.value = null\n void nextTick(() => editorInputRef.value?.focus())\n }\n\n const commitEdit = (\n row: Record<string, unknown>,\n column: IrisTableColumn,\n rowIndex: number,\n ) => {\n if (editingCellId.value === null) return\n const oldValue = getCellValue(row, column)\n const draft = editingDraft.value\n const newValue =\n column.editor === 'number'\n ? draft === '' || Number.isNaN(Number(draft))\n ? oldValue\n : Number(draft)\n : draft\n // A column validator can reject the draft: keep the editor open, surface the\n // message, and skip the commit until the value is valid (or the user cancels).\n if (column.validate) {\n const error = column.validate(newValue, row)\n if (error) {\n editError.value = error\n return\n }\n }\n editError.value = null\n editingCellId.value = null\n if (newValue !== oldValue) {\n emit('cellEdit', { row, column, oldValue, newValue, rowIndex })\n }\n }\n\n const cancelEdit = () => {\n editError.value = null\n editingCellId.value = null\n }\n\n // -------- Column widths --------\n const internalWidths = ref<IrisTableColumnWidths>({})\n // Seed internal widths from the LEAF columns when uncontrolled (a header\n // group column carries no body width; only its leaves do).\n watch(\n () => leafColumns.value,\n (cols) => {\n const seeded = { ...internalWidths.value }\n for (const col of cols) {\n if (seeded[col.key] === undefined) seeded[col.key] = resolveInitialWidth(col)\n }\n internalWidths.value = seeded\n },\n { immediate: true, deep: false },\n )\n const effectiveWidths = computed<IrisTableColumnWidths>(() => {\n if (props.columnWidths) return props.columnWidths\n return internalWidths.value\n })\n const setColumnWidths = (next: IrisTableColumnWidths) => {\n if (props.columnWidths === undefined) internalWidths.value = next\n emit('update:columnWidths', next)\n }\n\n const onHeaderClick = (column: IrisTableColumn) => {\n if (!column.sortable) return\n const current = internalSort.value\n let next: IrisTableSortState | null\n if (!current || current.key !== column.key) {\n next = { key: column.key, direction: 'asc' }\n } else if (current.direction === 'asc') {\n next = { key: column.key, direction: 'desc' }\n } else {\n next = null\n }\n internalSort.value = next\n }\n\n const sortIndicator = (col: IrisTableColumn): VNode | null => {\n if (!col.sortable) return null\n const state = internalSort.value\n const isActive = state?.key === col.key\n const direction: IrisTableSortDirection | null = isActive ? state!.direction : null\n const color = isActive ? 'var(--iris-primary)' : 'var(--iris-muted)'\n return h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: {\n display: 'inline-flex',\n flexDirection: 'column',\n marginInlineStart: '4px',\n lineHeight: '0.6',\n fontSize: '8px',\n color,\n },\n },\n [\n h('span', { style: { opacity: direction === 'asc' ? '1' : '0.45' } }, '▲'),\n h('span', { style: { opacity: direction === 'desc' ? '1' : '0.45' } }, '▼'),\n ],\n )\n }\n\n /** Build the grid-template-columns string for the current widths. */\n const gridTemplate = computed(() => {\n const parts: string[] = []\n if (hasDetail.value) parts.push(`${EXPAND_COL_WIDTH}px`)\n if (props.selectable !== 'none') parts.push(`${SELECTION_COL_WIDTH}px`)\n for (const col of leafColumns.value) {\n parts.push(`${effectiveWidths.value[col.key] ?? resolveInitialWidth(col)}px`)\n }\n return parts.join(' ')\n })\n\n // -------- Cell-range selection (opt-in via `cellRange`) --------\n // The controller is created once and bridged into Vue reactivity via a\n // shallowRef subscribed to the store.\n const cellRangeCtrl = createCellRange()\n const cellRangeState = shallowRef<CellRangeState>(cellRangeCtrl.getState())\n onBeforeUnmount(\n cellRangeCtrl.subscribe((s) => {\n cellRangeState.value = s\n }),\n )\n const isInRange = (row: number, col: number): boolean => {\n const { anchor, active } = cellRangeState.value\n if (!anchor || !active) return false\n const minRow = Math.min(anchor.row, active.row)\n const maxRow = Math.max(anchor.row, active.row)\n const minCol = Math.min(anchor.col, active.col)\n const maxCol = Math.max(anchor.col, active.col)\n return row >= minRow && row <= maxRow && col >= minCol && col <= maxCol\n }\n\n // -------- Grid keyboard navigation (opt-in via keyboardNavigation) --------\n // Roving 2D cell focus: exactly one data cell is tabbable; Arrow/Home/End/\n // Page keys move the focus via the core `nextGridCell` math. Off by default\n // (the table stays `role=\"table\"` with byte-identical behavior). The actual\n // `.focus()` is delegated to the adapter by querying the root for the cell.\n const rootRef = ref<HTMLElement | null>(null)\n const focusedCell = ref<{ row: number; col: number } | null>(null)\n const GRID_NAV_KEYS = new Set<string>([\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ])\n const handleGridKey = (e: KeyboardEvent): void => {\n if (!props.keyboardNavigation || !GRID_NAV_KEYS.has(e.key)) return\n // Only navigate from a grid cell — never hijack arrows inside an editing\n // cell's <input> (which carries no data-grid-row).\n const target = e.target as HTMLElement\n if (target.dataset.gridRow === undefined) return\n e.preventDefault()\n const current = focusedCell.value ?? { row: 0, col: 0 }\n const next = nextGridCell(current, e.key as GridNavKey, {\n rowCount: bodyData.value.length,\n colCount: leafColumns.value.length,\n pageSize: 10,\n })\n focusedCell.value = next\n const cell = rootRef.value?.querySelector<HTMLElement>(\n `[data-grid-row=\"${next.row}\"][data-grid-col=\"${next.col}\"]`,\n )\n cell?.focus()\n }\n\n // Cell-range keyboard handler: Shift+Arrow extends, Escape clears.\n const CELL_RANGE_ARROW_KEYS = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'])\n const handleCellRangeKey = (e: KeyboardEvent): void => {\n if (!props.cellRange) return\n if (e.key === 'Escape') {\n cellRangeCtrl.clearRange()\n return\n }\n if (!e.shiftKey || !CELL_RANGE_ARROW_KEYS.has(e.key)) return\n const target = e.target as HTMLElement\n const rowAttr = target.dataset.irisCellRow\n const colAttr = target.dataset.irisCellCol\n if (rowAttr === undefined || colAttr === undefined) return\n e.preventDefault()\n const anchor = cellRangeCtrl.getState().anchor\n const active = anchor\n ? (cellRangeCtrl.getState().active ?? { row: Number(rowAttr), col: Number(colAttr) })\n : { row: Number(rowAttr), col: Number(colAttr) }\n let nextRow = active.row\n let nextCol = active.col\n if (e.key === 'ArrowUp') nextRow = Math.max(0, nextRow - 1)\n else if (e.key === 'ArrowDown') nextRow = Math.min(bodyData.value.length - 1, nextRow + 1)\n else if (e.key === 'ArrowLeft') nextCol = Math.max(0, nextCol - 1)\n else nextCol = Math.min(leafColumns.value.length - 1, nextCol + 1)\n cellRangeCtrl.extendRange(nextRow, nextCol)\n }\n\n // -------- Column virtualization (opt-in) --------\n const scrollLeft = ref(0)\n const viewportWidth = ref(0)\n const colTrack = (i: number): number =>\n (hasDetail.value ? 1 : 0) + (props.selectable !== 'none' ? 2 : 1) + i\n\n if (typeof ResizeObserver !== 'undefined') {\n let ro: ResizeObserver | null = null\n onMounted(() => {\n if (!props.columnVirtualization || !rootRef.value) return\n const measure = () => {\n if (rootRef.value) viewportWidth.value = rootRef.value.clientWidth\n }\n measure()\n ro = new ResizeObserver(measure)\n ro.observe(rootRef.value)\n })\n onBeforeUnmount(() => {\n ro?.disconnect()\n ro = null\n })\n }\n\n // Column indices to render: visible window + overscan ∪ pinned. `null` ⇒ all.\n const visibleColSet = computed<Set<number> | null>(() => {\n if (!props.columnVirtualization) return null\n const cols = leafColumns.value\n const w = computeVirtualRange({\n itemCount: cols.length,\n scrollTop: scrollLeft.value,\n viewportSize: viewportWidth.value,\n itemSize: (i) => effectiveWidths.value[cols[i].key] ?? resolveInitialWidth(cols[i]),\n buffer: 2,\n })\n const set = new Set<number>()\n for (let i = w.startIndex; i <= w.endIndex; i += 1) set.add(i)\n cols.forEach((col, i) => {\n if (col.pinned) set.add(i)\n })\n return set\n })\n\n // Sticky offsets for pinned columns (mirrors the React adapter): accumulate\n // resolved widths between each pinned column and its edge (+ selection col).\n const pinnedOffsets = computed(() => {\n const map: Record<string, { side: 'left' | 'right'; offset: number }> = {}\n const widthOf = (col: IrisTableColumn) =>\n effectiveWidths.value[col.key] ?? resolveInitialWidth(col)\n let left =\n (hasDetail.value ? EXPAND_COL_WIDTH : 0) +\n (props.selectable !== 'none' ? SELECTION_COL_WIDTH : 0)\n for (const col of leafColumns.value) {\n if (col.pinned === 'left') {\n map[col.key] = { side: 'left', offset: left }\n left += widthOf(col)\n }\n }\n let right = 0\n for (let i = leafColumns.value.length - 1; i >= 0; i -= 1) {\n const col = leafColumns.value[i]\n if (col?.pinned === 'right') {\n map[col.key] = { side: 'right', offset: right }\n right += widthOf(col)\n }\n }\n return map\n })\n const pinnedStyle = (key: string): Record<string, string> => {\n const p = pinnedOffsets.value[key]\n if (!p) return {}\n return {\n position: 'sticky',\n [p.side]: `${p.offset}px`,\n zIndex: '1',\n background: 'var(--iris-background)',\n }\n }\n\n // -------- Resize handle (one ref per column for useDrag) --------\n const resizeHandles = new Map<string, ReturnType<typeof ref<HTMLElement | null>>>()\n const getHandleRef = (key: string) => {\n let r = resizeHandles.get(key)\n if (!r) {\n r = ref<HTMLElement | null>(null)\n resizeHandles.set(key, r)\n }\n return r\n }\n // Track which columns have been wired so we don't double-attach useDrag.\n const wiredKeys = new Set<string>()\n\n /** Wire a useDrag for the given column key. Idempotent per key. */\n const wireResize = (col: IrisTableColumn) => {\n if (!props.resizableColumns) return\n if (wiredKeys.has(col.key)) return\n wiredKeys.add(col.key)\n const handle = getHandleRef(col.key)\n let startWidth = 0\n useDrag({\n handle,\n onStart: () => {\n startWidth = effectiveWidths.value[col.key] ?? resolveInitialWidth(col)\n },\n onDrag: ({ dx }) => {\n const minW = col.minWidth ?? DEFAULT_MIN_WIDTH\n const maxW = col.maxWidth ?? Infinity\n const nextW = Math.max(minW, Math.min(maxW, startWidth + dx))\n setColumnWidths({ ...effectiveWidths.value, [col.key]: nextW })\n },\n })\n }\n\n return () => {\n const showSelection = props.selectable !== 'none'\n const showDetail = hasDetail.value\n\n // -------- Grouped (multi-level) header --------\n // When any column carries `children`, render the header as a CSS grid of\n // `headerMatrix.length` rows; each cell placed by its leaf-column span\n // (colStart/colSpan) and row span. Leaf header cells keep the full sort\n // behavior; group cells are spanning labels. The single-row (flat) header\n // below is rendered unchanged otherwise.\n const buildGroupedHeader = (matrix: NonNullable<typeof headerMatrix.value>): VNode => {\n const lead = (showDetail ? 1 : 0) + (showSelection ? 1 : 0)\n const cells: VNode[] = []\n if (showDetail) {\n cells.push(\n h('div', {\n key: '__expand__',\n role: 'columnheader',\n style: { gridColumn: '1', gridRow: '1 / -1' },\n }),\n )\n }\n if (showSelection) {\n cells.push(\n h(\n 'div',\n {\n key: '__select__',\n role: 'columnheader',\n 'data-iris-table-header': '',\n style: {\n gridColumn: showDetail ? '2' : '1',\n gridRow: '1 / -1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n background: 'var(--iris-surface)',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n props.selectable === 'multi'\n ? [\n h(IrisCheckbox, {\n modelValue: allSelected.value\n ? true\n : someSelected.value\n ? 'indeterminate'\n : false,\n size: 'sm',\n ariaLabel: t('table.selectAll'),\n 'onUpdate:modelValue': toggleAll,\n }),\n ]\n : '',\n ),\n )\n }\n for (const rowCells of matrix) {\n for (const cell of rowCells) {\n const col = cell.column\n const isLeaf = !col.children || col.children.length === 0\n const sortable = isLeaf && col.sortable\n const align = col.align ?? 'left'\n cells.push(\n h(\n 'div',\n {\n key: `${col.key}-${cell.level}`,\n role: 'columnheader',\n 'data-iris-table-header': col.key,\n 'data-iris-table-header-group': isLeaf ? undefined : '',\n 'aria-colspan': cell.colSpan,\n onClick: sortable ? () => onHeaderClick(col) : undefined,\n 'aria-sort': sortable\n ? internalSort.value?.key === col.key\n ? internalSort.value.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : 'none'\n : undefined,\n style: {\n gridColumn: `${lead + cell.colStart} / span ${cell.colSpan}`,\n gridRow: `${cell.level + 1} / span ${cell.rowSpan}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: isLeaf\n ? align === 'right'\n ? 'flex-end'\n : align === 'center'\n ? 'center'\n : 'flex-start'\n : 'center',\n padding: '8px var(--iris-padding-md)',\n cursor: sortable ? 'pointer' : 'default',\n userSelect: sortable ? 'none' : 'auto',\n background: 'var(--iris-surface)',\n borderBottom: '1px solid var(--iris-border)',\n fontWeight: '600',\n fontSize: '13px',\n color: 'var(--iris-foreground)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n [col.title, sortable ? sortIndicator(col) : null],\n ),\n )\n }\n }\n return h(\n 'div',\n {\n role: 'row',\n 'data-iris-table-row': 'header',\n 'data-iris-table-header-row': '',\n 'data-iris-table-header-grouped': '',\n style: {\n display: 'grid',\n gridTemplateColumns: gridTemplate.value,\n gridTemplateRows: `repeat(${matrix.length}, auto)`,\n },\n },\n cells,\n )\n }\n\n const headerCells: VNode[] = []\n if (showDetail) {\n headerCells.push(\n h('div', {\n role: 'columnheader',\n key: '__expand__',\n 'data-iris-table-header': '__expand',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n background: 'var(--iris-surface)',\n borderBottom: '1px solid var(--iris-border)',\n },\n }),\n )\n }\n if (showSelection) {\n headerCells.push(\n h(\n 'div',\n {\n role: 'columnheader',\n key: '__select__',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n background: 'var(--iris-surface)',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n props.selectable === 'multi'\n ? [\n h(IrisCheckbox, {\n modelValue: allSelected.value\n ? true\n : someSelected.value\n ? 'indeterminate'\n : false,\n size: 'sm',\n ariaLabel: t('table.selectAll'),\n 'onUpdate:modelValue': toggleAll,\n }),\n ]\n : '',\n ),\n )\n }\n for (let ci = 0; ci < props.columns.length; ci += 1) {\n const col = props.columns[ci]\n if (visibleColSet.value && !visibleColSet.value.has(ci)) continue\n const align = col.align ?? 'left'\n wireResize(col)\n const handle = props.resizableColumns\n ? h('span', {\n ref: (el: unknown) => {\n getHandleRef(col.key).value = (el ?? null) as HTMLElement | null\n },\n role: 'separator',\n 'aria-orientation': 'vertical',\n 'aria-label': `Resize ${col.title}`,\n tabindex: 0,\n 'data-iris-table-resize-handle': '',\n 'data-column-key': col.key,\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onKeydown: (e: KeyboardEvent) => {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return\n e.preventDefault()\n e.stopPropagation()\n const minW = col.minWidth ?? DEFAULT_MIN_WIDTH\n const maxW = col.maxWidth ?? Infinity\n const cur = effectiveWidths.value[col.key] ?? resolveInitialWidth(col)\n const delta = e.key === 'ArrowRight' ? RESIZE_STEP : -RESIZE_STEP\n setColumnWidths({\n ...effectiveWidths.value,\n [col.key]: Math.max(minW, Math.min(maxW, cur + delta)),\n })\n },\n style: {\n position: 'absolute',\n right: '0',\n top: '0',\n bottom: '0',\n width: '6px',\n cursor: 'col-resize',\n touchAction: 'none',\n userSelect: 'none',\n zIndex: '1',\n },\n })\n : null\n\n headerCells.push(\n h(\n 'div',\n {\n key: col.key,\n role: 'columnheader',\n 'data-iris-table-header': col.key,\n 'data-iris-table-pinned': col.pinned,\n onClick: () => onHeaderClick(col),\n style: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent:\n align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n padding: '8px var(--iris-padding-md)',\n cursor: col.sortable ? 'pointer' : 'default',\n userSelect: col.sortable ? 'none' : 'auto',\n background: 'var(--iris-surface)',\n borderBottom: '1px solid var(--iris-border)',\n fontWeight: '600',\n fontSize: '13px',\n color: 'var(--iris-foreground)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n ...(visibleColSet.value ? { gridColumnStart: String(colTrack(ci)) } : {}),\n ...(col.pinned\n ? { ...pinnedStyle(col.key), background: 'var(--iris-surface)' }\n : {}),\n },\n 'aria-sort':\n internalSort.value?.key === col.key\n ? internalSort.value.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : col.sortable\n ? 'none'\n : undefined,\n },\n [col.title, sortIndicator(col), handle],\n ),\n )\n }\n\n const headerRow =\n grouped.value && headerMatrix.value\n ? buildGroupedHeader(headerMatrix.value)\n : h(\n 'div',\n {\n role: 'row',\n 'data-iris-table-header-row': '',\n style: {\n display: 'grid',\n gridTemplateColumns: gridTemplate.value,\n },\n },\n headerCells,\n )\n\n const renderRow = (\n row: Record<string, unknown>,\n index: number,\n style?: Record<string, string>,\n treeMeta?: TreeRow<Record<string, unknown>>,\n ): VNode => {\n const id = rowId(row, index)\n const selected = isSelected(id)\n const cells: VNode[] = []\n if (showDetail) {\n const rowExpandable = isRowExpandable(row, index)\n const isExpanded = expandedKeys.value.includes(String(id))\n cells.push(\n h(\n 'div',\n {\n key: '__expand',\n role: 'cell',\n 'data-iris-table-cell': '__expand',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n rowExpandable\n ? [\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-table-expand-toggle': '',\n 'aria-expanded': isExpanded ? 'true' : 'false',\n 'aria-label': t(isExpanded ? 'treeSelect.collapse' : 'treeSelect.expand'),\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n expansion.toggle(String(id))\n },\n style: {\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n font: 'inherit',\n color: 'var(--iris-foreground)',\n transform: isExpanded ? 'rotate(90deg)' : 'none',\n transition: 'transform 150ms',\n },\n },\n '▶',\n ),\n ]\n : '',\n ),\n )\n }\n if (showSelection) {\n cells.push(\n h(\n 'div',\n {\n role: 'cell',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n [\n h(IrisCheckbox, {\n modelValue: selected,\n size: 'sm',\n ariaLabel: t('table.selectRow', { key: id }),\n 'onUpdate:modelValue': () => toggleRow(id),\n onClick: (e: MouseEvent) => e.stopPropagation(),\n }),\n ],\n ),\n )\n }\n for (let ci = 0; ci < leafColumns.value.length; ci += 1) {\n const col = leafColumns.value[ci]\n if (visibleColSet.value && !visibleColSet.value.has(ci)) continue\n const align = col.align ?? 'left'\n const cellSlot = slots[`cell.${col.key}`]\n const isEditing = editingCellId.value === cellId(id, col.key)\n\n let content: unknown\n if (isEditing) {\n const editCellId = cellId(id, col.key)\n const error = editError.value\n const input = h('input', {\n ref: (el: unknown) => {\n editorInputRef.value = (el ?? null) as HTMLInputElement | null\n },\n type: col.editor === 'number' ? 'number' : 'text',\n value: editingDraft.value,\n 'data-iris-table-editor': '',\n 'aria-invalid': error ? 'true' : undefined,\n 'aria-describedby': error ? `${editCellId}-error` : undefined,\n onInput: (e: Event) => {\n editingDraft.value = (e.target as HTMLInputElement).value\n },\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n commitEdit(row, col, index)\n } else if (e.key === 'Escape') {\n e.preventDefault()\n cancelEdit()\n }\n },\n onBlur: () => commitEdit(row, col, index),\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onDblclick: (e: MouseEvent) => e.stopPropagation(),\n style: {\n width: '100%',\n border: `1px solid ${error ? 'var(--iris-danger)' : 'var(--iris-primary)'}`,\n borderRadius: 'var(--iris-radius-sm)',\n padding: '4px 6px',\n font: 'inherit',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n outline: 'none',\n boxShadow: '0 0 0 3px rgba(99, 102, 241, 0.18)',\n },\n })\n content = error\n ? [\n input,\n h(\n 'div',\n {\n id: `${editCellId}-error`,\n role: 'alert',\n 'data-iris-table-editor-error': '',\n style: {\n marginTop: '2px',\n fontSize: '12px',\n color: 'var(--iris-danger)',\n },\n },\n error,\n ),\n ]\n : input\n } else {\n content =\n cellSlot?.({ row, index, value: getCellValue(row, col) }) ??\n String(getCellValue(row, col) ?? '')\n }\n\n // Tree mode: in the first data cell, prepend a depth-indent span that\n // holds an expand/collapse toggle (parents) or a fixed-width spacer\n // (leaves, so they align). Renders before the cell's content.\n const treeIndent: VNode | null =\n treeMeta && ci === 0\n ? h(\n 'span',\n {\n 'data-iris-table-tree-indent': '',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n flex: 'none',\n paddingLeft: `${treeMeta.depth * 16}px`,\n },\n },\n treeMeta.hasChildren\n ? [\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-table-tree-toggle': '',\n 'aria-expanded': treeMeta.expanded ? 'true' : 'false',\n 'aria-label': t(\n treeMeta.expanded ? 'treeSelect.collapse' : 'treeSelect.expand',\n ),\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n expansion.toggle(treeMeta.key)\n },\n style: {\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n marginRight: '4px',\n font: 'inherit',\n color: 'var(--iris-foreground)',\n transform: treeMeta.expanded ? 'rotate(90deg)' : 'none',\n transition: 'transform 150ms',\n },\n },\n '▶',\n ),\n ]\n : [\n h('span', {\n 'aria-hidden': 'true',\n style: { display: 'inline-block', width: '16px' },\n }),\n ],\n )\n : null\n\n const cellChildren: VNode | VNode[] | string = treeIndent\n ? [treeIndent, ...(Array.isArray(content) ? content : [content as VNode | string])]\n : (content as VNode | VNode[] | string)\n\n cells.push(\n h(\n 'div',\n {\n key: col.key,\n role: 'cell',\n 'data-iris-table-cell': col.key,\n 'data-iris-table-pinned': col.pinned,\n 'data-editable': col.editable ? '' : undefined,\n 'data-editing': isEditing ? '' : undefined,\n // Grid keyboard navigation (opt-in): grid coords + roving tabindex\n // (exactly one cell is 0) + an onFocus that syncs the focused cell.\n ...(props.keyboardNavigation\n ? {\n 'data-grid-row': index,\n 'data-grid-col': ci,\n tabindex: (\n focusedCell.value\n ? focusedCell.value.row === index && focusedCell.value.col === ci\n : index === 0 && ci === 0\n )\n ? 0\n : -1,\n onFocus: () => {\n focusedCell.value = { row: index, col: ci }\n },\n }\n : {}),\n // Cell-range selection (opt-in): data attributes + click handler.\n ...(props.cellRange\n ? {\n 'data-iris-cell-row': index,\n 'data-iris-cell-col': ci,\n 'data-iris-cell-selected': isInRange(index, ci) ? 'true' : undefined,\n onClick: (e: MouseEvent) => {\n if (e.shiftKey) {\n cellRangeCtrl.extendRange(index, ci)\n } else {\n cellRangeCtrl.startRange(index, ci)\n }\n },\n }\n : {}),\n onDblclick: col.editable ? () => beginEdit(row, col, id) : undefined,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent:\n align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n padding: isEditing ? '4px' : '8px var(--iris-padding-md)',\n borderBottom: '1px solid var(--iris-border)',\n fontSize: '14px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n cursor: col.editable ? 'cell' : 'default',\n ...(props.cellRange && isInRange(index, ci)\n ? { background: 'var(--iris-surface-selected, rgba(99,102,241,0.12))' }\n : {}),\n ...(visibleColSet.value ? { gridColumnStart: String(colTrack(ci)) } : {}),\n ...pinnedStyle(col.key),\n },\n },\n cellChildren,\n ),\n )\n }\n return h(\n 'div',\n {\n key: String(id),\n role: 'row',\n // Announce selection to assistive tech (parity with the React\n // adapter); `data-state` below stays as the styling hook.\n 'aria-selected': props.selectable !== 'none' ? selected : undefined,\n // Tree depth/position for screen readers (1-based); the toggle button\n // carries aria-expanded for the control itself.\n 'aria-level': treeMeta ? treeMeta.depth + 1 : undefined,\n 'aria-setsize': treeMeta ? treeMeta.setSize : undefined,\n 'aria-posinset': treeMeta ? treeMeta.posInset : undefined,\n 'data-iris-table-row': '',\n 'data-state': selected ? 'selected' : undefined,\n onClick: () => emit('rowClick', row, index),\n style: {\n display: 'grid',\n gridTemplateColumns: gridTemplate.value,\n background: selected\n ? 'var(--iris-surface-hover)'\n : props.striped && index % 2 === 1\n ? 'var(--iris-surface)'\n : 'transparent',\n transition: 'background-color 120ms ease',\n cursor: 'default',\n ...style,\n },\n },\n cells,\n )\n }\n\n // State row style shared by error / loading / empty.\n const stateRowStyle = {\n padding: '32px 12px',\n textAlign: 'center',\n color: 'var(--iris-muted)',\n }\n\n let bodyNode: VNode\n // Precedence: error → loading → empty → rows.\n if (props.error) {\n bodyNode = h(\n 'div',\n { role: 'row', 'data-iris-table-row': 'error', style: stateRowStyle },\n slots.error ? slots.error() : t('table.error'),\n )\n } else if (props.loading) {\n bodyNode = h(\n 'div',\n {\n role: 'row',\n 'aria-busy': 'true',\n 'data-iris-table-row': 'loading',\n style: stateRowStyle,\n },\n slots.loading ? slots.loading() : t('table.loading'),\n )\n } else if (bodyData.value.length === 0) {\n bodyNode = h(\n 'div',\n { role: 'row', 'data-iris-table-row': 'empty', style: stateRowStyle },\n slots.empty ? slots.empty() : t('table.empty'),\n )\n } else if (props.virtualScroll && (!treeMode.value || !hasDetail.value)) {\n // Virtualize flat mode, and tree mode too — tree rows are uniform\n // height, so the only thing that bars it is variable-height detail\n // panels, hence the `!hasDetail` guard. `bodyData` is the flattened\n // visible rows (= `sortedRows` in flat mode); `flatTree?.[index]`\n // supplies each row's tree meta (depth + toggle), with `index` the\n // absolute row index from the scroller.\n bodyNode = h(\n IrisVirtualScroll,\n {\n items: bodyData.value,\n itemHeight: props.virtualScroll.itemHeight,\n height: props.virtualScroll.height,\n buffer: props.virtualScroll.buffer,\n 'data-iris-table-body': '',\n style: { width: '100%' },\n },\n {\n item: ({ item, index }: { item: Record<string, unknown>; index: number }) =>\n renderRow(item, index, undefined, flatTree.value?.[index]),\n },\n )\n } else {\n const bodyChildren: VNode[] = []\n bodyData.value.forEach((row, i) => {\n bodyChildren.push(renderRow(row, i, undefined, flatTree.value?.[i]))\n // Full-width detail panel beneath an expanded, expandable row (spans\n // all grid tracks). Only in the non-virtualized path.\n if (showDetail && isRowExpandable(row, i)) {\n const id = rowId(row, i)\n if (expandedKeys.value.includes(String(id))) {\n bodyChildren.push(\n h(\n 'div',\n {\n key: `${String(id)}::detail`,\n role: 'row',\n 'data-iris-table-row-detail': String(id),\n style: {\n display: 'grid',\n gridTemplateColumns: gridTemplate.value,\n },\n },\n [\n h(\n 'div',\n {\n role: 'cell',\n 'data-iris-table-detail-cell': '',\n style: {\n gridColumn: '1 / -1',\n padding: '8px 12px',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n [props.renderDetail!(row, i)],\n ),\n ],\n ),\n )\n }\n }\n })\n bodyNode = h(\n 'div',\n {\n role: 'rowgroup',\n 'data-iris-table-body': '',\n },\n bodyChildren,\n )\n }\n\n // -------- Summary / footer row --------\n // Each column with a `summary` op aggregates over the FULL sorted dataset\n // (the same array the body maps), via the core `aggregate` material. The\n // footer appears only when there is data and at least one column opts in.\n let summaryRow: VNode | null = null\n if (\n !props.error &&\n !props.loading &&\n bodyData.value.length > 0 &&\n leafColumns.value.some((c) => c.summary)\n ) {\n const summaryCells: VNode[] = []\n if (showSelection) {\n summaryCells.push(\n h('div', {\n key: '__selection',\n role: 'cell',\n 'data-iris-table-cell': '__selection',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n },\n }),\n )\n }\n for (let ci = 0; ci < leafColumns.value.length; ci += 1) {\n const col = leafColumns.value[ci]\n if (visibleColSet.value && !visibleColSet.value.has(ci)) continue\n const align = col.align ?? 'left'\n const op = col.summary\n const value = op ? aggregate(bodyData.value, (r) => getCellValue(r, col), op) : null\n // Columns without a summary op render an empty cell.\n const summaryContent: VNode | VNode[] | string =\n op != null && value != null\n ? col.renderSummary\n ? (col.renderSummary(value, bodyData.value) as VNode | VNode[] | string)\n : String(value)\n : ''\n summaryCells.push(\n h(\n 'div',\n {\n key: col.key,\n role: 'cell',\n 'data-iris-table-cell': col.key,\n 'data-iris-table-summary-cell': op ? '' : undefined,\n 'data-iris-table-pinned': col.pinned,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent:\n align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n padding: '8px var(--iris-padding-md)',\n fontSize: '14px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n ...(visibleColSet.value ? { gridColumnStart: String(colTrack(ci)) } : {}),\n ...pinnedStyle(col.key),\n },\n },\n summaryContent,\n ),\n )\n }\n summaryRow = h(\n 'div',\n {\n role: 'row',\n 'data-iris-table-row': 'summary',\n style: {\n display: 'grid',\n gridTemplateColumns: gridTemplate.value,\n fontWeight: '600',\n borderTop: '2px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n },\n },\n summaryCells,\n )\n }\n\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n rootRef.value = (el ?? null) as HTMLElement | null\n },\n // A keyboard-navigable hierarchical table is a `treegrid`; otherwise the\n // grid/table role as before (treegrid implies managed cell focus).\n role: props.keyboardNavigation ? (treeMode.value ? 'treegrid' : 'grid') : 'table',\n 'data-iris-table': '',\n 'data-virtual': props.virtualScroll ? '' : undefined,\n 'data-column-virtualized': props.columnVirtualization ? 'true' : undefined,\n onKeydown:\n props.keyboardNavigation || props.cellRange\n ? (e: KeyboardEvent) => {\n if (props.keyboardNavigation) handleGridKey(e)\n if (props.cellRange) handleCellRangeKey(e)\n }\n : undefined,\n onScroll: props.columnVirtualization\n ? (e: Event) => {\n scrollLeft.value = (e.currentTarget as HTMLElement).scrollLeft\n }\n : undefined,\n style: {\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: props.bordered ? '1px solid var(--iris-border)' : 'none',\n borderRadius: 'var(--iris-radius-md)',\n // Column virtualization turns the table into a horizontal scroll container.\n overflow: props.columnVirtualization ? 'auto' : 'hidden',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [headerRow, bodyNode, summaryRow],\n )\n }\n },\n})\n","import { saveFile } from '@iris-ui-kit/core'\nimport type { IrisTableColumn } from './types'\n\n/**\n * OWASP CSV-injection mitigation: a cell whose text a spreadsheet could parse\n * as a formula (leading `=`, `+`, `-`, `@`, or a tab/CR that shifts the first\n * significant character) is prefixed with a single quote so it imports as\n * literal text instead of executing (DDE, `=HYPERLINK`, `=cmd|…`). Numbers\n * (typed at the call site, not string-ish) never carry a formula payload.\n */\nconst FORMULA_LEAD = /^[=+\\-@\\t\\r]/\nfunction neutralizeFormula(text: string): string {\n return FORMULA_LEAD.test(text) ? `'${text}` : text\n}\n\n/** Quote a single CSV field per RFC 4180. */\nfunction csvCell(value: unknown): string {\n if (value == null) return ''\n const isNumber = typeof value === 'number' && Number.isFinite(value)\n const s = isNumber ? String(value) : neutralizeFormula(String(value))\n // Quote if the value contains comma, quote, newline, carriage return.\n if (/[\",\\r\\n]/.test(s)) {\n return `\"${s.replace(/\"/g, '\"\"')}\"`\n }\n return s\n}\n\n/**\n * Serialize a list of rows as a CSV string. Columns determine the order;\n * each cell value is read via `dataIndex` (defaulting to the column key).\n *\n * Returns a plain string without BOM. For Excel compatibility with non-ASCII\n * characters, prepend the U+FEFF BOM before writing — `downloadCsv` does this.\n */\nexport function exportCsv<Row extends Record<string, unknown>>(\n rows: readonly Row[],\n columns: readonly IrisTableColumn<Row>[],\n): string {\n const header = columns.map((c) => csvCell(c.title)).join(',')\n const body = rows\n .map((row) =>\n columns\n .map((col) => {\n const key = (col.dataIndex ?? col.key) as keyof Row\n return csvCell(row[key])\n })\n .join(','),\n )\n .join('\\n')\n return body.length > 0 ? `${header}\\n${body}` : header\n}\n\n/**\n * Trigger a download of the given CSV string. A host `FileSaveHandler` (set via\n * `setFileSaveHandler`) intercepts it for native save in desktop/mobile shells;\n * otherwise falls back to the browser `<a download>`. SSR-safe (no-op without\n * `document`).\n */\nexport async function downloadCsv(filename: string, csv: string): Promise<void> {\n // Prepend U+FEFF BOM so Excel reads UTF-8 correctly.\n const BOM = String.fromCharCode(0xfeff)\n const content = BOM + csv\n if (await saveFile({ filename, content, mimeType: 'text/csv;charset=utf-8;' })) return\n if (typeof document === 'undefined') return\n const blob = new Blob([content], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = url\n anchor.download = filename\n anchor.style.display = 'none'\n document.body.appendChild(anchor)\n anchor.click()\n document.body.removeChild(anchor)\n // Defer revoke so click handler can finish.\n setTimeout(() => URL.revokeObjectURL(url), 0)\n}\n","import { saveFile, toSpreadsheetXml, type SpreadsheetXmlOptions } from '@iris-ui-kit/core'\nimport type { IrisTableColumn } from './types'\n\n/**\n * Serialize rows to a SpreadsheetML (Excel/LibreOffice-native) XML string —\n * the dependency-free counterpart to {@link exportCsv}. Column order sets field\n * order; values read via `dataIndex` (defaulting to `key`).\n */\nexport function exportExcel<Row extends Record<string, unknown>>(\n rows: readonly Row[],\n columns: readonly IrisTableColumn<Row>[],\n options?: SpreadsheetXmlOptions,\n): string {\n return toSpreadsheetXml(\n rows as readonly Record<string, unknown>[],\n columns.map((c) => ({\n key: c.key,\n title: c.title,\n dataIndex: typeof c.dataIndex === 'string' ? c.dataIndex : undefined,\n })),\n options,\n )\n}\n\n/**\n * Trigger a download of the given SpreadsheetML string. A host `FileSaveHandler`\n * (set via `setFileSaveHandler`) intercepts it for native save in desktop/mobile\n * shells; otherwise falls back to the browser `<a download>`. SSR-safe.\n */\nexport async function downloadExcel(filename: string, xml: string): Promise<void> {\n if (await saveFile({ filename, content: xml, mimeType: 'application/vnd.ms-excel' })) {\n return\n }\n if (typeof document === 'undefined') return\n const blob = new Blob([xml], { type: 'application/vnd.ms-excel' })\n const url = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = url\n anchor.download = filename\n anchor.style.display = 'none'\n document.body.appendChild(anchor)\n anchor.click()\n document.body.removeChild(anchor)\n setTimeout(() => URL.revokeObjectURL(url), 0)\n}\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nexport type IrisTabsOrientation = 'horizontal' | 'vertical'\n\nexport interface TabsContext {\n /** Currently active tab value. */\n value: ComputedRef<string | null>\n /** Switch to the given value. */\n setValue: (value: string) => void\n /** Visual orientation. */\n orientation: ComputedRef<IrisTabsOrientation>\n /** Disabled flag for the whole group. */\n disabled: ComputedRef<boolean>\n /** When true, content panels are unmounted when not active. */\n lazy: ComputedRef<boolean>\n /** Ordered registration of trigger values so arrow keys can navigate them. */\n registerTrigger: (value: string, disabled: () => boolean) => void\n unregisterTrigger: (value: string) => void\n /** Move focus among triggers; called by Trigger key handlers. */\n moveFocus: (from: string, delta: 1 | -1 | 'home' | 'end') => void\n /** Ref to the tablist element (for focus restoration). */\n listRef: Ref<HTMLElement | null>\n}\n\nexport const TabsContextKey: InjectionKey<TabsContext> = Symbol('IrisTabs')\n","import { computed, defineComponent, provide, ref, type PropType } from 'vue'\nimport { nextEnabledIndex } from '@iris-ui-kit/core'\nimport { TabsContextKey, type IrisTabsOrientation } from './context'\n\ninterface TriggerRegistration {\n value: string\n isDisabled: () => boolean\n}\n\n/**\n * Tabs root. Provides context for value, orientation, lazy mounting, and the\n * ordered set of registered triggers so arrow-key navigation can move focus\n * deterministically (skipping disabled triggers).\n *\n * @example\n * <IrisTabs default-value=\"profile\">\n * <IrisTabsList>\n * <IrisTabsTrigger value=\"profile\">Profile</IrisTabsTrigger>\n * <IrisTabsTrigger value=\"prefs\">Preferences</IrisTabsTrigger>\n * </IrisTabsList>\n * <IrisTabsContent value=\"profile\">...</IrisTabsContent>\n * <IrisTabsContent value=\"prefs\">...</IrisTabsContent>\n * </IrisTabs>\n */\nexport const IrisTabs = defineComponent({\n name: 'IrisTabs',\n props: {\n /** Controlled active value. Combine with `@update:value` or `v-model:value`. */\n value: { type: String, default: undefined },\n /** Initial active value for uncontrolled mode. */\n defaultValue: { type: String, default: undefined },\n orientation: { type: String as PropType<IrisTabsOrientation>, default: 'horizontal' },\n disabled: { type: Boolean, default: false },\n /** When true, content panels are unmounted when not active. Default `true`. */\n lazy: { type: Boolean, default: true },\n },\n emits: {\n 'update:value': (_value: string) => true,\n },\n setup(props, { slots, emit }) {\n const isControlled = computed(() => props.value !== undefined)\n const internalValue = ref<string | null>(props.defaultValue ?? null)\n\n const effectiveValue = computed<string | null>(() =>\n isControlled.value ? (props.value as string) : internalValue.value,\n )\n\n const setValue = (next: string) => {\n if (!isControlled.value) internalValue.value = next\n emit('update:value', next)\n }\n\n // Ordered trigger registry — preserves render order so arrow nav is intuitive.\n const triggers = ref<TriggerRegistration[]>([])\n const listRef = ref<HTMLElement | null>(null)\n\n const registerTrigger = (value: string, isDisabled: () => boolean) => {\n if (triggers.value.some((t) => t.value === value)) return\n triggers.value = [...triggers.value, { value, isDisabled }]\n // First registered trigger becomes the default focus target if no value set.\n if (internalValue.value === null && !isControlled.value && !isDisabled()) {\n internalValue.value = value\n }\n }\n\n const unregisterTrigger = (value: string) => {\n triggers.value = triggers.value.filter((t) => t.value !== value)\n }\n\n const focusTriggerByValue = (value: string) => {\n const root = listRef.value\n if (!root) return\n const el = root.querySelector<HTMLElement>(`[data-iris-tabs-trigger][data-value=\"${value}\"]`)\n el?.focus()\n }\n\n const moveFocus = (from: string, delta: 1 | -1 | 'home' | 'end') => {\n const enabled = triggers.value.filter((t) => !t.isDisabled())\n if (enabled.length === 0) return\n const fromIndex = enabled.findIndex((t) => t.value === from)\n let nextIndex: number\n if (delta === 'home') nextIndex = 0\n else if (delta === 'end') nextIndex = enabled.length - 1\n else nextIndex = nextEnabledIndex(fromIndex, delta, enabled.length)\n const next = enabled[nextIndex]\n if (next) {\n setValue(next.value)\n focusTriggerByValue(next.value)\n }\n }\n\n provide(TabsContextKey, {\n value: effectiveValue,\n setValue,\n orientation: computed(() => props.orientation),\n disabled: computed(() => props.disabled),\n lazy: computed(() => props.lazy),\n registerTrigger,\n unregisterTrigger,\n moveFocus,\n listRef,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, inject } from 'vue'\nimport { TabsContextKey } from './context'\n\n/** Container for `IrisTabsTrigger`s. Renders `<div role=\"tablist\">`. */\nexport const IrisTabsList = defineComponent({\n name: 'IrisTabsList',\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = inject(TabsContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisTabsList must be inside an IrisTabs')\n }\n return () =>\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n ctx.listRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'tablist',\n 'aria-orientation': ctx.orientation.value,\n 'data-iris-tabs-list': '',\n 'data-orientation': ctx.orientation.value,\n style: {\n display: 'flex',\n flexDirection: ctx.orientation.value === 'horizontal' ? 'row' : 'column',\n gap: '2px',\n borderBottom:\n ctx.orientation.value === 'horizontal' ? '1px solid var(--iris-border)' : 'none',\n borderInlineEnd:\n ctx.orientation.value === 'vertical' ? '1px solid var(--iris-border)' : 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, inject, onBeforeUnmount, onMounted, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { TabsContextKey } from './context'\n\n/**\n * A single tab button. Registers with the parent `IrisTabs` so arrow keys\n * can navigate among triggers in registration order. Sets `aria-selected`\n * and `aria-controls` for screen readers; uses roving tabindex.\n *\n * `as-child` is supported to render any element (e.g. `<RouterLink>`) as the\n * trigger while keeping the a11y wiring.\n */\nexport const IrisTabsTrigger = defineComponent({\n name: 'IrisTabsTrigger',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n disabled: { type: Boolean, default: false },\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(TabsContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisTabsTrigger must be inside an IrisTabs')\n }\n\n const isDisabled = computed(() => props.disabled || ctx.disabled.value)\n const isActive = computed(() => ctx.value.value === props.value)\n\n onMounted(() => ctx.registerTrigger(props.value, () => isDisabled.value))\n onBeforeUnmount(() => ctx.unregisterTrigger(props.value))\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n if (isDisabled.value) return\n ctx.setValue(props.value)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n const horizontal = ctx.orientation.value === 'horizontal'\n switch (event.key) {\n case horizontal ? 'ArrowRight' : 'ArrowDown':\n event.preventDefault()\n ctx.moveFocus(props.value, 1)\n break\n case horizontal ? 'ArrowLeft' : 'ArrowUp':\n event.preventDefault()\n ctx.moveFocus(props.value, -1)\n break\n case 'Home':\n event.preventDefault()\n ctx.moveFocus(props.value, 'home')\n break\n case 'End':\n event.preventDefault()\n ctx.moveFocus(props.value, 'end')\n break\n }\n }\n\n return () => {\n const triggerProps: Record<string, unknown> = {\n role: 'tab',\n 'aria-selected': isActive.value ? 'true' : 'false',\n 'aria-controls': `iris-tabs-content-${props.value}`,\n id: `iris-tabs-trigger-${props.value}`,\n tabindex: isActive.value ? 0 : -1,\n 'data-iris-tabs-trigger': '',\n 'data-value': props.value,\n 'data-state': isActive.value ? 'active' : 'inactive',\n 'data-orientation': ctx.orientation.value,\n 'data-disabled': isDisabled.value ? '' : undefined,\n disabled: isDisabled.value ? true : undefined,\n onClick,\n onKeydown: onKeyDown,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisTabsTrigger: as-child requires a single child element')\n }\n return null\n }\n const merged = mergeSlotProps(\n { ...triggerProps, ...attrs },\n (root.props ?? {}) as Record<string, unknown>,\n )\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n const colors = isActive.value\n ? { background: 'transparent', color: 'var(--iris-primary)' }\n : { background: 'transparent', color: 'var(--iris-muted)' }\n const borderActive =\n ctx.orientation.value === 'horizontal'\n ? { borderBottom: `2px solid ${isActive.value ? 'var(--iris-primary)' : 'transparent'}` }\n : {\n borderInlineEnd: `2px solid ${isActive.value ? 'var(--iris-primary)' : 'transparent'}`,\n }\n return h(\n 'button',\n {\n type: 'button',\n ...attrs,\n ...triggerProps,\n style: {\n padding: '8px var(--iris-padding-md)',\n fontSize: '14px',\n fontWeight: '500',\n fontFamily: 'inherit',\n cursor: isDisabled.value ? 'not-allowed' : 'pointer',\n opacity: isDisabled.value ? '0.5' : '1',\n border: 'none',\n outline: 'none',\n marginBottom: ctx.orientation.value === 'horizontal' ? '-1px' : undefined,\n marginInlineEnd: ctx.orientation.value === 'vertical' ? '-1px' : undefined,\n transition: 'color 120ms ease, border-color 120ms ease',\n ...colors,\n ...borderActive,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n","import { computed, defineComponent, h, inject } from 'vue'\nimport { TabsContextKey } from './context'\n\n/**\n * Panel paired with a `IrisTabsTrigger` by matching `value`. When `lazy` is\n * true on the parent (default), inactive panels are unmounted so their\n * setup hooks run only when first shown. Pass `:force-mount=\"true\"` to\n * always render (useful for SEO or pre-warming).\n */\nexport const IrisTabsContent = defineComponent({\n name: 'IrisTabsContent',\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n /** Render even when inactive; hidden via `hidden` attribute. */\n forceMount: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(TabsContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisTabsContent must be inside an IrisTabs')\n }\n\n const isActive = computed(() => ctx.value.value === props.value)\n\n return () => {\n if (!isActive.value && ctx.lazy.value && !props.forceMount) return null\n return h(\n 'div',\n {\n ...attrs,\n role: 'tabpanel',\n id: `iris-tabs-content-${props.value}`,\n 'aria-labelledby': `iris-tabs-trigger-${props.value}`,\n 'data-iris-tabs-content': '',\n 'data-state': isActive.value ? 'active' : 'inactive',\n hidden: !isActive.value || undefined,\n tabindex: 0,\n style: {\n padding: 'var(--iris-padding-md) 0',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n","import type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { Placement } from '@iris-ui-kit/core'\n\nexport interface MenuContext {\n open: ComputedRef<boolean>\n setOpen: (value: boolean) => void\n triggerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n contentId: string\n placement: Placement\n offset: number\n /** The root menu's \"close everything\" call — propagates to submenus. */\n closeRoot: () => void\n}\n\nexport const MenuContextKey: InjectionKey<MenuContext> = Symbol('IrisMenu')\n","import { computed, defineComponent, provide, ref, useId, watch, type PropType } from 'vue'\nimport { createFloatingMachine, type Placement } from '@iris-ui-kit/core'\nimport { useMachine } from '../../machine/useMachine'\nimport { MenuContextKey } from './context'\n\n/**\n * Root of a (potentially nested) menu. Provides the close-everything channel\n * to submenus so picking a leaf in a deeply nested branch closes the whole\n * tree at once. The root itself behaves like `IrisDropdown` — same state\n * machine, same positioning + dismiss semantics.\n *\n * Use `IrisMenuSub` inside content to declare nested submenus.\n */\nexport const IrisMenu = defineComponent({\n name: 'IrisMenu',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n offset: { type: Number, default: 6 },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const isControlled = computed(() => props.open !== undefined)\n const machine = createFloatingMachine(props.defaultOpen ? 'open' : 'closed')\n const { state, send } = useMachine(machine)\n\n watch(\n () => props.open,\n (value) => {\n if (value === undefined) return\n const currentlyOpen = state.value.value === 'open'\n if (value && !currentlyOpen) send({ type: 'OPEN' })\n if (!value && currentlyOpen) send({ type: 'CLOSE' })\n },\n { immediate: true },\n )\n\n const open = computed(() =>\n isControlled.value ? Boolean(props.open) : state.value.value === 'open',\n )\n\n const setOpen = (value: boolean) => {\n if (!isControlled.value) send({ type: value ? 'OPEN' : 'CLOSE' })\n emit('update:open', value)\n }\n\n const closeRoot = () => setOpen(false)\n\n provide(MenuContextKey, {\n open,\n setOpen,\n triggerRef: ref(null),\n contentRef: ref(null),\n contentId: useId(),\n placement: props.placement,\n offset: props.offset,\n closeRoot,\n })\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, inject, type VNode } from 'vue'\nimport { findFirstElement, mergeSlotProps } from '../slot/Slot'\nimport { MenuContextKey } from './context'\n\nexport const IrisMenuTrigger = defineComponent({\n name: 'IrisMenuTrigger',\n inheritAttrs: false,\n props: {\n asChild: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(MenuContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisMenuTrigger must be inside an IrisMenu')\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n ctx.setOpen(!ctx.open.value)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n ctx.setOpen(true)\n }\n }\n\n const captureRef = (el: unknown) => {\n ctx.triggerRef.value = (el ?? null) as HTMLElement | null\n }\n\n return () => {\n const triggerProps: Record<string, unknown> = {\n 'aria-haspopup': 'menu',\n 'aria-expanded': ctx.open.value ? 'true' : 'false',\n 'aria-controls': ctx.contentId,\n 'data-state': ctx.open.value ? 'open' : 'closed',\n onClick,\n onKeydown: onKeyDown,\n ref: captureRef,\n }\n\n if (props.asChild) {\n const root = findFirstElement(slots.default?.())\n if (!root) {\n if (typeof process === 'undefined' || process.env?.NODE_ENV !== 'production') {\n console.warn('[iris-ui] IrisMenuTrigger: as-child requires a single child element')\n }\n return null\n }\n const merged = mergeSlotProps(\n { ...triggerProps, ...attrs },\n (root.props ?? {}) as Record<string, unknown>,\n )\n return h(root.type as string, merged, root.children as unknown as VNode[])\n }\n\n return h('button', { type: 'button', ...attrs, ...triggerProps }, slots.default?.())\n }\n },\n})\n","import { Teleport, defineComponent, h, inject, nextTick, ref, watch, type PropType } from 'vue'\nimport { nextEnabledIndex } from '@iris-ui-kit/core'\nimport { useFloating } from '../floating/useFloating'\nimport { useDismiss } from '../floating/useDismiss'\nimport { MenuContextKey } from './context'\n\n/**\n * The menu surface. Closes on Escape or outside pointerdown (the dismiss\n * listener excludes both the trigger and the content tree, so nested\n * submenus inside the content do not register as \"outside\"). Arrow key\n * navigation moves focus among `[role=\"menuitem\"]` descendants — which\n * includes both `IrisMenuItem`s and the trigger of any `IrisMenuSub`.\n */\nexport const IrisMenuContent = defineComponent({\n name: 'IrisMenuContent',\n inheritAttrs: false,\n props: {\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const ctx = inject(MenuContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisMenuContent must be inside an IrisMenu')\n }\n\n const innerRef = ref<HTMLElement | null>(null)\n watch(innerRef, (el) => {\n ctx.contentRef.value = el\n })\n\n const { floatingStyles } = useFloating({\n anchor: ctx.triggerRef,\n floating: innerRef,\n open: ctx.open,\n placement: ctx.placement,\n offset: ctx.offset,\n })\n\n useDismiss({\n enabled: ctx.open,\n exclude: [ctx.triggerRef, innerRef],\n onDismiss: () => ctx.setOpen(false),\n })\n\n watch(ctx.open, async (open) => {\n if (open) {\n await nextTick()\n const items = innerRef.value?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')\n items?.[0]?.focus()\n } else {\n ctx.triggerRef.value?.focus?.()\n }\n })\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!ctx.open.value) return\n const items = Array.from(\n innerRef.value?.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"])',\n ) ?? [],\n )\n if (items.length === 0) return\n const current = document.activeElement as HTMLElement | null\n const index = current ? items.indexOf(current) : -1\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault()\n items[nextEnabledIndex(index, 1, items.length)]?.focus()\n break\n }\n case 'ArrowUp': {\n event.preventDefault()\n items[nextEnabledIndex(index, -1, items.length)]?.focus()\n break\n }\n case 'Home':\n event.preventDefault()\n items[0]?.focus()\n break\n case 'End':\n event.preventDefault()\n items[items.length - 1]?.focus()\n break\n case 'Tab':\n ctx.setOpen(false)\n break\n }\n }\n\n return () => {\n if (!ctx.open.value) return null\n const node = h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n innerRef.value = (el ?? null) as HTMLElement | null\n },\n id: ctx.contentId,\n role: 'menu',\n tabindex: -1,\n 'data-iris-menu': '',\n 'data-state': 'open',\n onKeydown: onKeyDown,\n style: {\n ...floatingStyles.value,\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md)',\n padding: 'var(--iris-padding-sm)',\n boxShadow: '0 8px 24px -8px rgba(0, 0, 0, 0.16), 0 4px 8px -2px rgba(0, 0, 0, 0.08)',\n minWidth: '180px',\n outline: 'none',\n zIndex: '1000',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n if (props.teleport === false) return node\n return h(Teleport, { to: props.teleport as string | HTMLElement }, [node])\n }\n },\n})\n","import { defineComponent, h, inject, ref } from 'vue'\nimport { MenuContextKey } from './context'\n\n/**\n * Leaf menu item. Selecting fires `select` and closes the **root** menu\n * (`closeRoot`), so picking from a deeply nested branch collapses the entire\n * tree at once.\n */\nexport const IrisMenuItem = defineComponent({\n name: 'IrisMenuItem',\n inheritAttrs: false,\n props: {\n disabled: { type: Boolean, default: false },\n },\n emits: {\n select: (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const ctx = inject(MenuContextKey)\n if (!ctx) {\n throw new Error('[iris-ui] IrisMenuItem must be inside an IrisMenuContent')\n }\n const hovered = ref(false)\n\n const fire = (event: Event) => {\n if (props.disabled) return\n emit('select', event)\n ctx.closeRoot()\n }\n\n const onClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n fire(event)\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n fire(event)\n }\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'menuitem',\n tabindex: props.disabled ? -1 : 0,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-menu-item': '',\n 'data-disabled': props.disabled ? '' : undefined,\n onClick,\n onKeydown: onKeyDown,\n onPointerenter: () => (hovered.value = true),\n onPointerleave: () => (hovered.value = false),\n onFocus: () => (hovered.value = true),\n onBlur: () => (hovered.value = false),\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n padding: '6px var(--iris-padding-md)',\n borderRadius: 'var(--iris-radius-sm)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.5' : '1',\n background:\n hovered.value && !props.disabled ? 'var(--iris-surface-hover)' : 'transparent',\n color: 'inherit',\n outline: 'none',\n fontSize: '14px',\n transition: 'background-color 80ms ease',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n\n/** Visual divider between item groups. */\nexport const IrisMenuSeparator = defineComponent({\n name: 'IrisMenuSeparator',\n inheritAttrs: false,\n setup(_, { attrs }) {\n return () =>\n h('div', {\n ...attrs,\n role: 'separator',\n 'data-iris-menu-separator': '',\n style: {\n height: '1px',\n background: 'var(--iris-border)',\n margin: '4px 0',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n })\n },\n})\n","import {\n Teleport,\n computed,\n defineComponent,\n h,\n inject,\n onScopeDispose,\n provide,\n ref,\n watch,\n type PropType,\n} from 'vue'\nimport { useFloating } from '../floating/useFloating'\nimport { MenuContextKey } from './context'\n\nconst HOVER_OPEN_DELAY = 100\n\n/**\n * Nested submenu. Renders its own trigger (as a `[role=\"menuitem\"]` inside\n * the parent menu) and its own floating content panel. Opens on hover (with\n * a small delay to avoid accidental triggers when the pointer flies past)\n * and on `ArrowRight` / `Enter`; closes on `ArrowLeft` (restoring focus to\n * its own trigger).\n *\n * Inherits `closeRoot` from the surrounding `IrisMenu` so picking a leaf\n * collapses the whole tree.\n *\n * @example\n * <IrisMenuContent>\n * <IrisMenuItem @select=\"copy\">Copy</IrisMenuItem>\n * <IrisMenuSub label=\"More…\">\n * <IrisMenuItem @select=\"paste\">Paste</IrisMenuItem>\n * <IrisMenuItem @select=\"pasteSpecial\">Paste special…</IrisMenuItem>\n * </IrisMenuSub>\n * </IrisMenuContent>\n */\nexport const IrisMenuSub = defineComponent({\n name: 'IrisMenuSub',\n inheritAttrs: false,\n props: {\n label: { type: String, default: '' },\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n },\n setup(props, { slots, attrs }) {\n const parentCtx = inject(MenuContextKey)\n if (!parentCtx) {\n throw new Error('[iris-ui] IrisMenuSub must be inside an IrisMenu')\n }\n\n const open = ref(false)\n const triggerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n let openTimer: ReturnType<typeof setTimeout> | null = null\n\n const clearTimer = () => {\n if (openTimer) {\n clearTimeout(openTimer)\n openTimer = null\n }\n }\n\n const scheduleOpen = () => {\n clearTimer()\n openTimer = setTimeout(() => {\n open.value = true\n openTimer = null\n }, HOVER_OPEN_DELAY)\n }\n\n onScopeDispose(clearTimer)\n\n const { floatingStyles } = useFloating({\n anchor: triggerRef,\n floating: contentRef,\n open,\n placement: 'right-start',\n offset: -4,\n })\n\n // Provide a nested context to descendants so deeper `IrisMenuSub` /\n // `IrisMenuItem` work transparently. `closeRoot` continues to point at\n // the *root* menu, so any leaf still closes the entire tree.\n provide(MenuContextKey, {\n open: computed(() => open.value),\n setOpen: (v) => (open.value = v),\n triggerRef,\n contentRef,\n contentId: '',\n placement: 'right-start',\n offset: 0,\n closeRoot: parentCtx.closeRoot,\n })\n\n const onTriggerPointerEnter = () => scheduleOpen()\n const onTriggerPointerLeave = () => clearTimer()\n const onTriggerClick = (event: MouseEvent) => {\n if (event.defaultPrevented) return\n clearTimer()\n open.value = !open.value\n }\n const onTriggerKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n open.value = true\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault()\n open.value = false\n }\n }\n\n watch(open, async (next) => {\n if (next) {\n // Focus first item in submenu.\n await new Promise((r) => setTimeout(r, 0))\n const first = contentRef.value?.querySelector<HTMLElement>('[role=\"menuitem\"]')\n first?.focus()\n } else {\n // Return focus to this submenu's trigger.\n triggerRef.value?.focus?.()\n }\n })\n\n const onContentKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n const items = Array.from(\n contentRef.value?.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"])',\n ) ?? [],\n )\n if (items.length === 0) return\n const index = items.indexOf(document.activeElement as HTMLElement)\n const next =\n event.key === 'ArrowDown'\n ? index < 0\n ? 0\n : (index + 1) % items.length\n : index <= 0\n ? items.length - 1\n : index - 1\n items[next]?.focus()\n } else if (event.key === 'ArrowLeft' || event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n open.value = false\n } else if (event.key === 'Tab') {\n parentCtx.closeRoot()\n }\n }\n\n return () => {\n const trigger = h(\n 'div',\n {\n ref: (el: unknown) => {\n triggerRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'menuitem',\n 'aria-haspopup': 'menu',\n 'aria-expanded': open.value ? 'true' : 'false',\n tabindex: 0,\n 'data-iris-menu-sub-trigger': '',\n 'data-state': open.value ? 'open' : 'closed',\n onPointerenter: onTriggerPointerEnter,\n onPointerleave: onTriggerPointerLeave,\n onClick: onTriggerClick,\n onKeydown: onTriggerKeyDown,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 'var(--iris-gap-sm)',\n padding: '6px var(--iris-padding-md)',\n borderRadius: 'var(--iris-radius-sm)',\n cursor: 'pointer',\n outline: 'none',\n fontSize: '14px',\n background: open.value ? 'var(--iris-surface-hover)' : 'transparent',\n },\n },\n [\n h('span', null, props.label || slots.label?.()),\n h('svg', { 'aria-hidden': 'true', viewBox: '0 0 16 16', width: '12', height: '12' }, [\n h('path', {\n d: 'M6 4l4 4-4 4',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': '1.5',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n }),\n ]),\n ],\n )\n\n const content = open.value\n ? h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n contentRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'menu',\n tabindex: -1,\n 'data-iris-menu-sub': '',\n 'data-state': 'open',\n onKeydown: onContentKeyDown,\n onPointerenter: clearTimer,\n style: {\n ...floatingStyles.value,\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md)',\n padding: 'var(--iris-padding-sm)',\n boxShadow:\n '0 8px 24px -8px rgba(0, 0, 0, 0.16), 0 4px 8px -2px rgba(0, 0, 0, 0.08)',\n minWidth: '180px',\n outline: 'none',\n zIndex: '1001',\n },\n },\n slots.default?.(),\n )\n : null\n\n const portal =\n content && props.teleport !== false\n ? h(Teleport, { to: props.teleport as string | HTMLElement }, [content])\n : content\n\n return [trigger, portal]\n }\n },\n})\n","import { createStore, generateId } from '@iris-ui-kit/core'\n\nexport type IrisToastVariant = 'default' | 'success' | 'danger' | 'warning' | 'info'\n\nexport interface IrisToastInput {\n /** Stable id; if reused, the existing toast is updated in place. */\n id?: string\n title?: string\n description?: string\n variant?: IrisToastVariant\n /** Auto-dismiss duration in ms. `0` or `Infinity` disables auto-dismiss. */\n duration?: number\n /** Optional action label + handler. */\n action?: { label: string; onClick: () => void }\n}\n\nexport interface IrisToast extends Required<Omit<IrisToastInput, 'action'>> {\n action: IrisToastInput['action']\n createdAt: number\n}\n\nconst DEFAULT_DURATION = 4000\n\n/**\n * Module-level singleton toast store. The store is intentionally global so\n * that `useToast()` from any component reaches the same queue — calls don't\n * need a context provider.\n */\nconst store = createStore<IrisToast[]>([])\n\n/** Subscribe to changes. */\nexport const subscribeToasts = (listener: (toasts: IrisToast[]) => void) =>\n store.subscribe(listener)\n\n/** Read current toasts. */\nexport const getToasts = () => store.getState()\n\n/**\n * Push a toast onto the queue. If an `id` is supplied and matches an existing\n * toast, the entry is replaced in place (and its timer reset).\n *\n * Returns the toast id so the caller can `dismiss(id)` later.\n */\nexport function pushToast(input: IrisToastInput): string {\n const id = input.id ?? generateId('iris-toast')\n const next: IrisToast = {\n id,\n title: input.title ?? '',\n description: input.description ?? '',\n variant: input.variant ?? 'default',\n duration: input.duration ?? DEFAULT_DURATION,\n action: input.action,\n createdAt: Date.now(),\n }\n store.setState((prev) => {\n const idx = prev.findIndex((t) => t.id === id)\n if (idx >= 0) {\n const copy = [...prev]\n copy[idx] = next\n return copy\n }\n return [...prev, next]\n })\n return id\n}\n\n/** Remove a toast by id. */\nexport function dismissToast(id: string): void {\n store.setState((prev) => prev.filter((t) => t.id !== id))\n}\n\n/** Remove all toasts. */\nexport function clearToasts(): void {\n store.setState([])\n}\n","import { clearToasts, dismissToast, pushToast, type IrisToastInput } from './store'\n\nexport interface UseToastReturn {\n /** Push a new toast (or replace by id). Returns the toast id. */\n push: (input: IrisToastInput) => string\n /** Convenience: push with variant pre-set. */\n success: (input: Omit<IrisToastInput, 'variant'>) => string\n error: (input: Omit<IrisToastInput, 'variant'>) => string\n warning: (input: Omit<IrisToastInput, 'variant'>) => string\n info: (input: Omit<IrisToastInput, 'variant'>) => string\n /** Remove a toast by id. */\n dismiss: (id: string) => void\n /** Remove all toasts. */\n clear: () => void\n}\n\n/**\n * Composable for the global toast queue. Backed by a module-level singleton\n * store, so it works **without** a surrounding `<ToastProvider>` — but the\n * page must mount exactly one `<IrisToastViewport>` somewhere for toasts to\n * actually be visible.\n *\n * @example\n * const toast = useToast()\n * toast.success({ title: 'Saved', description: 'Your changes are live.' })\n * toast.error({ title: 'Failed', duration: 6000 })\n */\nexport function useToast(): UseToastReturn {\n return {\n push: pushToast,\n success: (input) => pushToast({ ...input, variant: 'success' }),\n error: (input) => pushToast({ ...input, variant: 'danger' }),\n warning: (input) => pushToast({ ...input, variant: 'warning' }),\n info: (input) => pushToast({ ...input, variant: 'info' }),\n dismiss: dismissToast,\n clear: clearToasts,\n }\n}\n","import {\n Teleport,\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport { createAutoDismiss, type AutoDismiss } from '@iris-ui-kit/core'\nimport {\n dismissToast,\n getToasts,\n subscribeToasts,\n type IrisToast,\n type IrisToastVariant,\n} from './store'\nimport { useI18n } from '../../i18n'\n\nexport type IrisToastPosition =\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n\nconst VARIANT_BORDER: Record<IrisToastVariant, string> = {\n default: 'var(--iris-border)',\n success: 'var(--iris-success)',\n danger: 'var(--iris-danger)',\n warning: 'var(--iris-warning)',\n info: 'var(--iris-primary)',\n}\n\nconst VARIANT_ACCENT: Record<IrisToastVariant, string> = {\n default: 'var(--iris-muted)',\n success: 'var(--iris-success)',\n danger: 'var(--iris-danger)',\n warning: 'var(--iris-warning)',\n info: 'var(--iris-primary)',\n}\n\n/** Horizontal swipe distance (px) past which a release dismisses the toast. */\nconst SWIPE_DISMISS_PX = 80\n\n/**\n * Renders the queued toasts. Mount exactly **one** of these per page —\n * typically near the root of the application layout. The viewport subscribes\n * to the module-level toast store; toasts pushed via `useToast()` from any\n * component appear here.\n *\n * Auto-dismiss is managed per toast via one core `createAutoDismiss` each\n * (paused while the pointer is over the viewport). Manual dismiss is via the\n * close button.\n */\nexport const IrisToastViewport = defineComponent({\n name: 'IrisToastViewport',\n inheritAttrs: false,\n props: {\n position: { type: String as PropType<IrisToastPosition>, default: 'top-right' },\n teleport: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: 'body',\n },\n /** Portal target (cross-framework alias for `teleport`). Overrides `teleport` when set. */\n portalTarget: {\n type: [String, Object, Boolean] as PropType<string | HTMLElement | false>,\n default: undefined,\n },\n /** Maximum simultaneous toasts; older entries are evicted when exceeded. */\n max: { type: Number, default: 5 },\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n const toasts = ref<IrisToast[]>(getToasts())\n const hovered = ref(false)\n // One core `createAutoDismiss` per live toast keyed by id — the after-machine\n // primitive replaces the hand-rolled setTimeout Map. start() on add, pause()\n // all on hover, resume() on un-hover, cancel() on remove/unmount.\n const dismissers = new Map<string, AutoDismiss>()\n\n // Swipe-to-dismiss: one toast is dragged at a time; past the threshold on\n // release it dismisses, otherwise it snaps back. The decision logic reads a\n // plain closure object (synchronous — survives event batching); the reactive\n // ref drives the visual offset.\n const drag = ref<{ id: string; dx: number } | null>(null)\n let dragLogic: { id: string; startX: number; dx: number } | null = null\n\n const onToastPointerDown = (toast: IrisToast, e: PointerEvent) => {\n dragLogic = { id: toast.id, startX: e.clientX, dx: 0 }\n // Pointer capture keeps move/up on this element; unsupported in jsdom.\n try {\n ;(e.currentTarget as Element | null)?.setPointerCapture?.(e.pointerId)\n } catch {\n /* no-op */\n }\n drag.value = { id: toast.id, dx: 0 }\n }\n const onToastPointerMove = (toast: IrisToast, e: PointerEvent) => {\n const d = dragLogic\n if (d && d.id === toast.id) {\n d.dx = e.clientX - d.startX\n drag.value = { id: toast.id, dx: d.dx }\n }\n }\n const onToastPointerUp = (toast: IrisToast) => {\n const d = dragLogic\n if (d && d.id === toast.id) {\n if (Math.abs(d.dx) > SWIPE_DISMISS_PX) dismissToast(toast.id)\n dragLogic = null\n drag.value = null\n }\n }\n\n const cancelDismisser = (id: string) => {\n const d = dismissers.get(id)\n if (d) {\n d.cancel()\n dismissers.delete(id)\n }\n }\n\n // Create + arm an auto-dismiss for a toast. The remaining time accounts for\n // any wall-clock already elapsed since `createdAt` (preserving the exact\n // observable timing the setTimeout Map had). duration 0/Infinity = persistent.\n const armDismisser = (toast: IrisToast) => {\n if (!toast.duration || toast.duration === Infinity) return\n const remaining = Math.max(0, toast.createdAt + toast.duration - Date.now())\n const dismisser = createAutoDismiss({\n duration: remaining,\n onDismiss: () => {\n dismissers.delete(toast.id)\n dismissToast(toast.id)\n },\n })\n dismissers.set(toast.id, dismisser)\n dismisser.start()\n }\n\n // Add dismissers for new toasts, cancel them for removed ones. While hovered,\n // newly-added toasts are created paused (started then paused) so they don't\n // tick until the pointer leaves.\n const syncDismissers = () => {\n const liveIds = new Set(toasts.value.map((t) => t.id))\n for (const id of [...dismissers.keys()]) {\n if (!liveIds.has(id)) cancelDismisser(id)\n }\n for (const toast of toasts.value) {\n if (!dismissers.has(toast.id)) {\n armDismisser(toast)\n if (hovered.value) dismissers.get(toast.id)?.pause()\n }\n }\n }\n\n // Keep dismissers in lock-step with the (max-trimmed) toast list.\n watch(toasts, syncDismissers)\n\n // When hover toggles, pause/resume every live dismisser wholesale.\n watch(hovered, (isHovered) => {\n if (isHovered) {\n for (const d of dismissers.values()) d.pause()\n } else {\n for (const d of dismissers.values()) d.resume()\n }\n })\n\n let unsubscribe: (() => void) | null = null\n\n onMounted(() => {\n syncDismissers()\n unsubscribe = subscribeToasts((next) => {\n // Evict oldest if exceeding `max`.\n let trimmed = next\n if (next.length > props.max) {\n trimmed = next.slice(-props.max)\n }\n toasts.value = trimmed\n })\n })\n\n onBeforeUnmount(() => {\n for (const d of dismissers.values()) d.cancel()\n dismissers.clear()\n unsubscribe?.()\n })\n\n const onPointerEnter = () => {\n hovered.value = true\n }\n const onPointerLeave = () => {\n hovered.value = false\n }\n\n const positionStyle = (): Record<string, string> => {\n const base: Record<string, string> = {\n position: 'fixed',\n zIndex: '1400',\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--iris-gap-md)',\n // `padding` is the fallback; the per-side longhands add safe-area insets\n // so toasts clear the notch / home indicator on mobile webviews\n // (Cordova). On engines without env() the longhands are invalid and the\n // shorthand applies. (Host must set\n // <meta name=\"viewport\" content=\"...,viewport-fit=cover\">.)\n padding: '16px',\n paddingTop: 'max(16px, env(safe-area-inset-top))',\n paddingRight: 'max(16px, env(safe-area-inset-right))',\n paddingBottom: 'max(16px, env(safe-area-inset-bottom))',\n paddingLeft: 'max(16px, env(safe-area-inset-left))',\n maxWidth: '420px',\n width: '100%',\n pointerEvents: 'none',\n }\n const top = props.position.startsWith('top')\n const bottom = props.position.startsWith('bottom')\n const left = props.position.endsWith('-left')\n const right = props.position.endsWith('-right')\n const center = props.position.endsWith('-center')\n if (top) base.top = '0'\n if (bottom) base.bottom = '0'\n if (left) base.left = '0'\n if (right) base.right = '0'\n if (center) {\n base.left = '50%'\n base.transform = 'translateX(-50%)'\n }\n return base\n }\n\n const renderToast = (toast: IrisToast): VNode => {\n const isDragging = drag.value?.id === toast.id\n const dx = isDragging ? (drag.value?.dx ?? 0) : 0\n return h(\n 'div',\n {\n key: toast.id,\n role: toast.variant === 'danger' ? 'alert' : 'status',\n 'aria-live': toast.variant === 'danger' ? 'assertive' : 'polite',\n 'data-iris-toast': '',\n 'data-variant': toast.variant,\n onPointerdown: (e: PointerEvent) => onToastPointerDown(toast, e),\n onPointermove: (e: PointerEvent) => onToastPointerMove(toast, e),\n onPointerup: () => onToastPointerUp(toast),\n style: {\n pointerEvents: 'auto',\n transform: dx ? `translateX(${dx}px)` : undefined,\n opacity: isDragging ? String(Math.max(0.3, 1 - Math.abs(dx) / 250)) : undefined,\n transition: isDragging ? 'none' : 'transform 150ms ease, opacity 150ms ease',\n touchAction: 'pan-y',\n cursor: 'grab',\n display: 'flex',\n alignItems: 'flex-start',\n gap: 'var(--iris-gap-md)',\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: `1px solid ${VARIANT_BORDER[toast.variant]}`,\n borderInlineStart: `4px solid ${VARIANT_ACCENT[toast.variant]}`,\n borderRadius: 'var(--iris-radius-md)',\n padding: 'var(--iris-padding-md)',\n boxShadow: '0 8px 24px -8px rgba(0, 0, 0, 0.16), 0 4px 8px -2px rgba(0, 0, 0, 0.08)',\n minWidth: '280px',\n fontSize: '14px',\n },\n },\n [\n h('div', { style: { flex: '1', minWidth: '0' } }, [\n toast.title && h('div', { style: { fontWeight: '600' } }, toast.title),\n toast.description &&\n h(\n 'div',\n { style: { color: 'var(--iris-muted)', fontSize: '13px', marginTop: '2px' } },\n toast.description,\n ),\n ]),\n toast.action &&\n h(\n 'button',\n {\n type: 'button',\n onClick: () => {\n toast.action!.onClick()\n dismissToast(toast.id)\n },\n style: {\n background: 'transparent',\n border: 'none',\n color: VARIANT_ACCENT[toast.variant],\n fontWeight: '600',\n cursor: 'pointer',\n padding: '4px 8px',\n fontSize: '13px',\n fontFamily: 'inherit',\n },\n },\n toast.action.label,\n ),\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': t('toast.dismiss'),\n onClick: () => dismissToast(toast.id),\n style: {\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n padding: '4px',\n color: 'var(--iris-muted)',\n lineHeight: '1',\n fontFamily: 'inherit',\n fontSize: '16px',\n },\n },\n '×',\n ),\n ],\n )\n }\n\n return () => {\n const viewport = h(\n 'div',\n {\n ...attrs,\n 'data-iris-toast-viewport': '',\n 'data-position': props.position,\n onPointerenter: onPointerEnter,\n onPointerleave: onPointerLeave,\n style: {\n ...positionStyle(),\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n toasts.value.map(renderToast),\n )\n const portalDest = props.portalTarget !== undefined ? props.portalTarget : props.teleport\n if (portalDest === false) return viewport\n return h(Teleport, { to: portalDest as string | HTMLElement }, [viewport])\n }\n },\n})\n","import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n ref,\n shallowRef,\n watch,\n type PropType,\n type VNode,\n} from 'vue'\nimport { createTreeSelection, nextEnabledIndex, type TreeSelectionNode } from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\nimport { useDataState } from '../../motion'\nimport type { IrisTreeNode, IrisTreeSelectionMode } from './types'\n\ninterface FlatNode {\n node: IrisTreeNode\n depth: number\n parentId: string | null\n hasChildren: boolean\n}\n\nconst TREE_STATE_STYLE: Record<string, string> = {\n padding: '12px',\n textAlign: 'center',\n color: 'var(--iris-muted)',\n fontSize: '14px',\n}\n\n/**\n * Tree control. Renders a hierarchy of `IrisTreeNode`s with expand/collapse,\n * single/multi selection, optional lazy-loaded children, and WAI-ARIA Tree\n * pattern semantics:\n *\n * - Root has `role=\"tree\"`; each node has `role=\"treeitem\"`.\n * - Roving tabindex (only the active node has `tabindex=0`).\n * - Arrow keys: ↓/↑ to move, → to expand (or move into first child),\n * ← to collapse (or move to parent), Enter/Space to select.\n *\n * Selection model is decoupled from expansion — a node can be expanded\n * without being selected, and vice versa.\n *\n * Async lifecycle: pass `loading` / `error` (and empty `nodes`) to render the\n * animated loading / error / empty state in place of the tree (customize via\n * the `#loading` / `#error` / `#empty` slots). Per-node `loadChildren` lazy\n * loading is independent of this top-level state.\n *\n * @example\n * <IrisTree\n * :nodes=\"files\"\n * v-model:expanded=\"expanded\"\n * v-model:selected=\"selected\"\n * selection-mode=\"single\"\n * />\n */\nexport const IrisTree = defineComponent({\n name: 'IrisTree',\n inheritAttrs: false,\n props: {\n nodes: { type: Array as PropType<IrisTreeNode[]>, required: true },\n /** Controlled expanded ids. */\n expanded: { type: Array as PropType<string[]>, default: undefined },\n defaultExpanded: { type: Array as PropType<string[]>, default: () => [] },\n /** Controlled selected ids. */\n selected: { type: Array as PropType<string[]>, default: undefined },\n defaultSelected: { type: Array as PropType<string[]>, default: () => [] },\n selectionMode: { type: String as PropType<IrisTreeSelectionMode>, default: 'single' },\n /**\n * Show a checkbox per node with parent/child cascade + indeterminate\n * (tri-state) propagation, independent of `selectionMode`. Driven by the\n * framework-agnostic `createTreeSelection`.\n */\n checkable: { type: Boolean, default: false },\n /** Initially checked node ids (uncontrolled; reconciled through the cascade). */\n defaultChecked: { type: Array as PropType<string[]>, default: undefined },\n /** ARIA label. */\n ariaLabel: { type: String, default: undefined },\n /** Show the loading state instead of nodes. */\n loading: { type: Boolean, default: false },\n /** Show the error state instead of nodes (takes precedence over loading). */\n error: { type: Boolean, default: false },\n },\n emits: {\n 'update:expanded': (_value: string[]) => true,\n 'update:selected': (_value: string[]) => true,\n expand: (_id: string) => true,\n collapse: (_id: string) => true,\n select: (_id: string, _node: IrisTreeNode) => true,\n /** Notified with the fully-reconciled checked node ids on every check change. */\n checkedChange: (_checked: string[]) => true,\n },\n setup(props, { attrs, emit, slots }) {\n const { t } = useI18n()\n const { state, isContent, stateKey, stateProps } = useDataState(() => ({\n loading: props.loading,\n error: props.error,\n empty: props.nodes.length === 0,\n }))\n\n // Lazily-loaded children cache, keyed by node id.\n const lazyCache = ref<Map<string, IrisTreeNode[]>>(new Map())\n // Set of ids currently loading children.\n const loadingIds = ref<Set<string>>(new Set())\n // Set of ids that errored on load.\n const errorIds = ref<Set<string>>(new Set())\n\n const internalExpanded = ref<string[]>(props.defaultExpanded)\n const internalSelected = ref<string[]>(props.defaultSelected)\n\n const expandedIds = computed<Set<string>>(() => {\n const source = props.expanded ?? internalExpanded.value\n return new Set(source)\n })\n const selectedIds = computed<Set<string>>(() => {\n const source = props.selected ?? internalSelected.value\n return new Set(source)\n })\n\n const setExpanded = (next: string[]) => {\n if (props.expanded === undefined) internalExpanded.value = next\n emit('update:expanded', next)\n }\n const setSelected = (next: string[]) => {\n if (props.selected === undefined) internalSelected.value = next\n emit('update:selected', next)\n }\n\n const childrenOf = (node: IrisTreeNode): IrisTreeNode[] | null => {\n if (node.children && node.children.length > 0) return node.children\n const cached = lazyCache.value.get(node.id)\n if (cached) return cached\n return null\n }\n\n const hasChildrenFn = (node: IrisTreeNode): boolean => {\n if (node.isLeaf) return false\n if (node.children && node.children.length > 0) return true\n if (lazyCache.value.has(node.id)) return (lazyCache.value.get(node.id)?.length ?? 0) > 0\n return !!node.loadChildren\n }\n\n /** Flatten the visible tree into a linear sequence for keyboard nav. */\n const flat = computed<FlatNode[]>(() => {\n const out: FlatNode[] = []\n const walk = (nodes: IrisTreeNode[], depth: number, parentId: string | null) => {\n for (const node of nodes) {\n out.push({ node, depth, parentId, hasChildren: hasChildrenFn(node) })\n if (expandedIds.value.has(node.id)) {\n const kids = childrenOf(node)\n if (kids) walk(kids, depth + 1, node.id)\n }\n }\n }\n walk(props.nodes, 0, null)\n return out\n })\n\n // Checkable mode: flatten the FULL tree (every node, not just the visible\n // ones) into `{ key, parentKey, disabled }` so the cascade is correct even\n // for collapsed branches, and drive it with the core `createTreeSelection`.\n const checkNodes = computed<TreeSelectionNode[]>(() => {\n const out: TreeSelectionNode[] = []\n const walk = (nodes: IrisTreeNode[], parentKey: string | undefined) => {\n for (const node of nodes) {\n out.push({ key: node.id, parentKey, disabled: node.disabled })\n const kids = node.children ?? lazyCache.value.get(node.id)\n if (kids && kids.length > 0) walk(kids, node.id)\n }\n }\n walk(props.nodes, undefined)\n return out\n })\n\n // Rebuild the model whenever the tree shape changes; `defaultChecked`\n // re-seeds then. A `shallowRef` mirrors the live checked set so the render\n // function re-runs on every check change (matching the `IrisTransfer`\n // store-binding pattern).\n let checkModel = createTreeSelection({\n nodes: checkNodes.value,\n defaultChecked: props.defaultChecked,\n onChange: (keys) => emit('checkedChange', keys),\n })\n const checkedKeys = shallowRef<string[]>(checkModel.getChecked())\n let unsubscribe = checkModel.selection.store.subscribe((keys) => {\n checkedKeys.value = keys\n })\n watch([checkNodes, () => props.defaultChecked], () => {\n unsubscribe()\n checkModel = createTreeSelection({\n nodes: checkNodes.value,\n defaultChecked: props.defaultChecked,\n onChange: (keys) => emit('checkedChange', keys),\n })\n checkedKeys.value = checkModel.getChecked()\n unsubscribe = checkModel.selection.store.subscribe((keys) => {\n checkedKeys.value = keys\n })\n })\n onBeforeUnmount(() => unsubscribe())\n\n const activeId = ref<string | null>(flat.value[0]?.node.id ?? null)\n watch(flat, (next) => {\n if (!next.find((f) => f.node.id === activeId.value)) {\n activeId.value = next[0]?.node.id ?? null\n }\n })\n\n async function expandNode(node: IrisTreeNode) {\n if (!hasChildrenFn(node)) return\n const nextSet = new Set(expandedIds.value)\n nextSet.add(node.id)\n setExpanded(Array.from(nextSet))\n emit('expand', node.id)\n\n // Trigger lazy load if needed.\n if (\n node.loadChildren &&\n !lazyCache.value.has(node.id) &&\n (!node.children || node.children.length === 0)\n ) {\n loadingIds.value.add(node.id)\n loadingIds.value = new Set(loadingIds.value)\n try {\n const kids = await node.loadChildren()\n lazyCache.value.set(node.id, kids)\n lazyCache.value = new Map(lazyCache.value)\n } catch {\n errorIds.value.add(node.id)\n errorIds.value = new Set(errorIds.value)\n // Collapse on failure.\n const reset = new Set(expandedIds.value)\n reset.delete(node.id)\n setExpanded(Array.from(reset))\n } finally {\n loadingIds.value.delete(node.id)\n loadingIds.value = new Set(loadingIds.value)\n }\n }\n }\n\n function collapseNode(node: IrisTreeNode) {\n const nextSet = new Set(expandedIds.value)\n nextSet.delete(node.id)\n setExpanded(Array.from(nextSet))\n emit('collapse', node.id)\n }\n\n function toggleNode(node: IrisTreeNode) {\n if (expandedIds.value.has(node.id)) collapseNode(node)\n else void expandNode(node)\n }\n\n function selectNode(node: IrisTreeNode) {\n if (node.disabled) return\n if (props.selectionMode === 'none') return\n const current = selectedIds.value\n if (props.selectionMode === 'single') {\n setSelected(current.has(node.id) ? [] : [node.id])\n } else {\n const next = new Set(current)\n if (next.has(node.id)) next.delete(node.id)\n else next.add(node.id)\n setSelected(Array.from(next))\n }\n emit('select', node.id, node)\n }\n\n function moveActive(delta: 1 | -1) {\n const list = flat.value\n if (list.length === 0) return\n const idx = list.findIndex((f) => f.node.id === activeId.value)\n const next = nextEnabledIndex(idx, delta, list.length, () => true, false)\n activeId.value = list[next]?.node.id ?? null\n }\n\n function onKeyDown(event: KeyboardEvent, flatNode: FlatNode) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n moveActive(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n moveActive(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n if (flatNode.hasChildren) {\n if (expandedIds.value.has(flatNode.node.id)) moveActive(1)\n else void expandNode(flatNode.node)\n }\n break\n case 'ArrowLeft':\n event.preventDefault()\n if (expandedIds.value.has(flatNode.node.id)) {\n collapseNode(flatNode.node)\n } else if (flatNode.parentId) {\n activeId.value = flatNode.parentId\n }\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n selectNode(flatNode.node)\n break\n case 'Home':\n event.preventDefault()\n activeId.value = flat.value[0]?.node.id ?? null\n break\n case 'End':\n event.preventDefault()\n activeId.value = flat.value[flat.value.length - 1]?.node.id ?? null\n break\n }\n }\n\n const renderStateNode = () => {\n const content =\n state.value === 'error'\n ? slots.error\n ? slots.error()\n : t('tree.error')\n : state.value === 'loading'\n ? slots.loading\n ? slots.loading()\n : t('tree.loading')\n : slots.empty\n ? slots.empty()\n : t('tree.empty')\n return h(\n 'div',\n {\n key: stateKey.value,\n role: 'presentation',\n 'data-iris-tree-state': state.value,\n 'aria-live': 'polite',\n ...stateProps.value,\n style: TREE_STATE_STYLE,\n },\n content,\n )\n }\n\n const renderItems = (): VNode[] => {\n // Touch the live checked set so the render re-runs on every check change.\n void checkedKeys.value\n return flat.value.map((entry) => {\n const { node, depth, hasChildren } = entry\n const isExpanded = expandedIds.value.has(node.id)\n const isSelected = selectedIds.value.has(node.id)\n const isActive = activeId.value === node.id\n const isLoading = loadingIds.value.has(node.id)\n const isError = errorIds.value.has(node.id)\n\n const chevron = hasChildren\n ? h(\n 'span',\n {\n 'data-iris-tree-chevron': '',\n 'aria-hidden': 'true',\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n toggleNode(node)\n },\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '16px',\n height: '16px',\n cursor: 'pointer',\n color: 'var(--iris-muted)',\n transition: 'transform 120ms ease',\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n },\n },\n isLoading\n ? h(\n 'svg',\n {\n class: 'iris-button-spinner',\n viewBox: '0 0 24 24',\n width: '12',\n height: '12',\n fill: 'none',\n },\n [\n h('circle', {\n cx: '12',\n cy: '12',\n r: '10',\n stroke: 'currentColor',\n 'stroke-opacity': '0.25',\n 'stroke-width': '3',\n }),\n h('path', {\n d: 'M22 12a10 10 0 0 1-10 10',\n stroke: 'currentColor',\n 'stroke-width': '3',\n 'stroke-linecap': 'round',\n }),\n ],\n )\n : '▶',\n )\n : h('span', { 'aria-hidden': 'true', style: { width: '16px', display: 'inline-block' } })\n\n const disabled = !!node.disabled\n const checkbox = props.checkable\n ? h('input', {\n type: 'checkbox',\n 'data-iris-tree-checkbox': '',\n checked: checkModel.isChecked(node.id),\n 'aria-checked': checkModel.isIndeterminate(node.id)\n ? 'mixed'\n : checkModel.isChecked(node.id)\n ? 'true'\n : 'false',\n 'aria-label': node.label,\n disabled,\n // `indeterminate` is a DOM property, not an attribute — set it via a\n // function ref on the rendered <input> element.\n ref: (el: unknown) => {\n if (el instanceof HTMLInputElement) {\n el.indeterminate = checkModel.isIndeterminate(node.id)\n }\n },\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onChange: () => checkModel.toggle(node.id),\n style: { cursor: disabled ? 'not-allowed' : 'pointer' },\n })\n : null\n\n return h(\n 'div',\n {\n key: node.id,\n role: 'treeitem',\n tabindex: isActive ? 0 : -1,\n 'aria-level': depth + 1,\n 'aria-expanded': hasChildren ? (isExpanded ? 'true' : 'false') : undefined,\n 'aria-selected':\n props.selectionMode !== 'none' ? (isSelected ? 'true' : 'false') : undefined,\n 'aria-disabled': node.disabled ? 'true' : undefined,\n 'data-iris-tree-item': '',\n 'data-id': node.id,\n 'data-state': isExpanded ? 'open' : 'closed',\n 'data-loading': isLoading ? '' : undefined,\n 'data-error': isError ? '' : undefined,\n onClick: () => selectNode(node),\n onFocus: () => (activeId.value = node.id),\n onKeydown: (event: KeyboardEvent) => onKeyDown(event, entry),\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--iris-gap-sm)',\n padding: '4px 8px',\n paddingInlineStart: `${8 + depth * 16}px`,\n cursor: node.disabled ? 'not-allowed' : 'pointer',\n opacity: node.disabled ? '0.5' : '1',\n borderRadius: 'var(--iris-radius-sm)',\n background: isSelected\n ? 'var(--iris-primary)'\n : isActive\n ? 'var(--iris-surface-hover)'\n : 'transparent',\n color: isSelected ? 'var(--iris-primary-foreground)' : 'var(--iris-foreground)',\n outline: 'none',\n fontSize: '14px',\n },\n },\n [chevron, checkbox, h('span', { style: { flex: '1', minWidth: '0' } }, node.label)],\n )\n })\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'tree',\n 'aria-label': props.ariaLabel ?? t('tree.label'),\n 'aria-multiselectable': props.selectionMode === 'multi' ? 'true' : undefined,\n 'aria-busy': state.value === 'loading' ? 'true' : undefined,\n 'data-iris-tree': '',\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n isContent.value ? renderItems() : [renderStateNode()],\n )\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisTimelineVariant = 'default' | 'success' | 'warning' | 'danger' | 'info'\n\nexport interface IrisTimelineItem {\n /** Stable key; falls back to the index. */\n key?: string | number\n title?: string\n description?: string\n /** Timestamp / meta line shown above the title. */\n time?: string\n /** Dot variant (maps to a theme color). */\n variant?: IrisTimelineVariant\n /** Explicit dot color, overriding `variant`. */\n color?: string\n}\n\nconst VARIANT_COLOR: Record<IrisTimelineVariant, string> = {\n default: 'var(--iris-primary)',\n success: 'var(--iris-success, #16a34a)',\n warning: 'var(--iris-warning, #f59e0b)',\n danger: 'var(--iris-danger)',\n info: 'var(--iris-info, #0ea5e9)',\n}\n\n/**\n * Vertical event timeline: an ordered list of items, each with a colored dot,\n * a connector line (omitted on the last item), and time/title/description\n * content. Pass `#item` for custom content. Semantic `<ol>` for assistive\n * tech; RTL-safe via logical properties.\n */\nexport const IrisTimeline = defineComponent({\n name: 'IrisTimeline',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<IrisTimelineItem[]>, default: () => [] },\n },\n setup(props, { attrs, slots }) {\n return () =>\n h(\n 'ol',\n {\n ...attrs,\n 'data-iris-timeline': '',\n style: {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n props.items.map((item, i) => {\n const isLast = i === props.items.length - 1\n const variant = item.variant ?? 'default'\n const dotColor = item.color ?? VARIANT_COLOR[variant]\n return h(\n 'li',\n {\n key: item.key ?? i,\n 'data-iris-timeline-item': '',\n 'data-variant': variant,\n style: { display: 'flex', gap: '12px', position: 'relative' },\n },\n [\n h(\n 'div',\n {\n 'data-iris-timeline-marker': '',\n 'aria-hidden': 'true',\n style: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n alignSelf: 'stretch',\n },\n },\n [\n h('span', {\n 'data-iris-timeline-dot': '',\n style: {\n width: '12px',\n height: '12px',\n borderRadius: '50%',\n background: dotColor,\n flexShrink: '0',\n marginBlockStart: '4px',\n boxShadow: '0 0 0 3px var(--iris-background)',\n },\n }),\n !isLast\n ? h('span', {\n 'data-iris-timeline-line': '',\n style: {\n flex: '1',\n width: '2px',\n background: 'var(--iris-border)',\n marginBlockStart: '4px',\n },\n })\n : null,\n ],\n ),\n h(\n 'div',\n {\n 'data-iris-timeline-content': '',\n style: { paddingBlockEnd: isLast ? '0' : '16px', minWidth: '0' },\n },\n slots.item\n ? slots.item({ item, index: i })\n : [\n item.time != null\n ? h(\n 'div',\n {\n 'data-iris-timeline-time': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)' },\n },\n item.time,\n )\n : null,\n item.title != null\n ? h(\n 'div',\n {\n 'data-iris-timeline-title': '',\n style: { fontWeight: '600', color: 'var(--iris-foreground)' },\n },\n item.title,\n )\n : null,\n item.description != null\n ? h(\n 'div',\n {\n 'data-iris-timeline-desc': '',\n style: { fontSize: '14px', color: 'var(--iris-foreground)' },\n },\n item.description,\n )\n : null,\n ],\n ),\n ],\n )\n }),\n )\n },\n})\n","import { Comment, defineComponent, Fragment, h, onBeforeUnmount, ref, watch, type VNode } from 'vue'\nimport { useI18n } from '../../i18n'\n\nconst ARROW_BTN: Record<string, string> = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: '2',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n border: '1px solid var(--iris-border)',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n fontSize: '18px',\n lineHeight: '1',\n}\n\n/** True when the user has asked for reduced motion (SSR / jsdom safe). */\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n )\n}\n\n/** Flatten fragment slot output and drop comment placeholders (v-if etc.). */\nfunction flattenSlides(nodes: VNode[]): VNode[] {\n const out: VNode[] = []\n for (const n of nodes) {\n if (n && n.type === Fragment && Array.isArray(n.children)) {\n out.push(...flattenSlides(n.children as VNode[]))\n } else if (n && n.type !== Comment) {\n out.push(n)\n }\n }\n return out\n}\n\n/**\n * Slide carousel: shows one default-slot child at a time with prev/next\n * controls, indicator dots, and keyboard (←/→) navigation. `v-model` binds the\n * active index. a11y: region with `aria-roledescription=\"carousel\"`, per-slide\n * labelling, and a polite live region.\n */\nexport const IrisCarousel = defineComponent({\n name: 'IrisCarousel',\n inheritAttrs: false,\n props: {\n modelValue: { type: Number, default: 0 },\n /** Wrap around at the ends. */\n loop: { type: Boolean, default: true },\n /** Auto-advance slides. Disabled when the user prefers reduced motion. */\n autoplay: { type: Boolean, default: false },\n /** Autoplay interval in ms. */\n interval: { type: Number, default: 4000 },\n /** Pause autoplay while hovered. */\n pauseOnHover: { type: Boolean, default: true },\n showArrows: { type: Boolean, default: true },\n showIndicators: { type: Boolean, default: true },\n /** Accessible name for the carousel region. */\n ariaLabel: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_index: number) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n\n // Autoplay: an interval that advances the active slide, paused on\n // hover/focus and disabled under prefers-reduced-motion.\n const hovered = ref(false)\n const focusedWithin = ref(false)\n let timer: ReturnType<typeof setInterval> | undefined\n const stop = () => {\n if (timer) {\n clearInterval(timer)\n timer = undefined\n }\n }\n const start = () => {\n stop()\n if (!props.autoplay || prefersReducedMotion()) return\n timer = setInterval(() => {\n if ((props.pauseOnHover && hovered.value) || focusedWithin.value) return\n const list = flattenSlides(slots.default?.() ?? [])\n const count = list.length\n if (count <= 1) return\n const current = Math.min(Math.max(0, props.modelValue), Math.max(0, count - 1))\n emit('update:modelValue', (current + 1) % count)\n }, props.interval)\n }\n watch(() => [props.autoplay, props.interval], start, { immediate: true })\n onBeforeUnmount(stop)\n\n return () => {\n const slides = flattenSlides(slots.default?.() ?? [])\n const count = slides.length\n const current = Math.min(Math.max(0, props.modelValue), Math.max(0, count - 1))\n\n const goTo = (i: number) => {\n if (count === 0) return\n const next = props.loop\n ? ((i % count) + count) % count\n : Math.min(count - 1, Math.max(0, i))\n if (next === current) return\n emit('update:modelValue', next)\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n goTo(current - 1)\n } else if (e.key === 'ArrowRight') {\n e.preventDefault()\n goTo(current + 1)\n }\n }\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-carousel': '',\n role: 'group',\n 'aria-roledescription': 'carousel',\n 'aria-label': props.ariaLabel ?? t('carousel.label'),\n tabindex: 0,\n onKeydown,\n onMouseenter: () => {\n hovered.value = true\n },\n onMouseleave: () => {\n hovered.value = false\n },\n onFocusin: () => {\n focusedWithin.value = true\n },\n onFocusout: () => {\n focusedWithin.value = false\n },\n style: {\n position: 'relative',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n 'data-iris-carousel-viewport': '',\n style: {\n overflow: 'hidden',\n position: 'relative',\n borderRadius: 'var(--iris-radius-md, 6px)',\n },\n },\n [\n h(\n 'div',\n {\n 'data-iris-carousel-track': '',\n style: {\n display: 'flex',\n transform: `translateX(-${current * 100}%)`,\n transition: 'transform 300ms ease',\n },\n },\n slides.map((slide, i) =>\n h(\n 'div',\n {\n key: i,\n 'data-iris-carousel-slide': '',\n 'data-active': i === current ? 'true' : undefined,\n role: 'group',\n 'aria-roledescription': 'slide',\n 'aria-label': t('carousel.slide', { index: i + 1, total: count }),\n 'aria-hidden': i !== current ? 'true' : undefined,\n style: { flex: '0 0 100%', width: '100%', minWidth: '0' },\n },\n [slide],\n ),\n ),\n ),\n ],\n ),\n props.showArrows && count > 1\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-carousel-prev': '',\n 'aria-label': t('carousel.previous'),\n onClick: () => goTo(current - 1),\n disabled: (!props.loop && current === 0) || undefined,\n style: { ...ARROW_BTN, insetInlineStart: '8px' },\n },\n '‹',\n )\n : null,\n props.showArrows && count > 1\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-carousel-next': '',\n 'aria-label': t('carousel.next'),\n onClick: () => goTo(current + 1),\n disabled: (!props.loop && current === count - 1) || undefined,\n style: { ...ARROW_BTN, insetInlineEnd: '8px' },\n },\n '›',\n )\n : null,\n props.showIndicators && count > 1\n ? h(\n 'div',\n {\n 'data-iris-carousel-indicators': '',\n style: {\n display: 'flex',\n justifyContent: 'center',\n gap: '6px',\n marginBlockStart: '8px',\n },\n },\n slides.map((_unused, i) =>\n h('button', {\n key: i,\n type: 'button',\n 'data-iris-carousel-indicator': '',\n 'data-active': i === current ? 'true' : undefined,\n 'aria-label': t('carousel.slide', { index: i + 1, total: count }),\n 'aria-current': i === current ? 'true' : undefined,\n onClick: () => goTo(i),\n style: {\n width: '8px',\n height: '8px',\n padding: '0',\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n background: i === current ? 'var(--iris-primary)' : 'var(--iris-border)',\n },\n }),\n ),\n )\n : null,\n h(\n 'div',\n {\n 'data-iris-carousel-live': '',\n 'aria-live': 'polite',\n style: {\n position: 'absolute',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n },\n },\n t('carousel.slide', { index: current + 1, total: count }),\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisStatisticSize = 'sm' | 'md' | 'lg'\nexport type IrisStatisticTrend = 'up' | 'down' | 'neutral'\n\nconst VALUE_FONT: Record<IrisStatisticSize, number> = { sm: 20, md: 28, lg: 36 }\nconst TREND_COLOR: Record<IrisStatisticTrend, string> = {\n up: 'var(--iris-success, #16a34a)',\n down: 'var(--iris-danger)',\n neutral: 'var(--iris-muted)',\n}\nconst TREND_ARROW: Record<IrisStatisticTrend, string> = { up: '▲', down: '▼', neutral: '' }\n\n/**\n * Compact statistic / KPI display: a label, a prominent value (with optional\n * prefix/suffix), an optional colored trend line, and a description. The trend\n * glyph is decorative (aria-hidden) — the magnitude text carries the meaning.\n */\nexport const IrisStatistic = defineComponent({\n name: 'IrisStatistic',\n inheritAttrs: false,\n props: {\n label: { type: [String, Number], default: undefined },\n value: { type: [String, Number], default: '' },\n prefix: { type: [String, Number], default: undefined },\n suffix: { type: [String, Number], default: undefined },\n description: { type: [String, Number], default: undefined },\n trend: { type: String as PropType<IrisStatisticTrend>, default: undefined },\n trendValue: { type: [String, Number], default: undefined },\n size: { type: String as PropType<IrisStatisticSize>, default: 'md' },\n },\n setup(props, { attrs }) {\n const affix = { fontSize: '0.6em', color: 'var(--iris-muted)' }\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-statistic': '',\n 'data-trend': props.trend,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n props.label != null\n ? h(\n 'div',\n {\n 'data-iris-statistic-label': '',\n style: { fontSize: '13px', color: 'var(--iris-muted)' },\n },\n String(props.label),\n )\n : null,\n h(\n 'div',\n {\n 'data-iris-statistic-value': '',\n style: {\n display: 'inline-flex',\n alignItems: 'baseline',\n gap: '4px',\n fontSize: `${VALUE_FONT[props.size]}px`,\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n fontVariantNumeric: 'tabular-nums',\n },\n },\n [\n props.prefix != null\n ? h(\n 'span',\n { 'data-iris-statistic-prefix': '', style: affix },\n String(props.prefix),\n )\n : null,\n h('span', { 'data-iris-statistic-number': '' }, String(props.value)),\n props.suffix != null\n ? h(\n 'span',\n { 'data-iris-statistic-suffix': '', style: affix },\n String(props.suffix),\n )\n : null,\n ],\n ),\n props.trend != null || props.trendValue != null\n ? h(\n 'div',\n {\n 'data-iris-statistic-trend': '',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n fontSize: '13px',\n color: props.trend ? TREND_COLOR[props.trend] : 'var(--iris-muted)',\n },\n },\n [\n props.trend && TREND_ARROW[props.trend]\n ? h('span', { 'aria-hidden': 'true' }, TREND_ARROW[props.trend])\n : null,\n props.trendValue != null\n ? h('span', { 'data-iris-statistic-trend-value': '' }, String(props.trendValue))\n : null,\n ],\n )\n : null,\n props.description != null\n ? h(\n 'div',\n {\n 'data-iris-statistic-desc': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)' },\n },\n String(props.description),\n )\n : null,\n ],\n )\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisDescriptionsLayout = 'horizontal' | 'vertical'\n\nexport interface IrisDescriptionsItem {\n key?: string | number\n label: string | number\n value: string | number\n}\n\n/**\n * Description list: a semantic `<dl>` rendering label/value pairs in a grid.\n * `columns` controls pairs-per-row, `layout` places the label beside or above\n * the value, and `bordered` draws a boxed style with separators. RTL-safe via\n * logical properties.\n */\nexport const IrisDescriptions = defineComponent({\n name: 'IrisDescriptions',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<IrisDescriptionsItem[]>, default: () => [] },\n /** Number of label/value pairs per row. */\n columns: { type: Number, default: 1 },\n /** `horizontal` = label beside value; `vertical` = label above value. */\n layout: { type: String as PropType<IrisDescriptionsLayout>, default: 'horizontal' },\n /** Boxed style with cell separators. */\n bordered: { type: Boolean, default: false },\n },\n setup(props, { attrs }) {\n return () => {\n const horizontal = props.layout === 'horizontal'\n const pad = props.bordered ? '8px 12px' : undefined\n const labelStyle: Record<string, string | undefined> = {\n margin: '0',\n fontSize: '13px',\n fontWeight: '500',\n color: 'var(--iris-muted)',\n padding: pad,\n ...(props.bordered ? { background: 'var(--iris-surface)' } : null),\n }\n const valueStyle: Record<string, string | undefined> = {\n margin: '0',\n fontSize: '14px',\n color: 'var(--iris-foreground)',\n padding: pad,\n }\n\n return h(\n 'dl',\n {\n ...attrs,\n 'data-iris-descriptions': '',\n 'data-layout': props.layout,\n style: {\n display: 'grid',\n gridTemplateColumns: horizontal\n ? `repeat(${props.columns}, max-content 1fr)`\n : `repeat(${props.columns}, 1fr)`,\n gap: props.bordered ? '0' : horizontal ? '8px 16px' : '12px',\n margin: '0',\n ...(props.bordered\n ? {\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n overflow: 'hidden',\n }\n : null),\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n props.items.flatMap((item, i) => {\n const rowBorder =\n props.bordered && i >= props.columns ? '1px solid var(--iris-border)' : undefined\n if (horizontal) {\n return [\n h(\n 'dt',\n {\n key: `${item.key ?? i}-l`,\n 'data-iris-descriptions-label': '',\n style: {\n ...labelStyle,\n borderBlockStart: rowBorder,\n borderInlineEnd: props.bordered ? '1px solid var(--iris-border)' : undefined,\n },\n },\n String(item.label),\n ),\n h(\n 'dd',\n {\n key: `${item.key ?? i}-v`,\n 'data-iris-descriptions-value': '',\n style: { ...valueStyle, borderBlockStart: rowBorder },\n },\n String(item.value),\n ),\n ]\n }\n return [\n h(\n 'div',\n {\n key: item.key ?? i,\n 'data-iris-descriptions-item': '',\n style: {\n borderBlockStart: rowBorder,\n borderInlineStart:\n props.bordered && i % props.columns !== 0\n ? '1px solid var(--iris-border)'\n : undefined,\n },\n },\n [\n h(\n 'dt',\n { 'data-iris-descriptions-label': '', style: labelStyle },\n String(item.label),\n ),\n h(\n 'dd',\n { 'data-iris-descriptions-value': '', style: valueStyle },\n String(item.value),\n ),\n ],\n ),\n ]\n }),\n )\n }\n },\n})\n","import { computed, defineComponent, h, onBeforeUnmount, ref, shallowRef, type PropType } from 'vue'\nimport { createSelectionModel } from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\n\nexport interface IrisTransferItem {\n label: string\n value: string\n disabled?: boolean\n}\n\ntype Side = 'source' | 'target'\n\n/**\n * Dual-list transfer: move items between an \"available\" and a \"selected\" pane\n * via per-item checkboxes and the ›/‹ buttons. `v-model` binds the selected\n * values, with optional per-pane search and a select-all header. Built on\n * native checkboxes for accessibility.\n */\nexport const IrisTransfer = defineComponent({\n name: 'IrisTransfer',\n inheritAttrs: false,\n props: {\n options: { type: Array as PropType<IrisTransferItem[]>, default: () => [] },\n /** Values currently in the target (selected) pane. */\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\n /** Pane titles: [available, selected]. */\n titles: { type: Array as PropType<string[]>, default: undefined },\n /** Show a search box per pane. */\n searchable: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_values: string[]) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n // Each pane's checkbox set is single-sourced through the core selection model\n // (multiple-select toggle + dedup + select-all); only the ›/‹ move actions\n // emit `modelValue`, so these models stay purely internal (no onChange).\n const sourceModel = createSelectionModel<string>({ mode: 'multiple' })\n const targetModel = createSelectionModel<string>({ mode: 'multiple' })\n const sourceSel = shallowRef<string[]>(sourceModel.get())\n const targetSel = shallowRef<string[]>(targetModel.get())\n onBeforeUnmount(\n sourceModel.store.subscribe((keys) => {\n sourceSel.value = keys\n }),\n )\n onBeforeUnmount(\n targetModel.store.subscribe((keys) => {\n targetSel.value = keys\n }),\n )\n const sourceQuery = ref('')\n const targetQuery = ref('')\n\n const value = computed(() => props.modelValue ?? [])\n const valueSet = computed(() => new Set(value.value))\n const sourceItems = computed(() => props.options.filter((o) => !valueSet.value.has(o.value)))\n const targetItems = computed(() => props.options.filter((o) => valueSet.value.has(o.value)))\n\n const moveToTarget = () => {\n if (props.disabled) return\n const moving = sourceItems.value.filter((o) => !o.disabled && sourceModel.isSelected(o.value))\n if (moving.length === 0) return\n emit('update:modelValue', [...value.value, ...moving.map((o) => o.value)])\n sourceModel.clear()\n }\n const moveToSource = () => {\n if (props.disabled) return\n const removing = new Set(\n targetItems.value\n .filter((o) => !o.disabled && targetModel.isSelected(o.value))\n .map((o) => o.value),\n )\n if (removing.size === 0) return\n emit(\n 'update:modelValue',\n value.value.filter((v) => !removing.has(v)),\n )\n targetModel.clear()\n }\n\n const paneStyle: Record<string, string> = {\n display: 'flex',\n flexDirection: 'column',\n width: '220px',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: 'var(--iris-background)',\n overflow: 'hidden',\n }\n const moveBtnStyle: Record<string, string> = {\n width: '32px',\n height: '28px',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n fontSize: '16px',\n lineHeight: '1',\n }\n\n const renderPane = (side: Side) => {\n const items = (side === 'source' ? sourceItems : targetItems).value\n const model = side === 'source' ? sourceModel : targetModel\n const checked = new Set(side === 'source' ? sourceSel.value : targetSel.value)\n const queryRef = side === 'source' ? sourceQuery : targetQuery\n const query = queryRef.value\n const visible = query\n ? items.filter((o) => o.label.toLowerCase().includes(query.toLowerCase()))\n : items\n const selectable = visible.filter((o) => !o.disabled)\n const allChecked = selectable.length > 0 && selectable.every((o) => checked.has(o.value))\n const someChecked = selectable.some((o) => checked.has(o.value))\n const checkedCount = items.filter((o) => checked.has(o.value)).length\n\n const toggle = (v: string) => model.toggle(v)\n const toggleAll = () => {\n if (allChecked) model.clear()\n else model.set(selectable.map((o) => o.value))\n }\n\n return h('div', { 'data-iris-transfer-pane': '', 'data-side': side, style: paneStyle }, [\n h(\n 'div',\n {\n 'data-iris-transfer-header': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n padding: '6px 10px',\n borderBlockEnd: '1px solid var(--iris-border)',\n fontSize: '13px',\n fontWeight: '500',\n },\n },\n [\n h(\n 'label',\n {\n style: { display: 'inline-flex', alignItems: 'center', gap: '6px', minWidth: '0' },\n },\n [\n h('input', {\n type: 'checkbox',\n 'data-iris-transfer-select-all': '',\n checked: allChecked,\n disabled: props.disabled || selectable.length === 0 || undefined,\n ref: (el: unknown) => {\n if (el) (el as HTMLInputElement).indeterminate = someChecked && !allChecked\n },\n onChange: toggleAll,\n }),\n h('span', props.titles?.[side === 'source' ? 0 : 1] ?? ''),\n ],\n ),\n h(\n 'span',\n {\n 'data-iris-transfer-count': '',\n style: { color: 'var(--iris-muted)', fontSize: '12px' },\n },\n `${checkedCount}/${items.length}`,\n ),\n ],\n ),\n props.searchable\n ? h('input', {\n type: 'search',\n 'data-iris-transfer-search': '',\n 'aria-label': t('transfer.search'),\n placeholder: t('transfer.search'),\n value: query,\n disabled: props.disabled || undefined,\n onInput: (e: Event) => {\n queryRef.value = (e.target as HTMLInputElement).value\n },\n style: {\n margin: '8px',\n padding: '4px 8px',\n fontSize: '13px',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n outline: 'none',\n },\n })\n : null,\n h(\n 'ul',\n {\n 'data-iris-transfer-list': '',\n style: {\n listStyle: 'none',\n margin: '0',\n padding: '4px',\n maxHeight: '200px',\n overflowY: 'auto',\n flex: '1',\n },\n },\n visible.length === 0\n ? [\n h(\n 'li',\n {\n 'data-iris-transfer-empty': '',\n style: {\n padding: '8px 10px',\n color: 'var(--iris-muted)',\n fontSize: '13px',\n textAlign: 'center',\n },\n },\n t('transfer.empty'),\n ),\n ]\n : visible.map((o) =>\n h('li', { key: o.value, 'data-iris-transfer-item': '', 'data-value': o.value }, [\n h(\n 'label',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '4px 8px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: o.disabled ? 'not-allowed' : 'pointer',\n opacity: o.disabled ? '0.5' : '1',\n fontSize: '14px',\n },\n },\n [\n h('input', {\n type: 'checkbox',\n checked: checked.has(o.value),\n disabled: props.disabled || o.disabled || undefined,\n onChange: () => toggle(o.value),\n }),\n h('span', o.label),\n ],\n ),\n ]),\n ),\n ),\n ])\n }\n\n return () => {\n const canToTarget =\n !props.disabled &&\n sourceItems.value.some((o) => !o.disabled && sourceSel.value.includes(o.value))\n const canToSource =\n !props.disabled &&\n targetItems.value.some((o) => !o.disabled && targetSel.value.includes(o.value))\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-transfer': '',\n 'data-disabled': props.disabled ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n alignItems: 'stretch',\n gap: '12px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n renderPane('source'),\n h(\n 'div',\n {\n 'data-iris-transfer-controls': '',\n style: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '8px',\n },\n },\n [\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-transfer-to-target': '',\n 'aria-label': t('transfer.toTarget'),\n disabled: !canToTarget || undefined,\n onClick: moveToTarget,\n style: moveBtnStyle,\n },\n '›',\n ),\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-transfer-to-source': '',\n 'aria-label': t('transfer.toSource'),\n disabled: !canToSource || undefined,\n onClick: moveToSource,\n style: moveBtnStyle,\n },\n '‹',\n ),\n ],\n ),\n renderPane('target'),\n ],\n )\n }\n },\n})\n","import { defineComponent, h } from 'vue'\n\n/** Number of tiles rendered; clipped by the overlay's overflow. */\nconst TILE_COUNT = 72\n\n/**\n * Watermark: overlays tiled, rotated text over its slot content — for\n * confidential or branded surfaces. The overlay is `aria-hidden`,\n * non-selectable, and `pointer-events: none`, so it never interferes with the\n * underlying UI. Built from structured `<span>` nodes (no raw HTML / canvas /\n * SVG-string injection).\n */\nexport const IrisWatermark = defineComponent({\n name: 'IrisWatermark',\n inheritAttrs: false,\n props: {\n /** Watermark text, tiled across the area. */\n content: { type: String, required: true },\n /** Rotation of each tile in degrees. */\n rotate: { type: Number, default: -22 },\n fontSize: { type: Number, default: 16 },\n color: { type: String, default: 'var(--iris-muted)' },\n /** Overlay opacity (0–1). */\n opacity: { type: Number, default: 0.15 },\n /** Spacing between tiles in px. */\n gap: { type: Number, default: 24 },\n },\n setup(props, { attrs, slots }) {\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-watermark': '',\n style: {\n position: 'relative',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n slots.default?.(),\n h(\n 'div',\n {\n 'data-iris-watermark-overlay': '',\n 'aria-hidden': 'true',\n style: {\n position: 'absolute',\n inset: '0',\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n display: 'flex',\n flexWrap: 'wrap',\n alignContent: 'flex-start',\n gap: `${props.gap}px`,\n opacity: String(props.opacity),\n },\n },\n Array.from({ length: TILE_COUNT }, (_unused, i) =>\n h(\n 'span',\n {\n key: i,\n 'data-iris-watermark-tile': '',\n style: {\n transform: `rotate(${props.rotate}deg)`,\n fontSize: `${props.fontSize}px`,\n color: props.color,\n whiteSpace: 'nowrap',\n lineHeight: '1',\n },\n },\n props.content,\n ),\n ),\n ),\n ],\n )\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n )\n}\n\nconst resolve = (target?: () => HTMLElement | Window | null): HTMLElement | Window =>\n (target ? target() : window) ?? window\n\n/**\n * Back-to-top button: appears once the scroll target passes `visibilityHeight`\n * and scrolls it back to the top on click (honoring reduced motion). Defaults\n * to the window; pass `target` for a scrollable container.\n */\nexport const IrisBackTop = defineComponent({\n name: 'IrisBackTop',\n inheritAttrs: false,\n props: {\n /** Scroll container resolver. Defaults to the window. */\n target: { type: Function as PropType<() => HTMLElement | Window | null>, default: undefined },\n /** Show the button once the scroll position passes this (px). */\n visibilityHeight: { type: Number, default: 400 },\n /** Scroll behavior; forced to 'auto' under reduced motion. */\n behavior: { type: String as PropType<ScrollBehavior>, default: 'smooth' },\n ariaLabel: { type: String, default: undefined },\n },\n emits: {\n click: () => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n const visible = ref(false)\n let el: HTMLElement | Window | undefined\n\n const onScroll = () => {\n if (!el) return\n const top = el === window ? (window.scrollY ?? 0) : (el as HTMLElement).scrollTop\n visible.value = top >= props.visibilityHeight\n }\n\n onMounted(() => {\n el = resolve(props.target)\n el.addEventListener('scroll', onScroll)\n onScroll()\n })\n onBeforeUnmount(() => {\n el?.removeEventListener('scroll', onScroll)\n })\n\n const scrollToTop = () => {\n if (!el) return\n const b: ScrollBehavior = prefersReducedMotion() ? 'auto' : props.behavior\n if (typeof (el as { scrollTo?: unknown }).scrollTo === 'function') {\n ;(el as Window | HTMLElement).scrollTo({ top: 0, behavior: b })\n } else {\n ;(el as HTMLElement).scrollTop = 0\n }\n emit('click')\n }\n\n return () =>\n visible.value\n ? h(\n 'button',\n {\n ...attrs,\n type: 'button',\n 'data-iris-back-top': '',\n 'aria-label': props.ariaLabel ?? t('backTop.label'),\n onClick: scrollToTop,\n style: {\n position: 'fixed',\n insetInlineEnd: '24px',\n insetBlockEnd: '24px',\n zIndex: '100',\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n border: '1px solid var(--iris-border)',\n background: 'var(--iris-surface, var(--iris-background))',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n boxShadow: '0 4px 12px rgba(0,0,0,0.15)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '18px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default ? slots.default() : '↑',\n )\n : null\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\n\nconst resolve = (target?: () => HTMLElement | Window | null): HTMLElement | Window =>\n (target ? target() : window) ?? window\n\n/**\n * Affix: pins its slot content to the viewport once the user scrolls past it.\n * Top mode (`offsetTop`) or bottom mode (`offsetBottom`); the placeholder\n * reserves the content's height so the page doesn't jump. `change` fires only\n * when the affixed state flips.\n */\nexport const IrisAffix = defineComponent({\n name: 'IrisAffix',\n inheritAttrs: false,\n props: {\n /** Pin this many px from the top once scrolled past. */\n offsetTop: { type: Number, default: undefined },\n /** Pin this many px from the bottom (used when `offsetTop` is unset). */\n offsetBottom: { type: Number, default: undefined },\n /** Scroll container resolver. Defaults to the window. */\n target: { type: Function as PropType<() => HTMLElement | Window | null>, default: undefined },\n },\n emits: {\n change: (_affixed: boolean) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const affixed = ref(false)\n const fixedStyle = ref<Record<string, string> | undefined>(undefined)\n const reserve = ref<number | undefined>(undefined)\n let placeholderEl: HTMLElement | null = null\n let contentEl: HTMLElement | null = null\n let scrollEl: HTMLElement | Window | undefined\n let isAffixed = false\n\n const update = () => {\n const ph = placeholderEl\n if (!ph) return\n const useTop = props.offsetTop != null || props.offsetBottom == null\n const ot = props.offsetTop ?? 0\n const ob = props.offsetBottom ?? 0\n const rect = ph.getBoundingClientRect()\n const vh = window.innerHeight || 0\n const next = useTop ? rect.top <= ot : rect.bottom >= vh - ob\n if (next === isAffixed) return\n isAffixed = next\n const width = ph.offsetWidth\n fixedStyle.value = next\n ? {\n position: 'fixed',\n insetInlineStart: `${rect.left}px`,\n width: `${width}px`,\n zIndex: '10',\n ...(useTop ? { top: `${ot}px` } : { bottom: `${ob}px` }),\n }\n : undefined\n reserve.value = next ? (contentEl?.offsetHeight ?? 0) : undefined\n affixed.value = next\n emit('change', next)\n }\n\n onMounted(() => {\n scrollEl = resolve(props.target)\n scrollEl.addEventListener('scroll', update, { passive: true })\n window.addEventListener('resize', update)\n update()\n })\n onBeforeUnmount(() => {\n scrollEl?.removeEventListener('scroll', update)\n window.removeEventListener('resize', update)\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n placeholderEl = (el ?? null) as HTMLElement | null\n },\n 'data-iris-affix': '',\n 'data-affixed': affixed.value ? 'true' : undefined,\n style: {\n ...(affixed.value && reserve.value ? { height: `${reserve.value}px` } : null),\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n ref: (el: unknown) => {\n contentEl = (el ?? null) as HTMLElement | null\n },\n 'data-iris-affix-content': '',\n style: affixed.value ? fixedStyle.value : undefined,\n },\n slots.default?.(),\n ),\n ],\n )\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisResultStatus = 'success' | 'error' | 'info' | 'warning'\n\nconst STATUS: Record<IrisResultStatus, { color: string; glyph: string }> = {\n success: { color: 'var(--iris-success, #16a34a)', glyph: '✓' },\n error: { color: 'var(--iris-danger)', glyph: '✕' },\n info: { color: 'var(--iris-info, #0ea5e9)', glyph: 'i' },\n warning: { color: 'var(--iris-warning, #f59e0b)', glyph: '!' },\n}\n\n/**\n * Result: a centered outcome page for an operation — a status icon, title,\n * subtitle, action area (`#extra`), and optional content (default slot). Use\n * for success / error / 404 / 403 / 500 screens. Pass `#icon` to override the\n * status glyph. Pure presentation; the glyph is decorative.\n */\nexport const IrisResult = defineComponent({\n name: 'IrisResult',\n inheritAttrs: false,\n props: {\n status: { type: String as PropType<IrisResultStatus>, default: 'info' },\n title: { type: String, default: undefined },\n subtitle: { type: String, default: undefined },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const s = STATUS[props.status]\n const children = [\n h(\n 'div',\n {\n 'data-iris-result-icon': '',\n 'aria-hidden': 'true',\n style: {\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '30px',\n fontWeight: '700',\n color: '#fff',\n background: s.color,\n marginBlockEnd: '8px',\n },\n },\n slots.icon ? slots.icon() : s.glyph,\n ),\n props.title != null\n ? h(\n 'div',\n {\n 'data-iris-result-title': '',\n style: { fontSize: '20px', fontWeight: '600', color: 'var(--iris-foreground)' },\n },\n props.title,\n )\n : null,\n props.subtitle != null\n ? h(\n 'div',\n {\n 'data-iris-result-subtitle': '',\n style: { fontSize: '14px', color: 'var(--iris-muted)', maxWidth: '480px' },\n },\n props.subtitle,\n )\n : null,\n slots.default\n ? h(\n 'div',\n { 'data-iris-result-content': '', style: { marginBlockStart: '8px', width: '100%' } },\n slots.default(),\n )\n : null,\n slots.extra\n ? h(\n 'div',\n {\n 'data-iris-result-extra': '',\n style: {\n marginBlockStart: '8px',\n display: 'inline-flex',\n gap: '8px',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n },\n slots.extra(),\n )\n : null,\n ]\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-result': '',\n 'data-status': props.status,\n style: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n gap: '8px',\n padding: '32px 16px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n children,\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType, type VNode } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisTreeSelectSize = 'sm' | 'md' | 'lg'\n\nexport interface IrisTreeSelectNode {\n label: string\n value: string\n disabled?: boolean\n children?: IrisTreeSelectNode[]\n}\n\nconst SIZE_MAP: Record<\n IrisTreeSelectSize,\n { padding: string; fontSize: string; minHeight: string }\n> = {\n sm: { padding: '4px 8px', fontSize: '12px', minHeight: '28px' },\n md: { padding: '6px 12px', fontSize: '14px', minHeight: '34px' },\n lg: { padding: '8px 12px', fontSize: '16px', minHeight: '40px' },\n}\n\nfunction findNode(nodes: IrisTreeSelectNode[], value: string): IrisTreeSelectNode | undefined {\n for (const n of nodes) {\n if (n.value === value) return n\n if (n.children) {\n const found = findNode(n.children, value)\n if (found) return found\n }\n }\n return undefined\n}\n\n/**\n * Hierarchical single-select: a trigger that opens a `role=\"tree\"` dropdown\n * with expand/collapse toggles. Selecting a node updates `v-model` and closes.\n * Closes on select, Escape, or outside click.\n */\nexport const IrisTreeSelect = defineComponent({\n name: 'IrisTreeSelect',\n inheritAttrs: false,\n props: {\n options: { type: Array as PropType<IrisTreeSelectNode[]>, default: () => [] },\n modelValue: { type: String, default: '' },\n defaultExpanded: { type: Array as PropType<string[]>, default: () => [] },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n size: { type: String as PropType<IrisTreeSelectSize>, default: 'md' },\n id: { type: String, default: undefined },\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const open = ref(false)\n const focused = ref(false)\n const expanded = ref<Set<string>>(new Set(props.defaultExpanded))\n let rootEl: HTMLElement | null = null\n\n const selectNode = (node: IrisTreeSelectNode) => {\n if (node.disabled) return\n emit('update:modelValue', node.value)\n open.value = false\n }\n const toggleExpand = (v: string) => {\n const next = new Set(expanded.value)\n if (next.has(v)) next.delete(v)\n else next.add(v)\n expanded.value = next\n }\n\n const onDocDown = (e: MouseEvent) => {\n if (open.value && rootEl && !rootEl.contains(e.target as Node)) open.value = false\n }\n onMounted(() => document.addEventListener('mousedown', onDocDown))\n onBeforeUnmount(() => document.removeEventListener('mousedown', onDocDown))\n\n const renderNodes = (\n nodes: IrisTreeSelectNode[],\n depth: number,\n sz: { fontSize: string },\n ): VNode[] =>\n nodes.map((node) => {\n const hasChildren = !!node.children && node.children.length > 0\n const isExpanded = expanded.value.has(node.value)\n const isSelected = node.value === props.modelValue\n return h(\n 'li',\n {\n key: node.value,\n role: 'treeitem',\n 'aria-selected': isSelected ? 'true' : 'false',\n 'aria-expanded': hasChildren ? (isExpanded ? 'true' : 'false') : undefined,\n 'data-iris-tree-select-node': '',\n 'data-value': node.value,\n style: { listStyle: 'none' },\n },\n [\n h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n paddingInlineStart: `${depth * 16 + 6}px`,\n paddingInlineEnd: '6px',\n paddingBlock: '4px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background: isSelected\n ? 'var(--iris-surface-hover, rgba(99,102,241,0.1))'\n : 'transparent',\n },\n },\n [\n hasChildren\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-tree-select-toggle': '',\n 'aria-label': isExpanded\n ? t('treeSelect.collapse')\n : t('treeSelect.expand'),\n onClick: () => toggleExpand(node.value),\n style: {\n width: '16px',\n padding: '0',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n color: 'var(--iris-muted)',\n fontSize: '10px',\n },\n },\n isExpanded ? '▾' : '▸',\n )\n : h('span', { style: { width: '16px', display: 'inline-block' } }),\n h(\n 'span',\n {\n 'data-iris-tree-select-label': '',\n onClick: () => selectNode(node),\n style: {\n flex: '1',\n cursor: node.disabled ? 'not-allowed' : 'pointer',\n color: node.disabled ? 'var(--iris-muted)' : 'var(--iris-foreground)',\n fontWeight: isSelected ? '600' : '400',\n fontSize: sz.fontSize,\n },\n },\n node.label,\n ),\n ],\n ),\n hasChildren && isExpanded\n ? h(\n 'ul',\n { role: 'group', style: { margin: '0', padding: '0' } },\n renderNodes(node.children!, depth + 1, sz),\n )\n : null,\n ],\n )\n })\n\n return () => {\n const sz = SIZE_MAP[props.size]\n const selected = props.modelValue ? findNode(props.options, props.modelValue) : undefined\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value || open.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n rootEl = (el ?? null) as HTMLElement | null\n },\n 'data-iris-tree-select': '',\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n position: 'relative',\n display: 'inline-block',\n minWidth: '220px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'button',\n {\n type: 'button',\n id: props.id,\n 'data-iris-tree-select-trigger': '',\n 'aria-haspopup': 'tree',\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n disabled: props.disabled || undefined,\n onClick: () => {\n if (!props.disabled) open.value = !open.value\n },\n onFocus: () => {\n focused.value = true\n },\n onBlur: () => {\n focused.value = false\n },\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open.value) {\n e.preventDefault()\n open.value = false\n } else if ((e.key === 'ArrowDown' || e.key === 'Enter') && !open.value) {\n e.preventDefault()\n open.value = true\n }\n },\n style: {\n boxSizing: 'border-box',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n padding: sz.padding,\n minHeight: sz.minHeight,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n textAlign: 'start',\n color: selected ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n background: 'var(--iris-background)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n outline: 'none',\n },\n },\n [\n h(\n 'span',\n { 'data-iris-tree-select-value': '' },\n selected ? selected.label : (props.placeholder ?? t('select.placeholder')),\n ),\n h(\n 'span',\n { 'aria-hidden': 'true', style: { color: 'var(--iris-muted)', fontSize: '10px' } },\n '▾',\n ),\n ],\n ),\n open.value\n ? h(\n 'ul',\n {\n role: 'tree',\n 'data-iris-tree-select-tree': '',\n style: {\n position: 'absolute',\n insetInlineStart: '0',\n insetInlineEnd: '0',\n top: '100%',\n marginBlockStart: '4px',\n maxHeight: '280px',\n overflowY: 'auto',\n margin: '0',\n padding: '4px',\n zIndex: '50',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n },\n },\n renderNodes(props.options, 0, sz),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, nextTick, ref, useId, type PropType } from 'vue'\n\nexport interface IrisMentionOption {\n label: string\n value: string\n}\n\ninterface Active {\n start: number\n query: string\n}\n\n/** Find an active mention token (prefix at start/after-space, no inner spaces). */\nfunction detect(text: string, caret: number, prefix: string): Active | null {\n let i = caret - 1\n while (i >= 0 && text.charAt(i) !== prefix) {\n if (/\\s/.test(text.charAt(i))) return null\n i--\n }\n if (i < 0) return null\n if (i === 0 || /\\s/.test(text.charAt(i - 1))) return { start: i, query: text.slice(i + 1, caret) }\n return null\n}\n\nconst TEXTAREA_STYLE: Record<string, string> = {\n boxSizing: 'border-box',\n width: '100%',\n padding: '8px 12px',\n fontSize: '14px',\n fontFamily: 'inherit',\n color: 'var(--iris-foreground)',\n background: 'var(--iris-background)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n outline: 'none',\n resize: 'vertical',\n}\n\nconst LIST_STYLE: Record<string, string> = {\n position: 'absolute',\n insetInlineStart: '0',\n top: '100%',\n marginBlockStart: '4px',\n maxHeight: '200px',\n overflowY: 'auto',\n minWidth: '160px',\n margin: '0',\n padding: '4px',\n zIndex: '50',\n listStyle: 'none',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n}\n\n/**\n * Mentions: a textarea that opens an autocomplete listbox when the user types\n * the trigger character (default `@`). Selecting a suggestion replaces the\n * `@query` token with the chosen label. Keyboard: ↑/↓ to move, Enter to pick,\n * Esc to dismiss.\n */\nexport const IrisMentions = defineComponent({\n name: 'IrisMentions',\n inheritAttrs: false,\n props: {\n modelValue: { type: String, default: '' },\n options: { type: Array as PropType<IrisMentionOption[]>, default: () => [] },\n /** Trigger character. */\n prefix: { type: String, default: '@' },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n rows: { type: Number, default: 3 },\n id: { type: String, default: undefined },\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const reactId = useId()\n const listboxId = `${reactId}-listbox`\n const active = ref<Active | null>(null)\n const activeIndex = ref(0)\n let textareaEl: HTMLTextAreaElement | null = null\n let startPos = 0\n let caretPos = 0\n\n const filtered = computed(() =>\n active.value\n ? props.options.filter((o) =>\n o.label.toLowerCase().includes(active.value!.query.toLowerCase()),\n )\n : [],\n )\n const open = computed(() => active.value !== null && filtered.value.length > 0)\n\n const onInput = (e: Event) => {\n const ta = e.target as HTMLTextAreaElement\n const val = ta.value\n const caret = ta.selectionStart ?? val.length\n emit('update:modelValue', val)\n const found = detect(val, caret, props.prefix)\n if (found) {\n startPos = found.start\n caretPos = caret\n active.value = found\n activeIndex.value = 0\n } else {\n active.value = null\n }\n }\n\n const insert = (opt: IrisMentionOption) => {\n const before = props.modelValue.slice(0, startPos)\n const after = props.modelValue.slice(caretPos)\n const inserted = `${props.prefix}${opt.label} `\n const next = before + inserted + after\n const pos = (before + inserted).length\n emit('update:modelValue', next)\n active.value = null\n nextTick(() => {\n if (textareaEl) {\n textareaEl.focus()\n textareaEl.setSelectionRange(pos, pos)\n }\n })\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!open.value) return\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n activeIndex.value = Math.min(filtered.value.length - 1, activeIndex.value + 1)\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n activeIndex.value = Math.max(0, activeIndex.value - 1)\n } else if (e.key === 'Enter') {\n if (filtered.value[activeIndex.value]) {\n e.preventDefault()\n insert(filtered.value[activeIndex.value])\n }\n } else if (e.key === 'Escape') {\n e.preventDefault()\n active.value = null\n }\n }\n\n return () => {\n const activeId = open.value ? `${reactId}-opt-${activeIndex.value}` : undefined\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-mentions': '',\n style: {\n position: 'relative',\n display: 'inline-block',\n minWidth: '240px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('textarea', {\n ref: (el: unknown) => {\n textareaEl = (el ?? null) as HTMLTextAreaElement | null\n },\n id: props.id,\n rows: props.rows,\n value: props.modelValue,\n placeholder: props.placeholder,\n disabled: props.disabled || undefined,\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-controls': listboxId,\n 'aria-activedescendant': activeId,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'data-iris-mentions-input': '',\n onInput,\n onKeydown: onKeyDown,\n style: {\n ...TEXTAREA_STYLE,\n border: `1px solid ${props.invalid ? 'var(--iris-danger)' : 'var(--iris-border)'}`,\n },\n }),\n open.value\n ? h(\n 'ul',\n {\n id: listboxId,\n role: 'listbox',\n 'data-iris-mentions-listbox': '',\n style: LIST_STYLE,\n },\n filtered.value.map((opt, i) =>\n h(\n 'li',\n {\n key: opt.value,\n id: `${reactId}-opt-${i}`,\n role: 'option',\n 'aria-selected': i === activeIndex.value ? 'true' : 'false',\n 'data-iris-mentions-option': '',\n 'data-value': opt.value,\n onMousedown: (e: MouseEvent) => e.preventDefault(),\n onMouseenter: () => {\n activeIndex.value = i\n },\n onClick: () => insert(opt),\n style: {\n padding: '6px 10px',\n fontSize: '14px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: 'pointer',\n background:\n i === activeIndex.value\n ? 'var(--iris-surface-hover, rgba(99,102,241,0.1))'\n : 'transparent',\n },\n },\n opt.label,\n ),\n ),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisCascaderSize = 'sm' | 'md' | 'lg'\n\nexport interface IrisCascaderNode {\n label: string\n value: string\n disabled?: boolean\n children?: IrisCascaderNode[]\n}\n\nconst SIZE_MAP: Record<IrisCascaderSize, { padding: string; fontSize: string; minHeight: string }> =\n {\n sm: { padding: '4px 8px', fontSize: '12px', minHeight: '28px' },\n md: { padding: '6px 12px', fontSize: '14px', minHeight: '34px' },\n lg: { padding: '8px 12px', fontSize: '16px', minHeight: '40px' },\n }\n\nfunction pathLabels(options: IrisCascaderNode[], path: string[]): string[] {\n const labels: string[] = []\n let level = options\n for (const v of path) {\n const node = level.find((n) => n.value === v)\n if (!node) break\n labels.push(node.label)\n level = node.children ?? []\n }\n return labels\n}\n\nfunction buildColumns(options: IrisCascaderNode[], activePath: string[]): IrisCascaderNode[][] {\n const cols: IrisCascaderNode[][] = [options]\n let level = options\n for (const v of activePath) {\n const node = level.find((n) => n.value === v)\n if (!node || !node.children || node.children.length === 0) break\n level = node.children\n cols.push(level)\n }\n return cols\n}\n\n/**\n * Cascader: a hierarchical select that drills down through columns — choosing a\n * branch reveals its children in the next column; choosing a leaf commits the\n * full path (`v-model`). Closes on leaf-select, Escape, or outside click.\n */\nexport const IrisCascader = defineComponent({\n name: 'IrisCascader',\n inheritAttrs: false,\n props: {\n options: { type: Array as PropType<IrisCascaderNode[]>, default: () => [] },\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n separator: { type: String, default: ' / ' },\n size: { type: String as PropType<IrisCascaderSize>, default: 'md' },\n id: { type: String, default: undefined },\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_path: string[]) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const open = ref(false)\n const focused = ref(false)\n const activePath = ref<string[]>([...props.modelValue])\n let rootEl: HTMLElement | null = null\n\n const toggleOpen = () => {\n if (props.disabled) return\n if (!open.value) activePath.value = [...props.modelValue]\n open.value = !open.value\n }\n\n const selectOption = (colIndex: number, node: IrisCascaderNode) => {\n if (node.disabled) return\n const nextPath = [...activePath.value.slice(0, colIndex), node.value]\n activePath.value = nextPath\n const hasChildren = !!node.children && node.children.length > 0\n if (!hasChildren) {\n emit('update:modelValue', nextPath)\n open.value = false\n }\n }\n\n const onDocDown = (e: MouseEvent) => {\n if (open.value && rootEl && !rootEl.contains(e.target as Node)) open.value = false\n }\n onMounted(() => document.addEventListener('mousedown', onDocDown))\n onBeforeUnmount(() => document.removeEventListener('mousedown', onDocDown))\n\n return () => {\n const sz = SIZE_MAP[props.size]\n const columns = buildColumns(props.options, activePath.value)\n const labels = pathLabels(props.options, props.modelValue)\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value || open.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n rootEl = (el ?? null) as HTMLElement | null\n },\n 'data-iris-cascader': '',\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n position: 'relative',\n display: 'inline-block',\n minWidth: '240px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'button',\n {\n type: 'button',\n id: props.id,\n 'data-iris-cascader-trigger': '',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n disabled: props.disabled || undefined,\n onClick: toggleOpen,\n onFocus: () => {\n focused.value = true\n },\n onBlur: () => {\n focused.value = false\n },\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open.value) {\n e.preventDefault()\n open.value = false\n } else if ((e.key === 'ArrowDown' || e.key === 'Enter') && !open.value) {\n e.preventDefault()\n toggleOpen()\n }\n },\n style: {\n boxSizing: 'border-box',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n padding: sz.padding,\n minHeight: sz.minHeight,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n textAlign: 'start',\n color: labels.length ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n background: 'var(--iris-background)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n outline: 'none',\n },\n },\n [\n h(\n 'span',\n { 'data-iris-cascader-value': '' },\n labels.length\n ? labels.join(props.separator)\n : (props.placeholder ?? t('select.placeholder')),\n ),\n h(\n 'span',\n { 'aria-hidden': 'true', style: { color: 'var(--iris-muted)', fontSize: '10px' } },\n '▾',\n ),\n ],\n ),\n open.value\n ? h(\n 'div',\n {\n 'data-iris-cascader-panel': '',\n style: {\n position: 'absolute',\n insetInlineStart: '0',\n top: '100%',\n marginBlockStart: '4px',\n display: 'flex',\n zIndex: '50',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n overflow: 'hidden',\n },\n },\n columns.map((col, ci) =>\n h(\n 'ul',\n {\n key: ci,\n role: 'listbox',\n 'data-iris-cascader-column': '',\n 'data-level': ci,\n style: {\n listStyle: 'none',\n margin: '0',\n padding: '4px',\n minWidth: '140px',\n maxHeight: '240px',\n overflowY: 'auto',\n borderInlineStart: ci > 0 ? '1px solid var(--iris-border)' : undefined,\n },\n },\n col.map((node) => {\n const isActive = activePath.value[ci] === node.value\n const hasChildren = !!node.children && node.children.length > 0\n return h(\n 'li',\n {\n key: node.value,\n role: 'option',\n 'aria-selected': isActive ? 'true' : 'false',\n 'aria-disabled': node.disabled ? 'true' : undefined,\n 'data-iris-cascader-option': '',\n 'data-value': node.value,\n onClick: () => selectOption(ci, node),\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n padding: '6px 10px',\n fontSize: sz.fontSize,\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: node.disabled ? 'not-allowed' : 'pointer',\n color: node.disabled ? 'var(--iris-muted)' : 'var(--iris-foreground)',\n background: isActive\n ? 'var(--iris-surface-hover, rgba(99,102,241,0.1))'\n : 'transparent',\n },\n },\n [\n h('span', node.label),\n hasChildren\n ? h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: { color: 'var(--iris-muted)', fontSize: '10px' },\n },\n '›',\n )\n : null,\n ],\n )\n }),\n ),\n ),\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\nimport { createKeyboardNav, firstEnabledIndex } from '@iris-ui-kit/core'\n\nexport type IrisSegmentedSize = 'sm' | 'md' | 'lg'\n\nexport interface IrisSegmentedOption {\n label: string\n value: string\n disabled?: boolean\n}\n\nconst SIZE_MAP: Record<IrisSegmentedSize, { padding: string; fontSize: string; height: string }> = {\n sm: { padding: '2px 8px', fontSize: '12px', height: '24px' },\n md: { padding: '4px 12px', fontSize: '14px', height: '30px' },\n lg: { padding: '6px 16px', fontSize: '16px', height: '36px' },\n}\n\nconst normalize = (options: Array<IrisSegmentedOption | string>): IrisSegmentedOption[] =>\n options.map((o) => (typeof o === 'string' ? { label: o, value: o } : o))\n\n/**\n * Segmented control: a connected row of single-select segments with the active\n * one visually raised. Radiogroup semantics with roving tabindex and Arrow /\n * Home / End keyboard navigation (skipping disabled segments).\n */\nexport const IrisSegmented = defineComponent({\n name: 'IrisSegmented',\n inheritAttrs: false,\n props: {\n options: { type: Array as PropType<Array<IrisSegmentedOption | string>>, default: () => [] },\n modelValue: { type: String, default: '' },\n size: { type: String as PropType<IrisSegmentedSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n /** Stretch to fill the container width. */\n block: { type: Boolean, default: false },\n ariaLabel: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const btns: (HTMLButtonElement | null)[] = []\n\n const isEnabled = (i: number) => {\n const norm = normalize(props.options)\n return !norm[i]?.disabled && !props.disabled\n }\n\n const nav = createKeyboardNav({\n count: normalize(props.options).length,\n loop: true,\n orientation: 'horizontal',\n isEnabled,\n })\n\n const select = (norm: IrisSegmentedOption[], i: number) => {\n const opt = norm[i]\n if (!opt || opt.disabled || props.disabled) return\n emit('update:modelValue', opt.value)\n btns[i]?.focus()\n }\n\n return () => {\n const norm = normalize(props.options)\n const sz = SIZE_MAP[props.size]\n const selectedIndex = norm.findIndex((o) => o.value === props.modelValue)\n const firstEnabled = firstEnabledIndex(norm.length, (i) => !norm[i]?.disabled)\n const rovingIndex = selectedIndex >= 0 ? selectedIndex : firstEnabled\n\n // Keep nav in sync with the current options and selection\n if (nav.count !== norm.length) {\n nav.reset(norm.length)\n }\n if (nav.index !== rovingIndex) {\n nav.focus(rovingIndex)\n }\n\n return h(\n 'div',\n {\n ...attrs,\n role: 'radiogroup',\n 'aria-label': props.ariaLabel,\n 'data-iris-segmented': '',\n 'data-iris-segmented-size': props.size,\n 'data-disabled': props.disabled ? 'true' : undefined,\n style: {\n display: props.block ? 'flex' : 'inline-flex',\n width: props.block ? '100%' : undefined,\n gap: '2px',\n padding: '2px',\n background: 'var(--iris-surface)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n opacity: props.disabled ? '0.6' : '1',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n norm.map((opt, i) => {\n const selected = opt.value === props.modelValue\n return h(\n 'button',\n {\n key: opt.value,\n ref: (el: unknown) => {\n btns[i] = (el ?? null) as HTMLButtonElement | null\n },\n type: 'button',\n role: 'radio',\n 'aria-checked': selected ? 'true' : 'false',\n disabled: props.disabled || opt.disabled || undefined,\n tabindex: i === rovingIndex ? 0 : -1,\n 'data-iris-segmented-item': '',\n 'data-value': opt.value,\n 'data-selected': selected ? 'true' : undefined,\n onClick: () => select(norm, i),\n onKeydown: (e: KeyboardEvent) => {\n if (props.disabled) {\n return\n }\n const action = nav.handleKeyDown({\n key: e.key,\n preventDefault: () => e.preventDefault(),\n })\n if (action.type === 'focus') {\n select(norm, action.target)\n } else if (action.type === 'next') {\n nav.move(1)\n select(norm, nav.index)\n } else if (action.type === 'previous') {\n nav.move(-1)\n select(norm, nav.index)\n }\n },\n style: {\n flex: props.block ? '1' : undefined,\n padding: sz.padding,\n minHeight: sz.height,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n border: 'none',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: props.disabled || opt.disabled ? 'not-allowed' : 'pointer',\n background: selected ? 'var(--iris-background)' : 'transparent',\n color: selected ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n boxShadow: selected ? '0 1px 3px rgba(0,0,0,0.12)' : 'none',\n fontWeight: selected ? '600' : '400',\n transition: 'background-color 120ms ease, color 120ms ease',\n whiteSpace: 'nowrap',\n },\n },\n opt.label,\n )\n }),\n )\n }\n },\n})\n","import { computed, defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useI18n } from '../../i18n'\n\n/**\n * Image with a graceful error `fallback` and an optional click-to-zoom preview\n * overlay (a `role=\"dialog\"` lightbox dismissed by backdrop, close button, or\n * Escape). Lazy-loaded by default.\n */\nexport const IrisImage = defineComponent({\n name: 'IrisImage',\n inheritAttrs: false,\n props: {\n src: { type: String, required: true },\n alt: { type: String, default: '' },\n width: { type: [Number, String], default: undefined },\n height: { type: [Number, String], default: undefined },\n /** Shown when the image fails to load. */\n fallback: { type: String, default: undefined },\n /** Enable the click-to-zoom preview overlay. */\n preview: { type: Boolean, default: true },\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n const errored = ref(false)\n const open = ref(false)\n\n watch(\n () => props.src,\n () => {\n errored.value = false\n },\n )\n\n const onKey = (e: KeyboardEvent) => {\n if (open.value && e.key === 'Escape') open.value = false\n }\n onMounted(() => document.addEventListener('keydown', onKey))\n onBeforeUnmount(() => document.removeEventListener('keydown', onKey))\n\n const shownSrc = computed(() => (errored.value && props.fallback ? props.fallback : props.src))\n const canPreview = computed(() => props.preview && !errored.value)\n\n return () => {\n const nodes = [\n h('img', {\n ...attrs,\n 'data-iris-image': '',\n 'data-errored': errored.value ? 'true' : undefined,\n src: shownSrc.value,\n alt: props.alt,\n width: props.width,\n height: props.height,\n loading: 'lazy',\n onError: () => {\n if (!errored.value) errored.value = true\n },\n onClick: () => {\n if (canPreview.value) open.value = true\n },\n style: {\n display: 'inline-block',\n objectFit: 'cover',\n cursor: canPreview.value ? 'zoom-in' : undefined,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n }),\n ]\n\n if (open.value) {\n nodes.push(\n h(\n 'div',\n {\n 'data-iris-image-preview': '',\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-label': props.alt || t('image.preview'),\n onClick: () => {\n open.value = false\n },\n style: {\n position: 'fixed',\n inset: '0',\n zIndex: '1000',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(0,0,0,0.7)',\n cursor: 'zoom-out',\n },\n },\n [\n h('img', {\n 'data-iris-image-preview-img': '',\n src: shownSrc.value,\n alt: props.alt,\n style: { maxWidth: '90vw', maxHeight: '90vh', objectFit: 'contain' },\n }),\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-image-preview-close': '',\n 'aria-label': t('dialog.close'),\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n open.value = false\n },\n style: {\n position: 'absolute',\n insetBlockStart: '16px',\n insetInlineEnd: '16px',\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n border: 'none',\n background: 'rgba(0,0,0,0.5)',\n color: '#fff',\n fontSize: '22px',\n lineHeight: '1',\n cursor: 'pointer',\n },\n },\n '×',\n ),\n ],\n ),\n )\n }\n\n return nodes\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisFloatButtonShape = 'circle' | 'square'\n\nexport interface IrisFloatButtonAction {\n key: string\n icon?: string\n label?: string\n ariaLabel?: string\n onClick?: () => void\n}\n\nconst fab = (size: number, primary: boolean): Record<string, string> => ({\n width: `${size}px`,\n height: `${size}px`,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: primary ? 'none' : '1px solid var(--iris-border)',\n background: primary ? 'var(--iris-primary)' : 'var(--iris-background)',\n color: primary ? '#fff' : 'var(--iris-foreground)',\n cursor: 'pointer',\n boxShadow: '0 4px 12px rgba(0,0,0,0.18)',\n fontSize: size > 44 ? '22px' : '16px',\n lineHeight: '1',\n})\n\n/**\n * Floating action button: a fixed-position FAB. With `actions` it becomes a\n * speed-dial — click toggles a `role=\"menu\"` stack of actions (dismissed by\n * selection, Escape, or outside click). Otherwise click emits `click`.\n */\nexport const IrisFloatButton = defineComponent({\n name: 'IrisFloatButton',\n inheritAttrs: false,\n props: {\n icon: { type: String, default: '+' },\n ariaLabel: { type: String, default: undefined },\n shape: { type: String as PropType<IrisFloatButtonShape>, default: 'circle' },\n actions: { type: Array as PropType<IrisFloatButtonAction[]>, default: undefined },\n /** Corner offsets (logical: distance from block-end / inline-end). */\n offset: { type: Object as PropType<{ bottom?: number; right?: number }>, default: undefined },\n },\n emits: {\n click: () => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n const rootEl = ref<HTMLElement | null>(null)\n const open = ref(false)\n const hasActions = () => !!props.actions && props.actions.length > 0\n\n const onDown = (e: MouseEvent) => {\n if (open.value && rootEl.value && !rootEl.value.contains(e.target as Node)) open.value = false\n }\n const onKey = (e: KeyboardEvent) => {\n if (open.value && e.key === 'Escape') open.value = false\n }\n onMounted(() => {\n document.addEventListener('mousedown', onDown)\n document.addEventListener('keydown', onKey)\n })\n onBeforeUnmount(() => {\n document.removeEventListener('mousedown', onDown)\n document.removeEventListener('keydown', onKey)\n })\n\n return () => {\n const radius = props.shape === 'circle' ? '50%' : 'var(--iris-radius-md, 6px)'\n const children = []\n\n if (hasActions() && open.value) {\n children.push(\n h(\n 'div',\n {\n 'data-iris-float-button-actions': '',\n role: 'menu',\n style: {\n display: 'flex',\n flexDirection: 'column-reverse',\n gap: '12px',\n alignItems: 'center',\n },\n },\n props.actions!.map((a) =>\n h(\n 'button',\n {\n key: a.key,\n type: 'button',\n role: 'menuitem',\n 'data-iris-float-button-action': '',\n 'data-key': a.key,\n 'aria-label': a.ariaLabel ?? a.label,\n onClick: () => {\n a.onClick?.()\n open.value = false\n },\n style: { ...fab(40, false), borderRadius: radius },\n },\n a.icon ?? a.label,\n ),\n ),\n ),\n )\n }\n\n children.push(\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-float-button': '',\n 'aria-label': props.ariaLabel ?? (hasActions() ? t('floatButton.actions') : undefined),\n 'aria-haspopup': hasActions() ? 'menu' : undefined,\n 'aria-expanded': hasActions() ? (open.value ? 'true' : 'false') : undefined,\n onClick: () => {\n if (hasActions()) open.value = !open.value\n else emit('click')\n },\n style: { ...fab(48, true), borderRadius: radius },\n },\n slots.default ? slots.default() : props.icon,\n ),\n )\n\n return h(\n 'div',\n {\n ...attrs,\n ref: rootEl,\n 'data-iris-float-button-root': '',\n style: {\n position: 'fixed',\n insetBlockEnd: `${props.offset?.bottom ?? 24}px`,\n insetInlineEnd: `${props.offset?.right ?? 24}px`,\n zIndex: '1000',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n children,\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\n\nexport interface IrisAnchorItem {\n href: string\n title: string\n key?: string\n}\n\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n )\n}\n\nconst resolve = (target?: () => HTMLElement | Window | null): HTMLElement | Window =>\n (target ? target() : window) ?? window\n\n/**\n * Anchor: in-page navigation that scroll-spies its `#id` sections — the active\n * link is the last section whose top has passed `offset`. Clicking a link\n * smooth-scrolls to its section (honoring reduced motion).\n */\nexport const IrisAnchor = defineComponent({\n name: 'IrisAnchor',\n inheritAttrs: false,\n props: {\n items: { type: Array as PropType<IrisAnchorItem[]>, default: () => [] },\n /** Scroll container resolver. Defaults to the window. */\n target: { type: Function as PropType<() => HTMLElement | Window | null>, default: undefined },\n /** Top offset (px) for active detection + scroll target. */\n offset: { type: Number, default: 0 },\n ariaLabel: { type: String, default: undefined },\n },\n emits: {\n change: (_href: string) => true,\n },\n setup(props, { attrs, emit }) {\n const active = ref('')\n let el: HTMLElement | Window | undefined\n\n const compute = () => {\n let current = ''\n for (const item of props.items) {\n const node = document.getElementById(item.href.replace(/^#/, ''))\n if (node && node.getBoundingClientRect().top - props.offset <= 1) current = item.href\n }\n if (current !== active.value) {\n active.value = current\n emit('change', current)\n }\n }\n\n onMounted(() => {\n el = resolve(props.target)\n el.addEventListener('scroll', compute, { passive: true })\n compute()\n })\n onBeforeUnmount(() => el?.removeEventListener('scroll', compute))\n\n const onLinkClick = (e: MouseEvent, href: string) => {\n e.preventDefault()\n const node = document.getElementById(href.replace(/^#/, ''))\n if (!node) return\n if (typeof node.scrollIntoView === 'function') {\n node.scrollIntoView({\n behavior: prefersReducedMotion() ? 'auto' : 'smooth',\n block: 'start',\n })\n }\n active.value = href\n emit('change', href)\n }\n\n return () =>\n h('nav', { ...attrs, 'data-iris-anchor': '', 'aria-label': props.ariaLabel }, [\n h(\n 'ul',\n {\n style: {\n listStyle: 'none',\n margin: '0',\n padding: '0',\n borderInlineStart: '2px solid var(--iris-border)',\n },\n },\n props.items.map((item) => {\n const isActive = active.value === item.href\n return h('li', { key: item.key ?? item.href, 'data-iris-anchor-item': '' }, [\n h(\n 'a',\n {\n href: item.href,\n 'data-iris-anchor-link': '',\n 'data-active': isActive ? 'true' : undefined,\n 'aria-current': isActive ? 'true' : undefined,\n onClick: (e: MouseEvent) => onLinkClick(e, item.href),\n style: {\n display: 'block',\n padding: '4px 12px',\n marginInlineStart: '-2px',\n borderInlineStart: `2px solid ${isActive ? 'var(--iris-primary)' : 'transparent'}`,\n color: isActive ? 'var(--iris-primary)' : 'var(--iris-foreground)',\n fontWeight: isActive ? '600' : '400',\n textDecoration: 'none',\n fontSize: '14px',\n },\n },\n item.title,\n ),\n ])\n }),\n ),\n ])\n },\n})\n","import { computed, defineComponent, h, onBeforeUnmount, ref, watch, type PropType } from 'vue'\n\nexport type IrisCountdownSize = 'sm' | 'md' | 'lg'\n\nconst VALUE_FONT: Record<IrisCountdownSize, number> = { sm: 18, md: 24, lg: 30 }\n\nconst pad = (n: number, len: number) => String(n).padStart(len, '0')\n\n/** Render remaining milliseconds via DD/HH/mm/ss/SSS tokens. */\nexport function formatRemaining(ms: number, format: string): string {\n const total = Math.max(0, ms)\n const days = Math.floor(total / 86400000)\n const hours = Math.floor((total % 86400000) / 3600000)\n const minutes = Math.floor((total % 3600000) / 60000)\n const seconds = Math.floor((total % 60000) / 1000)\n const millis = Math.floor(total % 1000)\n return format\n .replace(/DD/g, pad(days, 2))\n .replace(/HH/g, pad(hours, 2))\n .replace(/mm/g, pad(minutes, 2))\n .replace(/ss/g, pad(seconds, 2))\n .replace(/SSS/g, pad(millis, 3))\n}\n\n/**\n * Live countdown to a target timestamp. Ticks every second (or every 100ms\n * when the format shows milliseconds), formats the remaining time via tokens,\n * and emits `finish` once at zero.\n */\nexport const IrisCountdown = defineComponent({\n name: 'IrisCountdown',\n inheritAttrs: false,\n props: {\n /** Target time as an epoch timestamp (ms). */\n value: { type: Number, required: true },\n /** Token format: DD / HH / mm / ss / SSS. */\n format: { type: String, default: 'HH:mm:ss' },\n title: { type: [String, Number], default: undefined },\n prefix: { type: [String, Number], default: undefined },\n suffix: { type: [String, Number], default: undefined },\n size: { type: String as PropType<IrisCountdownSize>, default: 'md' },\n },\n emits: {\n finish: () => true,\n },\n setup(props, { attrs, emit }) {\n const now = ref(Date.now())\n let finished = false\n let timer: ReturnType<typeof setInterval> | undefined\n\n const stop = () => {\n if (timer) {\n clearInterval(timer)\n timer = undefined\n }\n }\n const due = (n: number) => {\n if (props.value - n <= 0 && !finished) {\n finished = true\n emit('finish')\n stop()\n }\n }\n const start = () => {\n stop()\n finished = false\n now.value = Date.now()\n const tick = props.format.includes('SSS') ? 100 : 1000\n timer = setInterval(() => {\n const n = Date.now()\n now.value = n\n due(n)\n }, tick)\n due(Date.now())\n }\n watch(() => [props.value, props.format], start, { immediate: true })\n onBeforeUnmount(stop)\n\n const remaining = computed(() => Math.max(0, props.value - now.value))\n\n return () => {\n const affix = { fontSize: '0.6em', color: 'var(--iris-muted)' }\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-countdown': '',\n 'data-finished': remaining.value <= 0 ? 'true' : undefined,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n props.title != null\n ? h(\n 'div',\n {\n 'data-iris-countdown-title': '',\n style: { fontSize: '13px', color: 'var(--iris-muted)' },\n },\n String(props.title),\n )\n : null,\n h(\n 'div',\n {\n 'data-iris-countdown-value': '',\n style: {\n display: 'inline-flex',\n alignItems: 'baseline',\n gap: '4px',\n fontSize: `${VALUE_FONT[props.size]}px`,\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n fontVariantNumeric: 'tabular-nums',\n },\n },\n [\n props.prefix != null ? h('span', { style: affix }, String(props.prefix)) : null,\n h(\n 'span',\n { 'data-iris-countdown-time': '' },\n formatRemaining(remaining.value, props.format),\n ),\n props.suffix != null ? h('span', { style: affix }, String(props.suffix)) : null,\n ],\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport interface IrisTourStep {\n target?: () => HTMLElement | null\n title?: string\n description?: string\n}\n\ninterface Rect {\n top: number\n left: number\n width: number\n height: number\n}\n\nconst btnBase: Record<string, string> = {\n padding: '4px 12px',\n fontSize: '13px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: 'pointer',\n}\nconst btnGhost: Record<string, string> = {\n ...btnBase,\n border: '1px solid var(--iris-border)',\n background: 'transparent',\n color: 'var(--iris-foreground)',\n}\nconst btnPrimary: Record<string, string> = {\n ...btnBase,\n border: 'none',\n background: 'var(--iris-primary)',\n color: '#fff',\n}\n\n/**\n * Guided tour: an overlay that walks the user through `steps`, spotlighting an\n * optional target per step and showing a dialog card with prev/next/skip\n * controls. Visibility is `v-model:open`; the step index is managed internally\n * and resets each time the tour opens.\n */\nexport const IrisTour = defineComponent({\n name: 'IrisTour',\n inheritAttrs: false,\n props: {\n steps: { type: Array as PropType<IrisTourStep[]>, default: () => [] },\n open: { type: Boolean, default: false },\n },\n emits: {\n 'update:open': (_open: boolean) => true,\n change: (_index: number) => true,\n close: () => true,\n finish: () => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const step = ref(0)\n const spotlight = ref<Rect | null>(null)\n\n const computeSpotlight = () => {\n const data = props.steps[step.value]\n const el = data?.target?.()\n if (el) {\n const r = el.getBoundingClientRect()\n spotlight.value = { top: r.top, left: r.left, width: r.width, height: r.height }\n } else {\n spotlight.value = null\n }\n }\n\n watch(\n () => props.open,\n (o) => {\n if (o) {\n step.value = 0\n computeSpotlight()\n }\n },\n { immediate: true },\n )\n watch(step, computeSpotlight)\n\n const close = () => {\n emit('update:open', false)\n emit('close')\n }\n const onKey = (e: KeyboardEvent) => {\n if (props.open && e.key === 'Escape') close()\n }\n onMounted(() => document.addEventListener('keydown', onKey))\n onBeforeUnmount(() => document.removeEventListener('keydown', onKey))\n\n return () => {\n const total = props.steps.length\n if (!props.open || total === 0) return null\n const current = Math.min(step.value, total - 1)\n const data = props.steps[current]\n if (!data) return null\n const isLast = current === total - 1\n\n const next = () => {\n if (!isLast) {\n step.value = current + 1\n emit('change', current + 1)\n } else {\n emit('finish')\n close()\n }\n }\n const prev = () => {\n if (current > 0) {\n step.value = current - 1\n emit('change', current - 1)\n }\n }\n\n const sl = spotlight.value\n const spotlit = !!sl && sl.width > 0\n const cardPos: Record<string, string> =\n spotlit && sl\n ? { top: `${sl.top + sl.height + 12}px`, insetInlineStart: `${sl.left}px` }\n : { top: '50%', insetInlineStart: '50%', transform: 'translate(-50%, -50%)' }\n const dialogLabel = data.title ?? t('tour.step', { current: current + 1, total })\n\n return h('div', { ...attrs, 'data-iris-tour': '' }, [\n h('div', {\n 'data-iris-tour-backdrop': '',\n onClick: close,\n style: { position: 'fixed', inset: '0', background: 'rgba(0,0,0,0.45)', zIndex: '1000' },\n }),\n spotlit && sl\n ? h('div', {\n 'data-iris-tour-spotlight': '',\n style: {\n position: 'fixed',\n top: `${sl.top - 4}px`,\n insetInlineStart: `${sl.left - 4}px`,\n width: `${sl.width + 8}px`,\n height: `${sl.height + 8}px`,\n border: '2px solid var(--iris-primary)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n boxShadow: '0 0 0 9999px rgba(0,0,0,0.45)',\n zIndex: '1001',\n pointerEvents: 'none',\n },\n })\n : null,\n h(\n 'div',\n {\n 'data-iris-tour-card': '',\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-label': dialogLabel,\n style: {\n position: 'fixed',\n zIndex: '1002',\n maxWidth: '320px',\n padding: '16px',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.18)',\n ...cardPos,\n },\n },\n [\n data.title != null\n ? h(\n 'div',\n {\n 'data-iris-tour-title': '',\n style: { fontWeight: '600', marginBlockEnd: '6px' },\n },\n data.title,\n )\n : null,\n data.description != null\n ? h(\n 'div',\n {\n 'data-iris-tour-description': '',\n style: {\n fontSize: '14px',\n color: 'var(--iris-foreground)',\n marginBlockEnd: '12px',\n },\n },\n data.description,\n )\n : null,\n h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n },\n },\n [\n h(\n 'span',\n {\n 'data-iris-tour-indicator': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)' },\n },\n t('tour.step', { current: current + 1, total }),\n ),\n h('div', { style: { display: 'flex', gap: '8px' } }, [\n h(\n 'button',\n { type: 'button', 'data-iris-tour-skip': '', onClick: close, style: btnGhost },\n t('tour.skip'),\n ),\n current > 0\n ? h(\n 'button',\n {\n type: 'button',\n 'data-iris-tour-prev': '',\n onClick: prev,\n style: btnGhost,\n },\n t('tour.prev'),\n )\n : null,\n h(\n 'button',\n { type: 'button', 'data-iris-tour-next': '', onClick: next, style: btnPrimary },\n isLast ? t('tour.finish') : t('tour.next'),\n ),\n ]),\n ],\n ),\n ],\n ),\n ])\n }\n },\n})\n","import { defineComponent, h, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\n/**\n * Tag / token input: a field where typed text becomes removable chips. Commit\n * a tag with Enter or a comma (pasted comma lists split too); Backspace on an\n * empty input removes the last tag; each chip has a remove button.\n */\nexport const IrisTagInput = defineComponent({\n name: 'IrisTagInput',\n inheritAttrs: false,\n props: {\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n /** Max number of tags. 0 / undefined = unlimited. */\n max: { type: Number, default: undefined },\n allowDuplicates: { type: Boolean, default: false },\n id: { type: String, default: undefined },\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_tags: string[]) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const input = ref('')\n const focused = ref(false)\n\n const canAdd = (txt: string, list: string[]) =>\n !!txt &&\n (props.allowDuplicates || !list.includes(txt)) &&\n (!props.max || list.length < props.max)\n\n const addTag = () => {\n const txt = input.value.trim()\n if (txt && canAdd(txt, props.modelValue))\n emit('update:modelValue', [...props.modelValue, txt])\n input.value = ''\n }\n const removeAt = (i: number) => {\n if (props.disabled) return\n emit(\n 'update:modelValue',\n props.modelValue.filter((_, k) => k !== i),\n )\n }\n\n const onInput = (e: Event) => {\n const raw = (e.target as HTMLInputElement).value\n if (raw.includes(',')) {\n const parts = raw.split(',')\n const last = parts.pop() ?? ''\n let next = props.modelValue\n for (const p of parts) {\n const txt = p.trim()\n if (canAdd(txt, next)) next = [...next, txt]\n }\n if (next !== props.modelValue) emit('update:modelValue', next)\n input.value = last\n } else {\n input.value = raw\n }\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n addTag()\n } else if (e.key === 'Backspace' && input.value === '' && props.modelValue.length > 0) {\n e.preventDefault()\n removeAt(props.modelValue.length - 1)\n }\n }\n\n return () => {\n const borderColor = props.invalid\n ? 'var(--iris-danger)'\n : focused.value\n ? 'var(--iris-primary)'\n : 'var(--iris-border)'\n const children = props.modelValue.map((tag, i) =>\n h(\n 'span',\n {\n key: `${tag}-${i}`,\n 'data-iris-tag-input-tag': '',\n 'data-value': tag,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '2px 6px',\n fontSize: '13px',\n background: 'var(--iris-surface)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n color: 'var(--iris-foreground)',\n },\n },\n [\n tag,\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-tag-input-remove': '',\n 'aria-label': t('tagInput.remove', { tag }),\n disabled: props.disabled || undefined,\n onClick: () => removeAt(i),\n style: {\n border: 'none',\n background: 'transparent',\n color: 'var(--iris-muted)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n fontSize: '14px',\n lineHeight: '1',\n padding: '0',\n },\n },\n '×',\n ),\n ],\n ),\n )\n\n children.push(\n h('input', {\n id: props.id,\n type: 'text',\n 'data-iris-tag-input-field': '',\n value: input.value,\n placeholder: props.modelValue.length === 0 ? props.placeholder : undefined,\n disabled: props.disabled || undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n onInput,\n onKeydown: onKeyDown,\n onFocus: () => {\n focused.value = true\n },\n onBlur: () => {\n focused.value = false\n },\n style: {\n flex: '1',\n minWidth: '80px',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'var(--iris-foreground)',\n fontFamily: 'inherit',\n fontSize: '14px',\n padding: '2px 0',\n },\n }),\n )\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-tag-input': '',\n 'data-state': props.invalid ? 'invalid' : focused.value ? 'focused' : 'idle',\n style: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '6px',\n padding: '4px 8px',\n minHeight: '34px',\n background: 'var(--iris-background)',\n border: `1px solid ${borderColor}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n opacity: props.disabled ? '0.6' : '1',\n boxShadow: focused.value ? '0 0 0 3px rgba(99, 102, 241, 0.18)' : 'none',\n transition: 'border-color 120ms ease, box-shadow 120ms ease',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n children,\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, ref, type PropType } from 'vue'\nimport { copyText } from '@iris-ui-kit/core'\nimport { useI18n } from '../../i18n'\n\nexport type IrisCopyButtonSize = 'sm' | 'md' | 'lg'\n\nconst SIZE_MAP: Record<IrisCopyButtonSize, { padding: string; fontSize: string }> = {\n sm: { padding: '4px 8px', fontSize: '12px' },\n md: { padding: '6px 12px', fontSize: '14px' },\n lg: { padding: '8px 16px', fontSize: '16px' },\n}\n\n/**\n * Copy-to-clipboard button: writes `text` to the clipboard and flips to a\n * \"Copied\" state for `timeout` ms. The clipboard write is best-effort (guarded\n * for unsupported environments) and the copied state still reflects intent.\n */\nexport const IrisCopyButton = defineComponent({\n name: 'IrisCopyButton',\n inheritAttrs: false,\n props: {\n text: { type: String, required: true },\n /** Content shown briefly after copying (default: localized \"Copied\"). */\n copiedLabel: { type: String, default: undefined },\n /** How long the copied state lasts (ms). */\n timeout: { type: Number, default: 2000 },\n disabled: { type: Boolean, default: false },\n size: { type: String as PropType<IrisCopyButtonSize>, default: 'md' },\n },\n emits: {\n copy: (_text: string) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n const copied = ref(false)\n let timer: ReturnType<typeof setTimeout> | undefined\n\n const copy = async () => {\n if (props.disabled) return\n try {\n // A host clipboard handler (setClipboardHandler) wins — needed where\n // navigator.clipboard is unavailable (Cordova file://, custom protocols).\n if (!(await copyText(props.text))) {\n // writeText returns a Promise; swallow async rejection (permission denied).\n void navigator.clipboard?.writeText?.(props.text)?.catch(() => {})\n }\n } catch {\n /* host handler / clipboard unavailable — still surface the copied state */\n }\n copied.value = true\n emit('copy', props.text)\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => {\n copied.value = false\n }, props.timeout)\n }\n onBeforeUnmount(() => {\n if (timer) clearTimeout(timer)\n })\n\n return () => {\n const sz = SIZE_MAP[props.size]\n const label = copied.value\n ? (props.copiedLabel ?? t('copyButton.copied'))\n : slots.default\n ? slots.default()\n : t('copyButton.copy')\n return h(\n 'button',\n {\n ...attrs,\n type: 'button',\n 'data-iris-copy-button': '',\n 'data-copied': copied.value ? 'true' : undefined,\n disabled: props.disabled || undefined,\n onClick: copy,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n padding: sz.padding,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: copied.value ? 'var(--iris-success, #16a34a)' : 'var(--iris-surface)',\n color: copied.value ? '#fff' : 'var(--iris-foreground)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'background-color 120ms ease, color 120ms ease',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n label,\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisProgressCircleStatus = 'default' | 'success' | 'danger' | 'warning'\n\nconst COLOR: Record<IrisProgressCircleStatus, string> = {\n default: 'var(--iris-primary)',\n success: 'var(--iris-success, #16a34a)',\n danger: 'var(--iris-danger)',\n warning: 'var(--iris-warning, #f59e0b)',\n}\n\n/**\n * Circular (ring) progress indicator built from a structured SVG — a track\n * circle plus a value circle whose `stroke-dashoffset` encodes the ratio. An\n * optional centered percent label sits on top. Distinct from the linear\n * `IrisProgress`.\n */\nexport const IrisProgressCircle = defineComponent({\n name: 'IrisProgressCircle',\n inheritAttrs: false,\n props: {\n value: { type: Number, required: true },\n max: { type: Number, default: 100 },\n /** Diameter in px. */\n size: { type: Number, default: 80 },\n strokeWidth: { type: Number, default: 6 },\n status: { type: String as PropType<IrisProgressCircleStatus>, default: 'default' },\n showLabel: { type: Boolean, default: true },\n /** Custom center label given the rounded percent. */\n format: { type: Function as PropType<(percent: number) => string>, default: undefined },\n ariaLabel: { type: String, default: undefined },\n },\n setup(props, { attrs }) {\n return () => {\n const ratio = Math.max(0, Math.min(1, props.max > 0 ? props.value / props.max : 0))\n const percent = Math.round(ratio * 100)\n const center = props.size / 2\n const r = (props.size - props.strokeWidth) / 2\n const circumference = 2 * Math.PI * r\n const offset = circumference * (1 - ratio)\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-progress-circle': '',\n 'data-status': props.status,\n role: 'progressbar',\n 'aria-valuenow': props.value,\n 'aria-valuemin': 0,\n 'aria-valuemax': props.max,\n 'aria-valuetext': `${percent}%`,\n 'aria-label': props.ariaLabel,\n style: {\n position: 'relative',\n display: 'inline-flex',\n width: `${props.size}px`,\n height: `${props.size}px`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'svg',\n {\n width: props.size,\n height: props.size,\n viewBox: `0 0 ${props.size} ${props.size}`,\n 'aria-hidden': 'true',\n },\n [\n h('circle', {\n cx: center,\n cy: center,\n r,\n fill: 'none',\n stroke: 'var(--iris-border)',\n 'stroke-width': props.strokeWidth,\n }),\n h('circle', {\n 'data-iris-progress-circle-value': '',\n cx: center,\n cy: center,\n r,\n fill: 'none',\n stroke: COLOR[props.status],\n 'stroke-width': props.strokeWidth,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circumference,\n 'stroke-dashoffset': offset,\n transform: `rotate(-90 ${center} ${center})`,\n style: { transition: 'stroke-dashoffset 200ms ease' },\n }),\n ],\n ),\n props.showLabel\n ? h(\n 'span',\n {\n 'data-iris-progress-circle-label': '',\n style: {\n position: 'absolute',\n inset: '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: `${Math.round(props.size * 0.25)}px`,\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n fontVariantNumeric: 'tabular-nums',\n },\n },\n props.format ? props.format(percent) : `${percent}%`,\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisSplitButtonVariant = 'primary' | 'default'\nexport type IrisSplitButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface IrisSplitButtonAction {\n key: string\n label: string\n disabled?: boolean\n onClick?: () => void\n}\n\nconst SIZE_MAP: Record<IrisSplitButtonSize, { padding: string; fontSize: string; height: string }> =\n {\n sm: { padding: '4px 10px', fontSize: '12px', height: '28px' },\n md: { padding: '6px 14px', fontSize: '14px', height: '34px' },\n lg: { padding: '8px 18px', fontSize: '16px', height: '40px' },\n }\n\n/**\n * Split button: a primary action joined to a caret that opens a `role=\"menu\"`\n * of secondary actions (dismissed by selection, Escape, or outside click).\n */\nexport const IrisSplitButton = defineComponent({\n name: 'IrisSplitButton',\n inheritAttrs: false,\n props: {\n actions: { type: Array as PropType<IrisSplitButtonAction[]>, default: undefined },\n variant: { type: String as PropType<IrisSplitButtonVariant>, default: 'primary' },\n size: { type: String as PropType<IrisSplitButtonSize>, default: 'md' },\n disabled: { type: Boolean, default: false },\n menuAriaLabel: { type: String, default: undefined },\n },\n emits: {\n click: () => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n const rootEl = ref<HTMLElement | null>(null)\n const open = ref(false)\n const hasActions = () => !!props.actions && props.actions.length > 0\n\n const onDown = (e: MouseEvent) => {\n if (open.value && rootEl.value && !rootEl.value.contains(e.target as Node)) open.value = false\n }\n const onKey = (e: KeyboardEvent) => {\n if (open.value && e.key === 'Escape') open.value = false\n }\n onMounted(() => {\n document.addEventListener('mousedown', onDown)\n document.addEventListener('keydown', onKey)\n })\n onBeforeUnmount(() => {\n document.removeEventListener('mousedown', onDown)\n document.removeEventListener('keydown', onKey)\n })\n\n const select = (a: IrisSplitButtonAction) => {\n if (a.disabled) return\n a.onClick?.()\n open.value = false\n }\n\n return () => {\n const sz = SIZE_MAP[props.size]\n const colors: Record<string, string> =\n props.variant === 'primary'\n ? {\n background: 'var(--iris-primary)',\n color: '#fff',\n border: '1px solid var(--iris-primary)',\n }\n : {\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n }\n const label = props.menuAriaLabel ?? t('splitButton.more')\n const children = [\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-split-button-main': '',\n disabled: props.disabled || undefined,\n onClick: () => {\n if (!props.disabled) emit('click')\n },\n style: {\n ...colors,\n padding: sz.padding,\n minHeight: sz.height,\n fontSize: sz.fontSize,\n fontFamily: 'inherit',\n borderStartStartRadius: 'var(--iris-radius-md, 6px)',\n borderEndStartRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n },\n },\n slots.default ? slots.default() : undefined,\n ),\n ]\n\n if (hasActions()) {\n children.push(\n h(\n 'button',\n {\n type: 'button',\n 'data-iris-split-button-trigger': '',\n 'aria-haspopup': 'menu',\n 'aria-expanded': open.value ? 'true' : 'false',\n 'aria-label': label,\n disabled: props.disabled || undefined,\n onClick: () => {\n if (!props.disabled) open.value = !open.value\n },\n style: {\n ...colors,\n borderInlineStart:\n props.variant === 'primary'\n ? '1px solid rgba(255,255,255,0.3)'\n : '1px solid var(--iris-border)',\n padding: '0 8px',\n minHeight: sz.height,\n fontSize: '10px',\n borderStartEndRadius: 'var(--iris-radius-md, 6px)',\n borderEndEndRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n display: 'inline-flex',\n alignItems: 'center',\n },\n },\n '▾',\n ),\n )\n }\n\n if (open.value && hasActions()) {\n children.push(\n h(\n 'ul',\n {\n role: 'menu',\n 'aria-label': label,\n 'data-iris-split-button-menu': '',\n style: {\n position: 'absolute',\n insetInlineEnd: '0',\n top: '100%',\n marginBlockStart: '4px',\n minWidth: '140px',\n listStyle: 'none',\n margin: '0',\n padding: '4px',\n zIndex: '50',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n },\n },\n props.actions!.map((a) =>\n h(\n 'li',\n {\n key: a.key,\n role: 'menuitem',\n 'aria-disabled': a.disabled ? 'true' : undefined,\n 'data-iris-split-button-item': '',\n 'data-key': a.key,\n onClick: () => select(a),\n style: {\n padding: '6px 10px',\n fontSize: '14px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: a.disabled ? 'not-allowed' : 'pointer',\n color: a.disabled ? 'var(--iris-muted)' : 'var(--iris-foreground)',\n },\n },\n a.label,\n ),\n ),\n ),\n )\n }\n\n return h(\n 'div',\n {\n ...attrs,\n ref: rootEl,\n 'data-iris-split-button': '',\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n position: 'relative',\n display: 'inline-flex',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n children,\n )\n }\n },\n})\n","import { defineComponent, h } from 'vue'\n\n/**\n * Aspect-ratio box: constrains its slot content to a fixed width/height ratio\n * (via the CSS `aspect-ratio` property), with an absolutely-filled content\n * layer — handy for images, video, and iframe embeds.\n */\nexport const IrisAspectRatio = defineComponent({\n name: 'IrisAspectRatio',\n inheritAttrs: false,\n props: {\n /** Width / height ratio. */\n ratio: { type: Number, default: 16 / 9 },\n },\n setup(props, { attrs, slots }) {\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-aspect-ratio': '',\n 'data-ratio': props.ratio,\n style: {\n position: 'relative',\n width: '100%',\n aspectRatio: String(props.ratio),\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n 'data-iris-aspect-ratio-content': '',\n style: { position: 'absolute', inset: '0', width: '100%', height: '100%' },\n },\n slots.default?.(),\n ),\n ],\n )\n },\n})\n","import { defineComponent, h } from 'vue'\n\nconst SR_ONLY: Record<string, string> = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: '0',\n}\n\n/**\n * Visually-hidden content: present in the accessibility tree (read by screen\n * readers) but clipped from view — for labels, live-region announcements, and\n * extra context. Forwards attributes like `aria-live` / `role`.\n */\nexport const IrisVisuallyHidden = defineComponent({\n name: 'IrisVisuallyHidden',\n inheritAttrs: false,\n setup(_props, { attrs, slots }) {\n return () =>\n h(\n 'span',\n {\n ...attrs,\n 'data-iris-visually-hidden': '',\n style: { ...SR_ONLY, ...((attrs.style as Record<string, string> | undefined) ?? {}) },\n },\n slots.default?.(),\n )\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisScrollAreaAxis = 'vertical' | 'horizontal' | 'both'\n\nconst OVERFLOW: Record<IrisScrollAreaAxis, Record<string, string>> = {\n vertical: { overflowY: 'auto', overflowX: 'hidden' },\n horizontal: { overflowX: 'auto', overflowY: 'hidden' },\n both: { overflow: 'auto' },\n}\n\nconst px = (v: number | string | undefined): string | undefined =>\n typeof v === 'number' ? `${v}px` : v\n\n/**\n * Scroll area: a keyboard-focusable scroll container that constrains its slot\n * content via `maxHeight` / `maxWidth` and scrolls on the chosen `axis`. A\n * lightweight alternative to ad-hoc overflow styling.\n */\nexport const IrisScrollArea = defineComponent({\n name: 'IrisScrollArea',\n inheritAttrs: false,\n props: {\n maxHeight: { type: [Number, String], default: undefined },\n maxWidth: { type: [Number, String], default: undefined },\n axis: { type: String as PropType<IrisScrollAreaAxis>, default: 'vertical' },\n },\n setup(props, { attrs, slots }) {\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-scroll-area': '',\n 'data-axis': props.axis,\n tabindex: 0,\n style: {\n ...OVERFLOW[props.axis],\n maxHeight: px(props.maxHeight),\n maxWidth: px(props.maxWidth),\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisRibbonPlacement = 'start' | 'end'\n\n/**\n * Ribbon: a corner badge (\"New\", \"Sale\", …) anchored to the top corner of its\n * slot content. RTL-safe via logical insets/radii.\n */\nexport const IrisRibbon = defineComponent({\n name: 'IrisRibbon',\n inheritAttrs: false,\n props: {\n text: { type: [String, Number], default: '' },\n /** Corner: 'end' = top inline-end; 'start' = top inline-start. */\n placement: { type: String as PropType<IrisRibbonPlacement>, default: 'end' },\n /** Badge background (defaults to the primary color). */\n color: { type: String, default: undefined },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const side: Record<string, string> =\n props.placement === 'end'\n ? {\n insetInlineEnd: '0',\n borderStartStartRadius: 'var(--iris-radius-sm, 4px)',\n borderEndStartRadius: 'var(--iris-radius-sm, 4px)',\n }\n : {\n insetInlineStart: '0',\n borderStartEndRadius: 'var(--iris-radius-sm, 4px)',\n borderEndEndRadius: 'var(--iris-radius-sm, 4px)',\n }\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-ribbon': '',\n 'data-placement': props.placement,\n style: {\n position: 'relative',\n display: 'inline-block',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n slots.default?.(),\n h(\n 'span',\n {\n 'data-iris-ribbon-badge': '',\n style: {\n position: 'absolute',\n insetBlockStart: '8px',\n background: props.color ?? 'var(--iris-primary)',\n color: '#fff',\n padding: '2px 10px',\n fontSize: '12px',\n fontWeight: '600',\n boxShadow: '0 2px 5px rgba(0,0,0,0.2)',\n whiteSpace: 'nowrap',\n ...side,\n },\n },\n String(props.text),\n ),\n ],\n )\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\n\nexport type IrisGaugeStatus = 'default' | 'success' | 'danger' | 'warning'\n\nconst COLOR: Record<IrisGaugeStatus, string> = {\n default: 'var(--iris-primary)',\n success: 'var(--iris-success, #16a34a)',\n danger: 'var(--iris-danger)',\n warning: 'var(--iris-warning, #f59e0b)',\n}\n\n/**\n * Semicircular arc gauge built from a structured SVG — a 180° track arc plus a\n * value arc whose `stroke-dashoffset` encodes `(value − min) / (max − min)`.\n * Distinct from the full-ring `IrisProgressCircle`.\n */\nexport const IrisGauge = defineComponent({\n name: 'IrisGauge',\n inheritAttrs: false,\n props: {\n value: { type: Number, required: true },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n /** Diameter in px. */\n size: { type: Number, default: 120 },\n strokeWidth: { type: Number, default: 10 },\n status: { type: String as PropType<IrisGaugeStatus>, default: 'default' },\n showValue: { type: Boolean, default: true },\n /** Custom center label given the value and rounded percent. */\n format: {\n type: Function as PropType<(value: number, percent: number) => string>,\n default: undefined,\n },\n ariaLabel: { type: String, default: undefined },\n },\n setup(props, { attrs }) {\n return () => {\n const span = props.max - props.min\n const ratio = Math.max(0, Math.min(1, span > 0 ? (props.value - props.min) / span : 0))\n const percent = Math.round(ratio * 100)\n const mid = props.size / 2\n const r = (props.size - props.strokeWidth) / 2\n const arc = Math.PI * r\n const offset = arc * (1 - ratio)\n const d = `M ${props.strokeWidth / 2} ${mid} A ${r} ${r} 0 0 1 ${props.size - props.strokeWidth / 2} ${mid}`\n const height = props.size / 2 + props.strokeWidth / 2\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-gauge': '',\n 'data-status': props.status,\n role: 'meter',\n 'aria-valuenow': props.value,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuetext': `${percent}%`,\n 'aria-label': props.ariaLabel,\n style: {\n position: 'relative',\n display: 'inline-block',\n width: `${props.size}px`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'svg',\n {\n width: props.size,\n height,\n viewBox: `0 0 ${props.size} ${height}`,\n 'aria-hidden': 'true',\n },\n [\n h('path', {\n d,\n fill: 'none',\n stroke: 'var(--iris-border)',\n 'stroke-width': props.strokeWidth,\n 'stroke-linecap': 'round',\n }),\n h('path', {\n 'data-iris-gauge-value': '',\n d,\n fill: 'none',\n stroke: COLOR[props.status],\n 'stroke-width': props.strokeWidth,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': arc,\n 'stroke-dashoffset': offset,\n style: { transition: 'stroke-dashoffset 200ms ease' },\n }),\n ],\n ),\n props.showValue\n ? h(\n 'div',\n {\n 'data-iris-gauge-label': '',\n style: {\n position: 'absolute',\n insetBlockEnd: '0',\n insetInlineStart: '0',\n width: '100%',\n textAlign: 'center',\n fontSize: `${Math.round(props.size * 0.18)}px`,\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n fontVariantNumeric: 'tabular-nums',\n },\n },\n props.format ? props.format(props.value, percent) : `${percent}%`,\n )\n : null,\n ],\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\n\nexport type IrisMarqueeDirection = 'left' | 'right'\n\nfunction prefersReducedMotion(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n )\n}\n\n/**\n * Marquee: an accessible auto-scrolling ticker. The slot content is rendered\n * twice (the second copy `aria-hidden`) for a seamless loop and animated with\n * the Web Animations API (no `@keyframes` injection). Pauses on hover and is\n * disabled under `prefers-reduced-motion`.\n */\nexport const IrisMarquee = defineComponent({\n name: 'IrisMarquee',\n inheritAttrs: false,\n props: {\n /** Seconds for one full loop. */\n duration: { type: Number, default: 10 },\n direction: { type: String as PropType<IrisMarqueeDirection>, default: 'left' },\n pauseOnHover: { type: Boolean, default: true },\n /** Gap between the repeated copies (px). */\n gap: { type: Number, default: 40 },\n },\n setup(props, { attrs, slots }) {\n const trackEl = ref<HTMLElement | null>(null)\n let anim: Animation | null = null\n\n onMounted(() => {\n const el = trackEl.value\n if (!el || typeof el.animate !== 'function' || prefersReducedMotion()) return\n const frames =\n props.direction === 'left'\n ? [{ transform: 'translateX(0%)' }, { transform: 'translateX(-50%)' }]\n : [{ transform: 'translateX(-50%)' }, { transform: 'translateX(0%)' }]\n anim = el.animate(frames, {\n duration: Math.max(1, props.duration) * 1000,\n iterations: Infinity,\n })\n })\n onBeforeUnmount(() => anim?.cancel())\n\n const copy = (hidden: boolean) =>\n h(\n 'div',\n {\n 'data-iris-marquee-content': '',\n 'aria-hidden': hidden ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: `${props.gap}px`,\n flexShrink: '0',\n paddingInlineEnd: `${props.gap}px`,\n },\n },\n slots.default?.(),\n )\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-marquee': '',\n onMouseenter: () => {\n if (props.pauseOnHover) anim?.pause()\n },\n onMouseleave: () => {\n if (props.pauseOnHover) anim?.play()\n },\n style: {\n display: 'flex',\n overflow: 'hidden',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n ref: trackEl,\n 'data-iris-marquee-track': '',\n style: { display: 'inline-flex', flexShrink: '0', willChange: 'transform' },\n },\n [copy(false), copy(true)],\n ),\n ],\n )\n },\n})\n","import { Comment, defineComponent, Fragment, h, type VNode } from 'vue'\n\n/** Flatten fragment slot output and drop comment placeholders (v-if etc.). */\nfunction flatten(nodes: VNode[]): VNode[] {\n const out: VNode[] = []\n for (const n of nodes) {\n if (n && n.type === Fragment && Array.isArray(n.children)) {\n out.push(...flatten(n.children as VNode[]))\n } else if (n && n.type !== Comment) {\n out.push(n)\n }\n }\n return out\n}\n\n/**\n * Masonry layout: flows slot children into balanced columns via CSS\n * multi-column, with each item kept from breaking across columns — for card\n * grids and galleries of varying heights.\n */\nexport const IrisMasonry = defineComponent({\n name: 'IrisMasonry',\n inheritAttrs: false,\n props: {\n /** Number of columns. */\n columns: { type: Number, default: 3 },\n /** Gap between items (px). */\n gap: { type: Number, default: 16 },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const items = flatten(slots.default?.() ?? [])\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-masonry': '',\n 'data-columns': props.columns,\n style: {\n columnCount: String(props.columns),\n columnGap: `${props.gap}px`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n items.map((child, i) =>\n h(\n 'div',\n {\n key: i,\n 'data-iris-masonry-item': '',\n style: { breakInside: 'avoid', marginBlockEnd: `${props.gap}px` },\n },\n [child],\n ),\n ),\n )\n }\n },\n})\n","import { defineComponent, h } from 'vue'\n\n/**\n * Fieldset: a semantic `<fieldset>` / `<legend>` form grouping. `disabled` uses\n * the native fieldset behavior that cascades to every nested form control —\n * accessible by construction. Pass `#legend` for a rich legend.\n */\nexport const IrisFieldset = defineComponent({\n name: 'IrisFieldset',\n inheritAttrs: false,\n props: {\n legend: { type: String, default: undefined },\n /** Disables the whole group (native fieldset disabling propagates). */\n disabled: { type: Boolean, default: false },\n hint: { type: String, default: undefined },\n },\n setup(props, { attrs, slots }) {\n return () => {\n const legendNode =\n slots.legend || props.legend != null\n ? h(\n 'legend',\n {\n 'data-iris-fieldset-legend': '',\n style: {\n padding: '0 6px',\n fontSize: '14px',\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n },\n },\n slots.legend ? slots.legend() : props.legend,\n )\n : null\n const hintNode =\n props.hint != null\n ? h(\n 'div',\n {\n 'data-iris-fieldset-hint': '',\n style: { fontSize: '12px', color: 'var(--iris-muted)', marginBlockEnd: '8px' },\n },\n props.hint,\n )\n : null\n\n return h(\n 'fieldset',\n {\n ...attrs,\n 'data-iris-fieldset': '',\n disabled: props.disabled || undefined,\n style: {\n minInlineSize: '0',\n margin: '0',\n padding: '16px',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n opacity: props.disabled ? '0.6' : '1',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [legendNode, hintNode, slots.default?.()],\n )\n }\n },\n})\n","import { defineComponent, h, onMounted, ref, type PropType } from 'vue'\n\nexport type IrisToolbarOrientation = 'horizontal' | 'vertical'\n\nconst SELECTOR = 'button, [href], input, select, textarea, [tabindex]'\n\n/**\n * Toolbar: a `role=\"toolbar\"` grouping of actions with roving-tabindex keyboard\n * navigation — one item is in the tab order, and Arrow keys (per orientation)\n * plus Home/End move focus and the tab stop between the focusable children.\n */\nexport const IrisToolbar = defineComponent({\n name: 'IrisToolbar',\n inheritAttrs: false,\n props: {\n orientation: { type: String as PropType<IrisToolbarOrientation>, default: 'horizontal' },\n ariaLabel: { type: String, default: undefined },\n },\n setup(props, { attrs, slots }) {\n const root = ref<HTMLElement | null>(null)\n\n const items = (): HTMLElement[] => {\n if (!root.value) return []\n return (Array.from(root.value.querySelectorAll(SELECTOR)) as HTMLElement[]).filter(\n (el) => !el.hasAttribute('disabled'),\n )\n }\n\n onMounted(() => {\n items().forEach((el, i) => {\n el.tabIndex = i === 0 ? 0 : -1\n })\n })\n\n const onKeyDown = (e: KeyboardEvent) => {\n const nextKey = props.orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n const prevKey = props.orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const list = items()\n if (list.length === 0) return\n const cur = list.indexOf(document.activeElement as HTMLElement)\n let target: number\n if (e.key === nextKey) target = ((cur < 0 ? 0 : cur) + 1) % list.length\n else if (e.key === prevKey) target = ((cur < 0 ? 0 : cur) - 1 + list.length) % list.length\n else if (e.key === 'Home') target = 0\n else if (e.key === 'End') target = list.length - 1\n else return\n e.preventDefault()\n list.forEach((el, i) => {\n el.tabIndex = i === target ? 0 : -1\n })\n list[target]?.focus()\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n ref: root,\n role: 'toolbar',\n 'aria-orientation': props.orientation,\n 'aria-label': props.ariaLabel,\n 'data-iris-toolbar': '',\n 'data-orientation': props.orientation,\n onKeydown: onKeyDown,\n style: {\n display: 'inline-flex',\n flexDirection: props.orientation === 'vertical' ? 'column' : 'row',\n alignItems: 'center',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n","// Date helpers now live in @iris-ui-kit/core (single source across all four\n// frameworks). Re-exported so existing `./dateUtils` imports keep working.\nexport {\n startOfDay,\n isSameDay,\n isSameMonth,\n addDays,\n addMonths,\n startOfMonth,\n endOfMonth,\n buildMonthMatrix,\n formatMonthYear,\n getWeekdayNames,\n formatLocalISO,\n clampDate,\n isOutOfRange,\n} from '@iris-ui-kit/core'\n\n/**\n * A locale tag safe to hand to `Intl.DateTimeFormat`. A malformed BCP-47 tag\n * (e.g. `'en_US'`, `'bad locale!'`) would otherwise throw a `RangeError` and\n * crash the calendar. `undefined` passes through so the runtime default locale\n * is used; a malformed tag also falls back to that default.\n */\nexport function safeLocale(locale: string | undefined): string | undefined {\n if (locale === undefined) return undefined\n try {\n return Intl.getCanonicalLocales(locale)[0] ?? undefined\n } catch {\n return undefined\n }\n}\n","import { computed, defineComponent, h, ref, watch, type PropType } from 'vue'\nimport {\n addDays,\n addMonths,\n buildMonthMatrix,\n clampDate,\n endOfMonth,\n formatLocalISO,\n formatMonthYear,\n getWeekdayNames,\n isOutOfRange,\n isSameDay,\n isSameMonth,\n safeLocale,\n startOfDay,\n startOfMonth,\n} from './dateUtils'\nimport { useI18n } from '../../i18n'\n\n/**\n * Month-view calendar. Single date selection only (range pickers are a\n * follow-up). Pure presentation + keyboard navigation; the trigger overlay\n * lives in `IrisDatePicker`.\n *\n * Keyboard:\n * - Arrow keys move the focused date\n * - Home / End jump to start/end of the focused week\n * - PageUp / PageDown move by month\n * - Enter / Space select the focused date\n */\nexport const IrisCalendar = defineComponent({\n name: 'IrisCalendar',\n inheritAttrs: false,\n props: {\n modelValue: { type: Date as unknown as PropType<Date | null>, default: null },\n /** Initial visible month (defaults to selected value or today). */\n defaultMonth: { type: Date as unknown as PropType<Date | null>, default: null },\n min: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n max: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n /** 0–6, 0 = Sunday. Default 0. */\n weekStartsOn: { type: Number, default: 0 },\n locale: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: Date | null) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const initialMonth = props.defaultMonth ?? props.modelValue ?? new Date()\n const visibleMonth = ref(startOfMonth(initialMonth))\n const focusDate = ref<Date>(clampDate(props.modelValue ?? new Date(), props.min, props.max))\n\n // Sync visible month if controlled modelValue changes to a different month.\n watch(\n () => props.modelValue,\n (value) => {\n if (value && !isSameMonth(value, visibleMonth.value)) {\n visibleMonth.value = startOfMonth(value)\n focusDate.value = clampDate(value, props.min, props.max)\n }\n },\n )\n\n const matrix = computed(() => buildMonthMatrix(visibleMonth.value, props.weekStartsOn))\n const weekdays = computed(() => getWeekdayNames(props.weekStartsOn, props.locale))\n const title = computed(() => formatMonthYear(visibleMonth.value, props.locale))\n // One memoized formatter for the full-date cell label (e.g. \"Monday, June 9,\n // 2026\") so screen readers announce the whole date, not just the day number.\n const dayLabelFmt = computed(\n () =>\n new Intl.DateTimeFormat(safeLocale(props.locale), {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }),\n )\n\n const goPrevMonth = () => {\n visibleMonth.value = addMonths(visibleMonth.value, -1)\n }\n const goNextMonth = () => {\n visibleMonth.value = addMonths(visibleMonth.value, 1)\n }\n\n const moveFocus = (delta: number) => {\n const next = clampDate(addDays(focusDate.value, delta), props.min, props.max)\n focusDate.value = next\n if (!isSameMonth(next, visibleMonth.value)) {\n visibleMonth.value = startOfMonth(next)\n }\n }\n\n const selectDate = (date: Date) => {\n if (props.disabled) return\n if (isOutOfRange(date, props.min, props.max)) return\n emit('update:modelValue', startOfDay(date))\n }\n\n const onGridKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveFocus(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n moveFocus(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n moveFocus(-7)\n break\n case 'ArrowDown':\n event.preventDefault()\n moveFocus(7)\n break\n case 'Home': {\n event.preventDefault()\n const offset = focusDate.value.getDay() - props.weekStartsOn\n moveFocus(-((offset + 7) % 7))\n break\n }\n case 'End': {\n event.preventDefault()\n const offset = (focusDate.value.getDay() - props.weekStartsOn + 7) % 7\n moveFocus(6 - offset)\n break\n }\n case 'PageUp':\n event.preventDefault()\n visibleMonth.value = addMonths(visibleMonth.value, -1)\n focusDate.value = clampDate(addMonths(focusDate.value, -1), props.min, props.max)\n break\n case 'PageDown':\n event.preventDefault()\n visibleMonth.value = addMonths(visibleMonth.value, 1)\n focusDate.value = clampDate(addMonths(focusDate.value, 1), props.min, props.max)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n selectDate(focusDate.value)\n break\n }\n }\n\n const today = startOfDay(new Date())\n const prevDisabled = computed(() => {\n if (!props.min) return false\n return startOfMonth(visibleMonth.value) <= startOfMonth(props.min)\n })\n const nextDisabled = computed(() => {\n if (!props.max) return false\n const endOfVisible = endOfMonth(visibleMonth.value)\n return startOfMonth(endOfVisible) >= startOfMonth(props.max)\n })\n\n const navButtonStyle: Record<string, string> = {\n width: '28px',\n height: '28px',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'transparent',\n border: 'none',\n color: 'var(--iris-foreground)',\n cursor: 'pointer',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n font: 'inherit',\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-calendar': '',\n 'data-disabled': props.disabled ? '' : undefined,\n style: {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: '8px',\n padding: 'var(--iris-padding-md, 12px)',\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n minWidth: '260px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n // Header\n h(\n 'div',\n {\n 'data-iris-calendar-header': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '4px',\n },\n },\n [\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': t('calendar.previousMonth'),\n 'data-iris-calendar-prev': '',\n disabled: prevDisabled.value || undefined,\n onClick: goPrevMonth,\n style: {\n ...navButtonStyle,\n opacity: prevDisabled.value ? '0.4' : '1',\n cursor: prevDisabled.value ? 'not-allowed' : 'pointer',\n },\n },\n '‹',\n ),\n h(\n 'div',\n {\n 'data-iris-calendar-title': '',\n 'aria-live': 'polite',\n style: { fontWeight: '600', fontSize: '14px' },\n },\n title.value,\n ),\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': t('calendar.nextMonth'),\n 'data-iris-calendar-next': '',\n disabled: nextDisabled.value || undefined,\n onClick: goNextMonth,\n style: {\n ...navButtonStyle,\n opacity: nextDisabled.value ? '0.4' : '1',\n cursor: nextDisabled.value ? 'not-allowed' : 'pointer',\n },\n },\n '›',\n ),\n ],\n ),\n // Weekday header\n h(\n 'div',\n {\n 'data-iris-calendar-weekdays': '',\n role: 'row',\n style: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gap: '2px',\n fontSize: '12px',\n color: 'var(--iris-muted)',\n textAlign: 'center',\n },\n },\n weekdays.value.map((name) =>\n h(\n 'div',\n {\n key: name,\n role: 'columnheader',\n style: { padding: '2px 0' },\n },\n name,\n ),\n ),\n ),\n // Day grid\n h(\n 'div',\n {\n 'data-iris-calendar-grid': '',\n role: 'grid',\n 'aria-label': title.value,\n onKeydown: onGridKeyDown,\n style: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n gap: '2px',\n },\n },\n matrix.value.map((week, wi) =>\n // `display: contents` keeps the row in the accessibility tree (a\n // valid grid → row → gridcell structure) while letting its day cells\n // participate directly in the parent's 7-column CSS grid layout.\n h(\n 'div',\n { key: `week-${wi}`, role: 'row', style: { display: 'contents' } },\n week.map((date) => {\n const inMonth = isSameMonth(date, visibleMonth.value)\n const selected = props.modelValue ? isSameDay(date, props.modelValue) : false\n const focused = isSameDay(date, focusDate.value)\n const isToday = isSameDay(date, today)\n const oof = isOutOfRange(date, props.min, props.max)\n const isDisabled = props.disabled || oof\n return h(\n 'button',\n {\n key: date.toISOString(),\n type: 'button',\n role: 'gridcell',\n 'aria-label': dayLabelFmt.value.format(date),\n tabindex: focused ? 0 : -1,\n 'aria-selected': selected ? 'true' : 'false',\n 'aria-disabled': isDisabled ? 'true' : undefined,\n 'aria-current': isToday ? 'date' : undefined,\n 'data-iris-calendar-day': '',\n 'data-iris-calendar-day-iso': formatLocalISO(date),\n 'data-state': selected\n ? 'selected'\n : focused\n ? 'focused'\n : isToday\n ? 'today'\n : 'idle',\n 'data-outside-month': !inMonth ? 'true' : undefined,\n disabled: isDisabled || undefined,\n onClick: () => {\n focusDate.value = date\n selectDate(date)\n },\n onFocus: () => {\n focusDate.value = date\n },\n style: {\n height: '32px',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: selected\n ? 'var(--iris-primary)'\n : isToday\n ? 'var(--iris-surface-hover)'\n : 'transparent',\n color: selected\n ? 'var(--iris-primary-foreground, #fff)'\n : inMonth\n ? 'var(--iris-foreground)'\n : 'var(--iris-muted)',\n border: 'none',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n opacity: isDisabled ? '0.45' : '1',\n fontSize: '13px',\n fontFamily: 'inherit',\n outline: 'none',\n },\n },\n String(date.getDate()),\n )\n }),\n ),\n ),\n ),\n ],\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { Placement } from '@iris-ui-kit/core'\nimport { IrisPopover } from '../popover/Popover'\nimport { IrisPopoverTrigger } from '../popover/PopoverTrigger'\nimport { IrisPopoverContent } from '../popover/PopoverContent'\nimport { IrisCalendar } from '../calendar/Calendar'\nimport { safeLocale } from '../calendar/dateUtils'\nimport { useI18n } from '../../i18n'\n\nfunction formatISODate(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nfunction formatDisplay(date: Date | null, locale?: string): string {\n if (!date) return ''\n return new Intl.DateTimeFormat(safeLocale(locale), { dateStyle: 'medium' }).format(date)\n}\n\n/**\n * Date picker: Input-styled trigger + Popover + Calendar. Two-way binds\n * via `v-model`. On selection, the popover auto-closes.\n *\n * Use `IrisCalendar` directly when you want the calendar inline (no popover).\n */\nexport const IrisDatePicker = defineComponent({\n name: 'IrisDatePicker',\n inheritAttrs: false,\n props: {\n modelValue: { type: Date as unknown as PropType<Date | null>, default: null },\n min: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n max: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n weekStartsOn: { type: Number, default: 0 },\n locale: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n /** id forwarded to the trigger. Set by IrisFormField. */\n id: { type: String, default: undefined },\n /** Forwarded as aria-describedby on the trigger. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: Date | null) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const open = ref(false)\n const display = computed(() => formatDisplay(props.modelValue, props.locale))\n\n const onSelect = (date: Date | null) => {\n emit('update:modelValue', date)\n if (date) open.value = false\n }\n\n return () =>\n h(\n IrisPopover,\n {\n open: open.value,\n placement: props.placement,\n 'onUpdate:open': (v: boolean) => (open.value = v),\n },\n {\n default: () => [\n h(IrisPopoverTrigger, { asChild: true }, () => [\n h(\n 'button',\n {\n ...attrs,\n type: 'button',\n id: props.id,\n disabled: props.disabled || undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'data-iris-date-picker-trigger': '',\n 'data-iris-date-picker-iso': props.modelValue\n ? formatISODate(props.modelValue)\n : undefined,\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n padding: '6px 12px',\n background: 'var(--iris-background)',\n color: props.modelValue ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n border: `1px solid ${props.invalid ? 'var(--iris-danger)' : 'var(--iris-border)'}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n fontSize: '14px',\n fontFamily: 'inherit',\n minHeight: '34px',\n minWidth: '180px',\n textAlign: 'start',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n display.value || (props.placeholder ?? t('datePicker.placeholder')),\n ),\n ]),\n h(IrisPopoverContent, { style: { padding: '0' } }, () =>\n h(IrisCalendar, {\n modelValue: props.modelValue,\n min: props.min,\n max: props.max,\n weekStartsOn: props.weekStartsOn,\n locale: props.locale,\n disabled: props.disabled,\n 'onUpdate:modelValue': onSelect,\n style: { border: 'none', background: 'transparent' },\n }),\n ),\n ],\n },\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport interface IrisFileUploadFile {\n /** The underlying File. */\n file: File\n /** Convenience: same as `file.name`. */\n name: string\n /** Convenience: same as `file.size` in bytes. */\n size: number\n /** Convenience: same as `file.type`. */\n type: string\n}\n\nfunction wrapFile(file: File): IrisFileUploadFile {\n return { file, name: file.name, size: file.size, type: file.type }\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`\n}\n\n/**\n * File-upload dropzone. Wraps a native `<input type=\"file\">` (hidden) with a\n * click-to-browse and drag-and-drop interaction surface. Two-way binds the\n * selected file list via `v-model`. Renders the file list as a default UI;\n * pass `#list` to fully customize.\n *\n * Validation:\n * - `accept` is forwarded to the input and used to filter dropped files.\n * - `maxSize` (bytes) and `maxFiles` enforce client-side constraints; over-\n * limit files are surfaced via the `reject` event.\n */\nexport const IrisFileUpload = defineComponent({\n name: 'IrisFileUpload',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Array as PropType<IrisFileUploadFile[]>,\n default: () => [],\n },\n /** MIME type filter (forwarded to native input + drop validation). */\n accept: { type: String, default: '' },\n multiple: { type: Boolean, default: false },\n /** Max file size in bytes. 0 = unlimited. */\n maxSize: { type: Number, default: 0 },\n /** Max simultaneous files (only meaningful with `multiple`). 0 = unlimited. */\n maxFiles: { type: Number, default: 0 },\n disabled: { type: Boolean, default: false },\n /** Idle dropzone label. */\n label: { type: String, default: undefined },\n /** id forwarded to the hidden input. Set by IrisFormField. */\n id: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_files: IrisFileUploadFile[]) => true,\n /** Files that passed validation. */\n accept: (_files: IrisFileUploadFile[]) => true,\n /** Files that failed validation, with reason. */\n reject: (_entries: { file: IrisFileUploadFile; reason: 'size' | 'count' | 'type' }[]) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const { t } = useI18n()\n const resolvedLabel = computed(() => props.label ?? t('fileUpload.label'))\n const inputRef = ref<HTMLInputElement | null>(null)\n const dragOver = ref(false)\n const dragCount = ref(0) // tracks nested dragenter/leave correctly\n\n const acceptMatches = (file: File): boolean => {\n if (!props.accept) return true\n const tokens = props.accept\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n if (tokens.length === 0) return true\n return tokens.some((token) => {\n if (token.startsWith('.')) {\n return file.name.toLowerCase().endsWith(token.toLowerCase())\n }\n if (token.endsWith('/*')) {\n const prefix = token.slice(0, -2)\n return file.type.startsWith(prefix + '/')\n }\n return file.type === token\n })\n }\n\n const validate = (\n incoming: File[],\n ): {\n accepted: IrisFileUploadFile[]\n rejected: { file: IrisFileUploadFile; reason: 'size' | 'count' | 'type' }[]\n } => {\n const accepted: IrisFileUploadFile[] = []\n const rejected: { file: IrisFileUploadFile; reason: 'size' | 'count' | 'type' }[] = []\n const existing = props.modelValue.length\n let acceptedCount = 0\n for (const f of incoming) {\n const wrapped = wrapFile(f)\n if (!acceptMatches(f)) {\n rejected.push({ file: wrapped, reason: 'type' })\n continue\n }\n if (props.maxSize > 0 && f.size > props.maxSize) {\n rejected.push({ file: wrapped, reason: 'size' })\n continue\n }\n if (\n props.maxFiles > 0 &&\n (props.multiple ? existing + acceptedCount + 1 > props.maxFiles : false)\n ) {\n rejected.push({ file: wrapped, reason: 'count' })\n continue\n }\n accepted.push(wrapped)\n acceptedCount += 1\n }\n return { accepted, rejected }\n }\n\n const applyFiles = (incoming: File[]) => {\n if (props.disabled) return\n const { accepted, rejected } = validate(incoming)\n const next = props.multiple ? [...props.modelValue, ...accepted] : accepted.slice(0, 1)\n emit('update:modelValue', next)\n if (accepted.length > 0) emit('accept', accepted)\n if (rejected.length > 0) emit('reject', rejected)\n }\n\n const onInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n const files = input.files ? Array.from(input.files) : []\n applyFiles(files)\n // Reset so selecting the same file again still triggers a change.\n input.value = ''\n }\n\n const onClickZone = () => {\n if (props.disabled) return\n inputRef.value?.click()\n }\n\n const onKeyDownZone = (event: KeyboardEvent) => {\n if (props.disabled) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n inputRef.value?.click()\n }\n }\n\n const onDragOver = (event: DragEvent) => {\n if (props.disabled) return\n event.preventDefault()\n }\n\n const onDragEnter = (event: DragEvent) => {\n if (props.disabled) return\n event.preventDefault()\n dragCount.value += 1\n dragOver.value = true\n }\n\n const onDragLeave = () => {\n if (props.disabled) return\n dragCount.value = Math.max(0, dragCount.value - 1)\n if (dragCount.value === 0) dragOver.value = false\n }\n\n const onDrop = (event: DragEvent) => {\n if (props.disabled) return\n event.preventDefault()\n dragCount.value = 0\n dragOver.value = false\n const files = event.dataTransfer?.files ? Array.from(event.dataTransfer.files) : []\n applyFiles(files)\n }\n\n const removeAt = (index: number) => {\n const next = [...props.modelValue]\n next.splice(index, 1)\n emit('update:modelValue', next)\n }\n\n const zoneStyle = computed<Record<string, string>>(() => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n padding: 'var(--iris-padding-lg, 20px)',\n border: `2px dashed ${dragOver.value ? 'var(--iris-primary)' : 'var(--iris-border)'}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n background: dragOver.value ? 'var(--iris-surface-hover)' : 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n transition: 'border-color 120ms ease, background-color 120ms ease',\n outline: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-file-upload': '',\n 'data-drag-over': dragOver.value ? 'true' : undefined,\n 'data-disabled': props.disabled ? 'true' : undefined,\n },\n [\n // Hidden native input\n h('input', {\n ref: (el: unknown) => {\n inputRef.value = (el ?? null) as HTMLInputElement | null\n },\n id: props.id,\n type: 'file',\n accept: props.accept || undefined,\n multiple: props.multiple || undefined,\n disabled: props.disabled || undefined,\n 'data-iris-file-upload-input': '',\n onChange: onInputChange,\n style: {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0,0,0,0)',\n whiteSpace: 'nowrap',\n border: '0',\n },\n }),\n // Drop zone\n h(\n 'div',\n {\n role: 'button',\n tabindex: props.disabled ? -1 : 0,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-file-upload-zone': '',\n onClick: onClickZone,\n onKeydown: onKeyDownZone,\n onDragover: onDragOver,\n onDragenter: onDragEnter,\n onDragleave: onDragLeave,\n onDrop,\n style: zoneStyle.value,\n },\n [\n h(\n 'div',\n {\n 'data-iris-file-upload-label': '',\n style: { fontSize: '14px', fontWeight: '500' },\n },\n resolvedLabel.value,\n ),\n props.accept\n ? h(\n 'div',\n {\n style: {\n fontSize: '12px',\n color: 'var(--iris-muted)',\n },\n },\n props.accept,\n )\n : null,\n ],\n ),\n // File list (or custom slot)\n slots.list\n ? slots.list({ files: props.modelValue, remove: removeAt })\n : props.modelValue.length > 0\n ? h(\n 'ul',\n {\n 'data-iris-file-upload-list': '',\n style: {\n listStyle: 'none',\n margin: '8px 0 0 0',\n padding: '0',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n },\n },\n props.modelValue.map((item, idx) =>\n h(\n 'li',\n {\n key: `${item.name}-${idx}`,\n 'data-iris-file-upload-item': '',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '6px 10px',\n background: 'var(--iris-surface)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n fontSize: '13px',\n },\n },\n [\n h('span', { style: { flex: '1', minWidth: '0' } }, item.name),\n h(\n 'span',\n { style: { color: 'var(--iris-muted)', fontSize: '12px' } },\n formatBytes(item.size),\n ),\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': t('fileUpload.remove', { name: item.name }),\n disabled: props.disabled || undefined,\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n removeAt(idx)\n },\n style: {\n background: 'transparent',\n border: 'none',\n color: 'var(--iris-muted)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n fontSize: '16px',\n lineHeight: '1',\n padding: '0 4px',\n },\n },\n '×',\n ),\n ],\n ),\n ),\n )\n : null,\n ],\n )\n },\n})\n\nexport { formatBytes }\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport { getDirection } from '@iris-ui-kit/theme'\nimport { useDrag } from '../drag/useDrag'\nimport { useI18n } from '../../i18n'\n\nexport type IrisRangeSliderValue = readonly [number, number]\n\nfunction decimalsOf(step: number): number {\n if (!Number.isFinite(step)) return 0\n const s = step.toString()\n const dot = s.indexOf('.')\n return dot < 0 ? 0 : s.length - dot - 1\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction roundToStep(value: number, step: number, min: number): number {\n if (step <= 0) return value\n const places = decimalsOf(step)\n return Number((Math.round((value - min) / step) * step + min).toFixed(places))\n}\n\n/**\n * Two-handle numeric range slider. `modelValue` is `[start, end]` with\n * `start <= end`. The two handles never cross (each clamps against the other).\n *\n * Keyboard (per handle):\n * - ←/↓ : −step\n * - →/↑ : +step\n * - Home : min (start) / start (end)\n * - End : end (start) / max (end)\n * - PgUp/PgDn : ±step × 10\n */\nexport const IrisRangeSlider = defineComponent({\n name: 'IrisRangeSlider',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Array as unknown as PropType<IrisRangeSliderValue>,\n default: () => [0, 100] as IrisRangeSliderValue,\n },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n disabled: { type: Boolean, default: false },\n /** Accessible label prefixes for screen readers. */\n labelStart: { type: String, default: undefined },\n labelEnd: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: IrisRangeSliderValue) => true,\n change: (_value: IrisRangeSliderValue) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const trackRef = ref<HTMLElement | null>(null)\n const startThumbRef = ref<HTMLElement | null>(null)\n const endThumbRef = ref<HTMLElement | null>(null)\n const dragging = ref<'start' | 'end' | null>(null)\n\n const startVal = computed(() =>\n clamp(\n roundToStep(props.modelValue[0] ?? props.min, props.step, props.min),\n props.min,\n props.max,\n ),\n )\n const endVal = computed(() =>\n clamp(\n roundToStep(props.modelValue[1] ?? props.max, props.step, props.min),\n props.min,\n props.max,\n ),\n )\n\n const percent = (v: number): number => {\n const range = props.max - props.min\n if (range <= 0) return 0\n return ((v - props.min) / range) * 100\n }\n\n const updateAt = (handle: 'start' | 'end', next: number) => {\n const clamped = clamp(roundToStep(next, props.step, props.min), props.min, props.max)\n let s = startVal.value\n let e = endVal.value\n if (handle === 'start') {\n s = Math.min(clamped, e)\n } else {\n e = Math.max(clamped, s)\n }\n if (s === startVal.value && e === endVal.value) return\n const newValue: IrisRangeSliderValue = [s, e]\n emit('update:modelValue', newValue)\n emit('change', newValue)\n }\n\n const pointerValue = (clientX: number): number => {\n const track = trackRef.value\n if (!track) return startVal.value\n const rect = track.getBoundingClientRect()\n // RTL: the value axis runs right-to-left, so measure from the right edge.\n const rtl = getDirection(track.closest<HTMLElement>('[data-iris-dir],[dir]')) === 'rtl'\n const rel = (rtl ? rect.right - clientX : clientX - rect.left) / Math.max(1, rect.width)\n return props.min + Math.max(0, Math.min(1, rel)) * (props.max - props.min)\n }\n\n useDrag({\n handle: startThumbRef,\n disabled: computed(() => props.disabled),\n onStart: () => {\n dragging.value = 'start'\n },\n onDrag: ({ x }) => {\n updateAt('start', pointerValue(x))\n },\n onEnd: () => {\n dragging.value = null\n },\n })\n useDrag({\n handle: endThumbRef,\n disabled: computed(() => props.disabled),\n onStart: () => {\n dragging.value = 'end'\n },\n onDrag: ({ x }) => {\n updateAt('end', pointerValue(x))\n },\n onEnd: () => {\n dragging.value = null\n },\n })\n\n const keyHandler = (handle: 'start' | 'end') => (event: KeyboardEvent) => {\n if (props.disabled) return\n const v = handle === 'start' ? startVal.value : endVal.value\n let next = v\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n next = v - props.step\n break\n case 'ArrowRight':\n case 'ArrowUp':\n next = v + props.step\n break\n case 'Home':\n next = handle === 'start' ? props.min : startVal.value\n break\n case 'End':\n next = handle === 'end' ? props.max : endVal.value\n break\n case 'PageDown':\n next = v - props.step * 10\n break\n case 'PageUp':\n next = v + props.step * 10\n break\n default:\n return\n }\n event.preventDefault()\n updateAt(handle, next)\n }\n\n return () => {\n const startPct = percent(startVal.value)\n const endPct = percent(endVal.value)\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-range-slider': '',\n 'data-disabled': props.disabled ? '' : undefined,\n style: {\n position: 'relative',\n width: '100%',\n padding: '14px 8px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n ref: (el: unknown) => {\n trackRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-range-slider-track': '',\n style: {\n position: 'relative',\n height: '4px',\n background: 'var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n },\n },\n [\n h('div', {\n 'data-iris-range-slider-range': '',\n style: {\n position: 'absolute',\n top: '0',\n bottom: '0',\n insetInlineStart: `${startPct}%`,\n width: `${endPct - startPct}%`,\n background: props.disabled ? 'var(--iris-muted)' : 'var(--iris-primary)',\n borderRadius: 'inherit',\n },\n }),\n h('div', {\n ref: (el: unknown) => {\n startThumbRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'slider',\n tabindex: props.disabled ? -1 : 0,\n 'aria-label': props.labelStart ?? t('rangeSlider.start'),\n 'aria-valuemin': props.min,\n 'aria-valuemax': endVal.value,\n 'aria-valuenow': startVal.value,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-range-slider-thumb': 'start',\n 'data-dragging': dragging.value === 'start' ? 'true' : undefined,\n onKeydown: keyHandler('start'),\n style: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: `${startPct}%`,\n transform: 'translate(-50%, -50%)',\n width: '16px',\n height: '16px',\n borderRadius: '50%',\n background: 'var(--iris-background)',\n border: `2px solid ${props.disabled ? 'var(--iris-muted)' : 'var(--iris-primary)'}`,\n cursor: props.disabled ? 'not-allowed' : 'grab',\n touchAction: 'none',\n outline: 'none',\n },\n }),\n h('div', {\n ref: (el: unknown) => {\n endThumbRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'slider',\n tabindex: props.disabled ? -1 : 0,\n 'aria-label': props.labelEnd ?? t('rangeSlider.end'),\n 'aria-valuemin': startVal.value,\n 'aria-valuemax': props.max,\n 'aria-valuenow': endVal.value,\n 'aria-disabled': props.disabled ? 'true' : undefined,\n 'data-iris-range-slider-thumb': 'end',\n 'data-dragging': dragging.value === 'end' ? 'true' : undefined,\n onKeydown: keyHandler('end'),\n style: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: `${endPct}%`,\n transform: 'translate(-50%, -50%)',\n width: '16px',\n height: '16px',\n borderRadius: '50%',\n background: 'var(--iris-background)',\n border: `2px solid ${props.disabled ? 'var(--iris-muted)' : 'var(--iris-primary)'}`,\n cursor: props.disabled ? 'not-allowed' : 'grab',\n touchAction: 'none',\n outline: 'none',\n },\n }),\n ],\n ),\n ],\n )\n }\n },\n})\n","import { computed, defineComponent, h, ref, watch } from 'vue'\nimport { clamp01, hexToRgba, hsvaToRgba, rgbToHex, rgbaToHsva, type IrisHsva } from './colorUtils'\nimport { useI18n } from '../../i18n'\n\n/**\n * Color picker. Renders:\n * - Saturation/value 2D pad (pointer drag updates both axes)\n * - Hue strip (vertical) for cycling the hue (0..360°)\n * - Optional alpha strip\n * - HEX text input + R/G/B/A numeric inputs\n *\n * Two-way binds `modelValue` as a HEX string (`#rgb` / `#rrggbb` / `#rrggbbaa`).\n */\nexport const IrisColorPicker = defineComponent({\n name: 'IrisColorPicker',\n inheritAttrs: false,\n props: {\n /** HEX string (`#rgb` / `#rrggbb` / `#rrggbbaa`). */\n modelValue: { type: String, default: '#000000' },\n /** Include the alpha strip + alpha input. Default false. */\n showAlpha: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:modelValue': (_value: string) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const padRef = ref<HTMLElement | null>(null)\n const hueRef = ref<HTMLElement | null>(null)\n const alphaRef = ref<HTMLElement | null>(null)\n\n const initial = hexToRgba(props.modelValue) ?? { r: 0, g: 0, b: 0, a: 1 }\n const hsva = ref<IrisHsva>(rgbaToHsva(initial))\n\n // Re-sync internal hsva if modelValue changes from outside.\n watch(\n () => props.modelValue,\n (value) => {\n const parsed = hexToRgba(value)\n if (!parsed) return\n const next = rgbaToHsva(parsed)\n // Avoid losing the user's hue when the displayed RGB is grayscale by\n // only updating fields that actually differ.\n if (Math.abs(next.s - hsva.value.s) > 0.001) hsva.value.s = next.s\n if (Math.abs(next.v - hsva.value.v) > 0.001) hsva.value.v = next.v\n if (Math.abs(next.a - hsva.value.a) > 0.001) hsva.value.a = next.a\n if (next.s > 0 && Math.abs(next.h - hsva.value.h) > 0.5) hsva.value.h = next.h\n },\n )\n\n const rgba = computed(() => hsvaToRgba(hsva.value))\n const hex = computed(() => rgbToHex(rgba.value))\n\n const emitChange = () => {\n emit('update:modelValue', hex.value)\n }\n\n const updateHsva = (next: Partial<IrisHsva>) => {\n hsva.value = { ...hsva.value, ...next }\n emitChange()\n }\n\n const setRgbChannel = (key: 'r' | 'g' | 'b', value: number) => {\n const next = { ...rgba.value, [key]: Math.max(0, Math.min(255, Math.round(value))) }\n const newHsv = rgbaToHsva(next)\n hsva.value = newHsv\n emitChange()\n }\n\n const setAlpha = (value: number) => {\n updateHsva({ a: clamp01(value) })\n }\n\n const setHex = (value: string) => {\n const parsed = hexToRgba(value)\n if (!parsed) return\n hsva.value = rgbaToHsva(parsed)\n emitChange()\n }\n\n // Pointer dragging on the pad → update s/v.\n const onPadPointerDown = (event: PointerEvent) => {\n if (props.disabled) return\n const el = padRef.value\n if (!el) return\n el.setPointerCapture?.(event.pointerId)\n updateFromPadEvent(event)\n }\n const onPadPointerMove = (event: PointerEvent) => {\n if (props.disabled) return\n if (event.buttons !== 1) return\n updateFromPadEvent(event)\n }\n const updateFromPadEvent = (event: PointerEvent) => {\n const el = padRef.value\n if (!el) return\n const rect = el.getBoundingClientRect()\n const x = clamp01((event.clientX - rect.left) / Math.max(1, rect.width))\n const y = clamp01((event.clientY - rect.top) / Math.max(1, rect.height))\n updateHsva({ s: x, v: 1 - y })\n }\n\n // Hue strip drag → update h.\n const onHuePointerDown = (event: PointerEvent) => {\n if (props.disabled) return\n const el = hueRef.value\n if (!el) return\n el.setPointerCapture?.(event.pointerId)\n updateFromHueEvent(event)\n }\n const onHuePointerMove = (event: PointerEvent) => {\n if (props.disabled) return\n if (event.buttons !== 1) return\n updateFromHueEvent(event)\n }\n const updateFromHueEvent = (event: PointerEvent) => {\n const el = hueRef.value\n if (!el) return\n const rect = el.getBoundingClientRect()\n const y = clamp01((event.clientY - rect.top) / Math.max(1, rect.height))\n updateHsva({ h: y * 360 })\n }\n\n // Alpha strip drag.\n const onAlphaPointerDown = (event: PointerEvent) => {\n if (props.disabled) return\n const el = alphaRef.value\n if (!el) return\n el.setPointerCapture?.(event.pointerId)\n updateFromAlphaEvent(event)\n }\n const onAlphaPointerMove = (event: PointerEvent) => {\n if (props.disabled) return\n if (event.buttons !== 1) return\n updateFromAlphaEvent(event)\n }\n const updateFromAlphaEvent = (event: PointerEvent) => {\n const el = alphaRef.value\n if (!el) return\n const rect = el.getBoundingClientRect()\n const y = clamp01((event.clientY - rect.top) / Math.max(1, rect.height))\n updateHsva({ a: y })\n }\n\n return () => {\n const hueRgb = hsvaToRgba({ h: hsva.value.h, s: 1, v: 1, a: 1 })\n const cursorX = hsva.value.s * 100\n const cursorY = (1 - hsva.value.v) * 100\n const hueY = (hsva.value.h / 360) * 100\n const alphaY = (1 - hsva.value.a) * 100\n\n const inputStyle: Record<string, string> = {\n width: '48px',\n height: '24px',\n padding: '2px 4px',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n fontSize: '12px',\n fontFamily: 'inherit',\n textAlign: 'center',\n }\n\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-color-picker': '',\n 'data-disabled': props.disabled ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: '8px',\n padding: 'var(--iris-padding-md, 12px)',\n background: 'var(--iris-surface)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n color: 'var(--iris-foreground)',\n width: '240px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('div', { style: { display: 'flex', gap: '8px' } }, [\n // SV pad\n h(\n 'div',\n {\n ref: (el: unknown) => {\n padRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-color-picker-pad': '',\n onPointerdown: onPadPointerDown,\n onPointermove: onPadPointerMove,\n style: {\n position: 'relative',\n flex: '1',\n height: '160px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, rgb(${hueRgb.r}, ${hueRgb.g}, ${hueRgb.b}))`,\n cursor: props.disabled ? 'not-allowed' : 'crosshair',\n touchAction: 'none',\n },\n },\n [\n h('div', {\n 'data-iris-color-picker-pad-cursor': '',\n style: {\n position: 'absolute',\n left: `${cursorX}%`,\n top: `${cursorY}%`,\n width: '10px',\n height: '10px',\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n border: '2px solid #fff',\n boxShadow: '0 0 0 1px rgba(0,0,0,.4)',\n pointerEvents: 'none',\n },\n }),\n ],\n ),\n // Hue strip\n h(\n 'div',\n {\n ref: (el: unknown) => {\n hueRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-color-picker-hue': '',\n onPointerdown: onHuePointerDown,\n onPointermove: onHuePointerMove,\n style: {\n position: 'relative',\n width: '16px',\n height: '160px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background:\n 'linear-gradient(to bottom, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)',\n cursor: props.disabled ? 'not-allowed' : 'crosshair',\n touchAction: 'none',\n },\n },\n [\n h('div', {\n 'data-iris-color-picker-hue-cursor': '',\n style: {\n position: 'absolute',\n top: `${hueY}%`,\n left: '-2px',\n right: '-2px',\n height: '4px',\n transform: 'translateY(-50%)',\n border: '2px solid #fff',\n borderRadius: '2px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.4)',\n pointerEvents: 'none',\n },\n }),\n ],\n ),\n props.showAlpha\n ? h(\n 'div',\n {\n ref: (el: unknown) => {\n alphaRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-color-picker-alpha': '',\n onPointerdown: onAlphaPointerDown,\n onPointermove: onAlphaPointerMove,\n style: {\n position: 'relative',\n width: '16px',\n height: '160px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n background: `linear-gradient(to bottom, rgba(${rgba.value.r},${rgba.value.g},${rgba.value.b},1) 0%, rgba(${rgba.value.r},${rgba.value.g},${rgba.value.b},0) 100%)`,\n cursor: props.disabled ? 'not-allowed' : 'crosshair',\n touchAction: 'none',\n },\n },\n [\n h('div', {\n style: {\n position: 'absolute',\n top: `${alphaY}%`,\n left: '-2px',\n right: '-2px',\n height: '4px',\n transform: 'translateY(-50%)',\n border: '2px solid #fff',\n borderRadius: '2px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.4)',\n pointerEvents: 'none',\n },\n }),\n ],\n )\n : null,\n ]),\n // Inputs row\n h(\n 'div',\n {\n style: {\n display: 'flex',\n gap: '6px',\n alignItems: 'center',\n fontSize: '12px',\n },\n },\n [\n h('input', {\n 'data-iris-color-picker-hex': '',\n 'aria-label': t('colorPicker.hex'),\n disabled: props.disabled || undefined,\n value: hex.value,\n onChange: (e: Event) => {\n const input = e.target as HTMLInputElement\n setHex(input.value)\n },\n style: { ...inputStyle, width: '90px' },\n }),\n h('input', {\n type: 'number',\n 'data-iris-color-picker-r': '',\n 'aria-label': t('colorPicker.red'),\n min: 0,\n max: 255,\n disabled: props.disabled || undefined,\n value: rgba.value.r,\n onInput: (e: Event) => {\n setRgbChannel('r', Number((e.target as HTMLInputElement).value))\n },\n style: inputStyle,\n }),\n h('input', {\n type: 'number',\n 'data-iris-color-picker-g': '',\n 'aria-label': t('colorPicker.green'),\n min: 0,\n max: 255,\n disabled: props.disabled || undefined,\n value: rgba.value.g,\n onInput: (e: Event) => {\n setRgbChannel('g', Number((e.target as HTMLInputElement).value))\n },\n style: inputStyle,\n }),\n h('input', {\n type: 'number',\n 'data-iris-color-picker-b': '',\n 'aria-label': t('colorPicker.blue'),\n min: 0,\n max: 255,\n disabled: props.disabled || undefined,\n value: rgba.value.b,\n onInput: (e: Event) => {\n setRgbChannel('b', Number((e.target as HTMLInputElement).value))\n },\n style: inputStyle,\n }),\n props.showAlpha\n ? h('input', {\n type: 'number',\n 'data-iris-color-picker-a': '',\n 'aria-label': t('colorPicker.alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n disabled: props.disabled || undefined,\n value: Number(hsva.value.a.toFixed(2)),\n onInput: (e: Event) => {\n setAlpha(Number((e.target as HTMLInputElement).value))\n },\n style: inputStyle,\n })\n : null,\n ],\n ),\n ],\n )\n }\n },\n})\n","export interface IrisCommandItem {\n /** Stable unique id. */\n id: string\n /** Display label. */\n label: string\n /** Searchable extra terms (e.g. synonyms). */\n keywords?: string[]\n /** Optional grouping. Items with the same `group` cluster together. */\n group?: string\n /** Icon prefix (string emoji or vnode). */\n icon?: string\n /** Shortcut hint shown on the right of the row. */\n shortcut?: string\n disabled?: boolean\n /** Triggered on Enter / click. */\n action?: () => void\n}\n\n/**\n * Default fuzzy match: a query matches an item when each query character\n * appears in order in the item label or keywords. Case-insensitive.\n * Returns a score (lower = better) or null if no match.\n */\nexport function defaultFilter(query: string, item: IrisCommandItem): number | null {\n const q = query.trim().toLowerCase()\n if (!q) return 0\n const haystacks: string[] = [item.label, ...(item.keywords ?? [])].map((s) => s.toLowerCase())\n let best: number | null = null\n for (const h of haystacks) {\n let qi = 0\n let lastIdx = -1\n let score = 0\n for (let i = 0; i < h.length && qi < q.length; i += 1) {\n if (h[i] === q[qi]) {\n score += lastIdx === -1 ? i : i - lastIdx - 1\n lastIdx = i\n qi += 1\n }\n }\n if (qi === q.length) {\n if (best === null || score < best) best = score\n }\n }\n return best\n}\n","import {\n Teleport,\n computed,\n defineComponent,\n h,\n nextTick,\n onBeforeUnmount,\n ref,\n watch,\n type PropType,\n} from 'vue'\nimport { useBodyScrollLock, useFocusTrap } from '../modal-utils'\nimport { useI18n } from '../../i18n'\nimport { defaultFilter, type IrisCommandItem } from './types'\n\n/**\n * Command palette: searchable, keyboard-driven action launcher. Built on the\n * modal-utils suite (scroll lock + focus trap). Pattern is: open via shortcut\n * (consumer wires the keyboard listener), type to filter, ↑/↓ to navigate,\n * Enter to execute the focused item, Escape to dismiss.\n */\nexport const IrisCommandPalette = defineComponent({\n name: 'IrisCommandPalette',\n inheritAttrs: false,\n props: {\n open: { type: Boolean, default: false },\n items: { type: Array as PropType<IrisCommandItem[]>, required: true },\n placeholder: { type: String, default: undefined },\n /** Empty state text when no item matches. */\n emptyText: { type: String, default: undefined },\n /** Custom filter; default is a tolerant subsequence/fuzzy match. */\n filter: {\n type: Function as PropType<(query: string, item: IrisCommandItem) => number | null>,\n default: defaultFilter,\n },\n },\n emits: {\n 'update:open': (_value: boolean) => true,\n select: (_item: IrisCommandItem) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const resolvedPlaceholder = computed(() => props.placeholder ?? t('commandPalette.placeholder'))\n const resolvedEmptyText = computed(() => props.emptyText ?? t('commandPalette.empty'))\n const query = ref('')\n const inputRef = ref<HTMLInputElement | null>(null)\n const surfaceRef = ref<HTMLElement | null>(null)\n const activeIndex = ref(0)\n\n const matches = computed(() => {\n const result: { item: IrisCommandItem; score: number }[] = []\n for (const item of props.items) {\n const score = props.filter(query.value, item)\n if (score !== null) result.push({ item, score })\n }\n result.sort((a, b) => a.score - b.score)\n return result\n })\n\n const groupedFlat = computed(() => {\n // Preserve sort order but group by `group` label (last-seen wins).\n const out: ({ kind: 'header'; label: string } | { kind: 'item'; item: IrisCommandItem })[] =\n []\n let currentGroup: string | undefined = undefined\n for (const m of matches.value) {\n const g = m.item.group\n if (g !== currentGroup) {\n if (g) out.push({ kind: 'header', label: g })\n currentGroup = g\n }\n out.push({ kind: 'item', item: m.item })\n }\n return out\n })\n\n const itemRows = computed(() =>\n groupedFlat.value\n .map((row, i) => (row.kind === 'item' ? { row, i } : null))\n .filter((x): x is { row: { kind: 'item'; item: IrisCommandItem }; i: number } => x !== null)\n .filter((x) => !x.row.item.disabled),\n )\n\n // Reset filter / active index when (re)opening.\n watch(\n () => props.open,\n (open) => {\n if (open) {\n query.value = ''\n activeIndex.value = 0\n nextTick(() => inputRef.value?.focus())\n }\n },\n )\n watch(query, () => {\n activeIndex.value = 0\n })\n\n useBodyScrollLock(computed(() => props.open))\n useFocusTrap({\n container: surfaceRef,\n active: computed(() => props.open),\n })\n\n const close = () => emit('update:open', false)\n\n const triggerActive = () => {\n const target = itemRows.value[activeIndex.value]\n if (!target) return\n const item = target.row.item\n if (item.disabled) return\n item.action?.()\n emit('select', item)\n close()\n }\n\n const move = (delta: 1 | -1) => {\n const total = itemRows.value.length\n if (total === 0) return\n activeIndex.value = (activeIndex.value + delta + total) % total\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n move(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n move(-1)\n break\n case 'Enter':\n event.preventDefault()\n triggerActive()\n break\n case 'Escape':\n event.preventDefault()\n close()\n break\n }\n }\n\n // Document Escape (for clicks outside the input).\n const onDocKeyDown = (event: KeyboardEvent) => {\n if (!props.open) return\n if (event.key === 'Escape') close()\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', onDocKeyDown)\n }\n onBeforeUnmount(() => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', onDocKeyDown)\n }\n })\n\n const onBackdropPointerDown = (event: PointerEvent) => {\n if (event.target === event.currentTarget) close()\n }\n\n return () => {\n if (!props.open) return null\n\n return h(Teleport, { to: 'body' }, [\n h(\n 'div',\n {\n 'data-iris-command-palette-backdrop': '',\n onPointerdown: onBackdropPointerDown,\n style: {\n position: 'fixed',\n inset: '0',\n background: 'rgba(0,0,0,0.4)',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'center',\n paddingTop: '15vh',\n zIndex: '1300',\n },\n },\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n surfaceRef.value = (el ?? null) as HTMLElement | null\n },\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-label': t('commandPalette.label'),\n 'data-iris-command-palette': '',\n tabindex: -1,\n onKeydown: onKeyDown,\n style: {\n width: 'min(640px, 92vw)',\n maxHeight: '70vh',\n display: 'flex',\n flexDirection: 'column',\n background: 'var(--iris-surface)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-lg, 8px)',\n boxShadow: '0 20px 40px -12px rgba(0,0,0,0.25)',\n overflow: 'hidden',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h(\n 'div',\n {\n style: {\n padding: '12px 16px',\n borderBottom: '1px solid var(--iris-border)',\n },\n },\n h('input', {\n ref: (el: unknown) => {\n inputRef.value = (el ?? null) as HTMLInputElement | null\n },\n type: 'text',\n value: query.value,\n placeholder: resolvedPlaceholder.value,\n 'data-iris-command-palette-input': '',\n 'aria-label': t('commandPalette.search'),\n onInput: (e: Event) => {\n query.value = (e.target as HTMLInputElement).value\n },\n style: {\n width: '100%',\n padding: '8px 10px',\n background: 'transparent',\n border: 'none',\n outline: 'none',\n fontSize: '16px',\n fontFamily: 'inherit',\n color: 'inherit',\n },\n }),\n ),\n h(\n 'ul',\n {\n role: 'listbox',\n 'aria-label': t('commandPalette.commands'),\n 'data-iris-command-palette-list': '',\n style: {\n listStyle: 'none',\n margin: '0',\n padding: '4px',\n overflow: 'auto',\n flex: '1',\n },\n },\n groupedFlat.value.length === 0\n ? [\n h(\n 'li',\n {\n 'data-iris-command-palette-empty': '',\n style: {\n padding: '20px',\n textAlign: 'center',\n color: 'var(--iris-muted)',\n fontSize: '13px',\n },\n },\n resolvedEmptyText.value,\n ),\n ]\n : groupedFlat.value.map((row, i) => {\n if (row.kind === 'header') {\n return h(\n 'li',\n {\n key: `g-${row.label}-${i}`,\n 'data-iris-command-palette-group': '',\n style: {\n padding: '6px 12px',\n fontSize: '11px',\n fontWeight: '600',\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n color: 'var(--iris-muted)',\n },\n },\n row.label,\n )\n }\n const item = row.item\n const enabledIdx = itemRows.value.findIndex((r) => r.i === i)\n const isActive = enabledIdx === activeIndex.value\n return h(\n 'li',\n {\n key: item.id,\n role: 'option',\n 'aria-selected': isActive ? 'true' : 'false',\n 'aria-disabled': item.disabled ? 'true' : undefined,\n 'data-iris-command-palette-item': item.id,\n 'data-state': isActive ? 'active' : item.disabled ? 'disabled' : 'idle',\n onClick: () => {\n if (item.disabled) return\n activeIndex.value = enabledIdx\n triggerActive()\n },\n onMouseenter: () => {\n if (item.disabled) return\n activeIndex.value = enabledIdx\n },\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n padding: '8px 12px',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: item.disabled ? 'not-allowed' : 'pointer',\n opacity: item.disabled ? '0.5' : '1',\n background: isActive ? 'var(--iris-surface-hover)' : 'transparent',\n color: 'inherit',\n fontSize: '14px',\n },\n },\n [\n item.icon\n ? h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: { width: '20px', textAlign: 'center' },\n },\n item.icon,\n )\n : null,\n h('span', { style: { flex: '1', minWidth: '0' } }, item.label),\n item.shortcut\n ? h(\n 'span',\n {\n 'data-iris-command-palette-shortcut': '',\n style: {\n fontSize: '11px',\n padding: '2px 6px',\n background: 'var(--iris-background)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n color: 'var(--iris-muted)',\n fontFamily: 'monospace',\n },\n },\n item.shortcut,\n )\n : null,\n ],\n )\n }),\n ),\n ],\n ),\n ),\n ])\n }\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\nimport { useI18n } from '../../i18n'\n\nexport type IrisTimePickerFormat = '12h' | '24h'\n\nexport interface IrisTimeValue {\n /** 0–23 (24h internal representation). */\n hours: number\n /** 0–59. */\n minutes: number\n}\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, n))\n}\nfunction pad2(n: number): string {\n return n.toString().padStart(2, '0')\n}\n\n/**\n * Time picker rendered as 2 (or 3 with seconds) numeric \"spinner\" inputs.\n * Internal value is always 24-hour `{ hours, minutes }`; the AM/PM toggle is\n * presentation-only for `format='12h'`.\n */\nexport const IrisTimePicker = defineComponent({\n name: 'IrisTimePicker',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Object as PropType<IrisTimeValue | null>,\n default: () => ({ hours: 0, minutes: 0 }),\n },\n format: { type: String as PropType<IrisTimePickerFormat>, default: '24h' },\n /** Step in minutes for the minute input (1, 5, 10, 15, 30). */\n minuteStep: { type: Number, default: 1 },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n /** id forwarded to the hours input. Set by IrisFormField. */\n id: { type: String, default: undefined },\n /** Forwarded as aria-describedby on the hours input. Set by IrisFormField. */\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: IrisTimeValue) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const value = computed<IrisTimeValue>(() => props.modelValue ?? { hours: 0, minutes: 0 })\n\n const meridiem = computed<'AM' | 'PM'>(() => (value.value.hours >= 12 ? 'PM' : 'AM'))\n const display = computed(() => {\n if (props.format === '24h') {\n return { h: value.value.hours, m: value.value.minutes }\n }\n const h12 = value.value.hours % 12 === 0 ? 12 : value.value.hours % 12\n return { h: h12, m: value.value.minutes }\n })\n\n const emitNew = (next: IrisTimeValue) => {\n emit('update:modelValue', next)\n }\n\n const setHours24 = (h24: number) => {\n emitNew({ hours: clamp(h24, 0, 23), minutes: value.value.minutes })\n }\n const setMinutes = (m: number) => {\n emitNew({\n hours: value.value.hours,\n minutes: clamp(Math.round(m / props.minuteStep) * props.minuteStep, 0, 59),\n })\n }\n const toggleMeridiem = () => {\n const isPM = meridiem.value === 'PM'\n const h12 = value.value.hours % 12\n const newH24 = isPM ? h12 : h12 + 12\n emitNew({ hours: newH24, minutes: value.value.minutes })\n }\n\n const onHoursInput = (e: Event) => {\n const v = parseInt((e.target as HTMLInputElement).value || '0', 10)\n if (Number.isNaN(v)) return\n if (props.format === '12h') {\n const h12 = clamp(v, 1, 12)\n const wrap = h12 === 12 ? 0 : h12\n const newH24 = meridiem.value === 'PM' ? wrap + 12 : wrap\n setHours24(newH24)\n } else {\n setHours24(v)\n }\n }\n const onMinutesInput = (e: Event) => {\n const v = parseInt((e.target as HTMLInputElement).value || '0', 10)\n if (Number.isNaN(v)) return\n setMinutes(v)\n }\n\n const stepHours = (delta: number) => {\n const max = props.format === '12h' ? 12 : 23\n const min = props.format === '12h' ? 1 : 0\n let next = display.value.h + delta\n if (next < min) next = max\n if (next > max) next = min\n if (props.format === '12h') {\n const wrap = next === 12 ? 0 : next\n setHours24(meridiem.value === 'PM' ? wrap + 12 : wrap)\n } else {\n setHours24(next)\n }\n }\n const stepMinutes = (delta: number) => {\n let next = value.value.minutes + delta * props.minuteStep\n if (next < 0) next = 60 - props.minuteStep\n if (next >= 60) next = 0\n setMinutes(next)\n }\n\n const onHoursKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n stepHours(1)\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n stepHours(-1)\n }\n }\n const onMinutesKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n stepMinutes(1)\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n stepMinutes(-1)\n }\n }\n\n const fieldStyle = computed<Record<string, string>>(() => ({\n width: '48px',\n height: '34px',\n padding: '4px 6px',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: `1px solid ${props.invalid ? 'var(--iris-danger)' : 'var(--iris-border)'}`,\n borderRadius: 'var(--iris-radius-sm, 4px)',\n fontSize: '15px',\n fontFamily: 'inherit',\n textAlign: 'center',\n outline: 'none',\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-time-picker': '',\n 'data-disabled': props.disabled ? 'true' : undefined,\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [\n h('input', {\n id: props.id,\n type: 'number',\n inputmode: 'numeric',\n min: props.format === '12h' ? 1 : 0,\n max: props.format === '12h' ? 12 : 23,\n value: pad2(display.value.h),\n disabled: props.disabled || undefined,\n 'aria-label': t('timePicker.hours'),\n 'aria-describedby': props.ariaDescribedby,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'data-iris-time-picker-hours': '',\n onInput: onHoursInput,\n onKeydown: onHoursKey,\n style: fieldStyle.value,\n }),\n h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: { color: 'var(--iris-muted)', fontSize: '15px' },\n },\n ':',\n ),\n h('input', {\n type: 'number',\n inputmode: 'numeric',\n min: 0,\n max: 59,\n step: props.minuteStep,\n value: pad2(display.value.m),\n disabled: props.disabled || undefined,\n 'aria-label': t('timePicker.minutes'),\n 'data-iris-time-picker-minutes': '',\n onInput: onMinutesInput,\n onKeydown: onMinutesKey,\n style: fieldStyle.value,\n }),\n props.format === '12h'\n ? h(\n 'button',\n {\n type: 'button',\n disabled: props.disabled || undefined,\n 'aria-label': t('timePicker.togglePeriod'),\n 'data-iris-time-picker-meridiem': meridiem.value,\n onClick: toggleMeridiem,\n style: {\n height: '34px',\n padding: '4px 8px',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n fontSize: '13px',\n fontFamily: 'inherit',\n fontWeight: '600',\n },\n },\n meridiem.value,\n )\n : null,\n ],\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType } from 'vue'\nimport type { Placement } from '@iris-ui-kit/core'\nimport { IrisPopover } from '../popover/Popover'\nimport { IrisPopoverTrigger } from '../popover/PopoverTrigger'\nimport { IrisPopoverContent } from '../popover/PopoverContent'\nimport { IrisCalendar } from '../calendar/Calendar'\nimport { addMonths, safeLocale, startOfDay, startOfMonth } from '../calendar/dateUtils'\nimport { useI18n } from '../../i18n'\n\nexport interface IrisDateRange {\n start: Date | null\n end: Date | null\n}\n\nfunction formatDisplay(d: Date | null, locale?: string): string {\n if (!d) return ''\n return new Intl.DateTimeFormat(safeLocale(locale), { dateStyle: 'medium' }).format(d)\n}\n\n/**\n * Range date picker. Renders a trigger that shows `start → end`; the popover\n * surface contains two month calendars (current + next month) so users can\n * select both endpoints without navigation.\n *\n * Click order:\n * - First click → sets `start` (and clears `end`).\n * - Second click → sets `end` (auto-swaps if before `start`).\n */\nexport const IrisDateRangePicker = defineComponent({\n name: 'IrisDateRangePicker',\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Object as PropType<IrisDateRange | null>,\n default: () => ({ start: null, end: null }),\n },\n min: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n max: { type: Date as unknown as PropType<Date | undefined>, default: undefined },\n weekStartsOn: { type: Number, default: 0 },\n locale: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n disabled: { type: Boolean, default: false },\n invalid: { type: Boolean, default: false },\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\n id: { type: String, default: undefined },\n ariaDescribedby: { type: String, default: undefined },\n },\n emits: {\n 'update:modelValue': (_value: IrisDateRange) => true,\n },\n setup(props, { attrs, emit }) {\n const { t } = useI18n()\n const open = ref(false)\n const value = computed<IrisDateRange>(() => props.modelValue ?? { start: null, end: null })\n\n const leftMonth = ref<Date>(\n value.value.start ? startOfMonth(value.value.start) : startOfMonth(new Date()),\n )\n\n const display = computed(() => {\n const s = formatDisplay(value.value.start, props.locale)\n const e = formatDisplay(value.value.end, props.locale)\n if (s && e) return `${s} → ${e}`\n if (s) return `${s} → …`\n return ''\n })\n\n const handleSelect = (next: Date | null) => {\n if (!next) return\n const d = startOfDay(next)\n const v = value.value\n if (!v.start || (v.start && v.end)) {\n // Begin new range.\n emit('update:modelValue', { start: d, end: null })\n return\n }\n // Closing the range — swap if before start.\n let s = v.start\n let e = d\n if (e < s) {\n ;[s, e] = [e, s]\n }\n emit('update:modelValue', { start: s, end: e })\n // Close on completion.\n open.value = false\n }\n\n const previewSelected = computed(() => value.value.end ?? value.value.start)\n\n return () =>\n h(\n IrisPopover,\n {\n open: open.value,\n placement: props.placement,\n 'onUpdate:open': (v: boolean) => (open.value = v),\n },\n {\n default: () => [\n h(IrisPopoverTrigger, { asChild: true }, () => [\n h(\n 'button',\n {\n ...attrs,\n type: 'button',\n id: props.id,\n disabled: props.disabled || undefined,\n 'aria-invalid': props.invalid ? 'true' : undefined,\n 'aria-describedby': props.ariaDescribedby,\n 'data-iris-date-range-picker-trigger': '',\n 'data-state': open.value ? 'open' : 'closed',\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n padding: '6px 12px',\n background: 'var(--iris-background)',\n color: display.value ? 'var(--iris-foreground)' : 'var(--iris-muted)',\n border: `1px solid ${props.invalid ? 'var(--iris-danger)' : 'var(--iris-border)'}`,\n borderRadius: 'var(--iris-radius-md, 6px)',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n opacity: props.disabled ? '0.6' : '1',\n fontSize: '14px',\n fontFamily: 'inherit',\n minHeight: '34px',\n minWidth: '260px',\n textAlign: 'start',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n display.value || (props.placeholder ?? t('dateRangePicker.placeholder')),\n ),\n ]),\n h(IrisPopoverContent, { style: { padding: '0' } }, () =>\n h(\n 'div',\n {\n 'data-iris-date-range-picker-pane': '',\n style: { display: 'flex', gap: '8px' },\n },\n [\n h(IrisCalendar, {\n modelValue: previewSelected.value,\n defaultMonth: leftMonth.value,\n min: props.min,\n max: props.max,\n weekStartsOn: props.weekStartsOn,\n locale: props.locale,\n disabled: props.disabled,\n 'onUpdate:modelValue': handleSelect,\n style: { border: 'none' },\n }),\n h(IrisCalendar, {\n modelValue: previewSelected.value,\n defaultMonth: addMonths(leftMonth.value, 1),\n min: props.min,\n max: props.max,\n weekStartsOn: props.weekStartsOn,\n locale: props.locale,\n disabled: props.disabled,\n 'onUpdate:modelValue': handleSelect,\n style: { border: 'none' },\n }),\n ],\n ),\n ),\n ],\n },\n )\n },\n})\n","import { defineComponent, h } from 'vue'\n\n/**\n * 12-column responsive grid for dashboard composition. Each child should be\n * an `IrisDashboardCard` (or any element with `grid-column: span N`).\n *\n * Children control their span via inline `style=\"grid-column: span N\"` or\n * by wrapping with `IrisDashboardCard` whose `col-span` / `row-span` props\n * compile to the same CSS.\n */\nexport const IrisDashboardGrid = defineComponent({\n name: 'IrisDashboardGrid',\n inheritAttrs: false,\n props: {\n columns: { type: Number, default: 12 },\n gap: { type: [Number, String], default: 16 },\n /** Minimum column width via `grid-template-columns: repeat(auto-fill, minmax(...))`. */\n minColWidth: { type: [Number, String], default: undefined },\n },\n setup(props, { slots, attrs }) {\n const gap = typeof props.gap === 'number' ? `${props.gap}px` : props.gap\n return () => {\n const gridTemplateColumns = props.minColWidth\n ? `repeat(auto-fill, minmax(${typeof props.minColWidth === 'number' ? `${props.minColWidth}px` : props.minColWidth}, 1fr))`\n : `repeat(${props.columns}, 1fr)`\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-dashboard-grid': '',\n style: {\n display: 'grid',\n gap,\n gridTemplateColumns,\n width: '100%',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n\n/**\n * A single grid cell — wraps content in a styled card with optional span\n * controls. `col-span` accepts a number (column count) or `'full'` to fill\n * the entire row.\n */\nexport const IrisDashboardCard = defineComponent({\n name: 'IrisDashboardCard',\n inheritAttrs: false,\n props: {\n colSpan: { type: [Number, String], default: 1 },\n rowSpan: { type: Number, default: 1 },\n /** Show a styled card surface (background + border). Default `true`. */\n surface: { type: Boolean, default: true },\n },\n setup(props, { slots, attrs }) {\n return () => {\n const colSpan = props.colSpan === 'full' ? '1 / -1' : `span ${props.colSpan}`\n const rowSpan = props.rowSpan > 1 ? `span ${props.rowSpan}` : undefined\n return h(\n 'div',\n {\n ...attrs,\n 'data-iris-dashboard-card': '',\n style: {\n gridColumn: colSpan,\n gridRow: rowSpan,\n background: props.surface ? 'var(--iris-surface)' : 'transparent',\n border: props.surface ? '1px solid var(--iris-border)' : 'none',\n borderRadius: 'var(--iris-radius-md)',\n padding: props.surface ? 'var(--iris-padding-lg)' : '0',\n minWidth: '0',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n }\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisStackDirection = 'row' | 'column'\nexport type IrisStackAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type IrisStackJustify = 'start' | 'center' | 'end' | 'between' | 'around'\n\nconst ALIGN_MAP: Record<IrisStackAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n}\n\nconst JUSTIFY_MAP: Record<IrisStackJustify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n // Token shorthand: \"sm\" / \"md\" / \"lg\" → var(--iris-gap-X)\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\n/**\n * Flex container with token-driven spacing. The lightest possible layout\n * primitive — most pages need a horizontal or vertical stack and this saves\n * hand-writing `display: flex` everywhere.\n *\n * Use `direction`/`spacing`/`align`/`justify`/`wrap` to configure; children\n * are arranged in document order with `gap: <spacing>`.\n */\nexport const IrisStack = defineComponent({\n name: 'IrisStack',\n inheritAttrs: false,\n props: {\n direction: { type: String as PropType<IrisStackDirection>, default: 'column' },\n spacing: { type: [String, Number], default: 'md' },\n align: { type: String as PropType<IrisStackAlign>, default: 'stretch' },\n justify: { type: String as PropType<IrisStackJustify>, default: 'start' },\n wrap: { type: Boolean, default: false },\n /** When true, renders as an inline-flex container. */\n inline: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const style = computed<Record<string, string>>(() => ({\n display: props.inline ? 'inline-flex' : 'flex',\n flexDirection: props.direction,\n gap: toCssSpacing(props.spacing),\n alignItems: ALIGN_MAP[props.align],\n justifyContent: JUSTIFY_MAP[props.justify],\n flexWrap: props.wrap ? 'wrap' : 'nowrap',\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-stack': '',\n 'data-iris-stack-direction': props.direction,\n style: { ...style.value, ...((attrs.style as Record<string, string> | undefined) ?? {}) },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full' | string\n\nconst WIDTH_MAP: Record<'sm' | 'md' | 'lg' | 'xl' | 'full', string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n full: '100%',\n}\n\nfunction resolveMaxWidth(input: IrisContainerMaxWidth): string {\n if (input === 'sm' || input === 'md' || input === 'lg' || input === 'xl' || input === 'full') {\n return WIDTH_MAP[input]\n }\n return input // arbitrary CSS length\n}\n\nfunction resolvePadding(input: string | number): string {\n if (typeof input === 'number') return `${input}px`\n if (input === 'sm' || input === 'md' || input === 'lg') {\n return `var(--iris-padding-${input})`\n }\n return input\n}\n\n/**\n * Centered max-width wrapper. Use to bound content width on large screens\n * without rewriting flex/grid plumbing.\n *\n * `maxWidth='lg'` (≈1024px) is the most common default for marketing /\n * docs / app pages.\n */\nexport const IrisContainer = defineComponent({\n name: 'IrisContainer',\n inheritAttrs: false,\n props: {\n maxWidth: { type: String as PropType<IrisContainerMaxWidth>, default: 'lg' },\n padding: { type: [String, Number], default: 'md' },\n center: { type: Boolean, default: true },\n },\n setup(props, { slots, attrs }) {\n const style = computed<Record<string, string>>(() => ({\n width: '100%',\n maxWidth: resolveMaxWidth(props.maxWidth),\n padding: `0 ${resolvePadding(props.padding)}`,\n ...(props.center ? { marginInlineStart: 'auto', marginInlineEnd: 'auto' } : {}),\n }))\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-container': '',\n 'data-iris-container-max-width': props.maxWidth,\n style: { ...style.value, ...((attrs.style as Record<string, string> | undefined) ?? {}) },\n },\n slots.default?.(),\n )\n },\n})\n","import { computed, defineComponent, h, type PropType } from 'vue'\n\nexport type IrisGridColumns =\n | number\n | 'auto-fit'\n | 'auto-fill'\n | string /* raw grid-template-columns value */\n\nfunction resolveColumns(columns: IrisGridColumns, minColWidth: string): string {\n if (typeof columns === 'number') return `repeat(${columns}, minmax(0, 1fr))`\n if (columns === 'auto-fit') return `repeat(auto-fit, minmax(${minColWidth}, 1fr))`\n if (columns === 'auto-fill') return `repeat(auto-fill, minmax(${minColWidth}, 1fr))`\n return columns\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\n/**\n * Two-dimensional grid layout primitive. Three column modes:\n *\n * - **Fixed integer** — `columns={3}` → three equal-width columns.\n * - **Responsive auto-fit** — `columns=\"auto-fit\"` + `minColWidth` → fluid\n * grid where columns add/remove with container width. Most common.\n * - **Raw CSS** — pass any `grid-template-columns` string.\n *\n * Spacing accepts token shorthand (`sm` / `md` / `lg`), numeric px, or any\n * CSS length string. `gap` is a shortcut for both row + column gap.\n */\nexport const IrisGrid = defineComponent({\n name: 'IrisGrid',\n inheritAttrs: false,\n props: {\n columns: { type: [Number, String] as PropType<IrisGridColumns>, default: 'auto-fit' },\n /** Min width per column for `auto-fit` / `auto-fill`. */\n minColWidth: { type: String, default: '200px' },\n /** Row gap (token / px / CSS). */\n rowGap: { type: [String, Number], default: undefined },\n /** Column gap (token / px / CSS). */\n columnGap: { type: [String, Number], default: undefined },\n /** Shorthand for both row + column gap. Overridden if rowGap/columnGap given. */\n gap: { type: [String, Number], default: 'md' },\n inline: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const style = computed<Record<string, string>>(() => {\n const colTemplate = resolveColumns(props.columns, props.minColWidth)\n const rowGap =\n props.rowGap !== undefined ? toCssSpacing(props.rowGap) : toCssSpacing(props.gap)\n const colGap =\n props.columnGap !== undefined ? toCssSpacing(props.columnGap) : toCssSpacing(props.gap)\n return {\n display: props.inline ? 'inline-grid' : 'grid',\n gridTemplateColumns: colTemplate,\n rowGap,\n columnGap: colGap,\n }\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-grid': '',\n 'data-iris-grid-columns': String(props.columns),\n style: { ...style.value, ...((attrs.style as Record<string, string> | undefined) ?? {}) },\n },\n slots.default?.(),\n )\n },\n})\n","import { defineComponent, h, ref } from 'vue'\nimport { IrisStack } from '../layouts/Stack'\nimport { IrisContainer } from '../layouts/Container'\nimport { IrisInput } from '../primitives/input/Input'\nimport { IrisPasswordInput } from '../primitives/password-input/PasswordInput'\nimport { IrisCheckbox } from '../primitives/checkbox/Checkbox'\nimport { IrisButton } from '../primitives/button/Button'\nimport { IrisFormField } from '../primitives/form-field/FormField'\nimport { IrisAlert } from '../primitives/alert/Alert'\nimport { IrisDivider } from '../primitives/divider/Divider'\n\nexport interface IrisLoginSubmitPayload {\n email: string\n password: string\n remember: boolean\n}\n\n/**\n * Layer 4 system skeleton: a centered login page using only Iris primitives.\n * Demonstrates the recommended composition pattern (Container + Stack +\n * FormField wrappers) for forms.\n *\n * The template is opinionated about layout and a11y; data binding is left to\n * the consumer via the `submit` event + slot props.\n */\nexport const IrisLoginTemplate = defineComponent({\n name: 'IrisLoginTemplate',\n inheritAttrs: false,\n props: {\n title: { type: String, default: 'Sign in' },\n description: { type: String, default: '' },\n /** Show \"Remember me\" checkbox. */\n showRemember: { type: Boolean, default: true },\n /** Error message shown above the form. */\n error: { type: String, default: '' },\n submitLabel: { type: String, default: 'Sign in' },\n /** Disable the entire form (e.g. while a request is pending). */\n loading: { type: Boolean, default: false },\n },\n emits: {\n submit: (_payload: IrisLoginSubmitPayload) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const email = ref('')\n const password = ref('')\n const remember = ref(false)\n\n const onSubmit = (event: Event) => {\n event.preventDefault()\n emit('submit', {\n email: email.value,\n password: password.value,\n remember: remember.value,\n })\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-login-template': '',\n style: {\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n padding: '24px',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n h(IrisContainer, { maxWidth: '420px', padding: 0 }, () => [\n h(\n 'form',\n {\n onSubmit,\n 'data-iris-login-form': '',\n style: {\n background: 'var(--iris-surface)',\n border: '1px solid var(--iris-border)',\n borderRadius: 'var(--iris-radius-lg, 8px)',\n padding: '32px',\n boxShadow: '0 6px 20px -8px rgba(0, 0, 0, 0.16)',\n },\n },\n [\n h(IrisStack, { spacing: 'lg' }, () => [\n slots.header\n ? slots.header()\n : h('div', { style: { textAlign: 'center' } }, [\n h(\n 'h1',\n {\n style: {\n margin: '0 0 4px 0',\n fontSize: '22px',\n fontWeight: '700',\n },\n },\n props.title,\n ),\n props.description\n ? h(\n 'p',\n {\n style: {\n margin: '0',\n color: 'var(--iris-muted)',\n fontSize: '14px',\n },\n },\n props.description,\n )\n : null,\n ]),\n props.error ? h(IrisAlert, { tone: 'danger', title: props.error }) : null,\n h(IrisFormField, { label: 'Email', required: true }, () =>\n h(IrisInput, {\n type: 'email',\n modelValue: email.value,\n 'onUpdate:modelValue': (v: string) => (email.value = v),\n placeholder: 'you@example.com',\n disabled: props.loading,\n autocomplete: 'email',\n } as Record<string, unknown>),\n ),\n h(IrisFormField, { label: 'Password', required: true }, () =>\n h(IrisPasswordInput, {\n modelValue: password.value,\n 'onUpdate:modelValue': (v: string) => (password.value = v),\n placeholder: 'Enter your password',\n disabled: props.loading,\n autocomplete: 'current-password',\n } as Record<string, unknown>),\n ),\n props.showRemember\n ? h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n },\n [\n h(\n IrisCheckbox,\n {\n modelValue: remember.value,\n 'onUpdate:modelValue': (v: boolean | 'indeterminate') => {\n remember.value = v === true\n },\n disabled: props.loading,\n } as Record<string, unknown>,\n () => 'Remember me',\n ),\n slots.forgot ? slots.forgot() : null,\n ],\n )\n : null,\n h(\n IrisButton,\n {\n type: 'submit',\n variant: 'solid',\n loading: props.loading,\n style: { width: '100%' },\n } as Record<string, unknown>,\n () => props.submitLabel,\n ),\n slots.footer\n ? h('div', null, [h(IrisDivider, { spacing: 'md', label: 'or' }), slots.footer()])\n : null,\n ]),\n ],\n ),\n ]),\n )\n },\n})\n","import { defineComponent, h, ref, type PropType } from 'vue'\nimport { IrisSidebarLayout } from '../layouts/SidebarLayout'\nimport { IrisHeaderLayout } from '../layouts/HeaderLayout'\nimport { IrisDashboardGrid, IrisDashboardCard } from '../layouts/DashboardGrid'\nimport { IrisStack } from '../layouts/Stack'\n\nexport interface IrisDashboardNavItem {\n id: string\n label: string\n /** Optional icon (any ReactNode-like; ignored if `slots.icon` is used). */\n icon?: string\n}\n\nexport interface IrisDashboardCardSpec {\n id: string\n title: string\n colSpan?: number | 'full'\n rowSpan?: number\n /** Plain text or HTML — replace via `#card.<id>` slot for full control. */\n body?: string\n}\n\n/**\n * Layer 4 system skeleton: a 3-region dashboard shell — sidebar + header +\n * main grid. Built from `IrisSidebarLayout` + `IrisHeaderLayout` +\n * `IrisDashboardGrid` so it inherits collapsing, sticky header, and responsive\n * column layout out of the box.\n */\nexport const IrisDashboardTemplate = defineComponent({\n name: 'IrisDashboardTemplate',\n inheritAttrs: false,\n props: {\n title: { type: String, default: 'Dashboard' },\n sidebarTitle: { type: String, default: '' },\n nav: { type: Array as PropType<IrisDashboardNavItem[]>, default: () => [] },\n /** Currently active nav item id. */\n activeId: { type: String, default: '' },\n /** Cards to render in the main grid. Skip to use the `default` slot only. */\n cards: { type: Array as PropType<IrisDashboardCardSpec[]>, default: () => [] },\n defaultCollapsed: { type: Boolean, default: false },\n },\n emits: {\n 'update:activeId': (_id: string) => true,\n 'update:collapsed': (_value: boolean) => true,\n },\n setup(props, { attrs, slots, emit }) {\n const collapsed = ref(props.defaultCollapsed)\n\n const onSelectNav = (id: string) => {\n emit('update:activeId', id)\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-dashboard-template': '',\n style: {\n width: '100%',\n height: '100vh',\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n h(\n IrisSidebarLayout,\n {\n collapsed: collapsed.value,\n 'onUpdate:collapsed': (v: boolean) => {\n collapsed.value = v\n emit('update:collapsed', v)\n },\n width: 240,\n collapsedWidth: 64,\n } as Record<string, unknown>,\n {\n sidebar: (state: { collapsed: boolean; setCollapsed: (v: boolean) => void }) =>\n h(IrisStack, { spacing: 'sm', style: { padding: '12px' } }, () => [\n slots['sidebar-header']\n ? slots['sidebar-header'](state)\n : props.sidebarTitle\n ? h(\n 'div',\n {\n style: {\n padding: '8px 12px',\n fontSize: '14px',\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n opacity: state.collapsed ? 0 : 1,\n transition: 'opacity 120ms ease',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n },\n props.sidebarTitle,\n )\n : null,\n h(\n 'nav',\n {\n 'aria-label': 'Primary',\n style: { display: 'flex', flexDirection: 'column', gap: '2px' },\n },\n props.nav.map((item) => {\n const isActive = item.id === props.activeId\n return h(\n 'button',\n {\n key: item.id,\n type: 'button',\n 'data-iris-dashboard-nav-item': item.id,\n 'data-iris-dashboard-nav-active': isActive ? 'true' : undefined,\n onClick: () => onSelectNav(item.id),\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n padding: '8px 12px',\n background: isActive ? 'var(--iris-primary)' : 'transparent',\n color: isActive\n ? 'var(--iris-primary-foreground, #fff)'\n : 'var(--iris-foreground)',\n border: 'none',\n borderRadius: 'var(--iris-radius-sm, 4px)',\n cursor: 'pointer',\n fontSize: '14px',\n fontFamily: 'inherit',\n textAlign: 'start',\n outline: 'none',\n },\n },\n [\n item.icon\n ? h(\n 'span',\n {\n 'aria-hidden': 'true',\n style: {\n width: '16px',\n display: 'inline-flex',\n justifyContent: 'center',\n },\n },\n item.icon,\n )\n : null,\n h(\n 'span',\n {\n style: {\n opacity: state.collapsed ? 0 : 1,\n transition: 'opacity 120ms ease',\n whiteSpace: 'nowrap',\n },\n },\n item.label,\n ),\n ],\n )\n }),\n ),\n ]),\n default: () =>\n h(IrisHeaderLayout, {} as Record<string, unknown>, {\n header: () =>\n slots.header\n ? slots.header()\n : h(\n 'div',\n {\n style: {\n padding: '12px 20px',\n fontSize: '16px',\n fontWeight: '600',\n },\n },\n props.title,\n ),\n default: () =>\n slots.default\n ? slots.default()\n : h(\n 'div',\n { style: { padding: '20px' } },\n h(IrisDashboardGrid, { columns: 12, gap: 16 }, () =>\n props.cards.map((card) =>\n h(\n IrisDashboardCard,\n {\n key: card.id,\n colSpan: card.colSpan ?? 4,\n rowSpan: card.rowSpan ?? 1,\n 'data-iris-dashboard-card-id': card.id,\n } as Record<string, unknown>,\n () => [\n h(\n 'h3',\n {\n style: {\n margin: '0 0 8px 0',\n fontSize: '14px',\n fontWeight: '600',\n color: 'var(--iris-foreground)',\n },\n },\n card.title,\n ),\n slots[`card.${card.id}`]\n ? slots[`card.${card.id}`]!()\n : card.body\n ? h(\n 'div',\n { style: { fontSize: '13px', color: 'var(--iris-muted)' } },\n card.body,\n )\n : null,\n ],\n ),\n ),\n ),\n ),\n }),\n },\n ),\n )\n },\n})\n","import { computed, defineComponent, h, ref, type PropType, type VNode } from 'vue'\nimport { useDrag } from '../primitives/drag/useDrag'\n\nexport type IrisResizableHandle =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n\nexport interface IrisResizableSize {\n width: number\n height: number\n}\n\nconst ALL_HANDLES: IrisResizableHandle[] = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n]\n\nconst HANDLE_CURSORS: Record<IrisResizableHandle, string> = {\n top: 'ns-resize',\n right: 'ew-resize',\n bottom: 'ns-resize',\n left: 'ew-resize',\n 'top-left': 'nwse-resize',\n 'top-right': 'nesw-resize',\n 'bottom-left': 'nesw-resize',\n 'bottom-right': 'nwse-resize',\n}\n\nfunction handlePosition(handle: IrisResizableHandle): Record<string, string> {\n const s: Record<string, string> = { position: 'absolute' }\n const t = handle.includes('top')\n const b = handle.includes('bottom')\n const l = handle.includes('left')\n const r = handle.includes('right')\n if (t) s.top = '-4px'\n if (b) s.bottom = '-4px'\n if (l) s.left = '-4px'\n if (r) s.right = '-4px'\n const isCorner = (t || b) && (l || r)\n if (isCorner) {\n s.width = '12px'\n s.height = '12px'\n } else if (t || b) {\n s.left = '0'\n s.right = '0'\n s.height = '8px'\n } else {\n s.top = '0'\n s.bottom = '0'\n s.width = '8px'\n }\n s.cursor = HANDLE_CURSORS[handle]\n return s\n}\n\n/**\n * Behavior wrapper: makes its child resizable via 8-direction handles. The\n * wrapper itself is `display: inline-block; position: relative` so the child\n * can be ANY element. Handles overlay the wrapper's edges.\n *\n * Composable with `IrisMovable`, `IrisHotkey`, `IrisClickOutside`.\n *\n * @example\n * <IrisResizable :defaultSize=\"{ width: 400, height: 300 }\">\n * <IrisList :items=\"rows\" />\n * </IrisResizable>\n */\nexport const IrisResizable = defineComponent({\n name: 'IrisResizable',\n inheritAttrs: false,\n props: {\n size: { type: Object as PropType<IrisResizableSize>, default: undefined },\n defaultSize: {\n type: Object as PropType<IrisResizableSize>,\n default: () => ({ width: 200, height: 200 }),\n },\n handles: { type: Array as PropType<IrisResizableHandle[]>, default: () => ALL_HANDLES },\n minWidth: { type: Number, default: 40 },\n minHeight: { type: Number, default: 40 },\n maxWidth: { type: Number, default: Infinity },\n maxHeight: { type: Number, default: Infinity },\n keepAspect: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:size': (_v: IrisResizableSize) => true,\n resizeStart: (_v: IrisResizableSize) => true,\n resizeEnd: (_v: IrisResizableSize) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const isControlled = computed(() => props.size !== undefined)\n const internal = ref<IrisResizableSize>({ ...props.defaultSize })\n const size = computed<IrisResizableSize>(() =>\n isControlled.value ? (props.size as IrisResizableSize) : internal.value,\n )\n\n const setSize = (next: IrisResizableSize) => {\n if (!isControlled.value) internal.value = next\n emit('update:size', next)\n }\n\n const renderHandle = (handle: IrisResizableHandle): VNode => {\n const handleRef = ref<HTMLElement | null>(null)\n let startSize: IrisResizableSize = { width: 0, height: 0 }\n let aspect = 1\n\n useDrag({\n handle: handleRef,\n disabled: computed(() => props.disabled),\n onStart: () => {\n startSize = { ...size.value }\n aspect = startSize.width / Math.max(1, startSize.height)\n emit('resizeStart', startSize)\n },\n onDrag: ({ dx, dy }) => {\n const t = handle.includes('top')\n const b = handle.includes('bottom')\n const l = handle.includes('left')\n const r = handle.includes('right')\n let nextW = startSize.width\n let nextH = startSize.height\n if (r) nextW = startSize.width + dx\n if (l) nextW = startSize.width - dx\n if (b) nextH = startSize.height + dy\n if (t) nextH = startSize.height - dy\n if (props.keepAspect && (t || b) && (l || r)) {\n nextH = nextW / aspect\n }\n nextW = Math.max(props.minWidth, Math.min(props.maxWidth, nextW))\n nextH = Math.max(props.minHeight, Math.min(props.maxHeight, nextH))\n setSize({ width: nextW, height: nextH })\n },\n onEnd: () => {\n emit('resizeEnd', size.value)\n },\n })\n\n return h('div', {\n ref: (el: unknown) => {\n handleRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-resizable-handle': handle,\n style: {\n ...handlePosition(handle),\n touchAction: 'none',\n background: 'transparent',\n zIndex: '1',\n },\n })\n }\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n 'data-iris-resizable': '',\n 'data-state': props.disabled ? 'disabled' : 'idle',\n style: {\n position: 'relative',\n display: 'inline-block',\n width: `${size.value.width}px`,\n height: `${size.value.height}px`,\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n [slots.default?.(), ...props.handles.map(renderHandle)],\n )\n },\n})\n","import { computed, defineComponent, h, onMounted, onUpdated, ref, type PropType } from 'vue'\nimport { useDrag } from '../primitives/drag/useDrag'\n\nexport interface IrisMovablePosition {\n x: number\n y: number\n}\n\nexport interface IrisMovableBounds {\n minX?: number\n maxX?: number\n minY?: number\n maxY?: number\n}\n\n/**\n * Behavior wrapper: makes its child draggable via `transform`. The whole\n * wrapper drags by default; pass `byHandle` + put `data-iris-movable-handle`\n * on a descendant to restrict the drag origin.\n *\n * Renders `position: absolute` — wrap inside a `position: relative`\n * container for predictable layout.\n */\nexport const IrisMovable = defineComponent({\n name: 'IrisMovable',\n inheritAttrs: false,\n props: {\n position: { type: Object as PropType<IrisMovablePosition>, default: undefined },\n defaultPosition: {\n type: Object as PropType<IrisMovablePosition>,\n default: () => ({ x: 0, y: 0 }),\n },\n bounds: { type: Object as PropType<IrisMovableBounds>, default: () => ({}) },\n byHandle: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n },\n emits: {\n 'update:position': (_v: IrisMovablePosition) => true,\n dragStart: (_v: IrisMovablePosition) => true,\n dragEnd: (_v: IrisMovablePosition) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const isControlled = computed(() => props.position !== undefined)\n const internal = ref<IrisMovablePosition>({ ...props.defaultPosition })\n const position = computed<IrisMovablePosition>(() =>\n isControlled.value ? (props.position as IrisMovablePosition) : internal.value,\n )\n\n const rootRef = ref<HTMLElement | null>(null)\n const handleRef = ref<HTMLElement | null>(null)\n const dragging = ref(false)\n let startPos: IrisMovablePosition = { x: 0, y: 0 }\n\n // Find handle inside the wrapper when byHandle is set.\n const refreshHandle = () => {\n if (!props.byHandle) return\n handleRef.value =\n rootRef.value?.querySelector<HTMLElement>('[data-iris-movable-handle]') ?? null\n }\n onMounted(refreshHandle)\n onUpdated(refreshHandle)\n\n const dragTarget = computed(() => (props.byHandle ? handleRef : rootRef))\n\n const clamp = (p: IrisMovablePosition): IrisMovablePosition => ({\n x: Math.max(props.bounds.minX ?? -Infinity, Math.min(props.bounds.maxX ?? Infinity, p.x)),\n y: Math.max(props.bounds.minY ?? -Infinity, Math.min(props.bounds.maxY ?? Infinity, p.y)),\n })\n\n const setPosition = (next: IrisMovablePosition) => {\n if (!isControlled.value) internal.value = next\n emit('update:position', next)\n }\n\n useDrag({\n handle: computed(() => dragTarget.value.value),\n disabled: computed(() => props.disabled),\n onStart: () => {\n startPos = position.value\n dragging.value = true\n emit('dragStart', position.value)\n },\n onDrag: ({ dx, dy }) => {\n setPosition(clamp({ x: startPos.x + dx, y: startPos.y + dy }))\n },\n onEnd: () => {\n dragging.value = false\n emit('dragEnd', position.value)\n },\n })\n\n return () =>\n h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n rootRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-movable': '',\n 'data-state': dragging.value ? 'dragging' : 'idle',\n style: {\n position: 'absolute',\n left: '0',\n top: '0',\n transform: `translate3d(${position.value.x}px, ${position.value.y}px, 0)`,\n cursor: props.byHandle ? 'default' : props.disabled ? 'not-allowed' : 'grab',\n touchAction: 'none',\n ...((attrs.style as Record<string, string> | undefined) ?? {}),\n },\n },\n slots.default?.(),\n )\n },\n})\n","import { defineComponent, onBeforeUnmount, watchEffect, type PropType } from 'vue'\n\nfunction parseShortcut(spec: string): {\n key: string\n shift: boolean\n alt: boolean\n ctrl: boolean\n meta: boolean\n ctrlOrMeta: boolean\n} {\n const parts = spec.split('+').map((p) => p.trim())\n const key = parts[parts.length - 1]!.toLowerCase()\n const mods = new Set(parts.slice(0, -1).map((p) => p.toLowerCase()))\n return {\n key,\n shift: mods.has('shift'),\n alt: mods.has('alt') || mods.has('option'),\n ctrl: mods.has('ctrl') || mods.has('control'),\n meta: mods.has('meta') || mods.has('cmd') || mods.has('command'),\n ctrlOrMeta: mods.has('mod'),\n }\n}\n\nfunction isInputTarget(target: EventTarget | null): boolean {\n const el = target as HTMLElement | null\n if (!el) return false\n const tag = el.tagName\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return true\n if (el.isContentEditable) return true\n return false\n}\n\nfunction matches(event: KeyboardEvent, parsed: ReturnType<typeof parseShortcut>): boolean {\n if (event.key.toLowerCase() !== parsed.key) return false\n if (parsed.shift !== event.shiftKey) return false\n if (parsed.alt !== event.altKey) return false\n if (parsed.ctrlOrMeta) {\n if (!event.ctrlKey && !event.metaKey) return false\n } else {\n if (parsed.ctrl !== event.ctrlKey) return false\n if (parsed.meta !== event.metaKey) return false\n }\n return true\n}\n\n/**\n * Behavior wrapper: binds a global keyboard shortcut while children are\n * mounted. Renderless — returns children verbatim via a Fragment.\n *\n * `shortcut` format: `'Escape'`, `'Mod+s'` (Mod = Ctrl on Win/Linux, Cmd on\n * macOS), `'Shift+/'`. Accepts a single string or array of strings.\n *\n * @example\n * <IrisHotkey shortcut=\"Escape\" @trigger=\"close\">\n * <IrisDialog>…</IrisDialog>\n * </IrisHotkey>\n */\nexport const IrisHotkey = defineComponent({\n name: 'IrisHotkey',\n inheritAttrs: false,\n props: {\n shortcut: { type: [String, Array] as PropType<string | string[]>, required: true },\n disabled: { type: Boolean, default: false },\n allowInInputs: { type: Boolean, default: false },\n scope: { type: String as PropType<'document' | 'window'>, default: 'document' },\n },\n emits: {\n trigger: (_event: KeyboardEvent) => true,\n },\n setup(props, { slots, emit }) {\n let detach: (() => void) | null = null\n\n watchEffect((onCleanup) => {\n detach?.()\n detach = null\n if (props.disabled) return\n const specs = Array.isArray(props.shortcut) ? props.shortcut : [props.shortcut]\n const parsed = specs.map(parseShortcut)\n const target: EventTarget = props.scope === 'window' ? window : document\n const onKey = (event: Event) => {\n const e = event as KeyboardEvent\n if (!props.allowInInputs && isInputTarget(e.target)) return\n for (const p of parsed) {\n if (matches(e, p)) {\n emit('trigger', e)\n return\n }\n }\n }\n target.addEventListener('keydown', onKey)\n detach = () => target.removeEventListener('keydown', onKey)\n onCleanup(() => detach?.())\n })\n\n onBeforeUnmount(() => detach?.())\n\n return () => slots.default?.()\n },\n})\n","import { defineComponent, h, onBeforeUnmount, ref, watchEffect, type PropType, type Ref } from 'vue'\n\n/**\n * Behavior wrapper: fires `outside` when a `pointerdown` happens outside the\n * wrapped child tree. Wraps children in a `<span style=\"display:contents\">`\n * to capture the bounding box without affecting layout.\n *\n * Pass `ignore` (refs to additional \"inside\" elements) for trigger buttons\n * that live outside the wrapper but should still count as inside.\n */\nexport const IrisClickOutside = defineComponent({\n name: 'IrisClickOutside',\n inheritAttrs: false,\n props: {\n disabled: { type: Boolean, default: false },\n ignore: {\n type: Array as PropType<Ref<HTMLElement | null | undefined>[]>,\n default: () => [],\n },\n },\n emits: {\n outside: (_event: PointerEvent) => true,\n },\n setup(props, { slots, emit }) {\n const wrapperRef = ref<HTMLElement | null>(null)\n let detach: (() => void) | null = null\n\n watchEffect((onCleanup) => {\n detach?.()\n detach = null\n if (props.disabled) return\n if (typeof document === 'undefined') return\n const handler = (event: PointerEvent) => {\n const target = event.target as Node | null\n if (!target) return\n const wrapper = wrapperRef.value\n if (wrapper) {\n let node: Node | null = target\n while (node) {\n if (node === wrapper) return\n if ((node as HTMLElement).parentNode === wrapper) return\n node = node.parentNode\n }\n }\n for (const r of props.ignore) {\n const el = r.value\n if (el && el.contains(target)) return\n }\n emit('outside', event)\n }\n document.addEventListener('pointerdown', handler)\n detach = () => document.removeEventListener('pointerdown', handler)\n onCleanup(() => detach?.())\n })\n\n onBeforeUnmount(() => detach?.())\n\n return () =>\n h(\n 'span',\n {\n ref: (el: unknown) => {\n wrapperRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-click-outside': '',\n style: { display: 'contents' },\n },\n slots.default?.(),\n )\n },\n})\n","import { defineComponent, h, onBeforeUnmount, ref, type PropType, type VNode } from 'vue'\nimport { createSortable, type SortableRect } from '@iris-ui-kit/core'\n\n/** The data attribute on each sortable item for the collision system. */\nexport const SORTABLE_ITEM_ATTR = 'data-iris-sortable-item'\n\n/**\n * Behavior wrapper: makes a list of items sortable via drag-and-drop. Wraps\n * each direct child in a sortable item context. The consumer supplies the\n * `items` array and an `onReorder` callback. Items render through the default\n * slot; each item is wrapped with drag detection from `createSortable`.\n *\n * Composable: stack with `IrisResizable` / `IrisMovable` / `IrisHotkey` for\n * richer interactions on the same wrapped UI.\n *\n * @example\n * <IrisSortable :items=\"items\" @reorder=\"items = $event\">\n * <div v-for=\"(label, i) in items\" :key=\"i\">{{ label }}</div>\n * </IrisSortable>\n */\nexport const IrisSortable = defineComponent({\n name: 'IrisSortable',\n inheritAttrs: false,\n props: {\n /** The ordered items. Used to detect which item is at which position. */\n items: {\n type: Array as PropType<readonly unknown[]>,\n required: true,\n },\n /** Called when the user drops an item in a new position. */\n onReorder: {\n type: Function as PropType<(next: unknown[]) => void>,\n default: undefined,\n },\n /** Optional item key getter. Defaults to `String(index)`. */\n getKey: {\n type: Function as PropType<(item: unknown, index: number) => string>,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n class: {\n type: String,\n default: undefined,\n },\n style: {\n type: Object as PropType<Record<string, string | number>>,\n default: undefined,\n },\n },\n emits: {\n reorder: (_next: unknown[]) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const containerRef = ref<HTMLElement | null>(null)\n const sortable = createSortable()\n const activeKey = ref<string | null>(null)\n\n // Subscribe to sortable state changes to track the active drag key\n const unsub = sortable.subscribe((state) => {\n activeKey.value = state.activeId\n })\n onBeforeUnmount(unsub)\n\n // Find the DOM order index of a child by its data-iris-sortable-item value.\n const indexOf = (key: string): number => {\n const container = containerRef.value\n if (!container) return -1\n return Array.from(\n container.querySelectorAll<HTMLElement>(`[${SORTABLE_ITEM_ATTR}]`),\n ).findIndex((el) => el.getAttribute(SORTABLE_ITEM_ATTR) === key)\n }\n\n const onPointerDown = (e: PointerEvent) => {\n if (props.disabled) return\n const target = (e.target as HTMLElement).closest(`[${SORTABLE_ITEM_ATTR}]`)\n if (!target) return\n const container = containerRef.value\n if (!container) return\n const key = target.getAttribute(SORTABLE_ITEM_ATTR) ?? ''\n const index = indexOf(key)\n if (index < 0) return\n sortable.press(key, e.clientX, e.clientY)\n }\n\n const onPointerMove = (e: PointerEvent) => {\n if (!sortable.isPending() && sortable.getState().activeId === null) return\n const items = containerRef.value?.querySelectorAll<HTMLElement>(`[${SORTABLE_ITEM_ATTR}]`)\n const rects: SortableRect[] = Array.from(items ?? []).map((el) => {\n const rect = el.getBoundingClientRect()\n return {\n id: el.getAttribute(SORTABLE_ITEM_ATTR) ?? '',\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n })\n // Promote pending press to active drag once past the movement threshold\n sortable.tryStart(e.clientX, e.clientY)\n if (sortable.getState().activeId !== null) {\n sortable.moveOver({ x: e.clientX, y: e.clientY }, rects)\n }\n }\n\n const onPointerUp = () => {\n const state = sortable.getState()\n if (state.activeId === null) {\n sortable.cancel()\n return\n }\n const result = sortable.end()\n if (result.activeId && result.overId && result.activeId !== result.overId) {\n const from = indexOf(result.activeId)\n const to = indexOf(result.overId)\n if (from >= 0 && to >= 0) {\n const next = [...(props.items as unknown[])]\n const [moved] = next.splice(from, 1)\n next.splice(to, 0, moved!)\n if (props.onReorder) {\n props.onReorder(next)\n }\n emit('reorder', next)\n }\n }\n }\n\n const resolveKey = (item: unknown, index: number): string =>\n props.getKey ? props.getKey(item, index) : String(index)\n\n return () => {\n const children: VNode[] = []\n const defaultSlots = slots.default?.()\n if (defaultSlots) {\n const itemsArray = props.items as unknown[]\n defaultSlots.forEach((child, index) => {\n const item = itemsArray[index]\n const key = resolveKey(item, index)\n const isDragging = key === activeKey.value\n children.push(\n h(\n 'div',\n {\n key,\n [SORTABLE_ITEM_ATTR]: key,\n 'data-iris-sortable-dragging': isDragging ? '' : undefined,\n style: {\n transition: isDragging ? 'none' : 'transform 150ms ease',\n opacity: isDragging ? 0.4 : 1,\n position: 'relative',\n zIndex: isDragging ? 100 : undefined,\n },\n },\n [child],\n ),\n )\n })\n }\n\n return h(\n 'div',\n {\n ...attrs,\n ref: (el: unknown) => {\n containerRef.value = (el ?? null) as HTMLElement | null\n },\n 'data-iris-sortable': '',\n 'data-state': activeKey.value ? 'dragging' : 'idle',\n class: props.class,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--iris-gap-sm, 4px)',\n opacity: props.disabled ? 0.6 : 1,\n userSelect: activeKey.value ? 'none' : undefined,\n ...((props.style as Record<string, string | number> | undefined) ?? {}),\n },\n onPointerdown: onPointerDown,\n onPointermove: onPointerMove,\n onPointerup: onPointerUp,\n onPointerleave: onPointerUp,\n },\n children,\n )\n }\n },\n})\n","import { defineComponent, h, onBeforeUnmount, type PropType } from 'vue'\nimport { createLongPress } from '@iris-ui-kit/core'\n\n/**\n * Behavior wrapper: fires `onLongPress` once the pointer has been held down\n * for `holdDelay` ms without an intervening pointerup/pointerleave. Wraps\n * children in a `<span data-iris-long-press style=\"display:contents\">` so it\n * doesn't affect layout. Backed by `createLongPress`'s statechart timer.\n *\n * @example\n * <IrisLongPress :hold-delay=\"500\" @longpress=\"onLongPress\">\n * <IrisButton>Hold me</IrisButton>\n * </IrisLongPress>\n */\nexport const IrisLongPress = defineComponent({\n name: 'IrisLongPress',\n inheritAttrs: false,\n props: {\n /** Time the pointer must be held before `onLongPress` fires, in ms. */\n holdDelay: {\n type: Number,\n default: 500,\n },\n /** Called once when the hold reaches `holdDelay` without an intervening release. */\n onLongPress: {\n type: Function as PropType<() => void>,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n emits: {\n longpress: () => true,\n },\n setup(props, { slots, emit }) {\n const ctrl = createLongPress({\n holdDelay: props.holdDelay,\n onLongPress: () => {\n props.onLongPress?.()\n emit('longpress')\n },\n })\n\n const onPointerDown = () => {\n if (props.disabled) return\n ctrl.press()\n }\n const onPointerUp = () => {\n ctrl.release()\n }\n const onPointerLeave = () => {\n ctrl.cancel()\n }\n\n onBeforeUnmount(() => ctrl.cancel())\n\n return () =>\n h(\n 'span',\n {\n 'data-iris-long-press': '',\n style: { display: 'contents' },\n onPointerdown: onPointerDown,\n onPointerup: onPointerUp,\n onPointerleave: onPointerLeave,\n },\n slots.default?.(),\n )\n },\n})\n"]}