@viax.io/uxm 4.36.0 → 4.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +74 -31
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +3 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/previews/index.cjs +3 -0
  7. package/dist/previews/index.cjs.map +1 -1
  8. package/dist/previews/index.d.ts +3 -2
  9. package/dist/previews/index.d.ts.map +1 -1
  10. package/dist/previews/index.js +2 -0
  11. package/dist/previews/index.js.map +1 -1
  12. package/dist/studio/index.cjs.map +1 -1
  13. package/dist/studio/index.d.ts +2 -2
  14. package/dist/studio/index.js.map +1 -1
  15. package/dist/studio/lib/registry/app.cjs +52 -0
  16. package/dist/studio/lib/registry/app.cjs.map +1 -1
  17. package/dist/studio/lib/registry/app.d.ts.map +1 -1
  18. package/dist/studio/lib/registry/app.js +52 -0
  19. package/dist/studio/lib/registry/app.js.map +1 -1
  20. package/dist/studio/lib/registry/buttons.cjs +2 -2
  21. package/dist/studio/lib/registry/buttons.cjs.map +1 -1
  22. package/dist/studio/lib/registry/buttons.js +2 -2
  23. package/dist/studio/lib/registry/buttons.js.map +1 -1
  24. package/dist/studio/lib/registry/composite.cjs +1 -1
  25. package/dist/studio/lib/registry/composite.cjs.map +1 -1
  26. package/dist/studio/lib/registry/composite.js +1 -1
  27. package/dist/studio/lib/registry/composite.js.map +1 -1
  28. package/dist/studio/lib/registry/diagram.cjs +1 -1
  29. package/dist/studio/lib/registry/diagram.cjs.map +1 -1
  30. package/dist/studio/lib/registry/diagram.js +1 -1
  31. package/dist/studio/lib/registry/diagram.js.map +1 -1
  32. package/dist/studio/lib/registry/display.cjs +2 -2
  33. package/dist/studio/lib/registry/display.cjs.map +1 -1
  34. package/dist/studio/lib/registry/display.js +2 -2
  35. package/dist/studio/lib/registry/display.js.map +1 -1
  36. package/dist/studio/lib/registry/feedback.cjs +3 -3
  37. package/dist/studio/lib/registry/feedback.cjs.map +1 -1
  38. package/dist/studio/lib/registry/feedback.js +3 -3
  39. package/dist/studio/lib/registry/feedback.js.map +1 -1
  40. package/dist/studio/lib/registry/inputs.cjs +12 -12
  41. package/dist/studio/lib/registry/inputs.cjs.map +1 -1
  42. package/dist/studio/lib/registry/inputs.js +12 -12
  43. package/dist/studio/lib/registry/inputs.js.map +1 -1
  44. package/dist/studio/lib/types.cjs.map +1 -1
  45. package/dist/studio/persistence/generate-css.cjs +15 -0
  46. package/dist/studio/persistence/generate-css.cjs.map +1 -1
  47. package/dist/studio/persistence/generate-css.d.ts.map +1 -1
  48. package/dist/studio/persistence/generate-css.js +15 -0
  49. package/dist/studio/persistence/generate-css.js.map +1 -1
  50. package/dist/studio/shell/canvas.cjs +1 -0
  51. package/dist/studio/shell/canvas.cjs.map +1 -1
  52. package/dist/studio/shell/canvas.d.ts.map +1 -1
  53. package/dist/studio/shell/canvas.js +2 -0
  54. package/dist/studio/shell/canvas.js.map +1 -1
  55. package/dist/ui/calendar/calendar.cjs +3 -1
  56. package/dist/ui/calendar/calendar.cjs.map +1 -1
  57. package/dist/ui/calendar/calendar.d.ts +6 -2
  58. package/dist/ui/calendar/calendar.d.ts.map +1 -1
  59. package/dist/ui/calendar/calendar.js +3 -1
  60. package/dist/ui/calendar/calendar.js.map +1 -1
  61. package/dist/ui/currency-input/currency-input.cjs +3 -1
  62. package/dist/ui/currency-input/currency-input.cjs.map +1 -1
  63. package/dist/ui/currency-input/currency-input.d.ts +4 -2
  64. package/dist/ui/currency-input/currency-input.d.ts.map +1 -1
  65. package/dist/ui/currency-input/currency-input.js +3 -1
  66. package/dist/ui/currency-input/currency-input.js.map +1 -1
  67. package/dist/ui/date-input/date-input.cjs +2 -1
  68. package/dist/ui/date-input/date-input.cjs.map +1 -1
  69. package/dist/ui/date-input/date-input.d.ts +11 -1
  70. package/dist/ui/date-input/date-input.d.ts.map +1 -1
  71. package/dist/ui/date-input/date-input.js +2 -1
  72. package/dist/ui/date-input/date-input.js.map +1 -1
  73. package/dist/ui/editable-cell/editable-cell.cjs +20 -6
  74. package/dist/ui/editable-cell/editable-cell.cjs.map +1 -1
  75. package/dist/ui/editable-cell/editable-cell.d.ts +24 -1
  76. package/dist/ui/editable-cell/editable-cell.d.ts.map +1 -1
  77. package/dist/ui/editable-cell/editable-cell.js +20 -6
  78. package/dist/ui/editable-cell/editable-cell.js.map +1 -1
  79. package/dist/ui/file-upload/file-upload.cjs +36 -9
  80. package/dist/ui/file-upload/file-upload.cjs.map +1 -1
  81. package/dist/ui/file-upload/file-upload.d.ts +46 -4
  82. package/dist/ui/file-upload/file-upload.d.ts.map +1 -1
  83. package/dist/ui/file-upload/file-upload.js +36 -9
  84. package/dist/ui/file-upload/file-upload.js.map +1 -1
  85. package/dist/ui/index.cjs +12 -2
  86. package/dist/ui/index.cjs.map +1 -1
  87. package/dist/ui/index.d.ts +5 -1
  88. package/dist/ui/index.d.ts.map +1 -1
  89. package/dist/ui/index.js +7 -1
  90. package/dist/ui/index.js.map +1 -1
  91. package/dist/ui/language-switcher/index.cjs +29 -0
  92. package/dist/ui/language-switcher/index.cjs.map +1 -0
  93. package/dist/ui/language-switcher/index.d.ts +3 -0
  94. package/dist/ui/language-switcher/index.d.ts.map +1 -0
  95. package/dist/ui/language-switcher/index.js +5 -0
  96. package/dist/ui/language-switcher/index.js.map +1 -0
  97. package/dist/ui/language-switcher/language-switcher-preview.cjs +137 -0
  98. package/dist/ui/language-switcher/language-switcher-preview.cjs.map +1 -0
  99. package/dist/ui/language-switcher/language-switcher-preview.d.ts +3 -0
  100. package/dist/ui/language-switcher/language-switcher-preview.d.ts.map +1 -0
  101. package/dist/ui/language-switcher/language-switcher-preview.js +113 -0
  102. package/dist/ui/language-switcher/language-switcher-preview.js.map +1 -0
  103. package/dist/ui/language-switcher/language-switcher.cjs +127 -0
  104. package/dist/ui/language-switcher/language-switcher.cjs.map +1 -0
  105. package/dist/ui/language-switcher/language-switcher.css +95 -0
  106. package/dist/ui/language-switcher/language-switcher.d.ts +73 -0
  107. package/dist/ui/language-switcher/language-switcher.d.ts.map +1 -0
  108. package/dist/ui/language-switcher/language-switcher.js +103 -0
  109. package/dist/ui/language-switcher/language-switcher.js.map +1 -0
  110. package/dist/ui/locale/index.cjs +33 -0
  111. package/dist/ui/locale/index.cjs.map +1 -0
  112. package/dist/ui/locale/index.d.ts +3 -0
  113. package/dist/ui/locale/index.d.ts.map +1 -0
  114. package/dist/ui/locale/index.js +7 -0
  115. package/dist/ui/locale/index.js.map +1 -0
  116. package/dist/ui/locale/locale.cjs +43 -0
  117. package/dist/ui/locale/locale.cjs.map +1 -0
  118. package/dist/ui/locale/locale.d.ts +49 -0
  119. package/dist/ui/locale/locale.d.ts.map +1 -0
  120. package/dist/ui/locale/locale.js +17 -0
  121. package/dist/ui/locale/locale.js.map +1 -0
  122. package/dist/ui/page-shell/page-shell.cjs.map +1 -1
  123. package/dist/ui/page-shell/page-shell.d.ts +1 -1
  124. package/dist/ui/page-shell/page-shell.d.ts.map +1 -1
  125. package/dist/ui/page-shell/page-shell.js.map +1 -1
  126. package/dist/ui/range-slider/range-slider.cjs +7 -3
  127. package/dist/ui/range-slider/range-slider.cjs.map +1 -1
  128. package/dist/ui/range-slider/range-slider.d.ts +17 -1
  129. package/dist/ui/range-slider/range-slider.d.ts.map +1 -1
  130. package/dist/ui/range-slider/range-slider.js +7 -3
  131. package/dist/ui/range-slider/range-slider.js.map +1 -1
  132. package/dist/ui/styles.css +2 -1
  133. package/package.json +4 -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.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":[]}
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":[]}
@@ -82,7 +82,7 @@ const inputsDefs = [
82
82
  { name: "onBlur", description: "Fires when the field loses focus.", payload: "FocusEvent" }
83
83
  ],
