@viax.io/uxm 4.39.0 → 4.40.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/CHANGELOG.md +12 -0
- package/LICENSE.md +21 -0
- package/README.md +33 -44
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/dist/previews/index.cjs.map +1 -1
- package/dist/previews/index.d.ts +2 -2
- package/dist/previews/index.js.map +1 -1
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.d.ts +2 -2
- package/dist/studio/index.js.map +1 -1
- package/dist/studio/lib/registry/buttons.cjs +2 -2
- package/dist/studio/lib/registry/buttons.cjs.map +1 -1
- package/dist/studio/lib/registry/buttons.js +2 -2
- package/dist/studio/lib/registry/buttons.js.map +1 -1
- package/dist/studio/lib/registry/composite/sidebar-nav-trigger.cjs +1 -1
- package/dist/studio/lib/registry/composite/sidebar-nav-trigger.cjs.map +1 -1
- package/dist/studio/lib/registry/composite/sidebar-nav-trigger.js +1 -1
- package/dist/studio/lib/registry/composite/sidebar-nav-trigger.js.map +1 -1
- package/dist/studio/lib/registry/diagram.cjs +1 -1
- package/dist/studio/lib/registry/diagram.cjs.map +1 -1
- package/dist/studio/lib/registry/diagram.js +1 -1
- package/dist/studio/lib/registry/diagram.js.map +1 -1
- package/dist/studio/lib/registry/display.cjs +2 -2
- package/dist/studio/lib/registry/display.cjs.map +1 -1
- package/dist/studio/lib/registry/display.js +2 -2
- package/dist/studio/lib/registry/display.js.map +1 -1
- package/dist/studio/lib/registry/feedback.cjs +3 -3
- package/dist/studio/lib/registry/feedback.cjs.map +1 -1
- package/dist/studio/lib/registry/feedback.js +3 -3
- package/dist/studio/lib/registry/feedback.js.map +1 -1
- package/dist/studio/lib/registry/inputs/color-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/color-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/color-input.js +1 -1
- package/dist/studio/lib/registry/inputs/color-input.js.map +1 -1
- package/dist/studio/lib/registry/inputs/currency-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/currency-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/currency-input.js +1 -1
- package/dist/studio/lib/registry/inputs/currency-input.js.map +1 -1
- package/dist/studio/lib/registry/inputs/editable-cell.cjs +1 -1
- package/dist/studio/lib/registry/inputs/editable-cell.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/editable-cell.js +1 -1
- package/dist/studio/lib/registry/inputs/editable-cell.js.map +1 -1
- package/dist/studio/lib/registry/inputs/file-upload.cjs +1 -1
- package/dist/studio/lib/registry/inputs/file-upload.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/file-upload.js +1 -1
- package/dist/studio/lib/registry/inputs/file-upload.js.map +1 -1
- package/dist/studio/lib/registry/inputs/input-text.cjs +1 -1
- package/dist/studio/lib/registry/inputs/input-text.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/input-text.js +1 -1
- package/dist/studio/lib/registry/inputs/input-text.js.map +1 -1
- package/dist/studio/lib/registry/inputs/listbox.cjs +1 -1
- package/dist/studio/lib/registry/inputs/listbox.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/listbox.js +1 -1
- package/dist/studio/lib/registry/inputs/listbox.js.map +1 -1
- package/dist/studio/lib/registry/inputs/menu.cjs +1 -1
- package/dist/studio/lib/registry/inputs/menu.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/menu.js +1 -1
- package/dist/studio/lib/registry/inputs/menu.js.map +1 -1
- package/dist/studio/lib/registry/inputs/number-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/number-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/number-input.js +1 -1
- package/dist/studio/lib/registry/inputs/number-input.js.map +1 -1
- package/dist/studio/lib/registry/inputs/password-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/password-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/password-input.js +1 -1
- package/dist/studio/lib/registry/inputs/password-input.js.map +1 -1
- package/dist/studio/lib/registry/inputs/phone-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/phone-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/phone-input.js +1 -1
- package/dist/studio/lib/registry/inputs/phone-input.js.map +1 -1
- package/dist/studio/lib/registry/inputs/slider.cjs +1 -1
- package/dist/studio/lib/registry/inputs/slider.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/slider.js +1 -1
- package/dist/studio/lib/registry/inputs/slider.js.map +1 -1
- package/dist/studio/lib/registry/inputs/time-input.cjs +1 -1
- package/dist/studio/lib/registry/inputs/time-input.cjs.map +1 -1
- package/dist/studio/lib/registry/inputs/time-input.js +1 -1
- package/dist/studio/lib/registry/inputs/time-input.js.map +1 -1
- package/dist/studio/lib/types.cjs.map +1 -1
- package/dist/studio/persistence/generate-css.cjs.map +1 -1
- package/dist/studio/persistence/generate-css.js.map +1 -1
- package/dist/ui/editable-cell/editable-cell-date.cjs +226 -0
- package/dist/ui/editable-cell/editable-cell-date.cjs.map +1 -0
- package/dist/ui/editable-cell/editable-cell-date.d.ts +4 -0
- package/dist/ui/editable-cell/editable-cell-date.d.ts.map +1 -0
- package/dist/ui/editable-cell/editable-cell-date.js +202 -0
- package/dist/ui/editable-cell/editable-cell-date.js.map +1 -0
- package/dist/ui/editable-cell/editable-cell-select.cjs +297 -0
- package/dist/ui/editable-cell/editable-cell-select.cjs.map +1 -0
- package/dist/ui/editable-cell/editable-cell-select.d.ts +4 -0
- package/dist/ui/editable-cell/editable-cell-select.d.ts.map +1 -0
- package/dist/ui/editable-cell/editable-cell-select.js +273 -0
- package/dist/ui/editable-cell/editable-cell-select.js.map +1 -0
- package/dist/ui/editable-cell/editable-cell-text.cjs +175 -0
- package/dist/ui/editable-cell/editable-cell-text.cjs.map +1 -0
- package/dist/ui/editable-cell/editable-cell-text.d.ts +4 -0
- package/dist/ui/editable-cell/editable-cell-text.d.ts.map +1 -0
- package/dist/ui/editable-cell/editable-cell-text.js +151 -0
- package/dist/ui/editable-cell/editable-cell-text.js.map +1 -0
- package/dist/ui/editable-cell/editable-cell.cjs +27 -705
- package/dist/ui/editable-cell/editable-cell.cjs.map +1 -1
- package/dist/ui/editable-cell/editable-cell.d.ts +1 -1
- package/dist/ui/editable-cell/editable-cell.d.ts.map +1 -1
- package/dist/ui/editable-cell/editable-cell.js +28 -706
- package/dist/ui/editable-cell/editable-cell.js.map +1 -1
- package/dist/ui/editable-cell/use-editable-cell.cjs +284 -0
- package/dist/ui/editable-cell/use-editable-cell.cjs.map +1 -0
- package/dist/ui/editable-cell/use-editable-cell.d.ts +51 -0
- package/dist/ui/editable-cell/use-editable-cell.d.ts.map +1 -0
- package/dist/ui/editable-cell/use-editable-cell.js +260 -0
- package/dist/ui/editable-cell/use-editable-cell.js.map +1 -0
- package/dist/ui/page-shell/page-shell.cjs.map +1 -1
- package/dist/ui/page-shell/page-shell.d.ts +1 -1
- package/dist/ui/page-shell/page-shell.d.ts.map +1 -1
- package/dist/ui/page-shell/page-shell.js.map +1 -1
- package/dist/ui/styles.css +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/studio/lib/registry/feedback.ts"],"sourcesContent":["import type { ComponentDef } from '../types';\n\nexport const feedbackDefs: ComponentDef[] = [\n // ── Feedback ──\n {\n id: 'timeline-entry',\n name: 'Timeline Entry',\n category: 'Display',\n description: 'Single entry in a vertical history timeline — dot + connecting line + content card.',\n styleProperties: [\n { key: 'dotColor', label: 'Dot Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'dotIdleColor', label: 'Idle Dot Color', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'dotSize', label: 'Dot Size', control: 'number', defaultValue: 8, min: 4, max: 20, step: 1, unit: 'px' },\n { key: 'dotRingColor', label: 'Dot Ring', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'lineColor', label: 'Line Color', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'lineWidth', label: 'Line Width', control: 'number', defaultValue: 1, min: 1, max: 4, step: 1, unit: 'px' },\n { key: 'contentBg', label: 'Content Bg', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'contentBorderColor', label: 'Content Border', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'contentRadius', label: 'Content Radius', control: 'slider', defaultValue: 5, min: 0, max: 12, step: 1, unit: 'px' },\n { key: 'contentPadding', label: 'Content Padding', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'titleSize', label: 'Title Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'titleColor', label: 'Title Color', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n { key: 'metaSize', label: 'Meta Size', control: 'number', defaultValue: 10.5, min: 9, max: 14, step: 0.5, unit: 'px' },\n { key: 'metaColor', label: 'Meta Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n ],\n layoutVariants: [\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'active', label: 'Active' },\n { value: 'past', label: 'Past' },\n ],\n defaultValue: 'active',\n },\n ],\n },\n {\n id: 'loader',\n name: 'Loader',\n category: 'Feedback',\n description: 'Small in-flight indicator — spinner, pulsing dots, or indeterminate bar — with an optional message.',\n styleProperties: [\n { key: 'size', label: 'Size', control: 'number', defaultValue: 24, min: 12, max: 64, step: 2, unit: 'px' },\n { key: 'color', label: 'Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'trackColor', label: 'Track Color', control: 'color', defaultValue: 'color-mix(in srgb, var(--color-accent-bold) 18%, transparent)', section: 'colors' },\n { key: 'speed', label: 'Speed (ms)', control: 'number', defaultValue: 800, min: 200, max: 2400, step: 50 },\n { key: 'barWidth', label: 'Bar Width', control: 'number', defaultValue: 200, min: 80, max: 480, step: 10, unit: 'px' },\n { key: 'message', label: 'Message', control: 'text', defaultValue: 'Loading…' },\n { key: 'messageInterval', label: 'Cycle (ms)', control: 'number', defaultValue: 2400, min: 600, max: 8000, step: 100 },\n { key: 'messageSize', label: 'Message Size', control: 'number', defaultValue: 13, min: 10, max: 18, step: 1, unit: 'px' },\n { key: 'messageColor', label: 'Message Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 12, min: 4, max: 32, step: 2, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'spinner', label: 'Spinner' },\n { value: 'dots', label: 'Dots' },\n { value: 'bar', label: 'Bar' },\n ],\n defaultValue: 'spinner',\n },\n {\n key: 'layout',\n label: 'Layout',\n options: [\n { value: 'stacked', label: 'Stacked' },\n { value: 'inline', label: 'Inline' },\n ],\n defaultValue: 'stacked',\n },\n ],\n },\n {\n id: 'progress-bar',\n name: 'Progress Bar',\n category: 'Feedback',\n description:\n 'Determinate progress (0–100%) — the companion to Loader\\'s indeterminate spinner/dots/bar. Use for uploads, batch operations, and stepped flows where the share of work done is known; for \"something is happening, no ETA\" use Loader instead. Two variants share one Value knob: a linear track+fill and a circular ring (CSS conic-gradient, no SVG). Root is layout-only — all theming routes through `--uxm-progress-bar-*` vars on inner elements, so saves need no PER_COMPONENT_MAPPING entry. The value drives the linear fill width and the ring sweep via the same var.',\n styleProperties: [\n // `value` is a preview proxy for what will be runtime/dynamic data — the\n // editor slider lets designers eyeball fill levels, but in production the\n // consumer drives it via the `value` prop (the saved\n // `--uxm-progress-bar-value` is always overridden inline). The numeric\n // percentage label is always shown (determinate by nature).\n { key: 'value', label: 'Value (%)', control: 'slider', defaultValue: 60, min: 0, max: 100, step: 1 },\n { key: 'fillColor', label: 'Fill Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'trackColor', label: 'Track Color', control: 'color', defaultValue: 'color-mix(in srgb, var(--color-accent-bold) 16%, transparent)', section: 'colors' },\n // ── Linear shape (showWhen variant=linear) ──\n { key: 'barHeight', label: 'Bar Height', control: 'number', defaultValue: 8, min: 2, max: 24, step: 1, unit: 'px', showWhen: { variant: 'linear' } },\n { key: 'barRadius', label: 'Bar Radius', control: 'slider', defaultValue: 999, min: 0, max: 999, step: 1, unit: 'px', showWhen: { variant: 'linear' } },\n // ── Ring shape (showWhen variant=ring) ──\n { key: 'ringSize', label: 'Ring Size', control: 'number', defaultValue: 72, min: 40, max: 160, step: 2, unit: 'px', showWhen: { variant: 'ring' } },\n { key: 'ringThickness', label: 'Ring Thickness', control: 'number', defaultValue: 8, min: 2, max: 28, step: 1, unit: 'px', showWhen: { variant: 'ring' } },\n // ── Value label — always rendered; its own section ──\n { key: 'valueColor', label: 'Value Color', control: 'color', defaultValue: 'var(--color-text)', section: 'value' },\n { key: 'valueSize', label: 'Value Size', control: 'number', defaultValue: 13, min: 10, max: 28, step: 1, unit: 'px', section: 'value' },\n // ── Caption + layout ──\n { key: 'label', label: 'Caption', control: 'text', defaultValue: 'Uploading…' },\n { key: 'labelColor', label: 'Caption Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n { key: 'labelSize', label: 'Caption Size', control: 'number', defaultValue: 13, min: 10, max: 18, step: 1, unit: 'px' },\n { key: 'stackGap', label: 'Gap', control: 'number', defaultValue: 8, min: 0, max: 24, step: 2, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'linear', label: 'Linear' },\n { value: 'ring', label: 'Ring' },\n ],\n defaultValue: 'linear',\n },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: 'ProgressBar',\n props: [\n { name: 'value', type: 'number', required: true, description: 'Completion 0–100. Clamped into range. In production the consumer drives this from real progress data.' },\n { name: 'variant', type: '\"linear\" | \"ring\"', defaultValue: '\"linear\"', description: 'Linear track+fill or circular ring (CSS conic-gradient, no SVG). Both are determinate.' },\n { name: 'label', type: 'string', description: 'Optional caption — above the bar (linear) / below the ring (ring). Also becomes the accessible name.' },\n { name: 'valueText', type: 'string', description: 'Override the percentage text (defaults to `${Math.round(value)}%`).' },\n { name: '...rest', type: 'HTMLAttributes<HTMLDivElement>', description: 'Native attributes pass through to the root.' },\n ],\n },\n },\n {\n id: 'banner',\n name: 'Banner',\n category: 'Feedback',\n description: 'Persistent full-width strip rendered inline in page flow — stays until user dismisses or consumer removes. Use for system states and announcements (e.g. \"Maintenance at 02:00\", \"Q1 forecast beat target\"). For transient feedback (\"Saved\", \"Copied\") use Toast via `toast.*()` instead. Color knobs are variant-scoped via `showWhen` (success / info / warning / error) — switching the variant picker swaps which 3 color knobs are visible, each defaulting to its own semantic palette. Shape knobs (radius / paddings / font) apply across all variants.',\n styleProperties: [\n // ── Success colors (showWhen: variant=success) ──\n { key: 'successBg', label: 'Background', control: 'color', defaultValue: 'var(--color-success-bg)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'successText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-success-text)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'successBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-success-border)', section: 'colors', showWhen: { variant: 'success' } },\n // ── Info colors (showWhen: variant=info) ──\n { key: 'infoBg', label: 'Background', control: 'color', defaultValue: 'var(--color-info-bg)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'infoText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-info-text)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'infoBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-info-border)', section: 'colors', showWhen: { variant: 'info' } },\n // ── Warning colors (showWhen: variant=warning) ──\n { key: 'warningBg', label: 'Background', control: 'color', defaultValue: 'var(--color-warning-bg)', section: 'colors', showWhen: { variant: 'warning' } },\n { key: 'warningText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-warning-text)', section: 'colors', showWhen: { variant: 'warning' } },\n { key: 'warningBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-warning-border)', section: 'colors', showWhen: { variant: 'warning' } },\n // ── Error colors (showWhen: variant=error) — defaults reference the\n // `--color-danger-*` token family (existing token naming) but the\n // variant key itself is `error` to match the BannerVariant union. ──\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-danger-bg)', section: 'colors', showWhen: { variant: 'error' } },\n { key: 'errorText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'colors', showWhen: { variant: 'error' } },\n { key: 'errorBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-danger-border)', section: 'colors', showWhen: { variant: 'error' } },\n // ── Shape (variant-agnostic) ──\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 16, min: 8, max: 32, step: 4, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 12, min: 4, max: 24, step: 4, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'success', label: 'Success' },\n { value: 'info', label: 'Info' },\n { value: 'warning', label: 'Warning' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'success',\n },\n ],\n events: [\n { name: 'onDismiss', description: 'Fires when the user clicks the close affordance — only present if the Banner was rendered with one.', payload: 'void' },\n ],\n },\n {\n id: 'bulk-action-bar',\n name: 'Bulk Action Bar',\n category: 'Feedback',\n description: \"Floating toolbar that surfaces once rows are selected: \\\"{N} selected · actions · × clear\\\". Purely presentational — the consumer wires it to its own `selectedKeys` state and positions it (typically fixed/sticky near the bottom of a table view). Pairs with the DataTable's row selection. The `.uxm-bulk-action-bar` root IS the styled card surface (background / border / decomposed shadow); the per-part colours (action / danger / divider / clear ×) theme the inner buttons. Destructive actions get the danger treatment via `danger: true`.\",\n styleProperties: [\n // ── Bar surface (the floating card) ──\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'bar' },\n { key: 'color', label: 'Count Text', control: 'color', defaultValue: 'var(--color-text)', section: 'bar' },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'bar' },\n { key: 'borderRadius', label: 'Radius', control: 'slider', defaultValue: 12, min: 0, max: 24, step: 1, unit: 'px', section: 'bar' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 28, step: 2, unit: 'px', section: 'bar' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 2, max: 20, step: 1, unit: 'px', section: 'bar' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 8, min: 0, max: 20, step: 1, unit: 'px', section: 'bar' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 18, step: 1, unit: 'px', section: 'bar' },\n\n // ── Drop shadow — decomposed into Color / Blur / Offset Y (same\n // pattern as the Menu / Calendar floating panels). Composed into\n // a single box-shadow in styles.css. Default lifts the bar off\n // the page (0 10px 28px rgba(0,0,0,0.16)). ──\n { key: 'shadowColor', label: 'Color', control: 'color', defaultValue: 'rgba(0, 0, 0, 0.16)', section: 'shadow' },\n { key: 'shadowBlur', label: 'Blur', control: 'slider', defaultValue: 28, min: 0, max: 60, step: 1, unit: 'px', section: 'shadow' },\n { key: 'shadowOffsetY', label: 'Offset Y', control: 'slider', defaultValue: 10, min: 0, max: 32, step: 1, unit: 'px', section: 'shadow' },\n\n // ── Action buttons (the plain commands) ──\n { key: 'actionColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'actions' },\n { key: 'actionHoverBg', label: 'Hover Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'actions' },\n { key: 'actionRadius', label: 'Radius', control: 'slider', defaultValue: 6, min: 0, max: 12, step: 1, unit: 'px', section: 'actions' },\n\n // ── Destructive action (Delete etc.) — danger text at rest, a\n // danger-tinted surface on hover. Reuses the danger token trio. ──\n { key: 'dangerColor', label: 'Text', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'danger' },\n { key: 'dangerHoverBg', label: 'Hover Background', control: 'color', defaultValue: 'var(--color-danger-bg)', section: 'danger' },\n\n // ── Divider ── (the clear × is the IconButton atom, themed there)\n { key: 'dividerColor', label: 'Divider', control: 'color', defaultValue: 'var(--color-border)', section: 'divider' },\n ],\n // No layout variants — the selection count is runtime data, not a\n // design knob, and the × clear is a behavioral prop (`onClear`), so the\n // preview just renders a representative count.\n layoutVariants: [],\n events: [\n { name: 'onClear', description: 'Fires when the user clicks the trailing × to clear the selection. Omit `onClear` to hide the ×.', payload: 'void' },\n { name: 'action.onClick', description: \"Per-action handler — fires when an action button is clicked. Wired via each entry's `onClick`.\", payload: 'void' },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: 'BulkActionBar',\n props: [\n { name: 'count', type: 'number', required: true, description: 'Number of selected items. Drives the default \"{n} selected\" label.' },\n { name: 'actions', type: 'BulkAction[]', description: 'Action buttons in display order. Each: { key, label, icon?, danger?, disabled?, onClick? }. Set `danger: true` for destructive actions (Delete/Remove).' },\n { name: 'onClear', type: '() => void', description: 'When provided, renders a trailing × that clears the selection.' },\n { name: 'countLabel', type: '(count: number) => ReactNode', description: 'Override the count label — e.g. for pluralisation or a different noun (\"3 rows\").' },\n { name: 'className', type: 'string', description: \"Extra classes appended after the atom's own `uxm-bulk-action-bar`.\" },\n { name: 'style', type: 'CSSProperties', description: 'Inline style — use for fixed/sticky positioning in the consuming layout.' },\n ],\n },\n },\n {\n id: 'toast',\n name: 'Toast',\n category: 'Feedback',\n description: 'Transient corner notification rendered inside the Toaster shell. Neutral elevated card surface (matches the active theme — white in light, raised-dark in dark) with a colored left-edge accent + colored icon communicating the variant. Fired imperatively via `toast.success(\"…\")`. Use for brief after-the-fact feedback (\"Saved\", \"Copied\"); for persistent status messages inline in the page, use Banner instead.',\n styleProperties: [\n // ── Neutral surface (variant-agnostic) ──\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'color', label: 'Text Color', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n // Default `transparent` — the shadow does the lift; outer border\n // is opt-in for designers who want a visible outline. The colored\n // left-edge accent is set per-variant and isn't affected by this.\n { key: 'borderColor', label: 'Border Color', control: 'color', defaultValue: 'transparent', section: 'colors' },\n // ── Per-variant icon color — only the active variant's knob is\n // visible at a time. The icon is the sole variant signal; no\n // stripe / pill / background tint. ──\n { key: 'successAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-success-text)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'infoAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-info-text)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'warningAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-warning-text)', section: 'colors', showWhen: { variant: 'warning' } },\n // Error variant: default references the `--color-danger-*` family\n // (existing brand-token naming). Save var name: `--uxm-toast-\n // error-accent`.\n { key: 'errorAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'colors', showWhen: { variant: 'error' } },\n // ── Shape (variant-agnostic) ──\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 10, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 16, min: 8, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 12, min: 6, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'iconSize', label: 'Icon Size', control: 'number', defaultValue: 16, min: 12, max: 24, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'success', label: 'Success' },\n { value: 'info', label: 'Info' },\n { value: 'warning', label: 'Warning' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'success',\n },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: ['Toaster', 'toast'],\n props: [\n { name: 'toast.success(message, options?)', type: '(message: string, options?: { duration?: number, id?: string }) => string', description: 'Fire a success toast. Returns the toast id for manual dismissal via toast.dismiss(id).' },\n { name: 'toast.info(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire an info toast.' },\n { name: 'toast.warning(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire a warning toast.' },\n { name: 'toast.error(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire an error toast.' },\n { name: '<Toaster position max />', type: 'ToasterProps', description: \"Mount once at the app root. `position`: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'. `max`: stack cap.\" },\n ],\n },\n events: [\n { name: 'onDismiss', description: 'Fires when the user clicks the close X or the auto-dismiss timer elapses.', payload: 'void' },\n ],\n },\n {\n id: 'tooltip',\n name: 'Tooltip',\n category: 'Feedback',\n description: 'Small popup tooltip for extra information.',\n styleProperties: [\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n { key: 'color', label: 'Text Color', control: 'color', defaultValue: 'var(--color-text-inverse)', section: 'colors' },\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 6, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 6, min: 2, max: 16, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'showArrow', label: 'Show Arrow', control: 'toggle', defaultValue: true },\n ],\n layoutVariants: [],\n },\n];\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/studio/lib/registry/feedback.ts"],"sourcesContent":["import type { ComponentDef } from '../types';\n\nexport const feedbackDefs: ComponentDef[] = [\n // ── Feedback ──\n {\n id: 'timeline-entry',\n name: 'Timeline Entry',\n category: 'Display',\n description: 'Single entry in a vertical history timeline — dot + connecting line + content card.',\n styleProperties: [\n { key: 'dotColor', label: 'Dot Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'dotIdleColor', label: 'Idle Dot Color', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'dotSize', label: 'Dot Size', control: 'number', defaultValue: 8, min: 4, max: 20, step: 1, unit: 'px' },\n { key: 'dotRingColor', label: 'Dot Ring', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'lineColor', label: 'Line Color', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'lineWidth', label: 'Line Width', control: 'number', defaultValue: 1, min: 1, max: 4, step: 1, unit: 'px' },\n { key: 'contentBg', label: 'Content Bg', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'contentBorderColor', label: 'Content Border', control: 'color', defaultValue: 'var(--color-border)', section: 'colors' },\n { key: 'contentRadius', label: 'Content Radius', control: 'slider', defaultValue: 5, min: 0, max: 12, step: 1, unit: 'px' },\n { key: 'contentPadding', label: 'Content Padding', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'titleSize', label: 'Title Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'titleColor', label: 'Title Color', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n { key: 'metaSize', label: 'Meta Size', control: 'number', defaultValue: 10.5, min: 9, max: 14, step: 0.5, unit: 'px' },\n { key: 'metaColor', label: 'Meta Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n ],\n layoutVariants: [\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'active', label: 'Active' },\n { value: 'past', label: 'Past' },\n ],\n defaultValue: 'active',\n },\n ],\n },\n {\n id: 'loader',\n name: 'Loader',\n category: 'Feedback',\n description: 'Small in-flight indicator — spinner, pulsing dots, or indeterminate bar — with an optional message.',\n styleProperties: [\n { key: 'size', label: 'Size', control: 'number', defaultValue: 24, min: 12, max: 64, step: 2, unit: 'px' },\n { key: 'color', label: 'Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'trackColor', label: 'Track Color', control: 'color', defaultValue: 'color-mix(in srgb, var(--color-accent-bold) 18%, transparent)', section: 'colors' },\n { key: 'speed', label: 'Speed (ms)', control: 'number', defaultValue: 800, min: 200, max: 2400, step: 50 },\n { key: 'barWidth', label: 'Bar Width', control: 'number', defaultValue: 200, min: 80, max: 480, step: 10, unit: 'px' },\n { key: 'message', label: 'Message', control: 'text', defaultValue: 'Loading…' },\n { key: 'messageInterval', label: 'Cycle (ms)', control: 'number', defaultValue: 2400, min: 600, max: 8000, step: 100 },\n { key: 'messageSize', label: 'Message Size', control: 'number', defaultValue: 13, min: 10, max: 18, step: 1, unit: 'px' },\n { key: 'messageColor', label: 'Message Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 12, min: 4, max: 32, step: 2, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'spinner', label: 'Spinner' },\n { value: 'dots', label: 'Dots' },\n { value: 'bar', label: 'Bar' },\n ],\n defaultValue: 'spinner',\n },\n {\n key: 'layout',\n label: 'Layout',\n options: [\n { value: 'stacked', label: 'Stacked' },\n { value: 'inline', label: 'Inline' },\n ],\n defaultValue: 'stacked',\n },\n ],\n },\n {\n id: 'progress-bar',\n name: 'Progress Bar',\n category: 'Feedback',\n description:\n 'Determinate progress (0–100%) — the companion to Loader\\'s indeterminate spinner/dots/bar. Use for uploads, batch operations, and stepped flows where the share of work done is known; for \"something is happening, no ETA\" use Loader instead. Two variants share one Value knob: a linear track+fill and a circular ring (CSS conic-gradient, no SVG). Root is layout-only — all theming routes through `--uxm-progress-bar-*` vars on inner elements, so saves need no PER_COMPONENT_MAPPING entry. The value drives the linear fill width and the ring sweep via the same var.',\n styleProperties: [\n // `value` is a preview proxy for what will be runtime/dynamic data — the\n // editor slider lets designers eyeball fill levels, but in production the\n // consumer drives it via the `value` prop (the saved\n // `--uxm-progress-bar-value` is always overridden inline). The numeric\n // percentage label is always shown (determinate by nature).\n { key: 'value', label: 'Value (%)', control: 'slider', defaultValue: 60, min: 0, max: 100, step: 1 },\n { key: 'fillColor', label: 'Fill Color', control: 'color', defaultValue: 'var(--color-accent-bold)', section: 'colors' },\n { key: 'trackColor', label: 'Track Color', control: 'color', defaultValue: 'color-mix(in srgb, var(--color-accent-bold) 16%, transparent)', section: 'colors' },\n // ── Linear shape (showWhen variant=linear) ──\n { key: 'barHeight', label: 'Bar Height', control: 'number', defaultValue: 8, min: 2, max: 24, step: 1, unit: 'px', showWhen: { variant: 'linear' } },\n { key: 'barRadius', label: 'Bar Radius', control: 'slider', defaultValue: 999, min: 0, max: 999, step: 1, unit: 'px', showWhen: { variant: 'linear' } },\n // ── Ring shape (showWhen variant=ring) ──\n { key: 'ringSize', label: 'Ring Size', control: 'number', defaultValue: 72, min: 40, max: 160, step: 2, unit: 'px', showWhen: { variant: 'ring' } },\n { key: 'ringThickness', label: 'Ring Thickness', control: 'number', defaultValue: 8, min: 2, max: 28, step: 1, unit: 'px', showWhen: { variant: 'ring' } },\n // ── Value label — always rendered; its own section ──\n { key: 'valueColor', label: 'Value Color', control: 'color', defaultValue: 'var(--color-text)', section: 'value' },\n { key: 'valueSize', label: 'Value Size', control: 'number', defaultValue: 13, min: 10, max: 28, step: 1, unit: 'px', section: 'value' },\n // ── Caption + layout ──\n { key: 'label', label: 'Caption', control: 'text', defaultValue: 'Uploading…' },\n { key: 'labelColor', label: 'Caption Color', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'colors' },\n { key: 'labelSize', label: 'Caption Size', control: 'number', defaultValue: 13, min: 10, max: 18, step: 1, unit: 'px' },\n { key: 'stackGap', label: 'Gap', control: 'number', defaultValue: 8, min: 0, max: 24, step: 2, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'linear', label: 'Linear' },\n { value: 'ring', label: 'Ring' },\n ],\n defaultValue: 'linear',\n },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: 'ProgressBar',\n props: [\n { name: 'value', type: 'number', required: true, description: 'Completion 0–100. Clamped into range. In production the consumer drives this from real progress data.' },\n { name: 'variant', type: '\"linear\" | \"ring\"', defaultValue: '\"linear\"', description: 'Linear track+fill or circular ring (CSS conic-gradient, no SVG). Both are determinate.' },\n { name: 'label', type: 'string', description: 'Optional caption — above the bar (linear) / below the ring (ring). Also becomes the accessible name.' },\n { name: 'valueText', type: 'string', description: 'Override the percentage text (defaults to `${Math.round(value)}%`).' },\n { name: '...rest', type: 'HTMLAttributes<HTMLDivElement>', description: 'Native attributes pass through to the root.' },\n ],\n },\n },\n {\n id: 'banner',\n name: 'Banner',\n category: 'Feedback',\n description: 'Persistent full-width strip rendered inline in page flow — stays until user dismisses or consumer removes. Use for system states and announcements (e.g. \"Maintenance at 02:00\", \"Q1 forecast beat target\"). For transient feedback (\"Saved\", \"Copied\") use Toast via `toast.*()` instead. Color knobs are variant-scoped via `showWhen` (success / info / warning / error) — switching the variant picker swaps which 3 color knobs are visible, each defaulting to its own semantic palette. Shape knobs (radius / paddings / font) apply across all variants.',\n styleProperties: [\n // ── Success colors (showWhen: variant=success) ──\n { key: 'successBg', label: 'Background', control: 'color', defaultValue: 'var(--color-success-bg)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'successText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-success-text)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'successBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-success-border)', section: 'colors', showWhen: { variant: 'success' } },\n // ── Info colors (showWhen: variant=info) ──\n { key: 'infoBg', label: 'Background', control: 'color', defaultValue: 'var(--color-info-bg)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'infoText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-info-text)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'infoBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-info-border)', section: 'colors', showWhen: { variant: 'info' } },\n // ── Warning colors (showWhen: variant=warning) ──\n { key: 'warningBg', label: 'Background', control: 'color', defaultValue: 'var(--color-warning-bg)', section: 'colors', showWhen: { variant: 'warning' } },\n { key: 'warningText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-warning-text)', section: 'colors', showWhen: { variant: 'warning' } },\n { key: 'warningBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-warning-border)', section: 'colors', showWhen: { variant: 'warning' } },\n // ── Error colors (showWhen: variant=error) — defaults reference the\n // `--color-danger-*` token family (existing token naming) but the\n // variant key itself is `error` to match the BannerVariant union. ──\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-danger-bg)', section: 'colors', showWhen: { variant: 'error' } },\n { key: 'errorText', label: 'Text Color', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'colors', showWhen: { variant: 'error' } },\n { key: 'errorBorder', label: 'Border Color', control: 'color', defaultValue: 'var(--color-danger-border)', section: 'colors', showWhen: { variant: 'error' } },\n // ── Shape (variant-agnostic) ──\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 16, min: 8, max: 32, step: 4, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 12, min: 4, max: 24, step: 4, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'success', label: 'Success' },\n { value: 'info', label: 'Info' },\n { value: 'warning', label: 'Warning' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'success',\n },\n ],\n events: [\n { name: 'onDismiss', description: 'Fires when the user clicks the close affordance — only present if the Banner was rendered with one.', payload: 'void' },\n ],\n },\n {\n id: 'bulk-action-bar',\n name: 'Bulk Action Bar',\n category: 'Feedback',\n description: \"Floating toolbar that surfaces once rows are selected: \\\"{N} selected · actions · × clear\\\". Purely presentational — the consumer wires it to its own `selectedKeys` state and positions it (typically fixed/sticky near the bottom of a table view). Pairs with the DataTable's row selection. The `.uxm-bulk-action-bar` root IS the styled card surface (background / border / decomposed shadow); the per-part colours (action / danger / divider / clear ×) theme the inner buttons. Destructive actions get the danger treatment via `danger: true`.\",\n styleProperties: [\n // ── Bar surface (the floating card) ──\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'bar' },\n { key: 'color', label: 'Count Text', control: 'color', defaultValue: 'var(--color-text)', section: 'bar' },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'bar' },\n { key: 'borderRadius', label: 'Radius', control: 'slider', defaultValue: 12, min: 0, max: 24, step: 1, unit: 'px', section: 'bar' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 28, step: 2, unit: 'px', section: 'bar' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 2, max: 20, step: 1, unit: 'px', section: 'bar' },\n { key: 'gap', label: 'Gap', control: 'number', defaultValue: 8, min: 0, max: 20, step: 1, unit: 'px', section: 'bar' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 18, step: 1, unit: 'px', section: 'bar' },\n\n // ── Drop shadow — decomposed into Color / Blur / Offset Y (same\n // pattern as the Menu / Calendar floating panels). Composed into\n // a single box-shadow in styles.css. Default lifts the bar off\n // the page (0 10px 28px rgba(0,0,0,0.16)). ──\n { key: 'shadowColor', label: 'Color', control: 'color', defaultValue: 'rgba(0, 0, 0, 0.16)', section: 'shadow' },\n { key: 'shadowBlur', label: 'Blur', control: 'slider', defaultValue: 28, min: 0, max: 60, step: 1, unit: 'px', section: 'shadow' },\n { key: 'shadowOffsetY', label: 'Offset Y', control: 'slider', defaultValue: 10, min: 0, max: 32, step: 1, unit: 'px', section: 'shadow' },\n\n // ── Action buttons (the plain commands) ──\n { key: 'actionColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'actions' },\n { key: 'actionHoverBg', label: 'Hover Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'actions' },\n { key: 'actionRadius', label: 'Radius', control: 'slider', defaultValue: 6, min: 0, max: 12, step: 1, unit: 'px', section: 'actions' },\n\n // ── Destructive action (Delete etc.) — danger text at rest, a\n // danger-tinted surface on hover. Reuses the danger token trio. ──\n { key: 'dangerColor', label: 'Text', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'danger' },\n { key: 'dangerHoverBg', label: 'Hover Background', control: 'color', defaultValue: 'var(--color-danger-bg)', section: 'danger' },\n\n // ── Divider ── (the clear × is the IconButton atom, themed there)\n { key: 'dividerColor', label: 'Divider', control: 'color', defaultValue: 'var(--color-border)', section: 'divider' },\n ],\n // No layout variants — the selection count is runtime data, not a\n // design knob, and the × clear is a behavioral prop (`onClear`), so the\n // preview just renders a representative count.\n layoutVariants: [],\n events: [\n { name: 'onClear', description: 'Fires when the user clicks the trailing × to clear the selection. Omit `onClear` to hide the ×.', payload: 'void' },\n { name: 'action.onClick', description: \"Per-action handler — fires when an action button is clicked. Wired via each entry's `onClick`.\", payload: 'void' },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: 'BulkActionBar',\n props: [\n { name: 'count', type: 'number', required: true, description: 'Number of selected items. Drives the default \"{n} selected\" label.' },\n { name: 'actions', type: 'BulkAction[]', description: 'Action buttons in display order. Each: { key, label, icon?, danger?, disabled?, onClick? }. Set `danger: true` for destructive actions (Delete/Remove).' },\n { name: 'onClear', type: '() => void', description: 'When provided, renders a trailing × that clears the selection.' },\n { name: 'countLabel', type: '(count: number) => ReactNode', description: 'Override the count label — e.g. for pluralisation or a different noun (\"3 rows\").' },\n { name: 'className', type: 'string', description: \"Extra classes appended after the atom's own `uxm-bulk-action-bar`.\" },\n { name: 'style', type: 'CSSProperties', description: 'Inline style — use for fixed/sticky positioning in the consuming layout.' },\n ],\n },\n },\n {\n id: 'toast',\n name: 'Toast',\n category: 'Feedback',\n description: 'Transient corner notification rendered inside the Toaster shell. Neutral elevated card surface (matches the active theme — white in light, raised-dark in dark) with a colored left-edge accent + colored icon communicating the variant. Fired imperatively via `toast.success(\"…\")`. Use for brief after-the-fact feedback (\"Saved\", \"Copied\"); for persistent status messages inline in the page, use Banner instead.',\n styleProperties: [\n // ── Neutral surface (variant-agnostic) ──\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'colors' },\n { key: 'color', label: 'Text Color', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n // Default `transparent` — the shadow does the lift; outer border\n // is opt-in for designers who want a visible outline. The colored\n // left-edge accent is set per-variant and isn't affected by this.\n { key: 'borderColor', label: 'Border Color', control: 'color', defaultValue: 'transparent', section: 'colors' },\n // ── Per-variant icon color — only the active variant's knob is\n // visible at a time. The icon is the sole variant signal; no\n // stripe / pill / background tint. ──\n { key: 'successAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-success-text)', section: 'colors', showWhen: { variant: 'success' } },\n { key: 'infoAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-info-text)', section: 'colors', showWhen: { variant: 'info' } },\n { key: 'warningAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-warning-text)', section: 'colors', showWhen: { variant: 'warning' } },\n // Error variant: default references the `--color-danger-*` family\n // (existing brand-token naming). Save var name: `--uxm-toast-\n // error-accent`.\n { key: 'errorAccent', label: 'Icon Color', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'colors', showWhen: { variant: 'error' } },\n // ── Shape (variant-agnostic) ──\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 10, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 16, min: 8, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 12, min: 6, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'iconSize', label: 'Icon Size', control: 'number', defaultValue: 16, min: 12, max: 24, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'success', label: 'Success' },\n { value: 'info', label: 'Info' },\n { value: 'warning', label: 'Warning' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'success',\n },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: ['Toaster', 'toast'],\n props: [\n { name: 'toast.success(message, options?)', type: '(message: string, options?: { duration?: number, id?: string }) => string', description: 'Fire a success toast. Returns the toast id for manual dismissal via toast.dismiss(id).' },\n { name: 'toast.info(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire an info toast.' },\n { name: 'toast.warning(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire a warning toast.' },\n { name: 'toast.error(message, options?)', type: '(message: string, options?: ToastOptions) => string', description: 'Fire an error toast.' },\n { name: '<Toaster position max />', type: 'ToasterProps', description: \"Mount once at the app root. `position`: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'. `max`: stack cap.\" },\n ],\n },\n events: [\n { name: 'onDismiss', description: 'Fires when the user clicks the close X or the auto-dismiss timer elapses.', payload: 'void' },\n ],\n },\n {\n id: 'tooltip',\n name: 'Tooltip',\n category: 'Feedback',\n description: 'Small popup tooltip for extra information.',\n styleProperties: [\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-text)', section: 'colors' },\n { key: 'color', label: 'Text Color', control: 'color', defaultValue: 'var(--color-text-inverse)', section: 'colors' },\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 6, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 6, min: 2, max: 16, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px' },\n { key: 'showArrow', label: 'Show Arrow', control: 'toggle', defaultValue: true },\n ],\n layoutVariants: [],\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -78,7 +78,7 @@ const colorInputDef = {
|
|
|
78
78
|
{ name: "onOpenChange", description: "Popover variant only \u2014 fires when the panel opens or closes.", payload: "(open: boolean) => void", showWhen: { variant: "popover" } }
|
|
79
79
|
],
|
|
80
80
|
api: {
|
|
81
|
-
importPath: "@viax/uxm/ui",
|
|
81
|
+
importPath: "@viax.io/uxm/ui",
|
|
82
82
|
importNames: ["ColorInput", "ColorInputPopover"],
|
|
83
83
|
props: [
|
|
84
84
|
{ name: "value", type: "string", description: "Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a)." },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/color-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const colorInputDef: ComponentDef = {\n id: 'color-input',\n name: 'Color Input',\n category: 'Inputs',\n description: 'Color picker with a saturation/brightness area, hue and opacity sliders, a swatch, a screen eyedropper and a format select (HEX/RGB/RGBA/HSL). The value editor adapts to the format — one hex field, or R/G/B(/A) or H/S/L numeric fields — and re-derives on switch. Ships inline (ColorInput) and as a swatch-triggered popover (ColorInputPopover). `outputFormat` fixes the emitted format (default hex); Enter commits a field, Escape reverts it, and in the popover both also close the panel.',\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Field / Panel Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n // Shared\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 24, step: 1, unit: 'px' },\n { key: 'areaHeight', label: 'Area Height', control: 'slider', defaultValue: 160, min: 100, max: 240, step: 4, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'inline', label: 'Inline' },\n { value: 'popover', label: 'Popover' },\n ],\n defaultValue: 'inline',\n },\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every commit (drag, eyedropper, or field commit) with the color formatted per `outputFormat`.', payload: '(color: string) => void' },\n { name: 'onEnter', description: 'Fires when Enter commits a valid text-field draft.', payload: '(color: string) => void' },\n { name: 'onEsc', description: 'Fires when Escape reverts the text-field draft to the last committed value.', payload: '() => void' },\n { name: 'onOpenChange', description: 'Popover variant only — fires when the panel opens or closes.', payload: '(open: boolean) => void', showWhen: { variant: 'popover' } },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: ['ColorInput', 'ColorInputPopover'],\n props: [\n { name: 'value', type: 'string', description: 'Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a).' },\n { name: 'defaultValue', type: 'string', defaultValue: \"'#000000'\", description: 'Initial color for uncontrolled usage.' },\n { name: 'onChange', type: '(color: string) => void', description: 'Called with the color formatted per `outputFormat` on every commit.' },\n { name: 'formats', type: 'ColorFormat[]', defaultValue: \"['hex','rgb','rgba','hsl']\", description: 'Representations offered in the in-component format select (what is displayed / edited). A single entry hides the select.' },\n { name: 'outputFormat', type: \"'hex' | 'rgb' | 'rgba' | 'hsl'\", defaultValue: \"'hex'\", description: 'Format `onChange` / `onEnter` return — fixed by this prop, independent of the visible representation. hex + alpha < 1 → 8-digit #rrggbbaa.' },\n { name: 'onEnter', type: '(color: string) => void', description: 'Enter commits the field; in the popover it also closes the panel.' },\n { name: 'onEsc', type: '() => void', description: 'Escape reverts the field draft; in the popover it also closes the panel.' },\n { name: 'alpha', type: 'boolean', defaultValue: 'true', description: 'Show the opacity slider.' },\n { name: 'eyedropper', type: 'boolean', defaultValue: 'true', description: 'Show the screen eyedropper button (Chromium only; auto-hidden where the EyeDropper API is unavailable).' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disable all interaction.' },\n { name: 'error', type: 'string', description: 'Non-empty string renders the error state and message below the panel.' },\n { name: 'open', type: 'boolean', description: 'Popover open state (controlled). ColorInputPopover only.' },\n { name: 'defaultOpen', type: 'boolean', defaultValue: 'false', description: 'Initial open state for uncontrolled popover usage. ColorInputPopover only.' },\n { name: 'onOpenChange', type: '(open: boolean) => void', description: 'Popover open/close callback. ColorInputPopover only.' },\n { name: 'placement', type: 'PopoverPlacement', defaultValue: \"'bottom-start'\", description: 'Preferred popover placement. ColorInputPopover only.' },\n { name: 'triggerLabel', type: 'string', defaultValue: \"'Choose color'\", description: 'Accessible name for the trigger swatch. ColorInputPopover only.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/color-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const colorInputDef: ComponentDef = {\n id: 'color-input',\n name: 'Color Input',\n category: 'Inputs',\n description: 'Color picker with a saturation/brightness area, hue and opacity sliders, a swatch, a screen eyedropper and a format select (HEX/RGB/RGBA/HSL). The value editor adapts to the format — one hex field, or R/G/B(/A) or H/S/L numeric fields — and re-derives on switch. Ships inline (ColorInput) and as a swatch-triggered popover (ColorInputPopover). `outputFormat` fixes the emitted format (default hex); Enter commits a field, Escape reverts it, and in the popover both also close the panel.',\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Field / Panel Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n // Shared\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 24, step: 1, unit: 'px' },\n { key: 'areaHeight', label: 'Area Height', control: 'slider', defaultValue: 160, min: 100, max: 240, step: 4, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'inline', label: 'Inline' },\n { value: 'popover', label: 'Popover' },\n ],\n defaultValue: 'inline',\n },\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every commit (drag, eyedropper, or field commit) with the color formatted per `outputFormat`.', payload: '(color: string) => void' },\n { name: 'onEnter', description: 'Fires when Enter commits a valid text-field draft.', payload: '(color: string) => void' },\n { name: 'onEsc', description: 'Fires when Escape reverts the text-field draft to the last committed value.', payload: '() => void' },\n { name: 'onOpenChange', description: 'Popover variant only — fires when the panel opens or closes.', payload: '(open: boolean) => void', showWhen: { variant: 'popover' } },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: ['ColorInput', 'ColorInputPopover'],\n props: [\n { name: 'value', type: 'string', description: 'Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a).' },\n { name: 'defaultValue', type: 'string', defaultValue: \"'#000000'\", description: 'Initial color for uncontrolled usage.' },\n { name: 'onChange', type: '(color: string) => void', description: 'Called with the color formatted per `outputFormat` on every commit.' },\n { name: 'formats', type: 'ColorFormat[]', defaultValue: \"['hex','rgb','rgba','hsl']\", description: 'Representations offered in the in-component format select (what is displayed / edited). A single entry hides the select.' },\n { name: 'outputFormat', type: \"'hex' | 'rgb' | 'rgba' | 'hsl'\", defaultValue: \"'hex'\", description: 'Format `onChange` / `onEnter` return — fixed by this prop, independent of the visible representation. hex + alpha < 1 → 8-digit #rrggbbaa.' },\n { name: 'onEnter', type: '(color: string) => void', description: 'Enter commits the field; in the popover it also closes the panel.' },\n { name: 'onEsc', type: '() => void', description: 'Escape reverts the field draft; in the popover it also closes the panel.' },\n { name: 'alpha', type: 'boolean', defaultValue: 'true', description: 'Show the opacity slider.' },\n { name: 'eyedropper', type: 'boolean', defaultValue: 'true', description: 'Show the screen eyedropper button (Chromium only; auto-hidden where the EyeDropper API is unavailable).' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disable all interaction.' },\n { name: 'error', type: 'string', description: 'Non-empty string renders the error state and message below the panel.' },\n { name: 'open', type: 'boolean', description: 'Popover open state (controlled). ColorInputPopover only.' },\n { name: 'defaultOpen', type: 'boolean', defaultValue: 'false', description: 'Initial open state for uncontrolled popover usage. ColorInputPopover only.' },\n { name: 'onOpenChange', type: '(open: boolean) => void', description: 'Popover open/close callback. ColorInputPopover only.' },\n { name: 'placement', type: 'PopoverPlacement', defaultValue: \"'bottom-start'\", description: 'Preferred popover placement. ColorInputPopover only.' },\n { name: 'triggerLabel', type: 'string', defaultValue: \"'Choose color'\", description: 'Accessible name for the trigger swatch. ColorInputPopover only.' },\n ],\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,gBAA8B;AAAA,EACzC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,iBAAiB;AAAA;AAAA,IAEf,EAAE,KAAK,mBAAmB,OAAO,4BAA4B,SAAS,SAAS,cAAc,qBAAqB,SAAS,eAAe,UAAU,EAAE,OAAO,UAAU,EAAE;AAAA,IACzK,EAAE,KAAK,eAAe,OAAO,UAAU,SAAS,SAAS,cAAc,uBAAuB,SAAS,eAAe,UAAU,EAAE,OAAO,UAAU,EAAE;AAAA,IACrJ,EAAE,KAAK,SAAS,OAAO,QAAQ,SAAS,SAAS,cAAc,qBAAqB,SAAS,eAAe,UAAU,EAAE,OAAO,UAAU,EAAE;AAAA;AAAA,IAE3I,EAAE,KAAK,eAAe,OAAO,UAAU,SAAS,SAAS,cAAc,uBAAuB,SAAS,eAAe,UAAU,EAAE,OAAO,QAAQ,EAAE;AAAA;AAAA,IAEnJ,EAAE,KAAK,eAAe,OAAO,UAAU,SAAS,SAAS,cAAc,uBAAuB,SAAS,eAAe,UAAU,EAAE,OAAO,QAAQ,EAAE;AAAA,IACnJ,EAAE,KAAK,aAAa,OAAO,QAAQ,SAAS,SAAS,cAAc,uBAAuB,SAAS,cAAc,UAAU,EAAE,OAAO,QAAQ,EAAE;AAAA;AAAA,IAE9I,EAAE,KAAK,mBAAmB,OAAO,WAAW,SAAS,UAAU,cAAc,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,MAAM,SAAS,iBAAiB,UAAU,EAAE,OAAO,WAAW,EAAE;AAAA;AAAA,IAE1K,EAAE,KAAK,eAAe,OAAO,UAAU,SAAS,SAAS,cAAc,4BAA4B,SAAS,eAAe,UAAU,EAAE,OAAO,QAAQ,EAAE;AAAA,IACxJ,EAAE,KAAK,cAAc,OAAO,WAAW,SAAS,SAAS,cAAc,4BAA4B,SAAS,cAAc,UAAU,EAAE,OAAO,QAAQ,EAAE;AAAA;AAAA,IAEvJ,EAAE,KAAK,gBAAgB,OAAO,iBAAiB,SAAS,UAAU,cAAc,GAAG,KAAK,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK;AAAA,IACxH,EAAE,KAAK,cAAc,OAAO,eAAe,SAAS,UAAU,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,GAAG,MAAM,KAAK;AAAA,IACzH,EAAE,KAAK,YAAY,OAAO,aAAa,SAAS,UAAU,cAAc,IAAI,KAAK,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK;AAAA,IACjH,EAAE,KAAK,YAAY,OAAO,aAAa,SAAS,UAAU,cAAc,GAAG,KAAK,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK;AAAA,IAChH,EAAE,KAAK,YAAY,OAAO,aAAa,SAAS,UAAU,cAAc,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK;AAAA,EACpH;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,QACP,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,QACnC,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,MACvC;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,QACP,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,QACrC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,QACjC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,QACjC,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,QACvC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,MACnC;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,YAAY,aAAa,0GAA0G,SAAS,0BAA0B;AAAA,IAC9K,EAAE,MAAM,WAAW,aAAa,sDAAsD,SAAS,0BAA0B;AAAA,IACzH,EAAE,MAAM,SAAS,aAAa,+EAA+E,SAAS,aAAa;AAAA,IACnI,EAAE,MAAM,gBAAgB,aAAa,qEAAgE,SAAS,2BAA2B,UAAU,EAAE,SAAS,UAAU,EAAE;AAAA,EAC5K;AAAA,EACA,KAAK;AAAA,IACH,YAAY;AAAA,IACZ,aAAa,CAAC,cAAc,mBAAmB;AAAA,IAC/C,OAAO;AAAA,MACL,EAAE,MAAM,SAAS,MAAM,UAAU,aAAa,yEAAyE;AAAA,MACvH,EAAE,MAAM,gBAAgB,MAAM,UAAU,cAAc,aAAa,aAAa,wCAAwC;AAAA,MACxH,EAAE,MAAM,YAAY,MAAM,2BAA2B,aAAa,sEAAsE;AAAA,MACxI,EAAE,MAAM,WAAW,MAAM,iBAAiB,cAAc,8BAA8B,aAAa,2HAA2H;AAAA,MAC9N,EAAE,MAAM,gBAAgB,MAAM,kCAAkC,cAAc,SAAS,aAAa,uJAA6I;AAAA,MACjP,EAAE,MAAM,WAAW,MAAM,2BAA2B,aAAa,oEAAoE;AAAA,MACrI,EAAE,MAAM,SAAS,MAAM,cAAc,aAAa,2EAA2E;AAAA,MAC7H,EAAE,MAAM,SAAS,MAAM,WAAW,cAAc,QAAQ,aAAa,2BAA2B;AAAA,MAChG,EAAE,MAAM,cAAc,MAAM,WAAW,cAAc,QAAQ,aAAa,0GAA0G;AAAA,MACpL,EAAE,MAAM,YAAY,MAAM,WAAW,cAAc,SAAS,aAAa,2BAA2B;AAAA,MACpG,EAAE,MAAM,SAAS,MAAM,UAAU,aAAa,wEAAwE;AAAA,MACtH,EAAE,MAAM,QAAQ,MAAM,WAAW,aAAa,2DAA2D;AAAA,MACzG,EAAE,MAAM,eAAe,MAAM,WAAW,cAAc,SAAS,aAAa,6EAA6E;AAAA,MACzJ,EAAE,MAAM,gBAAgB,MAAM,2BAA2B,aAAa,uDAAuD;AAAA,MAC7H,EAAE,MAAM,aAAa,MAAM,oBAAoB,cAAc,kBAAkB,aAAa,uDAAuD;AAAA,MACnJ,EAAE,MAAM,gBAAgB,MAAM,UAAU,cAAc,kBAAkB,aAAa,kEAAkE;AAAA,IACzJ;AAAA,EACF;AACF;","names":[]}
|
|
@@ -55,7 +55,7 @@ const colorInputDef = {
|
|
|
55
55
|
{ name: "onOpenChange", description: "Popover variant only \u2014 fires when the panel opens or closes.", payload: "(open: boolean) => void", showWhen: { variant: "popover" } }
|
|
56
56
|
],
|
|
57
57
|
api: {
|
|
58
|
-
importPath: "@viax/uxm/ui",
|
|
58
|
+
importPath: "@viax.io/uxm/ui",
|
|
59
59
|
importNames: ["ColorInput", "ColorInputPopover"],
|
|
60
60
|
props: [
|
|
61
61
|
{ name: "value", type: "string", description: "Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a)." },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/color-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const colorInputDef: ComponentDef = {\n id: 'color-input',\n name: 'Color Input',\n category: 'Inputs',\n description: 'Color picker with a saturation/brightness area, hue and opacity sliders, a swatch, a screen eyedropper and a format select (HEX/RGB/RGBA/HSL). The value editor adapts to the format — one hex field, or R/G/B(/A) or H/S/L numeric fields — and re-derives on switch. Ships inline (ColorInput) and as a swatch-triggered popover (ColorInputPopover). `outputFormat` fixes the emitted format (default hex); Enter commits a field, Escape reverts it, and in the popover both also close the panel.',\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Field / Panel Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n // Shared\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 24, step: 1, unit: 'px' },\n { key: 'areaHeight', label: 'Area Height', control: 'slider', defaultValue: 160, min: 100, max: 240, step: 4, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'inline', label: 'Inline' },\n { value: 'popover', label: 'Popover' },\n ],\n defaultValue: 'inline',\n },\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every commit (drag, eyedropper, or field commit) with the color formatted per `outputFormat`.', payload: '(color: string) => void' },\n { name: 'onEnter', description: 'Fires when Enter commits a valid text-field draft.', payload: '(color: string) => void' },\n { name: 'onEsc', description: 'Fires when Escape reverts the text-field draft to the last committed value.', payload: '() => void' },\n { name: 'onOpenChange', description: 'Popover variant only — fires when the panel opens or closes.', payload: '(open: boolean) => void', showWhen: { variant: 'popover' } },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: ['ColorInput', 'ColorInputPopover'],\n props: [\n { name: 'value', type: 'string', description: 'Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a).' },\n { name: 'defaultValue', type: 'string', defaultValue: \"'#000000'\", description: 'Initial color for uncontrolled usage.' },\n { name: 'onChange', type: '(color: string) => void', description: 'Called with the color formatted per `outputFormat` on every commit.' },\n { name: 'formats', type: 'ColorFormat[]', defaultValue: \"['hex','rgb','rgba','hsl']\", description: 'Representations offered in the in-component format select (what is displayed / edited). A single entry hides the select.' },\n { name: 'outputFormat', type: \"'hex' | 'rgb' | 'rgba' | 'hsl'\", defaultValue: \"'hex'\", description: 'Format `onChange` / `onEnter` return — fixed by this prop, independent of the visible representation. hex + alpha < 1 → 8-digit #rrggbbaa.' },\n { name: 'onEnter', type: '(color: string) => void', description: 'Enter commits the field; in the popover it also closes the panel.' },\n { name: 'onEsc', type: '() => void', description: 'Escape reverts the field draft; in the popover it also closes the panel.' },\n { name: 'alpha', type: 'boolean', defaultValue: 'true', description: 'Show the opacity slider.' },\n { name: 'eyedropper', type: 'boolean', defaultValue: 'true', description: 'Show the screen eyedropper button (Chromium only; auto-hidden where the EyeDropper API is unavailable).' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disable all interaction.' },\n { name: 'error', type: 'string', description: 'Non-empty string renders the error state and message below the panel.' },\n { name: 'open', type: 'boolean', description: 'Popover open state (controlled). ColorInputPopover only.' },\n { name: 'defaultOpen', type: 'boolean', defaultValue: 'false', description: 'Initial open state for uncontrolled popover usage. ColorInputPopover only.' },\n { name: 'onOpenChange', type: '(open: boolean) => void', description: 'Popover open/close callback. ColorInputPopover only.' },\n { name: 'placement', type: 'PopoverPlacement', defaultValue: \"'bottom-start'\", description: 'Preferred popover placement. ColorInputPopover only.' },\n { name: 'triggerLabel', type: 'string', defaultValue: \"'Choose color'\", description: 'Accessible name for the trigger swatch. ColorInputPopover only.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/color-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const colorInputDef: ComponentDef = {\n id: 'color-input',\n name: 'Color Input',\n category: 'Inputs',\n description: 'Color picker with a saturation/brightness area, hue and opacity sliders, a swatch, a screen eyedropper and a format select (HEX/RGB/RGBA/HSL). The value editor adapts to the format — one hex field, or R/G/B(/A) or H/S/L numeric fields — and re-derives on switch. Ships inline (ColorInput) and as a swatch-triggered popover (ColorInputPopover). `outputFormat` fixes the emitted format (default hex); Enter commits a field, Escape reverts it, and in the popover both also close the panel.',\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Field / Panel Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n // Shared\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 24, step: 1, unit: 'px' },\n { key: 'areaHeight', label: 'Area Height', control: 'slider', defaultValue: 160, min: 100, max: 240, step: 4, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 10, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 8, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n ],\n layoutVariants: [\n {\n key: 'variant',\n label: 'Variant',\n options: [\n { value: 'inline', label: 'Inline' },\n { value: 'popover', label: 'Popover' },\n ],\n defaultValue: 'inline',\n },\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every commit (drag, eyedropper, or field commit) with the color formatted per `outputFormat`.', payload: '(color: string) => void' },\n { name: 'onEnter', description: 'Fires when Enter commits a valid text-field draft.', payload: '(color: string) => void' },\n { name: 'onEsc', description: 'Fires when Escape reverts the text-field draft to the last committed value.', payload: '() => void' },\n { name: 'onOpenChange', description: 'Popover variant only — fires when the panel opens or closes.', payload: '(open: boolean) => void', showWhen: { variant: 'popover' } },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: ['ColorInput', 'ColorInputPopover'],\n props: [\n { name: 'value', type: 'string', description: 'Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a).' },\n { name: 'defaultValue', type: 'string', defaultValue: \"'#000000'\", description: 'Initial color for uncontrolled usage.' },\n { name: 'onChange', type: '(color: string) => void', description: 'Called with the color formatted per `outputFormat` on every commit.' },\n { name: 'formats', type: 'ColorFormat[]', defaultValue: \"['hex','rgb','rgba','hsl']\", description: 'Representations offered in the in-component format select (what is displayed / edited). A single entry hides the select.' },\n { name: 'outputFormat', type: \"'hex' | 'rgb' | 'rgba' | 'hsl'\", defaultValue: \"'hex'\", description: 'Format `onChange` / `onEnter` return — fixed by this prop, independent of the visible representation. hex + alpha < 1 → 8-digit #rrggbbaa.' },\n { name: 'onEnter', type: '(color: string) => void', description: 'Enter commits the field; in the popover it also closes the panel.' },\n { name: 'onEsc', type: '() => void', description: 'Escape reverts the field draft; in the popover it also closes the panel.' },\n { name: 'alpha', type: 'boolean', defaultValue: 'true', description: 'Show the opacity slider.' },\n { name: 'eyedropper', type: 'boolean', defaultValue: 'true', description: 'Show the screen eyedropper button (Chromium only; auto-hidden where the EyeDropper API is unavailable).' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disable all interaction.' },\n { name: 'error', type: 'string', description: 'Non-empty string renders the error state and message below the panel.' },\n { name: 'open', type: 'boolean', description: 'Popover open state (controlled). ColorInputPopover only.' },\n { name: 'defaultOpen', type: 'boolean', defaultValue: 'false', description: 'Initial open state for uncontrolled popover usage. ColorInputPopover only.' },\n { name: 'onOpenChange', type: '(open: boolean) => void', description: 'Popover open/close callback. ColorInputPopover only.' },\n { name: 'placement', type: 'PopoverPlacement', defaultValue: \"'bottom-start'\", description: 'Preferred popover placement. ColorInputPopover only.' },\n { name: 'triggerLabel', type: 'string', defaultValue: \"'Choose color'\", description: 'Accessible name for the trigger swatch. ColorInputPopover only.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -89,7 +89,7 @@ const currencyInputDef = {
|
|
|
89
89
|
{ name: "onBlur", description: "Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.", payload: "FocusEvent" }
|
|
90
90
|
],
|
|
91
91
|
api: {
|
|
92
|
-
importPath: "@viax/uxm/ui",
|
|
92
|
+
importPath: "@viax.io/uxm/ui",
|
|
93
93
|
importNames: "CurrencyInput",
|
|
94
94
|
props: [
|
|
95
95
|
{ name: "value", type: "{ currency: string, amount: string }", description: "Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string." },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/currency-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const currencyInputDef: ComponentDef = {\n id: 'currency-input',\n name: 'Currency Input',\n category: 'Inputs',\n description: \"Monetary input with a leading interactive currency picker (searchable popover, ~20 curated currencies by default). End users pick the currency at runtime — there's no design-time currency variant. Value is an object `{ currency, amount }`; amount is the raw digit string (consumers get clean data, the component owns display formatting). Standard finance UX: focus reveals raw digits, blur renders locale-formatted with thousands separators.\",\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'pickerHoverBg', label: 'Picker Hover', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledBg', label: 'Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n { key: 'errorMessageSize', label: 'Message Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px', section: 'errorState', showWhen: { state: 'error' } },\n // Shared geometry — same across all states\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n // Shared trim — picker chrome that stays constant across states.\n // Symbol / caret / divider don't morph between hover / focus /\n // disabled in any meaningful way (the field bg + border do all\n // the state work). Keeping them out of the per-state section\n // prevents the misleading \"tune these per state\" affordance.\n { key: 'dividerColor', label: 'Picker Divider', control: 'color', defaultValue: 'var(--color-border)' },\n { key: 'symbolColor', label: 'Symbol', control: 'color', defaultValue: 'var(--color-text)' },\n { key: 'caretColor', label: 'Caret', control: 'color', defaultValue: 'var(--color-text-muted)' },\n // No popover knobs here: the currency picker is the shared Listbox panel,\n // themed once via the `listbox` registry entry (`.uxm-listbox__panel`).\n ],\n layoutVariants: [\n // No `currency` variant — that's an end-user runtime choice\n // handled by the picker. The picker always sits on the left\n // (the prefix `$1,234.56` read), so there's no position knob.\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every keystroke or currency pick. Payload is the next `{ currency, amount }` object.', payload: '{ currency: string, amount: string }' },\n { name: 'onOpen', description: 'Fires when the currency popover opens.', payload: 'void' },\n { name: 'onClose', description: 'Fires when the currency popover closes (selection or outside click).', payload: 'void' },\n { name: 'onFocus', description: 'Fires when the amount input receives focus. Display flips from formatted to raw digits.', payload: 'FocusEvent' },\n { name: 'onBlur', description: 'Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.', payload: 'FocusEvent' },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: 'CurrencyInput',\n props: [\n { name: 'value', type: '{ currency: string, amount: string }', description: 'Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string.' },\n { name: 'onChange', type: '(value: CurrencyValue) => void', description: 'Called with the next value after each keystroke or currency pick.' },\n { name: 'defaultValue', type: 'CurrencyValue', defaultValue: '{ currency: \"USD\", amount: \"\" }', description: 'Initial value for uncontrolled usage.' },\n { name: 'currencies', type: 'Currency[]', defaultValue: 'CURATED_CURRENCIES', description: 'List shown in the picker. Default is ~20 curated currencies. Pass a single-entry array to effectively lock currency selection.' },\n { name: 'locale', type: 'string', defaultValue: '\"en-US\"', description: 'BCP-47 locale tag. Drives thousands separator style on blur display.' },\n { name: 'allowNegative', type: 'boolean', defaultValue: 'false', description: 'Allow a leading `-` sign for refunds / credits.' },\n { name: 'clearable', type: 'boolean', defaultValue: 'true', description: 'Show a trailing clear (✕) button when the amount has a value. Clearing wipes the amount and keeps the selected currency.' },\n { name: 'min', type: 'number', description: 'Lower bound on the amount. Clamped on blur.' },\n { name: 'max', type: 'number', description: 'Upper bound on the amount. Clamped on blur.' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disables the input and the currency picker.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/currency-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const currencyInputDef: ComponentDef = {\n id: 'currency-input',\n name: 'Currency Input',\n category: 'Inputs',\n description: \"Monetary input with a leading interactive currency picker (searchable popover, ~20 curated currencies by default). End users pick the currency at runtime — there's no design-time currency variant. Value is an object `{ currency, amount }`; amount is the raw digit string (consumers get clean data, the component owns display formatting). Standard finance UX: focus reveals raw digits, blur renders locale-formatted with thousands separators.\",\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'pickerHoverBg', label: 'Picker Hover', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledBg', label: 'Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n { key: 'errorMessageSize', label: 'Message Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px', section: 'errorState', showWhen: { state: 'error' } },\n // Shared geometry — same across all states\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n // Shared trim — picker chrome that stays constant across states.\n // Symbol / caret / divider don't morph between hover / focus /\n // disabled in any meaningful way (the field bg + border do all\n // the state work). Keeping them out of the per-state section\n // prevents the misleading \"tune these per state\" affordance.\n { key: 'dividerColor', label: 'Picker Divider', control: 'color', defaultValue: 'var(--color-border)' },\n { key: 'symbolColor', label: 'Symbol', control: 'color', defaultValue: 'var(--color-text)' },\n { key: 'caretColor', label: 'Caret', control: 'color', defaultValue: 'var(--color-text-muted)' },\n // No popover knobs here: the currency picker is the shared Listbox panel,\n // themed once via the `listbox` registry entry (`.uxm-listbox__panel`).\n ],\n layoutVariants: [\n // No `currency` variant — that's an end-user runtime choice\n // handled by the picker. The picker always sits on the left\n // (the prefix `$1,234.56` read), so there's no position knob.\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every keystroke or currency pick. Payload is the next `{ currency, amount }` object.', payload: '{ currency: string, amount: string }' },\n { name: 'onOpen', description: 'Fires when the currency popover opens.', payload: 'void' },\n { name: 'onClose', description: 'Fires when the currency popover closes (selection or outside click).', payload: 'void' },\n { name: 'onFocus', description: 'Fires when the amount input receives focus. Display flips from formatted to raw digits.', payload: 'FocusEvent' },\n { name: 'onBlur', description: 'Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.', payload: 'FocusEvent' },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: 'CurrencyInput',\n props: [\n { name: 'value', type: '{ currency: string, amount: string }', description: 'Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string.' },\n { name: 'onChange', type: '(value: CurrencyValue) => void', description: 'Called with the next value after each keystroke or currency pick.' },\n { name: 'defaultValue', type: 'CurrencyValue', defaultValue: '{ currency: \"USD\", amount: \"\" }', description: 'Initial value for uncontrolled usage.' },\n { name: 'currencies', type: 'Currency[]', defaultValue: 'CURATED_CURRENCIES', description: 'List shown in the picker. Default is ~20 curated currencies. Pass a single-entry array to effectively lock currency selection.' },\n { name: 'locale', type: 'string', defaultValue: '\"en-US\"', description: 'BCP-47 locale tag. Drives thousands separator style on blur display.' },\n { name: 'allowNegative', type: 'boolean', defaultValue: 'false', description: 'Allow a leading `-` sign for refunds / credits.' },\n { name: 'clearable', type: 'boolean', defaultValue: 'true', description: 'Show a trailing clear (✕) button when the amount has a value. Clearing wipes the amount and keeps the selected currency.' },\n { name: 'min', type: 'number', description: 'Lower bound on the amount. Clamped on blur.' },\n { name: 'max', type: 'number', description: 'Upper bound on the amount. Clamped on blur.' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disables the input and the currency picker.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -66,7 +66,7 @@ const currencyInputDef = {
|
|
|
66
66
|
{ name: "onBlur", description: "Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.", payload: "FocusEvent" }
|
|
67
67
|
],
|
|
68
68
|
api: {
|
|
69
|
-
importPath: "@viax/uxm/ui",
|
|
69
|
+
importPath: "@viax.io/uxm/ui",
|
|
70
70
|
importNames: "CurrencyInput",
|
|
71
71
|
props: [
|
|
72
72
|
{ name: "value", type: "{ currency: string, amount: string }", description: "Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string." },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/currency-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const currencyInputDef: ComponentDef = {\n id: 'currency-input',\n name: 'Currency Input',\n category: 'Inputs',\n description: \"Monetary input with a leading interactive currency picker (searchable popover, ~20 curated currencies by default). End users pick the currency at runtime — there's no design-time currency variant. Value is an object `{ currency, amount }`; amount is the raw digit string (consumers get clean data, the component owns display formatting). Standard finance UX: focus reveals raw digits, blur renders locale-formatted with thousands separators.\",\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'pickerHoverBg', label: 'Picker Hover', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledBg', label: 'Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n { key: 'errorMessageSize', label: 'Message Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px', section: 'errorState', showWhen: { state: 'error' } },\n // Shared geometry — same across all states\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n // Shared trim — picker chrome that stays constant across states.\n // Symbol / caret / divider don't morph between hover / focus /\n // disabled in any meaningful way (the field bg + border do all\n // the state work). Keeping them out of the per-state section\n // prevents the misleading \"tune these per state\" affordance.\n { key: 'dividerColor', label: 'Picker Divider', control: 'color', defaultValue: 'var(--color-border)' },\n { key: 'symbolColor', label: 'Symbol', control: 'color', defaultValue: 'var(--color-text)' },\n { key: 'caretColor', label: 'Caret', control: 'color', defaultValue: 'var(--color-text-muted)' },\n // No popover knobs here: the currency picker is the shared Listbox panel,\n // themed once via the `listbox` registry entry (`.uxm-listbox__panel`).\n ],\n layoutVariants: [\n // No `currency` variant — that's an end-user runtime choice\n // handled by the picker. The picker always sits on the left\n // (the prefix `$1,234.56` read), so there's no position knob.\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every keystroke or currency pick. Payload is the next `{ currency, amount }` object.', payload: '{ currency: string, amount: string }' },\n { name: 'onOpen', description: 'Fires when the currency popover opens.', payload: 'void' },\n { name: 'onClose', description: 'Fires when the currency popover closes (selection or outside click).', payload: 'void' },\n { name: 'onFocus', description: 'Fires when the amount input receives focus. Display flips from formatted to raw digits.', payload: 'FocusEvent' },\n { name: 'onBlur', description: 'Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.', payload: 'FocusEvent' },\n ],\n api: {\n importPath: '@viax/uxm/ui',\n importNames: 'CurrencyInput',\n props: [\n { name: 'value', type: '{ currency: string, amount: string }', description: 'Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string.' },\n { name: 'onChange', type: '(value: CurrencyValue) => void', description: 'Called with the next value after each keystroke or currency pick.' },\n { name: 'defaultValue', type: 'CurrencyValue', defaultValue: '{ currency: \"USD\", amount: \"\" }', description: 'Initial value for uncontrolled usage.' },\n { name: 'currencies', type: 'Currency[]', defaultValue: 'CURATED_CURRENCIES', description: 'List shown in the picker. Default is ~20 curated currencies. Pass a single-entry array to effectively lock currency selection.' },\n { name: 'locale', type: 'string', defaultValue: '\"en-US\"', description: 'BCP-47 locale tag. Drives thousands separator style on blur display.' },\n { name: 'allowNegative', type: 'boolean', defaultValue: 'false', description: 'Allow a leading `-` sign for refunds / credits.' },\n { name: 'clearable', type: 'boolean', defaultValue: 'true', description: 'Show a trailing clear (✕) button when the amount has a value. Clearing wipes the amount and keeps the selected currency.' },\n { name: 'min', type: 'number', description: 'Lower bound on the amount. Clamped on blur.' },\n { name: 'max', type: 'number', description: 'Upper bound on the amount. Clamped on blur.' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disables the input and the currency picker.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/studio/lib/registry/inputs/currency-input.ts"],"sourcesContent":["import type { ComponentDef } from '../../types';\n\nexport const currencyInputDef: ComponentDef = {\n id: 'currency-input',\n name: 'Currency Input',\n category: 'Inputs',\n description: \"Monetary input with a leading interactive currency picker (searchable popover, ~20 curated currencies by default). End users pick the currency at runtime — there's no design-time currency variant. Value is an object `{ currency, amount }`; amount is the raw digit string (consumers get clean data, the component owns display formatting). Standard finance UX: focus reveals raw digits, blur renders locale-formatted with thousands separators.\",\n styleProperties: [\n // Default\n { key: 'backgroundColor', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'borderColor', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'default' } },\n { key: 'color', label: 'Text', control: 'color', defaultValue: 'var(--color-text)', section: 'fieldColors', showWhen: { state: 'default' } },\n // Hover\n { key: 'hoverBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'hoverBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'hover' } },\n { key: 'pickerHoverBg', label: 'Picker Hover', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'hover' } },\n // Focus\n { key: 'focusBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-accent)', section: 'fieldColors', showWhen: { state: 'focus' } },\n { key: 'focusRing', label: 'Ring', control: 'color', defaultValue: 'var(--color-accent)', section: 'focusState', showWhen: { state: 'focus' } },\n // Disabled\n { key: 'disabledBg', label: 'Background', control: 'color', defaultValue: 'var(--color-surface-alt)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-border)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledColor', label: 'Text', control: 'color', defaultValue: 'var(--color-text-muted)', section: 'fieldColors', showWhen: { state: 'disabled' } },\n { key: 'disabledOpacity', label: 'Opacity', control: 'slider', defaultValue: 0.6, min: 0.1, max: 1, step: 0.05, section: 'disabledState', showWhen: { state: 'disabled' } },\n // Error\n { key: 'errorBg', label: 'Background', control: 'color', defaultValue: 'var(--color-card)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorBorder', label: 'Border', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'fieldColors', showWhen: { state: 'error' } },\n { key: 'errorColor', label: 'Message', control: 'color', defaultValue: 'var(--color-danger-text)', section: 'errorState', showWhen: { state: 'error' } },\n { key: 'errorMessageSize', label: 'Message Size', control: 'number', defaultValue: 12, min: 10, max: 16, step: 1, unit: 'px', section: 'errorState', showWhen: { state: 'error' } },\n // Shared geometry — same across all states\n { key: 'borderRadius', label: 'Border Radius', control: 'slider', defaultValue: 8, min: 0, max: 16, step: 1, unit: 'px' },\n { key: 'paddingX', label: 'Padding X', control: 'number', defaultValue: 12, min: 4, max: 24, step: 2, unit: 'px' },\n { key: 'paddingY', label: 'Padding Y', control: 'number', defaultValue: 10, min: 4, max: 20, step: 2, unit: 'px' },\n { key: 'fontSize', label: 'Font Size', control: 'number', defaultValue: 14, min: 10, max: 20, step: 1, unit: 'px' },\n // Shared trim — picker chrome that stays constant across states.\n // Symbol / caret / divider don't morph between hover / focus /\n // disabled in any meaningful way (the field bg + border do all\n // the state work). Keeping them out of the per-state section\n // prevents the misleading \"tune these per state\" affordance.\n { key: 'dividerColor', label: 'Picker Divider', control: 'color', defaultValue: 'var(--color-border)' },\n { key: 'symbolColor', label: 'Symbol', control: 'color', defaultValue: 'var(--color-text)' },\n { key: 'caretColor', label: 'Caret', control: 'color', defaultValue: 'var(--color-text-muted)' },\n // No popover knobs here: the currency picker is the shared Listbox panel,\n // themed once via the `listbox` registry entry (`.uxm-listbox__panel`).\n ],\n layoutVariants: [\n // No `currency` variant — that's an end-user runtime choice\n // handled by the picker. The picker always sits on the left\n // (the prefix `$1,234.56` read), so there's no position knob.\n {\n key: 'state',\n label: 'State',\n options: [\n { value: 'default', label: 'Default' },\n { value: 'hover', label: 'Hover' },\n { value: 'focus', label: 'Focus' },\n { value: 'disabled', label: 'Disabled' },\n { value: 'error', label: 'Error' },\n ],\n defaultValue: 'default',\n },\n ],\n events: [\n { name: 'onChange', description: 'Fires on every keystroke or currency pick. Payload is the next `{ currency, amount }` object.', payload: '{ currency: string, amount: string }' },\n { name: 'onOpen', description: 'Fires when the currency popover opens.', payload: 'void' },\n { name: 'onClose', description: 'Fires when the currency popover closes (selection or outside click).', payload: 'void' },\n { name: 'onFocus', description: 'Fires when the amount input receives focus. Display flips from formatted to raw digits.', payload: 'FocusEvent' },\n { name: 'onBlur', description: 'Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.', payload: 'FocusEvent' },\n ],\n api: {\n importPath: '@viax.io/uxm/ui',\n importNames: 'CurrencyInput',\n props: [\n { name: 'value', type: '{ currency: string, amount: string }', description: 'Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string.' },\n { name: 'onChange', type: '(value: CurrencyValue) => void', description: 'Called with the next value after each keystroke or currency pick.' },\n { name: 'defaultValue', type: 'CurrencyValue', defaultValue: '{ currency: \"USD\", amount: \"\" }', description: 'Initial value for uncontrolled usage.' },\n { name: 'currencies', type: 'Currency[]', defaultValue: 'CURATED_CURRENCIES', description: 'List shown in the picker. Default is ~20 curated currencies. Pass a single-entry array to effectively lock currency selection.' },\n { name: 'locale', type: 'string', defaultValue: '\"en-US\"', description: 'BCP-47 locale tag. Drives thousands separator style on blur display.' },\n { name: 'allowNegative', type: 'boolean', defaultValue: 'false', description: 'Allow a leading `-` sign for refunds / credits.' },\n { name: 'clearable', type: 'boolean', defaultValue: 'true', description: 'Show a trailing clear (✕) button when the amount has a value. Clearing wipes the amount and keeps the selected currency.' },\n { name: 'min', type: 'number', description: 'Lower bound on the amount. Clamped on blur.' },\n { name: 'max', type: 'number', description: 'Upper bound on the amount. Clamped on blur.' },\n { name: 'disabled', type: 'boolean', defaultValue: 'false', description: 'Disables the input and the currency picker.' },\n ],\n },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -180,7 +180,7 @@ const editableCellDef = {
|
|
|
180
180
|
{ name: "onCommit", description: "Fires when the user confirms a change (Enter, or blur with no validation error; for multiselect, each toggle). Async \u2014 the atom shows a submitting state until the returned promise settles.", payload: "(next: string | number | string[]) => void | Promise<void>" }
|
|
181
181
|
],
|
|
182
182
|
api: {
|
|
183
|
-
importPath: "@viax/uxm/ui",
|
|
183
|
+
importPath: "@viax.io/uxm/ui",
|
|
184
184
|
importNames: "EditableCell",
|
|
185
185
|
props: [
|
|
186
186
|
{ name: "value", type: "string | number | string[]", required: true, description: "Current committed value (a string[] of picked option values for multiselect). The atom keeps a draft internally during edit." },
|