@vantageos/mosaic 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/LICENSE +110 -0
  3. package/README.md +84 -21
  4. package/dist/artifacts.cjs +4 -0
  5. package/dist/artifacts.cjs.map +1 -1
  6. package/dist/artifacts.js +4 -0
  7. package/dist/artifacts.js.map +1 -1
  8. package/dist/confirmation.cjs +4 -0
  9. package/dist/confirmation.cjs.map +1 -1
  10. package/dist/confirmation.js +4 -0
  11. package/dist/confirmation.js.map +1 -1
  12. package/dist/display.cjs +4 -0
  13. package/dist/display.cjs.map +1 -1
  14. package/dist/display.js +4 -0
  15. package/dist/display.js.map +1 -1
  16. package/dist/index.cjs +4 -0
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.js +4 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/media.cjs +4 -0
  21. package/dist/media.cjs.map +1 -1
  22. package/dist/media.js +4 -0
  23. package/dist/media.js.map +1 -1
  24. package/dist/preact/artifacts.js +4 -0
  25. package/dist/preact/artifacts.js.map +1 -1
  26. package/dist/preact/confirmation.js +4 -0
  27. package/dist/preact/confirmation.js.map +1 -1
  28. package/dist/preact/display.d.ts +43 -1
  29. package/dist/preact/display.js +59 -1
  30. package/dist/preact/display.js.map +1 -1
  31. package/dist/preact/progress.js +4 -0
  32. package/dist/preact/progress.js.map +1 -1
  33. package/dist/progress.cjs +4 -0
  34. package/dist/progress.cjs.map +1 -1
  35. package/dist/progress.js +4 -0
  36. package/dist/progress.js.map +1 -1
  37. package/dist/react/artifacts.cjs +4 -0
  38. package/dist/react/artifacts.cjs.map +1 -1
  39. package/dist/react/artifacts.js +4 -0
  40. package/dist/react/artifacts.js.map +1 -1
  41. package/dist/react/confirmation.cjs +4 -0
  42. package/dist/react/confirmation.cjs.map +1 -1
  43. package/dist/react/confirmation.js +4 -0
  44. package/dist/react/confirmation.js.map +1 -1
  45. package/dist/react/display.cjs +61 -0
  46. package/dist/react/display.cjs.map +1 -1
  47. package/dist/react/display.d.cts +43 -1
  48. package/dist/react/display.d.ts +43 -1
  49. package/dist/react/display.js +59 -1
  50. package/dist/react/display.js.map +1 -1
  51. package/dist/react/progress.cjs +4 -0
  52. package/dist/react/progress.cjs.map +1 -1
  53. package/dist/react/progress.js +4 -0
  54. package/dist/react/progress.js.map +1 -1
  55. package/dist/tokens.cjs +73 -22
  56. package/dist/tokens.cjs.map +1 -1
  57. package/dist/tokens.d.cts +23 -3
  58. package/dist/tokens.d.ts +23 -3
  59. package/dist/tokens.js +73 -22
  60. package/dist/tokens.js.map +1 -1
  61. package/package.json +233 -230
  62. package/registry.yaml +7 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../mosaic-tokens/src/tokens.ts"],"names":[],"mappings":";AA8BO,IAAM,MAAA,GAAiC,OAAO,MAAA,CAAO;AAAA,EAC1D,YAAA,EAAc,wBAAA;AAAA,EACd,aAAA,EAAe,wBAAA;AAAA,EACf,aAAA,EAAe,wBAAA;AAAA,EACf,YAAA,EAAc,uBAAA;AAAA,EACd,aAAA,EAAe,uBAAA;AAAA,EACf,aAAA,EAAe,uBAAA;AAAA,EACf,WAAA,EAAa,uBAAA;AAAA,EACb,YAAA,EAAc,uBAAA;AAAA,EACd,YAAA,EAAc,uBAAA;AAAA,EACd,SAAA,EAAW,wBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,UAAA,EAAY,wBAAA;AAAA,EACZ,YAAA,EAAc,wBAAA;AAAA,EACd,aAAA,EAAe,wBAAA;AAAA,EACf,aAAA,EAAe;AACjB,CAAC;AAGM,IAAM,OAAA,GAAmC,OAAO,MAAA,CAAO;AAAA,EAC5D,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,MAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAC;AAGM,IAAM,UAAA,GAAyC,OAAO,MAAA,CAAO;AAAA,EAClE,SAAA,EAAW,MAAA;AAAA,EACX,SAAA,EAAW,MAAA;AAAA,EACX,WAAA,EAAa,MAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,SAAA,EAAW,MAAA;AAAA,EACX,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,KAAA;AAAA,EACZ,WAAA,EAAa,KAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA,EACd,gBAAA,EAAkB,KAAA;AAAA,EAClB,eAAA,EAAiB,KAAA;AAAA,EACjB,iBAAA,EAAmB,KAAA;AAAA,EACnB,aAAA,EAAe;AACjB,CAAC;AAGM,IAAM,OAAA,GAAmC,OAAO,MAAA,CAAO;AAAA,EAC5D,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,2CAAA;AAAA,EACL,GAAA,EAAK,4FAAA;AAAA,EACL,GAAA,EAAK,4FAAA;AAAA,EACL,GAAA,EAAK,6FAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAC;AAGM,IAAM,KAAA,GAA+B,OAAO,MAAA,CAAO;AAAA,EACxD,IAAA,EAAM,KAAA;AAAA,EACN,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAC;AAGM,IAAM,MAAA,GAAiC,OAAO,MAAA,CAAO;AAAA,EAC1D,eAAA,EAAiB,MAAA;AAAA,EACjB,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,QAAA;AAAA,EACjB,aAAA,EAAe,8BAAA;AAAA,EACf,WAAA,EAAa,4BAAA;AAAA,EACb,YAAA,EAAc,4BAAA;AAAA,EACd,eAAA,EAAiB;AACnB,CAAC;AAEM,IAAM,MAAA,GAAuB,OAAO,MAAA,CAAO;AAAA,EAChD,MAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAC;AAED,IAAO,cAAA,GAAQ","file":"tokens.js","sourcesContent":["/**\n * @vantageos/mosaic-tokens — design tokens (T3-B implementation).\n *\n * Framework-free, OKLCH-based, mirror of the CSS custom properties in\n * tokens.css. Consumers can opt for either the CSS surface (Tailwind v4\n * + @theme inline) or the JS surface (typed runtime access in JSX styles,\n * Storybook stories, Playwright assertions, snapshot tests).\n *\n * Size targets (.size-limit.json): JS bundle ≤5 KB gz, CSS ≤3 KB gz.\n *\n * Schema invariants (enforced by mosaic-tokens-coherence-test in T3-C):\n * - Every CSS var has a JS counterpart (and vice versa).\n * - Color shades 50 < 500 < 700 monotonic luminance.\n * - Spacing scale ascending, ratio 1.5x average (4 → 64 px).\n * - Typography scale uses 1.25x ratio (12 → 38 px).\n * - Shadow elevation 0 < 1 < 2 < 3 < 4 < 5 monotonic blur radius.\n * - Radii strictly ascending (none → full).\n */\n\nexport interface MosaicTokens {\n readonly colors: Readonly<Record<string, string>>;\n readonly spacing: Readonly<Record<string, string>>;\n readonly typography: Readonly<Record<string, string>>;\n readonly shadows: Readonly<Record<string, string>>;\n readonly radii: Readonly<Record<string, string>>;\n readonly motion: Readonly<Record<string, string>>;\n}\n\n// Colors — semantic statuses × 3 shades (50/500/700), OKLCH.\n// 50 = surface tint, 500 = brand body, 700 = accessible contrast on light bg.\nexport const colors: MosaicTokens[\"colors\"] = Object.freeze({\n \"success-50\": \"oklch(0.965 0.040 145)\",\n \"success-500\": \"oklch(0.660 0.180 145)\",\n \"success-700\": \"oklch(0.470 0.140 145)\",\n \"warning-50\": \"oklch(0.975 0.045 85)\",\n \"warning-500\": \"oklch(0.770 0.170 85)\",\n \"warning-700\": \"oklch(0.560 0.145 65)\",\n \"danger-50\": \"oklch(0.965 0.035 25)\",\n \"danger-500\": \"oklch(0.640 0.205 25)\",\n \"danger-700\": \"oklch(0.460 0.180 25)\",\n \"info-50\": \"oklch(0.970 0.035 250)\",\n \"info-500\": \"oklch(0.650 0.170 250)\",\n \"info-700\": \"oklch(0.460 0.150 250)\",\n \"neutral-50\": \"oklch(0.980 0.005 250)\",\n \"neutral-500\": \"oklch(0.580 0.012 250)\",\n \"neutral-700\": \"oklch(0.380 0.010 250)\",\n});\n\n// Spacing — 4 → 64 px scale.\nexport const spacing: MosaicTokens[\"spacing\"] = Object.freeze({\n \"1\": \"4px\",\n \"2\": \"8px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n});\n\n// Typography — 1.25x font-size scale + line-height + weight.\nexport const typography: MosaicTokens[\"typography\"] = Object.freeze({\n \"size-xs\": \"12px\",\n \"size-sm\": \"14px\",\n \"size-base\": \"16px\",\n \"size-lg\": \"20px\",\n \"size-xl\": \"24px\",\n \"size-2xl\": \"30px\",\n \"size-3xl\": \"38px\",\n \"lh-tight\": \"1.2\",\n \"lh-normal\": \"1.5\",\n \"lh-relaxed\": \"1.6\",\n \"weight-regular\": \"400\",\n \"weight-medium\": \"500\",\n \"weight-semibold\": \"600\",\n \"weight-bold\": \"700\",\n});\n\n// Shadows — 6 elevation steps, OKLCH neutral tint.\nexport const shadows: MosaicTokens[\"shadows\"] = Object.freeze({\n \"0\": \"none\",\n \"1\": \"0 1px 2px 0 oklch(0.200 0.010 250 / 0.05)\",\n \"2\": \"0 2px 4px -1px oklch(0.200 0.010 250 / 0.08), 0 1px 2px -1px oklch(0.200 0.010 250 / 0.06)\",\n \"3\": \"0 4px 8px -2px oklch(0.200 0.010 250 / 0.10), 0 2px 4px -2px oklch(0.200 0.010 250 / 0.06)\",\n \"4\": \"0 8px 16px -4px oklch(0.200 0.010 250 / 0.12), 0 4px 8px -4px oklch(0.200 0.010 250 / 0.08)\",\n \"5\": \"0 16px 32px -8px oklch(0.200 0.010 250 / 0.16), 0 8px 16px -8px oklch(0.200 0.010 250 / 0.10)\",\n});\n\n// Radii — strictly ascending (none → full).\nexport const radii: MosaicTokens[\"radii\"] = Object.freeze({\n none: \"0px\",\n xs: \"2px\",\n sm: \"4px\",\n md: \"6px\",\n lg: \"8px\",\n xl: \"12px\",\n full: \"9999px\",\n});\n\n// Motion — durations + easing curves.\nexport const motion: MosaicTokens[\"motion\"] = Object.freeze({\n \"duration-fast\": \"75ms\",\n \"duration-base\": \"150ms\",\n \"duration-slow\": \"300ms\",\n \"easing-linear\": \"linear\",\n \"easing-ease\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"easing-in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n \"easing-out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n \"easing-in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n});\n\nexport const tokens: MosaicTokens = Object.freeze({\n colors,\n spacing,\n typography,\n shadows,\n radii,\n motion,\n});\n\nexport default tokens;\n"]}
