@vantageos/mosaic 0.1.1 → 0.2.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 (110) hide show
  1. package/dist/artifacts.cjs +113 -0
  2. package/dist/artifacts.cjs.map +1 -0
  3. package/dist/artifacts.d.cts +29 -0
  4. package/dist/artifacts.d.ts +29 -0
  5. package/dist/artifacts.js +105 -0
  6. package/dist/artifacts.js.map +1 -0
  7. package/dist/confirmation.cjs +180 -0
  8. package/dist/confirmation.cjs.map +1 -0
  9. package/dist/confirmation.d.cts +33 -0
  10. package/dist/confirmation.d.ts +33 -0
  11. package/dist/confirmation.js +176 -0
  12. package/dist/confirmation.js.map +1 -0
  13. package/dist/display.cjs +273 -0
  14. package/dist/display.cjs.map +1 -0
  15. package/dist/display.d.cts +94 -0
  16. package/dist/display.d.ts +94 -0
  17. package/dist/display.js +268 -0
  18. package/dist/display.js.map +1 -0
  19. package/dist/index.cjs +40 -2
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +12 -232
  22. package/dist/index.d.ts +12 -232
  23. package/dist/index.js +40 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/input.cjs +102 -0
  26. package/dist/input.cjs.map +1 -0
  27. package/dist/input.d.cts +34 -0
  28. package/dist/input.d.ts +34 -0
  29. package/dist/input.js +98 -0
  30. package/dist/input.js.map +1 -0
  31. package/dist/media.cjs +98 -0
  32. package/dist/media.cjs.map +1 -0
  33. package/dist/media.d.cts +29 -0
  34. package/dist/media.d.ts +29 -0
  35. package/dist/media.js +94 -0
  36. package/dist/media.js.map +1 -0
  37. package/dist/preact/artifacts.js +3 -0
  38. package/dist/preact/artifacts.js.map +1 -0
  39. package/dist/preact/confirmation.js +3 -0
  40. package/dist/preact/confirmation.js.map +1 -0
  41. package/dist/preact/display.js +3 -0
  42. package/dist/preact/display.js.map +1 -0
  43. package/dist/preact/index.js +3 -0
  44. package/dist/preact/index.js.map +1 -0
  45. package/dist/preact/input.js +3 -0
  46. package/dist/preact/input.js.map +1 -0
  47. package/dist/preact/media.js +3 -0
  48. package/dist/preact/media.js.map +1 -0
  49. package/dist/preact/progress.js +3 -0
  50. package/dist/preact/progress.js.map +1 -0
  51. package/dist/progress.cjs +125 -0
  52. package/dist/progress.cjs.map +1 -0
  53. package/dist/progress.d.cts +29 -0
  54. package/dist/progress.d.ts +29 -0
  55. package/dist/progress.js +121 -0
  56. package/dist/progress.js.map +1 -0
  57. package/dist/react/artifacts.cjs +4 -0
  58. package/dist/react/artifacts.cjs.map +1 -0
  59. package/dist/react/artifacts.d.cts +2 -0
  60. package/dist/react/artifacts.d.ts +2 -0
  61. package/dist/react/artifacts.js +3 -0
  62. package/dist/react/artifacts.js.map +1 -0
  63. package/dist/react/confirmation.cjs +4 -0
  64. package/dist/react/confirmation.cjs.map +1 -0
  65. package/dist/react/confirmation.d.cts +2 -0
  66. package/dist/react/confirmation.d.ts +2 -0
  67. package/dist/react/confirmation.js +3 -0
  68. package/dist/react/confirmation.js.map +1 -0
  69. package/dist/react/display.cjs +4 -0
  70. package/dist/react/display.cjs.map +1 -0
  71. package/dist/react/display.d.cts +2 -0
  72. package/dist/react/display.d.ts +2 -0
  73. package/dist/react/display.js +3 -0
  74. package/dist/react/display.js.map +1 -0
  75. package/dist/react/index.cjs +4 -0
  76. package/dist/react/index.cjs.map +1 -0
  77. package/dist/react/index.d.cts +2 -0
  78. package/dist/react/index.d.ts +2 -0
  79. package/dist/react/index.js +3 -0
  80. package/dist/react/index.js.map +1 -0
  81. package/dist/react/input.cjs +4 -0
  82. package/dist/react/input.cjs.map +1 -0
  83. package/dist/react/input.d.cts +2 -0
  84. package/dist/react/input.d.ts +2 -0
  85. package/dist/react/input.js +3 -0
  86. package/dist/react/input.js.map +1 -0
  87. package/dist/react/media.cjs +4 -0
  88. package/dist/react/media.cjs.map +1 -0
  89. package/dist/react/media.d.cts +2 -0
  90. package/dist/react/media.d.ts +2 -0
  91. package/dist/react/media.js +3 -0
  92. package/dist/react/media.js.map +1 -0
  93. package/dist/react/progress.cjs +4 -0
  94. package/dist/react/progress.cjs.map +1 -0
  95. package/dist/react/progress.d.cts +2 -0
  96. package/dist/react/progress.d.ts +2 -0
  97. package/dist/react/progress.js +3 -0
  98. package/dist/react/progress.js.map +1 -0
  99. package/dist/server.cjs +121 -0
  100. package/dist/server.cjs.map +1 -0
  101. package/dist/server.d.cts +33 -0
  102. package/dist/server.d.ts +33 -0
  103. package/dist/server.js +116 -0
  104. package/dist/server.js.map +1 -0
  105. package/dist/tokens.cjs +95 -0
  106. package/dist/tokens.cjs.map +1 -0
  107. package/dist/tokens.js +84 -0
  108. package/dist/tokens.js.map +1 -0
  109. package/package.json +127 -9
  110. package/registry.yaml +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=media.js.map
