@vantageos/mosaic 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -0
- package/LICENSE +110 -0
- package/README.md +84 -21
- package/dist/artifacts.cjs +4 -0
- package/dist/artifacts.cjs.map +1 -1
- package/dist/artifacts.js +4 -0
- package/dist/artifacts.js.map +1 -1
- package/dist/confirmation.cjs +4 -0
- package/dist/confirmation.cjs.map +1 -1
- package/dist/confirmation.js +4 -0
- package/dist/confirmation.js.map +1 -1
- package/dist/display.cjs +4 -0
- package/dist/display.cjs.map +1 -1
- package/dist/display.js +4 -0
- package/dist/display.js.map +1 -1
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/media.cjs +4 -0
- package/dist/media.cjs.map +1 -1
- package/dist/media.js +4 -0
- package/dist/media.js.map +1 -1
- package/dist/preact/artifacts.js +4 -0
- package/dist/preact/artifacts.js.map +1 -1
- package/dist/preact/confirmation.js +4 -0
- package/dist/preact/confirmation.js.map +1 -1
- package/dist/preact/display.d.ts +43 -1
- package/dist/preact/display.js +59 -1
- package/dist/preact/display.js.map +1 -1
- package/dist/preact/progress.js +4 -0
- package/dist/preact/progress.js.map +1 -1
- package/dist/progress.cjs +4 -0
- package/dist/progress.cjs.map +1 -1
- package/dist/progress.js +4 -0
- package/dist/progress.js.map +1 -1
- package/dist/react/artifacts.cjs +4 -0
- package/dist/react/artifacts.cjs.map +1 -1
- package/dist/react/artifacts.js +4 -0
- package/dist/react/artifacts.js.map +1 -1
- package/dist/react/confirmation.cjs +4 -0
- package/dist/react/confirmation.cjs.map +1 -1
- package/dist/react/confirmation.js +4 -0
- package/dist/react/confirmation.js.map +1 -1
- package/dist/react/display.cjs +61 -0
- package/dist/react/display.cjs.map +1 -1
- package/dist/react/display.d.cts +43 -1
- package/dist/react/display.d.ts +43 -1
- package/dist/react/display.js +59 -1
- package/dist/react/display.js.map +1 -1
- package/dist/react/progress.cjs +4 -0
- package/dist/react/progress.cjs.map +1 -1
- package/dist/react/progress.js +4 -0
- package/dist/react/progress.js.map +1 -1
- package/dist/tokens.cjs +73 -22
- package/dist/tokens.cjs.map +1 -1
- package/dist/tokens.d.cts +23 -3
- package/dist/tokens.d.ts +23 -3
- package/dist/tokens.js +73 -22
- package/dist/tokens.js.map +1 -1
- package/package.json +5 -3
- package/registry.yaml +7 -0
package/dist/react/progress.js
CHANGED
|
@@ -23,6 +23,8 @@ var EN = {
|
|
|
23
23
|
"TokenDisplayOnceModal.copied": "Copied",
|
|
24
24
|
"StatusBadge.aria.status": "Status",
|
|
25
25
|
"StatusBadge.error.invalidProps": "StatusBadge: invalid props",
|
|
26
|
+
"Badge.aria.label": "Badge",
|
|
27
|
+
"Badge.error.invalidProps": "Badge: invalid props",
|
|
26
28
|
"EmptyState.error.invalidProps": "EmptyState: invalid props",
|
|
27
29
|
"Toast.aria.close": "Close notification",
|
|
28
30
|
"Toast.error.invalidProps": "Toast: invalid props",
|
|
@@ -115,6 +117,8 @@ var FR = {
|
|
|
115
117
|
"TokenDisplayOnceModal.copied": "Copi\xE9",
|
|
116
118
|
"StatusBadge.aria.status": "Statut",
|
|
117
119
|
"StatusBadge.error.invalidProps": "StatusBadge : propri\xE9t\xE9s invalides",
|
|
120
|
+
"Badge.aria.label": "Badge",
|
|
121
|
+
"Badge.error.invalidProps": "Badge : propri\xE9t\xE9s invalides",
|
|
118
122
|
"EmptyState.error.invalidProps": "EmptyState : propri\xE9t\xE9s invalides",
|
|
119
123
|
"Toast.aria.close": "Fermer la notification",
|
|
120
124
|
"Toast.error.invalidProps": "Toast : propri\xE9t\xE9s invalides",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/i18n/strings.ts","../../src/components/progress/ProgressBar.schema.ts","../../src/components/progress/ProgressBar.tsx","../../src/runtimes/react/components/progress/ProgressBar.tsx"],"names":["ProgressBar","jsx"],"mappings":"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","file":"progress.js","sourcesContent":["/**\n * Compile-time mirror of `@vantageos/mosaic-i18n` EN/FR locales for all\n * Mosaic components (v0.3.0). Inlined here so that `<Comp>` renderers can\n * resolve `t(key, locale)` without dragging react-i18next into the component\n * runtime (keeps bundle small and tests provider-free). Drift is gated by\n * `mosaic-registry-drift-check.mjs` which validates the canonical\n * `packages/mosaic-i18n/src/locales/{en,fr}.json` against `registry.yaml`.\n *\n * Mosaic standard §8: production JSX MUST resolve user-facing strings via\n * `t()` — no hardcoded English literals.\n *\n * Forms keys added — v0.3.0-C-PR1 (Axis 5/6 i18n pass).\n * Convention: Forms.<Component>.<context>.<id>\n */\nexport type MosaicLocale = \"en\" | \"fr\";\n\nconst EN = {\n // ─── Non-forms components ──────────────────────────────────────────────────\n \"ProgressBar.aria.label\": \"Progress\",\n \"ProgressBar.error.invalidProps\": \"ProgressBar: invalid props\",\n \"ConfirmDialog.button.confirm\": \"Confirm\",\n \"ConfirmDialog.button.cancel\": \"Cancel\",\n \"ConfirmDialog.aria.dialog\": \"Confirmation dialog\",\n \"TableView.aria.table\": \"Data table\",\n \"TableView.pagination.next\": \"Next page\",\n \"TableView.pagination.prev\": \"Previous page\",\n \"TableView.empty.message\": \"No data to display\",\n \"TableView.error.invalidProps\": \"TableView: invalid props\",\n \"MarkdownRenderer.aria.content\": \"Rendered Markdown content\",\n \"MarkdownRenderer.error.invalidProps\": \"MarkdownRenderer: invalid props\",\n \"MarkdownRenderer.error.tooLong\": \"Content exceeds maximum length\",\n \"TokenDisplayOnceModal.button.copy\": \"Copy token\",\n \"TokenDisplayOnceModal.button.close\": \"Close\",\n \"TokenDisplayOnceModal.warning.once\": \"This token will only be shown once. Copy it now.\",\n \"TokenDisplayOnceModal.copied\": \"Copied\",\n \"StatusBadge.aria.status\": \"Status\",\n \"StatusBadge.error.invalidProps\": \"StatusBadge: invalid props\",\n \"EmptyState.error.invalidProps\": \"EmptyState: invalid props\",\n \"Toast.aria.close\": \"Close notification\",\n \"Toast.error.invalidProps\": \"Toast: invalid props\",\n \"Alert.aria.dismiss\": \"Dismiss alert\",\n \"Alert.error.invalidProps\": \"Alert: invalid props\",\n \"VirtualList.empty.message\": \"No items to display\",\n \"VirtualList.error.invalidProps\": \"VirtualList: invalid props\",\n \"Skeleton.aria.label\": \"Loading\",\n \"Skeleton.error.invalidProps\": \"Skeleton: invalid props\",\n // ─── Forms — useMosaicForm ─────────────────────────────────────────────────\n \"useMosaicForm.error.invalidProps\": \"useMosaicForm: invalid options\",\n // ─── Forms — FormProvider ──────────────────────────────────────────────────\n \"FormProvider.error.invalidProps\": \"FormProvider: invalid props\",\n // ─── Forms — FormField ────────────────────────────────────────────────────\n \"FormField.error.invalidProps\": \"FormField: invalid props\",\n // ─── Forms — ErrorDisplay ─────────────────────────────────────────────────\n \"ErrorDisplay.error.required\": \"This field is required\",\n \"ErrorDisplay.error.min\": \"Value is below the minimum\",\n \"ErrorDisplay.error.max\": \"Value exceeds the maximum\",\n \"ErrorDisplay.error.minLength\": \"Input is too short\",\n \"ErrorDisplay.error.maxLength\": \"Input is too long\",\n \"ErrorDisplay.error.pattern\": \"Invalid format\",\n \"ErrorDisplay.error.email\": \"Enter a valid email address\",\n \"ErrorDisplay.error.url\": \"Enter a valid URL\",\n \"ErrorDisplay.error.generic\": \"Invalid value\",\n // ─── Forms — SubmitButton ─────────────────────────────────────────────────\n \"SubmitButton.aria.submit\": \"Submit form\",\n \"SubmitButton.state.loading\": \"Submitting…\",\n \"SubmitButton.error.invalidProps\": \"SubmitButton: invalid props\",\n // ─── Forms — Input ────────────────────────────────────────────────────────\n \"Input.aria.label\": \"Input field\",\n \"Input.error.required\": \"This field is required\",\n \"Input.error.invalid\": \"Invalid value\",\n \"Input.error.tooLong\": \"Input is too long\",\n \"Input.error.tooShort\": \"Input is too short\",\n \"Input.error.invalidProps\": \"Input: invalid props\",\n // ─── Forms — Textarea ─────────────────────────────────────────────────────\n \"Textarea.aria.label\": \"Text area\",\n \"Textarea.error.required\": \"This field is required\",\n \"Textarea.error.tooLong\": \"Text is too long\",\n \"Textarea.counter.remaining\": \"characters remaining\",\n \"Textarea.error.invalidProps\": \"Textarea: invalid props\",\n // ─── Forms — FieldArray ───────────────────────────────────────────────────\n \"FieldArray.aria.list\": \"List of items\",\n \"FieldArray.aria.addItem\": \"Add item\",\n \"FieldArray.aria.removeItem\": \"Remove item\",\n \"FieldArray.error.invalidProps\": \"FieldArray: invalid props\",\n // ─── Forms — Checkbox ─────────────────────────────────────────────────────\n \"Checkbox.aria.label\": \"Checkbox\",\n \"Checkbox.error.required\": \"This field must be checked\",\n \"Checkbox.error.invalidProps\": \"Checkbox: invalid props\",\n // ─── Forms — MultiSelect ──────────────────────────────────────────────────\n \"MultiSelect.aria.label\": \"Multi-select field\",\n \"MultiSelect.aria.removeChip\": \"Remove\",\n \"MultiSelect.error.required\": \"Select at least one option\",\n \"MultiSelect.error.maxItems\": \"Maximum number of selections reached\",\n \"MultiSelect.placeholder\": \"Select options…\",\n \"MultiSelect.search.placeholder\": \"Search…\",\n \"MultiSelect.empty\": \"No options available\",\n \"MultiSelect.error.invalidProps\": \"MultiSelect: invalid props\",\n // ─── Forms — RadioGroup ───────────────────────────────────────────────────\n \"RadioGroup.aria.label\": \"Radio group\",\n \"RadioGroup.error.required\": \"Select one option\",\n \"RadioGroup.error.invalidProps\": \"RadioGroup: invalid props\",\n // ─── Forms — Select ───────────────────────────────────────────────────────\n \"Select.placeholder\": \"Select an option…\",\n \"Select.search.placeholder\": \"Search…\",\n \"Select.empty\": \"No options available\",\n \"Select.error.required\": \"Select an option\",\n \"Select.error.invalidProps\": \"Select: invalid props\",\n} as const;\n\nconst FR: Record<keyof typeof EN, string> = {\n // ─── Non-forms components ──────────────────────────────────────────────────\n \"ProgressBar.aria.label\": \"Progression\",\n \"ProgressBar.error.invalidProps\": \"ProgressBar : propriétés invalides\",\n \"ConfirmDialog.button.confirm\": \"Confirmer\",\n \"ConfirmDialog.button.cancel\": \"Annuler\",\n \"ConfirmDialog.aria.dialog\": \"Boîte de dialogue de confirmation\",\n \"TableView.aria.table\": \"Tableau de données\",\n \"TableView.pagination.next\": \"Page suivante\",\n \"TableView.pagination.prev\": \"Page précédente\",\n \"TableView.empty.message\": \"Aucune donnée à afficher\",\n \"TableView.error.invalidProps\": \"TableView : propriétés invalides\",\n \"MarkdownRenderer.aria.content\": \"Contenu Markdown rendu\",\n \"MarkdownRenderer.error.invalidProps\": \"MarkdownRenderer : propriétés invalides\",\n \"MarkdownRenderer.error.tooLong\": \"Le contenu dépasse la longueur maximale\",\n \"TokenDisplayOnceModal.button.copy\": \"Copier le jeton\",\n \"TokenDisplayOnceModal.button.close\": \"Fermer\",\n \"TokenDisplayOnceModal.warning.once\":\n \"Ce jeton ne sera affiché qu'une seule fois. Copiez-le maintenant.\",\n \"TokenDisplayOnceModal.copied\": \"Copié\",\n \"StatusBadge.aria.status\": \"Statut\",\n \"StatusBadge.error.invalidProps\": \"StatusBadge : propriétés invalides\",\n \"EmptyState.error.invalidProps\": \"EmptyState : propriétés invalides\",\n \"Toast.aria.close\": \"Fermer la notification\",\n \"Toast.error.invalidProps\": \"Toast : propriétés invalides\",\n \"Alert.aria.dismiss\": \"Fermer l'alerte\",\n \"Alert.error.invalidProps\": \"Alert : propriétés invalides\",\n \"VirtualList.empty.message\": \"Aucun élément à afficher\",\n \"VirtualList.error.invalidProps\": \"VirtualList : propriétés invalides\",\n \"Skeleton.aria.label\": \"Chargement\",\n \"Skeleton.error.invalidProps\": \"Skeleton : propriétés invalides\",\n // ─── Forms — useMosaicForm ─────────────────────────────────────────────────\n \"useMosaicForm.error.invalidProps\": \"useMosaicForm : options invalides\",\n // ─── Forms — FormProvider ──────────────────────────────────────────────────\n \"FormProvider.error.invalidProps\": \"FormProvider : propriétés invalides\",\n // ─── Forms — FormField ────────────────────────────────────────────────────\n \"FormField.error.invalidProps\": \"FormField : propriétés invalides\",\n // ─── Forms — ErrorDisplay ─────────────────────────────────────────────────\n \"ErrorDisplay.error.required\": \"Ce champ est obligatoire\",\n \"ErrorDisplay.error.min\": \"La valeur est inférieure au minimum\",\n \"ErrorDisplay.error.max\": \"La valeur dépasse le maximum\",\n \"ErrorDisplay.error.minLength\": \"La saisie est trop courte\",\n \"ErrorDisplay.error.maxLength\": \"La saisie est trop longue\",\n \"ErrorDisplay.error.pattern\": \"Format invalide\",\n \"ErrorDisplay.error.email\": \"Saisissez une adresse e-mail valide\",\n \"ErrorDisplay.error.url\": \"Saisissez une URL valide\",\n \"ErrorDisplay.error.generic\": \"Valeur invalide\",\n // ─── Forms — SubmitButton ─────────────────────────────────────────────────\n \"SubmitButton.aria.submit\": \"Soumettre le formulaire\",\n \"SubmitButton.state.loading\": \"Envoi en cours…\",\n \"SubmitButton.error.invalidProps\": \"SubmitButton : propriétés invalides\",\n // ─── Forms — Input ────────────────────────────────────────────────────────\n \"Input.aria.label\": \"Champ de saisie\",\n \"Input.error.required\": \"Ce champ est obligatoire\",\n \"Input.error.invalid\": \"Valeur invalide\",\n \"Input.error.tooLong\": \"La saisie est trop longue\",\n \"Input.error.tooShort\": \"La saisie est trop courte\",\n \"Input.error.invalidProps\": \"Input : propriétés invalides\",\n // ─── Forms — Textarea ─────────────────────────────────────────────────────\n \"Textarea.aria.label\": \"Zone de texte\",\n \"Textarea.error.required\": \"Ce champ est obligatoire\",\n \"Textarea.error.tooLong\": \"Le texte est trop long\",\n \"Textarea.counter.remaining\": \"caractères restants\",\n \"Textarea.error.invalidProps\": \"Textarea : propriétés invalides\",\n // ─── Forms — FieldArray ───────────────────────────────────────────────────\n \"FieldArray.aria.list\": \"Liste d'éléments\",\n \"FieldArray.aria.addItem\": \"Ajouter un élément\",\n \"FieldArray.aria.removeItem\": \"Supprimer l'élément\",\n \"FieldArray.error.invalidProps\": \"FieldArray : propriétés invalides\",\n // ─── Forms — Checkbox ─────────────────────────────────────────────────────\n \"Checkbox.aria.label\": \"Case à cocher\",\n \"Checkbox.error.required\": \"Ce champ doit être coché\",\n \"Checkbox.error.invalidProps\": \"Checkbox : propriétés invalides\",\n // ─── Forms — MultiSelect ──────────────────────────────────────────────────\n \"MultiSelect.aria.label\": \"Champ de sélection multiple\",\n \"MultiSelect.aria.removeChip\": \"Retirer\",\n \"MultiSelect.error.required\": \"Sélectionnez au moins une option\",\n \"MultiSelect.error.maxItems\": \"Nombre maximum de sélections atteint\",\n \"MultiSelect.placeholder\": \"Sélectionner des options…\",\n \"MultiSelect.search.placeholder\": \"Rechercher…\",\n \"MultiSelect.empty\": \"Aucune option disponible\",\n \"MultiSelect.error.invalidProps\": \"MultiSelect : propriétés invalides\",\n // ─── Forms — RadioGroup ───────────────────────────────────────────────────\n \"RadioGroup.aria.label\": \"Groupe de boutons radio\",\n \"RadioGroup.error.required\": \"Sélectionnez une option\",\n \"RadioGroup.error.invalidProps\": \"RadioGroup : propriétés invalides\",\n // ─── Forms — Select ───────────────────────────────────────────────────────\n \"Select.placeholder\": \"Sélectionner une option…\",\n \"Select.search.placeholder\": \"Rechercher…\",\n \"Select.empty\": \"Aucune option disponible\",\n \"Select.error.required\": \"Sélectionnez une option\",\n \"Select.error.invalidProps\": \"Select : propriétés invalides\",\n};\n\nexport type MosaicI18nKey = keyof typeof EN;\n\nconst TABLE: Record<MosaicLocale, Record<MosaicI18nKey, string>> = {\n en: EN,\n fr: FR,\n};\n\n/** Resolves a Mosaic i18n key for the given locale, falling back to EN. */\nexport function t(key: MosaicI18nKey, locale: MosaicLocale = \"en\"): string {\n return TABLE[locale]?.[key] ?? TABLE.en[key];\n}\n","import { z } from \"zod\";\n\nexport const ProgressBarPropsSchema = z.object({\n value: z.number().min(0).max(100),\n label: z.string().min(1),\n locale: z.enum([\"en\", \"fr\"]).default(\"en\"),\n colorVariant: z.enum([\"default\", \"warning\", \"danger\"]).default(\"default\"),\n});\n\nexport type ProgressBarProps = z.infer<typeof ProgressBarPropsSchema>;\n\nexport function validateProps(raw: unknown): ProgressBarProps {\n return ProgressBarPropsSchema.parse(raw);\n}\n","import React from \"react\";\nimport { type MosaicLocale, t } from \"../../i18n/strings.js\";\nimport { type ProgressBarProps, validateProps } from \"./ProgressBar.schema.js\";\n\nfunction pickLocale(raw: Record<string, unknown>): MosaicLocale {\n return raw.locale === \"fr\" ? \"fr\" : \"en\";\n}\n\nconst colorVariantClasses: Record<ProgressBarProps[\"colorVariant\"], string> = {\n default: \"bg-blue-600\",\n warning: \"bg-amber-500\",\n danger: \"bg-red-600\",\n};\n\nconst containerVariantClasses: Record<ProgressBarProps[\"colorVariant\"], string> = {\n default: \"progressbar-default\",\n warning: \"progressbar-warning\",\n danger: \"progressbar-danger\",\n};\n\nfunction ProgressBarInner(props: ProgressBarProps) {\n const { value, label, colorVariant } = props;\n const fillClass = colorVariantClasses[colorVariant];\n const containerClass = containerVariantClasses[colorVariant];\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n tabIndex={0}\n className={`mosaic-progress ${containerClass}`}\n style={{ width: \"100%\" }}\n >\n <div\n data-testid=\"progress-fill\"\n className={`mosaic-progress-fill ${fillClass}`}\n style={{ width: `${value}%` }}\n />\n <span className=\"mosaic-progress-label\">\n {label}: {value}%\n </span>\n </div>\n );\n}\n\n/**\n * ProgressBar accepts any props object for JSX and MCP postMessage injection alike.\n * Internal Zod validation narrows the type — invalid data renders an accessible error fallback.\n */\nexport function ProgressBar(raw: Record<string, unknown>) {\n try {\n const props = validateProps(raw);\n return <ProgressBarInner {...props} />;\n } catch {\n return (\n <div role=\"alert\" className=\"mosaic-progress-error\">\n {t(\"ProgressBar.error.invalidProps\", pickLocale(raw))}\n </div>\n );\n }\n}\n","// i18nKeys: ProgressBar.aria.label, ProgressBar.error.invalidProps\n\nimport { ProgressBar as BareProgressBar } from \"../../../../components/progress/ProgressBar.js\";\n\n/**\n * ProgressBar — React 19 runtime wrapper.\n *\n * Delegates entirely to the BARE implementation. The BARE component already:\n * - Validates props via Zod (ProgressBarPropsSchema)\n * - Resolves EN/FR i18n strings via t()\n * - Renders role=progressbar with full WCAG-AA aria attributes\n * - Falls back to role=alert on invalid props instead of throwing\n *\n * Import: `import { ProgressBar } from \"@vantageos/mosaic/react/progress\"`\n */\nexport function ProgressBar(raw: Record<string, unknown>) {\n return <BareProgressBar {...raw} />;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/i18n/strings.ts","../../src/components/progress/ProgressBar.schema.ts","../../src/components/progress/ProgressBar.tsx","../../src/runtimes/react/components/progress/ProgressBar.tsx"],"names":["ProgressBar","jsx"],"mappings":"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","file":"progress.js","sourcesContent":["/**\n * Compile-time mirror of `@vantageos/mosaic-i18n` EN/FR locales for all\n * Mosaic components (v0.3.0). Inlined here so that `<Comp>` renderers can\n * resolve `t(key, locale)` without dragging react-i18next into the component\n * runtime (keeps bundle small and tests provider-free). Drift is gated by\n * `mosaic-registry-drift-check.mjs` which validates the canonical\n * `packages/mosaic-i18n/src/locales/{en,fr}.json` against `registry.yaml`.\n *\n * Mosaic standard §8: production JSX MUST resolve user-facing strings via\n * `t()` — no hardcoded English literals.\n *\n * Forms keys added — v0.3.0-C-PR1 (Axis 5/6 i18n pass).\n * Convention: Forms.<Component>.<context>.<id>\n */\nexport type MosaicLocale = \"en\" | \"fr\";\n\nconst EN = {\n // ─── Non-forms components ──────────────────────────────────────────────────\n \"ProgressBar.aria.label\": \"Progress\",\n \"ProgressBar.error.invalidProps\": \"ProgressBar: invalid props\",\n \"ConfirmDialog.button.confirm\": \"Confirm\",\n \"ConfirmDialog.button.cancel\": \"Cancel\",\n \"ConfirmDialog.aria.dialog\": \"Confirmation dialog\",\n \"TableView.aria.table\": \"Data table\",\n \"TableView.pagination.next\": \"Next page\",\n \"TableView.pagination.prev\": \"Previous page\",\n \"TableView.empty.message\": \"No data to display\",\n \"TableView.error.invalidProps\": \"TableView: invalid props\",\n \"MarkdownRenderer.aria.content\": \"Rendered Markdown content\",\n \"MarkdownRenderer.error.invalidProps\": \"MarkdownRenderer: invalid props\",\n \"MarkdownRenderer.error.tooLong\": \"Content exceeds maximum length\",\n \"TokenDisplayOnceModal.button.copy\": \"Copy token\",\n \"TokenDisplayOnceModal.button.close\": \"Close\",\n \"TokenDisplayOnceModal.warning.once\": \"This token will only be shown once. Copy it now.\",\n \"TokenDisplayOnceModal.copied\": \"Copied\",\n \"StatusBadge.aria.status\": \"Status\",\n \"StatusBadge.error.invalidProps\": \"StatusBadge: invalid props\",\n \"Badge.aria.label\": \"Badge\",\n \"Badge.error.invalidProps\": \"Badge: invalid props\",\n \"EmptyState.error.invalidProps\": \"EmptyState: invalid props\",\n \"Toast.aria.close\": \"Close notification\",\n \"Toast.error.invalidProps\": \"Toast: invalid props\",\n \"Alert.aria.dismiss\": \"Dismiss alert\",\n \"Alert.error.invalidProps\": \"Alert: invalid props\",\n \"VirtualList.empty.message\": \"No items to display\",\n \"VirtualList.error.invalidProps\": \"VirtualList: invalid props\",\n \"Skeleton.aria.label\": \"Loading\",\n \"Skeleton.error.invalidProps\": \"Skeleton: invalid props\",\n // ─── Forms — useMosaicForm ─────────────────────────────────────────────────\n \"useMosaicForm.error.invalidProps\": \"useMosaicForm: invalid options\",\n // ─── Forms — FormProvider ──────────────────────────────────────────────────\n \"FormProvider.error.invalidProps\": \"FormProvider: invalid props\",\n // ─── Forms — FormField ────────────────────────────────────────────────────\n \"FormField.error.invalidProps\": \"FormField: invalid props\",\n // ─── Forms — ErrorDisplay ─────────────────────────────────────────────────\n \"ErrorDisplay.error.required\": \"This field is required\",\n \"ErrorDisplay.error.min\": \"Value is below the minimum\",\n \"ErrorDisplay.error.max\": \"Value exceeds the maximum\",\n \"ErrorDisplay.error.minLength\": \"Input is too short\",\n \"ErrorDisplay.error.maxLength\": \"Input is too long\",\n \"ErrorDisplay.error.pattern\": \"Invalid format\",\n \"ErrorDisplay.error.email\": \"Enter a valid email address\",\n \"ErrorDisplay.error.url\": \"Enter a valid URL\",\n \"ErrorDisplay.error.generic\": \"Invalid value\",\n // ─── Forms — SubmitButton ─────────────────────────────────────────────────\n \"SubmitButton.aria.submit\": \"Submit form\",\n \"SubmitButton.state.loading\": \"Submitting…\",\n \"SubmitButton.error.invalidProps\": \"SubmitButton: invalid props\",\n // ─── Forms — Input ────────────────────────────────────────────────────────\n \"Input.aria.label\": \"Input field\",\n \"Input.error.required\": \"This field is required\",\n \"Input.error.invalid\": \"Invalid value\",\n \"Input.error.tooLong\": \"Input is too long\",\n \"Input.error.tooShort\": \"Input is too short\",\n \"Input.error.invalidProps\": \"Input: invalid props\",\n // ─── Forms — Textarea ─────────────────────────────────────────────────────\n \"Textarea.aria.label\": \"Text area\",\n \"Textarea.error.required\": \"This field is required\",\n \"Textarea.error.tooLong\": \"Text is too long\",\n \"Textarea.counter.remaining\": \"characters remaining\",\n \"Textarea.error.invalidProps\": \"Textarea: invalid props\",\n // ─── Forms — FieldArray ───────────────────────────────────────────────────\n \"FieldArray.aria.list\": \"List of items\",\n \"FieldArray.aria.addItem\": \"Add item\",\n \"FieldArray.aria.removeItem\": \"Remove item\",\n \"FieldArray.error.invalidProps\": \"FieldArray: invalid props\",\n // ─── Forms — Checkbox ─────────────────────────────────────────────────────\n \"Checkbox.aria.label\": \"Checkbox\",\n \"Checkbox.error.required\": \"This field must be checked\",\n \"Checkbox.error.invalidProps\": \"Checkbox: invalid props\",\n // ─── Forms — MultiSelect ──────────────────────────────────────────────────\n \"MultiSelect.aria.label\": \"Multi-select field\",\n \"MultiSelect.aria.removeChip\": \"Remove\",\n \"MultiSelect.error.required\": \"Select at least one option\",\n \"MultiSelect.error.maxItems\": \"Maximum number of selections reached\",\n \"MultiSelect.placeholder\": \"Select options…\",\n \"MultiSelect.search.placeholder\": \"Search…\",\n \"MultiSelect.empty\": \"No options available\",\n \"MultiSelect.error.invalidProps\": \"MultiSelect: invalid props\",\n // ─── Forms — RadioGroup ───────────────────────────────────────────────────\n \"RadioGroup.aria.label\": \"Radio group\",\n \"RadioGroup.error.required\": \"Select one option\",\n \"RadioGroup.error.invalidProps\": \"RadioGroup: invalid props\",\n // ─── Forms — Select ───────────────────────────────────────────────────────\n \"Select.placeholder\": \"Select an option…\",\n \"Select.search.placeholder\": \"Search…\",\n \"Select.empty\": \"No options available\",\n \"Select.error.required\": \"Select an option\",\n \"Select.error.invalidProps\": \"Select: invalid props\",\n} as const;\n\nconst FR: Record<keyof typeof EN, string> = {\n // ─── Non-forms components ──────────────────────────────────────────────────\n \"ProgressBar.aria.label\": \"Progression\",\n \"ProgressBar.error.invalidProps\": \"ProgressBar : propriétés invalides\",\n \"ConfirmDialog.button.confirm\": \"Confirmer\",\n \"ConfirmDialog.button.cancel\": \"Annuler\",\n \"ConfirmDialog.aria.dialog\": \"Boîte de dialogue de confirmation\",\n \"TableView.aria.table\": \"Tableau de données\",\n \"TableView.pagination.next\": \"Page suivante\",\n \"TableView.pagination.prev\": \"Page précédente\",\n \"TableView.empty.message\": \"Aucune donnée à afficher\",\n \"TableView.error.invalidProps\": \"TableView : propriétés invalides\",\n \"MarkdownRenderer.aria.content\": \"Contenu Markdown rendu\",\n \"MarkdownRenderer.error.invalidProps\": \"MarkdownRenderer : propriétés invalides\",\n \"MarkdownRenderer.error.tooLong\": \"Le contenu dépasse la longueur maximale\",\n \"TokenDisplayOnceModal.button.copy\": \"Copier le jeton\",\n \"TokenDisplayOnceModal.button.close\": \"Fermer\",\n \"TokenDisplayOnceModal.warning.once\":\n \"Ce jeton ne sera affiché qu'une seule fois. Copiez-le maintenant.\",\n \"TokenDisplayOnceModal.copied\": \"Copié\",\n \"StatusBadge.aria.status\": \"Statut\",\n \"StatusBadge.error.invalidProps\": \"StatusBadge : propriétés invalides\",\n \"Badge.aria.label\": \"Badge\",\n \"Badge.error.invalidProps\": \"Badge : propriétés invalides\",\n \"EmptyState.error.invalidProps\": \"EmptyState : propriétés invalides\",\n \"Toast.aria.close\": \"Fermer la notification\",\n \"Toast.error.invalidProps\": \"Toast : propriétés invalides\",\n \"Alert.aria.dismiss\": \"Fermer l'alerte\",\n \"Alert.error.invalidProps\": \"Alert : propriétés invalides\",\n \"VirtualList.empty.message\": \"Aucun élément à afficher\",\n \"VirtualList.error.invalidProps\": \"VirtualList : propriétés invalides\",\n \"Skeleton.aria.label\": \"Chargement\",\n \"Skeleton.error.invalidProps\": \"Skeleton : propriétés invalides\",\n // ─── Forms — useMosaicForm ─────────────────────────────────────────────────\n \"useMosaicForm.error.invalidProps\": \"useMosaicForm : options invalides\",\n // ─── Forms — FormProvider ──────────────────────────────────────────────────\n \"FormProvider.error.invalidProps\": \"FormProvider : propriétés invalides\",\n // ─── Forms — FormField ────────────────────────────────────────────────────\n \"FormField.error.invalidProps\": \"FormField : propriétés invalides\",\n // ─── Forms — ErrorDisplay ─────────────────────────────────────────────────\n \"ErrorDisplay.error.required\": \"Ce champ est obligatoire\",\n \"ErrorDisplay.error.min\": \"La valeur est inférieure au minimum\",\n \"ErrorDisplay.error.max\": \"La valeur dépasse le maximum\",\n \"ErrorDisplay.error.minLength\": \"La saisie est trop courte\",\n \"ErrorDisplay.error.maxLength\": \"La saisie est trop longue\",\n \"ErrorDisplay.error.pattern\": \"Format invalide\",\n \"ErrorDisplay.error.email\": \"Saisissez une adresse e-mail valide\",\n \"ErrorDisplay.error.url\": \"Saisissez une URL valide\",\n \"ErrorDisplay.error.generic\": \"Valeur invalide\",\n // ─── Forms — SubmitButton ─────────────────────────────────────────────────\n \"SubmitButton.aria.submit\": \"Soumettre le formulaire\",\n \"SubmitButton.state.loading\": \"Envoi en cours…\",\n \"SubmitButton.error.invalidProps\": \"SubmitButton : propriétés invalides\",\n // ─── Forms — Input ────────────────────────────────────────────────────────\n \"Input.aria.label\": \"Champ de saisie\",\n \"Input.error.required\": \"Ce champ est obligatoire\",\n \"Input.error.invalid\": \"Valeur invalide\",\n \"Input.error.tooLong\": \"La saisie est trop longue\",\n \"Input.error.tooShort\": \"La saisie est trop courte\",\n \"Input.error.invalidProps\": \"Input : propriétés invalides\",\n // ─── Forms — Textarea ─────────────────────────────────────────────────────\n \"Textarea.aria.label\": \"Zone de texte\",\n \"Textarea.error.required\": \"Ce champ est obligatoire\",\n \"Textarea.error.tooLong\": \"Le texte est trop long\",\n \"Textarea.counter.remaining\": \"caractères restants\",\n \"Textarea.error.invalidProps\": \"Textarea : propriétés invalides\",\n // ─── Forms — FieldArray ───────────────────────────────────────────────────\n \"FieldArray.aria.list\": \"Liste d'éléments\",\n \"FieldArray.aria.addItem\": \"Ajouter un élément\",\n \"FieldArray.aria.removeItem\": \"Supprimer l'élément\",\n \"FieldArray.error.invalidProps\": \"FieldArray : propriétés invalides\",\n // ─── Forms — Checkbox ─────────────────────────────────────────────────────\n \"Checkbox.aria.label\": \"Case à cocher\",\n \"Checkbox.error.required\": \"Ce champ doit être coché\",\n \"Checkbox.error.invalidProps\": \"Checkbox : propriétés invalides\",\n // ─── Forms — MultiSelect ──────────────────────────────────────────────────\n \"MultiSelect.aria.label\": \"Champ de sélection multiple\",\n \"MultiSelect.aria.removeChip\": \"Retirer\",\n \"MultiSelect.error.required\": \"Sélectionnez au moins une option\",\n \"MultiSelect.error.maxItems\": \"Nombre maximum de sélections atteint\",\n \"MultiSelect.placeholder\": \"Sélectionner des options…\",\n \"MultiSelect.search.placeholder\": \"Rechercher…\",\n \"MultiSelect.empty\": \"Aucune option disponible\",\n \"MultiSelect.error.invalidProps\": \"MultiSelect : propriétés invalides\",\n // ─── Forms — RadioGroup ───────────────────────────────────────────────────\n \"RadioGroup.aria.label\": \"Groupe de boutons radio\",\n \"RadioGroup.error.required\": \"Sélectionnez une option\",\n \"RadioGroup.error.invalidProps\": \"RadioGroup : propriétés invalides\",\n // ─── Forms — Select ───────────────────────────────────────────────────────\n \"Select.placeholder\": \"Sélectionner une option…\",\n \"Select.search.placeholder\": \"Rechercher…\",\n \"Select.empty\": \"Aucune option disponible\",\n \"Select.error.required\": \"Sélectionnez une option\",\n \"Select.error.invalidProps\": \"Select : propriétés invalides\",\n};\n\nexport type MosaicI18nKey = keyof typeof EN;\n\nconst TABLE: Record<MosaicLocale, Record<MosaicI18nKey, string>> = {\n en: EN,\n fr: FR,\n};\n\n/** Resolves a Mosaic i18n key for the given locale, falling back to EN. */\nexport function t(key: MosaicI18nKey, locale: MosaicLocale = \"en\"): string {\n return TABLE[locale]?.[key] ?? TABLE.en[key];\n}\n","import { z } from \"zod\";\n\nexport const ProgressBarPropsSchema = z.object({\n value: z.number().min(0).max(100),\n label: z.string().min(1),\n locale: z.enum([\"en\", \"fr\"]).default(\"en\"),\n colorVariant: z.enum([\"default\", \"warning\", \"danger\"]).default(\"default\"),\n});\n\nexport type ProgressBarProps = z.infer<typeof ProgressBarPropsSchema>;\n\nexport function validateProps(raw: unknown): ProgressBarProps {\n return ProgressBarPropsSchema.parse(raw);\n}\n","import React from \"react\";\nimport { type MosaicLocale, t } from \"../../i18n/strings.js\";\nimport { type ProgressBarProps, validateProps } from \"./ProgressBar.schema.js\";\n\nfunction pickLocale(raw: Record<string, unknown>): MosaicLocale {\n return raw.locale === \"fr\" ? \"fr\" : \"en\";\n}\n\nconst colorVariantClasses: Record<ProgressBarProps[\"colorVariant\"], string> = {\n default: \"bg-blue-600\",\n warning: \"bg-amber-500\",\n danger: \"bg-red-600\",\n};\n\nconst containerVariantClasses: Record<ProgressBarProps[\"colorVariant\"], string> = {\n default: \"progressbar-default\",\n warning: \"progressbar-warning\",\n danger: \"progressbar-danger\",\n};\n\nfunction ProgressBarInner(props: ProgressBarProps) {\n const { value, label, colorVariant } = props;\n const fillClass = colorVariantClasses[colorVariant];\n const containerClass = containerVariantClasses[colorVariant];\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n tabIndex={0}\n className={`mosaic-progress ${containerClass}`}\n style={{ width: \"100%\" }}\n >\n <div\n data-testid=\"progress-fill\"\n className={`mosaic-progress-fill ${fillClass}`}\n style={{ width: `${value}%` }}\n />\n <span className=\"mosaic-progress-label\">\n {label}: {value}%\n </span>\n </div>\n );\n}\n\n/**\n * ProgressBar accepts any props object for JSX and MCP postMessage injection alike.\n * Internal Zod validation narrows the type — invalid data renders an accessible error fallback.\n */\nexport function ProgressBar(raw: Record<string, unknown>) {\n try {\n const props = validateProps(raw);\n return <ProgressBarInner {...props} />;\n } catch {\n return (\n <div role=\"alert\" className=\"mosaic-progress-error\">\n {t(\"ProgressBar.error.invalidProps\", pickLocale(raw))}\n </div>\n );\n }\n}\n","// i18nKeys: ProgressBar.aria.label, ProgressBar.error.invalidProps\n\nimport { ProgressBar as BareProgressBar } from \"../../../../components/progress/ProgressBar.js\";\n\n/**\n * ProgressBar — React 19 runtime wrapper.\n *\n * Delegates entirely to the BARE implementation. The BARE component already:\n * - Validates props via Zod (ProgressBarPropsSchema)\n * - Resolves EN/FR i18n strings via t()\n * - Renders role=progressbar with full WCAG-AA aria attributes\n * - Falls back to role=alert on invalid props instead of throwing\n *\n * Import: `import { ProgressBar } from \"@vantageos/mosaic/react/progress\"`\n */\nexport function ProgressBar(raw: Record<string, unknown>) {\n return <BareProgressBar {...raw} />;\n}\n"]}
|
package/dist/tokens.cjs
CHANGED
|
@@ -4,21 +4,62 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
// ../mosaic-tokens/src/tokens.ts
|
|
6
6
|
var colors = Object.freeze({
|
|
7
|
+
// Status palette (preserved keys, anydebate-updated values)
|
|
7
8
|
"success-50": "oklch(0.965 0.040 145)",
|
|
8
9
|
"success-500": "oklch(0.660 0.180 145)",
|
|
9
10
|
"success-700": "oklch(0.470 0.140 145)",
|
|
10
11
|
"warning-50": "oklch(0.975 0.045 85)",
|
|
11
12
|
"warning-500": "oklch(0.770 0.170 85)",
|
|
12
13
|
"warning-700": "oklch(0.560 0.145 65)",
|
|
13
|
-
|
|
14
|
-
"danger-
|
|
15
|
-
"danger-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"info-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
|
|
14
|
+
// anydebate destructive: oklch(0.577 0.245 27.325)
|
|
15
|
+
"danger-50": "oklch(0.965 0.035 27)",
|
|
16
|
+
"danger-500": "oklch(0.577 0.245 27)",
|
|
17
|
+
"danger-700": "oklch(0.400 0.180 27)",
|
|
18
|
+
// anydebate info/primary accent (dark mode blue): oklch(0.7 0.15 240)
|
|
19
|
+
"info-50": "oklch(0.970 0.030 240)",
|
|
20
|
+
"info-500": "oklch(0.700 0.150 240)",
|
|
21
|
+
"info-700": "oklch(0.500 0.130 240)",
|
|
22
|
+
// anydebate neutral axis — light: bg oklch(0.98 0 0), fg oklch(0.15 0 0)
|
|
23
|
+
"neutral-50": "oklch(0.980 0 0)",
|
|
24
|
+
"neutral-500": "oklch(0.450 0 0)",
|
|
25
|
+
"neutral-700": "oklch(0.150 0 0)",
|
|
26
|
+
// Additive semantic UI slots — neutral generic defaults (light mode),
|
|
27
|
+
// sourced from @vantageos/mosaic-blocks src/styles.css :root. Any-debate-ai's
|
|
28
|
+
// brand values now live only in examples/anydebate-override.css.
|
|
29
|
+
background: "oklch(1 0 0)",
|
|
30
|
+
foreground: "oklch(0.145 0 0)",
|
|
31
|
+
card: "oklch(1 0 0)",
|
|
32
|
+
"card-foreground": "oklch(0.145 0 0)",
|
|
33
|
+
popover: "oklch(1 0 0)",
|
|
34
|
+
"popover-foreground": "oklch(0.145 0 0)",
|
|
35
|
+
primary: "oklch(0.205 0 0)",
|
|
36
|
+
"primary-foreground": "oklch(0.985 0 0)",
|
|
37
|
+
secondary: "oklch(0.97 0 0)",
|
|
38
|
+
"secondary-foreground": "oklch(0.205 0 0)",
|
|
39
|
+
muted: "oklch(0.97 0 0)",
|
|
40
|
+
"muted-foreground": "oklch(0.556 0 0)",
|
|
41
|
+
accent: "oklch(0.97 0 0)",
|
|
42
|
+
"accent-foreground": "oklch(0.205 0 0)",
|
|
43
|
+
destructive: "oklch(0.577 0.245 27.325)",
|
|
44
|
+
"destructive-foreground": "oklch(0.985 0 0)",
|
|
45
|
+
border: "oklch(0.922 0 0)",
|
|
46
|
+
input: "oklch(0.922 0 0)",
|
|
47
|
+
ring: "oklch(0.708 0 0)",
|
|
48
|
+
// Sidebar (v0.3.1) — EXACTLY 4 keys, derived from real consumption on the
|
|
49
|
+
// one real consumer (mosaic-blocks). See tokens.css for the derivation
|
|
50
|
+
// command and the declared-divergence rationale for NOT shipping the
|
|
51
|
+
// other 4 of the shadcn 8-var convention.
|
|
52
|
+
sidebar: "oklch(1 0 0)",
|
|
53
|
+
"sidebar-foreground": "oklch(0.145 0 0)",
|
|
54
|
+
"sidebar-accent": "oklch(0.97 0 0)",
|
|
55
|
+
"sidebar-border": "oklch(0.922 0 0)",
|
|
56
|
+
// Chart series (v0.3.1) — declared divergence: added on request, not on
|
|
57
|
+
// measured consumer demand. See tokens.css for rationale. NO alias.
|
|
58
|
+
"chart-1": "oklch(0.650 0.200 240)",
|
|
59
|
+
"chart-2": "oklch(0.650 0.180 145)",
|
|
60
|
+
"chart-3": "oklch(0.700 0.170 85)",
|
|
61
|
+
"chart-4": "oklch(0.600 0.220 27)",
|
|
62
|
+
"chart-5": "oklch(0.550 0.180 300)"
|
|
22
63
|
});
|
|
23
64
|
var spacing = Object.freeze({
|
|
24
65
|
"1": "4px",
|
|
@@ -31,6 +72,10 @@ var spacing = Object.freeze({
|
|
|
31
72
|
"16": "64px"
|
|
32
73
|
});
|
|
33
74
|
var typography = Object.freeze({
|
|
75
|
+
// Font families (additive)
|
|
76
|
+
"font-sans": "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
77
|
+
"font-mono": 'ui-monospace, "Geist Mono", "Cascadia Code", monospace',
|
|
78
|
+
// Size scale (preserved keys, values unchanged — scale invariant maintained)
|
|
34
79
|
"size-xs": "12px",
|
|
35
80
|
"size-sm": "14px",
|
|
36
81
|
"size-base": "16px",
|
|
@@ -38,9 +83,11 @@ var typography = Object.freeze({
|
|
|
38
83
|
"size-xl": "24px",
|
|
39
84
|
"size-2xl": "30px",
|
|
40
85
|
"size-3xl": "38px",
|
|
86
|
+
// Line heights (preserved)
|
|
41
87
|
"lh-tight": "1.2",
|
|
42
88
|
"lh-normal": "1.5",
|
|
43
89
|
"lh-relaxed": "1.6",
|
|
90
|
+
// Weights (preserved)
|
|
44
91
|
"weight-regular": "400",
|
|
45
92
|
"weight-medium": "500",
|
|
46
93
|
"weight-semibold": "600",
|
|
@@ -48,30 +95,34 @@ var typography = Object.freeze({
|
|
|
48
95
|
});
|
|
49
96
|
var shadows = Object.freeze({
|
|
50
97
|
"0": "none",
|
|
51
|
-
"1": "0 1px 2px 0 oklch(0.
|
|
52
|
-
"2": "0 2px 4px -1px oklch(0.
|
|
53
|
-
"3": "0 4px 8px -2px oklch(0.
|
|
54
|
-
"4": "0 8px 16px -4px oklch(0.
|
|
55
|
-
"5": "0 16px 32px -8px oklch(0.
|
|
98
|
+
"1": "0 1px 2px 0 oklch(0.040 0 0 / 0.05)",
|
|
99
|
+
"2": "0 2px 4px -1px oklch(0.040 0 0 / 0.08), 0 1px 2px -1px oklch(0.040 0 0 / 0.06)",
|
|
100
|
+
"3": "0 4px 8px -2px oklch(0.040 0 0 / 0.10), 0 2px 4px -2px oklch(0.040 0 0 / 0.06)",
|
|
101
|
+
"4": "0 8px 16px -4px oklch(0.040 0 0 / 0.12), 0 4px 8px -4px oklch(0.040 0 0 / 0.08)",
|
|
102
|
+
"5": "0 16px 32px -8px oklch(0.040 0 0 / 0.16), 0 8px 16px -8px oklch(0.040 0 0 / 0.10)"
|
|
56
103
|
});
|
|
57
104
|
var radii = Object.freeze({
|
|
58
105
|
none: "0px",
|
|
59
|
-
xs: "
|
|
60
|
-
sm: "
|
|
61
|
-
md: "
|
|
62
|
-
lg: "
|
|
63
|
-
xl: "
|
|
106
|
+
xs: "4px",
|
|
107
|
+
sm: "8px",
|
|
108
|
+
md: "10px",
|
|
109
|
+
lg: "12px",
|
|
110
|
+
xl: "16px",
|
|
64
111
|
full: "9999px"
|
|
65
112
|
});
|
|
66
113
|
var motion = Object.freeze({
|
|
67
|
-
"duration-fast": "
|
|
68
|
-
"duration-base": "
|
|
114
|
+
"duration-fast": "100ms",
|
|
115
|
+
"duration-base": "200ms",
|
|
69
116
|
"duration-slow": "300ms",
|
|
117
|
+
"duration-slower": "500ms",
|
|
70
118
|
"easing-linear": "linear",
|
|
71
119
|
"easing-ease": "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
72
120
|
"easing-in": "cubic-bezier(0.4, 0, 1, 1)",
|
|
73
121
|
"easing-out": "cubic-bezier(0, 0, 0.2, 1)",
|
|
74
|
-
"easing-in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
122
|
+
"easing-in-out": "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
123
|
+
// Declared divergence (v0.3.1): no proven consumer, added per Pi
|
|
124
|
+
// arbitration. NO alias — see tokens.css for rationale.
|
|
125
|
+
"easing-out-expo": "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
75
126
|
});
|
|
76
127
|
var tokens = Object.freeze({
|
|
77
128
|
colors,
|
package/dist/tokens.cjs.map
CHANGED
|
@@ -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.cjs","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":";;;;;AAsEO,IAAM,MAAA,GAAiC,OAAO,MAAA,CAAO;AAAA;AAAA,EAE1D,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;AAAA,EAEf,WAAA,EAAa,uBAAA;AAAA,EACb,YAAA,EAAc,uBAAA;AAAA,EACd,YAAA,EAAc,uBAAA;AAAA;AAAA,EAEd,SAAA,EAAW,wBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,UAAA,EAAY,wBAAA;AAAA;AAAA,EAEZ,YAAA,EAAc,kBAAA;AAAA,EACd,aAAA,EAAe,kBAAA;AAAA,EACf,aAAA,EAAe,kBAAA;AAAA;AAAA;AAAA;AAAA,EAKf,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM,cAAA;AAAA,EACN,iBAAA,EAAmB,kBAAA;AAAA,EACnB,OAAA,EAAS,cAAA;AAAA,EACT,oBAAA,EAAsB,kBAAA;AAAA,EACtB,OAAA,EAAS,kBAAA;AAAA,EACT,oBAAA,EAAsB,kBAAA;AAAA,EACtB,SAAA,EAAW,iBAAA;AAAA,EACX,sBAAA,EAAwB,kBAAA;AAAA,EACxB,KAAA,EAAO,iBAAA;AAAA,EACP,kBAAA,EAAoB,kBAAA;AAAA,EACpB,MAAA,EAAQ,iBAAA;AAAA,EACR,mBAAA,EAAqB,kBAAA;AAAA,EACrB,WAAA,EAAa,2BAAA;AAAA,EACb,wBAAA,EAA0B,kBAAA;AAAA,EAC1B,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAO,kBAAA;AAAA,EACP,IAAA,EAAM,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMN,OAAA,EAAS,cAAA;AAAA,EACT,oBAAA,EAAsB,kBAAA;AAAA,EACtB,gBAAA,EAAkB,iBAAA;AAAA,EAClB,gBAAA,EAAkB,kBAAA;AAAA;AAAA;AAAA,EAIlB,SAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,uBAAA;AAAA,EACX,SAAA,EAAW,uBAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAC;AAKM,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;AAOM,IAAM,UAAA,GAAyC,OAAO,MAAA,CAAO;AAAA;AAAA,EAElE,WAAA,EAAa,6CAAA;AAAA,EACb,WAAA,EAAa,wDAAA;AAAA;AAAA,EAEb,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;AAAA,EAEZ,UAAA,EAAY,KAAA;AAAA,EACZ,WAAA,EAAa,KAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA;AAAA,EAEd,gBAAA,EAAkB,KAAA;AAAA,EAClB,eAAA,EAAiB,KAAA;AAAA,EACjB,iBAAA,EAAmB,KAAA;AAAA,EACnB,aAAA,EAAe;AACjB,CAAC;AAKM,IAAM,OAAA,GAAmC,OAAO,MAAA,CAAO;AAAA,EAC5D,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK,qCAAA;AAAA,EACL,GAAA,EAAK,gFAAA;AAAA,EACL,GAAA,EAAK,gFAAA;AAAA,EACL,GAAA,EAAK,iFAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAC;AAOM,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,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAC;AAOM,IAAM,MAAA,GAAiC,OAAO,MAAA,CAAO;AAAA,EAC1D,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,OAAA;AAAA,EACjB,iBAAA,EAAmB,OAAA;AAAA,EACnB,eAAA,EAAiB,QAAA;AAAA,EACjB,aAAA,EAAe,8BAAA;AAAA,EACf,WAAA,EAAa,4BAAA;AAAA,EACb,YAAA,EAAc,4BAAA;AAAA,EACd,eAAA,EAAiB,8BAAA;AAAA;AAAA;AAAA,EAGjB,iBAAA,EAAmB;AACrB,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.cjs","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/dist/tokens.d.cts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vantageos/mosaic-tokens — design tokens (
|
|
2
|
+
* @vantageos/mosaic-tokens — design tokens (neutral generic semantic defaults).
|
|
3
|
+
*
|
|
4
|
+
* Default semantic palette: neutral shadcn-grayscale (light values below;
|
|
5
|
+
* dark values live in tokens.css [data-theme="dark"]), sourced from
|
|
6
|
+
* @vantageos/mosaic-blocks src/styles.css (canonical). The any-debate-ai
|
|
7
|
+
* design language (bright/clean light + sophisticated dark, blue accent
|
|
8
|
+
* oklch(0.7 0.15 240)) is NOT the canonical default — it is an opt-in
|
|
9
|
+
* consumer override, see examples/anydebate-override.css.
|
|
10
|
+
*
|
|
11
|
+
* The status triads below (success/warning/danger/info/neutral) still carry
|
|
12
|
+
* their original any-debate-ai-derived values — unchanged by this realign.
|
|
3
13
|
*
|
|
4
14
|
* Framework-free, OKLCH-based, mirror of the CSS custom properties in
|
|
5
15
|
* tokens.css. Consumers can opt for either the CSS surface (Tailwind v4
|
|
@@ -8,13 +18,23 @@
|
|
|
8
18
|
*
|
|
9
19
|
* Size targets (.size-limit.json): JS bundle ≤5 KB gz, CSS ≤3 KB gz.
|
|
10
20
|
*
|
|
11
|
-
* Schema invariants (enforced by mosaic-tokens-coherence-test
|
|
21
|
+
* Schema invariants (enforced by mosaic-tokens-coherence-test):
|
|
12
22
|
* - Every CSS var has a JS counterpart (and vice versa).
|
|
13
|
-
* - Color shades 50 < 500 < 700 monotonic luminance.
|
|
23
|
+
* - Color shades 50 < 500 < 700 monotonic luminance (light mode).
|
|
14
24
|
* - Spacing scale ascending, ratio 1.5x average (4 → 64 px).
|
|
15
25
|
* - Typography scale uses 1.25x ratio (12 → 38 px).
|
|
16
26
|
* - Shadow elevation 0 < 1 < 2 < 3 < 4 < 5 monotonic blur radius.
|
|
17
27
|
* - Radii strictly ascending (none → full).
|
|
28
|
+
*
|
|
29
|
+
* KEY COMPATIBILITY: all keys present in 0.2.1 are preserved unchanged.
|
|
30
|
+
* New additive keys in 0.3.0:
|
|
31
|
+
* colors: background, foreground, card, card-foreground, popover,
|
|
32
|
+
* popover-foreground, primary, primary-foreground, secondary,
|
|
33
|
+
* secondary-foreground, muted, muted-foreground, accent,
|
|
34
|
+
* accent-foreground, destructive, destructive-foreground,
|
|
35
|
+
* border, input, ring (semantic UI slots from anydebate)
|
|
36
|
+
* typography: font-sans, font-mono (font-family tokens)
|
|
37
|
+
* motion: duration-slower (500ms entrance animation)
|
|
18
38
|
*/
|
|
19
39
|
interface MosaicTokens {
|
|
20
40
|
readonly colors: Readonly<Record<string, string>>;
|
package/dist/tokens.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vantageos/mosaic-tokens — design tokens (
|
|
2
|
+
* @vantageos/mosaic-tokens — design tokens (neutral generic semantic defaults).
|
|
3
|
+
*
|
|
4
|
+
* Default semantic palette: neutral shadcn-grayscale (light values below;
|
|
5
|
+
* dark values live in tokens.css [data-theme="dark"]), sourced from
|
|
6
|
+
* @vantageos/mosaic-blocks src/styles.css (canonical). The any-debate-ai
|
|
7
|
+
* design language (bright/clean light + sophisticated dark, blue accent
|
|
8
|
+
* oklch(0.7 0.15 240)) is NOT the canonical default — it is an opt-in
|
|
9
|
+
* consumer override, see examples/anydebate-override.css.
|
|
10
|
+
*
|
|
11
|
+
* The status triads below (success/warning/danger/info/neutral) still carry
|
|
12
|
+
* their original any-debate-ai-derived values — unchanged by this realign.
|
|
3
13
|
*
|
|
4
14
|
* Framework-free, OKLCH-based, mirror of the CSS custom properties in
|
|
5
15
|
* tokens.css. Consumers can opt for either the CSS surface (Tailwind v4
|
|
@@ -8,13 +18,23 @@
|
|
|
8
18
|
*
|
|
9
19
|
* Size targets (.size-limit.json): JS bundle ≤5 KB gz, CSS ≤3 KB gz.
|
|
10
20
|
*
|
|
11
|
-
* Schema invariants (enforced by mosaic-tokens-coherence-test
|
|
21
|
+
* Schema invariants (enforced by mosaic-tokens-coherence-test):
|
|
12
22
|
* - Every CSS var has a JS counterpart (and vice versa).
|
|
13
|
-
* - Color shades 50 < 500 < 700 monotonic luminance.
|
|
23
|
+
* - Color shades 50 < 500 < 700 monotonic luminance (light mode).
|
|
14
24
|
* - Spacing scale ascending, ratio 1.5x average (4 → 64 px).
|
|
15
25
|
* - Typography scale uses 1.25x ratio (12 → 38 px).
|
|
16
26
|
* - Shadow elevation 0 < 1 < 2 < 3 < 4 < 5 monotonic blur radius.
|
|
17
27
|
* - Radii strictly ascending (none → full).
|
|
28
|
+
*
|
|
29
|
+
* KEY COMPATIBILITY: all keys present in 0.2.1 are preserved unchanged.
|
|
30
|
+
* New additive keys in 0.3.0:
|
|
31
|
+
* colors: background, foreground, card, card-foreground, popover,
|
|
32
|
+
* popover-foreground, primary, primary-foreground, secondary,
|
|
33
|
+
* secondary-foreground, muted, muted-foreground, accent,
|
|
34
|
+
* accent-foreground, destructive, destructive-foreground,
|
|
35
|
+
* border, input, ring (semantic UI slots from anydebate)
|
|
36
|
+
* typography: font-sans, font-mono (font-family tokens)
|
|
37
|
+
* motion: duration-slower (500ms entrance animation)
|
|
18
38
|
*/
|
|
19
39
|
interface MosaicTokens {
|
|
20
40
|
readonly colors: Readonly<Record<string, string>>;
|
package/dist/tokens.js
CHANGED
|
@@ -1,20 +1,61 @@
|
|
|
1
1
|
// ../mosaic-tokens/src/tokens.ts
|
|
2
2
|
var colors = Object.freeze({
|
|
3
|
+
// Status palette (preserved keys, anydebate-updated values)
|
|
3
4
|
"success-50": "oklch(0.965 0.040 145)",
|
|
4
5
|
"success-500": "oklch(0.660 0.180 145)",
|
|
5
6
|
"success-700": "oklch(0.470 0.140 145)",
|
|
6
7
|
"warning-50": "oklch(0.975 0.045 85)",
|
|
7
8
|
"warning-500": "oklch(0.770 0.170 85)",
|
|
8
9
|
"warning-700": "oklch(0.560 0.145 65)",
|
|
9
|
-
|
|
10
|
-
"danger-
|
|
11
|
-
"danger-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
"info-
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
10
|
+
// anydebate destructive: oklch(0.577 0.245 27.325)
|
|
11
|
+
"danger-50": "oklch(0.965 0.035 27)",
|
|
12
|
+
"danger-500": "oklch(0.577 0.245 27)",
|
|
13
|
+
"danger-700": "oklch(0.400 0.180 27)",
|
|
14
|
+
// anydebate info/primary accent (dark mode blue): oklch(0.7 0.15 240)
|
|
15
|
+
"info-50": "oklch(0.970 0.030 240)",
|
|
16
|
+
"info-500": "oklch(0.700 0.150 240)",
|
|
17
|
+
"info-700": "oklch(0.500 0.130 240)",
|
|
18
|
+
// anydebate neutral axis — light: bg oklch(0.98 0 0), fg oklch(0.15 0 0)
|
|
19
|
+
"neutral-50": "oklch(0.980 0 0)",
|
|
20
|
+
"neutral-500": "oklch(0.450 0 0)",
|
|
21
|
+
"neutral-700": "oklch(0.150 0 0)",
|
|
22
|
+
// Additive semantic UI slots — neutral generic defaults (light mode),
|
|
23
|
+
// sourced from @vantageos/mosaic-blocks src/styles.css :root. Any-debate-ai's
|
|
24
|
+
// brand values now live only in examples/anydebate-override.css.
|
|
25
|
+
background: "oklch(1 0 0)",
|
|
26
|
+
foreground: "oklch(0.145 0 0)",
|
|
27
|
+
card: "oklch(1 0 0)",
|
|
28
|
+
"card-foreground": "oklch(0.145 0 0)",
|
|
29
|
+
popover: "oklch(1 0 0)",
|
|
30
|
+
"popover-foreground": "oklch(0.145 0 0)",
|
|
31
|
+
primary: "oklch(0.205 0 0)",
|
|
32
|
+
"primary-foreground": "oklch(0.985 0 0)",
|
|
33
|
+
secondary: "oklch(0.97 0 0)",
|
|
34
|
+
"secondary-foreground": "oklch(0.205 0 0)",
|
|
35
|
+
muted: "oklch(0.97 0 0)",
|
|
36
|
+
"muted-foreground": "oklch(0.556 0 0)",
|
|
37
|
+
accent: "oklch(0.97 0 0)",
|
|
38
|
+
"accent-foreground": "oklch(0.205 0 0)",
|
|
39
|
+
destructive: "oklch(0.577 0.245 27.325)",
|
|
40
|
+
"destructive-foreground": "oklch(0.985 0 0)",
|
|
41
|
+
border: "oklch(0.922 0 0)",
|
|
42
|
+
input: "oklch(0.922 0 0)",
|
|
43
|
+
ring: "oklch(0.708 0 0)",
|
|
44
|
+
// Sidebar (v0.3.1) — EXACTLY 4 keys, derived from real consumption on the
|
|
45
|
+
// one real consumer (mosaic-blocks). See tokens.css for the derivation
|
|
46
|
+
// command and the declared-divergence rationale for NOT shipping the
|
|
47
|
+
// other 4 of the shadcn 8-var convention.
|
|
48
|
+
sidebar: "oklch(1 0 0)",
|
|
49
|
+
"sidebar-foreground": "oklch(0.145 0 0)",
|
|
50
|
+
"sidebar-accent": "oklch(0.97 0 0)",
|
|
51
|
+
"sidebar-border": "oklch(0.922 0 0)",
|
|
52
|
+
// Chart series (v0.3.1) — declared divergence: added on request, not on
|
|
53
|
+
// measured consumer demand. See tokens.css for rationale. NO alias.
|
|
54
|
+
"chart-1": "oklch(0.650 0.200 240)",
|
|
55
|
+
"chart-2": "oklch(0.650 0.180 145)",
|
|
56
|
+
"chart-3": "oklch(0.700 0.170 85)",
|
|
57
|
+
"chart-4": "oklch(0.600 0.220 27)",
|
|
58
|
+
"chart-5": "oklch(0.550 0.180 300)"
|
|
18
59
|
});
|
|
19
60
|
var spacing = Object.freeze({
|
|
20
61
|
"1": "4px",
|
|
@@ -27,6 +68,10 @@ var spacing = Object.freeze({
|
|
|
27
68
|
"16": "64px"
|
|
28
69
|
});
|
|
29
70
|
var typography = Object.freeze({
|
|
71
|
+
// Font families (additive)
|
|
72
|
+
"font-sans": "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
73
|
+
"font-mono": 'ui-monospace, "Geist Mono", "Cascadia Code", monospace',
|
|
74
|
+
// Size scale (preserved keys, values unchanged — scale invariant maintained)
|
|
30
75
|
"size-xs": "12px",
|
|
31
76
|
"size-sm": "14px",
|
|
32
77
|
"size-base": "16px",
|
|
@@ -34,9 +79,11 @@ var typography = Object.freeze({
|
|
|
34
79
|
"size-xl": "24px",
|
|
35
80
|
"size-2xl": "30px",
|
|
36
81
|
"size-3xl": "38px",
|
|
82
|
+
// Line heights (preserved)
|
|
37
83
|
"lh-tight": "1.2",
|
|
38
84
|
"lh-normal": "1.5",
|
|
39
85
|
"lh-relaxed": "1.6",
|
|
86
|
+
// Weights (preserved)
|
|
40
87
|
"weight-regular": "400",
|
|
41
88
|
"weight-medium": "500",
|
|
42
89
|
"weight-semibold": "600",
|
|
@@ -44,30 +91,34 @@ var typography = Object.freeze({
|
|
|
44
91
|
});
|
|
45
92
|
var shadows = Object.freeze({
|
|
46
93
|
"0": "none",
|
|
47
|
-
"1": "0 1px 2px 0 oklch(0.
|
|
48
|
-
"2": "0 2px 4px -1px oklch(0.
|
|
49
|
-
"3": "0 4px 8px -2px oklch(0.
|
|
50
|
-
"4": "0 8px 16px -4px oklch(0.
|
|
51
|
-
"5": "0 16px 32px -8px oklch(0.
|
|
94
|
+
"1": "0 1px 2px 0 oklch(0.040 0 0 / 0.05)",
|
|
95
|
+
"2": "0 2px 4px -1px oklch(0.040 0 0 / 0.08), 0 1px 2px -1px oklch(0.040 0 0 / 0.06)",
|
|
96
|
+
"3": "0 4px 8px -2px oklch(0.040 0 0 / 0.10), 0 2px 4px -2px oklch(0.040 0 0 / 0.06)",
|
|
97
|
+
"4": "0 8px 16px -4px oklch(0.040 0 0 / 0.12), 0 4px 8px -4px oklch(0.040 0 0 / 0.08)",
|
|
98
|
+
"5": "0 16px 32px -8px oklch(0.040 0 0 / 0.16), 0 8px 16px -8px oklch(0.040 0 0 / 0.10)"
|
|
52
99
|
});
|
|
53
100
|
var radii = Object.freeze({
|
|
54
101
|
none: "0px",
|
|
55
|
-
xs: "
|
|
56
|
-
sm: "
|
|
57
|
-
md: "
|
|
58
|
-
lg: "
|
|
59
|
-
xl: "
|
|
102
|
+
xs: "4px",
|
|
103
|
+
sm: "8px",
|
|
104
|
+
md: "10px",
|
|
105
|
+
lg: "12px",
|
|
106
|
+
xl: "16px",
|
|
60
107
|
full: "9999px"
|
|
61
108
|
});
|
|
62
109
|
var motion = Object.freeze({
|
|
63
|
-
"duration-fast": "
|
|
64
|
-
"duration-base": "
|
|
110
|
+
"duration-fast": "100ms",
|
|
111
|
+
"duration-base": "200ms",
|
|
65
112
|
"duration-slow": "300ms",
|
|
113
|
+
"duration-slower": "500ms",
|
|
66
114
|
"easing-linear": "linear",
|
|
67
115
|
"easing-ease": "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
68
116
|
"easing-in": "cubic-bezier(0.4, 0, 1, 1)",
|
|
69
117
|
"easing-out": "cubic-bezier(0, 0, 0.2, 1)",
|
|
70
|
-
"easing-in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
118
|
+
"easing-in-out": "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
119
|
+
// Declared divergence (v0.3.1): no proven consumer, added per Pi
|
|
120
|
+
// arbitration. NO alias — see tokens.css for rationale.
|
|
121
|
+
"easing-out-expo": "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
71
122
|
});
|
|
72
123
|
var tokens = Object.freeze({
|
|
73
124
|
colors,
|