@vespera-ui/vue 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/index.cjs +244 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +153 -1
- package/dist/index.d.ts +153 -1
- package/dist/index.js +240 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @vespera-ui/vue — Vue 3 components for the Vespera design system.\n *\n * Thin wrappers over `@vespera-ui/css`: they emit the same `.vsp-`/`ui-` classes\n * as `@vespera-ui/react`, so theming via `.vsp-root` data-attributes works\n * identically. Import the CSS once and wrap your app in a themed root.\n */\nimport { defineComponent, h, ref, type PropType } from 'vue';\n\nconst cx = (...parts: (string | false | null | undefined)[]) => parts.filter(Boolean).join(' ');\n\nexport type ButtonVariant = 'primary' | 'ghost' | 'subtle' | 'outline' | 'danger';\nexport type BadgeTone = 'pos' | 'neg' | 'warn' | 'info' | 'muted';\nexport type AlertTone = 'info' | 'pos' | 'warn' | 'neg';\n\nexport const Button = defineComponent({\n name: 'VspButton',\n props: {\n variant: { type: String as PropType<ButtonVariant>, default: 'ghost' },\n size: { type: String as PropType<'sm'>, default: undefined },\n loading: Boolean,\n disabled: Boolean,\n },\n setup(props, { slots, attrs }) {\n return () =>\n h(\n 'button',\n {\n class: cx('btn', `btn-${props.variant}`, props.size === 'sm' && 'btn-sm'),\n disabled: props.disabled || props.loading,\n ...attrs,\n },\n [\n props.loading\n ? h('span', { class: 'ui-spinner', 'aria-hidden': 'true' })\n : slots.leading?.(),\n slots.default?.(),\n slots.trailing?.(),\n ],\n );\n },\n});\n\nexport const IconButton = defineComponent({\n name: 'VspIconButton',\n props: { label: { type: String, default: undefined } },\n setup(props, { slots, attrs }) {\n return () =>\n h('button', { class: 'vsp-icon-btn', type: 'button', 'aria-label': props.label, ...attrs }, [\n slots.default?.(),\n ]);\n },\n});\n\nexport const Badge = defineComponent({\n name: 'VspBadge',\n props: {\n tone: { type: String as PropType<BadgeTone>, default: 'muted' },\n dot: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h('span', { class: cx('badge', `badge-${props.tone}`) }, [\n props.dot ? h('i') : null,\n slots.default?.(),\n ]);\n },\n});\n\nexport const Tag = defineComponent({\n name: 'VspTag',\n emits: ['remove'],\n setup(props, { slots, emit }) {\n return () =>\n h('span', { class: 'ui-tag' }, [\n slots.default?.(),\n h('button', { type: 'button', 'aria-label': 'Remove', onClick: () => emit('remove') }, '×'),\n ]);\n },\n});\n\nexport const Kbd = defineComponent({\n name: 'VspKbd',\n setup(_, { slots }) {\n return () => h('kbd', { class: 'ui-kbd' }, slots.default?.());\n },\n});\n\nexport const Divider = defineComponent({\n name: 'VspDivider',\n props: { vertical: Boolean },\n setup(props) {\n return () => h('hr', { class: cx('ui-divider', props.vertical && 'v') });\n },\n});\n\nexport const Spinner = defineComponent({\n name: 'VspSpinner',\n props: { size: { type: String as PropType<'lg'>, default: undefined } },\n setup(props) {\n return () =>\n h('span', { class: cx('ui-spinner', props.size === 'lg' && 'lg'), 'aria-hidden': 'true' });\n },\n});\n\nexport const Card = defineComponent({\n name: 'VspCard',\n props: { pad: Boolean },\n setup(props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('card', props.pad && 'card-pad'), ...attrs }, slots.default?.());\n },\n});\n\nexport const CardHead = defineComponent({\n name: 'VspCardHead',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'card-head' }, [\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'ttl' }, props.title),\n props.desc\n ? h('div', { class: 'eyebrow', style: { marginTop: '3px' } }, props.desc)\n : null,\n ]),\n slots.right ? h('div', { class: 'vsp-top-spacer' }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Alert = defineComponent({\n name: 'VspAlert',\n props: {\n tone: { type: String as PropType<AlertTone>, default: 'info' },\n title: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: cx('ui-alert', props.tone) }, [\n slots.icon?.(),\n h('div', { style: { flex: 1 } }, [\n props.title ? h('div', { class: 'ui-alert-title' }, props.title) : null,\n slots.default ? h('div', { class: 'ui-alert-body' }, slots.default()) : null,\n ]),\n slots.action?.(),\n ]);\n },\n});\n\nexport const Field = defineComponent({\n name: 'VspField',\n props: {\n label: { type: String, default: undefined },\n required: Boolean,\n hint: { type: String, default: undefined },\n error: { type: String, default: undefined },\n htmlFor: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'ui-field' }, [\n props.label\n ? h('label', { class: 'ui-label', for: props.htmlFor }, [\n h('span', null, [\n props.label,\n props.required ? h('span', { class: 'req' }, ' *') : null,\n ]),\n ])\n : null,\n slots.default?.(),\n props.error || props.hint\n ? h('span', { class: cx('ui-hint', props.error && 'err') }, props.error || props.hint)\n : null,\n ]);\n },\n});\n\nexport const Input = defineComponent({\n name: 'VspInput',\n props: {\n modelValue: { type: String, default: '' },\n invalid: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h('input', {\n class: cx('ui-input', props.invalid && 'invalid'),\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Textarea = defineComponent({\n name: 'VspTextarea',\n props: { modelValue: { type: String, default: '' } },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit }) {\n return () =>\n h('textarea', {\n class: 'ui-textarea',\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLTextAreaElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Switch = defineComponent({\n name: 'VspSwitch',\n props: {\n modelValue: Boolean,\n size: { type: String as PropType<'sm'>, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('button', {\n type: 'button',\n disabled: props.disabled,\n class: cx('ui-switch', props.size === 'sm' && 'sm', props.modelValue && 'on'),\n 'aria-pressed': String(props.modelValue),\n onClick: () => emit('update:modelValue', !props.modelValue),\n });\n },\n});\n\nexport const Checkbox = defineComponent({\n name: 'VspCheckbox',\n props: {\n modelValue: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const toggle = () => {\n if (!props.disabled) emit('update:modelValue', !props.modelValue);\n };\n return () =>\n h(\n 'label',\n { class: 'ui-opt', style: { opacity: props.disabled ? 0.5 : 1 }, onClick: toggle },\n [\n h('span', { class: cx('ui-check', props.modelValue && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport type SelectOption = string | { value: string; label: string; sub?: string };\nconst optValue = (o: SelectOption) => (typeof o === 'string' ? o : o.value);\nconst optLabel = (o: SelectOption) => (typeof o === 'string' ? o : o.label);\n\nexport const Radio = defineComponent({\n name: 'VspRadio',\n props: {\n checked: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n },\n emits: ['select'],\n setup(props, { emit }) {\n return () =>\n h(\n 'label',\n {\n class: 'ui-opt',\n onClick: (e: Event) => {\n e.preventDefault();\n emit('select');\n },\n },\n [\n h('span', { class: cx('ui-radio-dot', props.checked && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport const RadioGroup = defineComponent({\n name: 'VspRadioGroup',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '12px' } },\n props.options.map((o) =>\n h(Radio, {\n key: optValue(o),\n label: optLabel(o),\n sub: typeof o === 'object' ? o.sub : undefined,\n checked: props.modelValue === optValue(o),\n onSelect: () => emit('update:modelValue', optValue(o)),\n }),\n ),\n );\n },\n});\n\nexport const Slider = defineComponent({\n name: 'VspSlider',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('input', {\n type: 'range',\n class: 'ui-slider',\n value: props.modelValue,\n min: props.min,\n max: props.max,\n step: props.step,\n onInput: (e: Event) =>\n emit('update:modelValue', Number((e.target as HTMLInputElement).value)),\n });\n },\n});\n\nexport const NativeSelect = defineComponent({\n name: 'VspNativeSelect',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h(\n 'select',\n {\n class: 'ui-select',\n value: props.modelValue,\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLSelectElement).value),\n ...attrs,\n },\n props.options.map((o) =>\n h('option', { key: optValue(o), value: optValue(o) }, optLabel(o)),\n ),\n );\n },\n});\n\nconst px = (v: string | number) => (typeof v === 'number' ? `${v}px` : v);\n\nexport const Progress = defineComponent({\n name: 'VspProgress',\n props: {\n value: { type: Number, default: 0 },\n tone: { type: String, default: undefined },\n height: { type: Number, default: 6 },\n },\n setup(props) {\n return () =>\n h('div', { class: 'meter', style: { height: px(props.height) } }, [\n h('i', {\n style: {\n width: `${Math.min(100, props.value)}%`,\n background: props.tone,\n transition: 'width .3s',\n },\n }),\n ]);\n },\n});\n\nexport const Skeleton = defineComponent({\n name: 'VspSkeleton',\n props: {\n w: { type: [String, Number] as PropType<string | number>, default: '100%' },\n h: { type: [String, Number] as PropType<string | number>, default: 12 },\n r: { type: Number, default: 7 },\n },\n setup(props) {\n return () =>\n h('div', {\n class: 'skel',\n style: { width: px(props.w), height: px(props.h), borderRadius: px(props.r) },\n });\n },\n});\n\nconst initialsOf = (name: string) =>\n name\n .split(' ')\n .map((s) => s.charAt(0))\n .slice(0, 2)\n .join('')\n .toUpperCase();\n\nexport interface Person {\n name: string;\n hue?: number;\n}\n\nexport const Avatar = defineComponent({\n name: 'VspAvatar',\n props: {\n name: { type: String, required: true },\n hue: { type: Number, default: 0 },\n size: { type: Number, default: 34 },\n },\n setup(props) {\n return () =>\n h(\n 'span',\n {\n class: 'vsp-avatar',\n style: {\n width: px(props.size),\n height: px(props.size),\n fontSize: px(props.size * 0.38),\n background: `linear-gradient(140deg, oklch(0.62 0.16 ${props.hue}), oklch(0.55 0.17 ${(props.hue + 50) % 360}))`,\n },\n },\n initialsOf(props.name),\n );\n },\n});\n\nexport const AvatarGroup = defineComponent({\n name: 'VspAvatarGroup',\n props: {\n people: { type: Array as PropType<Person[]>, default: () => [] },\n max: { type: Number, default: 4 },\n size: { type: Number, default: 32 },\n },\n setup(props) {\n return () => {\n const shown = props.people.slice(0, props.max);\n const extra = props.people.length - shown.length;\n return h('div', { style: { display: 'flex', alignItems: 'center' } }, [\n ...shown.map((p, i) =>\n h(\n 'span',\n {\n key: i,\n style: {\n marginLeft: i ? '-10px' : '0',\n border: '2px solid var(--surface-1)',\n borderRadius: '50%',\n position: 'relative',\n zIndex: shown.length - i,\n },\n },\n [h(Avatar, { name: p.name, hue: p.hue ?? 0, size: props.size })],\n ),\n ),\n extra > 0\n ? h(\n 'span',\n {\n style: {\n marginLeft: '-10px',\n width: px(props.size),\n height: px(props.size),\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n background: 'var(--surface-3)',\n border: '2px solid var(--surface-1)',\n fontSize: px(props.size * 0.34),\n fontWeight: 700,\n color: 'var(--text-dim)',\n },\n },\n `+${extra}`,\n )\n : null,\n ]);\n };\n },\n});\n\nexport const Segmented = defineComponent({\n name: 'VspSegmented',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<string[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { class: 'ui-seg' },\n props.options.map((o) =>\n h(\n 'button',\n {\n key: o,\n type: 'button',\n class: cx(props.modelValue === o && 'on'),\n onClick: () => emit('update:modelValue', o),\n },\n o,\n ),\n ),\n );\n },\n});\n\nconst ICON_PATHS = { chevL: 'M15 18l-6-6 6-6', chevR: 'M9 18l6-6-6-6', check: 'M20 6L9 17l-5-5' };\nconst svgIcon = (d: string, size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d })],\n );\n\nexport type TabItem = string | { value: string; label: string; count?: number };\n\nexport const Tabs = defineComponent({\n name: 'VspTabs',\n props: {\n tabs: { type: Array as PropType<TabItem[]>, default: () => [] },\n modelValue: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n return () =>\n h('div', { class: 'ui-tabs', style: { alignItems: 'center' } }, [\n ...props.tabs.map((t) => {\n const id = typeof t === 'string' ? t : t.value;\n const label = typeof t === 'string' ? t : t.label;\n const count = typeof t === 'object' ? t.count : undefined;\n return h(\n 'button',\n {\n key: id,\n type: 'button',\n class: cx('ui-tab', props.modelValue === id && 'on'),\n onClick: () => emit('update:modelValue', id),\n },\n [\n label,\n count != null\n ? h('span', { class: 'badge badge-muted', style: { marginLeft: '7px' } }, count)\n : null,\n ],\n );\n }),\n slots.right ? h('div', { style: { flex: 1 } }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Breadcrumb = defineComponent({\n name: 'VspBreadcrumb',\n props: { items: { type: Array as PropType<string[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'nav',\n { style: { display: 'flex', alignItems: 'center', gap: '7px', fontSize: '12.5px' } },\n props.items.flatMap((it, i) => {\n const last = i === props.items.length - 1;\n return [\n i > 0\n ? h(\n 'span',\n { key: `s${i}`, style: { color: 'var(--text-faint)', display: 'flex' } },\n [svgIcon(ICON_PATHS.chevR, 13)],\n )\n : null,\n h(\n 'span',\n {\n key: i,\n style: {\n color: last ? 'var(--text)' : 'var(--text-dim)',\n fontWeight: last ? 600 : 500,\n },\n },\n it,\n ),\n ];\n }),\n );\n },\n});\n\nexport const Pagination = defineComponent({\n name: 'VspPagination',\n props: {\n modelValue: { type: Number, default: 0 },\n pages: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () => {\n const page = props.modelValue;\n const nums: (number | '…')[] = [];\n for (let i = 0; i < props.pages; i++) {\n if (i === 0 || i === props.pages - 1 || Math.abs(i - page) <= 1) nums.push(i);\n else if (nums[nums.length - 1] !== '…') nums.push('…');\n }\n return h('div', { style: { display: 'flex', gap: '4px', alignItems: 'center' } }, [\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page === 0,\n 'aria-label': 'Previous page',\n onClick: () => emit('update:modelValue', page - 1),\n },\n [svgIcon(ICON_PATHS.chevL)],\n ),\n ...nums.map((n, i) =>\n n === '…'\n ? h(\n 'span',\n {\n key: `g${i}`,\n class: 'mono',\n style: { padding: '0 6px', color: 'var(--text-faint)' },\n },\n '…',\n )\n : h(\n 'button',\n {\n key: n,\n type: 'button',\n class: cx('btn', 'btn-sm', n === page ? 'btn-primary' : 'btn-subtle'),\n style: { minWidth: '32px', padding: 0 },\n onClick: () => emit('update:modelValue', n),\n },\n n + 1,\n ),\n ),\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page >= props.pages - 1,\n 'aria-label': 'Next page',\n onClick: () => emit('update:modelValue', page + 1),\n },\n [svgIcon(ICON_PATHS.chevR)],\n ),\n ]);\n };\n },\n});\n\nexport const Stepper = defineComponent({\n name: 'VspStepper',\n props: {\n steps: { type: Array as PropType<string[]>, default: () => [] },\n current: { type: Number, default: 0 },\n },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-steps' },\n props.steps.flatMap((s, i) => [\n i > 0\n ? h('div', { key: `b${i}`, class: cx('ui-step-bar', i <= props.current && 'done') })\n : null,\n h(\n 'div',\n {\n key: i,\n class: cx(\n 'ui-step',\n i < props.current && 'done',\n i === props.current && 'active',\n i > props.current && 'pending',\n ),\n },\n [\n h('span', { class: 'ui-step-dot' }, [\n i < props.current ? svgIcon(ICON_PATHS.check) : i + 1,\n ]),\n h('span', { class: 'ui-step-label' }, s),\n ],\n ),\n ]),\n );\n },\n});\n\nexport const CircularProgress = defineComponent({\n name: 'VspCircularProgress',\n props: {\n value: { type: Number, default: 0 },\n size: { type: Number, default: 76 },\n thickness: { type: Number, default: 7 },\n color: { type: String, default: 'var(--accent)' },\n label: { type: String, default: undefined },\n },\n setup(props) {\n return () => {\n const r = (props.size - props.thickness) / 2;\n const circ = 2 * Math.PI * r;\n return h(\n 'div',\n { style: { position: 'relative', width: px(props.size), height: px(props.size) } },\n [\n h(\n 'svg',\n { width: props.size, height: props.size, style: { transform: 'rotate(-90deg)' } },\n [\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': props.thickness,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circ,\n 'stroke-dashoffset': circ * (1 - Math.min(100, props.value) / 100),\n style: { transition: 'stroke-dashoffset .5s cubic-bezier(.3,.7,.3,1)' },\n }),\n ],\n ),\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n position: 'absolute',\n inset: 0,\n display: 'grid',\n placeItems: 'center',\n fontWeight: 800,\n fontSize: px(props.size * 0.24),\n },\n },\n props.label ?? `${Math.round(props.value)}%`,\n ),\n ],\n );\n };\n },\n});\n\nexport const Stat = defineComponent({\n name: 'VspStat',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n tone: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n { class: 'card card-pad', style: { display: 'flex', alignItems: 'center', gap: '13px' } },\n [\n slots.icon\n ? h(\n 'span',\n {\n style: {\n width: '38px',\n height: '38px',\n borderRadius: 'var(--r-sm)',\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n background: `color-mix(in oklab, ${props.tone} 14%, transparent)`,\n color: props.tone,\n },\n },\n slots.icon(),\n )\n : null,\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'eyebrow' }, props.label),\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'baseline', gap: '8px', marginTop: '3px' } },\n [\n h(\n 'span',\n {\n class: 'tnum',\n style: { fontSize: '22px', fontWeight: 800, letterSpacing: '-.02em' },\n },\n props.value,\n ),\n props.delta != null\n ? h(\n 'span',\n {\n class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg'),\n style: { padding: '1px 6px' },\n },\n [\n svgIcon(\n props.deltaDir === 'up'\n ? 'M12 19V5M5 12l7-7 7 7'\n : 'M12 5v14M5 12l7 7 7-7',\n 10,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n ]),\n ],\n );\n },\n});\n\nconst clockSvg = (size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('circle', { cx: 12, cy: 12, r: 9 }), h('path', { d: 'M12 7v5l3 2' })],\n );\n\nconst TL_TONE: Record<string, string> = {\n pos: 'var(--success)',\n neg: 'var(--danger)',\n warn: 'var(--warning)',\n info: 'var(--accent)',\n};\n\nexport interface TimelineItem {\n title: string;\n time?: string;\n body?: string;\n tone?: 'pos' | 'neg' | 'warn' | 'info';\n}\n\nexport const Timeline = defineComponent({\n name: 'VspTimeline',\n props: { items: { type: Array as PropType<TimelineItem[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-tl' },\n props.items.map((it, i) => {\n const c = it.tone ? TL_TONE[it.tone] : undefined;\n return h('div', { key: i, class: 'ui-tl-item' }, [\n h(\n 'span',\n {\n class: 'ui-tl-dot',\n style: c\n ? {\n background: `color-mix(in oklab, ${c} 14%, transparent)`,\n color: c,\n borderColor: `color-mix(in oklab, ${c} 30%, transparent)`,\n }\n : undefined,\n },\n [clockSvg()],\n ),\n h('div', { class: 'ui-tl-body' }, [\n h(\n 'div',\n {\n style: { display: 'flex', alignItems: 'baseline', gap: '8px', flexWrap: 'wrap' },\n },\n [\n h('span', { style: { fontWeight: 600, fontSize: '13.5px' } }, it.title),\n it.time\n ? h('span', { class: 'eyebrow', style: { marginLeft: 'auto' } }, it.time)\n : null,\n ],\n ),\n it.body\n ? h(\n 'div',\n { style: { fontSize: '12.5px', color: 'var(--text-dim)', marginTop: '3px' } },\n it.body,\n )\n : null,\n ]),\n ]);\n }),\n );\n },\n});\n\nexport const DescriptionList = defineComponent({\n name: 'VspDescriptionList',\n props: { items: { type: Array as PropType<[string, string][]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'dl',\n { class: 'ui-dl' },\n props.items.flatMap(([k, v], i) => {\n const last = i === props.items.length - 1 ? 'last' : '';\n return [\n h('dt', { key: `k${i}`, class: last }, k),\n h('dd', { key: `v${i}`, class: last }, v),\n ];\n }),\n );\n },\n});\n\nconst BANNER_ICON: Record<string, string> = {\n info: 'M12 3l1.6 5L19 9.6l-5 1.6L12 16l-1.6-4.8L5 9.6l5.4-1.6z',\n warn: 'M18 8a6 6 0 00-12 0c0 7-3 9-3 9h18s-3-2-3-9',\n accent: 'M13 2L3 14h9l-1 8 10-12h-9l1-8z',\n};\nconst X_PATH = 'M18 6L6 18M6 6l12 12';\nconst INBOX_PATH =\n 'M22 12h-6l-2 3h-4l-2-3H2M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z';\n\nexport const Banner = defineComponent({\n name: 'VspBanner',\n props: {\n tone: { type: String as PropType<'info' | 'warn' | 'accent'>, default: 'info' },\n dismissible: Boolean,\n },\n emits: ['dismiss'],\n setup(props, { slots, emit }) {\n return () =>\n h('div', { class: cx('ui-banner', props.tone) }, [\n slots.icon ? slots.icon() : svgIcon(BANNER_ICON[props.tone]!, 18),\n h('div', { style: { flex: 1, fontSize: '13px', fontWeight: 500 } }, slots.default?.()),\n slots.action?.(),\n props.dismissible\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ui-banner-x',\n 'aria-label': 'Dismiss',\n onClick: () => emit('dismiss'),\n },\n [svgIcon(X_PATH, 15)],\n )\n : null,\n ]);\n },\n});\n\nexport const EmptyState = defineComponent({\n name: 'VspEmptyState',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n compact: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n style: {\n display: 'grid',\n placeItems: 'center',\n textAlign: 'center',\n padding: props.compact ? '32px 20px' : '56px 24px',\n },\n },\n [\n h('div', { style: { maxWidth: '340px' } }, [\n h(\n 'span',\n {\n style: {\n width: '56px',\n height: '56px',\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n margin: '0 auto 18px',\n background: 'color-mix(in oklab, var(--accent) 12%, transparent)',\n color: 'var(--accent)',\n border: '1px solid color-mix(in oklab, var(--accent) 22%, transparent)',\n },\n },\n slots.icon ? slots.icon() : [svgIcon(INBOX_PATH, 26)],\n ),\n h('div', { style: { fontSize: '17px', fontWeight: 700 } }, props.title),\n props.desc\n ? h(\n 'p',\n {\n style: {\n margin: '7px 0 0',\n color: 'var(--text-dim)',\n fontSize: '13.5px',\n lineHeight: 1.6,\n },\n },\n props.desc,\n )\n : null,\n slots.action\n ? h(\n 'div',\n {\n style: {\n marginTop: '20px',\n display: 'flex',\n gap: '8px',\n justifyContent: 'center',\n },\n },\n slots.action(),\n )\n : null,\n ]),\n ],\n );\n },\n});\n\nexport interface AccordionItem {\n title: string;\n body: string;\n}\n\nexport const Accordion = defineComponent({\n name: 'VspAccordion',\n props: {\n items: { type: Array as PropType<AccordionItem[]>, default: () => [] },\n multiple: Boolean,\n defaultOpen: { type: Array as PropType<number[]>, default: () => [] },\n },\n setup(props) {\n const open = ref(new Set<number>(props.defaultOpen));\n const toggle = (i: number) => {\n const s = open.value;\n const n = new Set<number>(props.multiple ? s : []);\n if (s.has(i)) n.delete(i);\n else n.add(i);\n open.value = n;\n };\n return () =>\n h(\n 'div',\n { class: 'ui-acc' },\n props.items.map((it, i) =>\n h('div', { key: i, class: cx('ui-acc-item', open.value.has(i) && 'open') }, [\n h('button', { type: 'button', class: 'ui-acc-head', onClick: () => toggle(i) }, [\n it.title,\n h(\n 'svg',\n {\n class: 'chev',\n viewBox: '0 0 24 24',\n width: 17,\n height: 17,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d: ICON_PATHS.chevR })],\n ),\n ]),\n h('div', { class: 'ui-acc-bodywrap' }, [\n h('div', null, [h('div', { class: 'ui-acc-body' }, it.body)]),\n ]),\n ]),\n ),\n );\n },\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @vespera-ui/vue — Vue 3 components for the Vespera design system.\n *\n * Thin wrappers over `@vespera-ui/css`: they emit the same `.vsp-`/`ui-` classes\n * as `@vespera-ui/react`, so theming via `.vsp-root` data-attributes works\n * identically. Import the CSS once and wrap your app in a themed root.\n */\nimport { defineComponent, h, ref, useId, type PropType } from 'vue';\n\nconst cx = (...parts: (string | false | null | undefined)[]) => parts.filter(Boolean).join(' ');\n\nexport type ButtonVariant = 'primary' | 'ghost' | 'subtle' | 'outline' | 'danger';\nexport type BadgeTone = 'pos' | 'neg' | 'warn' | 'info' | 'muted';\nexport type AlertTone = 'info' | 'pos' | 'warn' | 'neg';\n\nexport const Button = defineComponent({\n name: 'VspButton',\n props: {\n variant: { type: String as PropType<ButtonVariant>, default: 'ghost' },\n size: { type: String as PropType<'sm'>, default: undefined },\n loading: Boolean,\n disabled: Boolean,\n },\n setup(props, { slots, attrs }) {\n return () =>\n h(\n 'button',\n {\n class: cx('btn', `btn-${props.variant}`, props.size === 'sm' && 'btn-sm'),\n disabled: props.disabled || props.loading,\n ...attrs,\n },\n [\n props.loading\n ? h('span', { class: 'ui-spinner', 'aria-hidden': 'true' })\n : slots.leading?.(),\n slots.default?.(),\n slots.trailing?.(),\n ],\n );\n },\n});\n\nexport const IconButton = defineComponent({\n name: 'VspIconButton',\n props: { label: { type: String, default: undefined } },\n setup(props, { slots, attrs }) {\n return () =>\n h('button', { class: 'vsp-icon-btn', type: 'button', 'aria-label': props.label, ...attrs }, [\n slots.default?.(),\n ]);\n },\n});\n\nexport const Badge = defineComponent({\n name: 'VspBadge',\n props: {\n tone: { type: String as PropType<BadgeTone>, default: 'muted' },\n dot: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h('span', { class: cx('badge', `badge-${props.tone}`) }, [\n props.dot ? h('i') : null,\n slots.default?.(),\n ]);\n },\n});\n\nexport const Tag = defineComponent({\n name: 'VspTag',\n emits: ['remove'],\n setup(props, { slots, emit }) {\n return () =>\n h('span', { class: 'ui-tag' }, [\n slots.default?.(),\n h('button', { type: 'button', 'aria-label': 'Remove', onClick: () => emit('remove') }, '×'),\n ]);\n },\n});\n\nexport const Kbd = defineComponent({\n name: 'VspKbd',\n setup(_, { slots }) {\n return () => h('kbd', { class: 'ui-kbd' }, slots.default?.());\n },\n});\n\nexport const Divider = defineComponent({\n name: 'VspDivider',\n props: { vertical: Boolean },\n setup(props) {\n return () => h('hr', { class: cx('ui-divider', props.vertical && 'v') });\n },\n});\n\nexport const Spinner = defineComponent({\n name: 'VspSpinner',\n props: { size: { type: String as PropType<'lg'>, default: undefined } },\n setup(props) {\n return () =>\n h('span', { class: cx('ui-spinner', props.size === 'lg' && 'lg'), 'aria-hidden': 'true' });\n },\n});\n\nexport const Card = defineComponent({\n name: 'VspCard',\n props: { pad: Boolean },\n setup(props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('card', props.pad && 'card-pad'), ...attrs }, slots.default?.());\n },\n});\n\nexport const CardHead = defineComponent({\n name: 'VspCardHead',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'card-head' }, [\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'ttl' }, props.title),\n props.desc\n ? h('div', { class: 'eyebrow', style: { marginTop: '3px' } }, props.desc)\n : null,\n ]),\n slots.right ? h('div', { class: 'vsp-top-spacer' }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Alert = defineComponent({\n name: 'VspAlert',\n props: {\n tone: { type: String as PropType<AlertTone>, default: 'info' },\n title: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: cx('ui-alert', props.tone) }, [\n slots.icon?.(),\n h('div', { style: { flex: 1 } }, [\n props.title ? h('div', { class: 'ui-alert-title' }, props.title) : null,\n slots.default ? h('div', { class: 'ui-alert-body' }, slots.default()) : null,\n ]),\n slots.action?.(),\n ]);\n },\n});\n\nexport const Field = defineComponent({\n name: 'VspField',\n props: {\n label: { type: String, default: undefined },\n required: Boolean,\n hint: { type: String, default: undefined },\n error: { type: String, default: undefined },\n htmlFor: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'ui-field' }, [\n props.label\n ? h('label', { class: 'ui-label', for: props.htmlFor }, [\n h('span', null, [\n props.label,\n props.required ? h('span', { class: 'req' }, ' *') : null,\n ]),\n ])\n : null,\n slots.default?.(),\n props.error || props.hint\n ? h('span', { class: cx('ui-hint', props.error && 'err') }, props.error || props.hint)\n : null,\n ]);\n },\n});\n\nexport const Input = defineComponent({\n name: 'VspInput',\n props: {\n modelValue: { type: String, default: '' },\n invalid: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h('input', {\n class: cx('ui-input', props.invalid && 'invalid'),\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Textarea = defineComponent({\n name: 'VspTextarea',\n props: { modelValue: { type: String, default: '' } },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit }) {\n return () =>\n h('textarea', {\n class: 'ui-textarea',\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLTextAreaElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Switch = defineComponent({\n name: 'VspSwitch',\n props: {\n modelValue: Boolean,\n size: { type: String as PropType<'sm'>, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('button', {\n type: 'button',\n disabled: props.disabled,\n class: cx('ui-switch', props.size === 'sm' && 'sm', props.modelValue && 'on'),\n 'aria-pressed': String(props.modelValue),\n onClick: () => emit('update:modelValue', !props.modelValue),\n });\n },\n});\n\nexport const Checkbox = defineComponent({\n name: 'VspCheckbox',\n props: {\n modelValue: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const toggle = () => {\n if (!props.disabled) emit('update:modelValue', !props.modelValue);\n };\n return () =>\n h(\n 'label',\n { class: 'ui-opt', style: { opacity: props.disabled ? 0.5 : 1 }, onClick: toggle },\n [\n h('span', { class: cx('ui-check', props.modelValue && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport type SelectOption = string | { value: string; label: string; sub?: string };\nconst optValue = (o: SelectOption) => (typeof o === 'string' ? o : o.value);\nconst optLabel = (o: SelectOption) => (typeof o === 'string' ? o : o.label);\n\nexport const Radio = defineComponent({\n name: 'VspRadio',\n props: {\n checked: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n },\n emits: ['select'],\n setup(props, { emit }) {\n return () =>\n h(\n 'label',\n {\n class: 'ui-opt',\n onClick: (e: Event) => {\n e.preventDefault();\n emit('select');\n },\n },\n [\n h('span', { class: cx('ui-radio-dot', props.checked && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport const RadioGroup = defineComponent({\n name: 'VspRadioGroup',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '12px' } },\n props.options.map((o) =>\n h(Radio, {\n key: optValue(o),\n label: optLabel(o),\n sub: typeof o === 'object' ? o.sub : undefined,\n checked: props.modelValue === optValue(o),\n onSelect: () => emit('update:modelValue', optValue(o)),\n }),\n ),\n );\n },\n});\n\nexport const Slider = defineComponent({\n name: 'VspSlider',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('input', {\n type: 'range',\n class: 'ui-slider',\n value: props.modelValue,\n min: props.min,\n max: props.max,\n step: props.step,\n onInput: (e: Event) =>\n emit('update:modelValue', Number((e.target as HTMLInputElement).value)),\n });\n },\n});\n\nexport const NativeSelect = defineComponent({\n name: 'VspNativeSelect',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h(\n 'select',\n {\n class: 'ui-select',\n value: props.modelValue,\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLSelectElement).value),\n ...attrs,\n },\n props.options.map((o) =>\n h('option', { key: optValue(o), value: optValue(o) }, optLabel(o)),\n ),\n );\n },\n});\n\nconst px = (v: string | number) => (typeof v === 'number' ? `${v}px` : v);\n\nexport const Progress = defineComponent({\n name: 'VspProgress',\n props: {\n value: { type: Number, default: 0 },\n tone: { type: String, default: undefined },\n height: { type: Number, default: 6 },\n },\n setup(props) {\n return () =>\n h('div', { class: 'meter', style: { height: px(props.height) } }, [\n h('i', {\n style: {\n width: `${Math.min(100, props.value)}%`,\n background: props.tone,\n transition: 'width .3s',\n },\n }),\n ]);\n },\n});\n\nexport const Skeleton = defineComponent({\n name: 'VspSkeleton',\n props: {\n w: { type: [String, Number] as PropType<string | number>, default: '100%' },\n h: { type: [String, Number] as PropType<string | number>, default: 12 },\n r: { type: Number, default: 7 },\n },\n setup(props) {\n return () =>\n h('div', {\n class: 'skel',\n style: { width: px(props.w), height: px(props.h), borderRadius: px(props.r) },\n });\n },\n});\n\nconst initialsOf = (name: string) =>\n name\n .split(' ')\n .map((s) => s.charAt(0))\n .slice(0, 2)\n .join('')\n .toUpperCase();\n\nexport interface Person {\n name: string;\n hue?: number;\n}\n\nexport const Avatar = defineComponent({\n name: 'VspAvatar',\n props: {\n name: { type: String, required: true },\n hue: { type: Number, default: 0 },\n size: { type: Number, default: 34 },\n },\n setup(props) {\n return () =>\n h(\n 'span',\n {\n class: 'vsp-avatar',\n style: {\n width: px(props.size),\n height: px(props.size),\n fontSize: px(props.size * 0.38),\n background: `linear-gradient(140deg, oklch(0.62 0.16 ${props.hue}), oklch(0.55 0.17 ${(props.hue + 50) % 360}))`,\n },\n },\n initialsOf(props.name),\n );\n },\n});\n\nexport const AvatarGroup = defineComponent({\n name: 'VspAvatarGroup',\n props: {\n people: { type: Array as PropType<Person[]>, default: () => [] },\n max: { type: Number, default: 4 },\n size: { type: Number, default: 32 },\n },\n setup(props) {\n return () => {\n const shown = props.people.slice(0, props.max);\n const extra = props.people.length - shown.length;\n return h('div', { style: { display: 'flex', alignItems: 'center' } }, [\n ...shown.map((p, i) =>\n h(\n 'span',\n {\n key: i,\n style: {\n marginLeft: i ? '-10px' : '0',\n border: '2px solid var(--surface-1)',\n borderRadius: '50%',\n position: 'relative',\n zIndex: shown.length - i,\n },\n },\n [h(Avatar, { name: p.name, hue: p.hue ?? 0, size: props.size })],\n ),\n ),\n extra > 0\n ? h(\n 'span',\n {\n style: {\n marginLeft: '-10px',\n width: px(props.size),\n height: px(props.size),\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n background: 'var(--surface-3)',\n border: '2px solid var(--surface-1)',\n fontSize: px(props.size * 0.34),\n fontWeight: 700,\n color: 'var(--text-dim)',\n },\n },\n `+${extra}`,\n )\n : null,\n ]);\n };\n },\n});\n\nexport const Segmented = defineComponent({\n name: 'VspSegmented',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<string[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { class: 'ui-seg' },\n props.options.map((o) =>\n h(\n 'button',\n {\n key: o,\n type: 'button',\n class: cx(props.modelValue === o && 'on'),\n onClick: () => emit('update:modelValue', o),\n },\n o,\n ),\n ),\n );\n },\n});\n\nconst ICON_PATHS = { chevL: 'M15 18l-6-6 6-6', chevR: 'M9 18l6-6-6-6', check: 'M20 6L9 17l-5-5' };\nconst svgIcon = (d: string, size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d })],\n );\n\nexport type TabItem = string | { value: string; label: string; count?: number };\n\nexport const Tabs = defineComponent({\n name: 'VspTabs',\n props: {\n tabs: { type: Array as PropType<TabItem[]>, default: () => [] },\n modelValue: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n return () =>\n h('div', { class: 'ui-tabs', style: { alignItems: 'center' } }, [\n ...props.tabs.map((t) => {\n const id = typeof t === 'string' ? t : t.value;\n const label = typeof t === 'string' ? t : t.label;\n const count = typeof t === 'object' ? t.count : undefined;\n return h(\n 'button',\n {\n key: id,\n type: 'button',\n class: cx('ui-tab', props.modelValue === id && 'on'),\n onClick: () => emit('update:modelValue', id),\n },\n [\n label,\n count != null\n ? h('span', { class: 'badge badge-muted', style: { marginLeft: '7px' } }, count)\n : null,\n ],\n );\n }),\n slots.right ? h('div', { style: { flex: 1 } }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Breadcrumb = defineComponent({\n name: 'VspBreadcrumb',\n props: { items: { type: Array as PropType<string[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'nav',\n { style: { display: 'flex', alignItems: 'center', gap: '7px', fontSize: '12.5px' } },\n props.items.flatMap((it, i) => {\n const last = i === props.items.length - 1;\n return [\n i > 0\n ? h(\n 'span',\n { key: `s${i}`, style: { color: 'var(--text-faint)', display: 'flex' } },\n [svgIcon(ICON_PATHS.chevR, 13)],\n )\n : null,\n h(\n 'span',\n {\n key: i,\n style: {\n color: last ? 'var(--text)' : 'var(--text-dim)',\n fontWeight: last ? 600 : 500,\n },\n },\n it,\n ),\n ];\n }),\n );\n },\n});\n\nexport const Pagination = defineComponent({\n name: 'VspPagination',\n props: {\n modelValue: { type: Number, default: 0 },\n pages: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () => {\n const page = props.modelValue;\n const nums: (number | '…')[] = [];\n for (let i = 0; i < props.pages; i++) {\n if (i === 0 || i === props.pages - 1 || Math.abs(i - page) <= 1) nums.push(i);\n else if (nums[nums.length - 1] !== '…') nums.push('…');\n }\n return h('div', { style: { display: 'flex', gap: '4px', alignItems: 'center' } }, [\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page === 0,\n 'aria-label': 'Previous page',\n onClick: () => emit('update:modelValue', page - 1),\n },\n [svgIcon(ICON_PATHS.chevL)],\n ),\n ...nums.map((n, i) =>\n n === '…'\n ? h(\n 'span',\n {\n key: `g${i}`,\n class: 'mono',\n style: { padding: '0 6px', color: 'var(--text-faint)' },\n },\n '…',\n )\n : h(\n 'button',\n {\n key: n,\n type: 'button',\n class: cx('btn', 'btn-sm', n === page ? 'btn-primary' : 'btn-subtle'),\n style: { minWidth: '32px', padding: 0 },\n onClick: () => emit('update:modelValue', n),\n },\n n + 1,\n ),\n ),\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page >= props.pages - 1,\n 'aria-label': 'Next page',\n onClick: () => emit('update:modelValue', page + 1),\n },\n [svgIcon(ICON_PATHS.chevR)],\n ),\n ]);\n };\n },\n});\n\nexport const Stepper = defineComponent({\n name: 'VspStepper',\n props: {\n steps: { type: Array as PropType<string[]>, default: () => [] },\n current: { type: Number, default: 0 },\n },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-steps' },\n props.steps.flatMap((s, i) => [\n i > 0\n ? h('div', { key: `b${i}`, class: cx('ui-step-bar', i <= props.current && 'done') })\n : null,\n h(\n 'div',\n {\n key: i,\n class: cx(\n 'ui-step',\n i < props.current && 'done',\n i === props.current && 'active',\n i > props.current && 'pending',\n ),\n },\n [\n h('span', { class: 'ui-step-dot' }, [\n i < props.current ? svgIcon(ICON_PATHS.check) : i + 1,\n ]),\n h('span', { class: 'ui-step-label' }, s),\n ],\n ),\n ]),\n );\n },\n});\n\nexport const CircularProgress = defineComponent({\n name: 'VspCircularProgress',\n props: {\n value: { type: Number, default: 0 },\n size: { type: Number, default: 76 },\n thickness: { type: Number, default: 7 },\n color: { type: String, default: 'var(--accent)' },\n label: { type: String, default: undefined },\n },\n setup(props) {\n return () => {\n const r = (props.size - props.thickness) / 2;\n const circ = 2 * Math.PI * r;\n return h(\n 'div',\n { style: { position: 'relative', width: px(props.size), height: px(props.size) } },\n [\n h(\n 'svg',\n { width: props.size, height: props.size, style: { transform: 'rotate(-90deg)' } },\n [\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': props.thickness,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circ,\n 'stroke-dashoffset': circ * (1 - Math.min(100, props.value) / 100),\n style: { transition: 'stroke-dashoffset .5s cubic-bezier(.3,.7,.3,1)' },\n }),\n ],\n ),\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n position: 'absolute',\n inset: 0,\n display: 'grid',\n placeItems: 'center',\n fontWeight: 800,\n fontSize: px(props.size * 0.24),\n },\n },\n props.label ?? `${Math.round(props.value)}%`,\n ),\n ],\n );\n };\n },\n});\n\nexport const Stat = defineComponent({\n name: 'VspStat',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n tone: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n { class: 'card card-pad', style: { display: 'flex', alignItems: 'center', gap: '13px' } },\n [\n slots.icon\n ? h(\n 'span',\n {\n style: {\n width: '38px',\n height: '38px',\n borderRadius: 'var(--r-sm)',\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n background: `color-mix(in oklab, ${props.tone} 14%, transparent)`,\n color: props.tone,\n },\n },\n slots.icon(),\n )\n : null,\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'eyebrow' }, props.label),\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'baseline', gap: '8px', marginTop: '3px' } },\n [\n h(\n 'span',\n {\n class: 'tnum',\n style: { fontSize: '22px', fontWeight: 800, letterSpacing: '-.02em' },\n },\n props.value,\n ),\n props.delta != null\n ? h(\n 'span',\n {\n class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg'),\n style: { padding: '1px 6px' },\n },\n [\n svgIcon(\n props.deltaDir === 'up'\n ? 'M12 19V5M5 12l7-7 7 7'\n : 'M12 5v14M5 12l7 7 7-7',\n 10,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n ]),\n ],\n );\n },\n});\n\nconst clockSvg = (size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('circle', { cx: 12, cy: 12, r: 9 }), h('path', { d: 'M12 7v5l3 2' })],\n );\n\nconst TL_TONE: Record<string, string> = {\n pos: 'var(--success)',\n neg: 'var(--danger)',\n warn: 'var(--warning)',\n info: 'var(--accent)',\n};\n\nexport interface TimelineItem {\n title: string;\n time?: string;\n body?: string;\n tone?: 'pos' | 'neg' | 'warn' | 'info';\n}\n\nexport const Timeline = defineComponent({\n name: 'VspTimeline',\n props: { items: { type: Array as PropType<TimelineItem[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-tl' },\n props.items.map((it, i) => {\n const c = it.tone ? TL_TONE[it.tone] : undefined;\n return h('div', { key: i, class: 'ui-tl-item' }, [\n h(\n 'span',\n {\n class: 'ui-tl-dot',\n style: c\n ? {\n background: `color-mix(in oklab, ${c} 14%, transparent)`,\n color: c,\n borderColor: `color-mix(in oklab, ${c} 30%, transparent)`,\n }\n : undefined,\n },\n [clockSvg()],\n ),\n h('div', { class: 'ui-tl-body' }, [\n h(\n 'div',\n {\n style: { display: 'flex', alignItems: 'baseline', gap: '8px', flexWrap: 'wrap' },\n },\n [\n h('span', { style: { fontWeight: 600, fontSize: '13.5px' } }, it.title),\n it.time\n ? h('span', { class: 'eyebrow', style: { marginLeft: 'auto' } }, it.time)\n : null,\n ],\n ),\n it.body\n ? h(\n 'div',\n { style: { fontSize: '12.5px', color: 'var(--text-dim)', marginTop: '3px' } },\n it.body,\n )\n : null,\n ]),\n ]);\n }),\n );\n },\n});\n\nexport const DescriptionList = defineComponent({\n name: 'VspDescriptionList',\n props: { items: { type: Array as PropType<[string, string][]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'dl',\n { class: 'ui-dl' },\n props.items.flatMap(([k, v], i) => {\n const last = i === props.items.length - 1 ? 'last' : '';\n return [\n h('dt', { key: `k${i}`, class: last }, k),\n h('dd', { key: `v${i}`, class: last }, v),\n ];\n }),\n );\n },\n});\n\nconst BANNER_ICON: Record<string, string> = {\n info: 'M12 3l1.6 5L19 9.6l-5 1.6L12 16l-1.6-4.8L5 9.6l5.4-1.6z',\n warn: 'M18 8a6 6 0 00-12 0c0 7-3 9-3 9h18s-3-2-3-9',\n accent: 'M13 2L3 14h9l-1 8 10-12h-9l1-8z',\n};\nconst X_PATH = 'M18 6L6 18M6 6l12 12';\nconst INBOX_PATH =\n 'M22 12h-6l-2 3h-4l-2-3H2M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z';\n\nexport const Banner = defineComponent({\n name: 'VspBanner',\n props: {\n tone: { type: String as PropType<'info' | 'warn' | 'accent'>, default: 'info' },\n dismissible: Boolean,\n },\n emits: ['dismiss'],\n setup(props, { slots, emit }) {\n return () =>\n h('div', { class: cx('ui-banner', props.tone) }, [\n slots.icon ? slots.icon() : svgIcon(BANNER_ICON[props.tone]!, 18),\n h('div', { style: { flex: 1, fontSize: '13px', fontWeight: 500 } }, slots.default?.()),\n slots.action?.(),\n props.dismissible\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ui-banner-x',\n 'aria-label': 'Dismiss',\n onClick: () => emit('dismiss'),\n },\n [svgIcon(X_PATH, 15)],\n )\n : null,\n ]);\n },\n});\n\nexport const EmptyState = defineComponent({\n name: 'VspEmptyState',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n compact: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n style: {\n display: 'grid',\n placeItems: 'center',\n textAlign: 'center',\n padding: props.compact ? '32px 20px' : '56px 24px',\n },\n },\n [\n h('div', { style: { maxWidth: '340px' } }, [\n h(\n 'span',\n {\n style: {\n width: '56px',\n height: '56px',\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n margin: '0 auto 18px',\n background: 'color-mix(in oklab, var(--accent) 12%, transparent)',\n color: 'var(--accent)',\n border: '1px solid color-mix(in oklab, var(--accent) 22%, transparent)',\n },\n },\n slots.icon ? slots.icon() : [svgIcon(INBOX_PATH, 26)],\n ),\n h('div', { style: { fontSize: '17px', fontWeight: 700 } }, props.title),\n props.desc\n ? h(\n 'p',\n {\n style: {\n margin: '7px 0 0',\n color: 'var(--text-dim)',\n fontSize: '13.5px',\n lineHeight: 1.6,\n },\n },\n props.desc,\n )\n : null,\n slots.action\n ? h(\n 'div',\n {\n style: {\n marginTop: '20px',\n display: 'flex',\n gap: '8px',\n justifyContent: 'center',\n },\n },\n slots.action(),\n )\n : null,\n ]),\n ],\n );\n },\n});\n\nexport interface AccordionItem {\n title: string;\n body: string;\n}\n\nexport const Accordion = defineComponent({\n name: 'VspAccordion',\n props: {\n items: { type: Array as PropType<AccordionItem[]>, default: () => [] },\n multiple: Boolean,\n defaultOpen: { type: Array as PropType<number[]>, default: () => [] },\n },\n setup(props) {\n const open = ref(new Set<number>(props.defaultOpen));\n const toggle = (i: number) => {\n const s = open.value;\n const n = new Set<number>(props.multiple ? s : []);\n if (s.has(i)) n.delete(i);\n else n.add(i);\n open.value = n;\n };\n return () =>\n h(\n 'div',\n { class: 'ui-acc' },\n props.items.map((it, i) =>\n h('div', { key: i, class: cx('ui-acc-item', open.value.has(i) && 'open') }, [\n h('button', { type: 'button', class: 'ui-acc-head', onClick: () => toggle(i) }, [\n it.title,\n h(\n 'svg',\n {\n class: 'chev',\n viewBox: '0 0 24 24',\n width: 17,\n height: 17,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d: ICON_PATHS.chevR })],\n ),\n ]),\n h('div', { class: 'ui-acc-bodywrap' }, [\n h('div', null, [h('div', { class: 'ui-acc-body' }, it.body)]),\n ]),\n ]),\n ),\n );\n },\n});\n\ntype Pt = [number, number];\n/** Smooth (cubic) SVG path through points. */\nexport function smoothPath(pts: Pt[]): string {\n if (pts.length < 2) return '';\n let d = `M ${pts[0]![0]} ${pts[0]![1]}`;\n for (let i = 0; i < pts.length - 1; i++) {\n const [x0, y0] = pts[i]!;\n const [x1, y1] = pts[i + 1]!;\n const cx = (x0 + x1) / 2;\n d += ` C ${cx} ${y0} ${cx} ${y1} ${x1} ${y1}`;\n }\n return d;\n}\n\nexport const Sparkline = defineComponent({\n name: 'VspSparkline',\n props: {\n data: { type: Array as PropType<number[]>, default: () => [] },\n color: { type: String, default: 'var(--accent)' },\n w: { type: Number, default: 110 },\n h: { type: Number, default: 34 },\n fill: { type: Boolean, default: true },\n },\n setup(props) {\n const gid = 'spk' + useId().replace(/[^a-zA-Z0-9]/g, '');\n return () => {\n const data = props.data;\n const min = Math.min(...data);\n const max = Math.max(...data);\n const rng = max - min || 1;\n const pts: Pt[] = data.map((v, i) => [\n (i / (data.length - 1)) * props.w,\n props.h - 3 - ((v - min) / rng) * (props.h - 6),\n ]);\n const d = smoothPath(pts);\n const last = pts[pts.length - 1] ?? [0, 0];\n return h(\n 'svg',\n {\n width: props.w,\n height: props.h,\n viewBox: `0 0 ${props.w} ${props.h}`,\n style: { display: 'block', overflow: 'visible' },\n },\n [\n props.fill\n ? h('defs', null, [\n h('linearGradient', { id: gid, x1: '0', x2: '0', y1: '0', y2: '1' }, [\n h('stop', { offset: '0', 'stop-color': props.color, 'stop-opacity': '0.28' }),\n h('stop', { offset: '1', 'stop-color': props.color, 'stop-opacity': '0' }),\n ]),\n ])\n : null,\n props.fill\n ? h('path', {\n d: `${d} L ${props.w} ${props.h} L 0 ${props.h} Z`,\n fill: `url(#${gid})`,\n })\n : null,\n h('path', {\n d,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n }),\n h('circle', { cx: last[0], cy: last[1], r: '2.6', fill: props.color }),\n ],\n );\n };\n },\n});\n\nexport interface DonutDatum {\n label: string;\n value: number;\n color: string;\n}\n\nexport const Donut = defineComponent({\n name: 'VspDonut',\n props: {\n data: { type: Array as PropType<DonutDatum[]>, default: () => [] },\n size: { type: Number, default: 168 },\n thickness: { type: Number, default: 22 },\n },\n setup(props) {\n return () => {\n const total = props.data.reduce((s, d) => s + d.value, 0) || 1;\n const r = (props.size - props.thickness) / 2;\n const c = props.size / 2;\n const circ = 2 * Math.PI * r;\n let acc = 0;\n const segs = props.data.map((d, i) => {\n const len = (d.value / total) * circ;\n const seg = h('circle', {\n key: i,\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: d.color,\n 'stroke-width': props.thickness,\n 'stroke-dasharray': `${len - 2.5} ${circ - len + 2.5}`,\n 'stroke-dashoffset': -acc,\n 'stroke-linecap': 'round',\n });\n acc += len;\n return seg;\n });\n return h('div', { style: { display: 'flex', alignItems: 'center', gap: '22px' } }, [\n h(\n 'svg',\n {\n width: props.size,\n height: props.size,\n style: { transform: 'rotate(-90deg)', flexShrink: 0 },\n },\n [\n h('circle', {\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n ...segs,\n ],\n ),\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '9px', flex: 1 } },\n props.data.map((d, i) =>\n h(\n 'div',\n {\n key: i,\n style: { display: 'flex', alignItems: 'center', gap: '9px', fontSize: '12.5px' },\n },\n [\n h('i', {\n style: {\n width: '9px',\n height: '9px',\n borderRadius: '3px',\n background: d.color,\n flexShrink: 0,\n },\n }),\n h('span', { style: { color: 'var(--text-dim)', flex: 1 } }, d.label),\n h(\n 'span',\n { class: 'mono tnum', style: { fontWeight: 600 } },\n `${Math.round((d.value / total) * 100)}%`,\n ),\n ],\n ),\n ),\n ),\n ]);\n };\n },\n});\n\nexport const StatCard = defineComponent({\n name: 'VspStatCard',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n spark: { type: Array as PropType<number[]>, default: undefined },\n sparkColor: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n class: 'card card-pad vsp-rise',\n style: { display: 'flex', flexDirection: 'column', gap: '14px' },\n },\n [\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' } },\n [\n h('div', { style: { display: 'flex', alignItems: 'center', gap: '10px' } }, [\n h(\n 'span',\n {\n style: {\n width: '34px',\n height: '34px',\n borderRadius: 'var(--r-sm)',\n display: 'grid',\n placeItems: 'center',\n background: 'color-mix(in oklab, var(--accent) 13%, transparent)',\n color: 'var(--accent)',\n },\n },\n slots.icon?.(),\n ),\n h('span', { class: 'eyebrow' }, props.label),\n ]),\n props.delta != null\n ? h(\n 'span',\n { class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg') },\n [\n svgIcon(\n props.deltaDir === 'up' ? 'M12 19V5M5 12l7-7 7 7' : 'M12 5v14M5 12l7 7 7-7',\n 11,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: '12px',\n },\n },\n [\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n fontSize: '30px',\n fontWeight: 800,\n letterSpacing: '-.02em',\n lineHeight: 1,\n },\n },\n props.value,\n ),\n props.spark ? h(Sparkline, { data: props.spark, color: props.sparkColor }) : null,\n ],\n ),\n ],\n );\n },\n});\n"],"mappings":"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","names":["cx"]}
|