@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.
- package/LICENSE +21 -0
- package/dist/admin.cjs +1869 -0
- package/dist/admin.cjs.map +1 -0
- package/dist/admin.d.cts +376 -0
- package/dist/admin.d.ts +376 -0
- package/dist/admin.js +10 -0
- package/dist/admin.js.map +1 -0
- package/dist/async.cjs +76 -0
- package/dist/async.cjs.map +1 -0
- package/dist/async.d.cts +59 -0
- package/dist/async.d.ts +59 -0
- package/dist/async.js +3 -0
- package/dist/async.js.map +1 -0
- package/dist/behaviors.cjs +659 -0
- package/dist/behaviors.cjs.map +1 -0
- package/dist/behaviors.d.cts +441 -0
- package/dist/behaviors.d.ts +441 -0
- package/dist/behaviors.js +3 -0
- package/dist/behaviors.js.map +1 -0
- package/dist/chunk-3FJUCHCC.js +146 -0
- package/dist/chunk-3FJUCHCC.js.map +1 -0
- package/dist/chunk-3R3QDLJC.js +172 -0
- package/dist/chunk-3R3QDLJC.js.map +1 -0
- package/dist/chunk-4FLIW67H.js +137 -0
- package/dist/chunk-4FLIW67H.js.map +1 -0
- package/dist/chunk-4FQ7XF52.js +3 -0
- package/dist/chunk-4FQ7XF52.js.map +1 -0
- package/dist/chunk-72PZMU6R.js +99 -0
- package/dist/chunk-72PZMU6R.js.map +1 -0
- package/dist/chunk-75GSYEJS.js +17 -0
- package/dist/chunk-75GSYEJS.js.map +1 -0
- package/dist/chunk-7IOJADZC.js +38 -0
- package/dist/chunk-7IOJADZC.js.map +1 -0
- package/dist/chunk-CIZGSGXN.js +651 -0
- package/dist/chunk-CIZGSGXN.js.map +1 -0
- package/dist/chunk-F77KIPOH.js +103 -0
- package/dist/chunk-F77KIPOH.js.map +1 -0
- package/dist/chunk-FJBYAIL4.js +1318 -0
- package/dist/chunk-FJBYAIL4.js.map +1 -0
- package/dist/chunk-H7HVVPYR.js +66 -0
- package/dist/chunk-H7HVVPYR.js.map +1 -0
- package/dist/chunk-I6D5VXQK.js +167 -0
- package/dist/chunk-I6D5VXQK.js.map +1 -0
- package/dist/chunk-PPYNXNGZ.js +73 -0
- package/dist/chunk-PPYNXNGZ.js.map +1 -0
- package/dist/chunk-QLUIKEMJ.js +1197 -0
- package/dist/chunk-QLUIKEMJ.js.map +1 -0
- package/dist/chunk-ROJV6RON.js +3 -0
- package/dist/chunk-ROJV6RON.js.map +1 -0
- package/dist/chunk-S43IHHBU.js +82 -0
- package/dist/chunk-S43IHHBU.js.map +1 -0
- package/dist/chunk-TCAXRWT6.js +108 -0
- package/dist/chunk-TCAXRWT6.js.map +1 -0
- package/dist/chunk-TQB5LVOH.js +17 -0
- package/dist/chunk-TQB5LVOH.js.map +1 -0
- package/dist/chunk-VM2CXEUA.js +46 -0
- package/dist/chunk-VM2CXEUA.js.map +1 -0
- package/dist/chunk-W2JVHGFR.js +103 -0
- package/dist/chunk-W2JVHGFR.js.map +1 -0
- package/dist/chunk-WL67XCH5.js +59 -0
- package/dist/chunk-WL67XCH5.js.map +1 -0
- package/dist/chunk-XCNCIG2I.js +165 -0
- package/dist/chunk-XCNCIG2I.js.map +1 -0
- package/dist/chunk-XSLBANUV.js +16 -0
- package/dist/chunk-XSLBANUV.js.map +1 -0
- package/dist/chunk-ZY4NLITM.js +73 -0
- package/dist/chunk-ZY4NLITM.js.map +1 -0
- package/dist/data.cjs +59 -0
- package/dist/data.cjs.map +1 -0
- package/dist/data.d.cts +46 -0
- package/dist/data.d.ts +46 -0
- package/dist/data.js +4 -0
- package/dist/data.js.map +1 -0
- package/dist/error-boundary.cjs +115 -0
- package/dist/error-boundary.cjs.map +1 -0
- package/dist/error-boundary.d.cts +60 -0
- package/dist/error-boundary.d.ts +60 -0
- package/dist/error-boundary.js +4 -0
- package/dist/error-boundary.js.map +1 -0
- package/dist/floating.cjs +149 -0
- package/dist/floating.cjs.map +1 -0
- package/dist/floating.d.cts +106 -0
- package/dist/floating.d.ts +106 -0
- package/dist/floating.js +4 -0
- package/dist/floating.js.map +1 -0
- package/dist/form.cjs +144 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.d.cts +128 -0
- package/dist/form.d.ts +128 -0
- package/dist/form.js +3 -0
- package/dist/form.js.map +1 -0
- package/dist/i18n.cjs +112 -0
- package/dist/i18n.cjs.map +1 -0
- package/dist/i18n.d.cts +99 -0
- package/dist/i18n.d.ts +99 -0
- package/dist/i18n.js +3 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.cjs +18673 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8087 -0
- package/dist/index.d.ts +8087 -0
- package/dist/index.js +13525 -0
- package/dist/index.js.map +1 -0
- package/dist/layouts.cjs +392 -0
- package/dist/layouts.cjs.map +1 -0
- package/dist/layouts.d.cts +406 -0
- package/dist/layouts.d.ts +406 -0
- package/dist/layouts.js +5 -0
- package/dist/layouts.js.map +1 -0
- package/dist/machine.cjs +19 -0
- package/dist/machine.cjs.map +1 -0
- package/dist/machine.d.cts +18 -0
- package/dist/machine.d.ts +18 -0
- package/dist/machine.js +4 -0
- package/dist/machine.js.map +1 -0
- package/dist/modal-utils.cjs +170 -0
- package/dist/modal-utils.cjs.map +1 -0
- package/dist/modal-utils.d.cts +43 -0
- package/dist/modal-utils.d.ts +43 -0
- package/dist/modal-utils.js +3 -0
- package/dist/modal-utils.js.map +1 -0
- package/dist/motion.cjs +88 -0
- package/dist/motion.cjs.map +1 -0
- package/dist/motion.d.cts +43 -0
- package/dist/motion.d.ts +43 -0
- package/dist/motion.js +3 -0
- package/dist/motion.js.map +1 -0
- package/dist/provider.cjs +272 -0
- package/dist/provider.cjs.map +1 -0
- package/dist/provider.d.cts +130 -0
- package/dist/provider.d.ts +130 -0
- package/dist/provider.js +6 -0
- package/dist/provider.js.map +1 -0
- package/dist/resource.cjs +25 -0
- package/dist/resource.cjs.map +1 -0
- package/dist/resource.d.cts +17 -0
- package/dist/resource.d.ts +17 -0
- package/dist/resource.js +3 -0
- package/dist/resource.js.map +1 -0
- package/dist/skeletons.cjs +1659 -0
- package/dist/skeletons.cjs.map +1 -0
- package/dist/skeletons.d.cts +179 -0
- package/dist/skeletons.d.ts +179 -0
- package/dist/skeletons.js +7 -0
- package/dist/skeletons.js.map +1 -0
- package/dist/skins.cjs +138 -0
- package/dist/skins.cjs.map +1 -0
- package/dist/skins.d.cts +67 -0
- package/dist/skins.d.ts +67 -0
- package/dist/skins.js +3 -0
- package/dist/skins.js.map +1 -0
- package/dist/theme.cjs +106 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +103 -0
- package/dist/theme.d.ts +103 -0
- package/dist/theme.js +3 -0
- package/dist/theme.js.map +1 -0
- package/dist/undo.cjs +51 -0
- package/dist/undo.cjs.map +1 -0
- package/dist/undo.d.cts +48 -0
- package/dist/undo.d.ts +48 -0
- package/dist/undo.js +3 -0
- package/dist/undo.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../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/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/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/switch/Switch.ts","../src/primitives/radio/Radio.ts","../src/primitives/list/List.ts","../src/primitives/select/Select.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/banner/Banner.ts","../src/primitives/slider/Slider.ts","../src/primitives/pagination/Pagination.ts","../src/primitives/card/Card.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"],"names":["defineComponent","inject","ref","watch","computed","h","useId","Teleport","createFloatingMachine","provide","nextTick","onMounted","SIZE_MAP","clamp","px","resolveSize","CSS","installed","TONE_TO_VAR","decimalsOf","roundToStep","createKeyboardNav","onBeforeUnmount","shallowRef","createSelectionModel","t","saveFile","nextEnabledIndex","onScopeDispose","Fragment","pad","prefersReducedMotion","resolve","VALUE_FONT","COLOR","Comment","getDirection","h12","h24","formatDisplay"],"mappings":"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","file":"index.js","sourcesContent":["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 { 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, 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 { 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 {\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 { 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 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 { 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"]}
|