@elvora/vue 1.0.0-rc.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/provider.ts","../src/ElvoraProvider.ts","../src/Button.ts","../src/IconButton.ts","../src/Input.ts","../src/Textarea.ts","../src/Icon.ts","../src/Checkbox.ts","../src/Radio.ts","../src/Switch.ts","../src/Select.ts","../src/Label.ts","../src/Divider.ts","../src/Avatar.ts","../src/Badge.ts","../src/Tag.ts","../src/Spinner.ts","../src/Progress.ts","../src/Tooltip.ts","../src/Box.ts","../src/Stack.ts","../src/Grid.ts","../src/Container.ts","../src/Card.ts","../src/Alert.ts","../src/Skeleton.ts","../src/Empty.ts","../src/Result.ts","../src/Modal.ts","../src/Drawer.ts","../src/Popover.ts","../src/Toast.ts","../src/Tabs.ts","../src/Menu.ts","../src/Dropdown.ts","../src/Breadcrumb.ts","../src/Pagination.ts","../src/Steps.ts","../src/Anchor.ts","../src/BackTop.ts","../src/Form.ts","../src/NumberInput.ts","../src/Segmented.ts","../src/Slider.ts","../src/Rate.ts","../src/Upload.ts","../src/AutoComplete.ts","../src/ColorPicker.ts","../src/DatePicker.ts","../src/TimePicker.ts","../src/DateRangePicker.ts","../src/Cascader.ts","../src/TreeSelect.ts","../src/Mentions.ts","../src/Transfer.ts","../src/Table.ts","../src/Tree.ts","../src/List.ts","../src/Descriptions.ts","../src/Calendar.ts","../src/Statistic.ts","../src/Carousel.ts","../src/Image.ts","../src/Timeline.ts","../src/Collapse.ts","../src/Accordion.ts","../src/Tour.ts","../src/FloatButton.ts","../src/Watermark.ts","../src/QRCode.ts","../src/Splitter.ts","../src/Affix.ts","../src/SpeedDial.ts","../src/Backdrop.ts","../src/ImageList.ts","../src/PaginationVariants.ts","../src/Stepper.ts","../src/ToggleButton.ts","../src/ButtonGroup.ts","../src/ChipInput.ts","../src/ProTable.ts","../src/ProForm.ts","../src/ProLayout.ts","../src/DataGrid.ts"],"names":["defaultTheme","defineComponent","ref","h","defaultButtonProps","computed","getButtonStyle","defaultInputProps","getInputStyle","sizeMap","provide","inject","statusIntent","sizePx","pad","h2","watch","onUnmounted","Teleport","onMounted","onBeforeUnmount","sizePadding","defaultFormat","addMonths","startOfMonth","buildMatrix","isSameDay","reactive","defaultCompare"],"mappings":"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","file":"index.js","sourcesContent":["import { inject, provide, ref, type InjectionKey, type Ref } from 'vue';\r\nimport type { ElvoraTheme, Direction } from '@elvora/core';\r\nimport { defaultTheme } from '@elvora/themes';\r\n\r\nexport interface ElvoraContext {\r\n theme: Ref<ElvoraTheme>;\r\n direction: Ref<Direction>;\r\n}\r\n\r\nexport const ELVORA_CONTEXT: InjectionKey<ElvoraContext> = Symbol('ELVORA_CONTEXT');\r\n\r\n/**\r\n * Provide a theme + direction to all descendant Elvora components. Call inside\r\n * a parent component's `setup()` or `<script setup>` block.\r\n */\r\nexport function provideElvora(options: { theme?: ElvoraTheme; direction?: Direction } = {}): ElvoraContext {\r\n const ctx: ElvoraContext = {\r\n theme: ref(options.theme ?? defaultTheme),\r\n direction: ref(options.direction ?? 'ltr'),\r\n };\r\n provide(ELVORA_CONTEXT, ctx);\r\n return ctx;\r\n}\r\n\r\nexport function useElvoraContext(): ElvoraContext {\r\n const ctx = inject(ELVORA_CONTEXT, null);\r\n if (!ctx) {\r\n return {\r\n theme: ref(defaultTheme),\r\n direction: ref('ltr'),\r\n };\r\n }\r\n return ctx;\r\n}\r\n\r\nexport function useTheme(): Ref<ElvoraTheme> {\r\n return useElvoraContext().theme;\r\n}\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport type { ElvoraTheme, Direction } from '@elvora/core';\r\nimport { defaultTheme } from '@elvora/themes';\r\nimport { provideElvora } from './provider';\r\n\r\n/**\r\n * `<ElvoraProvider>` component — convenience wrapper around `provideElvora`.\r\n * Use either this component or the composable, not both.\r\n */\r\nexport const ElvoraProvider = defineComponent({\r\n name: 'ElvoraProvider',\r\n props: {\r\n theme: {\r\n type: Object as PropType<ElvoraTheme>,\r\n default: () => defaultTheme,\r\n },\r\n direction: {\r\n type: String as PropType<Direction>,\r\n default: 'ltr',\r\n },\r\n },\r\n setup(props, { slots }) {\r\n provideElvora({ theme: props.theme, direction: props.direction });\r\n return () => h('div', { dir: props.direction }, slots.default?.());\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport {\r\n defaultButtonProps,\r\n getButtonStyle,\r\n type ElvoraSize,\r\n type ElvoraVariant,\r\n type ElvoraTheme,\r\n} from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\n/**\r\n * Vue 3 Button. Same headless contract as the React, RN, and Angular adapters.\r\n *\r\n * ```vue\r\n * <ElvoraButton variant=\"primary\" size=\"md\" @press=\"handlePress\">\r\n * Click me\r\n * </ElvoraButton>\r\n * ```\r\n */\r\nexport const ElvoraButton = defineComponent({\r\n name: 'ElvoraButton',\r\n props: {\r\n variant: { type: String as PropType<ElvoraVariant>, default: defaultButtonProps.variant },\r\n size: { type: String as PropType<ElvoraSize>, default: defaultButtonProps.size },\r\n intent: { type: String as PropType<keyof ElvoraTheme['colors']['intent']>, default: undefined },\r\n fullWidth: { type: Boolean, default: defaultButtonProps.fullWidth },\r\n isLoading: { type: Boolean, default: defaultButtonProps.isLoading },\r\n isDisabled: { type: Boolean, default: defaultButtonProps.isDisabled },\r\n loadingText: { type: String, default: defaultButtonProps.loadingText },\r\n type: {\r\n type: String as PropType<'button' | 'submit' | 'reset'>,\r\n default: defaultButtonProps.type,\r\n },\r\n },\r\n emits: {\r\n press: (_event: MouseEvent | KeyboardEvent) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const hovered = ref(false);\r\n const pressed = ref(false);\r\n const focusVisible = ref(false);\r\n const inert = computed(() => props.isDisabled || props.isLoading);\r\n\r\n const style = computed(() =>\r\n getButtonStyle({\r\n theme: theme.value,\r\n variant: props.variant,\r\n size: props.size,\r\n fullWidth: props.fullWidth,\r\n isLoading: props.isLoading,\r\n isDisabled: props.isDisabled,\r\n isPressed: pressed.value,\r\n isHovered: hovered.value,\r\n isFocusVisible: focusVisible.value,\r\n intent: props.intent,\r\n }),\r\n );\r\n\r\n const handleClick = (event: MouseEvent) => {\r\n if (inert.value) {\r\n event.preventDefault();\r\n return;\r\n }\r\n emit('press', event);\r\n };\r\n\r\n const handleKey = (event: KeyboardEvent) => {\r\n if (inert.value) return;\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n if (event.key === ' ') event.preventDefault();\r\n emit('press', event);\r\n }\r\n };\r\n\r\n return () =>\r\n h(\r\n 'button',\r\n {\r\n type: props.type,\r\n disabled: inert.value || undefined,\r\n 'aria-disabled': inert.value || undefined,\r\n 'aria-busy': props.isLoading || undefined,\r\n 'data-variant': props.variant,\r\n 'data-size': props.size,\r\n 'data-loading': props.isLoading || undefined,\r\n style: style.value.root as CSSProperties,\r\n onClick: handleClick,\r\n onKeydown: handleKey,\r\n onMouseenter: () => (hovered.value = true),\r\n onMouseleave: () => {\r\n hovered.value = false;\r\n pressed.value = false;\r\n },\r\n onMousedown: () => (pressed.value = true),\r\n onMouseup: () => (pressed.value = false),\r\n onFocus: () => (focusVisible.value = true),\r\n onBlur: () => (focusVisible.value = false),\r\n },\r\n [\r\n props.isLoading\r\n ? h(\r\n 'span',\r\n {\r\n 'aria-hidden': 'true',\r\n style: { position: 'absolute', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' },\r\n },\r\n [renderSpinner(style.value.spinnerColor, Math.max(12, Number(style.value.label.fontSize) || 14))],\r\n )\r\n : null,\r\n h('span', { style: style.value.label as CSSProperties }, slots.default?.()),\r\n ],\r\n );\r\n },\r\n});\r\n\r\nfunction renderSpinner(color: string, size: number) {\r\n return h(\r\n 'svg',\r\n {\r\n width: size,\r\n height: size,\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n style: { animation: 'elvora-spin 0.75s linear infinite' },\r\n },\r\n [\r\n h('circle', { cx: 12, cy: 12, r: 10, stroke: color, 'stroke-opacity': '0.25', 'stroke-width': 3 }),\r\n h('path', { d: 'M22 12a10 10 0 0 1-10 10', stroke: color, 'stroke-width': 3, 'stroke-linecap': 'round' }),\r\n ],\r\n );\r\n}\r\n","import { computed, defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport {\r\n defaultButtonProps,\r\n getButtonStyle,\r\n type ElvoraSize,\r\n type ElvoraTheme,\r\n type ElvoraVariant,\r\n} from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\nconst sizePx: Record<ElvoraSize, number> = { xs: 24, sm: 32, md: 40, lg: 48, xl: 56 };\r\n\r\n/** Square icon-only button. `ariaLabel` is REQUIRED. */\r\nexport const ElvoraIconButton = defineComponent({\r\n name: 'ElvoraIconButton',\r\n props: {\r\n ariaLabel: { type: String, required: true },\r\n variant: { type: String as PropType<ElvoraVariant>, default: defaultButtonProps.variant },\r\n size: { type: String as PropType<ElvoraSize>, default: defaultButtonProps.size },\r\n intent: { type: String as PropType<keyof ElvoraTheme['colors']['intent']>, default: undefined },\r\n isLoading: { type: Boolean, default: defaultButtonProps.isLoading },\r\n isDisabled: { type: Boolean, default: defaultButtonProps.isDisabled },\r\n },\r\n emits: {\r\n press: (_event: MouseEvent) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const hovered = ref(false);\r\n const pressed = ref(false);\r\n const focusVisible = ref(false);\r\n const inert = computed(() => props.isDisabled || props.isLoading);\r\n const style = computed(() =>\r\n getButtonStyle({\r\n theme: theme.value,\r\n variant: props.variant,\r\n size: props.size,\r\n fullWidth: false,\r\n isLoading: props.isLoading,\r\n isDisabled: props.isDisabled,\r\n isPressed: pressed.value,\r\n isHovered: hovered.value,\r\n isFocusVisible: focusVisible.value,\r\n intent: props.intent,\r\n }),\r\n );\r\n return () => {\r\n const px = sizePx[props.size];\r\n const root: CSSProperties = {\r\n ...(style.value.root as CSSProperties),\r\n width: `${px}px`,\r\n minWidth: `${px}px`,\r\n paddingLeft: '0',\r\n paddingRight: '0',\r\n };\r\n return h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': props.ariaLabel,\r\n disabled: inert.value || undefined,\r\n 'aria-disabled': inert.value || undefined,\r\n 'aria-busy': props.isLoading || undefined,\r\n 'data-variant': props.variant,\r\n 'data-size': props.size,\r\n style: root,\r\n onClick: (e: MouseEvent) => {\r\n if (inert.value) {\r\n e.preventDefault();\r\n return;\r\n }\r\n emit('press', e);\r\n },\r\n onMouseenter: () => (hovered.value = true),\r\n onMouseleave: () => {\r\n hovered.value = false;\r\n pressed.value = false;\r\n },\r\n onMousedown: () => (pressed.value = true),\r\n onMouseup: () => (pressed.value = false),\r\n onFocus: () => (focusVisible.value = true),\r\n onBlur: () => (focusVisible.value = false),\r\n },\r\n slots.default?.(),\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport { defaultInputProps, getInputStyle, type ElvoraSize, type ElvoraStatus } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\n/** Text input. Use `v-model` for two-way binding. */\r\nexport const ElvoraInput = defineComponent({\r\n name: 'ElvoraInput',\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n type: { type: String as PropType<'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number'>, default: 'text' },\r\n placeholder: { type: String, default: undefined },\r\n size: { type: String as PropType<ElvoraSize>, default: defaultInputProps.size },\r\n status: { type: String as PropType<ElvoraStatus>, default: defaultInputProps.status },\r\n isReadOnly: { type: Boolean, default: defaultInputProps.isReadOnly },\r\n isDisabled: { type: Boolean, default: defaultInputProps.isDisabled },\r\n isRequired: { type: Boolean, default: defaultInputProps.isRequired },\r\n isInvalid: { type: Boolean, default: defaultInputProps.isInvalid },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const focused = ref(false);\r\n const hovered = ref(false);\r\n const style = computed<CSSProperties>(() => ({\r\n ...(getInputStyle({\r\n theme: theme.value,\r\n size: props.size,\r\n status: props.status,\r\n isDisabled: props.isDisabled,\r\n isReadOnly: props.isReadOnly,\r\n isInvalid: props.isInvalid,\r\n isFocused: focused.value,\r\n isHovered: hovered.value,\r\n }) as CSSProperties),\r\n }));\r\n return () =>\r\n h('input', {\r\n type: props.type,\r\n value: props.modelValue,\r\n placeholder: props.placeholder,\r\n disabled: props.isDisabled || undefined,\r\n readonly: props.isReadOnly || undefined,\r\n required: props.isRequired || undefined,\r\n 'aria-invalid': props.isInvalid || props.status === 'error' || undefined,\r\n 'aria-required': props.isRequired || undefined,\r\n 'data-size': props.size,\r\n 'data-status': props.status,\r\n style: style.value,\r\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).value),\r\n onFocus: () => (focused.value = true),\r\n onBlur: () => (focused.value = false),\r\n onMouseenter: () => (hovered.value = true),\r\n onMouseleave: () => (hovered.value = false),\r\n });\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport { defaultInputProps, getInputStyle, type ElvoraSize, type ElvoraStatus } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\n/** Multi-line text input. Use `v-model` for two-way binding. */\r\nexport const ElvoraTextarea = defineComponent({\r\n name: 'ElvoraTextarea',\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n placeholder: { type: String, default: undefined },\r\n rows: { type: Number, default: 3 },\r\n isResizable: { type: Boolean, default: true },\r\n size: { type: String as PropType<ElvoraSize>, default: defaultInputProps.size },\r\n status: { type: String as PropType<ElvoraStatus>, default: defaultInputProps.status },\r\n isReadOnly: { type: Boolean, default: defaultInputProps.isReadOnly },\r\n isDisabled: { type: Boolean, default: defaultInputProps.isDisabled },\r\n isRequired: { type: Boolean, default: defaultInputProps.isRequired },\r\n isInvalid: { type: Boolean, default: defaultInputProps.isInvalid },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const focused = ref(false);\r\n const hovered = ref(false);\r\n const style = computed<CSSProperties>(() => ({\r\n ...(getInputStyle({\r\n theme: theme.value,\r\n size: props.size,\r\n status: props.status,\r\n isDisabled: props.isDisabled,\r\n isReadOnly: props.isReadOnly,\r\n isInvalid: props.isInvalid,\r\n isFocused: focused.value,\r\n isHovered: hovered.value,\r\n }) as CSSProperties),\r\n minHeight: 'auto',\r\n resize: props.isResizable ? 'vertical' : 'none',\r\n }));\r\n return () =>\r\n h('textarea', {\r\n value: props.modelValue,\r\n placeholder: props.placeholder,\r\n rows: props.rows,\r\n disabled: props.isDisabled || undefined,\r\n readonly: props.isReadOnly || undefined,\r\n required: props.isRequired || undefined,\r\n 'aria-invalid': props.isInvalid || props.status === 'error' || undefined,\r\n 'aria-required': props.isRequired || undefined,\r\n style: style.value,\r\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLTextAreaElement).value),\r\n onFocus: () => (focused.value = true),\r\n onBlur: () => (focused.value = false),\r\n onMouseenter: () => (hovered.value = true),\r\n onMouseleave: () => (hovered.value = false),\r\n });\r\n },\r\n});\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport { getIcon, icons, type IconName } from '@elvora/icons';\r\n\r\n/** Renders an SVG icon from `@elvora/icons` by name. */\r\nexport const ElvoraIcon = defineComponent({\r\n name: 'ElvoraIcon',\r\n props: {\r\n name: { type: String as PropType<IconName>, required: true },\r\n size: { type: Number, default: 16 },\r\n color: { type: String, default: 'currentColor' },\r\n label: { type: String, default: undefined },\r\n },\r\n setup(props) {\r\n return () => {\r\n if (!(props.name in icons)) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[elvora] Icon \"${String(props.name)}\" is not registered.`);\r\n }\r\n return null;\r\n }\r\n const def = getIcon(props.name);\r\n const a11y = props.label\r\n ? { role: 'img', 'aria-label': props.label }\r\n : { 'aria-hidden': 'true', focusable: 'false' };\r\n if (def.stroke) {\r\n return h(\r\n 'svg',\r\n {\r\n width: props.size,\r\n height: props.size,\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: props.color,\r\n 'stroke-width': def.strokeWidth ?? 2,\r\n 'stroke-linecap': 'round',\r\n 'stroke-linejoin': 'round',\r\n ...a11y,\r\n },\r\n [def.d2 ? h('path', { d: def.d2 }) : null, h('path', { d: def.d })],\r\n );\r\n }\r\n return h(\r\n 'svg',\r\n {\r\n width: props.size,\r\n height: props.size,\r\n viewBox: '0 0 24 24',\r\n fill: props.color,\r\n ...a11y,\r\n },\r\n [def.d2 ? h('path', { d: def.d2 }) : null, h('path', { d: def.d })],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\ntype CheckboxSize = 'sm' | 'md' | 'lg';\r\nconst sizeMap: Record<CheckboxSize, { box: number; icon: number; font: number }> = {\r\n sm: { box: 14, icon: 10, font: 13 },\r\n md: { box: 18, icon: 12, font: 14 },\r\n lg: { box: 22, icon: 14, font: 16 },\r\n};\r\n\r\nexport const ElvoraCheckbox = defineComponent({\r\n name: 'ElvoraCheckbox',\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n isIndeterminate: { type: Boolean, default: false },\r\n isInvalid: { type: Boolean, default: false },\r\n isDisabled: { type: Boolean, default: false },\r\n size: { type: String as PropType<CheckboxSize>, default: 'md' },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: boolean) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const dims = sizeMap[props.size];\r\n const isActive = Boolean(props.modelValue) || props.isIndeterminate;\r\n const box: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: `${dims.box}px`,\r\n height: `${dims.box}px`,\r\n border: `1.5px solid ${\r\n props.isInvalid ? t.colors.intent.danger.border : isActive ? t.colors.intent.primary.solid : t.colors.borderStrong\r\n }`,\r\n borderRadius: String(t.radii.sm),\r\n backgroundColor: isActive ? t.colors.intent.primary.solid : t.colors.surfaceElevated,\r\n color: t.colors.intent.primary.solidFg,\r\n transition: `background-color ${t.durations.fast} ${t.easings.standard}, border-color ${t.durations.fast} ${t.easings.standard}`,\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.5 : 1,\r\n flexShrink: 0,\r\n };\r\n return h(\r\n 'label',\r\n {\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n } as CSSProperties,\r\n },\r\n [\r\n h('input', {\r\n type: 'checkbox',\r\n checked: Boolean(props.modelValue),\r\n disabled: props.isDisabled || undefined,\r\n 'aria-invalid': props.isInvalid || undefined,\r\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).checked),\r\n style: {\r\n position: 'absolute',\r\n opacity: 0,\r\n width: '1px',\r\n height: '1px',\r\n pointerEvents: 'none',\r\n margin: '-1px',\r\n } as CSSProperties,\r\n }),\r\n h('span', { style: box, 'aria-hidden': 'true' }, [\r\n props.isIndeterminate\r\n ? h(ElvoraIcon, { name: 'minus', size: dims.icon, color: 'currentColor' })\r\n : props.modelValue\r\n ? h(ElvoraIcon, { name: 'check', size: dims.icon, color: 'currentColor' })\r\n : null,\r\n ]),\r\n slots.default\r\n ? h('span', { style: { color: t.colors.fg, fontSize: `${dims.font}px` } }, slots.default())\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, inject, provide, ref, type InjectionKey, type PropType, type Ref, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\ntype RadioSize = 'sm' | 'md' | 'lg';\r\nconst sizeMap: Record<RadioSize, { outer: number; inner: number; font: number }> = {\r\n sm: { outer: 14, inner: 6, font: 13 },\r\n md: { outer: 18, inner: 8, font: 14 },\r\n lg: { outer: 22, inner: 10, font: 16 },\r\n};\r\n\r\ninterface RadioGroupCtx {\r\n name: string;\r\n value: Ref<string | undefined>;\r\n setValue: (v: string) => void;\r\n isDisabled: Ref<boolean>;\r\n size: Ref<RadioSize>;\r\n}\r\n\r\nconst RADIO_GROUP_KEY: InjectionKey<RadioGroupCtx> = Symbol('ELVORA_RADIO_GROUP');\r\n\r\nexport const ElvoraRadioGroup = defineComponent({\r\n name: 'ElvoraRadioGroup',\r\n props: {\r\n modelValue: { type: String, default: undefined },\r\n name: { type: String, required: true },\r\n isDisabled: { type: Boolean, default: false },\r\n size: { type: String as PropType<RadioSize>, default: 'md' },\r\n label: { type: String, default: undefined },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const internal = ref<string | undefined>(props.modelValue);\r\n const value = ref<string | undefined>(props.modelValue);\r\n const isDisabled = ref(props.isDisabled);\r\n const size = ref<RadioSize>(props.size);\r\n provide(RADIO_GROUP_KEY, {\r\n name: props.name,\r\n value,\r\n setValue: (v: string) => {\r\n internal.value = v;\r\n value.value = v;\r\n emit('update:modelValue', v);\r\n },\r\n isDisabled,\r\n size,\r\n });\r\n return () => {\r\n value.value = props.modelValue ?? internal.value;\r\n isDisabled.value = props.isDisabled;\r\n size.value = props.size;\r\n return h(\r\n 'div',\r\n {\r\n role: 'radiogroup',\r\n 'aria-label': props.label,\r\n style: { display: 'inline-flex', flexDirection: 'column', gap: '8px' } as CSSProperties,\r\n },\r\n slots.default?.(),\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport const ElvoraRadio = defineComponent({\r\n name: 'ElvoraRadio',\r\n props: {\r\n value: { type: String, required: true },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n setup(props, { slots }) {\r\n const ctx = inject(RADIO_GROUP_KEY, null);\r\n if (!ctx) throw new Error('ElvoraRadio must be used inside <ElvoraRadioGroup>');\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const dims = sizeMap[ctx.size.value];\r\n const isChecked = ctx.value.value === props.value;\r\n const disabled = Boolean(ctx.isDisabled.value || props.isDisabled);\r\n const outer: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: `${dims.outer}px`,\r\n height: `${dims.outer}px`,\r\n border: `1.5px solid ${isChecked ? t.colors.intent.primary.solid : t.colors.borderStrong}`,\r\n borderRadius: '9999px',\r\n backgroundColor: t.colors.surfaceElevated,\r\n transition: `border-color ${t.durations.fast} ${t.easings.standard}`,\r\n flexShrink: 0,\r\n };\r\n const inner: CSSProperties = {\r\n width: `${dims.inner}px`,\r\n height: `${dims.inner}px`,\r\n borderRadius: '9999px',\r\n backgroundColor: t.colors.intent.primary.solid,\r\n transform: `scale(${isChecked ? 1 : 0})`,\r\n transition: `transform ${t.durations.fast} ${t.easings.standard}`,\r\n };\r\n return h(\r\n 'label',\r\n {\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.5 : 1,\r\n } as CSSProperties,\r\n },\r\n [\r\n h('input', {\r\n type: 'radio',\r\n name: ctx.name,\r\n value: props.value,\r\n checked: isChecked,\r\n disabled: disabled || undefined,\r\n onChange: () => ctx.setValue(props.value),\r\n style: {\r\n position: 'absolute',\r\n opacity: 0,\r\n width: '1px',\r\n height: '1px',\r\n pointerEvents: 'none',\r\n margin: '-1px',\r\n } as CSSProperties,\r\n }),\r\n h('span', { style: outer, 'aria-hidden': 'true' }, [h('span', { style: inner })]),\r\n slots.default\r\n ? h('span', { style: { color: t.colors.fg, fontSize: `${dims.font}px` } }, slots.default())\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\ntype SwitchSize = 'sm' | 'md' | 'lg';\r\nconst sizeMap: Record<SwitchSize, { trackW: number; trackH: number; thumb: number }> = {\r\n sm: { trackW: 28, trackH: 16, thumb: 12 },\r\n md: { trackW: 36, trackH: 20, thumb: 16 },\r\n lg: { trackW: 44, trackH: 24, thumb: 20 },\r\n};\r\n\r\nexport const ElvoraSwitch = defineComponent({\r\n name: 'ElvoraSwitch',\r\n props: {\r\n modelValue: { type: Boolean, default: false },\r\n isDisabled: { type: Boolean, default: false },\r\n size: { type: String as PropType<SwitchSize>, default: 'md' },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: boolean) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const dims = sizeMap[props.size];\r\n const track: CSSProperties = {\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: `${dims.trackW}px`,\r\n height: `${dims.trackH}px`,\r\n backgroundColor: props.modelValue ? t.colors.intent.primary.solid : t.colors.intent.neutral.subtle,\r\n border: `1px solid ${props.modelValue ? t.colors.intent.primary.solid : t.colors.border}`,\r\n borderRadius: '9999px',\r\n transition: `background-color ${t.durations.fast} ${t.easings.standard}, border-color ${t.durations.fast} ${t.easings.standard}`,\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.5 : 1,\r\n flexShrink: 0,\r\n };\r\n const thumb: CSSProperties = {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '2px',\r\n transform: `translate(${props.modelValue ? dims.trackW - dims.thumb - 4 : 0}px, -50%)`,\r\n width: `${dims.thumb}px`,\r\n height: `${dims.thumb}px`,\r\n backgroundColor: '#fff',\r\n borderRadius: '9999px',\r\n boxShadow: t.shadows.sm,\r\n transition: `transform ${t.durations.fast} ${t.easings.standard}`,\r\n };\r\n return h(\r\n 'label',\r\n {\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n } as CSSProperties,\r\n },\r\n [\r\n h('input', {\r\n type: 'checkbox',\r\n role: 'switch',\r\n 'aria-checked': Boolean(props.modelValue),\r\n checked: Boolean(props.modelValue),\r\n disabled: props.isDisabled || undefined,\r\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).checked),\r\n style: {\r\n position: 'absolute',\r\n opacity: 0,\r\n width: '1px',\r\n height: '1px',\r\n pointerEvents: 'none',\r\n margin: '-1px',\r\n } as CSSProperties,\r\n }),\r\n h('span', { style: track, 'aria-hidden': 'true' }, [h('span', { style: thumb })]),\r\n slots.default ? h('span', { style: { color: t.colors.fg, fontSize: '14px' } }, slots.default()) : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport { defaultInputProps, getInputStyle, type ElvoraSize, type ElvoraStatus } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nexport interface ElvoraSelectOption {\r\n label: string;\r\n value: string;\r\n disabled?: boolean;\r\n}\r\n\r\n/** Native `<select>` styled with Elvora tokens. Use `v-model`. */\r\nexport const ElvoraSelect = defineComponent({\r\n name: 'ElvoraSelect',\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n options: { type: Array as PropType<ElvoraSelectOption[]>, required: true },\r\n placeholder: { type: String, default: undefined },\r\n size: { type: String as PropType<ElvoraSize>, default: defaultInputProps.size },\r\n status: { type: String as PropType<ElvoraStatus>, default: defaultInputProps.status },\r\n isDisabled: { type: Boolean, default: defaultInputProps.isDisabled },\r\n isRequired: { type: Boolean, default: defaultInputProps.isRequired },\r\n isInvalid: { type: Boolean, default: defaultInputProps.isInvalid },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const focused = ref(false);\r\n const hovered = ref(false);\r\n const style = computed<CSSProperties>(() => ({\r\n ...(getInputStyle({\r\n theme: theme.value,\r\n size: props.size,\r\n status: props.status,\r\n isDisabled: props.isDisabled,\r\n isReadOnly: false,\r\n isInvalid: props.isInvalid,\r\n isFocused: focused.value,\r\n isHovered: hovered.value,\r\n }) as CSSProperties),\r\n appearance: 'none',\r\n paddingRight: '36px',\r\n }));\r\n return () =>\r\n h('span', { style: { position: 'relative', display: 'inline-flex', width: '100%' } }, [\r\n h(\r\n 'select',\r\n {\r\n value: props.modelValue,\r\n disabled: props.isDisabled || undefined,\r\n required: props.isRequired || undefined,\r\n 'aria-invalid': props.isInvalid || props.status === 'error' || undefined,\r\n 'aria-required': props.isRequired || undefined,\r\n style: style.value,\r\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLSelectElement).value),\r\n onFocus: () => (focused.value = true),\r\n onBlur: () => (focused.value = false),\r\n onMouseenter: () => (hovered.value = true),\r\n onMouseleave: () => (hovered.value = false),\r\n },\r\n [\r\n props.placeholder\r\n ? h('option', { value: '', disabled: true, hidden: true }, props.placeholder)\r\n : null,\r\n ...props.options.map((opt) =>\r\n h('option', { value: opt.value, disabled: opt.disabled || undefined }, opt.label),\r\n ),\r\n ],\r\n ),\r\n h(\r\n 'span',\r\n {\r\n 'aria-hidden': 'true',\r\n style: {\r\n position: 'absolute',\r\n right: '12px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n color: theme.value.colors.fgMuted,\r\n pointerEvents: 'none',\r\n display: 'inline-flex',\r\n },\r\n },\r\n [h(ElvoraIcon, { name: 'chevronDown', size: 16 })],\r\n ),\r\n ]);\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\ntype LabelSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\nconst sizeMap: Record<LabelSize, { fontSize: number; gap: number }> = {\r\n xs: { fontSize: 11, gap: 4 },\r\n sm: { fontSize: 12, gap: 4 },\r\n md: { fontSize: 14, gap: 6 },\r\n lg: { fontSize: 16, gap: 6 },\r\n};\r\n\r\n/** Accessible form label. Pair via `for` with an input, or wrap an input. */\r\nexport const ElvoraLabel = defineComponent({\r\n name: 'ElvoraLabel',\r\n props: {\r\n for: { type: String, default: undefined },\r\n isRequired: { type: Boolean, default: false },\r\n size: { type: String as PropType<LabelSize>, default: 'md' },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const dims = sizeMap[props.size];\r\n const t = theme.value;\r\n const style: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: `${dims.gap}px`,\r\n color: t.colors.fg,\r\n fontFamily: t.tokens.typography.fontFamilies.sans,\r\n fontSize: `${dims.fontSize}px`,\r\n fontWeight: String(t.tokens.typography.fontWeights.medium),\r\n lineHeight: String(t.tokens.typography.lineHeights.snug),\r\n userSelect: 'none',\r\n };\r\n return h('label', { for: props.for, style }, [\r\n slots.default?.(),\r\n props.isRequired\r\n ? h('span', { 'aria-hidden': 'true', style: { color: t.colors.intent.danger.fg } }, '*')\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { Orientation } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\n/** Visual separator. Provide a default slot to render an \"OR\"-style divider. */\r\nexport const ElvoraDivider = defineComponent({\r\n name: 'ElvoraDivider',\r\n props: {\r\n orientation: { type: String as PropType<Orientation>, default: 'horizontal' },\r\n thickness: { type: Number, default: 1 },\r\n isDecorative: { type: Boolean, default: undefined },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const hasChildren = Boolean(slots.default && slots.default().length);\r\n const role = (props.isDecorative ?? !hasChildren) ? 'presentation' : 'separator';\r\n if (hasChildren) {\r\n const line: CSSProperties = { flex: '1', borderTop: `${props.thickness}px solid ${t.colors.border}` };\r\n return h(\r\n 'div',\r\n {\r\n role,\r\n 'aria-orientation': props.orientation,\r\n style: { display: 'flex', alignItems: 'center', gap: '12px', color: t.colors.fgMuted, fontSize: '13px' },\r\n },\r\n [h('span', { style: line }), h('span', slots.default!()), h('span', { style: line })],\r\n );\r\n }\r\n const style: CSSProperties =\r\n props.orientation === 'vertical'\r\n ? { width: `${props.thickness}px`, alignSelf: 'stretch', backgroundColor: t.colors.border }\r\n : { height: `${props.thickness}px`, width: '100%', backgroundColor: t.colors.border };\r\n return h('div', { role, 'aria-orientation': props.orientation, style });\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraSize } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\nconst sizeMap: Record<ElvoraSize, number> = { xs: 20, sm: 28, md: 36, lg: 48, xl: 64 };\r\n\r\n/** User avatar. Falls back gracefully: image → initials → custom fallback slot. */\r\nexport const ElvoraAvatar = defineComponent({\r\n name: 'ElvoraAvatar',\r\n props: {\r\n src: { type: String, default: undefined },\r\n alt: { type: String, default: undefined },\r\n name: { type: String, default: undefined },\r\n size: { type: String as PropType<ElvoraSize>, default: 'md' },\r\n shape: { type: String as PropType<'circle' | 'square'>, default: 'circle' },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n const imgFailed = ref(false);\r\n return () => {\r\n const t = theme.value;\r\n const px = sizeMap[props.size];\r\n const initials = (props.name ?? '')\r\n .split(' ')\r\n .map((part) => part[0])\r\n .filter(Boolean)\r\n .slice(0, 2)\r\n .join('')\r\n .toUpperCase();\r\n const container: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: `${px}px`,\r\n height: `${px}px`,\r\n flexShrink: 0,\r\n overflow: 'hidden',\r\n borderRadius: props.shape === 'circle' ? '9999px' : String(t.radii.md),\r\n backgroundColor: t.colors.intent.neutral.subtle,\r\n color: t.colors.intent.neutral.fg,\r\n fontFamily: t.tokens.typography.fontFamilies.sans,\r\n fontSize: `${Math.max(10, Math.floor(px * 0.4))}px`,\r\n fontWeight: String(t.tokens.typography.fontWeights.semibold),\r\n userSelect: 'none',\r\n };\r\n const showImage = props.src && !imgFailed.value;\r\n return h('span', { style: container }, [\r\n showImage\r\n ? h('img', {\r\n src: props.src,\r\n alt: props.alt ?? props.name ?? '',\r\n onError: () => (imgFailed.value = true),\r\n style: { width: '100%', height: '100%', objectFit: 'cover', display: 'block' },\r\n })\r\n : initials\r\n ? h('span', { 'aria-label': props.name }, initials)\r\n : slots.fallback?.() ?? h('span', { 'aria-hidden': 'true' }, '?'),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraSize, ElvoraStatus, ElvoraTone } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\ntype BadgeSize = Exclude<ElvoraSize, 'xl'>;\r\nconst sizeMap: Record<BadgeSize, { padX: number; padY: number; font: number; height: number; radius: 'sm' | 'md'; dotSize: number }> = {\r\n xs: { padX: 4, padY: 1, font: 10, height: 16, radius: 'sm', dotSize: 6 },\r\n sm: { padX: 6, padY: 2, font: 11, height: 18, radius: 'sm', dotSize: 8 },\r\n md: { padX: 8, padY: 2, font: 12, height: 22, radius: 'md', dotSize: 10 },\r\n lg: { padX: 10, padY: 4, font: 13, height: 26, radius: 'md', dotSize: 12 },\r\n};\r\n\r\nconst statusIntent = {\r\n neutral: 'neutral',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'danger',\r\n} as const;\r\n\r\nexport const ElvoraBadge = defineComponent({\r\n name: 'ElvoraBadge',\r\n props: {\r\n status: { type: String as PropType<ElvoraStatus>, default: 'neutral' },\r\n size: { type: String as PropType<BadgeSize>, default: 'sm' },\r\n tone: { type: String as PropType<ElvoraTone>, default: 'subtle' },\r\n isDot: { type: Boolean, default: false },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent[statusIntent[props.status]];\r\n const dims = sizeMap[props.size];\r\n let bg = intent.subtle;\r\n let fg = intent.fg;\r\n let border = 'transparent';\r\n if (props.tone === 'solid') {\r\n bg = intent.solid;\r\n fg = intent.solidFg;\r\n } else if (props.tone === 'outline') {\r\n bg = 'transparent';\r\n fg = intent.fg;\r\n border = intent.border;\r\n }\r\n if (props.isDot) {\r\n return h('span', {\r\n role: 'status',\r\n style: {\r\n display: 'inline-block',\r\n width: `${dims.dotSize}px`,\r\n height: `${dims.dotSize}px`,\r\n backgroundColor: bg,\r\n borderRadius: '9999px',\r\n border: props.tone === 'outline' ? `1px solid ${border}` : undefined,\r\n } as CSSProperties,\r\n });\r\n }\r\n const style: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n paddingLeft: `${dims.padX}px`,\r\n paddingRight: `${dims.padX}px`,\r\n paddingTop: `${dims.padY}px`,\r\n paddingBottom: `${dims.padY}px`,\r\n minHeight: `${dims.height}px`,\r\n borderRadius: String(t.radii[dims.radius]),\r\n borderWidth: props.tone === 'outline' ? '1px' : '0',\r\n borderStyle: 'solid',\r\n borderColor: border,\r\n backgroundColor: bg,\r\n color: fg,\r\n fontFamily: t.tokens.typography.fontFamilies.sans,\r\n fontSize: `${dims.font}px`,\r\n fontWeight: String(t.tokens.typography.fontWeights.medium),\r\n lineHeight: '1',\r\n whiteSpace: 'nowrap',\r\n };\r\n return h('span', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraSize, ElvoraStatus, ElvoraTone } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\ntype TagSize = Exclude<ElvoraSize, 'xl'>;\r\nconst sizeMap: Record<TagSize, { padX: number; padY: number; font: number; height: number }> = {\r\n xs: { padX: 6, padY: 2, font: 11, height: 20 },\r\n sm: { padX: 8, padY: 3, font: 12, height: 24 },\r\n md: { padX: 10, padY: 4, font: 13, height: 28 },\r\n lg: { padX: 12, padY: 6, font: 14, height: 32 },\r\n};\r\n\r\nconst statusIntent = {\r\n neutral: 'neutral',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'danger',\r\n} as const;\r\n\r\nexport const ElvoraTag = defineComponent({\r\n name: 'ElvoraTag',\r\n props: {\r\n status: { type: String as PropType<ElvoraStatus>, default: 'neutral' },\r\n size: { type: String as PropType<TagSize>, default: 'sm' },\r\n tone: { type: String as PropType<ElvoraTone>, default: 'subtle' },\r\n dismissible: { type: Boolean, default: false },\r\n closeLabel: { type: String, default: 'Remove' },\r\n },\r\n emits: {\r\n close: (_event: MouseEvent) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent[statusIntent[props.status]];\r\n const dims = sizeMap[props.size];\r\n let bg = intent.subtle;\r\n let fg = intent.fg;\r\n let border = 'transparent';\r\n if (props.tone === 'solid') {\r\n bg = intent.solid;\r\n fg = intent.solidFg;\r\n } else if (props.tone === 'outline') {\r\n bg = 'transparent';\r\n fg = intent.fg;\r\n border = intent.border;\r\n }\r\n const root: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n paddingLeft: `${dims.padX}px`,\r\n paddingRight: props.dismissible ? `${Math.max(4, dims.padX - 4)}px` : `${dims.padX}px`,\r\n paddingTop: `${dims.padY}px`,\r\n paddingBottom: `${dims.padY}px`,\r\n minHeight: `${dims.height}px`,\r\n borderRadius: String(t.radii.md),\r\n borderWidth: props.tone === 'outline' ? '1px' : '0',\r\n borderStyle: 'solid',\r\n borderColor: border,\r\n backgroundColor: bg,\r\n color: fg,\r\n fontFamily: t.tokens.typography.fontFamilies.sans,\r\n fontSize: `${dims.font}px`,\r\n fontWeight: String(t.tokens.typography.fontWeights.medium),\r\n lineHeight: '1',\r\n whiteSpace: 'nowrap',\r\n };\r\n return h('span', { style: root }, [\r\n h('span', slots.default?.()),\r\n props.dismissible\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': props.closeLabel,\r\n onClick: (e: MouseEvent) => emit('close', e),\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: `${dims.font + 4}px`,\r\n height: `${dims.font + 4}px`,\r\n border: 0,\r\n background: 'transparent',\r\n color: 'inherit',\r\n cursor: 'pointer',\r\n borderRadius: '9999px',\r\n padding: 0,\r\n marginLeft: '2px',\r\n },\r\n },\r\n [h(ElvoraIcon, { name: 'x', size: dims.font })],\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport type { ElvoraSize } from '@elvora/core';\r\n\r\nconst sizePx: Record<ElvoraSize, number> = { xs: 12, sm: 14, md: 16, lg: 20, xl: 28 };\r\n\r\n/** Spinner — accessible loading indicator. */\r\nexport const ElvoraSpinner = defineComponent({\r\n name: 'ElvoraSpinner',\r\n props: {\r\n size: { type: [String, Number] as PropType<ElvoraSize | number>, default: 'md' },\r\n color: { type: String, default: 'currentColor' },\r\n label: { type: String, default: 'Loading' },\r\n thickness: { type: Number, default: 3 },\r\n },\r\n setup(props) {\r\n return () => {\r\n const px = typeof props.size === 'number' ? props.size : sizePx[props.size];\r\n return h(\r\n 'span',\r\n {\r\n role: 'status',\r\n 'aria-live': 'polite',\r\n style: { display: 'inline-flex', alignItems: 'center' },\r\n },\r\n [\r\n h(\r\n 'svg',\r\n {\r\n width: px,\r\n height: px,\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n 'aria-hidden': 'true',\r\n style: { animation: 'elvora-spin 0.75s linear infinite' },\r\n },\r\n [\r\n h('circle', { cx: 12, cy: 12, r: 10, stroke: props.color, 'stroke-opacity': '0.25', 'stroke-width': props.thickness }),\r\n h('path', { d: 'M22 12a10 10 0 0 1-10 10', stroke: props.color, 'stroke-width': props.thickness, 'stroke-linecap': 'round' }),\r\n ],\r\n ),\r\n h(\r\n 'span',\r\n {\r\n style: {\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px',\r\n padding: 0,\r\n margin: '-1px',\r\n overflow: 'hidden',\r\n clip: 'rect(0,0,0,0)',\r\n whiteSpace: 'nowrap',\r\n border: 0,\r\n },\r\n },\r\n props.label,\r\n ),\r\n h('style', '@keyframes elvora-spin { to { transform: rotate(360deg); } }'),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraSize, ElvoraStatus } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\ntype ProgressSize = Exclude<ElvoraSize, 'xl'>;\r\nconst heights: Record<ProgressSize, number> = { xs: 4, sm: 6, md: 8, lg: 12 };\r\nconst statusIntent = {\r\n neutral: 'primary',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'danger',\r\n} as const;\r\n\r\nexport const ElvoraProgress = defineComponent({\r\n name: 'ElvoraProgress',\r\n props: {\r\n value: { type: Number, default: undefined },\r\n max: { type: Number, default: 100 },\r\n min: { type: Number, default: 0 },\r\n size: { type: String as PropType<ProgressSize>, default: 'md' },\r\n status: { type: String as PropType<ElvoraStatus>, default: 'neutral' },\r\n label: { type: String, default: undefined },\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent[statusIntent[props.status]];\r\n const indeterminate = props.value === undefined;\r\n const clamped = indeterminate ? 0 : Math.max(props.min, Math.min(props.max, props.value as number));\r\n const pct = indeterminate ? 30 : ((clamped - props.min) / (props.max - props.min)) * 100;\r\n const height = heights[props.size];\r\n const track: CSSProperties = {\r\n position: 'relative',\r\n width: '100%',\r\n height: `${height}px`,\r\n backgroundColor: t.colors.intent.neutral.subtle,\r\n borderRadius: '9999px',\r\n overflow: 'hidden',\r\n };\r\n const fill: CSSProperties = {\r\n position: 'absolute',\r\n inset: '0',\r\n width: `${pct}%`,\r\n backgroundColor: intent.solid,\r\n borderRadius: '9999px',\r\n transition: indeterminate ? undefined : `width ${t.durations.normal} ${t.easings.standard}`,\r\n animation: indeterminate ? 'elvora-progress-indeterminate 1.5s ease-in-out infinite' : undefined,\r\n };\r\n return h(\r\n 'div',\r\n {\r\n role: 'progressbar',\r\n 'aria-valuemin': props.min,\r\n 'aria-valuemax': props.max,\r\n 'aria-valuenow': indeterminate ? undefined : clamped,\r\n 'aria-label': props.label,\r\n style: track,\r\n },\r\n [\r\n h('div', { style: fill }),\r\n h(\r\n 'style',\r\n `@keyframes elvora-progress-indeterminate { 0% { transform: translateX(-100%); } 100% { transform: translateX(333%); } }`,\r\n ),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type PropType, type CSSProperties } from 'vue';\r\nimport type { Placement } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\nconst placementOffsets: Record<Placement, CSSProperties> = {\r\n top: { bottom: '100%', left: '50%', transform: 'translateX(-50%)', marginBottom: '8px' },\r\n 'top-start': { bottom: '100%', left: '0', marginBottom: '8px' },\r\n 'top-end': { bottom: '100%', right: '0', marginBottom: '8px' },\r\n bottom: { top: '100%', left: '50%', transform: 'translateX(-50%)', marginTop: '8px' },\r\n 'bottom-start': { top: '100%', left: '0', marginTop: '8px' },\r\n 'bottom-end': { top: '100%', right: '0', marginTop: '8px' },\r\n left: { right: '100%', top: '50%', transform: 'translateY(-50%)', marginRight: '8px' },\r\n 'left-start': { right: '100%', top: '0', marginRight: '8px' },\r\n 'left-end': { right: '100%', bottom: '0', marginRight: '8px' },\r\n right: { left: '100%', top: '50%', transform: 'translateY(-50%)', marginLeft: '8px' },\r\n 'right-start': { left: '100%', top: '0', marginLeft: '8px' },\r\n 'right-end': { left: '100%', bottom: '0', marginLeft: '8px' },\r\n};\r\n\r\n/**\r\n * Tooltip. Wrap a single focusable element in the default slot. Shows `label`\r\n * on hover/focus.\r\n */\r\nexport const ElvoraTooltip = defineComponent({\r\n name: 'ElvoraTooltip',\r\n props: {\r\n label: { type: String, required: true },\r\n placement: { type: String as PropType<Placement>, default: 'top' },\r\n openDelay: { type: Number, default: 200 },\r\n closeDelay: { type: Number, default: 80 },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n const open = ref(false);\r\n let timer: ReturnType<typeof setTimeout> | null = null;\r\n const show = () => {\r\n if (timer) clearTimeout(timer);\r\n timer = setTimeout(() => (open.value = true), props.openDelay);\r\n };\r\n const hide = () => {\r\n if (timer) clearTimeout(timer);\r\n timer = setTimeout(() => (open.value = false), props.closeDelay);\r\n };\r\n return () => {\r\n const t = theme.value;\r\n return h(\r\n 'span',\r\n {\r\n style: { position: 'relative', display: 'inline-flex' },\r\n onMouseenter: show,\r\n onMouseleave: hide,\r\n onFocusin: show,\r\n onFocusout: hide,\r\n },\r\n [\r\n slots.default?.(),\r\n open.value\r\n ? h(\r\n 'span',\r\n {\r\n role: 'tooltip',\r\n style: {\r\n position: 'absolute',\r\n zIndex: String(t.tokens.zIndex.tooltip),\r\n backgroundColor: t.colors.fg,\r\n color: t.colors.background,\r\n padding: '6px 10px',\r\n borderRadius: String(t.radii.sm),\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n whiteSpace: 'nowrap',\r\n boxShadow: t.shadows.md,\r\n pointerEvents: 'none',\r\n ...placementOffsets[props.placement],\r\n } as CSSProperties,\r\n },\r\n props.label,\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties } from 'vue';\r\n\r\n/** Box — universal layout primitive. Accepts shorthand style props. */\r\nexport const ElvoraBox = defineComponent({\r\n name: 'ElvoraBox',\r\n props: {\r\n as: { type: String, default: 'div' },\r\n p: [Number, String], px: [Number, String], py: [Number, String],\r\n pt: [Number, String], pr: [Number, String], pb: [Number, String], pl: [Number, String],\r\n m: [Number, String], mx: [Number, String], my: [Number, String],\r\n mt: [Number, String], mr: [Number, String], mb: [Number, String], ml: [Number, String],\r\n w: [Number, String], h: [Number, String],\r\n minW: [Number, String], minH: [Number, String], maxW: [Number, String], maxH: [Number, String],\r\n bg: String, color: String, rounded: [Number, String], shadow: String,\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const s: CSSProperties = {};\r\n const v = (val: number | string | undefined) => val;\r\n if (props.p !== undefined) s.padding = v(props.p) as CSSProperties['padding'];\r\n if (props.px !== undefined) { s.paddingLeft = v(props.px) as CSSProperties['paddingLeft']; s.paddingRight = v(props.px) as CSSProperties['paddingRight']; }\r\n if (props.py !== undefined) { s.paddingTop = v(props.py) as CSSProperties['paddingTop']; s.paddingBottom = v(props.py) as CSSProperties['paddingBottom']; }\r\n if (props.pt !== undefined) s.paddingTop = v(props.pt) as CSSProperties['paddingTop'];\r\n if (props.pr !== undefined) s.paddingRight = v(props.pr) as CSSProperties['paddingRight'];\r\n if (props.pb !== undefined) s.paddingBottom = v(props.pb) as CSSProperties['paddingBottom'];\r\n if (props.pl !== undefined) s.paddingLeft = v(props.pl) as CSSProperties['paddingLeft'];\r\n if (props.m !== undefined) s.margin = v(props.m) as CSSProperties['margin'];\r\n if (props.mx !== undefined) { s.marginLeft = v(props.mx) as CSSProperties['marginLeft']; s.marginRight = v(props.mx) as CSSProperties['marginRight']; }\r\n if (props.my !== undefined) { s.marginTop = v(props.my) as CSSProperties['marginTop']; s.marginBottom = v(props.my) as CSSProperties['marginBottom']; }\r\n if (props.mt !== undefined) s.marginTop = v(props.mt) as CSSProperties['marginTop'];\r\n if (props.mr !== undefined) s.marginRight = v(props.mr) as CSSProperties['marginRight'];\r\n if (props.mb !== undefined) s.marginBottom = v(props.mb) as CSSProperties['marginBottom'];\r\n if (props.ml !== undefined) s.marginLeft = v(props.ml) as CSSProperties['marginLeft'];\r\n if (props.w !== undefined) s.width = v(props.w) as CSSProperties['width'];\r\n if (props.h !== undefined) s.height = v(props.h) as CSSProperties['height'];\r\n if (props.minW !== undefined) s.minWidth = v(props.minW) as CSSProperties['minWidth'];\r\n if (props.minH !== undefined) s.minHeight = v(props.minH) as CSSProperties['minHeight'];\r\n if (props.maxW !== undefined) s.maxWidth = v(props.maxW) as CSSProperties['maxWidth'];\r\n if (props.maxH !== undefined) s.maxHeight = v(props.maxH) as CSSProperties['maxHeight'];\r\n if (props.bg !== undefined) s.background = props.bg;\r\n if (props.color !== undefined) s.color = props.color;\r\n if (props.rounded !== undefined) s.borderRadius = v(props.rounded) as CSSProperties['borderRadius'];\r\n if (props.shadow !== undefined) s.boxShadow = props.shadow;\r\n return h(props.as, { style: s }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\n\r\ntype Direction = 'row' | 'column' | 'row-reverse' | 'column-reverse';\r\n\r\n/** Stack — flex container. */\r\nexport const ElvoraStack = defineComponent({\r\n name: 'ElvoraStack',\r\n props: {\r\n direction: { type: String as PropType<Direction>, default: 'column' },\r\n gap: { type: [Number, String], default: 8 },\r\n align: String,\r\n justify: String,\r\n wrap: { type: Boolean, default: false },\r\n inline: { type: Boolean, default: false },\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const style: CSSProperties = {\r\n display: props.inline ? 'inline-flex' : 'flex',\r\n flexDirection: props.direction,\r\n gap: typeof props.gap === 'number' ? `${props.gap}px` : props.gap,\r\n alignItems: props.align as CSSProperties['alignItems'],\r\n justifyContent: props.justify as CSSProperties['justifyContent'],\r\n flexWrap: props.wrap ? 'wrap' : undefined,\r\n };\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n\r\nexport const ElvoraHStack = defineComponent({\r\n name: 'ElvoraHStack',\r\n props: {\r\n gap: { type: [Number, String], default: 8 },\r\n align: { type: String, default: 'center' },\r\n justify: String,\r\n },\r\n setup(props, { slots }) {\r\n return () =>\r\n h(\r\n ElvoraStack,\r\n { direction: 'row', gap: props.gap, align: props.align, justify: props.justify },\r\n { default: () => slots.default?.() },\r\n );\r\n },\r\n});\r\n\r\nexport const ElvoraVStack = defineComponent({\r\n name: 'ElvoraVStack',\r\n props: {\r\n gap: { type: [Number, String], default: 8 },\r\n align: String,\r\n justify: String,\r\n },\r\n setup(props, { slots }) {\r\n return () =>\r\n h(\r\n ElvoraStack,\r\n { direction: 'column', gap: props.gap, align: props.align, justify: props.justify },\r\n { default: () => slots.default?.() },\r\n );\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties } from 'vue';\r\n\r\n/** Grid — CSS Grid container. */\r\nexport const ElvoraGrid = defineComponent({\r\n name: 'ElvoraGrid',\r\n props: {\r\n columns: { type: [Number, String], default: 12 },\r\n rows: { type: [Number, String] },\r\n gap: { type: [Number, String], default: 8 },\r\n autoFlow: String,\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const cols = typeof props.columns === 'number' ? `repeat(${props.columns}, minmax(0, 1fr))` : props.columns;\r\n const rows = props.rows\r\n ? typeof props.rows === 'number'\r\n ? `repeat(${props.rows}, minmax(0, 1fr))`\r\n : props.rows\r\n : undefined;\r\n const style: CSSProperties = {\r\n display: 'grid',\r\n gridTemplateColumns: cols,\r\n gridTemplateRows: rows,\r\n gap: typeof props.gap === 'number' ? `${props.gap}px` : props.gap,\r\n gridAutoFlow: props.autoFlow as CSSProperties['gridAutoFlow'],\r\n };\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n\r\n/** GridItem — child of `<ElvoraGrid>` with span controls. */\r\nexport const ElvoraGridItem = defineComponent({\r\n name: 'ElvoraGridItem',\r\n props: {\r\n colSpan: Number,\r\n rowSpan: Number,\r\n colStart: Number,\r\n colEnd: Number,\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const style: CSSProperties = {};\r\n if (props.colSpan !== undefined) style.gridColumn = `span ${props.colSpan} / span ${props.colSpan}`;\r\n if (props.rowSpan !== undefined) style.gridRow = `span ${props.rowSpan} / span ${props.rowSpan}`;\r\n if (props.colStart !== undefined) style.gridColumnStart = props.colStart;\r\n if (props.colEnd !== undefined) style.gridColumnEnd = props.colEnd;\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\n\r\ntype Size = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\r\n\r\nconst sizeMap: Record<Size, string> = {\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n '2xl': '1536px',\r\n full: '100%',\r\n};\r\n\r\n/** Container — centered, max-width container. */\r\nexport const ElvoraContainer = defineComponent({\r\n name: 'ElvoraContainer',\r\n props: {\r\n size: { type: String as PropType<Size>, default: 'lg' },\r\n padding: { type: [Number, String], default: 16 },\r\n centerContent: { type: Boolean, default: false },\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const pad = typeof props.padding === 'number' ? `${props.padding}px` : props.padding;\r\n const style: CSSProperties = {\r\n width: '100%',\r\n maxWidth: sizeMap[props.size],\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n paddingLeft: pad,\r\n paddingRight: pad,\r\n };\r\n if (props.centerContent) {\r\n style.display = 'flex';\r\n style.flexDirection = 'column';\r\n style.alignItems = 'center';\r\n }\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\ntype Variant = 'outline' | 'elevated' | 'filled';\r\n\r\n/** Card — content container with elevation, padding, rounded corners. */\r\nexport const ElvoraCard = defineComponent({\r\n name: 'ElvoraCard',\r\n props: {\r\n variant: { type: String as PropType<Variant>, default: 'outline' },\r\n padding: { type: [Number, String], default: 16 },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const pad = typeof props.padding === 'number' ? `${props.padding}px` : props.padding;\r\n const style: CSSProperties = {\r\n backgroundColor: props.variant === 'filled' ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n border: props.variant === 'outline' ? `1px solid ${t.colors.border}` : 'none',\r\n boxShadow: props.variant === 'elevated' ? t.shadows.md : undefined,\r\n borderRadius: `${t.radii.lg}px`,\r\n padding: pad,\r\n };\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n\r\nexport const ElvoraCardHeader = defineComponent({\r\n name: 'ElvoraCardHeader',\r\n setup(_p, { slots }) {\r\n const theme = useTheme();\r\n return () =>\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n paddingBottom: '12px',\r\n borderBottom: `1px solid ${theme.value.colors.border}`,\r\n marginBottom: '12px',\r\n } as CSSProperties,\r\n },\r\n slots.default?.(),\r\n );\r\n },\r\n});\r\n\r\nexport const ElvoraCardBody = defineComponent({\r\n name: 'ElvoraCardBody',\r\n setup(_p, { slots }) {\r\n return () => h('div', slots.default?.());\r\n },\r\n});\r\n\r\nexport const ElvoraCardFooter = defineComponent({\r\n name: 'ElvoraCardFooter',\r\n setup(_p, { slots }) {\r\n const theme = useTheme();\r\n return () =>\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n paddingTop: '12px',\r\n borderTop: `1px solid ${theme.value.colors.border}`,\r\n marginTop: '12px',\r\n } as CSSProperties,\r\n },\r\n slots.default?.(),\r\n );\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraStatus, ElvoraTone } from '@elvora/core';\r\nimport type { IconName } from '@elvora/icons';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\nimport { ElvoraIconButton } from './IconButton';\r\n\r\nconst statusIntent: Record<ElvoraStatus, 'neutral' | 'info' | 'success' | 'warning' | 'danger'> = {\r\n neutral: 'neutral',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'danger',\r\n};\r\n\r\nconst defaultIcon: Record<ElvoraStatus, IconName> = {\r\n neutral: 'info',\r\n info: 'info',\r\n success: 'checkCircle',\r\n warning: 'alertCircle',\r\n error: 'x',\r\n};\r\n\r\n/** Alert — banner-style feedback message. */\r\nexport const ElvoraAlert = defineComponent({\r\n name: 'ElvoraAlert',\r\n props: {\r\n status: { type: String as PropType<ElvoraStatus>, default: 'info' },\r\n tone: { type: String as PropType<ElvoraTone>, default: 'subtle' },\r\n title: String,\r\n description: String,\r\n closeable: { type: Boolean, default: false },\r\n closeLabel: { type: String, default: 'Dismiss' },\r\n },\r\n emits: ['close'],\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent[statusIntent[props.status]];\r\n let bg = intent.subtle;\r\n let fg = intent.fg;\r\n let border = 'transparent';\r\n if (props.tone === 'solid') {\r\n bg = intent.solid;\r\n fg = intent.solidFg;\r\n } else if (props.tone === 'outline') {\r\n bg = 'transparent';\r\n border = intent.border;\r\n }\r\n const role = props.status === 'error' || props.status === 'warning' ? 'alert' : 'status';\r\n const style: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '12px',\r\n padding: '12px 16px',\r\n borderRadius: `${t.radii.md}px`,\r\n backgroundColor: bg,\r\n color: fg,\r\n borderWidth: props.tone === 'outline' ? '1px' : '0',\r\n borderStyle: 'solid',\r\n borderColor: border,\r\n };\r\n return h('div', { role, style }, [\r\n h(\r\n 'span',\r\n { 'aria-hidden': 'true', style: { display: 'inline-flex', marginTop: '2px' } as CSSProperties },\r\n [h(ElvoraIcon, { name: defaultIcon[props.status], size: 18, color: 'currentColor' })],\r\n ),\r\n h('div', { style: { flex: 1, minWidth: 0 } as CSSProperties }, [\r\n props.title\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n fontWeight: String(t.tokens.typography.fontWeights.semibold),\r\n fontSize: '14px',\r\n marginBottom: props.description ? '2px' : '0',\r\n } as CSSProperties,\r\n },\r\n props.title,\r\n )\r\n : null,\r\n props.description ? h('div', { style: { fontSize: '13px', lineHeight: 1.45 } }, props.description) : null,\r\n slots.default?.(),\r\n ]),\r\n props.closeable\r\n ? h(\r\n ElvoraIconButton,\r\n {\r\n ariaLabel: props.closeLabel,\r\n size: 'xs',\r\n variant: 'ghost',\r\n onPress: () => emit('close'),\r\n },\r\n () => h(ElvoraIcon, { name: 'x', size: 14, color: 'currentColor' }),\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nlet styleInjected = false;\r\nfunction ensurePulseStyle() {\r\n if (styleInjected || typeof document === 'undefined') return;\r\n const style = document.createElement('style');\r\n style.textContent = '@keyframes elvora-skeleton-pulse{0%,100%{opacity:0.6}50%{opacity:1}}';\r\n document.head.appendChild(style);\r\n styleInjected = true;\r\n}\r\n\r\n/** Skeleton — placeholder loading block with optional pulse animation. */\r\nexport const ElvoraSkeleton = defineComponent({\r\n name: 'ElvoraSkeleton',\r\n props: {\r\n width: { type: [Number, String], default: '100%' },\r\n height: { type: [Number, String], default: 16 },\r\n rounded: { type: [Number, String] },\r\n animated: { type: Boolean, default: true },\r\n },\r\n setup(props) {\r\n const mounted = ref(false);\r\n onMounted(() => {\r\n ensurePulseStyle();\r\n mounted.value = true;\r\n });\r\n onBeforeUnmount(() => {\r\n mounted.value = false;\r\n });\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const w = typeof props.width === 'number' ? `${props.width}px` : props.width;\r\n const h2 = typeof props.height === 'number' ? `${props.height}px` : props.height;\r\n const r = props.rounded ?? `${t.radii.sm}px`;\r\n const style: CSSProperties = {\r\n width: w,\r\n height: h2,\r\n borderRadius: typeof r === 'number' ? `${r}px` : r,\r\n backgroundColor: t.colors.intent.neutral.subtle,\r\n animation: props.animated ? 'elvora-skeleton-pulse 1.4s ease-in-out infinite' : undefined,\r\n };\r\n return h('div', { role: 'status', 'aria-label': 'Loading', style });\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\n/** Empty — placeholder for no-data states. */\r\nexport const ElvoraEmpty = defineComponent({\r\n name: 'ElvoraEmpty',\r\n props: {\r\n title: { type: String, default: 'No data' },\r\n description: String,\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const wrapper: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '40px 16px',\r\n textAlign: 'center',\r\n };\r\n return h('div', { role: 'status', style: wrapper }, [\r\n slots.icon\r\n ? slots.icon()\r\n : h(ElvoraIcon, { name: 'search', size: 48, color: t.colors.fgSubtle }),\r\n props.title\r\n ? h('div', { style: { color: t.colors.fg, fontWeight: '600', fontSize: '16px' } }, props.title)\r\n : null,\r\n props.description\r\n ? h('div', { style: { color: t.colors.fgMuted, fontSize: '14px' } }, props.description)\r\n : null,\r\n slots.default?.(),\r\n slots.action ? slots.action() : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType, type CSSProperties } from 'vue';\r\nimport type { ElvoraStatus } from '@elvora/core';\r\nimport type { IconName } from '@elvora/icons';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nexport type ElvoraResultStatus = ElvoraStatus | '404' | '500' | '403';\r\n\r\nconst statusIntent: Record<ElvoraResultStatus, 'neutral' | 'info' | 'success' | 'warning' | 'danger'> = {\r\n neutral: 'neutral',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'danger',\r\n '404': 'neutral',\r\n '500': 'danger',\r\n '403': 'warning',\r\n};\r\n\r\nconst statusIcon: Record<ElvoraResultStatus, IconName> = {\r\n neutral: 'info',\r\n info: 'info',\r\n success: 'checkCircle',\r\n warning: 'alertCircle',\r\n error: 'x',\r\n '404': 'info',\r\n '500': 'alertCircle',\r\n '403': 'x',\r\n};\r\n\r\n/** Result — page-level status component. */\r\nexport const ElvoraResult = defineComponent({\r\n name: 'ElvoraResult',\r\n props: {\r\n status: { type: String as PropType<ElvoraResultStatus>, default: 'info' },\r\n title: String,\r\n subtitle: String,\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent[statusIntent[props.status]];\r\n const wrapper: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '40px 16px',\r\n textAlign: 'center',\r\n };\r\n return h('div', { role: 'status', style: wrapper }, [\r\n slots.icon\r\n ? slots.icon()\r\n : h(ElvoraIcon, { name: statusIcon[props.status], size: 56, color: intent.solid }),\r\n props.title\r\n ? h('div', { style: { color: t.colors.fg, fontWeight: '700', fontSize: '20px' } }, props.title)\r\n : null,\r\n props.subtitle\r\n ? h('div', { style: { color: t.colors.fgMuted, fontSize: '14px' } }, props.subtitle)\r\n : null,\r\n slots.default?.(),\r\n slots.extra\r\n ? h('div', { style: { display: 'flex', gap: '8px', marginTop: '8px' } as CSSProperties }, slots.extra())\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, onUnmounted, watch, Teleport, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\nimport { ElvoraIconButton } from './IconButton';\r\n\r\ntype Size = 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\n\r\nconst sizeMap: Record<Size, string> = {\r\n sm: '380px',\r\n md: '520px',\r\n lg: '720px',\r\n xl: '960px',\r\n full: '95vw',\r\n};\r\n\r\n/** Modal — centered overlay dialog. Teleports to <body>. */\r\nexport const ElvoraModal = defineComponent({\r\n name: 'ElvoraModal',\r\n props: {\r\n isOpen: { type: Boolean, required: true },\r\n size: { type: String as PropType<Size>, default: 'md' },\r\n title: String,\r\n showCloseButton: { type: Boolean, default: true },\r\n closeOnEscape: { type: Boolean, default: true },\r\n closeOnOverlayClick: { type: Boolean, default: true },\r\n closeLabel: { type: String, default: 'Close' },\r\n },\r\n emits: ['close'],\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && props.isOpen && props.closeOnEscape) emit('close');\r\n };\r\n watch(\r\n () => props.isOpen,\r\n (open) => {\r\n if (typeof document === 'undefined') return;\r\n if (open) {\r\n document.body.style.overflow = 'hidden';\r\n window.addEventListener('keydown', onKey);\r\n } else {\r\n document.body.style.overflow = '';\r\n window.removeEventListener('keydown', onKey);\r\n }\r\n },\r\n { immediate: true },\r\n );\r\n onUnmounted(() => {\r\n if (typeof window !== 'undefined') window.removeEventListener('keydown', onKey);\r\n if (typeof document !== 'undefined') document.body.style.overflow = '';\r\n });\r\n return () => {\r\n if (!props.isOpen) return null;\r\n const t = theme.value;\r\n const overlay: CSSProperties = {\r\n position: 'fixed',\r\n inset: '0',\r\n backgroundColor: 'rgba(0,0,0,0.5)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '16px',\r\n zIndex: String(t.tokens.zIndex.modal),\r\n };\r\n const dialog: CSSProperties = {\r\n backgroundColor: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n borderRadius: `${t.radii.lg}px`,\r\n boxShadow: t.tokens.shadows.xl,\r\n width: '100%',\r\n maxWidth: sizeMap[props.size],\r\n maxHeight: '90vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n };\r\n return h(\r\n Teleport,\r\n { to: 'body' },\r\n h(\r\n 'div',\r\n { style: overlay, onClick: () => props.closeOnOverlayClick && emit('close') },\r\n [\r\n h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n 'aria-label': props.title || undefined,\r\n style: dialog,\r\n tabindex: -1,\r\n onClick: (e: MouseEvent) => e.stopPropagation(),\r\n },\r\n [\r\n props.title || props.showCloseButton\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '14px 16px',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n [\r\n h('div', { style: { flex: 1, fontWeight: '600', fontSize: '16px' } }, props.title),\r\n props.showCloseButton\r\n ? h(\r\n ElvoraIconButton,\r\n {\r\n ariaLabel: props.closeLabel,\r\n variant: 'ghost',\r\n size: 'sm',\r\n onPress: () => emit('close'),\r\n },\r\n () => h(ElvoraIcon, { name: 'x', size: 16, color: 'currentColor' }),\r\n )\r\n : null,\r\n ],\r\n )\r\n : null,\r\n h('div', { style: { padding: '16px', overflow: 'auto', flex: 1 } as CSSProperties }, slots.default?.()),\r\n slots.footer\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n gap: '8px',\r\n justifyContent: 'flex-end',\r\n padding: '12px 16px',\r\n borderTop: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n slots.footer(),\r\n )\r\n : null,\r\n ],\r\n ),\r\n ],\r\n ),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, onUnmounted, watch, Teleport, type PropType, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\nimport { ElvoraIconButton } from './IconButton';\r\n\r\ntype Placement = 'left' | 'right' | 'top' | 'bottom';\r\n\r\n/** Drawer — edge-anchored overlay panel. */\r\nexport const ElvoraDrawer = defineComponent({\r\n name: 'ElvoraDrawer',\r\n props: {\r\n isOpen: { type: Boolean, required: true },\r\n placement: { type: String as PropType<Placement>, default: 'right' },\r\n size: { type: [Number, String], default: 360 },\r\n title: String,\r\n showCloseButton: { type: Boolean, default: true },\r\n closeOnEscape: { type: Boolean, default: true },\r\n closeOnOverlayClick: { type: Boolean, default: true },\r\n closeLabel: { type: String, default: 'Close' },\r\n },\r\n emits: ['close'],\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && props.isOpen && props.closeOnEscape) emit('close');\r\n };\r\n watch(\r\n () => props.isOpen,\r\n (open) => {\r\n if (typeof document === 'undefined') return;\r\n if (open) {\r\n document.body.style.overflow = 'hidden';\r\n window.addEventListener('keydown', onKey);\r\n } else {\r\n document.body.style.overflow = '';\r\n window.removeEventListener('keydown', onKey);\r\n }\r\n },\r\n { immediate: true },\r\n );\r\n onUnmounted(() => {\r\n if (typeof window !== 'undefined') window.removeEventListener('keydown', onKey);\r\n if (typeof document !== 'undefined') document.body.style.overflow = '';\r\n });\r\n return () => {\r\n if (!props.isOpen) return null;\r\n const t = theme.value;\r\n const horizontal = props.placement === 'left' || props.placement === 'right';\r\n const size = typeof props.size === 'number' ? `${props.size}px` : props.size;\r\n const overlay: CSSProperties = {\r\n position: 'fixed',\r\n inset: '0',\r\n backgroundColor: 'rgba(0,0,0,0.45)',\r\n display: 'flex',\r\n alignItems:\r\n props.placement === 'bottom'\r\n ? 'flex-end'\r\n : props.placement === 'top'\r\n ? 'flex-start'\r\n : 'stretch',\r\n justifyContent:\r\n props.placement === 'right'\r\n ? 'flex-end'\r\n : props.placement === 'left'\r\n ? 'flex-start'\r\n : 'stretch',\r\n zIndex: String(t.tokens.zIndex.modal),\r\n };\r\n const panel: CSSProperties = {\r\n backgroundColor: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n boxShadow: t.tokens.shadows.xl,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: horizontal ? size : '100%',\r\n height: horizontal ? '100%' : size,\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n overflow: 'hidden',\r\n };\r\n return h(\r\n Teleport,\r\n { to: 'body' },\r\n h(\r\n 'div',\r\n { style: overlay, onClick: () => props.closeOnOverlayClick && emit('close') },\r\n [\r\n h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n 'aria-label': props.title || undefined,\r\n style: panel,\r\n tabindex: -1,\r\n onClick: (e: MouseEvent) => e.stopPropagation(),\r\n },\r\n [\r\n props.title || props.showCloseButton\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '14px 16px',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n [\r\n h('div', { style: { flex: 1, fontWeight: '600', fontSize: '16px' } }, props.title),\r\n props.showCloseButton\r\n ? h(\r\n ElvoraIconButton,\r\n {\r\n ariaLabel: props.closeLabel,\r\n variant: 'ghost',\r\n size: 'sm',\r\n onPress: () => emit('close'),\r\n },\r\n () => h(ElvoraIcon, { name: 'x', size: 16, color: 'currentColor' }),\r\n )\r\n : null,\r\n ],\r\n )\r\n : null,\r\n h(\r\n 'div',\r\n { style: { padding: '16px', overflow: 'auto', flex: 1 } as CSSProperties },\r\n slots.default?.(),\r\n ),\r\n slots.footer\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n gap: '8px',\r\n justifyContent: 'flex-end',\r\n padding: '12px 16px',\r\n borderTop: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n slots.footer(),\r\n )\r\n : null,\r\n ],\r\n ),\r\n ],\r\n ),\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n watch,\r\n type PropType,\r\n type CSSProperties,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\ntype Placement = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n/** Popover — content overlay anchored to a trigger element. */\r\nexport const ElvoraPopover = defineComponent({\r\n name: 'ElvoraPopover',\r\n props: {\r\n isOpen: { type: Boolean, default: undefined },\r\n placement: { type: String as PropType<Placement>, default: 'bottom' },\r\n },\r\n emits: ['update:isOpen'],\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const internalOpen = ref(false);\r\n const open = () => (props.isOpen !== undefined ? props.isOpen : internalOpen.value);\r\n const setOpen = (next: boolean) => {\r\n if (props.isOpen === undefined) internalOpen.value = next;\r\n emit('update:isOpen', next);\r\n };\r\n const rootEl = ref<HTMLDivElement | null>(null);\r\n const onDocClick = (e: MouseEvent) => {\r\n if (!open()) return;\r\n if (rootEl.value && !rootEl.value.contains(e.target as Node)) setOpen(false);\r\n };\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && open()) setOpen(false);\r\n };\r\n onMounted(() => {\r\n document.addEventListener('mousedown', onDocClick);\r\n document.addEventListener('keydown', onKey);\r\n });\r\n onBeforeUnmount(() => {\r\n document.removeEventListener('mousedown', onDocClick);\r\n document.removeEventListener('keydown', onKey);\r\n });\r\n watch(\r\n () => props.isOpen,\r\n (v) => {\r\n if (v !== undefined) internalOpen.value = v;\r\n },\r\n );\r\n return () => {\r\n const t = theme.value;\r\n const panel: CSSProperties = {\r\n position: 'absolute',\r\n backgroundColor: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n padding: '8px 12px',\r\n minWidth: '160px',\r\n maxWidth: '320px',\r\n zIndex: String(t.tokens.zIndex.popover),\r\n };\r\n if (props.placement === 'bottom') {\r\n panel.top = '100%';\r\n panel.left = 0;\r\n panel.marginTop = '6px';\r\n } else if (props.placement === 'top') {\r\n panel.bottom = '100%';\r\n panel.left = 0;\r\n panel.marginBottom = '6px';\r\n } else if (props.placement === 'right') {\r\n panel.left = '100%';\r\n panel.top = 0;\r\n panel.marginLeft = '6px';\r\n } else {\r\n panel.right = '100%';\r\n panel.top = 0;\r\n panel.marginRight = '6px';\r\n }\r\n return h(\r\n 'div',\r\n {\r\n ref: rootEl,\r\n style: { position: 'relative', display: 'inline-block' } as CSSProperties,\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n setOpen(!open());\r\n },\r\n },\r\n [slots.default?.(), open() ? h('div', { role: 'dialog', style: panel }, slots.content?.()) : null],\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n inject,\r\n onBeforeUnmount,\r\n provide,\r\n reactive,\r\n Teleport,\r\n type CSSProperties,\r\n type InjectionKey,\r\n type PropType,\r\n} from 'vue';\r\nimport { generateId, type ElvoraStatus } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraAlert } from './Alert';\r\n\r\nexport interface ElvoraToastOptions {\r\n id?: string;\r\n status?: ElvoraStatus;\r\n title?: string;\r\n description?: string;\r\n duration?: number | null;\r\n}\r\n\r\ninterface ToastInstance {\r\n id: string;\r\n status: ElvoraStatus;\r\n title?: string;\r\n description?: string;\r\n duration: number | null;\r\n}\r\n\r\nexport interface ElvoraToastApi {\r\n show: (opts: ElvoraToastOptions) => string;\r\n dismiss: (id: string) => void;\r\n dismissAll: () => void;\r\n}\r\n\r\nconst TOAST_KEY: InjectionKey<ElvoraToastApi> = Symbol('ElvoraToastApi');\r\n\r\ntype Placement = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\r\n\r\n/**\r\n * ToastProvider — wrap your application root with this to enable toasts.\r\n * Children call `useToast()` to imperatively trigger them.\r\n */\r\nexport const ElvoraToastProvider = defineComponent({\r\n name: 'ElvoraToastProvider',\r\n props: {\r\n defaultDuration: { type: Number, default: 4000 },\r\n placement: { type: String as PropType<Placement>, default: 'top-right' },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n const toasts = reactive<ToastInstance[]>([]);\r\n const timers: Record<string, ReturnType<typeof setTimeout>> = {};\r\n\r\n const dismiss = (id: string) => {\r\n const idx = toasts.findIndex((t) => t.id === id);\r\n if (idx >= 0) toasts.splice(idx, 1);\r\n const timer = timers[id];\r\n if (timer) {\r\n clearTimeout(timer);\r\n delete timers[id];\r\n }\r\n };\r\n\r\n const show: ElvoraToastApi['show'] = (opts) => {\r\n const id = opts.id ?? generateId('toast');\r\n const inst: ToastInstance = {\r\n id,\r\n status: opts.status ?? 'info',\r\n title: opts.title,\r\n description: opts.description,\r\n duration: opts.duration === undefined ? props.defaultDuration : opts.duration,\r\n };\r\n toasts.push(inst);\r\n if (inst.duration !== null && inst.duration > 0) {\r\n timers[id] = setTimeout(() => dismiss(id), inst.duration);\r\n }\r\n return id;\r\n };\r\n\r\n const dismissAll = () => {\r\n toasts.splice(0, toasts.length);\r\n for (const t of Object.values(timers)) clearTimeout(t);\r\n for (const k of Object.keys(timers)) delete timers[k];\r\n };\r\n\r\n provide(TOAST_KEY, { show, dismiss, dismissAll });\r\n\r\n onBeforeUnmount(() => {\r\n for (const t of Object.values(timers)) clearTimeout(t);\r\n });\r\n\r\n const containerStyle = (): CSSProperties => {\r\n const base: CSSProperties = {\r\n position: 'fixed',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n pointerEvents: 'none',\r\n zIndex: String(theme.value.tokens.zIndex.toast),\r\n };\r\n switch (props.placement) {\r\n case 'top-left':\r\n return { ...base, top: '16px', left: '16px', alignItems: 'flex-start' };\r\n case 'top-center':\r\n return { ...base, top: '16px', left: '50%', transform: 'translateX(-50%)', alignItems: 'center' };\r\n case 'bottom-right':\r\n return { ...base, bottom: '16px', right: '16px', alignItems: 'flex-end' };\r\n case 'bottom-left':\r\n return { ...base, bottom: '16px', left: '16px', alignItems: 'flex-start' };\r\n case 'bottom-center':\r\n return { ...base, bottom: '16px', left: '50%', transform: 'translateX(-50%)', alignItems: 'center' };\r\n default:\r\n return { ...base, top: '16px', right: '16px', alignItems: 'flex-end' };\r\n }\r\n };\r\n\r\n return () => {\r\n const overlay =\r\n toasts.length > 0\r\n ? h(\r\n Teleport,\r\n { to: 'body' },\r\n h(\r\n 'div',\r\n { 'aria-live': 'polite', 'aria-atomic': 'false', style: containerStyle() },\r\n toasts.map((t) =>\r\n h(\r\n 'div',\r\n {\r\n key: t.id,\r\n style: { pointerEvents: 'auto', minWidth: '280px', maxWidth: '420px' } as CSSProperties,\r\n },\r\n [\r\n h(ElvoraAlert, {\r\n status: t.status,\r\n tone: 'solid',\r\n title: t.title,\r\n description: t.description,\r\n closeable: true,\r\n onClose: () => dismiss(t.id),\r\n }),\r\n ],\r\n ),\r\n ),\r\n ),\r\n )\r\n : null;\r\n return [slots.default?.(), overlay];\r\n };\r\n },\r\n});\r\n\r\n/** useToast — must be called from within a ElvoraToastProvider. */\r\nexport function useToast(): ElvoraToastApi {\r\n const ctx = inject(TOAST_KEY, null);\r\n if (!ctx) throw new Error('useToast must be called inside <ElvoraToastProvider>');\r\n return ctx;\r\n}\r\n","import {\r\n defineComponent,\r\n h,\r\n ref,\r\n watchEffect,\r\n type CSSProperties,\r\n type PropType,\r\n type Ref,\r\n type VNode,\r\n} from 'vue';\r\nimport { getNextTabIndex, type Orientation } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTabItem {\r\n value: string;\r\n label: string;\r\n isDisabled?: boolean;\r\n /** Render function for the tab's panel content. */\r\n panel: () => VNode | VNode[] | string | null;\r\n}\r\n\r\ntype Variant = 'underline' | 'pill' | 'solid';\r\n\r\n/** Tabs — WAI-ARIA Tabs pattern with keyboard navigation. */\r\nexport const ElvoraTabs = defineComponent({\r\n name: 'ElvoraTabs',\r\n props: {\r\n tabs: { type: Array as PropType<ElvoraTabItem[]>, required: true },\r\n modelValue: String,\r\n variant: { type: String as PropType<Variant>, default: 'underline' },\r\n orientation: { type: String as PropType<Orientation>, default: 'horizontal' },\r\n activation: { type: String as PropType<'automatic' | 'manual'>, default: 'automatic' },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const baseId = `elvora-tabs-${Math.random().toString(36).slice(2, 8)}`;\r\n const internal = ref(props.modelValue ?? props.tabs.find((t) => !t.isDisabled)?.value ?? '');\r\n watchEffect(() => {\r\n if (props.modelValue !== undefined) internal.value = props.modelValue;\r\n });\r\n const setValue = (v: string) => {\r\n internal.value = v;\r\n emit('update:modelValue', v);\r\n };\r\n const buttonRefs: Ref<Array<HTMLButtonElement | null>> = ref([]);\r\n const onKey = (event: KeyboardEvent, index: number) => {\r\n const next = getNextTabIndex(\r\n event,\r\n index,\r\n props.tabs.map((t) => ({ isDisabled: t.isDisabled })),\r\n { orientation: props.orientation, activation: props.activation },\r\n );\r\n if (next !== index) {\r\n event.preventDefault();\r\n buttonRefs.value[next]?.focus();\r\n if (props.activation === 'automatic') {\r\n const target = props.tabs[next];\r\n if (target && !target.isDisabled) setValue(target.value);\r\n }\r\n } else if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n const target = props.tabs[index];\r\n if (target && !target.isDisabled) setValue(target.value);\r\n }\r\n };\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent.primary;\r\n const horizontal = props.orientation === 'horizontal';\r\n const current = internal.value;\r\n const listStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: horizontal ? 'row' : 'column',\r\n gap: '4px',\r\n borderBottom:\r\n props.variant === 'underline' && horizontal ? `1px solid ${t.colors.border}` : undefined,\r\n };\r\n const tabStyle = (active: boolean, disabled?: boolean): CSSProperties => {\r\n const base: CSSProperties = {\r\n appearance: 'none',\r\n background: 'transparent',\r\n border: 'none',\r\n padding: props.variant === 'pill' ? '8px 14px' : '10px 16px',\r\n fontSize: '14px',\r\n fontWeight: String(t.tokens.typography.fontWeights.medium),\r\n color: disabled ? t.colors.fgSubtle : active ? t.colors.fg : t.colors.fgMuted,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n outline: 'none',\r\n };\r\n if (props.variant === 'pill') {\r\n base.borderRadius = `${t.radii.full}px`;\r\n base.background = active ? intent.subtle : 'transparent';\r\n base.color = active ? intent.fg : base.color;\r\n } else if (props.variant === 'solid') {\r\n base.borderRadius = `${t.radii.md}px`;\r\n base.background = active ? intent.solid : 'transparent';\r\n base.color = active ? intent.solidFg : base.color;\r\n } else if (horizontal) {\r\n base.borderBottom = `2px solid ${active ? intent.solid : 'transparent'}`;\r\n } else {\r\n base.borderRight = `2px solid ${active ? intent.solid : 'transparent'}`;\r\n }\r\n return base;\r\n };\r\n return h('div', {}, [\r\n h(\r\n 'div',\r\n { role: 'tablist', 'aria-orientation': props.orientation, style: listStyle },\r\n props.tabs.map((tab, i) =>\r\n h(\r\n 'button',\r\n {\r\n key: tab.value,\r\n type: 'button',\r\n role: 'tab',\r\n id: `${baseId}-trigger-${tab.value}`,\r\n 'aria-controls': `${baseId}-panel-${tab.value}`,\r\n 'aria-selected': tab.value === current,\r\n 'aria-disabled': tab.isDisabled || undefined,\r\n tabindex: tab.value === current ? 0 : -1,\r\n disabled: tab.isDisabled,\r\n ref: (el: unknown) => {\r\n buttonRefs.value[i] = el as HTMLButtonElement | null;\r\n },\r\n style: tabStyle(tab.value === current, tab.isDisabled),\r\n onClick: () => {\r\n if (!tab.isDisabled) setValue(tab.value);\r\n },\r\n onKeydown: (e: KeyboardEvent) => onKey(e, i),\r\n },\r\n tab.label,\r\n ),\r\n ),\r\n ),\r\n ...props.tabs\r\n .filter((tab) => tab.value === current)\r\n .map((tab) =>\r\n h(\r\n 'div',\r\n {\r\n key: tab.value,\r\n role: 'tabpanel',\r\n id: `${baseId}-panel-${tab.value}`,\r\n 'aria-labelledby': `${baseId}-trigger-${tab.value}`,\r\n tabindex: 0,\r\n style: { padding: '12px 0', outline: 'none' } as CSSProperties,\r\n },\r\n [tab.panel()] as VNode[],\r\n ),\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraMenuItem {\r\n value: string;\r\n label: string;\r\n isDisabled?: boolean;\r\n hasSeparatorBefore?: boolean;\r\n}\r\n\r\ntype Placement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\r\n\r\n/** Menu — dropdown menu. Default slot is the trigger. */\r\nexport const ElvoraMenu = defineComponent({\r\n name: 'ElvoraMenu',\r\n props: {\r\n items: { type: Array as PropType<ElvoraMenuItem[]>, required: true },\r\n placement: { type: String as PropType<Placement>, default: 'bottom-start' },\r\n },\r\n emits: ['select'],\r\n setup(props, { slots, emit }) {\r\n const theme = useTheme();\r\n const open = ref(false);\r\n const rootEl = ref<HTMLDivElement | null>(null);\r\n const onDocClick = (e: MouseEvent) => {\r\n if (!open.value) return;\r\n if (rootEl.value && !rootEl.value.contains(e.target as Node)) open.value = false;\r\n };\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && open.value) open.value = false;\r\n };\r\n onMounted(() => {\r\n document.addEventListener('mousedown', onDocClick);\r\n document.addEventListener('keydown', onKey);\r\n });\r\n onBeforeUnmount(() => {\r\n document.removeEventListener('mousedown', onDocClick);\r\n document.removeEventListener('keydown', onKey);\r\n });\r\n return () => {\r\n const t = theme.value;\r\n const list: CSSProperties = {\r\n position: 'absolute',\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: '4px',\r\n minWidth: '180px',\r\n backgroundColor: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: String(t.tokens.zIndex.dropdown),\r\n };\r\n if (props.placement === 'bottom-end') {\r\n list.top = '100%';\r\n list.right = 0;\r\n list.marginTop = '6px';\r\n } else if (props.placement === 'top-start') {\r\n list.bottom = '100%';\r\n list.left = 0;\r\n list.marginBottom = '6px';\r\n } else if (props.placement === 'top-end') {\r\n list.bottom = '100%';\r\n list.right = 0;\r\n list.marginBottom = '6px';\r\n } else {\r\n list.top = '100%';\r\n list.left = 0;\r\n list.marginTop = '6px';\r\n }\r\n return h(\r\n 'div',\r\n {\r\n ref: rootEl,\r\n style: { position: 'relative', display: 'inline-block' } as CSSProperties,\r\n },\r\n [\r\n h('span', { onClick: () => (open.value = !open.value), style: { display: 'inline-flex' } }, slots.default?.()),\r\n open.value\r\n ? h(\r\n 'ul',\r\n { role: 'menu', style: list, onClick: (e: MouseEvent) => e.stopPropagation() },\r\n props.items.flatMap((item, i) => {\r\n const nodes = [] as VNodeChild[];\r\n if (item.hasSeparatorBefore) {\r\n nodes.push(\r\n h('li', {\r\n role: 'separator',\r\n style: { height: '1px', margin: '4px 0', backgroundColor: t.colors.border } as CSSProperties,\r\n key: `sep-${i}`,\r\n }),\r\n );\r\n }\r\n nodes.push(\r\n h(\r\n 'li',\r\n {\r\n role: 'menuitem',\r\n key: item.value,\r\n tabindex: item.isDisabled ? -1 : 0,\r\n 'aria-disabled': item.isDisabled || undefined,\r\n onClick: () => {\r\n if (item.isDisabled) return;\r\n emit('select', item.value);\r\n open.value = false;\r\n },\r\n onKeydown: (e: KeyboardEvent) => {\r\n if (item.isDisabled) return;\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n emit('select', item.value);\r\n open.value = false;\r\n }\r\n },\r\n style: {\r\n padding: '8px 12px',\r\n fontSize: '14px',\r\n borderRadius: `${t.radii.sm}px`,\r\n color: item.isDisabled ? t.colors.fgSubtle : t.colors.fg,\r\n cursor: item.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none',\r\n } as CSSProperties,\r\n },\r\n item.label,\r\n ),\r\n );\r\n return nodes;\r\n }),\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n\r\ntype VNodeChild = ReturnType<typeof h> | null;\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport { ElvoraMenu, type ElvoraMenuItem } from './Menu';\r\n\r\nexport type ElvoraDropdownItem = ElvoraMenuItem;\r\n\r\n/** Dropdown — convenience alias for `<ElvoraMenu>`. */\r\nexport const ElvoraDropdown = defineComponent({\r\n name: 'ElvoraDropdown',\r\n props: {\r\n items: { type: Array as PropType<ElvoraDropdownItem[]>, required: true },\r\n placement: { type: String as PropType<'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'>, default: 'bottom-start' },\r\n },\r\n emits: ['select'],\r\n setup(props, { slots, emit }) {\r\n return () =>\r\n h(\r\n ElvoraMenu,\r\n {\r\n items: props.items,\r\n placement: props.placement,\r\n onSelect: (v: string) => emit('select', v),\r\n },\r\n { default: () => slots.default?.() },\r\n );\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nexport interface ElvoraBreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n isCurrent?: boolean;\r\n}\r\n\r\n/** Breadcrumb — navigation trail. */\r\nexport const ElvoraBreadcrumb = defineComponent({\r\n name: 'ElvoraBreadcrumb',\r\n props: {\r\n items: { type: Array as PropType<ElvoraBreadcrumbItem[]>, required: true },\r\n },\r\n emits: ['activate'],\r\n setup(props, { emit, slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const sepNode =\r\n slots.separator?.() ?? h(ElvoraIcon, { name: 'chevronRight', size: 14, color: t.colors.fgSubtle });\r\n const listStyle: CSSProperties = {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n gap: '6px',\r\n fontSize: '14px',\r\n };\r\n return h('nav', { 'aria-label': 'Breadcrumb' }, [\r\n h(\r\n 'ol',\r\n { style: listStyle },\r\n props.items.flatMap((item, i) => {\r\n const isLast = i === props.items.length - 1;\r\n const current = item.isCurrent ?? isLast;\r\n const color = current ? t.colors.fg : t.colors.fgMuted;\r\n const content = current\r\n ? h('span', { 'aria-current': 'page', style: { color } }, item.label)\r\n : item.href\r\n ? h(\r\n 'a',\r\n {\r\n href: item.href,\r\n style: { color, textDecoration: 'none' } as CSSProperties,\r\n onClick: () => emit('activate', i),\r\n },\r\n item.label,\r\n )\r\n : h(\r\n 'button',\r\n {\r\n type: 'button',\r\n style: {\r\n background: 'transparent',\r\n border: 0,\r\n padding: 0,\r\n color,\r\n cursor: 'pointer',\r\n font: 'inherit',\r\n } as CSSProperties,\r\n onClick: () => emit('activate', i),\r\n },\r\n item.label,\r\n );\r\n const nodes = [h('li', { key: i }, content)];\r\n if (!isLast) {\r\n nodes.push(\r\n h(\r\n 'li',\r\n {\r\n 'aria-hidden': 'true',\r\n key: `sep-${i}`,\r\n style: { display: 'inline-flex', alignItems: 'center' } as CSSProperties,\r\n },\r\n sepNode,\r\n ),\r\n );\r\n }\r\n return nodes;\r\n }),\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nfunction range(start: number, end: number): number[] {\r\n const out: number[] = [];\r\n for (let i = start; i <= end; i++) out.push(i);\r\n return out;\r\n}\r\n\r\nfunction buildPages(current: number, totalPages: number, siblingCount: number): Array<number | 'gap'> {\r\n const totalNumbers = siblingCount * 2 + 5;\r\n if (totalPages <= totalNumbers) return range(1, totalPages);\r\n const left = Math.max(current - siblingCount, 1);\r\n const right = Math.min(current + siblingCount, totalPages);\r\n const out: Array<number | 'gap'> = [1];\r\n if (left > 2) out.push('gap');\r\n else if (left === 2) out.push(2);\r\n out.push(...range(Math.max(left, left > 2 ? left : 2), Math.min(right, totalPages - 1)));\r\n if (right < totalPages - 1) out.push('gap');\r\n else if (right === totalPages - 1) out.push(totalPages - 1);\r\n if (totalPages > 1) out.push(totalPages);\r\n const seen = new Set<number | 'gap'>();\r\n return out.filter((v) => {\r\n if (v === 'gap') return true;\r\n if (seen.has(v)) return false;\r\n seen.add(v);\r\n return true;\r\n });\r\n}\r\n\r\n/** Pagination — accessible page navigator. */\r\nexport const ElvoraPagination = defineComponent({\r\n name: 'ElvoraPagination',\r\n props: {\r\n total: { type: Number, required: true },\r\n pageSize: { type: Number, default: 10 },\r\n current: { type: Number, default: 1 },\r\n siblingCount: { type: Number, default: 1 },\r\n showFirstLast: { type: Boolean, default: false },\r\n hideOnSinglePage: { type: Boolean, default: false },\r\n },\r\n emits: ['update:current', 'change'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const go = (next: number, totalPages: number) => {\r\n const clamped = Math.min(Math.max(next, 1), totalPages);\r\n if (clamped !== props.current) {\r\n emit('update:current', clamped);\r\n emit('change', clamped);\r\n }\r\n };\r\n return () => {\r\n const t = theme.value;\r\n const totalPages = Math.max(1, Math.ceil(props.total / props.pageSize));\r\n const current = Math.min(Math.max(props.current, 1), totalPages);\r\n if (props.hideOnSinglePage && totalPages <= 1) return null;\r\n const pages = buildPages(current, totalPages, props.siblingCount);\r\n const btn = (active: boolean, disabled?: boolean): CSSProperties => ({\r\n appearance: 'none',\r\n minWidth: '32px',\r\n height: '32px',\r\n padding: '0 8px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${active ? t.colors.intent.primary.solid : t.colors.border}`,\r\n backgroundColor: active ? t.colors.intent.primary.solid : t.colors.surfaceElevated,\r\n color: active ? t.colors.intent.primary.solidFg : t.colors.fg,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.5 : 1,\r\n fontSize: '13px',\r\n fontWeight: '500',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n });\r\n const itemsList = [\r\n props.showFirstLast\r\n ? h(\r\n 'li',\r\n {},\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'First page',\r\n disabled: current === 1,\r\n style: btn(false, current === 1),\r\n onClick: () => go(1, totalPages),\r\n },\r\n '«',\r\n ),\r\n )\r\n : null,\r\n h(\r\n 'li',\r\n {},\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Previous page',\r\n disabled: current === 1,\r\n style: btn(false, current === 1),\r\n onClick: () => go(current - 1, totalPages),\r\n },\r\n h(ElvoraIcon, { name: 'chevronLeft', size: 14, color: 'currentColor' }),\r\n ),\r\n ),\r\n ...pages.map((p, idx) =>\r\n p === 'gap'\r\n ? h(\r\n 'li',\r\n {\r\n key: `gap-${idx}`,\r\n 'aria-hidden': 'true',\r\n style: { padding: '0 4px', color: t.colors.fgSubtle } as CSSProperties,\r\n },\r\n '…',\r\n )\r\n : h(\r\n 'li',\r\n { key: p },\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': `Page ${p}`,\r\n 'aria-current': p === current ? 'page' : undefined,\r\n style: btn(p === current),\r\n onClick: () => go(p as number, totalPages),\r\n },\r\n String(p),\r\n ),\r\n ),\r\n ),\r\n h(\r\n 'li',\r\n {},\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Next page',\r\n disabled: current === totalPages,\r\n style: btn(false, current === totalPages),\r\n onClick: () => go(current + 1, totalPages),\r\n },\r\n h(ElvoraIcon, { name: 'chevronRight', size: 14, color: 'currentColor' }),\r\n ),\r\n ),\r\n props.showFirstLast\r\n ? h(\r\n 'li',\r\n {},\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Last page',\r\n disabled: current === totalPages,\r\n style: btn(false, current === totalPages),\r\n onClick: () => go(totalPages, totalPages),\r\n },\r\n '»',\r\n ),\r\n )\r\n : null,\r\n ].filter(Boolean);\r\n return h('nav', { 'aria-label': 'Pagination' }, [\r\n h(\r\n 'ul',\r\n {\r\n style: {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n gap: '6px',\r\n alignItems: 'center',\r\n } as CSSProperties,\r\n },\r\n itemsList,\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nexport interface ElvoraStep {\r\n title: string;\r\n description?: string;\r\n status?: 'wait' | 'process' | 'finish' | 'error';\r\n}\r\n\r\n/** Steps — multi-step progress indicator. */\r\nexport const ElvoraSteps = defineComponent({\r\n name: 'ElvoraSteps',\r\n props: {\r\n steps: { type: Array as PropType<ElvoraStep[]>, required: true },\r\n current: { type: Number, default: 0 },\r\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\r\n },\r\n emits: ['change'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const resolveStatus = (i: number, override?: ElvoraStep['status']) => {\r\n if (override) return override;\r\n if (i < props.current) return 'finish';\r\n if (i === props.current) return 'process';\r\n return 'wait';\r\n };\r\n return () => {\r\n const t = theme.value;\r\n const intent = t.colors.intent.primary;\r\n const horizontal = props.orientation === 'horizontal';\r\n const dotFor = (status: ReturnType<typeof resolveStatus>) => {\r\n let bg = t.colors.surfaceElevated;\r\n let fg = t.colors.fgMuted;\r\n let border = t.colors.border;\r\n if (status === 'finish') {\r\n bg = intent.solid;\r\n fg = intent.solidFg;\r\n border = intent.solid;\r\n } else if (status === 'process') {\r\n fg = intent.solid;\r\n border = intent.solid;\r\n } else if (status === 'error') {\r\n fg = t.colors.intent.danger.solid;\r\n border = t.colors.intent.danger.solid;\r\n }\r\n return { bg, fg, border };\r\n };\r\n return h(\r\n 'ol',\r\n {\r\n style: {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: horizontal ? 'row' : 'column',\r\n gap: horizontal ? '0' : '12px',\r\n alignItems: horizontal ? 'flex-start' : 'stretch',\r\n } as CSSProperties,\r\n },\r\n props.steps.flatMap((step, i) => {\r\n const status = resolveStatus(i, step.status);\r\n const d = dotFor(status);\r\n const isLast = i === props.steps.length - 1;\r\n const dot = h(\r\n 'div',\r\n {\r\n style: {\r\n width: '28px',\r\n height: '28px',\r\n borderRadius: '50%',\r\n border: `2px solid ${d.border}`,\r\n backgroundColor: d.bg,\r\n color: d.fg,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '13px',\r\n fontWeight: '600',\r\n flexShrink: 0,\r\n } as CSSProperties,\r\n },\r\n status === 'finish'\r\n ? h(ElvoraIcon, { name: 'check', size: 14, color: 'currentColor' })\r\n : status === 'error'\r\n ? h(ElvoraIcon, { name: 'x', size: 14, color: 'currentColor' })\r\n : String(i + 1),\r\n );\r\n const text = h('div', { style: { textAlign: horizontal ? 'center' : 'left' } as CSSProperties }, [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n fontSize: '14px',\r\n fontWeight: '600',\r\n color: status === 'wait' ? t.colors.fgMuted : t.colors.fg,\r\n } as CSSProperties,\r\n },\r\n step.title,\r\n ),\r\n step.description\r\n ? h(\r\n 'div',\r\n { style: { fontSize: '12px', color: t.colors.fgMuted, marginTop: '2px' } as CSSProperties },\r\n step.description,\r\n )\r\n : null,\r\n ]);\r\n const item = h(\r\n 'li',\r\n {\r\n key: i,\r\n 'aria-current': status === 'process' ? 'step' : undefined,\r\n style: {\r\n display: 'flex',\r\n flex: horizontal ? 1 : undefined,\r\n flexDirection: horizontal ? 'column' : 'row',\r\n alignItems: horizontal ? 'center' : 'flex-start',\r\n gap: '8px',\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n onClick: () => emit('change', i),\r\n },\r\n [dot, text],\r\n );\r\n const connector = !isLast\r\n ? h('li', {\r\n 'aria-hidden': 'true',\r\n key: `c-${i}`,\r\n style: (horizontal\r\n ? {\r\n flex: 1,\r\n height: '2px',\r\n backgroundColor: status === 'finish' ? intent.solid : t.colors.border,\r\n alignSelf: 'center',\r\n marginTop: '13px',\r\n }\r\n : {\r\n width: '2px',\r\n minHeight: '18px',\r\n backgroundColor: status === 'finish' ? intent.solid : t.colors.border,\r\n marginLeft: '13px',\r\n }) as CSSProperties,\r\n })\r\n : null;\r\n return connector ? [item, connector] : [item];\r\n }),\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n type VNode,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraAnchorLink {\r\n href: string;\r\n label: string;\r\n children?: ElvoraAnchorLink[];\r\n}\r\n\r\nfunction flatten(links: ElvoraAnchorLink[]): ElvoraAnchorLink[] {\r\n return links.flatMap((l) => [l, ...(l.children ? flatten(l.children) : [])]);\r\n}\r\n\r\n/** Anchor — in-page navigation. */\r\nexport const ElvoraAnchor = defineComponent({\r\n name: 'ElvoraAnchor',\r\n props: {\r\n links: { type: Array as PropType<ElvoraAnchorLink[]>, required: true },\r\n offsetTop: { type: Number, default: 0 },\r\n smooth: { type: Boolean, default: true },\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n const activeHref = ref<string | null>(null);\r\n const onScroll = () => {\r\n const flat = flatten(props.links);\r\n let bestHref: string | null = null;\r\n let bestDistance = Infinity;\r\n for (const link of flat) {\r\n const el = document.getElementById(link.href);\r\n if (!el) continue;\r\n const rect = el.getBoundingClientRect();\r\n const dist = Math.abs(rect.top - props.offsetTop);\r\n if (rect.top - props.offsetTop <= 1 && dist < bestDistance) {\r\n bestDistance = dist;\r\n bestHref = link.href;\r\n }\r\n }\r\n if (!bestHref && flat.length > 0) bestHref = flat[0]?.href ?? null;\r\n activeHref.value = bestHref;\r\n };\r\n onMounted(() => {\r\n onScroll();\r\n window.addEventListener('scroll', onScroll, { passive: true });\r\n window.addEventListener('resize', onScroll);\r\n });\r\n onBeforeUnmount(() => {\r\n window.removeEventListener('scroll', onScroll);\r\n window.removeEventListener('resize', onScroll);\r\n });\r\n const onActivate = (event: MouseEvent, href: string) => {\r\n event.preventDefault();\r\n const target = document.getElementById(href);\r\n if (!target) return;\r\n const top = target.getBoundingClientRect().top + window.scrollY - props.offsetTop;\r\n window.scrollTo({ top, behavior: props.smooth ? 'smooth' : 'auto' });\r\n activeHref.value = href;\r\n history.replaceState(null, '', `#${href}`);\r\n };\r\n const renderItem = (link: ElvoraAnchorLink, depth = 0): VNode => {\r\n const t = theme.value;\r\n const active = activeHref.value === link.href;\r\n return h('li', { key: link.href, style: { listStyle: 'none' } as CSSProperties }, [\r\n h(\r\n 'a',\r\n {\r\n href: `#${link.href}`,\r\n onClick: (e: MouseEvent) => onActivate(e, link.href),\r\n style: {\r\n display: 'block',\r\n padding: '6px 12px',\r\n paddingLeft: `${12 + depth * 12}px`,\r\n color: active ? t.colors.intent.primary.fg : t.colors.fgMuted,\r\n fontSize: '13px',\r\n textDecoration: 'none',\r\n borderLeft: `2px solid ${active ? t.colors.intent.primary.solid : t.colors.border}`,\r\n backgroundColor: active ? t.colors.intent.primary.subtle : 'transparent',\r\n } as CSSProperties,\r\n },\r\n link.label,\r\n ),\r\n link.children && link.children.length > 0\r\n ? h(\r\n 'ul',\r\n { style: { listStyle: 'none', margin: 0, padding: 0 } as CSSProperties },\r\n link.children.map((c) => renderItem(c, depth + 1)),\r\n )\r\n : null,\r\n ]);\r\n };\r\n return () =>\r\n h('nav', { 'aria-label': 'Page sections' }, [\r\n h(\r\n 'ul',\r\n { style: { listStyle: 'none', margin: 0, padding: 0 } as CSSProperties },\r\n props.links.map((l) => renderItem(l)),\r\n ),\r\n ]);\r\n },\r\n});\r\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\n/** BackTop — floating \"scroll to top\" button. */\r\nexport const ElvoraBackTop = defineComponent({\r\n name: 'ElvoraBackTop',\r\n props: {\r\n visibilityHeight: { type: Number, default: 400 },\r\n bottom: { type: Number, default: 24 },\r\n right: { type: Number, default: 24 },\r\n smooth: { type: Boolean, default: true },\r\n label: { type: String, default: 'Back to top' },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n const visible = ref(false);\r\n const onScroll = () => {\r\n visible.value = window.scrollY > props.visibilityHeight;\r\n };\r\n onMounted(() => {\r\n onScroll();\r\n window.addEventListener('scroll', onScroll, { passive: true });\r\n });\r\n onBeforeUnmount(() => {\r\n window.removeEventListener('scroll', onScroll);\r\n });\r\n return () => {\r\n if (!visible.value) return null;\r\n const t = theme.value;\r\n return h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': props.label,\r\n title: props.label,\r\n onClick: () => window.scrollTo({ top: 0, behavior: props.smooth ? 'smooth' : 'auto' }),\r\n style: {\r\n position: 'fixed',\r\n bottom: `${props.bottom}px`,\r\n right: `${props.right}px`,\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '9999px',\r\n border: `1px solid ${t.colors.border}`,\r\n backgroundColor: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n boxShadow: t.shadows.lg,\r\n cursor: 'pointer',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: String(t.tokens.zIndex.overlay),\r\n } as CSSProperties,\r\n },\r\n slots.default?.() ?? h(ElvoraIcon, { name: 'chevronUp', size: 18, color: 'currentColor' }),\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n inject,\r\n provide,\r\n ref,\r\n computed,\r\n type InjectionKey,\r\n type Ref,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraLabel } from './Label';\r\n\r\ninterface FormCtx {\r\n layout: Ref<'vertical' | 'horizontal'>;\r\n labelWidth: Ref<number | string | null>;\r\n errors: Ref<Record<string, string | undefined>>;\r\n setFieldError: (name: string, error: string | undefined) => void;\r\n}\r\n\r\nconst FORM_CTX: InjectionKey<FormCtx> = Symbol('ElvoraForm');\r\n\r\nexport const ElvoraForm = defineComponent({\r\n name: 'ElvoraForm',\r\n props: {\r\n layout: { type: String as PropType<'vertical' | 'horizontal'>, default: 'vertical' },\r\n labelWidth: { type: [Number, String, null] as PropType<number | string | null>, default: null },\r\n },\r\n emits: {\r\n submit: (_e: Event) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const errors = ref<Record<string, string | undefined>>({});\r\n const layout = computed(() => props.layout);\r\n const labelWidth = computed(() => props.labelWidth);\r\n const ctx: FormCtx = {\r\n layout: layout as unknown as Ref<'vertical' | 'horizontal'>,\r\n labelWidth: labelWidth as unknown as Ref<number | string | null>,\r\n errors,\r\n setFieldError(name, error) {\r\n if (errors.value[name] === error) return;\r\n const next = { ...errors.value };\r\n if (error === undefined) delete next[name];\r\n else next[name] = error;\r\n errors.value = next;\r\n },\r\n };\r\n provide(FORM_CTX, ctx);\r\n return () =>\r\n h(\r\n 'form',\r\n {\r\n novalidate: true,\r\n onSubmit: (e: Event) => emit('submit', e),\r\n },\r\n slots.default?.(),\r\n );\r\n },\r\n});\r\n\r\nexport const ElvoraFormField = defineComponent({\r\n name: 'ElvoraFormField',\r\n props: {\r\n name: { type: String, required: true },\r\n label: { type: String, default: undefined },\r\n hint: { type: String, default: undefined },\r\n error: { type: String, default: undefined },\r\n isRequired: { type: Boolean, default: false },\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n const ctx = inject(FORM_CTX, null);\r\n return () => {\r\n const horizontal = ctx?.layout.value === 'horizontal';\r\n const displayedError = props.error ?? ctx?.errors.value[props.name];\r\n return h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n flexDirection: horizontal ? 'row' : 'column',\r\n alignItems: horizontal ? 'flex-start' : 'stretch',\r\n gap: horizontal ? '16px' : '6px',\r\n marginBottom: '16px',\r\n },\r\n },\r\n [\r\n props.label\r\n ? h(\r\n ElvoraLabel,\r\n {\r\n isRequired: props.isRequired,\r\n style: {\r\n width: horizontal ? (typeof ctx?.labelWidth.value === 'number' ? `${ctx.labelWidth.value}px` : ctx?.labelWidth.value ?? '140px') : 'auto',\r\n paddingTop: horizontal ? '8px' : '0',\r\n flexShrink: '0',\r\n },\r\n },\r\n () => props.label,\r\n )\r\n : null,\r\n h('div', { style: { flex: 1, minWidth: 0 } }, [\r\n slots.default?.(),\r\n props.hint && !displayedError\r\n ? h(\r\n 'div',\r\n {\r\n style: { marginTop: '4px', fontSize: '12px', color: theme.value.colors.fgMuted },\r\n },\r\n props.hint,\r\n )\r\n : null,\r\n displayedError\r\n ? h(\r\n 'div',\r\n {\r\n role: 'alert',\r\n style: { marginTop: '4px', fontSize: '12px', color: theme.value.colors.intent.danger.fg },\r\n },\r\n displayedError,\r\n )\r\n : null,\r\n ]),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport function useFormField(name: string) {\r\n const ctx = inject(FORM_CTX, null);\r\n return {\r\n error: computed(() => ctx?.errors.value[name]),\r\n setError(e: string | undefined) {\r\n ctx?.setFieldError(name, e);\r\n },\r\n };\r\n}\r\n","import { computed, defineComponent, h, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nfunction format(value: number, precision: number | undefined): string {\r\n if (precision === undefined) return String(value);\r\n return value.toFixed(precision);\r\n}\r\n\r\nfunction clamp(v: number, min?: number, max?: number): number {\r\n let out = v;\r\n if (typeof min === 'number') out = Math.max(out, min);\r\n if (typeof max === 'number') out = Math.min(out, max);\r\n return out;\r\n}\r\n\r\nexport const ElvoraNumberInput = defineComponent({\r\n name: 'ElvoraNumberInput',\r\n props: {\r\n modelValue: { type: [Number, null] as PropType<number | null>, default: null },\r\n min: { type: Number, default: undefined },\r\n max: { type: Number, default: undefined },\r\n step: { type: Number, default: 1 },\r\n precision: { type: Number, default: undefined },\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n isDisabled: { type: Boolean, default: false },\r\n isReadOnly: { type: Boolean, default: false },\r\n isInvalid: { type: Boolean, default: false },\r\n hideSteppers: { type: Boolean, default: false },\r\n placeholder: { type: String, default: undefined },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: number | null) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const text = ref(props.modelValue == null ? '' : format(props.modelValue, props.precision));\r\n\r\n const setValue = (next: number | null) => {\r\n emit('update:modelValue', next);\r\n text.value = next == null ? '' : format(next, props.precision);\r\n };\r\n\r\n const increment = (delta: number) => {\r\n if (props.isDisabled || props.isReadOnly) return;\r\n const current = typeof props.modelValue === 'number' ? props.modelValue : 0;\r\n setValue(clamp(parseFloat(format(current + delta, props.precision ?? 6)), props.min, props.max));\r\n };\r\n\r\n const onInput = (e: Event) => {\r\n const raw = (e.target as HTMLInputElement).value;\r\n text.value = raw;\r\n if (raw === '' || raw === '-') {\r\n emit('update:modelValue', null);\r\n return;\r\n }\r\n const parsed = Number(raw);\r\n if (!Number.isNaN(parsed)) emit('update:modelValue', clamp(parsed, props.min, props.max));\r\n };\r\n\r\n const onBlur = () => {\r\n if (text.value === '' || text.value === '-') return;\r\n const parsed = Number(text.value);\r\n if (Number.isNaN(parsed)) {\r\n text.value = props.modelValue == null ? '' : format(props.modelValue, props.precision);\r\n return;\r\n }\r\n setValue(clamp(parsed, props.min, props.max));\r\n };\r\n\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n increment(props.step);\r\n } else if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n increment(-props.step);\r\n }\r\n };\r\n\r\n const sizePadding = computed(() => (props.size === 'sm' ? '4px 8px' : props.size === 'lg' ? '10px 14px' : '8px 12px'));\r\n const heightMap = { sm: 32, md: 40, lg: 48 } as const;\r\n\r\n return () => {\r\n const t = theme.value;\r\n const borderColor = props.isInvalid ? t.colors.intent.danger.solid : t.colors.border;\r\n return h(\r\n 'div',\r\n {\r\n role: 'group',\r\n 'aria-disabled': props.isDisabled || undefined,\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'stretch',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${borderColor}`,\r\n backgroundColor: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n overflow: 'hidden',\r\n height: `${heightMap[props.size]}px`,\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n [\r\n h('input', {\r\n type: 'text',\r\n inputmode: 'decimal',\r\n role: 'spinbutton',\r\n 'aria-valuenow': typeof props.modelValue === 'number' ? props.modelValue : undefined,\r\n 'aria-valuemin': props.min,\r\n 'aria-valuemax': props.max,\r\n 'aria-invalid': props.isInvalid || undefined,\r\n disabled: props.isDisabled || undefined,\r\n readonly: props.isReadOnly || undefined,\r\n placeholder: props.placeholder,\r\n value: text.value,\r\n onInput,\r\n onBlur,\r\n onKeydown: onKeyDown,\r\n style: {\r\n flex: 1,\r\n minWidth: '80px',\r\n padding: sizePadding.value,\r\n border: 'none',\r\n outline: 'none',\r\n background: 'transparent',\r\n color: t.colors.fg,\r\n fontSize: '14px',\r\n },\r\n }),\r\n props.hideSteppers\r\n ? null\r\n : h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n borderLeft: `1px solid ${borderColor}`,\r\n },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Increment',\r\n tabindex: -1,\r\n onClick: () => increment(props.step),\r\n disabled: props.isDisabled || props.isReadOnly,\r\n style: {\r\n flex: 1,\r\n padding: '0 6px',\r\n border: 'none',\r\n borderBottom: `1px solid ${borderColor}`,\r\n background: t.colors.surface,\r\n color: t.colors.fg,\r\n cursor: 'pointer',\r\n },\r\n },\r\n '▲',\r\n ),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Decrement',\r\n tabindex: -1,\r\n onClick: () => increment(-props.step),\r\n disabled: props.isDisabled || props.isReadOnly,\r\n style: {\r\n flex: 1,\r\n padding: '0 6px',\r\n border: 'none',\r\n background: t.colors.surface,\r\n color: t.colors.fg,\r\n cursor: 'pointer',\r\n },\r\n },\r\n '▼',\r\n ),\r\n ],\r\n ),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraSegmentedOption {\r\n value: string;\r\n label: string;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ElvoraSegmented = defineComponent({\r\n name: 'ElvoraSegmented',\r\n props: {\r\n options: { type: Array as PropType<ElvoraSegmentedOption[]>, required: true },\r\n modelValue: { type: String, default: '' },\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n\r\n return () => {\r\n const t = theme.value;\r\n const padding = props.size === 'sm' ? '4px 10px' : props.size === 'lg' ? '10px 16px' : '6px 12px';\r\n const fontSize = props.size === 'sm' ? '12px' : props.size === 'lg' ? '15px' : '14px';\r\n return h(\r\n 'div',\r\n {\r\n role: 'radiogroup',\r\n 'aria-disabled': props.isDisabled || undefined,\r\n style: {\r\n display: 'inline-flex',\r\n backgroundColor: t.colors.intent.neutral.subtle,\r\n borderRadius: `${t.radii.md}px`,\r\n padding: '4px',\r\n gap: '2px',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n props.options.map((opt) => {\r\n const active = opt.value === props.modelValue;\r\n const disabled = props.isDisabled || opt.isDisabled;\r\n return h(\r\n 'button',\r\n {\r\n key: opt.value,\r\n type: 'button',\r\n role: 'radio',\r\n 'aria-checked': active,\r\n 'aria-disabled': disabled || undefined,\r\n disabled: disabled || undefined,\r\n onClick: () => {\r\n if (!disabled) emit('update:modelValue', opt.value);\r\n },\r\n style: {\r\n appearance: 'none',\r\n border: 'none',\r\n background: active ? t.colors.surfaceElevated : 'transparent',\r\n color: active ? t.colors.fg : t.colors.fgMuted,\r\n borderRadius: `${t.radii.sm}px`,\r\n padding,\r\n fontSize,\r\n fontWeight: String(t.tokens.typography.fontWeights.medium),\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n boxShadow: active ? t.shadows.sm : undefined,\r\n },\r\n },\r\n opt.label,\r\n );\r\n }),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, onUnmounted } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nfunction snap(value: number, min: number, max: number, step: number): number {\r\n const clamped = Math.min(Math.max(value, min), max);\r\n if (step <= 0) return clamped;\r\n const steps = Math.round((clamped - min) / step);\r\n return Math.min(Math.max(min + steps * step, min), max);\r\n}\r\n\r\nexport const ElvoraSlider = defineComponent({\r\n name: 'ElvoraSlider',\r\n props: {\r\n modelValue: { type: Number, default: 0 },\r\n min: { type: Number, default: 0 },\r\n max: { type: Number, default: 100 },\r\n step: { type: Number, default: 1 },\r\n isDisabled: { type: Boolean, default: false },\r\n ariaLabel: { type: String, default: undefined },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: number) => true,\r\n 'change-end': (_v: number) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const track = ref<HTMLDivElement | null>(null);\r\n const dragging = ref(false);\r\n\r\n const commit = (next: number): number => {\r\n const snapped = snap(next, props.min, props.max, props.step);\r\n emit('update:modelValue', snapped);\r\n return snapped;\r\n };\r\n\r\n const valueFromClient = (clientX: number): number => {\r\n const el = track.value;\r\n if (!el) return props.modelValue;\r\n const rect = el.getBoundingClientRect();\r\n const ratio = (clientX - rect.left) / rect.width;\r\n return props.min + ratio * (props.max - props.min);\r\n };\r\n\r\n const onPointerDown = (e: PointerEvent) => {\r\n if (props.isDisabled) return;\r\n (e.currentTarget as HTMLDivElement).setPointerCapture(e.pointerId);\r\n dragging.value = true;\r\n commit(valueFromClient(e.clientX));\r\n };\r\n\r\n const onPointerMove = (e: PointerEvent) => {\r\n if (!dragging.value || props.isDisabled) return;\r\n commit(valueFromClient(e.clientX));\r\n };\r\n\r\n const onPointerUp = (e: PointerEvent) => {\r\n if (!dragging.value) return;\r\n dragging.value = false;\r\n try {\r\n (e.currentTarget as HTMLDivElement).releasePointerCapture(e.pointerId);\r\n } catch {}\r\n emit('change-end', props.modelValue);\r\n };\r\n\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n if (props.isDisabled) return;\r\n let next = props.modelValue;\r\n const big = (props.max - props.min) / 10;\r\n switch (e.key) {\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n next -= props.step;\r\n break;\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n next += props.step;\r\n break;\r\n case 'PageDown':\r\n next -= big;\r\n break;\r\n case 'PageUp':\r\n next += big;\r\n break;\r\n case 'Home':\r\n next = props.min;\r\n break;\r\n case 'End':\r\n next = props.max;\r\n break;\r\n default:\r\n return;\r\n }\r\n e.preventDefault();\r\n const snapped = commit(next);\r\n emit('change-end', snapped);\r\n };\r\n\r\n const onGlobalUp = () => {\r\n dragging.value = false;\r\n };\r\n if (typeof window !== 'undefined') window.addEventListener('pointerup', onGlobalUp);\r\n onUnmounted(() => {\r\n if (typeof window !== 'undefined') window.removeEventListener('pointerup', onGlobalUp);\r\n });\r\n\r\n return () => {\r\n const t = theme.value;\r\n const percent = ((props.modelValue - props.min) / (props.max - props.min)) * 100;\r\n return h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'relative',\r\n padding: '12px 8px',\r\n minWidth: '120px',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n track.value = el;\r\n },\r\n onPointerdown: onPointerDown,\r\n onPointermove: onPointerMove,\r\n onPointerup: onPointerUp,\r\n style: {\r\n position: 'relative',\r\n height: '4px',\r\n borderRadius: '999px',\r\n backgroundColor: t.colors.intent.neutral.subtle,\r\n touchAction: 'none',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n },\r\n },\r\n [\r\n h('div', {\r\n style: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n height: '100%',\r\n width: `${percent}%`,\r\n backgroundColor: t.colors.intent.primary.solid,\r\n borderRadius: '999px',\r\n },\r\n }),\r\n h('div', {\r\n role: 'slider',\r\n tabindex: props.isDisabled ? -1 : 0,\r\n 'aria-label': props.ariaLabel,\r\n 'aria-valuemin': props.min,\r\n 'aria-valuemax': props.max,\r\n 'aria-valuenow': props.modelValue,\r\n 'aria-disabled': props.isDisabled || undefined,\r\n onKeydown: onKeyDown,\r\n style: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: `${percent}%`,\r\n transform: 'translate(-50%, -50%)',\r\n width: '18px',\r\n height: '18px',\r\n borderRadius: '50%',\r\n backgroundColor: t.colors.surfaceElevated,\r\n border: `2px solid ${t.colors.intent.primary.solid}`,\r\n boxShadow: t.shadows.sm,\r\n outline: 'none',\r\n cursor: props.isDisabled ? 'not-allowed' : 'grab',\r\n },\r\n }),\r\n ],\r\n ),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraRate = defineComponent({\r\n name: 'ElvoraRate',\r\n props: {\r\n modelValue: { type: Number, default: 0 },\r\n count: { type: Number, default: 5 },\r\n allowHalf: { type: Boolean, default: false },\r\n isDisabled: { type: Boolean, default: false },\r\n ariaLabel: { type: String, default: 'Rating' },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: number) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const hover = ref<number | null>(null);\r\n\r\n const setValue = (next: number) => {\r\n if (props.isDisabled) return;\r\n const clamped = Math.min(Math.max(next, 0), props.count);\r\n emit('update:modelValue', clamped);\r\n };\r\n\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n if (props.isDisabled) return;\r\n const stepSize = props.allowHalf ? 0.5 : 1;\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n setValue(props.modelValue - stepSize);\r\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n setValue(props.modelValue + stepSize);\r\n } else if (e.key === 'Home') {\r\n e.preventDefault();\r\n setValue(0);\r\n } else if (e.key === 'End') {\r\n e.preventDefault();\r\n setValue(props.count);\r\n }\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const displayed = hover.value ?? props.modelValue;\r\n return h(\r\n 'div',\r\n {\r\n role: 'slider',\r\n 'aria-label': props.ariaLabel,\r\n 'aria-valuemin': 0,\r\n 'aria-valuemax': props.count,\r\n 'aria-valuenow': props.modelValue,\r\n 'aria-disabled': props.isDisabled || undefined,\r\n tabindex: props.isDisabled ? -1 : 0,\r\n onKeydown: onKeyDown,\r\n onMouseleave: () => {\r\n hover.value = null;\r\n },\r\n style: {\r\n display: 'inline-flex',\r\n gap: '4px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n outline: 'none',\r\n },\r\n },\r\n Array.from({ length: props.count }).map((_, i) => {\r\n const filledAt = i + 1;\r\n const halfAt = i + 0.5;\r\n const isFilled = displayed >= filledAt;\r\n const isHalf = !isFilled && props.allowHalf && displayed >= halfAt;\r\n const color = isFilled || isHalf ? t.colors.intent.warning.solid : t.colors.border;\r\n return h(\r\n 'span',\r\n {\r\n key: i,\r\n style: { fontSize: '20px', color, lineHeight: 1 },\r\n onMousemove: (e: MouseEvent) => {\r\n if (props.isDisabled) return;\r\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\r\n const left = e.clientX - rect.left < rect.width / 2;\r\n hover.value = left && props.allowHalf ? halfAt : filledAt;\r\n },\r\n onClick: (e: MouseEvent) => {\r\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\r\n const left = e.clientX - rect.left < rect.width / 2;\r\n setValue(left && props.allowHalf ? halfAt : filledAt);\r\n },\r\n },\r\n '★',\r\n );\r\n }),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraUploadFile {\r\n id: string;\r\n file: File;\r\n status: 'pending' | 'uploading' | 'done' | 'error';\r\n progress?: number;\r\n error?: string;\r\n}\r\n\r\nlet nextId = 0;\r\n\r\nexport const ElvoraUpload = defineComponent({\r\n name: 'ElvoraUpload',\r\n props: {\r\n files: { type: Array as PropType<ElvoraUploadFile[]>, default: () => [] },\r\n multiple: { type: Boolean, default: false },\r\n accept: { type: String, default: undefined },\r\n description: { type: String, default: undefined },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:files': (_v: ElvoraUploadFile[]) => true,\r\n upload: (_files: File[]) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const dragOver = ref(false);\r\n\r\n const handleFiles = (arr: File[]) => {\r\n if (props.isDisabled || arr.length === 0) return;\r\n const list = props.multiple ? arr : [arr[0]!];\r\n const wrapped: ElvoraUploadFile[] = list.map((f) => ({\r\n id: `upload-${++nextId}`,\r\n file: f,\r\n status: 'pending',\r\n }));\r\n const next = props.multiple ? [...props.files, ...wrapped] : wrapped;\r\n emit('update:files', next);\r\n emit('upload', list);\r\n };\r\n\r\n const onInput = (e: Event) => {\r\n const input = e.target as HTMLInputElement;\r\n if (input.files) handleFiles(Array.from(input.files));\r\n input.value = '';\r\n };\r\n\r\n const onDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n dragOver.value = false;\r\n if (e.dataTransfer?.files) handleFiles(Array.from(e.dataTransfer.files));\r\n };\r\n\r\n const remove = (id: string) => {\r\n emit('update:files', props.files.filter((f) => f.id !== id));\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const over = dragOver.value;\r\n return h('div', [\r\n h(\r\n 'label',\r\n {\r\n onDragover: (e: DragEvent) => {\r\n e.preventDefault();\r\n if (!props.isDisabled) dragOver.value = true;\r\n },\r\n onDragleave: () => {\r\n dragOver.value = false;\r\n },\r\n onDrop,\r\n style: {\r\n display: 'block',\r\n padding: '24px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `2px dashed ${over ? t.colors.intent.primary.solid : t.colors.border}`,\r\n background: over ? t.colors.intent.primary.subtle : t.colors.surface,\r\n textAlign: 'center',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n color: t.colors.fg,\r\n },\r\n },\r\n [\r\n h('div', { style: { fontSize: '14px', fontWeight: 500 } }, `Click or drag ${props.multiple ? 'files' : 'a file'} here`),\r\n props.description\r\n ? h('div', { style: { fontSize: '12px', color: t.colors.fgMuted, marginTop: '4px' } }, props.description)\r\n : null,\r\n h('input', {\r\n type: 'file',\r\n multiple: props.multiple || undefined,\r\n accept: props.accept,\r\n disabled: props.isDisabled || undefined,\r\n onChange: onInput,\r\n style: { display: 'none' },\r\n }),\r\n ],\r\n ),\r\n props.files.length > 0\r\n ? h(\r\n 'ul',\r\n {\r\n style: { listStyle: 'none', margin: '12px 0 0', padding: 0, display: 'flex', flexDirection: 'column', gap: '6px' },\r\n },\r\n props.files.map((f) =>\r\n h(\r\n 'li',\r\n {\r\n key: f.id,\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '8px 12px',\r\n borderRadius: `${t.radii.sm}px`,\r\n background: t.colors.surface,\r\n border: `1px solid ${t.colors.border}`,\r\n },\r\n },\r\n [\r\n h('div', { style: { flex: 1, minWidth: 0 } }, [\r\n h(\r\n 'div',\r\n {\r\n style: { fontSize: '13px', color: t.colors.fg, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\r\n },\r\n f.file.name,\r\n ),\r\n h(\r\n 'div',\r\n { style: { fontSize: '11px', color: t.colors.fgMuted } },\r\n `${(f.file.size / 1024).toFixed(1)} KB${f.status !== 'pending' ? ` • ${f.status}` : ''}`,\r\n ),\r\n ]),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': `Remove ${f.file.name}`,\r\n onClick: () => remove(f.id),\r\n style: {\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n color: t.colors.fgMuted,\r\n },\r\n },\r\n '×',\r\n ),\r\n ],\r\n ),\r\n ),\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraAutoCompleteOption {\r\n value: string;\r\n label?: string;\r\n}\r\n\r\nexport const ElvoraAutoComplete = defineComponent({\r\n name: 'ElvoraAutoComplete',\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n options: { type: Array as PropType<ElvoraAutoCompleteOption[]>, default: () => [] },\r\n placeholder: { type: String, default: undefined },\r\n isDisabled: { type: Boolean, default: false },\r\n isInvalid: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n select: (_opt: ElvoraAutoCompleteOption) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const highlight = ref(-1);\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const filtered = computed(() => {\r\n const q = props.modelValue.toLowerCase();\r\n return q ? props.options.filter((o) => o.value.toLowerCase().includes(q)) : props.options;\r\n });\r\n\r\n const select = (opt: ElvoraAutoCompleteOption) => {\r\n emit('update:modelValue', opt.value);\r\n emit('select', opt);\r\n isOpen.value = false;\r\n };\r\n\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n const list = filtered.value;\r\n if (!isOpen.value && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {\r\n isOpen.value = true;\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n highlight.value = (highlight.value + 1) % Math.max(list.length, 1);\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n highlight.value = highlight.value <= 0 ? list.length - 1 : highlight.value - 1;\r\n } else if (e.key === 'Enter') {\r\n const item = list[highlight.value];\r\n if (item) {\r\n e.preventDefault();\r\n select(item);\r\n }\r\n } else if (e.key === 'Escape') {\r\n isOpen.value = false;\r\n }\r\n };\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h('input', {\r\n role: 'combobox',\r\n 'aria-expanded': isOpen.value,\r\n 'aria-autocomplete': 'list',\r\n 'aria-invalid': props.isInvalid || undefined,\r\n disabled: props.isDisabled || undefined,\r\n value: props.modelValue,\r\n placeholder: props.placeholder,\r\n onInput: (e: Event) => {\r\n emit('update:modelValue', (e.target as HTMLInputElement).value);\r\n isOpen.value = true;\r\n highlight.value = -1;\r\n },\r\n onFocus: () => {\r\n isOpen.value = true;\r\n },\r\n onKeydown: onKeyDown,\r\n style: {\r\n width: '100%',\r\n padding: '8px 12px',\r\n fontSize: '14px',\r\n border: `1px solid ${props.isInvalid ? t.colors.intent.danger.solid : t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n outline: 'none',\r\n },\r\n }),\r\n isOpen.value && filtered.value.length > 0\r\n ? h(\r\n 'ul',\r\n {\r\n role: 'listbox',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n right: 0,\r\n marginTop: '4px',\r\n listStyle: 'none',\r\n padding: '4px',\r\n maxHeight: '220px',\r\n overflowY: 'auto',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.dropdown,\r\n },\r\n },\r\n filtered.value.map((opt, i) =>\r\n h(\r\n 'li',\r\n {\r\n key: opt.value,\r\n role: 'option',\r\n 'aria-selected': i === highlight.value,\r\n onMousedown: (e: Event) => {\r\n e.preventDefault();\r\n select(opt);\r\n },\r\n onMouseenter: () => {\r\n highlight.value = i;\r\n },\r\n style: {\r\n padding: '6px 10px',\r\n fontSize: '14px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: 'pointer',\r\n background: i === highlight.value ? t.colors.intent.neutral.subtle : 'transparent',\r\n },\r\n },\r\n opt.label ?? opt.value,\r\n ),\r\n ),\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nconst DEFAULT_PRESETS = ['#0F172A', '#1D4ED8', '#16A34A', '#F59E0B', '#DC2626', '#7C3AED', '#0EA5E9', '#FFFFFF'];\r\n\r\nfunction normalize(v: string): string {\r\n if (!v) return '#000000';\r\n return v.startsWith('#') ? v.toUpperCase() : `#${v.toUpperCase()}`;\r\n}\r\n\r\nexport const ElvoraColorPicker = defineComponent({\r\n name: 'ElvoraColorPicker',\r\n props: {\r\n modelValue: { type: String, default: '#0F172A' },\r\n presets: { type: Array as PropType<string[]>, default: () => DEFAULT_PRESETS },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const hexInput = ref(normalize(props.modelValue));\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const setValue = (v: string) => {\r\n const n = normalize(v);\r\n hexInput.value = n;\r\n emit('update:modelValue', n);\r\n };\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n return () => {\r\n const t = theme.value;\r\n const value = normalize(props.modelValue);\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n 'aria-haspopup': 'dialog',\r\n 'aria-expanded': isOpen.value,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n },\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '4px 8px 4px 4px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n [\r\n h('span', {\r\n style: {\r\n display: 'inline-block',\r\n width: '24px',\r\n height: '24px',\r\n borderRadius: `${t.radii.sm}px`,\r\n background: value,\r\n border: `1px solid ${t.colors.border}`,\r\n },\r\n }),\r\n h('span', { style: { fontFamily: 'monospace', fontSize: '13px', color: t.colors.fg } }, value),\r\n ],\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '6px',\r\n padding: '12px',\r\n width: '220px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n },\r\n },\r\n [\r\n h('input', {\r\n type: 'color',\r\n 'aria-label': 'Pick color',\r\n value,\r\n onInput: (e: Event) => setValue((e.target as HTMLInputElement).value),\r\n disabled: props.isDisabled || undefined,\r\n style: { width: '100%', height: '80px', border: 'none', padding: 0, background: 'transparent' },\r\n }),\r\n h('input', {\r\n type: 'text',\r\n 'aria-label': 'Hex value',\r\n value: hexInput.value,\r\n onInput: (e: Event) => {\r\n const raw = (e.target as HTMLInputElement).value;\r\n hexInput.value = raw;\r\n if (/^#?[0-9a-fA-F]{6}$/.test(raw)) setValue(raw);\r\n },\r\n disabled: props.isDisabled || undefined,\r\n style: {\r\n marginTop: '8px',\r\n width: '100%',\r\n padding: '6px 8px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.sm}px`,\r\n fontSize: '13px',\r\n fontFamily: 'monospace',\r\n },\r\n }),\r\n h(\r\n 'div',\r\n { style: { display: 'flex', flexWrap: 'wrap', gap: '6px', marginTop: '10px' } },\r\n props.presets.map((p) =>\r\n h('button', {\r\n key: p,\r\n type: 'button',\r\n 'aria-label': `Choose ${p}`,\r\n onClick: () => setValue(p),\r\n style: {\r\n width: '22px',\r\n height: '22px',\r\n borderRadius: `${t.radii.sm}px`,\r\n border: `1px solid ${t.colors.border}`,\r\n background: p,\r\n cursor: 'pointer',\r\n },\r\n }),\r\n ),\r\n ),\r\n ],\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nconst pad = (n: number) => String(n).padStart(2, '0');\r\nconst defaultFormat = (d: Date) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\r\n\r\nfunction startOfMonth(d: Date) {\r\n return new Date(d.getFullYear(), d.getMonth(), 1);\r\n}\r\n\r\nfunction addMonths(d: Date, n: number) {\r\n return new Date(d.getFullYear(), d.getMonth() + n, 1);\r\n}\r\n\r\nfunction buildMatrix(view: Date, weekStartsOn: number): Date[][] {\r\n const first = startOfMonth(view);\r\n const firstWeekday = (first.getDay() - weekStartsOn + 7) % 7;\r\n const start = new Date(first);\r\n start.setDate(first.getDate() - firstWeekday);\r\n const weeks: Date[][] = [];\r\n for (let w = 0; w < 6; w++) {\r\n const row: Date[] = [];\r\n for (let d = 0; d < 7; d++) {\r\n const day = new Date(start);\r\n day.setDate(start.getDate() + w * 7 + d);\r\n row.push(day);\r\n }\r\n weeks.push(row);\r\n }\r\n return weeks;\r\n}\r\n\r\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return a.toDateString() === b.toDateString();\r\n}\r\n\r\nexport const ElvoraDatePicker = defineComponent({\r\n name: 'ElvoraDatePicker',\r\n props: {\r\n modelValue: { type: [Date, null] as PropType<Date | null>, default: null },\r\n min: { type: Date, default: undefined },\r\n max: { type: Date, default: undefined },\r\n placeholder: { type: String, default: 'YYYY-MM-DD' },\r\n isDisabled: { type: Boolean, default: false },\r\n isInvalid: { type: Boolean, default: false },\r\n weekStartsOn: { type: Number as PropType<0 | 1 | 2 | 3 | 4 | 5 | 6>, default: 0 },\r\n format: { type: Function as PropType<(d: Date) => string>, default: defaultFormat },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: Date | null) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const view = ref<Date>(props.modelValue ?? new Date());\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const matrix = computed(() => buildMatrix(view.value, props.weekStartsOn));\r\n const weekdays = computed(() => {\r\n const base = new Date(2024, 0, 7);\r\n const arr: string[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n const d = new Date(base);\r\n d.setDate(base.getDate() + ((i + props.weekStartsOn) % 7));\r\n arr.push(d.toLocaleString(undefined, { weekday: 'short' }));\r\n }\r\n return arr;\r\n });\r\n\r\n const isInRange = (d: Date) => {\r\n if (props.min && d < new Date(props.min.getFullYear(), props.min.getMonth(), props.min.getDate())) return false;\r\n if (props.max && d > new Date(props.max.getFullYear(), props.max.getMonth(), props.max.getDate())) return false;\r\n return true;\r\n };\r\n\r\n const pick = (d: Date) => {\r\n if (!isInRange(d)) return;\r\n emit('update:modelValue', d);\r\n isOpen.value = false;\r\n };\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n return () => {\r\n const t = theme.value;\r\n const value = props.modelValue;\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n if (value) view.value = value;\r\n },\r\n style: {\r\n padding: '8px 12px',\r\n minWidth: '160px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${props.isInvalid ? t.colors.intent.danger.solid : t.colors.border}`,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n color: value ? t.colors.fg : t.colors.fgMuted,\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n value ? props.format(value) : props.placeholder,\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '6px',\r\n padding: '12px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n width: '268px',\r\n },\r\n },\r\n [\r\n h(\r\n 'div',\r\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' } },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => {\r\n view.value = addMonths(view.value, -1);\r\n },\r\n style: { border: 'none', background: 'transparent', cursor: 'pointer', fontSize: '16px' },\r\n },\r\n '‹',\r\n ),\r\n h(\r\n 'div',\r\n { style: { fontSize: '14px', fontWeight: 500 } },\r\n view.value.toLocaleString(undefined, { month: 'long', year: 'numeric' }),\r\n ),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => {\r\n view.value = addMonths(view.value, 1);\r\n },\r\n style: { border: 'none', background: 'transparent', cursor: 'pointer', fontSize: '16px' },\r\n },\r\n '›',\r\n ),\r\n ],\r\n ),\r\n h(\r\n 'div',\r\n { style: { display: 'grid', gridTemplateColumns: 'repeat(7, 1fr)', gap: '2px' } },\r\n [\r\n ...weekdays.value.map((wd) =>\r\n h(\r\n 'div',\r\n { key: wd, style: { textAlign: 'center', fontSize: '11px', color: t.colors.fgMuted, padding: '4px', fontWeight: 500 } },\r\n wd,\r\n ),\r\n ),\r\n ...matrix.value.flat().map((d) => {\r\n const today = new Date();\r\n const inMonth = d.getMonth() === view.value.getMonth();\r\n const selected = isSameDay(d, value);\r\n const todayCell = isSameDay(d, today);\r\n const disabled = !isInRange(d);\r\n return h(\r\n 'button',\r\n {\r\n key: d.toISOString(),\r\n type: 'button',\r\n disabled: disabled || undefined,\r\n onClick: () => pick(d),\r\n style: {\r\n padding: '6px 0',\r\n fontSize: '13px',\r\n border: 'none',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n background: selected ? t.colors.intent.primary.solid : todayCell ? t.colors.intent.primary.subtle : 'transparent',\r\n color: selected ? t.colors.intent.primary.solidFg : inMonth ? t.colors.fg : t.colors.fgSubtle,\r\n opacity: disabled ? 0.4 : 1,\r\n },\r\n },\r\n String(d.getDate()),\r\n );\r\n }),\r\n ],\r\n ),\r\n ],\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTimeValue {\r\n hours: number;\r\n minutes: number;\r\n seconds?: number;\r\n}\r\n\r\nconst pad = (n: number) => String(n).padStart(2, '0');\r\n\r\nfunction formatTime(t: ElvoraTimeValue | null, use12: boolean, showSec: boolean): string {\r\n if (!t) return '';\r\n const h = use12 ? ((t.hours + 11) % 12) + 1 : t.hours;\r\n const main = `${pad(h)}:${pad(t.minutes)}${showSec ? `:${pad(t.seconds ?? 0)}` : ''}`;\r\n return use12 ? `${main} ${t.hours >= 12 ? 'PM' : 'AM'}` : main;\r\n}\r\n\r\nexport const ElvoraTimePicker = defineComponent({\r\n name: 'ElvoraTimePicker',\r\n props: {\r\n modelValue: { type: [Object, null] as PropType<ElvoraTimeValue | null>, default: null },\r\n showSeconds: { type: Boolean, default: false },\r\n use12Hours: { type: Boolean, default: false },\r\n minuteStep: { type: Number, default: 1 },\r\n placeholder: { type: String, default: undefined },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: ElvoraTimeValue | null) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const hours = computed(() => Array.from({ length: props.use12Hours ? 12 : 24 }, (_, i) => (props.use12Hours ? i + 1 : i)));\r\n const minutes = computed(() => Array.from({ length: Math.ceil(60 / props.minuteStep) }, (_, i) => i * props.minuteStep));\r\n const seconds = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n const setValue = (v: ElvoraTimeValue) => emit('update:modelValue', v);\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n const colCell = (active: boolean, label: string, onClick: () => void) => {\r\n const t = theme.value;\r\n return h(\r\n 'li',\r\n {\r\n onClick,\r\n style: {\r\n padding: '6px 10px',\r\n fontSize: '13px',\r\n textAlign: 'center',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: 'pointer',\r\n background: active ? t.colors.intent.primary.solid : 'transparent',\r\n color: active ? t.colors.intent.primary.solidFg : t.colors.fg,\r\n fontFamily: 'monospace',\r\n },\r\n },\r\n label,\r\n );\r\n };\r\n\r\n const col = (items: number[], current: number | undefined, onSelect: (v: number) => void, fmt?: (v: number) => string) => {\r\n const t = theme.value;\r\n return h(\r\n 'ul',\r\n {\r\n role: 'listbox',\r\n style: {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: '4px',\r\n height: '168px',\r\n overflowY: 'auto',\r\n borderRight: `1px solid ${t.colors.border}`,\r\n width: '56px',\r\n },\r\n },\r\n items.map((v) => colCell(v === current, fmt ? fmt(v) : pad(v), () => onSelect(v))),\r\n );\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const value = props.modelValue;\r\n const display = formatTime(value, props.use12Hours, props.showSeconds);\r\n const currentHourCol = value ? (props.use12Hours ? ((value.hours + 11) % 12) + 1 : value.hours) : undefined;\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n },\r\n style: {\r\n padding: '8px 12px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n color: display ? t.colors.fg : t.colors.fgMuted,\r\n fontSize: '14px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n display || props.placeholder || (props.showSeconds ? 'HH:MM:SS' : 'HH:MM'),\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '6px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n display: 'flex',\r\n },\r\n },\r\n [\r\n col(hours.value, currentHourCol, (h2) => {\r\n let actual = h2;\r\n if (props.use12Hours) {\r\n const isPM = (value?.hours ?? 0) >= 12;\r\n actual = (h2 % 12) + (isPM ? 12 : 0);\r\n }\r\n setValue({\r\n hours: actual,\r\n minutes: value?.minutes ?? 0,\r\n seconds: props.showSeconds ? value?.seconds ?? 0 : undefined,\r\n });\r\n }),\r\n col(minutes.value, value?.minutes, (m) =>\r\n setValue({\r\n hours: value?.hours ?? 0,\r\n minutes: m,\r\n seconds: props.showSeconds ? value?.seconds ?? 0 : undefined,\r\n }),\r\n ),\r\n props.showSeconds\r\n ? col(seconds, value?.seconds, (s) =>\r\n setValue({\r\n hours: value?.hours ?? 0,\r\n minutes: value?.minutes ?? 0,\r\n seconds: s,\r\n }),\r\n )\r\n : null,\r\n props.use12Hours\r\n ? h(\r\n 'div',\r\n { style: { display: 'flex', flexDirection: 'column', padding: '4px', gap: '4px', width: '56px' } },\r\n (['AM', 'PM'] as const).map((p) => {\r\n const isPM = (value?.hours ?? 0) >= 12;\r\n const active = p === 'PM' ? isPM : !isPM;\r\n return h(\r\n 'button',\r\n {\r\n key: p,\r\n type: 'button',\r\n onClick: () => {\r\n const base = value?.hours ?? 0;\r\n const next = p === 'PM' && base < 12 ? base + 12 : p === 'AM' && base >= 12 ? base - 12 : base;\r\n setValue({\r\n hours: next,\r\n minutes: value?.minutes ?? 0,\r\n seconds: props.showSeconds ? value?.seconds ?? 0 : undefined,\r\n });\r\n },\r\n style: {\r\n padding: '6px 10px',\r\n fontSize: '13px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: 'pointer',\r\n border: 'none',\r\n background: active ? t.colors.intent.primary.solid : 'transparent',\r\n color: active ? t.colors.intent.primary.solidFg : t.colors.fg,\r\n },\r\n },\r\n p,\r\n );\r\n }),\r\n )\r\n : null,\r\n ],\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraDateRange {\r\n start: Date | null;\r\n end: Date | null;\r\n}\r\n\r\nconst pad = (n: number) => String(n).padStart(2, '0');\r\nconst defaultFormat = (d: Date) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\r\n\r\nfunction addMonths(d: Date, n: number) {\r\n return new Date(d.getFullYear(), d.getMonth() + n, 1);\r\n}\r\n\r\nfunction startOfMonth(d: Date) {\r\n return new Date(d.getFullYear(), d.getMonth(), 1);\r\n}\r\n\r\nfunction buildMatrix(view: Date, weekStartsOn: number): Date[][] {\r\n const first = startOfMonth(view);\r\n const firstWeekday = (first.getDay() - weekStartsOn + 7) % 7;\r\n const start = new Date(first);\r\n start.setDate(first.getDate() - firstWeekday);\r\n const weeks: Date[][] = [];\r\n for (let w = 0; w < 6; w++) {\r\n const row: Date[] = [];\r\n for (let d = 0; d < 7; d++) {\r\n const day = new Date(start);\r\n day.setDate(start.getDate() + w * 7 + d);\r\n row.push(day);\r\n }\r\n weeks.push(row);\r\n }\r\n return weeks;\r\n}\r\n\r\nfunction dayKey(d: Date): number {\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\r\n}\r\n\r\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return a.toDateString() === b.toDateString();\r\n}\r\n\r\nexport const ElvoraDateRangePicker = defineComponent({\r\n name: 'ElvoraDateRangePicker',\r\n props: {\r\n modelValue: { type: Object as PropType<ElvoraDateRange | null>, default: null },\r\n min: { type: Date, default: undefined },\r\n max: { type: Date, default: undefined },\r\n isDisabled: { type: Boolean, default: false },\r\n isInvalid: { type: Boolean, default: false },\r\n weekStartsOn: { type: Number as PropType<0 | 1 | 2 | 3 | 4 | 5 | 6>, default: 0 },\r\n format: { type: Function as PropType<(d: Date) => string>, default: defaultFormat },\r\n placeholder: { type: Object as PropType<{ start?: string; end?: string }>, default: undefined },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: ElvoraDateRange) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const view = ref<Date>(props.modelValue?.start ?? new Date());\r\n const pendingStart = ref<Date | null>(null);\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const weekdays = computed(() => {\r\n const base = new Date(2024, 0, 7);\r\n const arr: string[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n const d = new Date(base);\r\n d.setDate(base.getDate() + ((i + props.weekStartsOn) % 7));\r\n arr.push(d.toLocaleString(undefined, { weekday: 'short' }));\r\n }\r\n return arr;\r\n });\r\n\r\n const isInRange = (d: Date) => {\r\n if (props.min && d < new Date(props.min.getFullYear(), props.min.getMonth(), props.min.getDate())) return false;\r\n if (props.max && d > new Date(props.max.getFullYear(), props.max.getMonth(), props.max.getDate())) return false;\r\n return true;\r\n };\r\n\r\n const pickDay = (d: Date) => {\r\n if (!isInRange(d)) return;\r\n const v = props.modelValue;\r\n if (!pendingStart.value || (v?.start && v?.end)) {\r\n pendingStart.value = d;\r\n emit('update:modelValue', { start: d, end: null });\r\n return;\r\n }\r\n const start = pendingStart.value;\r\n const end = d;\r\n const next = dayKey(end) < dayKey(start) ? { start: end, end: start } : { start, end };\r\n emit('update:modelValue', next);\r\n pendingStart.value = null;\r\n isOpen.value = false;\r\n };\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n const renderMonth = (offset: number) => {\r\n const t = theme.value;\r\n const monthView = addMonths(view.value, offset);\r\n const matrix = buildMatrix(monthView, props.weekStartsOn);\r\n const value = props.modelValue;\r\n return h('div', { key: offset, style: { width: '240px' } }, [\r\n h(\r\n 'div',\r\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '6px' } },\r\n [\r\n offset === 0\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => {\r\n view.value = addMonths(view.value, -1);\r\n },\r\n style: { border: 'none', background: 'transparent', cursor: 'pointer', fontSize: '16px' },\r\n },\r\n '‹',\r\n )\r\n : h('span'),\r\n h('div', { style: { fontSize: '14px', fontWeight: 500 } }, monthView.toLocaleString(undefined, { month: 'long', year: 'numeric' })),\r\n offset === 1\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => {\r\n view.value = addMonths(view.value, 1);\r\n },\r\n style: { border: 'none', background: 'transparent', cursor: 'pointer', fontSize: '16px' },\r\n },\r\n '›',\r\n )\r\n : h('span'),\r\n ],\r\n ),\r\n h(\r\n 'div',\r\n { style: { display: 'grid', gridTemplateColumns: 'repeat(7, 1fr)', gap: '2px' } },\r\n [\r\n ...weekdays.value.map((wd) =>\r\n h('div', { key: wd, style: { textAlign: 'center', fontSize: '11px', color: t.colors.fgMuted, padding: '4px' } }, wd),\r\n ),\r\n ...matrix.flat().map((d) => {\r\n const inMonth = d.getMonth() === monthView.getMonth();\r\n const isStart = isSameDay(d, value?.start ?? null);\r\n const isEnd = isSameDay(d, value?.end ?? null);\r\n const inRangeBetween = value?.start && value?.end && dayKey(d) > dayKey(value.start) && dayKey(d) < dayKey(value.end);\r\n const isEndpoint = isStart || isEnd;\r\n const disabled = !isInRange(d);\r\n return h(\r\n 'button',\r\n {\r\n key: d.toISOString(),\r\n type: 'button',\r\n disabled: disabled || undefined,\r\n onClick: () => pickDay(d),\r\n style: {\r\n padding: '6px 0',\r\n fontSize: '13px',\r\n border: 'none',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n background: isEndpoint ? t.colors.intent.primary.solid : inRangeBetween ? t.colors.intent.primary.subtle : 'transparent',\r\n color: isEndpoint ? t.colors.intent.primary.solidFg : inMonth ? t.colors.fg : t.colors.fgSubtle,\r\n opacity: disabled ? 0.4 : 1,\r\n },\r\n },\r\n String(d.getDate()),\r\n );\r\n }),\r\n ],\r\n ),\r\n ]);\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const value = props.modelValue;\r\n const startText = value?.start ? props.format(value.start) : '';\r\n const endText = value?.end ? props.format(value.end) : '';\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n },\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '8px 12px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${props.isInvalid ? t.colors.intent.danger.solid : t.colors.border}`,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n fontSize: '14px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n [\r\n h('span', { style: { color: startText ? t.colors.fg : t.colors.fgMuted, minWidth: '90px' } }, startText || props.placeholder?.start || 'Start'),\r\n h('span', { style: { color: t.colors.fgMuted } }, '→'),\r\n h('span', { style: { color: endText ? t.colors.fg : t.colors.fgMuted, minWidth: '90px' } }, endText || props.placeholder?.end || 'End'),\r\n ],\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '6px',\r\n padding: '12px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n display: 'flex',\r\n gap: '16px',\r\n },\r\n },\r\n [renderMonth(0), renderMonth(1)],\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraCascaderOption {\r\n value: string;\r\n label: string;\r\n children?: ElvoraCascaderOption[];\r\n isDisabled?: boolean;\r\n}\r\n\r\nfunction findPath(options: ElvoraCascaderOption[], value: string[]): ElvoraCascaderOption[] {\r\n const path: ElvoraCascaderOption[] = [];\r\n let level = options;\r\n for (const v of value) {\r\n const found = level.find((o) => o.value === v);\r\n if (!found) break;\r\n path.push(found);\r\n level = found.children ?? [];\r\n }\r\n return path;\r\n}\r\n\r\nexport const ElvoraCascader = defineComponent({\r\n name: 'ElvoraCascader',\r\n props: {\r\n options: { type: Array as PropType<ElvoraCascaderOption[]>, required: true },\r\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\r\n placeholder: { type: String, default: 'Please select' },\r\n displaySeparator: { type: String, default: ' / ' },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string[]) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const activePath = ref<string[]>([...props.modelValue]);\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const columns = computed(() => {\r\n const cols: ElvoraCascaderOption[][] = [props.options];\r\n let level = props.options;\r\n for (const v of activePath.value) {\r\n const found = level.find((o) => o.value === v);\r\n if (!found || !found.children?.length) break;\r\n cols.push(found.children);\r\n level = found.children;\r\n }\r\n return cols;\r\n });\r\n\r\n const displayed = computed(() => {\r\n if (props.modelValue.length === 0) return '';\r\n return findPath(props.options, props.modelValue).map((o) => o.label).join(props.displaySeparator);\r\n });\r\n\r\n const onSelectAtLevel = (level: number, opt: ElvoraCascaderOption) => {\r\n if (opt.isDisabled) return;\r\n const nextPath = [...activePath.value.slice(0, level), opt.value];\r\n activePath.value = nextPath;\r\n if (!opt.children?.length) {\r\n emit('update:modelValue', nextPath);\r\n isOpen.value = false;\r\n }\r\n };\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n if (isOpen.value) activePath.value = [...props.modelValue];\r\n },\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '8px 12px',\r\n minWidth: '220px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${t.colors.border}`,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n color: displayed.value ? t.colors.fg : t.colors.fgMuted,\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n },\r\n },\r\n [\r\n h('span', { style: { flex: 1, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, displayed.value || props.placeholder),\r\n h('span', { style: { fontSize: '12px' } }, '▾'),\r\n ],\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'listbox',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '6px',\r\n display: 'flex',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n },\r\n },\r\n columns.value.map((col, i) =>\r\n h(\r\n 'ul',\r\n {\r\n key: i,\r\n style: {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: '4px',\r\n width: '160px',\r\n borderRight: i < columns.value.length - 1 ? `1px solid ${t.colors.border}` : 'none',\r\n maxHeight: '240px',\r\n overflowY: 'auto',\r\n },\r\n },\r\n col.map((opt) => {\r\n const isActive = activePath.value[i] === opt.value;\r\n const hasChildren = !!opt.children?.length;\r\n return h(\r\n 'li',\r\n {\r\n key: opt.value,\r\n role: 'option',\r\n 'aria-selected': isActive,\r\n 'aria-disabled': opt.isDisabled || undefined,\r\n onClick: () => onSelectAtLevel(i, opt),\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: '6px 10px',\r\n fontSize: '13px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: opt.isDisabled ? 'not-allowed' : 'pointer',\r\n background: isActive ? t.colors.intent.primary.subtle : 'transparent',\r\n color: opt.isDisabled ? t.colors.fgSubtle : t.colors.fg,\r\n },\r\n },\r\n [h('span', opt.label), hasChildren ? h('span', { style: { color: t.colors.fgMuted } }, '›') : null],\r\n );\r\n }),\r\n ),\r\n ),\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, onMounted, onUnmounted, ref, type PropType, type VNode } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTreeNode {\r\n value: string;\r\n label: string;\r\n children?: ElvoraTreeNode[];\r\n isDisabled?: boolean;\r\n}\r\n\r\nfunction findNode(nodes: ElvoraTreeNode[], v: string): ElvoraTreeNode | undefined {\r\n for (const n of nodes) {\r\n if (n.value === v) return n;\r\n if (n.children) {\r\n const f = findNode(n.children, v);\r\n if (f) return f;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport const ElvoraTreeSelect = defineComponent({\r\n name: 'ElvoraTreeSelect',\r\n props: {\r\n options: { type: Array as PropType<ElvoraTreeNode[]>, required: true },\r\n modelValue: { type: [String, Array] as PropType<string | string[]>, default: '' },\r\n multiple: { type: Boolean, default: false },\r\n placeholder: { type: String, default: 'Please select' },\r\n defaultExpanded: { type: Array as PropType<string[]>, default: () => [] },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string | string[]) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const isOpen = ref(false);\r\n const expanded = ref<Set<string>>(new Set(props.defaultExpanded));\r\n const wrap = ref<HTMLDivElement | null>(null);\r\n\r\n const toggleExpand = (v: string) => {\r\n const next = new Set(expanded.value);\r\n if (next.has(v)) next.delete(v);\r\n else next.add(v);\r\n expanded.value = next;\r\n };\r\n\r\n const isSelected = (v: string): boolean => {\r\n if (props.multiple) return Array.isArray(props.modelValue) && (props.modelValue as string[]).includes(v);\r\n return props.modelValue === v;\r\n };\r\n\r\n const onSelect = (n: ElvoraTreeNode) => {\r\n if (n.isDisabled) return;\r\n if (props.multiple) {\r\n const arr = Array.isArray(props.modelValue) ? [...(props.modelValue as string[])] : [];\r\n const idx = arr.indexOf(n.value);\r\n if (idx >= 0) arr.splice(idx, 1);\r\n else arr.push(n.value);\r\n emit('update:modelValue', arr);\r\n } else {\r\n emit('update:modelValue', n.value);\r\n isOpen.value = false;\r\n }\r\n };\r\n\r\n const renderNode = (node: ElvoraTreeNode, depth: number): VNode => {\r\n const t = theme.value;\r\n const hasChildren = !!node.children?.length;\r\n const isExp = expanded.value.has(node.value);\r\n const selected = isSelected(node.value);\r\n return h('div', { key: node.value }, [\r\n h(\r\n 'div',\r\n {\r\n onClick: () => onSelect(node),\r\n 'aria-selected': selected,\r\n 'aria-disabled': node.isDisabled || undefined,\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n padding: '4px 6px',\r\n paddingLeft: `${6 + depth * 14}px`,\r\n fontSize: '13px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: node.isDisabled ? 'not-allowed' : 'pointer',\r\n color: node.isDisabled ? t.colors.fgSubtle : t.colors.fg,\r\n background: selected ? t.colors.intent.primary.subtle : 'transparent',\r\n },\r\n },\r\n [\r\n hasChildren\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n tabindex: -1,\r\n onClick: (e: Event) => {\r\n e.stopPropagation();\r\n toggleExpand(node.value);\r\n },\r\n style: {\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n width: '16px',\r\n color: t.colors.fgMuted,\r\n },\r\n },\r\n isExp ? '▾' : '▸',\r\n )\r\n : h('span', { style: { width: '16px' } }),\r\n props.multiple\r\n ? h('input', {\r\n type: 'checkbox',\r\n checked: selected,\r\n disabled: node.isDisabled || undefined,\r\n onClick: (e: Event) => e.stopPropagation(),\r\n onChange: () => onSelect(node),\r\n })\r\n : null,\r\n h('span', node.label),\r\n ],\r\n ),\r\n hasChildren && isExp ? h('div', node.children!.map((c) => renderNode(c, depth + 1))) : null,\r\n ]);\r\n };\r\n\r\n const displayLabel = computed(() => {\r\n if (props.multiple) {\r\n const arr = Array.isArray(props.modelValue) ? props.modelValue : [];\r\n return (arr as string[]).map((v) => findNode(props.options, v)?.label).filter(Boolean).join(', ');\r\n }\r\n return typeof props.modelValue === 'string' && props.modelValue ? findNode(props.options, props.modelValue)?.label ?? '' : '';\r\n });\r\n\r\n const onDoc = (e: MouseEvent) => {\r\n if (!wrap.value?.contains(e.target as Node)) isOpen.value = false;\r\n };\r\n onMounted(() => document.addEventListener('mousedown', onDoc));\r\n onUnmounted(() => document.removeEventListener('mousedown', onDoc));\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h(\r\n 'div',\r\n {\r\n ref: (el: any) => {\r\n wrap.value = el;\r\n },\r\n style: { position: 'relative', display: 'inline-block', minWidth: '220px' },\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: props.isDisabled || undefined,\r\n onClick: () => {\r\n isOpen.value = !isOpen.value;\r\n },\r\n style: {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '8px 12px',\r\n borderRadius: `${t.radii.md}px`,\r\n border: `1px solid ${t.colors.border}`,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n fontSize: '14px',\r\n color: displayLabel.value ? t.colors.fg : t.colors.fgMuted,\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n textAlign: 'left',\r\n },\r\n },\r\n [\r\n h('span', { style: { flex: 1, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, displayLabel.value || props.placeholder),\r\n h('span', { style: { marginLeft: '8px' } }, '▾'),\r\n ],\r\n ),\r\n isOpen.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'tree',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n right: 0,\r\n marginTop: '6px',\r\n padding: '4px',\r\n maxHeight: '280px',\r\n overflowY: 'auto',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.popover,\r\n },\r\n },\r\n props.options.map((opt) => renderNode(opt, 0)),\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraMentionItem {\r\n value: string;\r\n label?: string;\r\n}\r\n\r\ninterface MentionState {\r\n active: boolean;\r\n start: number;\r\n query: string;\r\n}\r\n\r\nexport const ElvoraMentions = defineComponent({\r\n name: 'ElvoraMentions',\r\n props: {\r\n modelValue: { type: String, default: '' },\r\n options: { type: Array as PropType<ElvoraMentionItem[]>, default: () => [] },\r\n trigger: { type: String, default: '@' },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const state = ref<MentionState>({ active: false, start: -1, query: '' });\r\n const highlight = ref(0);\r\n const textarea = ref<HTMLTextAreaElement | null>(null);\r\n\r\n const suggestions = computed(() => {\r\n if (!state.value.active) return [];\r\n const q = state.value.query.toLowerCase();\r\n return props.options.filter((o) => o.value.toLowerCase().includes(q)).slice(0, 8);\r\n });\r\n\r\n const insertSelected = (item: ElvoraMentionItem) => {\r\n const ta = textarea.value;\r\n if (!ta || state.value.start < 0) return;\r\n const text = props.modelValue;\r\n const caret = ta.selectionStart ?? text.length;\r\n const before = text.slice(0, state.value.start);\r\n const after = text.slice(caret);\r\n const insertion = `${props.trigger}${item.value} `;\r\n const next = `${before}${insertion}${after}`;\r\n emit('update:modelValue', next);\r\n state.value = { active: false, start: -1, query: '' };\r\n setTimeout(() => {\r\n const c = before.length + insertion.length;\r\n ta.focus();\r\n ta.setSelectionRange(c, c);\r\n });\r\n };\r\n\r\n const onInput = (e: Event) => {\r\n const next = (e.target as HTMLTextAreaElement).value;\r\n emit('update:modelValue', next);\r\n const caret = textarea.value?.selectionStart ?? next.length;\r\n let i = caret - 1;\r\n while (i >= 0 && next[i] !== props.trigger && !/\\s/.test(next[i]!)) {\r\n i--;\r\n }\r\n if (i >= 0 && next[i] === props.trigger) {\r\n state.value = { active: true, start: i, query: next.slice(i + 1, caret) };\r\n highlight.value = 0;\r\n } else {\r\n state.value = { active: false, start: -1, query: '' };\r\n }\r\n };\r\n\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n if (!state.value.active) return;\r\n const list = suggestions.value;\r\n if (list.length === 0) return;\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n highlight.value = (highlight.value + 1) % list.length;\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n highlight.value = highlight.value === 0 ? list.length - 1 : highlight.value - 1;\r\n } else if (e.key === 'Enter' || e.key === 'Tab') {\r\n const item = list[highlight.value];\r\n if (item) {\r\n e.preventDefault();\r\n insertSelected(item);\r\n }\r\n } else if (e.key === 'Escape') {\r\n state.value = { active: false, start: -1, query: '' };\r\n }\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h('div', { style: { position: 'relative', display: 'inline-block', width: '100%' } }, [\r\n h('textarea', {\r\n ref: (el: any) => {\r\n textarea.value = el;\r\n },\r\n value: props.modelValue,\r\n disabled: props.isDisabled || undefined,\r\n onInput,\r\n onKeydown: onKeyDown,\r\n style: {\r\n width: '100%',\r\n minHeight: '84px',\r\n padding: '8px 12px',\r\n fontSize: '14px',\r\n color: t.colors.fg,\r\n background: props.isDisabled ? t.colors.intent.neutral.subtle : t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n outline: 'none',\r\n resize: 'vertical',\r\n },\r\n }),\r\n state.value.active && suggestions.value.length > 0\r\n ? h(\r\n 'ul',\r\n {\r\n role: 'listbox',\r\n style: {\r\n position: 'absolute',\r\n top: '100%',\r\n left: 0,\r\n marginTop: '4px',\r\n listStyle: 'none',\r\n padding: '4px',\r\n maxHeight: '220px',\r\n overflowY: 'auto',\r\n minWidth: '180px',\r\n background: t.colors.surfaceElevated,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n boxShadow: t.shadows.lg,\r\n zIndex: t.tokens.zIndex.dropdown,\r\n },\r\n },\r\n suggestions.value.map((item, i) =>\r\n h(\r\n 'li',\r\n {\r\n key: item.value,\r\n 'aria-selected': i === highlight.value,\r\n onMousedown: (e: Event) => {\r\n e.preventDefault();\r\n insertSelected(item);\r\n },\r\n onMouseenter: () => {\r\n highlight.value = i;\r\n },\r\n style: {\r\n padding: '6px 10px',\r\n fontSize: '14px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: 'pointer',\r\n background: i === highlight.value ? t.colors.intent.neutral.subtle : 'transparent',\r\n },\r\n },\r\n item.label ?? item.value,\r\n ),\r\n ),\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTransferItem {\r\n key: string;\r\n label: string;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ElvoraTransfer = defineComponent({\r\n name: 'ElvoraTransfer',\r\n props: {\r\n dataSource: { type: Array as PropType<ElvoraTransferItem[]>, required: true },\r\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\r\n titles: { type: Array as unknown as PropType<[string, string]>, default: undefined },\r\n showSearch: { type: Boolean, default: false },\r\n isDisabled: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string[]) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const leftSelected = ref<Set<string>>(new Set());\r\n const rightSelected = ref<Set<string>>(new Set());\r\n const leftQuery = ref('');\r\n const rightQuery = ref('');\r\n\r\n const leftItems = computed(() => props.dataSource.filter((it) => !props.modelValue.includes(it.key)));\r\n const rightItems = computed(() => props.dataSource.filter((it) => props.modelValue.includes(it.key)));\r\n\r\n const filteredLeft = computed(() => {\r\n const q = leftQuery.value.toLowerCase();\r\n return q ? leftItems.value.filter((it) => it.label.toLowerCase().includes(q)) : leftItems.value;\r\n });\r\n const filteredRight = computed(() => {\r\n const q = rightQuery.value.toLowerCase();\r\n return q ? rightItems.value.filter((it) => it.label.toLowerCase().includes(q)) : rightItems.value;\r\n });\r\n\r\n const allCheckedLeft = computed(() => filteredLeft.value.length > 0 && filteredLeft.value.every((it) => leftSelected.value.has(it.key)));\r\n const allCheckedRight = computed(() => filteredRight.value.length > 0 && filteredRight.value.every((it) => rightSelected.value.has(it.key)));\r\n\r\n const toggleLeft = (it: ElvoraTransferItem) => {\r\n if (it.isDisabled || props.isDisabled) return;\r\n const next = new Set(leftSelected.value);\r\n if (next.has(it.key)) next.delete(it.key);\r\n else next.add(it.key);\r\n leftSelected.value = next;\r\n };\r\n const toggleRight = (it: ElvoraTransferItem) => {\r\n if (it.isDisabled || props.isDisabled) return;\r\n const next = new Set(rightSelected.value);\r\n if (next.has(it.key)) next.delete(it.key);\r\n else next.add(it.key);\r\n rightSelected.value = next;\r\n };\r\n const toggleAllLeft = () => {\r\n const next = new Set(leftSelected.value);\r\n if (allCheckedLeft.value) filteredLeft.value.forEach((it) => next.delete(it.key));\r\n else filteredLeft.value.forEach((it) => !it.isDisabled && next.add(it.key));\r\n leftSelected.value = next;\r\n };\r\n const toggleAllRight = () => {\r\n const next = new Set(rightSelected.value);\r\n if (allCheckedRight.value) filteredRight.value.forEach((it) => next.delete(it.key));\r\n else filteredRight.value.forEach((it) => !it.isDisabled && next.add(it.key));\r\n rightSelected.value = next;\r\n };\r\n\r\n const moveRight = () => {\r\n const keys = leftItems.value.filter((it) => leftSelected.value.has(it.key) && !it.isDisabled).map((it) => it.key);\r\n if (keys.length === 0) return;\r\n emit('update:modelValue', [...props.modelValue, ...keys]);\r\n leftSelected.value = new Set();\r\n };\r\n const moveLeft = () => {\r\n const keys = new Set(props.modelValue);\r\n rightItems.value.forEach((it) => {\r\n if (rightSelected.value.has(it.key) && !it.isDisabled) keys.delete(it.key);\r\n });\r\n emit('update:modelValue', Array.from(keys));\r\n rightSelected.value = new Set();\r\n };\r\n\r\n const list = (title: string, items: ElvoraTransferItem[], selected: Set<string>, all: boolean, onToggle: (it: ElvoraTransferItem) => void, onAll: () => void, query: typeof leftQuery, count: number) => {\r\n const t = theme.value;\r\n return h(\r\n 'div',\r\n {\r\n style: {\r\n width: '220px',\r\n maxHeight: '320px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.md}px`,\r\n background: t.colors.surfaceElevated,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '8px 10px',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n },\r\n },\r\n [\r\n h('input', { type: 'checkbox', checked: all, onChange: onAll, disabled: props.isDisabled || undefined }),\r\n h('div', { style: { flex: 1, fontSize: '13px', fontWeight: 500 } }, title),\r\n h('div', { style: { fontSize: '12px', color: t.colors.fgMuted } }, `${selected.size} / ${count}`),\r\n ],\r\n ),\r\n props.showSearch\r\n ? h(\r\n 'div',\r\n { style: { padding: '8px', borderBottom: `1px solid ${t.colors.border}` } },\r\n h('input', {\r\n type: 'text',\r\n placeholder: 'Search',\r\n value: query.value,\r\n onInput: (e: Event) => {\r\n query.value = (e.target as HTMLInputElement).value;\r\n },\r\n disabled: props.isDisabled || undefined,\r\n style: {\r\n width: '100%',\r\n padding: '6px 8px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.sm}px`,\r\n fontSize: '13px',\r\n outline: 'none',\r\n },\r\n }),\r\n )\r\n : null,\r\n h(\r\n 'ul',\r\n { style: { listStyle: 'none', margin: 0, padding: '4px', flex: 1, overflowY: 'auto' } },\r\n items.map((it) => {\r\n const checked = selected.has(it.key);\r\n return h(\r\n 'li',\r\n {\r\n key: it.key,\r\n onClick: () => onToggle(it),\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '6px 8px',\r\n fontSize: '13px',\r\n borderRadius: `${t.radii.sm}px`,\r\n cursor: it.isDisabled || props.isDisabled ? 'not-allowed' : 'pointer',\r\n color: it.isDisabled ? t.colors.fgSubtle : t.colors.fg,\r\n background: checked ? t.colors.intent.primary.subtle : 'transparent',\r\n },\r\n },\r\n [\r\n h('input', {\r\n type: 'checkbox',\r\n checked,\r\n disabled: it.isDisabled || props.isDisabled || undefined,\r\n onClick: (e: Event) => e.stopPropagation(),\r\n onChange: () => onToggle(it),\r\n }),\r\n h('span', { style: { flex: 1 } }, it.label),\r\n ],\r\n );\r\n }),\r\n ),\r\n ],\r\n );\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h('div', { style: { display: 'flex', gap: '12px', alignItems: 'stretch' } }, [\r\n list(props.titles?.[0] ?? 'Source', filteredLeft.value, leftSelected.value, allCheckedLeft.value, toggleLeft, toggleAllLeft, leftQuery, leftItems.value.length),\r\n h(\r\n 'div',\r\n { style: { display: 'flex', flexDirection: 'column', justifyContent: 'center', gap: '8px' } },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: moveRight,\r\n disabled: props.isDisabled || leftSelected.value.size === 0,\r\n style: {\r\n padding: '6px 10px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.sm}px`,\r\n background: t.colors.surfaceElevated,\r\n cursor: 'pointer',\r\n color: t.colors.fg,\r\n opacity: props.isDisabled || leftSelected.value.size === 0 ? 0.4 : 1,\r\n },\r\n },\r\n '›',\r\n ),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: moveLeft,\r\n disabled: props.isDisabled || rightSelected.value.size === 0,\r\n style: {\r\n padding: '6px 10px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: `${t.radii.sm}px`,\r\n background: t.colors.surfaceElevated,\r\n cursor: 'pointer',\r\n color: t.colors.fg,\r\n opacity: props.isDisabled || rightSelected.value.size === 0 ? 0.4 : 1,\r\n },\r\n },\r\n '‹',\r\n ),\r\n ],\r\n ),\r\n list(\r\n props.titles?.[1] ?? 'Target',\r\n filteredRight.value,\r\n rightSelected.value,\r\n allCheckedRight.value,\r\n toggleRight,\r\n toggleAllRight,\r\n rightQuery,\r\n rightItems.value.length,\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import {\r\n computed,\r\n defineComponent,\r\n h,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport type ElvoraSortOrder = 'asc' | 'desc' | null;\r\n\r\nexport interface ElvoraTableColumn<Row = Record<string, unknown>> {\r\n key: string;\r\n title: string;\r\n dataIndex?: keyof Row | string;\r\n sortable?: boolean;\r\n sorter?: (a: Row, b: Row) => number;\r\n width?: number | string;\r\n align?: 'left' | 'center' | 'right';\r\n}\r\n\r\nfunction defaultCompare(a: unknown, b: unknown): number {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return -1;\r\n if (b == null) return 1;\r\n if (typeof a === 'number' && typeof b === 'number') return a - b;\r\n return String(a).localeCompare(String(b));\r\n}\r\n\r\nexport const ElvoraTable = defineComponent({\r\n name: 'ElvoraTable',\r\n props: {\r\n columns: { type: Array as PropType<ElvoraTableColumn[]>, required: true },\r\n dataSource: { type: Array as PropType<Record<string, unknown>[]>, required: true },\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n bordered: Boolean,\r\n striped: Boolean,\r\n },\r\n emits: ['rowClick'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const sortKey = ref<string | null>(null);\r\n const sortOrder = ref<ElvoraSortOrder>(null);\r\n\r\n const sorted = computed(() => {\r\n const key = sortKey.value;\r\n const order = sortOrder.value;\r\n if (!key || !order) return props.dataSource;\r\n const col = props.columns.find((c) => c.key === key);\r\n if (!col || !col.sortable) return props.dataSource;\r\n const arr = [...props.dataSource];\r\n const compare = col.sorter\r\n ? col.sorter\r\n : (a: Record<string, unknown>, b: Record<string, unknown>) => defaultCompare(a[col.dataIndex as string], b[col.dataIndex as string]);\r\n arr.sort((a, b) => (order === 'asc' ? compare(a, b) : -compare(a, b)));\r\n return arr;\r\n });\r\n\r\n const toggleSort = (col: ElvoraTableColumn) => {\r\n if (!col.sortable) return;\r\n if (sortKey.value !== col.key) {\r\n sortKey.value = col.key;\r\n sortOrder.value = 'asc';\r\n return;\r\n }\r\n if (sortOrder.value === 'asc') sortOrder.value = 'desc';\r\n else if (sortOrder.value === 'desc') {\r\n sortKey.value = null;\r\n sortOrder.value = null;\r\n } else sortOrder.value = 'asc';\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const cellPadding = props.size === 'sm' ? '6px 10px' : props.size === 'lg' ? '14px 18px' : '10px 14px';\r\n const tableStyle: CSSProperties = {\r\n width: '100%',\r\n borderCollapse: 'separate',\r\n borderSpacing: 0,\r\n fontSize: '14px',\r\n color: t.colors.fg,\r\n background: t.colors.surfaceElevated,\r\n border: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n borderRadius: '8px',\r\n overflow: 'hidden',\r\n };\r\n return h('table', { style: tableStyle }, [\r\n h(\r\n 'thead',\r\n { style: { background: t.colors.intent.neutral.subtle } as CSSProperties },\r\n h(\r\n 'tr',\r\n null,\r\n props.columns.map((col) =>\r\n h(\r\n 'th',\r\n {\r\n key: col.key,\r\n scope: 'col',\r\n onClick: () => toggleSort(col),\r\n style: {\r\n textAlign: col.align ?? 'left',\r\n padding: cellPadding,\r\n fontWeight: 600,\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n width: col.width,\r\n cursor: col.sortable ? 'pointer' : undefined,\r\n userSelect: 'none',\r\n } as CSSProperties,\r\n },\r\n [\r\n col.title,\r\n col.sortable\r\n ? h(\r\n 'span',\r\n {\r\n style: {\r\n marginLeft: '6px',\r\n color: sortKey.value === col.key ? t.colors.intent.primary.solid : t.colors.fgSubtle,\r\n },\r\n },\r\n sortKey.value === col.key\r\n ? sortOrder.value === 'asc'\r\n ? '↑'\r\n : sortOrder.value === 'desc'\r\n ? '↓'\r\n : '⇅'\r\n : '⇅',\r\n )\r\n : null,\r\n ],\r\n ),\r\n ),\r\n ),\r\n ),\r\n h(\r\n 'tbody',\r\n null,\r\n sorted.value.map((row, rowIndex) =>\r\n h(\r\n 'tr',\r\n {\r\n key: rowIndex,\r\n onClick: () => emit('rowClick', { row, index: rowIndex }),\r\n style: {\r\n background: props.striped && rowIndex % 2 === 1 ? t.colors.intent.neutral.subtle : undefined,\r\n cursor: 'pointer',\r\n },\r\n },\r\n props.columns.map((col) =>\r\n h(\r\n 'td',\r\n {\r\n key: col.key,\r\n style: {\r\n padding: cellPadding,\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n textAlign: col.align ?? 'left',\r\n } as CSSProperties,\r\n },\r\n String(col.dataIndex !== undefined ? row[col.dataIndex as string] ?? '' : ''),\r\n ),\r\n ),\r\n ),\r\n ),\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType, type VNode } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTreeNode {\r\n key: string;\r\n label: string;\r\n children?: ElvoraTreeNode[];\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ElvoraTree = defineComponent({\r\n name: 'ElvoraTree',\r\n props: {\r\n treeData: { type: Array as PropType<ElvoraTreeNode[]>, required: true },\r\n expandedKeys: { type: Array as PropType<string[]>, default: () => [] },\r\n selectedKeys: { type: Array as PropType<string[]>, default: () => [] },\r\n multiple: Boolean,\r\n },\r\n emits: ['update:expandedKeys', 'update:selectedKeys', 'nodeSelect'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const expanded = ref<Set<string>>(new Set(props.expandedKeys));\r\n const selected = ref<Set<string>>(new Set(props.selectedKeys));\r\n\r\n const toggleExpand = (key: string) => {\r\n const next = new Set(expanded.value);\r\n if (next.has(key)) next.delete(key);\r\n else next.add(key);\r\n expanded.value = next;\r\n emit('update:expandedKeys', Array.from(next));\r\n };\r\n\r\n const onClick = (node: ElvoraTreeNode) => {\r\n if (node.isDisabled) return;\r\n if (node.children?.length) toggleExpand(node.key);\r\n const sel = new Set(selected.value);\r\n if (props.multiple) {\r\n if (sel.has(node.key)) sel.delete(node.key);\r\n else sel.add(node.key);\r\n } else {\r\n sel.clear();\r\n sel.add(node.key);\r\n }\r\n selected.value = sel;\r\n emit('update:selectedKeys', Array.from(sel));\r\n emit('nodeSelect', node);\r\n };\r\n\r\n const renderNode = (node: ElvoraTreeNode, depth: number): VNode => {\r\n const t = theme.value;\r\n const hasChildren = !!node.children && node.children.length > 0;\r\n const isExpanded = expanded.value.has(node.key);\r\n const isSelected = selected.value.has(node.key);\r\n const rowStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '4px 6px',\r\n marginLeft: `${depth * 16}px`,\r\n borderRadius: '4px',\r\n background: isSelected ? t.colors.intent.primary.subtle : undefined,\r\n color: node.isDisabled ? t.colors.fgSubtle : t.colors.fg,\r\n cursor: node.isDisabled ? 'not-allowed' : 'pointer',\r\n };\r\n return h('li', { role: 'treeitem', 'aria-selected': isSelected }, [\r\n h('div', { style: rowStyle, onClick: () => onClick(node) }, [\r\n h('span', { style: { width: '14px' } }, hasChildren ? (isExpanded ? '▾' : '▸') : ''),\r\n h('span', null, node.label),\r\n ]),\r\n hasChildren && isExpanded\r\n ? h(\r\n 'ul',\r\n { role: 'group', style: { listStyle: 'none', margin: 0, padding: 0 } },\r\n node.children!.map((c) => renderNode(c, depth + 1)),\r\n )\r\n : null,\r\n ]);\r\n };\r\n\r\n return () =>\r\n h(\r\n 'div',\r\n { style: { color: theme.value.colors.fg } },\r\n h('ul', { role: 'tree', style: { listStyle: 'none', margin: 0, padding: 0 } }, props.treeData.map((n) => renderNode(n, 0))),\r\n );\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType, type VNode } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraList = defineComponent({\r\n name: 'ElvoraList',\r\n props: {\r\n dataSource: { type: Array as PropType<unknown[]>, required: true },\r\n header: String,\r\n footer: String,\r\n bordered: Boolean,\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n divided: { type: Boolean, default: true },\r\n emptyMessage: String,\r\n },\r\n setup(props, { slots }) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const padding = props.size === 'sm' ? '8px 12px' : props.size === 'lg' ? '16px 20px' : '12px 16px';\r\n const containerStyle: CSSProperties = {\r\n border: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n borderRadius: props.bordered ? '8px' : undefined,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n overflow: 'hidden',\r\n };\r\n const headerStyle: CSSProperties = {\r\n padding,\r\n fontWeight: 600,\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n };\r\n const footerStyle: CSSProperties = {\r\n padding,\r\n borderTop: `1px solid ${t.colors.border}`,\r\n color: t.colors.fgSubtle,\r\n };\r\n const items: VNode[] = [];\r\n if (props.dataSource.length === 0 && props.emptyMessage) {\r\n items.push(h('div', { style: { padding } }, props.emptyMessage));\r\n } else {\r\n props.dataSource.forEach((item, idx) => {\r\n const isLast = idx === props.dataSource.length - 1;\r\n items.push(\r\n h(\r\n 'div',\r\n {\r\n key: idx,\r\n role: 'listitem',\r\n style: {\r\n padding,\r\n borderBottom: props.divided && !isLast ? `1px solid ${t.colors.border}` : undefined,\r\n } as CSSProperties,\r\n },\r\n slots.item ? slots.item({ item, index: idx }) : String(item as unknown),\r\n ),\r\n );\r\n });\r\n }\r\n return h('div', { role: 'list', style: containerStyle }, [\r\n props.header ? h('div', { style: headerStyle }, props.header) : null,\r\n ...items,\r\n props.footer ? h('div', { style: footerStyle }, props.footer) : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraDescriptionItem {\r\n key: string;\r\n label: string;\r\n value: string;\r\n span?: number;\r\n}\r\n\r\nexport const ElvoraDescriptions = defineComponent({\r\n name: 'ElvoraDescriptions',\r\n props: {\r\n items: { type: Array as PropType<ElvoraDescriptionItem[]>, required: true },\r\n title: String,\r\n columns: { type: Number, default: 3 },\r\n layout: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\r\n bordered: Boolean,\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n return () => {\r\n const t = theme.value;\r\n const padding = props.size === 'sm' ? '6px 10px' : props.size === 'lg' ? '14px 18px' : '10px 14px';\r\n const grid: CSSProperties = {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${props.columns}, minmax(0, 1fr))`,\r\n border: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n borderRadius: props.bordered ? '8px' : undefined,\r\n overflow: 'hidden',\r\n };\r\n return h('div', { style: { color: t.colors.fg } as CSSProperties }, [\r\n props.title ? h('div', { style: { fontWeight: 600, marginBottom: '8px' } }, props.title) : null,\r\n h(\r\n 'div',\r\n { style: grid },\r\n props.items.map((item) => {\r\n const span = Math.min(item.span ?? 1, props.columns);\r\n if (props.layout === 'horizontal') {\r\n return h(\r\n 'div',\r\n {\r\n key: item.key,\r\n style: {\r\n gridColumn: `span ${span}`,\r\n display: 'grid',\r\n gridTemplateColumns: 'auto 1fr',\r\n borderTop: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n padding,\r\n background: props.bordered ? t.colors.intent.neutral.subtle : undefined,\r\n fontWeight: 500,\r\n borderRight: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n } as CSSProperties,\r\n },\r\n item.label,\r\n ),\r\n h('div', { style: { padding } as CSSProperties }, item.value),\r\n ],\r\n );\r\n }\r\n return h(\r\n 'div',\r\n {\r\n key: item.key,\r\n style: {\r\n gridColumn: `span ${span}`,\r\n padding,\r\n borderTop: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n borderRight: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n } as CSSProperties,\r\n },\r\n [\r\n h('div', { style: { fontWeight: 500, color: t.colors.fgSubtle, marginBottom: '4px' } }, item.label),\r\n h('div', null, item.value),\r\n ],\r\n );\r\n }),\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nfunction startOfMonth(d: Date) {\r\n return new Date(d.getFullYear(), d.getMonth(), 1);\r\n}\r\n\r\nfunction addMonths(d: Date, n: number) {\r\n return new Date(d.getFullYear(), d.getMonth() + n, 1);\r\n}\r\n\r\nfunction buildMatrix(view: Date, weekStartsOn: number): Date[] {\r\n const first = startOfMonth(view);\r\n const firstWeekday = (first.getDay() - weekStartsOn + 7) % 7;\r\n const start = new Date(first);\r\n start.setDate(first.getDate() - firstWeekday);\r\n const days: Date[] = [];\r\n for (let i = 0; i < 42; i++) {\r\n const day = new Date(start);\r\n day.setDate(start.getDate() + i);\r\n days.push(day);\r\n }\r\n return days;\r\n}\r\n\r\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return a.toDateString() === b.toDateString();\r\n}\r\n\r\nexport const ElvoraCalendar = defineComponent({\r\n name: 'ElvoraCalendar',\r\n props: {\r\n modelValue: { type: Date as unknown as PropType<Date | null>, default: null },\r\n weekStartsOn: { type: Number as PropType<0 | 1 | 2 | 3 | 4 | 5 | 6>, default: 0 },\r\n locale: String,\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const view = ref(startOfMonth(props.modelValue ?? new Date()));\r\n const matrix = computed(() => buildMatrix(view.value, props.weekStartsOn));\r\n const monthLabel = computed(() => view.value.toLocaleDateString(props.locale, { month: 'long', year: 'numeric' }));\r\n const weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\n const pick = (d: Date) => emit('update:modelValue', d);\r\n\r\n return () => {\r\n const t = theme.value;\r\n const rootStyle: CSSProperties = {\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n borderRadius: '8px',\r\n border: `1px solid ${t.colors.border}`,\r\n padding: '16px',\r\n minWidth: '280px',\r\n display: 'inline-block',\r\n };\r\n const headerStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n marginBottom: '12px',\r\n };\r\n const navBtn: CSSProperties = {\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n fontSize: '16px',\r\n color: t.colors.fg,\r\n };\r\n const grid: CSSProperties = {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(7, 1fr)',\r\n gap: '2px',\r\n };\r\n const today = new Date();\r\n return h('div', { style: rootStyle }, [\r\n h('div', { style: headerStyle }, [\r\n h('button', { type: 'button', style: navBtn, onClick: () => (view.value = addMonths(view.value, -1)) }, '‹'),\r\n h('div', { style: { fontWeight: 600 } }, monthLabel.value),\r\n h('button', { type: 'button', style: navBtn, onClick: () => (view.value = addMonths(view.value, 1)) }, '›'),\r\n ]),\r\n h(\r\n 'div',\r\n { style: grid },\r\n [\r\n ...weekdays.map((wd) =>\r\n h(\r\n 'div',\r\n { key: wd, style: { textAlign: 'center', fontSize: '12px', padding: '6px', fontWeight: 500 } as CSSProperties },\r\n wd,\r\n ),\r\n ),\r\n ...matrix.value.map((d) => {\r\n const selected = isSameDay(d, props.modelValue);\r\n const isToday = isSameDay(d, today);\r\n const inMonth = d.getMonth() === view.value.getMonth();\r\n const cellStyle: CSSProperties = {\r\n minHeight: '36px',\r\n padding: '4px 6px',\r\n border: 'none',\r\n borderRadius: '4px',\r\n cursor: 'pointer',\r\n background: selected\r\n ? t.colors.intent.primary.solid\r\n : isToday\r\n ? t.colors.intent.primary.subtle\r\n : 'transparent',\r\n color: selected\r\n ? t.colors.intent.primary.solidFg\r\n : !inMonth\r\n ? t.colors.fgSubtle\r\n : t.colors.fg,\r\n };\r\n return h('button', { key: d.toISOString(), type: 'button', style: cellStyle, onClick: () => pick(d) }, d.getDate());\r\n }),\r\n ],\r\n ),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraStatistic = defineComponent({\r\n name: 'ElvoraStatistic',\r\n props: {\r\n title: String,\r\n value: { type: [Number, String] as PropType<number | string>, required: true },\r\n precision: Number,\r\n prefix: String,\r\n suffix: String,\r\n groupSeparator: { type: Boolean, default: true },\r\n tone: { type: String as PropType<'default' | 'success' | 'danger' | 'warning' | 'primary'>, default: 'default' },\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n const formatted = computed(() => {\r\n if (typeof props.value === 'string') return props.value;\r\n if (typeof props.precision === 'number') {\r\n return props.groupSeparator\r\n ? props.value.toLocaleString(undefined, { minimumFractionDigits: props.precision, maximumFractionDigits: props.precision })\r\n : props.value.toFixed(props.precision);\r\n }\r\n return props.groupSeparator ? props.value.toLocaleString() : String(props.value);\r\n });\r\n return () => {\r\n const t = theme.value;\r\n const toneColor =\r\n props.tone === 'success'\r\n ? t.colors.intent.success.solid\r\n : props.tone === 'danger'\r\n ? t.colors.intent.danger.solid\r\n : props.tone === 'warning'\r\n ? t.colors.intent.warning.solid\r\n : props.tone === 'primary'\r\n ? t.colors.intent.primary.solid\r\n : t.colors.fg;\r\n const rowStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'baseline',\r\n gap: '4px',\r\n color: toneColor,\r\n fontSize: '28px',\r\n fontWeight: 600,\r\n lineHeight: '1.2',\r\n };\r\n return h('div', { style: { color: t.colors.fg } }, [\r\n props.title ? h('div', { style: { color: t.colors.fgSubtle, fontSize: '14px', marginBottom: '4px' } }, props.title) : null,\r\n h('div', { style: rowStyle }, [\r\n props.prefix ? h('span', { style: { fontSize: '16px' } }, props.prefix) : null,\r\n h('span', null, formatted.value),\r\n props.suffix ? h('span', { style: { fontSize: '16px' } }, props.suffix) : null,\r\n ]),\r\n ]);\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraCarousel = defineComponent({\r\n name: 'ElvoraCarousel',\r\n props: {\r\n items: { type: Array as PropType<string[]>, required: true },\r\n modelValue: Number,\r\n autoplay: { type: Number, default: 0 },\r\n arrows: { type: Boolean, default: true },\r\n dots: { type: Boolean, default: true },\r\n loop: { type: Boolean, default: true },\r\n height: { type: Number, default: 240 },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const internal = ref(props.modelValue ?? 0);\r\n let timer: ReturnType<typeof setInterval> | null = null;\r\n\r\n const setCurrent = (idx: number) => {\r\n const total = props.items.length;\r\n if (total === 0) return;\r\n const wrapped = props.loop ? (idx + total) % total : Math.max(0, Math.min(total - 1, idx));\r\n internal.value = wrapped;\r\n emit('update:modelValue', wrapped);\r\n };\r\n\r\n onMounted(() => {\r\n if (props.autoplay > 0) {\r\n timer = setInterval(() => setCurrent(internal.value + 1), props.autoplay);\r\n }\r\n });\r\n\r\n onUnmounted(() => {\r\n if (timer) clearInterval(timer);\r\n });\r\n\r\n return () => {\r\n const t = theme.value;\r\n const current = props.modelValue ?? internal.value;\r\n const total = Math.max(props.items.length, 1);\r\n const root: CSSProperties = {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n borderRadius: '8px',\r\n background: t.colors.surface,\r\n };\r\n const track: CSSProperties = {\r\n display: 'flex',\r\n width: `${total * 100}%`,\r\n height: `${props.height}px`,\r\n transform: `translateX(-${(current * 100) / total}%)`,\r\n transition: 'transform 320ms ease',\r\n };\r\n const slide: CSSProperties = {\r\n width: `${100 / total}%`,\r\n flex: '0 0 auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n };\r\n return h('div', { role: 'region', 'aria-roledescription': 'carousel', style: root }, [\r\n h(\r\n 'div',\r\n { style: track },\r\n props.items.map((item, idx) => h('div', { key: idx, role: 'group', 'aria-roledescription': 'slide', style: slide }, item)),\r\n ),\r\n props.arrows && props.items.length > 1\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Previous slide',\r\n onClick: () => setCurrent(current - 1),\r\n style: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '8px',\r\n transform: 'translateY(-50%)',\r\n border: 'none',\r\n background: 'rgba(0,0,0,0.4)',\r\n color: '#fff',\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n },\r\n '‹',\r\n )\r\n : null,\r\n props.arrows && props.items.length > 1\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Next slide',\r\n onClick: () => setCurrent(current + 1),\r\n style: {\r\n position: 'absolute',\r\n top: '50%',\r\n right: '8px',\r\n transform: 'translateY(-50%)',\r\n border: 'none',\r\n background: 'rgba(0,0,0,0.4)',\r\n color: '#fff',\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n },\r\n '›',\r\n )\r\n : null,\r\n props.dots\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'absolute',\r\n bottom: '8px',\r\n left: 0,\r\n right: 0,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n gap: '6px',\r\n } as CSSProperties,\r\n },\r\n props.items.map((_, idx) =>\r\n h('button', {\r\n key: idx,\r\n type: 'button',\r\n 'aria-label': `Go to slide ${idx + 1}`,\r\n 'aria-current': idx === current,\r\n onClick: () => setCurrent(idx),\r\n style: {\r\n width: '8px',\r\n height: '8px',\r\n borderRadius: '50%',\r\n border: 'none',\r\n background: idx === current ? t.colors.intent.primary.solid : t.colors.intent.neutral.subtle,\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n }),\r\n ),\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraImage = defineComponent({\r\n name: 'ElvoraImage',\r\n props: {\r\n src: { type: String, required: true },\r\n alt: { type: String, default: '' },\r\n fallback: String,\r\n placeholder: String,\r\n preview: Boolean,\r\n width: [Number, String] as PropType<number | string>,\r\n height: [Number, String] as PropType<number | string>,\r\n fit: { type: String as PropType<'cover' | 'contain' | 'fill' | 'none' | 'scale-down'>, default: 'cover' },\r\n rounded: Boolean,\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n const loaded = ref(false);\r\n const errored = ref(false);\r\n const showPreview = ref(false);\r\n const actualSrc = computed(() => (errored.value && props.fallback ? props.fallback : props.src));\r\n return () => {\r\n const t = theme.value;\r\n const wrapperStyle: CSSProperties = {\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\r\n height: typeof props.height === 'number' ? `${props.height}px` : props.height,\r\n borderRadius: props.rounded ? '8px' : undefined,\r\n overflow: 'hidden',\r\n background: t.colors.intent.neutral.subtle,\r\n };\r\n return h('div', null, [\r\n h('div', { style: wrapperStyle }, [\r\n !loaded.value && !errored.value && props.placeholder\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'absolute',\r\n inset: '0',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n } as CSSProperties,\r\n },\r\n props.placeholder,\r\n )\r\n : null,\r\n errored.value && !props.fallback\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'absolute',\r\n inset: '0',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: t.colors.fgSubtle,\r\n } as CSSProperties,\r\n },\r\n '×',\r\n )\r\n : h('img', {\r\n src: actualSrc.value,\r\n alt: props.alt,\r\n onLoad: () => (loaded.value = true),\r\n onError: () => (errored.value = true),\r\n onClick: () => {\r\n if (props.preview) showPreview.value = true;\r\n },\r\n style: {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: props.fit,\r\n display: 'block',\r\n cursor: props.preview ? 'zoom-in' : undefined,\r\n } as CSSProperties,\r\n }),\r\n ]),\r\n props.preview && showPreview.value\r\n ? h(\r\n 'div',\r\n {\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n onClick: () => (showPreview.value = false),\r\n style: {\r\n position: 'fixed',\r\n inset: '0',\r\n background: 'rgba(0,0,0,0.85)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 1400,\r\n cursor: 'zoom-out',\r\n } as CSSProperties,\r\n },\r\n h('img', { src: actualSrc.value, alt: props.alt, style: { maxWidth: '90vw', maxHeight: '90vh' } }),\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport type ElvoraTimelineStatus = 'default' | 'success' | 'danger' | 'warning' | 'info' | 'primary';\r\n\r\nexport interface ElvoraTimelineItem {\r\n key: string;\r\n content: string;\r\n label?: string;\r\n status?: ElvoraTimelineStatus;\r\n}\r\n\r\nexport const ElvoraTimeline = defineComponent({\r\n name: 'ElvoraTimeline',\r\n props: {\r\n items: { type: Array as PropType<ElvoraTimelineItem[]>, required: true },\r\n reverse: Boolean,\r\n },\r\n setup(props) {\r\n const theme = useTheme();\r\n const list = computed(() => (props.reverse ? [...props.items].reverse() : props.items));\r\n return () => {\r\n const t = theme.value;\r\n const colorFor = (status?: ElvoraTimelineStatus) => {\r\n switch (status) {\r\n case 'success':\r\n return t.colors.intent.success.solid;\r\n case 'danger':\r\n return t.colors.intent.danger.solid;\r\n case 'warning':\r\n return t.colors.intent.warning.solid;\r\n case 'info':\r\n return t.colors.intent.info.solid;\r\n case 'primary':\r\n return t.colors.intent.primary.solid;\r\n default:\r\n return t.colors.intent.neutral.solid;\r\n }\r\n };\r\n return h(\r\n 'ol',\r\n { style: { listStyle: 'none', margin: 0, padding: 0 } },\r\n list.value.map((item, idx) => {\r\n const isLast = idx === list.value.length - 1;\r\n return h(\r\n 'li',\r\n { key: item.key, style: { display: 'flex', gap: '12px', paddingBottom: isLast ? 0 : '20px' } as CSSProperties },\r\n [\r\n h('div', { style: { display: 'flex', flexDirection: 'column', alignItems: 'center' } as CSSProperties }, [\r\n h('div', { style: { width: '12px', height: '12px', borderRadius: '50%', background: colorFor(item.status) } as CSSProperties }),\r\n !isLast ? h('div', { style: { flex: 1, width: '2px', background: t.colors.border, marginTop: '4px' } as CSSProperties }) : null,\r\n ]),\r\n h('div', { style: { flex: 1 } as CSSProperties }, [\r\n item.label ? h('div', { style: { color: t.colors.fgSubtle, marginBottom: '2px' } }, item.label) : null,\r\n h('div', { style: { color: t.colors.fg } }, item.content),\r\n ]),\r\n ],\r\n );\r\n }),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraCollapseItem {\r\n key: string;\r\n header: string;\r\n content: string;\r\n extra?: string;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ElvoraCollapse = defineComponent({\r\n name: 'ElvoraCollapse',\r\n props: {\r\n items: { type: Array as PropType<ElvoraCollapseItem[]>, required: true },\r\n activeKeys: { type: Array as PropType<string[]>, default: () => [] },\r\n accordion: Boolean,\r\n bordered: { type: Boolean, default: true },\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n },\r\n emits: ['update:activeKeys'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const internal = ref<Set<string>>(new Set(props.activeKeys));\r\n\r\n const togglePanel = (key: string) => {\r\n const next = new Set(internal.value);\r\n if (next.has(key)) next.delete(key);\r\n else if (props.accordion) {\r\n next.clear();\r\n next.add(key);\r\n } else next.add(key);\r\n internal.value = next;\r\n emit('update:activeKeys', Array.from(next));\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const padding = props.size === 'sm' ? '8px 12px' : props.size === 'lg' ? '16px 20px' : '12px 16px';\r\n const rootStyle: CSSProperties = {\r\n border: props.bordered ? `1px solid ${t.colors.border}` : undefined,\r\n borderRadius: props.bordered ? '8px' : undefined,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n overflow: 'hidden',\r\n };\r\n return h(\r\n 'div',\r\n { style: rootStyle },\r\n props.items.map((item, idx) => {\r\n const isOpen = internal.value.has(item.key);\r\n const isLast = idx === props.items.length - 1;\r\n const headerStyle: CSSProperties = {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding,\r\n background: 'transparent',\r\n color: 'inherit',\r\n border: 'none',\r\n cursor: item.isDisabled ? 'not-allowed' : 'pointer',\r\n textAlign: 'left',\r\n fontSize: '14px',\r\n opacity: item.isDisabled ? 0.6 : 1,\r\n borderBottom: !isLast || isOpen ? `1px solid ${t.colors.border}` : undefined,\r\n };\r\n return h('div', { key: item.key }, [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n disabled: item.isDisabled,\r\n 'aria-expanded': isOpen,\r\n onClick: () => togglePanel(item.key),\r\n style: headerStyle,\r\n },\r\n [\r\n h('span', { style: { width: '14px' } }, isOpen ? '▾' : '▸'),\r\n h('span', { style: { flex: 1, fontWeight: 500 } }, item.header),\r\n item.extra ? h('span', { style: { color: t.colors.fgSubtle } }, item.extra) : null,\r\n ],\r\n ),\r\n isOpen\r\n ? h(\r\n 'div',\r\n {\r\n role: 'region',\r\n style: {\r\n padding,\r\n borderBottom: !isLast ? `1px solid ${t.colors.border}` : undefined,\r\n background: t.colors.surface,\r\n } as CSSProperties,\r\n },\r\n item.content,\r\n )\r\n : null,\r\n ]);\r\n }),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type PropType } from 'vue';\r\nimport { ElvoraCollapse, type ElvoraCollapseItem } from './Collapse';\r\n\r\nexport type ElvoraAccordionItem = ElvoraCollapseItem;\r\n\r\nexport const ElvoraAccordion = defineComponent({\r\n name: 'ElvoraAccordion',\r\n props: {\r\n items: { type: Array as PropType<ElvoraAccordionItem[]>, required: true },\r\n activeKeys: { type: Array as PropType<string[]>, default: () => [] },\r\n bordered: { type: Boolean, default: true },\r\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: 'md' },\r\n },\r\n emits: ['update:activeKeys'],\r\n setup(props, { emit }) {\r\n return () =>\r\n h(ElvoraCollapse, {\r\n items: props.items,\r\n activeKeys: props.activeKeys,\r\n bordered: props.bordered,\r\n size: props.size,\r\n accordion: true,\r\n 'onUpdate:activeKeys': (keys: string[]) => emit('update:activeKeys', keys),\r\n });\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraTourStep {\r\n target?: string;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport const ElvoraTour = defineComponent({\r\n name: 'ElvoraTour',\r\n props: {\r\n open: Boolean,\r\n steps: { type: Array as PropType<ElvoraTourStep[]>, required: true },\r\n modelValue: { type: Number, default: 0 },\r\n mask: { type: Boolean, default: true },\r\n finishLabel: { type: String, default: 'Finish' },\r\n },\r\n emits: ['update:open', 'update:modelValue'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const internal = ref(props.modelValue);\r\n\r\n const goTo = (next: number) => {\r\n if (next < 0 || next >= props.steps.length) return;\r\n internal.value = next;\r\n emit('update:modelValue', next);\r\n };\r\n\r\n const close = () => emit('update:open', false);\r\n\r\n return () => {\r\n if (!props.open) return null;\r\n const t = theme.value;\r\n const current = props.modelValue ?? internal.value;\r\n const step = props.steps[current];\r\n if (!step) return null;\r\n const maskStyle: CSSProperties = {\r\n position: 'fixed',\r\n inset: '0',\r\n background: 'rgba(0,0,0,0.55)',\r\n zIndex: 1400,\r\n };\r\n const popoverStyle: CSSProperties = {\r\n position: 'fixed',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n minWidth: '280px',\r\n maxWidth: '360px',\r\n zIndex: 1402,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: '8px',\r\n padding: '16px',\r\n boxShadow: t.shadows.lg,\r\n };\r\n return h('div', null, [\r\n props.mask ? h('div', { 'aria-hidden': 'true', style: maskStyle, onClick: close }) : null,\r\n h('div', { role: 'dialog', 'aria-modal': 'true', style: popoverStyle }, [\r\n h(\r\n 'div',\r\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' } as CSSProperties },\r\n [\r\n h('div', { style: { fontWeight: 600 } }, step.title),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Close tour',\r\n onClick: close,\r\n style: { border: 'none', background: 'transparent', cursor: 'pointer', fontSize: '18px', color: t.colors.fg } as CSSProperties,\r\n },\r\n '×',\r\n ),\r\n ],\r\n ),\r\n step.description ? h('div', { style: { color: t.colors.fgSubtle, marginBottom: '12px' } }, step.description) : null,\r\n h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' } as CSSProperties }, [\r\n h('div', { style: { color: t.colors.fgSubtle, fontSize: '12px' } }, `${current + 1} / ${props.steps.length}`),\r\n h('div', { style: { display: 'flex', gap: '8px' } as CSSProperties }, [\r\n current > 0\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => goTo(current - 1),\r\n style: {\r\n padding: '6px 10px',\r\n borderRadius: '6px',\r\n border: `1px solid ${t.colors.border}`,\r\n background: 'transparent',\r\n color: t.colors.fg,\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n },\r\n 'Previous',\r\n )\r\n : null,\r\n current < props.steps.length - 1\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: () => goTo(current + 1),\r\n style: {\r\n padding: '6px 10px',\r\n borderRadius: '6px',\r\n border: 'none',\r\n background: t.colors.intent.primary.solid,\r\n color: t.colors.intent.primary.solidFg,\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n },\r\n 'Next',\r\n )\r\n : h(\r\n 'button',\r\n {\r\n type: 'button',\r\n onClick: close,\r\n style: {\r\n padding: '6px 10px',\r\n borderRadius: '6px',\r\n border: 'none',\r\n background: t.colors.intent.primary.solid,\r\n color: t.colors.intent.primary.solidFg,\r\n cursor: 'pointer',\r\n } as CSSProperties,\r\n },\r\n props.finishLabel,\r\n ),\r\n ]),\r\n ]),\r\n ]),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport type ElvoraFloatButtonTone = 'primary' | 'neutral' | 'danger' | 'success';\r\n\r\nexport const ElvoraFloatButton = defineComponent({\r\n name: 'ElvoraFloatButton',\r\n props: {\r\n label: String,\r\n size: { type: Number, default: 56 },\r\n right: { type: Number, default: 24 },\r\n bottom: { type: Number, default: 24 },\r\n tone: { type: String as PropType<ElvoraFloatButtonTone>, default: 'primary' },\r\n extended: Boolean,\r\n isDisabled: Boolean,\r\n ariaLabel: String,\r\n },\r\n emits: ['press'],\r\n setup(props, { slots, emit }) {\r\n return () => {\r\n const t = useTheme().value;\r\n const intent =\r\n props.tone === 'neutral'\r\n ? t.colors.intent.neutral\r\n : props.tone === 'danger'\r\n ? t.colors.intent.danger\r\n : props.tone === 'success'\r\n ? t.colors.intent.success\r\n : t.colors.intent.primary;\r\n const style: CSSProperties = {\r\n position: 'fixed',\r\n right: `${props.right}px`,\r\n bottom: `${props.bottom}px`,\r\n height: `${props.size}px`,\r\n minWidth: `${props.size}px`,\r\n padding: props.extended ? '0 20px' : 0,\r\n borderRadius: props.extended ? `${props.size / 2}px` : '50%',\r\n background: intent.solid,\r\n color: intent.solidFg,\r\n boxShadow: t.shadows.lg,\r\n border: 'none',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '8px',\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n fontSize: '14px',\r\n fontWeight: 500,\r\n };\r\n return h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': props.ariaLabel ?? props.label,\r\n disabled: props.isDisabled,\r\n onClick: () => emit('press'),\r\n style,\r\n },\r\n [slots.default?.(), props.extended && props.label ? h('span', null, props.label) : null],\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\n\r\nfunction escapeXml(input: string): string {\r\n return input\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&apos;');\r\n}\r\n\r\nexport const ElvoraWatermark = defineComponent({\r\n name: 'ElvoraWatermark',\r\n props: {\r\n content: { type: [String, Array] as PropType<string | string[]>, required: true },\r\n font: { type: String, default: '14px sans-serif' },\r\n fontSize: { type: Number, default: 14 },\r\n color: { type: String, default: 'rgba(0,0,0,0.15)' },\r\n rotate: { type: Number, default: -22 },\r\n gapX: { type: Number, default: 240 },\r\n gapY: { type: Number, default: 180 },\r\n },\r\n setup(props, { slots }) {\r\n const dataUri = computed(() => {\r\n const lines = Array.isArray(props.content) ? props.content : [props.content];\r\n const fontSize = props.fontSize;\r\n const lineHeight = fontSize * 1.4;\r\n const padding = 20;\r\n const textHeight = lines.length * lineHeight + padding * 2;\r\n const maxLen = lines.reduce((m, c) => Math.max(m, c.length), 0);\r\n const textWidth = maxLen * fontSize * 0.6 + padding * 2;\r\n const width = Math.max(props.gapX, textWidth);\r\n const height = Math.max(props.gapY, textHeight);\r\n const cx = width / 2;\r\n const cy = height / 2;\r\n const tspans = lines\r\n .map(\r\n (line, idx) =>\r\n `<tspan x=\"${cx}\" dy=\"${idx === 0 ? 0 : lineHeight}\">${escapeXml(line)}</tspan>`,\r\n )\r\n .join('');\r\n const svg = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">\r\n <g transform=\"rotate(${props.rotate} ${cx} ${cy})\" font=\"${props.font}\" font-size=\"${fontSize}\" fill=\"${props.color}\" text-anchor=\"middle\">\r\n <text x=\"${cx}\" y=\"${cy - ((lines.length - 1) * lineHeight) / 2}\" dominant-baseline=\"middle\">${tspans}</text>\r\n </g>\r\n</svg>`;\r\n return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\r\n });\r\n return () => {\r\n const style: CSSProperties = {\r\n position: 'relative',\r\n backgroundImage: `url(\"${dataUri.value}\")`,\r\n backgroundRepeat: 'repeat',\r\n backgroundSize: `${props.gapX}px ${props.gapY}px`,\r\n };\r\n return h('div', { style }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, type PropType } from 'vue';\r\nimport { generateQrMatrix, type ErrorCorrection } from '@elvora/core';\r\n\r\nexport const ElvoraQrCode = defineComponent({\r\n name: 'ElvoraQrCode',\r\n props: {\r\n value: { type: String, required: true },\r\n size: { type: Number, default: 160 },\r\n level: { type: String as PropType<ErrorCorrection>, default: 'M' },\r\n foreground: { type: String, default: '#000' },\r\n background: { type: String, default: '#fff' },\r\n ariaLabel: String,\r\n },\r\n setup(props) {\r\n const matrix = computed(() => generateQrMatrix(props.value, props.level));\r\n return () => {\r\n const m = matrix.value;\r\n const rects: ReturnType<typeof h>[] = [];\r\n for (let r = 0; r < m.size; r++) {\r\n for (let c = 0; c < m.size; c++) {\r\n if (m.modules[r]?.[c]) {\r\n rects.push(\r\n h('rect', {\r\n x: c,\r\n y: r,\r\n width: 1,\r\n height: 1,\r\n fill: props.foreground,\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n return h(\r\n 'svg',\r\n {\r\n width: props.size,\r\n height: props.size,\r\n viewBox: `0 0 ${m.size} ${m.size}`,\r\n role: 'img',\r\n 'aria-label': props.ariaLabel ?? 'QR code',\r\n 'shape-rendering': 'crispEdges',\r\n },\r\n [\r\n h('rect', { x: 0, y: 0, width: m.size, height: m.size, fill: props.background }),\r\n ...rects,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraSplitter = defineComponent({\r\n name: 'ElvoraSplitter',\r\n props: {\r\n direction: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\r\n modelValue: { type: Number, default: 0.5 },\r\n minRatio: { type: Number, default: 0.1 },\r\n maxRatio: { type: Number, default: 0.9 },\r\n handleSize: { type: Number, default: 6 },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit }) {\r\n const containerRef = ref<HTMLDivElement | null>(null);\r\n const split = ref(props.modelValue);\r\n\r\n const setSplit = (next: number) => {\r\n const clamped = Math.min(props.maxRatio, Math.max(props.minRatio, next));\r\n split.value = clamped;\r\n emit('update:modelValue', clamped);\r\n };\r\n\r\n const startDrag = (event: PointerEvent) => {\r\n const startCoord = props.direction === 'horizontal' ? event.clientX : event.clientY;\r\n const startSplit = split.value;\r\n const move = (e: PointerEvent) => {\r\n const container = containerRef.value;\r\n if (!container) return;\r\n const rect = container.getBoundingClientRect();\r\n const total = props.direction === 'horizontal' ? rect.width : rect.height;\r\n if (!total) return;\r\n const delta = (props.direction === 'horizontal' ? e.clientX : e.clientY) - startCoord;\r\n setSplit(startSplit + delta / total);\r\n };\r\n const up = () => {\r\n window.removeEventListener('pointermove', move);\r\n window.removeEventListener('pointerup', up);\r\n };\r\n window.addEventListener('pointermove', move);\r\n window.addEventListener('pointerup', up);\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n const step = event.shiftKey ? 0.1 : 0.02;\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n setSplit(split.value - step);\r\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n setSplit(split.value + step);\r\n }\r\n };\r\n\r\n return () => {\r\n const t = useTheme().value;\r\n const isH = props.direction === 'horizontal';\r\n const rootStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: isH ? 'row' : 'column',\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden',\r\n };\r\n const handleStyle: CSSProperties = {\r\n width: isH ? `${props.handleSize}px` : '100%',\r\n height: isH ? '100%' : `${props.handleSize}px`,\r\n background: t.colors.border,\r\n cursor: isH ? 'col-resize' : 'row-resize',\r\n flex: '0 0 auto',\r\n };\r\n return h('div', { ref: containerRef as unknown as string, style: rootStyle }, [\r\n h('div', { style: { flexBasis: `${split.value * 100}%`, overflow: 'auto' } as CSSProperties }, slots.first?.()),\r\n h('div', {\r\n role: 'separator',\r\n tabindex: 0,\r\n 'aria-orientation': isH ? 'vertical' : 'horizontal',\r\n 'aria-valuemin': 0,\r\n 'aria-valuemax': 100,\r\n 'aria-valuenow': Math.round(split.value * 100),\r\n onPointerdown: startDrag,\r\n onKeydown: onKeyDown,\r\n style: handleStyle,\r\n }),\r\n h('div', { style: { flex: '1', overflow: 'auto' } as CSSProperties }, slots.second?.()),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, onMounted, onUnmounted, ref, type CSSProperties } from 'vue';\r\n\r\nexport const ElvoraAffix = defineComponent({\r\n name: 'ElvoraAffix',\r\n props: {\r\n offsetTop: Number,\r\n offsetBottom: Number,\r\n },\r\n emits: ['change'],\r\n setup(props, { slots, emit }) {\r\n const placeholderRef = ref<HTMLDivElement | null>(null);\r\n const wrapperRef = ref<HTMLDivElement | null>(null);\r\n const affixed = ref(false);\r\n const contentSize = ref<{ width: number; height: number } | null>(null);\r\n\r\n const update = () => {\r\n const placeholder = placeholderRef.value;\r\n if (!placeholder) return;\r\n const rect = placeholder.getBoundingClientRect();\r\n let shouldAffix = false;\r\n if (props.offsetTop !== undefined && rect.top <= props.offsetTop) shouldAffix = true;\r\n if (props.offsetBottom !== undefined && rect.bottom >= window.innerHeight - props.offsetBottom) shouldAffix = true;\r\n if (shouldAffix !== affixed.value) {\r\n affixed.value = shouldAffix;\r\n emit('change', shouldAffix);\r\n }\r\n if (!contentSize.value) {\r\n const wrapper = wrapperRef.value;\r\n if (wrapper) contentSize.value = { width: wrapper.offsetWidth, height: wrapper.offsetHeight };\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n if (typeof window === 'undefined') return;\r\n update();\r\n window.addEventListener('scroll', update, true);\r\n window.addEventListener('resize', update);\r\n });\r\n\r\n onUnmounted(() => {\r\n if (typeof window === 'undefined') return;\r\n window.removeEventListener('scroll', update, true);\r\n window.removeEventListener('resize', update);\r\n });\r\n\r\n return () => {\r\n const placeholderStyle: CSSProperties = {\r\n width: '100%',\r\n height: affixed.value && contentSize.value ? `${contentSize.value.height}px` : undefined,\r\n };\r\n const wrapperStyle: CSSProperties = affixed.value\r\n ? {\r\n position: 'fixed',\r\n width: contentSize.value ? `${contentSize.value.width}px` : undefined,\r\n top: props.offsetTop !== undefined ? `${props.offsetTop}px` : undefined,\r\n bottom: props.offsetBottom !== undefined ? `${props.offsetBottom}px` : undefined,\r\n zIndex: 10,\r\n }\r\n : {};\r\n return h('div', { ref: placeholderRef as unknown as string, style: placeholderStyle }, [\r\n h('div', { ref: wrapperRef as unknown as string, style: wrapperStyle }, slots.default?.()),\r\n ]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraSpeedDialAction {\r\n key: string;\r\n label: string;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ElvoraSpeedDial = defineComponent({\r\n name: 'ElvoraSpeedDial',\r\n props: {\r\n actions: { type: Array as PropType<ElvoraSpeedDialAction[]>, default: () => [] },\r\n right: { type: Number, default: 24 },\r\n bottom: { type: Number, default: 24 },\r\n direction: { type: String as PropType<'up' | 'down' | 'left' | 'right'>, default: 'up' },\r\n ariaLabel: String,\r\n },\r\n emits: ['action', 'open-change'],\r\n setup(props, { slots, emit }) {\r\n const open = ref(false);\r\n const toggle = () => {\r\n open.value = !open.value;\r\n emit('open-change', open.value);\r\n };\r\n return () => {\r\n const t = useTheme().value;\r\n const trigger = h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': props.ariaLabel ?? 'Open menu',\r\n onClick: toggle,\r\n style: {\r\n position: 'fixed',\r\n right: `${props.right}px`,\r\n bottom: `${props.bottom}px`,\r\n width: '56px',\r\n height: '56px',\r\n borderRadius: '50%',\r\n background: t.colors.intent.primary.solid,\r\n color: t.colors.intent.primary.solidFg,\r\n border: 'none',\r\n cursor: 'pointer',\r\n boxShadow: t.shadows.lg,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n } as CSSProperties,\r\n },\r\n slots.default?.(),\r\n );\r\n const actions = open.value\r\n ? props.actions.map((action, idx) => {\r\n const offset = (idx + 1) * 64;\r\n const base: CSSProperties = {\r\n position: 'fixed',\r\n padding: '0 14px',\r\n height: '44px',\r\n borderRadius: '22px',\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n border: `1px solid ${t.colors.border}`,\r\n boxShadow: t.shadows.md,\r\n cursor: 'pointer',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n };\r\n const pos: CSSProperties =\r\n props.direction === 'up'\r\n ? { right: `${props.right}px`, bottom: `${props.bottom + offset}px` }\r\n : props.direction === 'down'\r\n ? { right: `${props.right}px`, top: `${props.bottom + offset}px` }\r\n : props.direction === 'left'\r\n ? { bottom: `${props.bottom}px`, right: `${props.right + offset}px` }\r\n : { bottom: `${props.bottom}px`, left: `${props.right + offset}px` };\r\n return h(\r\n 'button',\r\n {\r\n key: action.key,\r\n type: 'button',\r\n 'aria-label': action.label,\r\n disabled: action.isDisabled,\r\n onClick: () => {\r\n emit('action', action);\r\n open.value = false;\r\n emit('open-change', false);\r\n },\r\n style: { ...base, ...pos },\r\n },\r\n action.label,\r\n );\r\n })\r\n : [];\r\n return h('div', { role: 'group', 'aria-label': props.ariaLabel }, [...actions, trigger]);\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraBackdrop = defineComponent({\r\n name: 'ElvoraBackdrop',\r\n props: {\r\n open: Boolean,\r\n tint: String,\r\n invisible: Boolean,\r\n },\r\n emits: ['close'],\r\n setup(props, { slots, emit }) {\r\n return () => {\r\n if (!props.open) return null;\r\n const t = useTheme().value;\r\n const style: CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: props.invisible ? 'transparent' : props.tint ?? 'rgba(0,0,0,0.55)',\r\n zIndex: t.tokens.zIndex.overlay,\r\n };\r\n return h(\r\n 'div',\r\n {\r\n role: 'presentation',\r\n onClick: () => emit('close'),\r\n style,\r\n },\r\n slots.default?.(),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraImageListItem {\r\n key: string;\r\n src?: string;\r\n alt?: string;\r\n caption?: string;\r\n cols?: number;\r\n rows?: number;\r\n}\r\n\r\nexport const ElvoraImageList = defineComponent({\r\n name: 'ElvoraImageList',\r\n props: {\r\n items: { type: Array as PropType<ElvoraImageListItem[]>, default: () => [] },\r\n cols: { type: Number, default: 3 },\r\n gap: { type: Number, default: 8 },\r\n rowHeight: { type: Number, default: 160 },\r\n },\r\n setup(props) {\r\n return () => {\r\n const t = useTheme().value;\r\n const root: CSSProperties = {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${props.cols}, minmax(0, 1fr))`,\r\n gridAutoRows: `${props.rowHeight}px`,\r\n gap: `${props.gap}px`,\r\n };\r\n return h(\r\n 'div',\r\n { style: root },\r\n props.items.map((item) =>\r\n h(\r\n 'div',\r\n {\r\n key: item.key,\r\n style: {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n borderRadius: t.radii.sm,\r\n background: t.colors.intent.neutral.subtle,\r\n gridColumn: item.cols && item.cols > 1 ? `span ${item.cols}` : undefined,\r\n gridRow: item.rows && item.rows > 1 ? `span ${item.rows}` : undefined,\r\n } as CSSProperties,\r\n },\r\n [\r\n item.src\r\n ? h('img', {\r\n src: item.src,\r\n alt: item.alt ?? '',\r\n style: { width: '100%', height: '100%', objectFit: 'cover', display: 'block' } as CSSProperties,\r\n })\r\n : null,\r\n item.caption\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n padding: '6px 10px',\r\n fontSize: '12px',\r\n color: '#fff',\r\n background: 'linear-gradient(180deg, transparent, rgba(0,0,0,0.6))',\r\n } as CSSProperties,\r\n },\r\n item.caption,\r\n )\r\n : null,\r\n ],\r\n ),\r\n ),\r\n );\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraSimplePagination = defineComponent({\r\n name: 'ElvoraSimplePagination',\r\n props: {\r\n total: { type: Number, required: true },\r\n pageSize: { type: Number, default: 10 },\r\n current: { type: Number, default: 1 },\r\n showJumper: Boolean,\r\n showSizeChanger: Boolean,\r\n pageSizeOptions: { type: Array as PropType<number[]>, default: () => [10, 20, 50, 100] },\r\n },\r\n emits: ['update:current', 'update:pageSize'],\r\n setup(props, { emit }) {\r\n const jumpValue = ref('');\r\n const totalPages = computed(() => Math.max(1, Math.ceil(props.total / props.pageSize)));\r\n const safeCurrent = computed(() => Math.min(Math.max(props.current, 1), totalPages.value));\r\n const go = (page: number) => {\r\n const next = Math.min(Math.max(page, 1), totalPages.value);\r\n if (next !== safeCurrent.value) emit('update:current', next);\r\n };\r\n return () => {\r\n const t = useTheme().value;\r\n const baseBtn = (disabled: boolean): CSSProperties => ({\r\n minWidth: '32px',\r\n height: '32px',\r\n borderRadius: t.radii.md,\r\n border: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.5 : 1,\r\n });\r\n return h(\r\n 'nav',\r\n {\r\n 'aria-label': 'Pagination',\r\n style: { display: 'inline-flex', alignItems: 'center', gap: '8px' } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Previous page',\r\n disabled: safeCurrent.value === 1,\r\n onClick: () => go(safeCurrent.value - 1),\r\n style: baseBtn(safeCurrent.value === 1),\r\n },\r\n '‹',\r\n ),\r\n h('span', { style: { fontSize: '13px', color: t.colors.fg } as CSSProperties }, `${safeCurrent.value} / ${totalPages.value}`),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Next page',\r\n disabled: safeCurrent.value === totalPages.value,\r\n onClick: () => go(safeCurrent.value + 1),\r\n style: baseBtn(safeCurrent.value === totalPages.value),\r\n },\r\n '›',\r\n ),\r\n props.showSizeChanger\r\n ? h(\r\n 'select',\r\n {\r\n 'aria-label': 'Page size',\r\n value: String(props.pageSize),\r\n onChange: (e: Event) => emit('update:pageSize', Number((e.target as HTMLSelectElement).value)),\r\n style: {\r\n height: '32px',\r\n borderRadius: t.radii.md,\r\n border: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n padding: '0 8px',\r\n } as CSSProperties,\r\n },\r\n props.pageSizeOptions.map((n) =>\r\n h('option', { key: n, value: n }, `${n} / page`),\r\n ),\r\n )\r\n : null,\r\n props.showJumper\r\n ? h(\r\n 'span',\r\n {\r\n style: {\r\n fontSize: '13px',\r\n color: t.colors.fgSubtle,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n } as CSSProperties,\r\n },\r\n [\r\n 'Go to',\r\n h('input', {\r\n 'aria-label': 'Jump to page',\r\n type: 'number',\r\n value: jumpValue.value,\r\n onInput: (e: Event) => {\r\n jumpValue.value = (e.target as HTMLInputElement).value;\r\n },\r\n onKeydown: (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n const parsed = Number(jumpValue.value);\r\n if (Number.isFinite(parsed)) go(parsed);\r\n jumpValue.value = '';\r\n }\r\n },\r\n style: {\r\n width: '60px',\r\n height: '32px',\r\n borderRadius: t.radii.md,\r\n border: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n color: t.colors.fg,\r\n padding: '0 8px',\r\n } as CSSProperties,\r\n }),\r\n ],\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n\r\nexport const ElvoraMiniPagination = defineComponent({\r\n name: 'ElvoraMiniPagination',\r\n props: {\r\n total: { type: Number, required: true },\r\n pageSize: { type: Number, default: 10 },\r\n current: { type: Number, default: 1 },\r\n },\r\n emits: ['update:current'],\r\n setup(props, { emit }) {\r\n const totalPages = computed(() => Math.max(1, Math.ceil(props.total / props.pageSize)));\r\n const safeCurrent = computed(() => Math.min(Math.max(props.current, 1), totalPages.value));\r\n const go = (page: number) => {\r\n const next = Math.min(Math.max(page, 1), totalPages.value);\r\n if (next !== safeCurrent.value) emit('update:current', next);\r\n };\r\n return () => {\r\n const t = useTheme().value;\r\n const baseBtn = (disabled: boolean): CSSProperties => ({\r\n width: '24px',\r\n height: '24px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: t.colors.fg,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.4 : 1,\r\n });\r\n return h(\r\n 'nav',\r\n {\r\n 'aria-label': 'Pagination',\r\n style: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n fontSize: '12px',\r\n color: t.colors.fgSubtle,\r\n } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Previous page',\r\n disabled: safeCurrent.value === 1,\r\n onClick: () => go(safeCurrent.value - 1),\r\n style: baseBtn(safeCurrent.value === 1),\r\n },\r\n '‹',\r\n ),\r\n h('span', null, `${safeCurrent.value}/${totalPages.value}`),\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Next page',\r\n disabled: safeCurrent.value === totalPages.value,\r\n onClick: () => go(safeCurrent.value + 1),\r\n style: baseBtn(safeCurrent.value === totalPages.value),\r\n },\r\n '›',\r\n ),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport interface ElvoraStepperStep {\r\n key: string;\r\n label: string;\r\n description?: string;\r\n optional?: boolean;\r\n}\r\n\r\nexport const ElvoraStepper = defineComponent({\r\n name: 'ElvoraStepper',\r\n props: {\r\n steps: { type: Array as PropType<ElvoraStepperStep[]>, default: () => [] },\r\n active: { type: Number, default: 0 },\r\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\r\n showNavigation: { type: Boolean, default: true },\r\n nextLabel: { type: String, default: 'Next' },\r\n prevLabel: { type: String, default: 'Back' },\r\n finishLabel: { type: String, default: 'Finish' },\r\n },\r\n emits: ['update:active', 'finish'],\r\n setup(props, { slots, emit }) {\r\n const internal = ref(props.active);\r\n const goTo = (idx: number) => {\r\n const clamped = Math.max(0, Math.min(props.steps.length - 1, idx));\r\n internal.value = clamped;\r\n emit('update:active', clamped);\r\n };\r\n return () => {\r\n const t = useTheme().value;\r\n const active = props.active;\r\n const isH = props.orientation === 'horizontal';\r\n const total = props.steps.length;\r\n const navBtn = (variant: 'primary' | 'outline'): CSSProperties => ({\r\n padding: '6px 14px',\r\n borderRadius: t.radii.md,\r\n border: variant === 'outline' ? `1px solid ${t.colors.border}` : 'none',\r\n background: variant === 'outline' ? 'transparent' : t.colors.intent.primary.solid,\r\n color: variant === 'outline' ? t.colors.fg : t.colors.intent.primary.solidFg,\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n fontWeight: 500,\r\n });\r\n const stepsNodes = props.steps.map((step, idx) => {\r\n const done = idx < active;\r\n const isActive = idx === active;\r\n const circleBg = done || isActive ? t.colors.intent.primary.solid : t.colors.intent.neutral.subtle;\r\n const circleFg = done || isActive ? t.colors.intent.primary.solidFg : t.colors.fg;\r\n return h(\r\n 'div',\r\n {\r\n key: step.key,\r\n style: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: isH ? 'center' : 'flex-start',\r\n flex: isH ? '1' : undefined,\r\n gap: '8px',\r\n } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-current': isActive ? 'step' : undefined,\r\n onClick: () => goTo(idx),\r\n style: {\r\n width: '28px',\r\n height: '28px',\r\n borderRadius: '50%',\r\n border: 'none',\r\n background: circleBg,\r\n color: circleFg,\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n fontSize: '13px',\r\n } as CSSProperties,\r\n },\r\n done ? '✓' : String(idx + 1),\r\n ),\r\n h('div', { style: { flex: 1 } as CSSProperties }, [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n fontWeight: 500,\r\n color: isActive ? t.colors.fg : t.colors.fgSubtle,\r\n } as CSSProperties,\r\n },\r\n [\r\n step.label,\r\n step.optional\r\n ? h('span', { style: { fontSize: '11px', marginLeft: '6px', color: t.colors.fgSubtle } as CSSProperties }, '(optional)')\r\n : null,\r\n ],\r\n ),\r\n step.description\r\n ? h('div', { style: { color: t.colors.fgSubtle, fontSize: '12px' } as CSSProperties }, step.description)\r\n : null,\r\n ]),\r\n isH && idx < total - 1\r\n ? h('div', {\r\n style: {\r\n flex: 1,\r\n height: '2px',\r\n background: idx < active ? t.colors.intent.primary.solid : t.colors.border,\r\n } as CSSProperties,\r\n })\r\n : null,\r\n ],\r\n );\r\n });\r\n\r\n const nav = props.showNavigation\r\n ? h(\r\n 'div',\r\n {\r\n style: { display: 'flex', justifyContent: 'flex-end', gap: '8px', marginTop: '16px' } as CSSProperties,\r\n },\r\n [\r\n active > 0\r\n ? h('button', { type: 'button', onClick: () => goTo(active - 1), style: navBtn('outline') }, props.prevLabel)\r\n : null,\r\n active < total - 1\r\n ? h('button', { type: 'button', onClick: () => goTo(active + 1), style: navBtn('primary') }, props.nextLabel)\r\n : h('button', { type: 'button', onClick: () => emit('finish'), style: navBtn('primary') }, props.finishLabel),\r\n ],\r\n )\r\n : null;\r\n\r\n return h('div', null, [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n flexDirection: isH ? 'row' : 'column',\r\n alignItems: isH ? 'center' : 'flex-start',\r\n gap: isH ? '8px' : '12px',\r\n } as CSSProperties,\r\n },\r\n stepsNodes,\r\n ),\r\n slots[`step-${active}`]?.() ?? null,\r\n nav,\r\n ]);\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, watch, type CSSProperties, type PropType } from 'vue';\r\nimport type { ElvoraSize } from '@elvora/core';\r\nimport { useTheme } from './provider';\r\n\r\nconst sizePadding: Record<ElvoraSize, { padX: number; padY: number; font: number }> = {\r\n xs: { padX: 8, padY: 4, font: 11 },\r\n sm: { padX: 10, padY: 6, font: 12 },\r\n md: { padX: 14, padY: 8, font: 13 },\r\n lg: { padX: 18, padY: 10, font: 14 },\r\n xl: { padX: 22, padY: 12, font: 16 },\r\n};\r\n\r\nexport const ElvoraToggleButton = defineComponent({\r\n name: 'ElvoraToggleButton',\r\n props: {\r\n modelValue: { type: Boolean, default: undefined },\r\n value: String,\r\n size: { type: String as PropType<ElvoraSize>, default: 'md' },\r\n isDisabled: Boolean,\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit }) {\r\n const internal = ref(props.modelValue ?? false);\r\n watch(\r\n () => props.modelValue,\r\n (v) => {\r\n if (v !== undefined) internal.value = v;\r\n },\r\n );\r\n const selected = computed(() => (props.modelValue !== undefined ? props.modelValue : internal.value));\r\n const toggle = () => {\r\n const next = !selected.value;\r\n if (props.modelValue === undefined) internal.value = next;\r\n emit('update:modelValue', next);\r\n };\r\n return () => {\r\n const t = useTheme().value;\r\n const intent = t.colors.intent.primary;\r\n const pad = sizePadding[props.size];\r\n const style: CSSProperties = {\r\n padding: `${pad.padY}px ${pad.padX}px`,\r\n fontSize: `${pad.font}px`,\r\n fontWeight: 500,\r\n borderRadius: t.radii.md,\r\n border: `1px solid ${selected.value ? intent.solid : t.colors.border}`,\r\n background: selected.value ? intent.subtle : t.colors.surfaceElevated,\r\n color: selected.value ? intent.fg : t.colors.fg,\r\n cursor: props.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: props.isDisabled ? 0.5 : 1,\r\n };\r\n return h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-pressed': selected.value,\r\n disabled: props.isDisabled,\r\n onClick: toggle,\r\n style,\r\n },\r\n slots.default?.(),\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, type CSSProperties, type PropType } from 'vue';\r\n\r\nexport type ElvoraButtonGroupOrientation = 'horizontal' | 'vertical';\r\n\r\nexport const ElvoraButtonGroup = defineComponent({\r\n name: 'ElvoraButtonGroup',\r\n props: {\r\n orientation: { type: String as PropType<ElvoraButtonGroupOrientation>, default: 'horizontal' },\r\n },\r\n setup(props, { slots }) {\r\n return () => {\r\n const style: CSSProperties = {\r\n display: 'inline-flex',\r\n flexDirection: props.orientation === 'horizontal' ? 'row' : 'column',\r\n gap: '4px',\r\n };\r\n return h('div', { role: 'group', style }, slots.default?.());\r\n };\r\n },\r\n});\r\n","import { computed, defineComponent, h, ref, watch, type CSSProperties, type PropType } from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport const ElvoraChipInput = defineComponent({\r\n name: 'ElvoraChipInput',\r\n props: {\r\n modelValue: { type: Array as PropType<string[]>, default: () => [] },\r\n placeholder: String,\r\n isDisabled: Boolean,\r\n unique: { type: Boolean, default: true },\r\n maxChips: Number,\r\n ariaLabel: String,\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const internal = ref<string[]>(props.modelValue ?? []);\r\n watch(\r\n () => props.modelValue,\r\n (v) => {\r\n if (v) internal.value = v;\r\n },\r\n );\r\n const draft = ref('');\r\n const inputRef = ref<HTMLInputElement | null>(null);\r\n const chips = computed(() => internal.value);\r\n\r\n const setChips = (next: string[]) => {\r\n internal.value = next;\r\n emit('update:modelValue', next);\r\n };\r\n\r\n const addChip = (raw: string) => {\r\n const trimmed = raw.trim();\r\n if (!trimmed) return;\r\n if (props.maxChips !== undefined && chips.value.length >= props.maxChips) return;\r\n if (props.unique && chips.value.includes(trimmed)) {\r\n draft.value = '';\r\n return;\r\n }\r\n setChips([...chips.value, trimmed]);\r\n draft.value = '';\r\n };\r\n\r\n const removeChip = (idx: number) => {\r\n const next = chips.value.slice();\r\n next.splice(idx, 1);\r\n setChips(next);\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Enter' || event.key === 'Tab') {\r\n if (draft.value) {\r\n event.preventDefault();\r\n addChip(draft.value);\r\n }\r\n } else if (event.key === 'Backspace' && !draft.value && chips.value.length > 0) {\r\n removeChip(chips.value.length - 1);\r\n }\r\n };\r\n\r\n const onInput = (event: Event) => {\r\n const v = (event.target as HTMLInputElement).value;\r\n if (v.endsWith(',')) addChip(v.slice(0, -1));\r\n else draft.value = v;\r\n };\r\n\r\n return () => {\r\n const t = useTheme().value;\r\n const rootStyle: CSSProperties = {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: '6px',\r\n minHeight: '36px',\r\n padding: '4px 8px',\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: t.radii.md,\r\n background: t.colors.surfaceElevated,\r\n cursor: props.isDisabled ? 'not-allowed' : 'text',\r\n opacity: props.isDisabled ? 0.6 : 1,\r\n };\r\n const chipStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '2px 8px',\r\n borderRadius: t.radii.full,\r\n background: t.colors.intent.neutral.subtle,\r\n color: t.colors.fg,\r\n fontSize: '12px',\r\n };\r\n return h(\r\n 'div',\r\n {\r\n style: rootStyle,\r\n onClick: () => inputRef.value?.focus(),\r\n },\r\n [\r\n ...chips.value.map((chip, idx) =>\r\n h('span', { key: `${chip}-${idx}`, style: chipStyle }, [\r\n chip,\r\n !props.isDisabled\r\n ? h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-label': 'Remove tag',\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n removeChip(idx);\r\n },\r\n style: {\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n lineHeight: 1,\r\n padding: 0,\r\n color: t.colors.fgSubtle,\r\n } as CSSProperties,\r\n },\r\n '×',\r\n )\r\n : null,\r\n ]),\r\n ),\r\n h('input', {\r\n ref: inputRef as unknown as string,\r\n 'aria-label': props.ariaLabel ?? 'Add tag',\r\n disabled: props.isDisabled,\r\n value: draft.value,\r\n placeholder: chips.value.length === 0 ? props.placeholder : undefined,\r\n onInput,\r\n onKeydown: onKeyDown,\r\n onBlur: () => {\r\n if (draft.value) addChip(draft.value);\r\n },\r\n style: {\r\n flex: 1,\r\n minWidth: '80px',\r\n border: 'none',\r\n outline: 'none',\r\n background: 'transparent',\r\n color: t.colors.fg,\r\n fontSize: '14px',\r\n padding: '4px 0',\r\n } as CSSProperties,\r\n }),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n computed,\r\n defineComponent,\r\n h,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraInput } from './Input';\r\nimport { ElvoraTable, type ElvoraTableColumn } from './Table';\r\n\r\nexport interface ElvoraProTableColumn<Row = Record<string, unknown>> extends ElvoraTableColumn<Row> {\r\n searchable?: boolean;\r\n}\r\n\r\nexport const ElvoraProTable = defineComponent({\r\n name: 'ElvoraProTable',\r\n props: {\r\n title: { type: String, default: '' },\r\n columns: { type: Array as PropType<ElvoraProTableColumn[]>, required: true },\r\n dataSource: { type: Array as PropType<Record<string, unknown>[]>, required: true },\r\n search: { type: Boolean, default: true },\r\n searchPlaceholder: { type: String, default: 'Search…' },\r\n empty: { type: String, default: 'No data' },\r\n },\r\n emits: ['rowClick'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const query = ref('');\r\n\r\n const filtered = computed(() => {\r\n const q = query.value.trim().toLowerCase();\r\n if (!q) return props.dataSource;\r\n const keys = props.columns\r\n .filter((c) => c.searchable !== false && c.dataIndex !== undefined)\r\n .map((c) => String(c.dataIndex));\r\n return props.dataSource.filter((row) =>\r\n keys.some((key) => String(row[key] ?? '').toLowerCase().includes(q)),\r\n );\r\n });\r\n\r\n return () => {\r\n const t = theme.value;\r\n const toolbarStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: '12px',\r\n flexWrap: 'wrap',\r\n };\r\n const titleStyle: CSSProperties = { color: t.colors.fg, fontWeight: 600, fontSize: '16px' };\r\n const containerStyle: CSSProperties = { display: 'flex', flexDirection: 'column', gap: '12px' };\r\n\r\n return h('div', { style: containerStyle }, [\r\n (props.title || props.search) &&\r\n h('div', { style: toolbarStyle }, [\r\n props.title ? h('div', { style: titleStyle }, props.title) : null,\r\n props.search\r\n ? h(ElvoraInput, {\r\n modelValue: query.value,\r\n 'onUpdate:modelValue': (v: string) => (query.value = v),\r\n placeholder: props.searchPlaceholder,\r\n })\r\n : null,\r\n ]),\r\n h(ElvoraTable as unknown as ReturnType<typeof defineComponent>, {\r\n columns: props.columns as ElvoraTableColumn[],\r\n dataSource: filtered.value,\r\n bordered: true,\r\n onRowClick: (payload: unknown) => emit('rowClick', payload),\r\n }),\r\n filtered.value.length === 0\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n color: t.colors.fgMuted,\r\n textAlign: 'center',\r\n padding: '24px',\r\n fontSize: '14px',\r\n } as CSSProperties,\r\n },\r\n props.empty,\r\n )\r\n : null,\r\n ]);\r\n };\r\n },\r\n});\r\n","import {\r\n defineComponent,\r\n h,\r\n reactive,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraInput } from './Input';\r\nimport { ElvoraTextarea } from './Textarea';\r\nimport { ElvoraCheckbox } from './Checkbox';\r\nimport { ElvoraSwitch } from './Switch';\r\nimport { ElvoraSelect, type ElvoraSelectOption } from './Select';\r\nimport { ElvoraNumberInput } from './NumberInput';\r\nimport { ElvoraButton } from './Button';\r\nimport { ElvoraLabel } from './Label';\r\n\r\nexport type ElvoraProFormFieldType =\r\n | 'text'\r\n | 'password'\r\n | 'email'\r\n | 'number'\r\n | 'textarea'\r\n | 'switch'\r\n | 'checkbox'\r\n | 'select';\r\n\r\nexport interface ElvoraProFormField {\r\n name: string;\r\n label?: string;\r\n type: ElvoraProFormFieldType;\r\n placeholder?: string;\r\n hint?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n defaultValue?: unknown;\r\n options?: ElvoraSelectOption[];\r\n validate?: (value: unknown, values: Record<string, unknown>) => string | undefined;\r\n}\r\n\r\nexport const ElvoraProForm = defineComponent({\r\n name: 'ElvoraProForm',\r\n props: {\r\n fields: { type: Array as PropType<ElvoraProFormField[]>, required: true },\r\n initialValues: { type: Object as PropType<Record<string, unknown>>, default: () => ({}) },\r\n submitLabel: { type: String, default: 'Submit' },\r\n resetLabel: { type: String, default: '' },\r\n isSubmitting: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n submit: (_v: Record<string, unknown>) => true,\r\n 'values-change': (_v: Record<string, unknown>) => true,\r\n },\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const initial: Record<string, unknown> = { ...props.initialValues };\r\n for (const f of props.fields) {\r\n if (initial[f.name] === undefined && f.defaultValue !== undefined) initial[f.name] = f.defaultValue;\r\n }\r\n const values = reactive<Record<string, unknown>>({ ...initial });\r\n const errors = ref<Record<string, string | undefined>>({});\r\n\r\n const setValue = (name: string, v: unknown) => {\r\n values[name] = v;\r\n const next = { ...errors.value };\r\n delete next[name];\r\n errors.value = next;\r\n emit('values-change', { ...values });\r\n };\r\n\r\n const reset = () => {\r\n for (const k of Object.keys(values)) delete values[k];\r\n Object.assign(values, initial);\r\n errors.value = {};\r\n };\r\n\r\n const submit = (e: Event) => {\r\n e.preventDefault();\r\n const next: Record<string, string | undefined> = {};\r\n for (const f of props.fields) {\r\n const v = values[f.name];\r\n if (f.required && (v === undefined || v === null || v === '')) {\r\n next[f.name] = 'This field is required';\r\n continue;\r\n }\r\n if (f.validate) {\r\n const msg = f.validate(v, values as Record<string, unknown>);\r\n if (msg) next[f.name] = msg;\r\n }\r\n }\r\n errors.value = next;\r\n const valid = Object.values(next).every((m) => !m);\r\n if (!valid) return;\r\n emit('submit', { ...values });\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const renderField = (field: ElvoraProFormField) => {\r\n const value = values[field.name];\r\n const error = errors.value[field.name];\r\n let control: ReturnType<typeof h>;\r\n switch (field.type) {\r\n case 'textarea':\r\n control = h(ElvoraTextarea, {\r\n modelValue: String(value ?? ''),\r\n 'onUpdate:modelValue': (v: string) => setValue(field.name, v),\r\n placeholder: field.placeholder,\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n isInvalid: !!error,\r\n });\r\n break;\r\n case 'select':\r\n control = h(ElvoraSelect, {\r\n modelValue: String(value ?? ''),\r\n 'onUpdate:modelValue': (v: string) => setValue(field.name, v),\r\n options: field.options ?? [],\r\n placeholder: field.placeholder,\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n isInvalid: !!error,\r\n });\r\n break;\r\n case 'number':\r\n control = h(ElvoraNumberInput, {\r\n modelValue: typeof value === 'number' ? value : Number(value ?? 0),\r\n 'onUpdate:modelValue': (v: number | null) => setValue(field.name, v),\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n });\r\n break;\r\n case 'checkbox':\r\n control = h(\r\n ElvoraCheckbox,\r\n {\r\n modelValue: Boolean(value),\r\n 'onUpdate:modelValue': (v: boolean) => setValue(field.name, v),\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n },\r\n () => field.placeholder ?? '',\r\n );\r\n break;\r\n case 'switch':\r\n control = h(ElvoraSwitch, {\r\n modelValue: Boolean(value),\r\n 'onUpdate:modelValue': (v: boolean) => setValue(field.name, v),\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n });\r\n break;\r\n default:\r\n control = h(ElvoraInput, {\r\n modelValue: String(value ?? ''),\r\n 'onUpdate:modelValue': (v: string) => setValue(field.name, v),\r\n type: field.type === 'password' ? 'password' : field.type === 'email' ? 'email' : 'text',\r\n placeholder: field.placeholder,\r\n isDisabled: !!field.disabled || props.isSubmitting,\r\n isInvalid: !!error,\r\n });\r\n }\r\n return h(\r\n 'div',\r\n {\r\n key: field.name,\r\n style: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '6px',\r\n marginBottom: '16px',\r\n } as CSSProperties,\r\n },\r\n [\r\n field.label ? h(ElvoraLabel, { isRequired: !!field.required }, () => field.label) : null,\r\n control,\r\n !error && field.hint\r\n ? h(\r\n 'div',\r\n { style: { fontSize: '12px', color: t.colors.fgMuted } as CSSProperties },\r\n field.hint,\r\n )\r\n : null,\r\n error\r\n ? h(\r\n 'div',\r\n {\r\n role: 'alert',\r\n style: { fontSize: '12px', color: t.colors.intent.danger.solid } as CSSProperties,\r\n },\r\n error,\r\n )\r\n : null,\r\n ],\r\n );\r\n };\r\n\r\n return h(\r\n 'form',\r\n { onSubmit: submit, novalidate: true },\r\n [\r\n ...props.fields.map(renderField),\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n gap: '8px',\r\n marginTop: '8px',\r\n } as CSSProperties,\r\n },\r\n [\r\n props.resetLabel\r\n ? h(\r\n ElvoraButton,\r\n {\r\n variant: 'ghost',\r\n type: 'button',\r\n onClick: reset,\r\n isDisabled: props.isSubmitting,\r\n },\r\n () => props.resetLabel,\r\n )\r\n : null,\r\n h(\r\n ElvoraButton,\r\n { type: 'submit', isLoading: props.isSubmitting },\r\n () => props.submitLabel,\r\n ),\r\n ],\r\n ),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import { defineComponent, h, ref, type CSSProperties, type PropType } from 'vue';\r\nimport type { IconName } from '@elvora/icons';\r\nimport { useTheme } from './provider';\r\nimport { ElvoraAvatar } from './Avatar';\r\nimport { ElvoraIcon } from './Icon';\r\n\r\nexport interface ElvoraProLayoutMenuItem {\r\n key: string;\r\n label: string;\r\n icon?: IconName;\r\n children?: ElvoraProLayoutMenuItem[];\r\n}\r\n\r\nexport interface ElvoraProLayoutUser {\r\n name: string;\r\n avatar?: string;\r\n caption?: string;\r\n}\r\n\r\nexport const ElvoraProLayout = defineComponent({\r\n name: 'ElvoraProLayout',\r\n props: {\r\n brand: { type: String, default: '' },\r\n menu: { type: Array as PropType<ElvoraProLayoutMenuItem[]>, default: () => [] },\r\n user: { type: Object as PropType<ElvoraProLayoutUser | null>, default: null },\r\n sidebarWidth: { type: Number, default: 240 },\r\n selectedKey: { type: String, default: '' },\r\n },\r\n emits: {\r\n select: (_key: string) => true,\r\n },\r\n setup(props, { emit, slots }) {\r\n const theme = useTheme();\r\n const internal = ref<string>(props.selectedKey ?? '');\r\n\r\n const select = (key: string) => {\r\n internal.value = key;\r\n emit('select', key);\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n const activeKey = props.selectedKey || internal.value;\r\n\r\n const itemButton = (item: ElvoraProLayoutMenuItem, depth = 0) => {\r\n const isActive = item.key === activeKey;\r\n return h(\r\n 'button',\r\n {\r\n type: 'button',\r\n 'aria-current': isActive ? 'page' : undefined,\r\n onClick: () => select(item.key),\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n width: '100%',\r\n padding: `8px ${12 + depth * 12}px`,\r\n border: 'none',\r\n background: isActive ? t.colors.intent.primary.subtle : 'transparent',\r\n color: isActive ? t.colors.intent.primary.solid : t.colors.fg,\r\n borderRadius: '6px',\r\n cursor: 'pointer',\r\n fontWeight: isActive ? 600 : 400,\r\n fontSize: '14px',\r\n marginBottom: '2px',\r\n textAlign: 'left',\r\n } as CSSProperties,\r\n },\r\n [item.icon ? h(ElvoraIcon, { name: item.icon, size: 16 }) : null, item.label],\r\n );\r\n };\r\n\r\n const menuNodes = props.menu.flatMap((item) => {\r\n const nodes = [itemButton(item, 0)];\r\n if (item.children?.length) {\r\n for (const child of item.children) nodes.push(itemButton(child, 1));\r\n }\r\n return nodes;\r\n });\r\n\r\n return h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n minHeight: '100vh',\r\n background: t.colors.background,\r\n color: t.colors.fg,\r\n } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'aside',\r\n {\r\n style: {\r\n width: `${props.sidebarWidth}px`,\r\n borderRight: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n padding: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n } as CSSProperties,\r\n },\r\n [\r\n props.brand\r\n ? h(\r\n 'div',\r\n { style: { fontWeight: 600, fontSize: '16px' } as CSSProperties },\r\n props.brand,\r\n )\r\n : null,\r\n h(\r\n 'nav',\r\n {\r\n role: 'navigation',\r\n style: { flex: '1', overflowY: 'auto' } as CSSProperties,\r\n },\r\n menuNodes,\r\n ),\r\n slots.footer ? slots.footer() : undefined,\r\n ],\r\n ),\r\n h(\r\n 'section',\r\n {\r\n style: { flex: '1', display: 'flex', flexDirection: 'column' } as CSSProperties,\r\n },\r\n [\r\n (slots.header || props.user) &&\r\n h(\r\n 'header',\r\n {\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: '12px',\r\n padding: '12px 16px',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n background: t.colors.surfaceElevated,\r\n } as CSSProperties,\r\n },\r\n [\r\n h(\r\n 'div',\r\n { style: { flex: '1' } as CSSProperties },\r\n slots.header ? slots.header() : undefined,\r\n ),\r\n props.user\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n } as CSSProperties,\r\n },\r\n [\r\n h(ElvoraAvatar, {\r\n src: props.user.avatar,\r\n name: props.user.name,\r\n size: 'sm',\r\n }),\r\n h('div', null, [\r\n h(\r\n 'div',\r\n {\r\n style: { fontSize: '14px', fontWeight: 500 } as CSSProperties,\r\n },\r\n props.user.name,\r\n ),\r\n props.user.caption\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n fontSize: '12px',\r\n color: t.colors.fgMuted,\r\n } as CSSProperties,\r\n },\r\n props.user.caption,\r\n )\r\n : null,\r\n ]),\r\n ],\r\n )\r\n : null,\r\n ],\r\n ),\r\n h(\r\n 'main',\r\n {\r\n style: { flex: '1', padding: '16px', overflow: 'auto' } as CSSProperties,\r\n },\r\n slots.default ? slots.default() : undefined,\r\n ),\r\n ],\r\n ),\r\n ],\r\n );\r\n };\r\n },\r\n});\r\n","import {\r\n computed,\r\n defineComponent,\r\n h,\r\n ref,\r\n type CSSProperties,\r\n type PropType,\r\n} from 'vue';\r\nimport { useTheme } from './provider';\r\n\r\nexport type ElvoraDataGridSortOrder = 'asc' | 'desc' | null;\r\n\r\nexport interface ElvoraDataGridColumn<Row = Record<string, unknown>> {\r\n key: string;\r\n title: string;\r\n dataIndex?: keyof Row | string;\r\n width?: number;\r\n sortable?: boolean;\r\n sorter?: (a: Row, b: Row) => number;\r\n align?: 'left' | 'center' | 'right';\r\n}\r\n\r\nfunction defaultCompare(a: unknown, b: unknown): number {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return -1;\r\n if (b == null) return 1;\r\n if (typeof a === 'number' && typeof b === 'number') return a - b;\r\n return String(a).localeCompare(String(b));\r\n}\r\n\r\nexport const ElvoraDataGrid = defineComponent({\r\n name: 'ElvoraDataGrid',\r\n props: {\r\n columns: { type: Array as PropType<ElvoraDataGridColumn[]>, required: true },\r\n dataSource: { type: Array as PropType<Record<string, unknown>[]>, required: true },\r\n rowHeight: { type: Number, default: 36 },\r\n height: { type: Number, default: 400 },\r\n overscan: { type: Number, default: 6 },\r\n empty: { type: String, default: 'No data' },\r\n },\r\n emits: ['rowClick'],\r\n setup(props, { emit }) {\r\n const theme = useTheme();\r\n const sortKey = ref<string | null>(null);\r\n const sortOrder = ref<ElvoraDataGridSortOrder>(null);\r\n const scrollTop = ref(0);\r\n\r\n const sorted = computed(() => {\r\n const key = sortKey.value;\r\n const order = sortOrder.value;\r\n if (!key || !order) return props.dataSource;\r\n const col = props.columns.find((c) => c.key === key);\r\n if (!col || !col.sortable) return props.dataSource;\r\n const arr = [...props.dataSource];\r\n const compare = col.sorter\r\n ? col.sorter\r\n : (a: Record<string, unknown>, b: Record<string, unknown>) =>\r\n defaultCompare(a[col.dataIndex as string], b[col.dataIndex as string]);\r\n arr.sort((a, b) => (order === 'asc' ? compare(a, b) : -compare(a, b)));\r\n return arr;\r\n });\r\n\r\n const totalHeight = computed(() => 40 + sorted.value.length * props.rowHeight);\r\n\r\n const visible = computed(() => {\r\n const rows = sorted.value;\r\n const headerOffset = 40;\r\n const top = Math.max(0, scrollTop.value - headerOffset);\r\n const startIndex = Math.max(0, Math.floor(top / props.rowHeight) - props.overscan);\r\n const visibleCount = Math.ceil((props.height - headerOffset) / props.rowHeight) + props.overscan * 2;\r\n const endIndex = Math.min(rows.length, startIndex + visibleCount);\r\n const out: Array<{ row: Record<string, unknown>; index: number; top: number }> = [];\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const row = rows[i];\r\n if (!row) continue;\r\n out.push({ row, index: i, top: headerOffset + i * props.rowHeight });\r\n }\r\n return out;\r\n });\r\n\r\n const toggleSort = (col: ElvoraDataGridColumn) => {\r\n if (!col.sortable) return;\r\n if (sortKey.value !== col.key) {\r\n sortKey.value = col.key;\r\n sortOrder.value = 'asc';\r\n return;\r\n }\r\n if (sortOrder.value === 'asc') sortOrder.value = 'desc';\r\n else if (sortOrder.value === 'desc') {\r\n sortKey.value = null;\r\n sortOrder.value = null;\r\n } else sortOrder.value = 'asc';\r\n };\r\n\r\n return () => {\r\n const t = theme.value;\r\n return h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'relative',\r\n overflow: 'auto',\r\n height: `${props.height}px`,\r\n border: `1px solid ${t.colors.border}`,\r\n borderRadius: '8px',\r\n background: t.colors.surfaceElevated,\r\n } as CSSProperties,\r\n onScroll: (e: Event) => (scrollTop.value = (e.target as HTMLElement).scrollTop),\r\n },\r\n h(\r\n 'div',\r\n { style: { height: `${totalHeight.value}px`, position: 'relative' } as CSSProperties },\r\n [\r\n h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'sticky',\r\n top: '0',\r\n background: t.colors.intent.neutral.subtle,\r\n zIndex: 1,\r\n display: 'flex',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n props.columns.map((col) =>\r\n h(\r\n 'div',\r\n {\r\n key: col.key,\r\n onClick: () => toggleSort(col),\r\n style: {\r\n width: `${col.width ?? 120}px`,\r\n padding: '8px 12px',\r\n fontWeight: 600,\r\n cursor: col.sortable ? 'pointer' : 'default',\r\n userSelect: 'none',\r\n textAlign: col.align ?? 'left',\r\n } as CSSProperties,\r\n },\r\n [\r\n col.title,\r\n col.sortable\r\n ? h(\r\n 'span',\r\n { style: { color: t.colors.fgMuted, marginLeft: '4px' } as CSSProperties },\r\n sortKey.value === col.key\r\n ? sortOrder.value === 'asc'\r\n ? ' ↑'\r\n : sortOrder.value === 'desc'\r\n ? ' ↓'\r\n : ' ⇅'\r\n : ' ⇅',\r\n )\r\n : null,\r\n ],\r\n ),\r\n ),\r\n ),\r\n ...visible.value.map((entry) =>\r\n h(\r\n 'div',\r\n {\r\n key: entry.index,\r\n onClick: () => emit('rowClick', { row: entry.row, index: entry.index }),\r\n style: {\r\n position: 'absolute',\r\n top: `${entry.top}px`,\r\n left: 0,\r\n right: 0,\r\n display: 'flex',\r\n height: `${props.rowHeight}px`,\r\n alignItems: 'center',\r\n borderBottom: `1px solid ${t.colors.border}`,\r\n } as CSSProperties,\r\n },\r\n props.columns.map((col) =>\r\n h(\r\n 'div',\r\n {\r\n key: col.key,\r\n style: {\r\n width: `${col.width ?? 120}px`,\r\n padding: '0 12px',\r\n textAlign: col.align ?? 'left',\r\n } as CSSProperties,\r\n },\r\n String(col.dataIndex !== undefined ? entry.row[col.dataIndex as string] ?? '' : ''),\r\n ),\r\n ),\r\n ),\r\n ),\r\n sorted.value.length === 0\r\n ? h(\r\n 'div',\r\n {\r\n style: {\r\n position: 'absolute',\r\n top: '40px',\r\n left: 0,\r\n right: 0,\r\n padding: '24px',\r\n textAlign: 'center',\r\n color: t.colors.fgMuted,\r\n } as CSSProperties,\r\n },\r\n props.empty,\r\n )\r\n : null,\r\n ],\r\n ),\r\n );\r\n };\r\n },\r\n});\r\n"]}