84
84
  api: {
85
- importPath: "@viax.io/uxm/ui",
85
+ importPath: "@viax/uxm/ui",
86
86
  importNames: "TextInput",
87
87
  props: [
88
88
  { name: "value", type: "string", description: "Current value (controlled)." },
@@ -255,7 +255,7 @@ const inputsDefs = [
255
255
  { 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>" }
256
256
  ],
257
257
  api: {
258
- importPath: "@viax.io/uxm/ui",
258
+ importPath: "@viax/uxm/ui",
259
259
  importNames: "EditableCell",
260
260
  props: [
261
261
  { 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." },
@@ -395,7 +395,7 @@ const inputsDefs = [
395
395
  { name: "onBlur", description: "Fires when the field loses focus.", payload: "FocusEvent" }
396
396
  ],
397
397
  api: {
398
- importPath: "@viax.io/uxm/ui",
398
+ importPath: "@viax/uxm/ui",
399
399
  importNames: "PasswordInput",
400
400
  props: [
401
401
  { name: "value", type: "string", description: "Current value (controlled)." },
@@ -467,7 +467,7 @@ const inputsDefs = [
467
467
  { name: "onOpenChange", description: "Popover variant only \u2014 fires when the panel opens or closes.", payload: "(open: boolean) => void", showWhen: { variant: "popover" } }
468
468
  ],
469
469
  api: {
470
- importPath: "@viax.io/uxm/ui",
470
+ importPath: "@viax/uxm/ui",
471
471
  importNames: ["ColorInput", "ColorInputPopover"],
472
472
  props: [
473
473
  { name: "value", type: "string", description: "Current color (controlled). Any supported syntax: hex, rgb(a), hsl(a)." },
@@ -654,7 +654,7 @@ const inputsDefs = [
654
654
  { name: "onBlur", description: "Fires when the field loses focus.", payload: "FocusEvent" }
655
655
  ],
656
656
  api: {
657
- importPath: "@viax.io/uxm/ui",
657
+ importPath: "@viax/uxm/ui",
658
658
  importNames: "TimeInput",
659
659
  props: [
660
660
  { name: "value", type: "string", description: 'Current value (controlled). 24h: `"HH:MM"`. 12h: `"HH:MM AM"` or `"HH:MM PM"`.' },
@@ -733,7 +733,7 @@ const inputsDefs = [
733
733
  { name: "onBlur", description: "Fires when focus leaves the field.", payload: "FocusEvent" }
734
734
  ],
735
735
  api: {
736
- importPath: "@viax.io/uxm/ui",
736
+ importPath: "@viax/uxm/ui",
737
737
  importNames: "PhoneInput",
738
738
  props: [
739
739
  { name: "value", type: "{ country: string, number: string }", description: "Controlled value. `country` is an ISO-3166 alpha-2 code; `number` is raw digits." },
@@ -806,7 +806,7 @@ const inputsDefs = [
806
806
  { name: "onChange", description: "Fires continuously while the user drags either thumb. Payload is the full [start, end] range.", payload: "{ value: [number, number] }", showWhen: { mode: "range" } }
807
807
  ],
808
808
  api: {
809
- importPath: "@viax.io/uxm/ui",
809
+ importPath: "@viax/uxm/ui",
810
810
  importNames: ["Slider", "RangeSlider"],
811
811
  props: [
812
812
  { name: "value", type: "number // (Slider) | [number, number] // (RangeSlider)", description: "Current value. Tuple for RangeSlider." },
@@ -949,7 +949,7 @@ const inputsDefs = [
949
949
  { name: "onFocus", description: "Fires when the field receives focus.", payload: "FocusEvent" }
950
950
  ],
951
951
  api: {
952
- importPath: "@viax.io/uxm/ui",
952
+ importPath: "@viax/uxm/ui",
953
953
  importNames: "NumberInput",
954
954
  props: [
955
955
  { name: "value", type: "string", description: "Current value as a digit string (controlled)." },
@@ -1033,7 +1033,7 @@ const inputsDefs = [
1033
1033
  { name: "onBlur", description: "Fires when the amount input loses focus. Triggers min/max clamping AND switches display back to locale-formatted.", payload: "FocusEvent" }
1034
1034
  ],
1035
1035
  api: {
1036
- importPath: "@viax.io/uxm/ui",
1036
+ importPath: "@viax/uxm/ui",
1037
1037
  importNames: "CurrencyInput",
1038
1038
  props: [
1039
1039
  { name: "value", type: "{ currency: string, amount: string }", description: "Controlled value. `currency` is an ISO 4217 code; `amount` is the raw digit string." },
@@ -1281,7 +1281,7 @@ const inputsDefs = [
1281
1281
  { name: "onError", description: "Fires when the caller rejects a drop (e.g. wrong MIME). The atom never fires this on its own \u2014 drive it from your validation in `onFiles`.", payload: "{ reason: string }" }
1282
1282
  ],
1283
1283
  api: {
1284
- importPath: "@viax.io/uxm/ui",
1284
+ importPath: "@viax/uxm/ui",
1285
1285
  importNames: "FileUpload",
1286
1286
  props: [
1287
1287
  { name: "onFiles", type: "(files: File[]) => void", description: "Receives picked or dropped files." },
@@ -1601,7 +1601,7 @@ const inputsDefs = [
1601
1601
  { name: "onOpenChange", description: "Fires when the panel opens or closes.", payload: "boolean" }
1602
1602
  ],
1603
1603
  api: {
1604
- importPath: "@viax.io/uxm/ui",
1604
+ importPath: "@viax/uxm/ui",
1605
1605
  importNames: ["Listbox", "MultiListbox"],
1606
1606
  props: [
1607
1607
  { name: "items", type: "T[]", required: true, description: "Source data \u2014 the listbox is generic over T and has no knowledge of what's inside." },
@@ -1792,7 +1792,7 @@ const inputsDefs = [
1792
1792
  { name: "onOpenChange", description: "Fires when the menu opens or closes.", payload: "boolean" }
1793
1793
  ],
1794
1794
  api: {
1795
- importPath: "@viax.io/uxm/ui",
1795
+ importPath: "@viax/uxm/ui",
1796
1796
  importNames: "Menu",
1797
1797
  props: [
1798
1798
  { name: "items", type: "MenuEntry[]", required: true, description: "Menu entries \u2014 actionable items ({ key, label, subtitle?, icon?, iconColor?, hint?, onSelect?, disabled?, danger?, current? }) and separators ({ separator: true }), in display order. Pass `subtitle` to render a two-line row (label = headline), `iconColor` to tint ONE row's glyph (prefer a `var(--color-*)` reference; raw hex only for entity-identity colours), and `current` to mark the row the user is already on (aria-current + trailing checkmark + heavier label)." },