1
+ {"version":3,"sources":["../../mosaic-tokens/src/tokens.ts"],"names":[],"mappings":"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","file":"tokens.js","sourcesContent":["/**\n * @vantageos/mosaic-tokens — design tokens (neutral generic semantic defaults).\n *\n * Default semantic palette: neutral shadcn-grayscale (light values below;\n * dark values live in tokens.css [data-theme=\"dark\"]), sourced from\n * @vantageos/mosaic-blocks src/styles.css (canonical). The any-debate-ai\n * design language (bright/clean light + sophisticated dark, blue accent\n * oklch(0.7 0.15 240)) is NOT the canonical default — it is an opt-in\n * consumer override, see examples/anydebate-override.css.\n *\n * The status triads below (success/warning/danger/info/neutral) still carry\n * their original any-debate-ai-derived values — unchanged by this realign.\n *\n * Framework-free, OKLCH-based, mirror of the CSS custom properties in\n * tokens.css. Consumers can opt for either the CSS surface (Tailwind v4\n * + @theme inline) or the JS surface (typed runtime access in JSX styles,\n * Storybook stories, Playwright assertions, snapshot tests).\n *\n * Size targets (.size-limit.json): JS bundle ≤5 KB gz, CSS ≤3 KB gz.\n *\n * Schema invariants (enforced by mosaic-tokens-coherence-test):\n * - Every CSS var has a JS counterpart (and vice versa).\n * - Color shades 50 < 500 < 700 monotonic luminance (light mode).\n * - Spacing scale ascending, ratio 1.5x average (4 → 64 px).\n * - Typography scale uses 1.25x ratio (12 → 38 px).\n * - Shadow elevation 0 < 1 < 2 < 3 < 4 < 5 monotonic blur radius.\n * - Radii strictly ascending (none → full).\n *\n * KEY COMPATIBILITY: all keys present in 0.2.1 are preserved unchanged.\n * New additive keys in 0.3.0:\n * colors: background, foreground, card, card-foreground, popover,\n * popover-foreground, primary, primary-foreground, secondary,\n * secondary-foreground, muted, muted-foreground, accent,\n * accent-foreground, destructive, destructive-foreground,\n * border, input, ring (semantic UI slots from anydebate)\n * typography: font-sans, font-mono (font-family tokens)\n * motion: duration-slower (500ms entrance animation)\n */\n\nexport interface MosaicTokens {\n readonly colors: Readonly<Record<string, string>>;\n readonly spacing: Readonly<Record<string, string>>;\n readonly typography: Readonly<Record<string, string>>;\n readonly shadows: Readonly<Record<string, string>>;\n readonly radii: Readonly<Record<string, string>>;\n readonly motion: Readonly<Record<string, string>>;\n}\n\n// ---------------------------------------------------------------------------\n// Colors — semantic statuses × 3 shades (50/500/700) OKLCH + semantic UI slots.\n// 50 = surface tint, 500 = brand body, 700 = accessible contrast on light bg.\n//\n// Status triads (danger/info/neutral) and semantic UI slots (destructive/\n// primary/etc.) are SEPARATE token families that happen to share an OKLCH\n// design system — they are not aliases of each other:\n// danger-500 (status, unchanged) = oklch(0.577 0.245 27) — close to, but\n// NOT identical to, destructive (semantic slot, now neutral-sourced) =\n// oklch(0.577 0.245 27.325). Coincidence of the neutral default, not a\n// mapping.\n// info-500 (status, unchanged, any-debate-ai blue) = oklch(0.7 0.15 240) —\n// primary (semantic slot) is now neutral oklch(0.205 0 0), NOT the blue\n// accent. An earlier version of this file conflated the two; they are\n// different tokens.\n// neutral-50/700 (status triad, unchanged) = oklch(0.98 0 0) / oklch(0.15 0 0).\n//\n// Additive semantic UI keys mirror shadcn's CSS custom property names\n// (background, foreground, card, etc.) for drop-in compatibility with\n// shadcn-based consumers (including any-debate-ai, via the opt-in override\n// in examples/anydebate-override.css).\n// ---------------------------------------------------------------------------\nexport const colors: MosaicTokens[\"colors\"] = Object.freeze({\n // Status palette (preserved keys, anydebate-updated values)\n \"success-50\": \"oklch(0.965 0.040 145)\",\n \"success-500\": \"oklch(0.660 0.180 145)\",\n \"success-700\": \"oklch(0.470 0.140 145)\",\n \"warning-50\": \"oklch(0.975 0.045 85)\",\n \"warning-500\": \"oklch(0.770 0.170 85)\",\n \"warning-700\": \"oklch(0.560 0.145 65)\",\n // anydebate destructive: oklch(0.577 0.245 27.325)\n \"danger-50\": \"oklch(0.965 0.035 27)\",\n \"danger-500\": \"oklch(0.577 0.245 27)\",\n \"danger-700\": \"oklch(0.400 0.180 27)\",\n // anydebate info/primary accent (dark mode blue): oklch(0.7 0.15 240)\n \"info-50\": \"oklch(0.970 0.030 240)\",\n \"info-500\": \"oklch(0.700 0.150 240)\",\n \"info-700\": \"oklch(0.500 0.130 240)\",\n // anydebate neutral axis — light: bg oklch(0.98 0 0), fg oklch(0.15 0 0)\n \"neutral-50\": \"oklch(0.980 0 0)\",\n \"neutral-500\": \"oklch(0.450 0 0)\",\n \"neutral-700\": \"oklch(0.150 0 0)\",\n\n // Additive semantic UI slots — neutral generic defaults (light mode),\n // sourced from @vantageos/mosaic-blocks src/styles.css :root. Any-debate-ai's\n // brand values now live only in examples/anydebate-override.css.\n background: \"oklch(1 0 0)\",\n foreground: \"oklch(0.145 0 0)\",\n card: \"oklch(1 0 0)\",\n \"card-foreground\": \"oklch(0.145 0 0)\",\n popover: \"oklch(1 0 0)\",\n \"popover-foreground\": \"oklch(0.145 0 0)\",\n primary: \"oklch(0.205 0 0)\",\n \"primary-foreground\": \"oklch(0.985 0 0)\",\n secondary: \"oklch(0.97 0 0)\",\n \"secondary-foreground\": \"oklch(0.205 0 0)\",\n muted: \"oklch(0.97 0 0)\",\n \"muted-foreground\": \"oklch(0.556 0 0)\",\n accent: \"oklch(0.97 0 0)\",\n \"accent-foreground\": \"oklch(0.205 0 0)\",\n destructive: \"oklch(0.577 0.245 27.325)\",\n \"destructive-foreground\": \"oklch(0.985 0 0)\",\n border: \"oklch(0.922 0 0)\",\n input: \"oklch(0.922 0 0)\",\n ring: \"oklch(0.708 0 0)\",\n\n // Sidebar (v0.3.1) — EXACTLY 4 keys, derived from real consumption on the\n // one real consumer (mosaic-blocks). See tokens.css for the derivation\n // command and the declared-divergence rationale for NOT shipping the\n // other 4 of the shadcn 8-var convention.\n sidebar: \"oklch(1 0 0)\",\n \"sidebar-foreground\": \"oklch(0.145 0 0)\",\n \"sidebar-accent\": \"oklch(0.97 0 0)\",\n \"sidebar-border\": \"oklch(0.922 0 0)\",\n\n // Chart series (v0.3.1) — declared divergence: added on request, not on\n // measured consumer demand. See tokens.css for rationale. NO alias.\n \"chart-1\": \"oklch(0.650 0.200 240)\",\n \"chart-2\": \"oklch(0.650 0.180 145)\",\n \"chart-3\": \"oklch(0.700 0.170 85)\",\n \"chart-4\": \"oklch(0.600 0.220 27)\",\n \"chart-5\": \"oklch(0.550 0.180 300)\",\n});\n\n// ---------------------------------------------------------------------------\n// Spacing — 4 → 64 px scale (unchanged from 0.2.1).\n// ---------------------------------------------------------------------------\nexport const spacing: MosaicTokens[\"spacing\"] = Object.freeze({\n \"1\": \"4px\",\n \"2\": \"8px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n});\n\n// ---------------------------------------------------------------------------\n// Typography — 1.25x font-size scale + line-height + weight + font families.\n// anydebate uses Inter (primary) and Geist Mono for code.\n// New additive keys: font-sans, font-mono.\n// ---------------------------------------------------------------------------\nexport const typography: MosaicTokens[\"typography\"] = Object.freeze({\n // Font families (additive)\n \"font-sans\": \"Inter, ui-sans-serif, system-ui, sans-serif\",\n \"font-mono\": 'ui-monospace, \"Geist Mono\", \"Cascadia Code\", monospace',\n // Size scale (preserved keys, values unchanged — scale invariant maintained)\n \"size-xs\": \"12px\",\n \"size-sm\": \"14px\",\n \"size-base\": \"16px\",\n \"size-lg\": \"20px\",\n \"size-xl\": \"24px\",\n \"size-2xl\": \"30px\",\n \"size-3xl\": \"38px\",\n // Line heights (preserved)\n \"lh-tight\": \"1.2\",\n \"lh-normal\": \"1.5\",\n \"lh-relaxed\": \"1.6\",\n // Weights (preserved)\n \"weight-regular\": \"400\",\n \"weight-medium\": \"500\",\n \"weight-semibold\": \"600\",\n \"weight-bold\": \"700\",\n});\n\n// ---------------------------------------------------------------------------\n// Shadows — 6 elevation steps, anydebate near-black tint (oklch(0.04 0 0)).\n// ---------------------------------------------------------------------------\nexport const shadows: MosaicTokens[\"shadows\"] = Object.freeze({\n \"0\": \"none\",\n \"1\": \"0 1px 2px 0 oklch(0.040 0 0 / 0.05)\",\n \"2\": \"0 2px 4px -1px oklch(0.040 0 0 / 0.08), 0 1px 2px -1px oklch(0.040 0 0 / 0.06)\",\n \"3\": \"0 4px 8px -2px oklch(0.040 0 0 / 0.10), 0 2px 4px -2px oklch(0.040 0 0 / 0.06)\",\n \"4\": \"0 8px 16px -4px oklch(0.040 0 0 / 0.12), 0 4px 8px -4px oklch(0.040 0 0 / 0.08)\",\n \"5\": \"0 16px 32px -8px oklch(0.040 0 0 / 0.16), 0 8px 16px -8px oklch(0.040 0 0 / 0.10)\",\n});\n\n// ---------------------------------------------------------------------------\n// Radii — anydebate base 0.75rem (12px), strictly ascending.\n// Source: --radius: 0.75rem + calc-derived scale in app/globals.css.\n// sm = 12px - 4px = 8px, md = 12px - 2px = 10px, lg = 12px, xl = 12px + 4px = 16px.\n// ---------------------------------------------------------------------------\nexport const radii: MosaicTokens[\"radii\"] = Object.freeze({\n none: \"0px\",\n xs: \"4px\",\n sm: \"8px\",\n md: \"10px\",\n lg: \"12px\",\n xl: \"16px\",\n full: \"9999px\",\n});\n\n// ---------------------------------------------------------------------------\n// Motion — durations + easing curves.\n// anydebate uses tw-animate-css; durations tuned to Tailwind defaults.\n// New additive key: duration-slower (500ms) for entrance animations.\n// ---------------------------------------------------------------------------\nexport const motion: MosaicTokens[\"motion\"] = Object.freeze({\n \"duration-fast\": \"100ms\",\n \"duration-base\": \"200ms\",\n \"duration-slow\": \"300ms\",\n \"duration-slower\": \"500ms\",\n \"easing-linear\": \"linear\",\n \"easing-ease\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"easing-in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n \"easing-out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n \"easing-in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n // Declared divergence (v0.3.1): no proven consumer, added per Pi\n // arbitration. NO alias — see tokens.css for rationale.\n \"easing-out-expo\": \"cubic-bezier(0.16, 1, 0.3, 1)\",\n});\n\nexport const tokens: MosaicTokens = Object.freeze({\n colors,\n spacing,\n typography,\n shadows,\n radii,\n motion,\n});\n\nexport default tokens;\n"]}
package/package.json CHANGED
@@ -1,231 +1,234 @@
1
1
  {
2
- "name": "@vantageos/mosaic",
3
- "version": "0.3.0",
4
- "description": "Fleet-wide MCP UI design system — 6-category taxonomy, Zod-validated, registry-gated, streaming-ready, cross-runtime (React 19 + Preact 10).",
5
- "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
14
- },
15
- "./progress": {
16
- "types": "./dist/progress.d.ts",
17
- "import": "./dist/progress.js",
18
- "require": "./dist/progress.cjs"
19
- },
20
- "./input": {
21
- "types": "./dist/input.d.ts",
22
- "import": "./dist/input.js",
23
- "require": "./dist/input.cjs"
24
- },
25
- "./display": {
26
- "types": "./dist/display.d.ts",
27
- "import": "./dist/display.js",
28
- "require": "./dist/display.cjs"
29
- },
30
- "./artifacts": {
31
- "types": "./dist/artifacts.d.ts",
32
- "import": "./dist/artifacts.js",
33
- "require": "./dist/artifacts.cjs"
34
- },
35
- "./confirmation": {
36
- "types": "./dist/confirmation.d.ts",
37
- "import": "./dist/confirmation.js",
38
- "require": "./dist/confirmation.cjs"
39
- },
40
- "./media": {
41
- "types": "./dist/media.d.ts",
42
- "import": "./dist/media.js",
43
- "require": "./dist/media.cjs"
44
- },
45
- "./forms": {
46
- "types": "./dist/forms.d.ts",
47
- "import": "./dist/forms.js",
48
- "require": "./dist/forms.cjs"
49
- },
50
- "./react": {
51
- "types": "./dist/react/index.d.ts",
52
- "import": "./dist/react/index.js",
53
- "require": "./dist/react/index.cjs"
54
- },
55
- "./react/progress": {
56
- "types": "./dist/react/progress.d.ts",
57
- "import": "./dist/react/progress.js",
58
- "require": "./dist/react/progress.cjs"
59
- },
60
- "./react/input": {
61
- "types": "./dist/react/input.d.ts",
62
- "import": "./dist/react/input.js",
63
- "require": "./dist/react/input.cjs"
64
- },
65
- "./react/display": {
66
- "types": "./dist/react/display.d.ts",
67
- "import": "./dist/react/display.js",
68
- "require": "./dist/react/display.cjs"
69
- },
70
- "./react/artifacts": {
71
- "types": "./dist/react/artifacts.d.ts",
72
- "import": "./dist/react/artifacts.js",
73
- "require": "./dist/react/artifacts.cjs"
74
- },
75
- "./react/confirmation": {
76
- "types": "./dist/react/confirmation.d.ts",
77
- "import": "./dist/react/confirmation.js",
78
- "require": "./dist/react/confirmation.cjs"
79
- },
80
- "./react/media": {
81
- "types": "./dist/react/media.d.ts",
82
- "import": "./dist/react/media.js",
83
- "require": "./dist/react/media.cjs"
84
- },
85
- "./react/forms": {
86
- "types": "./dist/react/forms.d.ts",
87
- "import": "./dist/react/forms.js",
88
- "require": "./dist/react/forms.cjs"
89
- },
90
- "./preact": {
91
- "types": "./dist/preact/index.d.ts",
92
- "import": "./dist/preact/index.js"
93
- },
94
- "./preact/progress": {
95
- "types": "./dist/preact/progress.d.ts",
96
- "import": "./dist/preact/progress.js"
97
- },
98
- "./preact/input": {
99
- "types": "./dist/preact/input.d.ts",
100
- "import": "./dist/preact/input.js"
101
- },
102
- "./preact/display": {
103
- "types": "./dist/preact/display.d.ts",
104
- "import": "./dist/preact/display.js"
105
- },
106
- "./preact/artifacts": {
107
- "types": "./dist/preact/artifacts.d.ts",
108
- "import": "./dist/preact/artifacts.js"
109
- },
110
- "./preact/confirmation": {
111
- "types": "./dist/preact/confirmation.d.ts",
112
- "import": "./dist/preact/confirmation.js"
113
- },
114
- "./preact/media": {
115
- "types": "./dist/preact/media.d.ts",
116
- "import": "./dist/preact/media.js"
117
- },
118
- "./preact/forms": {
119
- "types": "./dist/preact/forms.d.ts",
120
- "import": "./dist/preact/forms.js"
121
- },
122
- "./tokens": {
123
- "types": "./dist/tokens.d.ts",
124
- "import": "./dist/tokens.js",
125
- "require": "./dist/tokens.cjs"
126
- },
127
- "./server": {
128
- "types": "./dist/server.d.ts",
129
- "import": "./dist/server.js",
130
- "require": "./dist/server.cjs"
131
- },
132
- "./registry.yaml": "./registry.yaml"
133
- },
134
- "files": [
135
- "dist",
136
- "registry.yaml",
137
- "README.md",
138
- "CHANGELOG.md"
139
- ],
140
- "sideEffects": false,
141
- "scripts": {
142
- "prebuild": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
143
- "build": "NODE_OPTIONS=--max-old-space-size=8192 tsup",
144
- "dev": "tsup --watch",
145
- "test": "vitest run",
146
- "lint": "biome check --error-on-warnings src",
147
- "size-limit": "size-limit",
148
- "build-storybook": "storybook build -o storybook-static",
149
- "prepublishOnly": "pnpm run build && pnpm run test && pnpm run size-limit && node scripts/check-eta-gate.js"
150
- },
151
- "peerDependencies": {
152
- "@hookform/resolvers": "^3.10.0",
153
- "@mcp-ui/client": "7.1.1",
154
- "preact": "^10.25.0",
155
- "react": "^19.1.0",
156
- "react-dom": "^19.1.0",
157
- "react-hook-form": "^7.54.0",
158
- "react-i18next": "15.5.2",
159
- "rxjs": "^7.8.0"
160
- },
161
- "peerDependenciesMeta": {
162
- "@hookform/resolvers": {
163
- "optional": true
164
- },
165
- "@mcp-ui/client": {
166
- "optional": true
167
- },
168
- "preact": {
169
- "optional": true
170
- },
171
- "react": {
172
- "optional": true
173
- },
174
- "react-dom": {
175
- "optional": true
176
- },
177
- "react-hook-form": {
178
- "optional": true
179
- },
180
- "react-i18next": {
181
- "optional": true
182
- },
183
- "rxjs": {
184
- "optional": true
185
- }
186
- },
187
- "dependencies": {
188
- "@lit-labs/react": "1.0.6",
189
- "@mcp-ui/server": "6.1.0",
190
- "@tanstack/react-virtual": "3.13.6",
191
- "@vantageos/mosaic-tokens": "workspace:*",
192
- "dompurify": "3.2.4",
193
- "marked": "15.0.7",
194
- "zod": "3.25.28"
195
- },
196
- "devDependencies": {
197
- "@axe-core/playwright": "4.10.1",
198
- "@babel/parser": "7.29.7",
199
- "@babel/traverse": "7.29.7",
200
- "@biomejs/biome": "1.9.4",
201
- "@hookform/resolvers": "^3.10.0",
202
- "@playwright/test": "1.50.1",
203
- "@size-limit/preset-small-lib": "11.2.0",
204
- "@storybook/builder-vite": "8.6.18",
205
- "@storybook/react": "8.6.18",
206
- "@storybook/react-vite": "8.6.18",
207
- "@storybook/test-runner": "0.21.0",
208
- "@tailwindcss/vite": "4.1.8",
209
- "@testing-library/react": "16.3.0",
210
- "@testing-library/user-event": "14.6.1",
211
- "@types/babel__traverse": "7.28.0",
212
- "@types/dompurify": "3.0.5",
213
- "@types/react": "19.1.0",
214
- "@types/react-dom": "19.1.0",
215
- "@vitejs/plugin-react": "4.3.4",
216
- "@vitest/coverage-v8": "3.2.2",
217
- "jsdom": "26.0.0",
218
- "preact": "10.27.1",
219
- "react": "19.1.0",
220
- "react-dom": "19.1.0",
221
- "react-hook-form": "^7.54.0",
222
- "size-limit": "11.2.0",
223
- "storybook": "8.6.18",
224
- "tailwindcss": "4.1.8",
225
- "tsup": "8.4.0",
226
- "typescript": "5.8.3",
227
- "vite": "6.3.5",
228
- "vite-plugin-singlefile": "2.1.0",
229
- "vitest": "3.2.2"
230
- }
231
- }
2
+ "name": "@vantageos/mosaic",
3
+ "version": "0.4.0",
4
+ "license": "FSL-1.1-Apache-2.0",
5
+ "description": "Fleet-wide MCP UI design system — 7-category taxonomy, Zod-validated, registry-gated, streaming-ready, cross-runtime (React 19 + Preact 10).",
6
+ "type": "module",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.cjs"
15
+ },
16
+ "./progress": {
17
+ "types": "./dist/progress.d.ts",
18
+ "import": "./dist/progress.js",
19
+ "require": "./dist/progress.cjs"
20
+ },
21
+ "./input": {
22
+ "types": "./dist/input.d.ts",
23
+ "import": "./dist/input.js",
24
+ "require": "./dist/input.cjs"
25
+ },
26
+ "./display": {
27
+ "types": "./dist/display.d.ts",
28
+ "import": "./dist/display.js",
29
+ "require": "./dist/display.cjs"
30
+ },
31
+ "./artifacts": {
32
+ "types": "./dist/artifacts.d.ts",
33
+ "import": "./dist/artifacts.js",
34
+ "require": "./dist/artifacts.cjs"
35
+ },
36
+ "./confirmation": {
37
+ "types": "./dist/confirmation.d.ts",
38
+ "import": "./dist/confirmation.js",
39
+ "require": "./dist/confirmation.cjs"
40
+ },
41
+ "./media": {
42
+ "types": "./dist/media.d.ts",
43
+ "import": "./dist/media.js",
44
+ "require": "./dist/media.cjs"
45
+ },
46
+ "./forms": {
47
+ "types": "./dist/forms.d.ts",
48
+ "import": "./dist/forms.js",
49
+ "require": "./dist/forms.cjs"
50
+ },
51
+ "./react": {
52
+ "types": "./dist/react/index.d.ts",
53
+ "import": "./dist/react/index.js",
54
+ "require": "./dist/react/index.cjs"
55
+ },
56
+ "./react/progress": {
57
+ "types": "./dist/react/progress.d.ts",
58
+ "import": "./dist/react/progress.js",
59
+ "require": "./dist/react/progress.cjs"
60
+ },
61
+ "./react/input": {
62
+ "types": "./dist/react/input.d.ts",
63
+ "import": "./dist/react/input.js",
64
+ "require": "./dist/react/input.cjs"
65
+ },
66
+ "./react/display": {
67
+ "types": "./dist/react/display.d.ts",
68
+ "import": "./dist/react/display.js",
69
+ "require": "./dist/react/display.cjs"
70
+ },
71
+ "./react/artifacts": {
72
+ "types": "./dist/react/artifacts.d.ts",
73
+ "import": "./dist/react/artifacts.js",
74
+ "require": "./dist/react/artifacts.cjs"
75
+ },
76
+ "./react/confirmation": {
77
+ "types": "./dist/react/confirmation.d.ts",
78
+ "import": "./dist/react/confirmation.js",
79
+ "require": "./dist/react/confirmation.cjs"
80
+ },
81
+ "./react/media": {
82
+ "types": "./dist/react/media.d.ts",
83
+ "import": "./dist/react/media.js",
84
+ "require": "./dist/react/media.cjs"
85
+ },
86
+ "./react/forms": {
87
+ "types": "./dist/react/forms.d.ts",
88
+ "import": "./dist/react/forms.js",
89
+ "require": "./dist/react/forms.cjs"
90
+ },
91
+ "./preact": {
92
+ "types": "./dist/preact/index.d.ts",
93
+ "import": "./dist/preact/index.js"
94
+ },
95
+ "./preact/progress": {
96
+ "types": "./dist/preact/progress.d.ts",
97
+ "import": "./dist/preact/progress.js"
98
+ },
99
+ "./preact/input": {
100
+ "types": "./dist/preact/input.d.ts",
101
+ "import": "./dist/preact/input.js"
102
+ },
103
+ "./preact/display": {
104
+ "types": "./dist/preact/display.d.ts",
105
+ "import": "./dist/preact/display.js"
106
+ },
107
+ "./preact/artifacts": {
108
+ "types": "./dist/preact/artifacts.d.ts",
109
+ "import": "./dist/preact/artifacts.js"
110
+ },
111
+ "./preact/confirmation": {
112
+ "types": "./dist/preact/confirmation.d.ts",
113
+ "import": "./dist/preact/confirmation.js"
114
+ },
115
+ "./preact/media": {
116
+ "types": "./dist/preact/media.d.ts",
117
+ "import": "./dist/preact/media.js"
118
+ },
119
+ "./preact/forms": {
120
+ "types": "./dist/preact/forms.d.ts",
121
+ "import": "./dist/preact/forms.js"
122
+ },
123
+ "./tokens": {
124
+ "types": "./dist/tokens.d.ts",
125
+ "import": "./dist/tokens.js",
126
+ "require": "./dist/tokens.cjs"
127
+ },
128
+ "./server": {
129
+ "types": "./dist/server.d.ts",
130
+ "import": "./dist/server.js",
131
+ "require": "./dist/server.cjs"
132
+ },
133
+ "./registry.yaml": "./registry.yaml"
134
+ },
135
+ "files": [
136
+ "dist",
137
+ "registry.yaml",
138
+ "README.md",
139
+ "LICENSE",
140
+ "CHANGELOG.md"
141
+ ],
142
+ "sideEffects": false,
143
+ "scripts": {
144
+ "prebuild": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
145
+ "build": "NODE_OPTIONS=--max-old-space-size=8192 tsup",
146
+ "dev": "tsup --watch",
147
+ "test": "vitest run",
148
+ "lint": "biome check --error-on-warnings src",
149
+ "size-limit": "size-limit",
150
+ "build-storybook": "storybook build -o storybook-static",
151
+ "prepublishOnly": "node scripts/rewrite-workspace-deps.mjs && pnpm run build && pnpm run test && pnpm run size-limit && node scripts/check-eta-gate.js",
152
+ "postpublish": "git checkout HEAD -- package.json && echo '[postpublish] reverted package.json — workspace:* refs restored for monorepo dev'"
153
+ },
154
+ "peerDependencies": {
155
+ "@hookform/resolvers": "^3.10.0",
156
+ "@mcp-ui/client": "7.1.1",
157
+ "preact": "^10.25.0",
158
+ "react": "^19.1.0",
159
+ "react-dom": "^19.1.0",
160
+ "react-hook-form": "^7.54.0",
161
+ "react-i18next": "15.5.2",
162
+ "rxjs": "^7.8.0"
163
+ },
164
+ "peerDependenciesMeta": {
165
+ "@hookform/resolvers": {
166
+ "optional": true
167
+ },
168
+ "@mcp-ui/client": {
169
+ "optional": true
170
+ },
171
+ "preact": {
172
+ "optional": true
173
+ },
174
+ "react": {
175
+ "optional": true
176
+ },
177
+ "react-dom": {
178
+ "optional": true
179
+ },
180
+ "react-hook-form": {
181
+ "optional": true
182
+ },
183
+ "react-i18next": {
184
+ "optional": true
185
+ },
186
+ "rxjs": {
187
+ "optional": true
188
+ }
189
+ },
190
+ "dependencies": {
191
+ "@lit-labs/react": "1.0.6",
192
+ "@mcp-ui/server": "6.1.0",
193
+ "@tanstack/react-virtual": "3.13.6",
194
+ "@vantageos/mosaic-tokens": "^0.7.0",
195
+ "dompurify": "3.2.4",
196
+ "marked": "15.0.7",
197
+ "zod": "3.25.28"
198
+ },
199
+ "devDependencies": {
200
+ "@axe-core/playwright": "4.10.1",
201
+ "@babel/parser": "7.29.7",
202
+ "@babel/traverse": "7.29.7",
203
+ "@biomejs/biome": "1.9.4",
204
+ "@hookform/resolvers": "^3.10.0",
205
+ "@playwright/test": "1.50.1",
206
+ "@size-limit/preset-small-lib": "11.2.0",
207
+ "@storybook/builder-vite": "8.6.18",
208
+ "@storybook/react": "8.6.18",
209
+ "@storybook/react-vite": "8.6.18",
210
+ "@storybook/test-runner": "0.21.0",
211
+ "@tailwindcss/vite": "4.1.8",
212
+ "@testing-library/react": "16.3.0",
213
+ "@testing-library/user-event": "14.6.1",
214
+ "@types/babel__traverse": "7.28.0",
215
+ "@types/dompurify": "3.0.5",
216
+ "@types/react": "19.1.0",
217
+ "@types/react-dom": "19.1.0",
218
+ "@vitejs/plugin-react": "4.3.4",
219
+ "@vitest/coverage-v8": "3.2.2",
220
+ "jsdom": "26.0.0",
221
+ "preact": "10.27.1",
222
+ "react": "19.1.0",
223
+ "react-dom": "19.1.0",
224
+ "react-hook-form": "^7.54.0",
225
+ "size-limit": "11.2.0",
226
+ "storybook": "8.6.18",
227
+ "tailwindcss": "4.1.8",
228
+ "tsup": "8.4.0",
229
+ "typescript": "5.8.3",
230
+ "vite": "6.3.5",
231
+ "vite-plugin-singlefile": "2.1.0",
232
+ "vitest": "3.2.2"
233
+ }
234
+ }
package/registry.yaml CHANGED
@@ -21,6 +21,13 @@ components:
21
21
  i18nKeys: ["TableView.aria.table", "TableView.pagination.next", "TableView.pagination.prev", "TableView.empty.message", "TableView.error.invalidProps"]
22
22
  sizeLimit: "80KB"
23
23
  a11yLevel: WCAG-AA
24
+ - name: Badge
25
+ category: display
26
+ schema: src/components/display/Badge.schema.ts
27
+ zodExport: BadgePropsSchema
28
+ i18nKeys: ["Badge.aria.label", "Badge.error.invalidProps"]
29
+ sizeLimit: "10KB"
30
+ a11yLevel: WCAG-AA
24
31
  - name: MarkdownRenderer
25
32
  category: artifacts
26
33
  schema: src/components/artifacts/MarkdownRenderer.schema.ts