3
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"media.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=progress.js.map
3
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"progress.js"}
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ // src/i18n/strings.ts
7
+ var EN = {
8
+ "ProgressBar.aria.label": "Progress",
9
+ "ProgressBar.error.invalidProps": "ProgressBar: invalid props",
10
+ "ConfirmDialog.button.confirm": "Confirm",
11
+ "ConfirmDialog.button.cancel": "Cancel",
12
+ "ConfirmDialog.aria.dialog": "Confirmation dialog",
13
+ "TableView.aria.table": "Data table",
14
+ "TableView.pagination.next": "Next page",
15
+ "TableView.pagination.prev": "Previous page",
16
+ "TableView.empty.message": "No data to display",
17
+ "TableView.error.invalidProps": "TableView: invalid props",
18
+ "MarkdownRenderer.aria.content": "Rendered Markdown content",
19
+ "MarkdownRenderer.error.invalidProps": "MarkdownRenderer: invalid props",
20
+ "MarkdownRenderer.error.tooLong": "Content exceeds maximum length",
21
+ "TokenDisplayOnceModal.button.copy": "Copy token",
22
+ "TokenDisplayOnceModal.button.close": "Close",
23
+ "TokenDisplayOnceModal.warning.once": "This token will only be shown once. Copy it now.",
24
+ "TokenDisplayOnceModal.copied": "Copied",
25
+ "StatusBadge.aria.status": "Status",
26
+ "StatusBadge.error.invalidProps": "StatusBadge: invalid props"
27
+ };
28
+ var FR = {
29
+ "ProgressBar.aria.label": "Progression",
30
+ "ProgressBar.error.invalidProps": "ProgressBar : propri\xE9t\xE9s invalides",
31
+ "ConfirmDialog.button.confirm": "Confirmer",
32
+ "ConfirmDialog.button.cancel": "Annuler",
33
+ "ConfirmDialog.aria.dialog": "Bo\xEEte de dialogue de confirmation",
34
+ "TableView.aria.table": "Tableau de donn\xE9es",
35
+ "TableView.pagination.next": "Page suivante",
36
+ "TableView.pagination.prev": "Page pr\xE9c\xE9dente",
37
+ "TableView.empty.message": "Aucune donn\xE9e \xE0 afficher",
38
+ "TableView.error.invalidProps": "TableView : propri\xE9t\xE9s invalides",
39
+ "MarkdownRenderer.aria.content": "Contenu Markdown rendu",
40
+ "MarkdownRenderer.error.invalidProps": "MarkdownRenderer : propri\xE9t\xE9s invalides",
41
+ "MarkdownRenderer.error.tooLong": "Le contenu d\xE9passe la longueur maximale",
42
+ "TokenDisplayOnceModal.button.copy": "Copier le jeton",
43
+ "TokenDisplayOnceModal.button.close": "Fermer",
44
+ "TokenDisplayOnceModal.warning.once": "Ce jeton ne sera affich\xE9 qu'une seule fois. Copiez-le maintenant.",
45
+ "TokenDisplayOnceModal.copied": "Copi\xE9",
46
+ "StatusBadge.aria.status": "Statut",
47
+ "StatusBadge.error.invalidProps": "StatusBadge : propri\xE9t\xE9s invalides"
48
+ };
49
+ var TABLE = {
50
+ en: EN,
51
+ fr: FR
52
+ };
53
+ function t(key, locale = "en") {
54
+ return TABLE[locale]?.[key] ?? TABLE.en[key];
55
+ }
56
+ var ProgressBarPropsSchema = zod.z.object({
57
+ value: zod.z.number().min(0).max(100),
58
+ label: zod.z.string().min(1),
59
+ locale: zod.z.enum(["en", "fr"]).default("en"),
60
+ colorVariant: zod.z.enum(["default", "warning", "danger"]).default("default")
61
+ });
62
+ function validateProps(raw) {
63
+ return ProgressBarPropsSchema.parse(raw);
64
+ }
65
+ function pickLocale(raw) {
66
+ return raw.locale === "fr" ? "fr" : "en";
67
+ }
68
+ var colorVariantClasses = {
69
+ default: "bg-blue-600",
70
+ warning: "bg-amber-500",
71
+ danger: "bg-red-600"
72
+ };
73
+ var containerVariantClasses = {
74
+ default: "progressbar-default",
75
+ warning: "progressbar-warning",
76
+ danger: "progressbar-danger"
77
+ };
78
+ function ProgressBarInner(props) {
79
+ const { value, label, colorVariant } = props;
80
+ const fillClass = colorVariantClasses[colorVariant];
81
+ const containerClass = containerVariantClasses[colorVariant];
82
+ return /* @__PURE__ */ jsxRuntime.jsxs(
83
+ "div",
84
+ {
85
+ role: "progressbar",
86
+ "aria-valuenow": value,
87
+ "aria-valuemin": 0,
88
+ "aria-valuemax": 100,
89
+ "aria-label": label,
90
+ tabIndex: 0,
91
+ className: `mosaic-progress ${containerClass}`,
92
+ style: { width: "100%" },
93
+ children: [
94
+ /* @__PURE__ */ jsxRuntime.jsx(
95
+ "div",
96
+ {
97
+ "data-testid": "progress-fill",
98
+ className: `mosaic-progress-fill ${fillClass}`,
99
+ style: { width: `${value}%` }
100
+ }
101
+ ),
102
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mosaic-progress-label", children: [
103
+ label,
104
+ ": ",
105
+ value,
106
+ "%"
107
+ ] })
108
+ ]
109
+ }
110
+ );
111
+ }
112
+ function ProgressBar(raw) {
113
+ try {
114
+ const props = validateProps(raw);
115
+ return /* @__PURE__ */ jsxRuntime.jsx(ProgressBarInner, { ...props });
116
+ } catch {
117
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "alert", className: "mosaic-progress-error", children: t("ProgressBar.error.invalidProps", pickLocale(raw)) });
118
+ }
119
+ }
120
+
121
+ exports.ProgressBar = ProgressBar;
122
+ exports.ProgressBarPropsSchema = ProgressBarPropsSchema;
123
+ exports.validateProps = validateProps;
124
+ //# sourceMappingURL=progress.cjs.map
125
+ //# sourceMappingURL=progress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/strings.ts","../src/components/progress/ProgressBar.schema.ts","../src/components/progress/ProgressBar.tsx"],"names":["z","jsxs","jsx"],"mappings":"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","file":"progress.cjs","sourcesContent":["/**\n * Compile-time mirror of `@vantageos/mosaic-i18n` EN/FR locales for the 6\n * v0.1.0 components. Inlined here so that `<Comp>` renderers can resolve\n * `t(key, locale)` without dragging react-i18next into the component runtime\n * (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 */\nexport type MosaicLocale = \"en\" | \"fr\";\n\nconst EN = {\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} as const;\n\nconst FR: Record<keyof typeof EN, string> = {\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};\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"]}
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { z } from 'zod';
3
+
4
+ /**
5
+ * ProgressBar accepts any props object for JSX and MCP postMessage injection alike.
6
+ * Internal Zod validation narrows the type — invalid data renders an accessible error fallback.
7
+ */
8
+ declare function ProgressBar(raw: Record<string, unknown>): react_jsx_runtime.JSX.Element;
9
+
10
+ declare const ProgressBarPropsSchema: z.ZodObject<{
11
+ value: z.ZodNumber;
12
+ label: z.ZodString;
13
+ locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
14
+ colorVariant: z.ZodDefault<z.ZodEnum<["default", "warning", "danger"]>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ value: number;
17
+ label: string;
18
+ locale: "en" | "fr";
19
+ colorVariant: "default" | "warning" | "danger";
20
+ }, {
21
+ value: number;
22
+ label: string;
23
+ locale?: "en" | "fr" | undefined;
24
+ colorVariant?: "default" | "warning" | "danger" | undefined;
25
+ }>;
26
+ type ProgressBarProps = z.infer<typeof ProgressBarPropsSchema>;
27
+ declare function validateProps(raw: unknown): ProgressBarProps;
28
+
29
+ export { ProgressBar, type ProgressBarProps, ProgressBarPropsSchema, validateProps };
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { z } from 'zod';
3
+
4
+ /**
5
+ * ProgressBar accepts any props object for JSX and MCP postMessage injection alike.
6
+ * Internal Zod validation narrows the type — invalid data renders an accessible error fallback.
7
+ */
8
+ declare function ProgressBar(raw: Record<string, unknown>): react_jsx_runtime.JSX.Element;
9
+
10
+ declare const ProgressBarPropsSchema: z.ZodObject<{
11
+ value: z.ZodNumber;
12
+ label: z.ZodString;
13
+ locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
14
+ colorVariant: z.ZodDefault<z.ZodEnum<["default", "warning", "danger"]>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ value: number;
17
+ label: string;
18
+ locale: "en" | "fr";
19
+ colorVariant: "default" | "warning" | "danger";
20
+ }, {
21
+ value: number;
22
+ label: string;
23
+ locale?: "en" | "fr" | undefined;
24
+ colorVariant?: "default" | "warning" | "danger" | undefined;
25
+ }>;
26
+ type ProgressBarProps = z.infer<typeof ProgressBarPropsSchema>;
27
+ declare function validateProps(raw: unknown): ProgressBarProps;
28
+
29
+ export { ProgressBar, type ProgressBarProps, ProgressBarPropsSchema, validateProps };
@@ -0,0 +1,121 @@
1
+ import { z } from 'zod';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+
4
+ // src/i18n/strings.ts
5
+ var EN = {
6
+ "ProgressBar.aria.label": "Progress",
7
+ "ProgressBar.error.invalidProps": "ProgressBar: invalid props",
8
+ "ConfirmDialog.button.confirm": "Confirm",
9
+ "ConfirmDialog.button.cancel": "Cancel",
10
+ "ConfirmDialog.aria.dialog": "Confirmation dialog",
11
+ "TableView.aria.table": "Data table",
12
+ "TableView.pagination.next": "Next page",
13
+ "TableView.pagination.prev": "Previous page",
14
+ "TableView.empty.message": "No data to display",
15
+ "TableView.error.invalidProps": "TableView: invalid props",
16
+ "MarkdownRenderer.aria.content": "Rendered Markdown content",
17
+ "MarkdownRenderer.error.invalidProps": "MarkdownRenderer: invalid props",
18
+ "MarkdownRenderer.error.tooLong": "Content exceeds maximum length",
19
+ "TokenDisplayOnceModal.button.copy": "Copy token",
20
+ "TokenDisplayOnceModal.button.close": "Close",
21
+ "TokenDisplayOnceModal.warning.once": "This token will only be shown once. Copy it now.",
22
+ "TokenDisplayOnceModal.copied": "Copied",
23
+ "StatusBadge.aria.status": "Status",
24
+ "StatusBadge.error.invalidProps": "StatusBadge: invalid props"
25
+ };
26
+ var FR = {
27
+ "ProgressBar.aria.label": "Progression",
28
+ "ProgressBar.error.invalidProps": "ProgressBar : propri\xE9t\xE9s invalides",
29
+ "ConfirmDialog.button.confirm": "Confirmer",
30
+ "ConfirmDialog.button.cancel": "Annuler",
31
+ "ConfirmDialog.aria.dialog": "Bo\xEEte de dialogue de confirmation",
32
+ "TableView.aria.table": "Tableau de donn\xE9es",
33
+ "TableView.pagination.next": "Page suivante",
34
+ "TableView.pagination.prev": "Page pr\xE9c\xE9dente",
35
+ "TableView.empty.message": "Aucune donn\xE9e \xE0 afficher",
36
+ "TableView.error.invalidProps": "TableView : propri\xE9t\xE9s invalides",
37
+ "MarkdownRenderer.aria.content": "Contenu Markdown rendu",
38
+ "MarkdownRenderer.error.invalidProps": "MarkdownRenderer : propri\xE9t\xE9s invalides",
39
+ "MarkdownRenderer.error.tooLong": "Le contenu d\xE9passe la longueur maximale",
40
+ "TokenDisplayOnceModal.button.copy": "Copier le jeton",
41
+ "TokenDisplayOnceModal.button.close": "Fermer",
42
+ "TokenDisplayOnceModal.warning.once": "Ce jeton ne sera affich\xE9 qu'une seule fois. Copiez-le maintenant.",
43
+ "TokenDisplayOnceModal.copied": "Copi\xE9",
44
+ "StatusBadge.aria.status": "Statut",
45
+ "StatusBadge.error.invalidProps": "StatusBadge : propri\xE9t\xE9s invalides"
46
+ };
47
+ var TABLE = {
48
+ en: EN,
49
+ fr: FR
50
+ };
51
+ function t(key, locale = "en") {
52
+ return TABLE[locale]?.[key] ?? TABLE.en[key];
53
+ }
54
+ var ProgressBarPropsSchema = z.object({
55
+ value: z.number().min(0).max(100),
56
+ label: z.string().min(1),
57
+ locale: z.enum(["en", "fr"]).default("en"),
58
+ colorVariant: z.enum(["default", "warning", "danger"]).default("default")
59
+ });
60
+ function validateProps(raw) {
61
+ return ProgressBarPropsSchema.parse(raw);
62
+ }
63
+ function pickLocale(raw) {
64
+ return raw.locale === "fr" ? "fr" : "en";
65
+ }
66
+ var colorVariantClasses = {
67
+ default: "bg-blue-600",
68
+ warning: "bg-amber-500",
69
+ danger: "bg-red-600"
70
+ };
71
+ var containerVariantClasses = {
72
+ default: "progressbar-default",
73
+ warning: "progressbar-warning",
74
+ danger: "progressbar-danger"
75
+ };
76
+ function ProgressBarInner(props) {
77
+ const { value, label, colorVariant } = props;
78
+ const fillClass = colorVariantClasses[colorVariant];
79
+ const containerClass = containerVariantClasses[colorVariant];
80
+ return /* @__PURE__ */ jsxs(
81
+ "div",
82
+ {
83
+ role: "progressbar",
84
+ "aria-valuenow": value,
85
+ "aria-valuemin": 0,
86
+ "aria-valuemax": 100,
87
+ "aria-label": label,
88
+ tabIndex: 0,
89
+ className: `mosaic-progress ${containerClass}`,
90
+ style: { width: "100%" },
91
+ children: [
92
+ /* @__PURE__ */ jsx(
93
+ "div",
94
+ {
95
+ "data-testid": "progress-fill",
96
+ className: `mosaic-progress-fill ${fillClass}`,
97
+ style: { width: `${value}%` }
98
+ }
99
+ ),
100
+ /* @__PURE__ */ jsxs("span", { className: "mosaic-progress-label", children: [
101
+ label,
102
+ ": ",
103
+ value,
104
+ "%"
105
+ ] })
106
+ ]
107
+ }
108
+ );
109
+ }
110
+ function ProgressBar(raw) {
111
+ try {
112
+ const props = validateProps(raw);
113
+ return /* @__PURE__ */ jsx(ProgressBarInner, { ...props });
114
+ } catch {
115
+ return /* @__PURE__ */ jsx("div", { role: "alert", className: "mosaic-progress-error", children: t("ProgressBar.error.invalidProps", pickLocale(raw)) });
116
+ }
117
+ }
118
+
119
+ export { ProgressBar, ProgressBarPropsSchema, validateProps };
120
+ //# sourceMappingURL=progress.js.map
121
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/strings.ts","../src/components/progress/ProgressBar.schema.ts","../src/components/progress/ProgressBar.tsx"],"names":[],"mappings":"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","file":"progress.js","sourcesContent":["/**\n * Compile-time mirror of `@vantageos/mosaic-i18n` EN/FR locales for the 6\n * v0.1.0 components. Inlined here so that `<Comp>` renderers can resolve\n * `t(key, locale)` without dragging react-i18next into the component runtime\n * (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 */\nexport type MosaicLocale = \"en\" | \"fr\";\n\nconst EN = {\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} as const;\n\nconst FR: Record<keyof typeof EN, string> = {\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};\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"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=artifacts.cjs.map
4
+ //# sourceMappingURL=artifacts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"artifacts.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=artifacts.js.map
3
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"artifacts.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=confirmation.cjs.map
4
+ //# sourceMappingURL=confirmation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"confirmation.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=confirmation.js.map
3
+ //# sourceMappingURL=confirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"confirmation.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=display.cjs.map
4
+ //# sourceMappingURL=display.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"display.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=display.js.map
3
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"display.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=index.cjs.map
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=input.cjs.map
4
+ //# sourceMappingURL=input.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=input.js.map
3
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=media.cjs.map
4
+ //# sourceMappingURL=media.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"media.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=media.js.map
3
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"media.js"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=progress.cjs.map
4
+ //# sourceMappingURL=progress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"progress.cjs"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=progress.js.map
3
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"progress.js"}