@vantageos/mosaic 0.4.0 → 0.5.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 +39 -15
- package/README.md +114 -5
- package/dist/PipelineBoard-FucyGArR.d.cts +759 -0
- package/dist/PipelineBoard-FucyGArR.d.ts +759 -0
- package/dist/PipelineBoard.markdown-DIcvrS-2.d.cts +16 -0
- package/dist/PipelineBoard.markdown-DIcvrS-2.d.ts +16 -0
- package/dist/{StatusBadge.schema-1tOjB4Ir.d.cts → StatusBadge.schema-BEjSH2_4.d.cts} +2 -2
- package/dist/{StatusBadge.schema-1tOjB4Ir.d.ts → StatusBadge.schema-BEjSH2_4.d.ts} +2 -2
- package/dist/{Tabs.schema-BzcEyeq8.d.cts → Tabs.schema-Dqr6vwV3.d.cts} +2 -2
- package/dist/{Tabs.schema-BzcEyeq8.d.ts → Tabs.schema-Dqr6vwV3.d.ts} +2 -2
- package/dist/Timeline-Coo_3tA_.d.cts +114 -0
- package/dist/Timeline-Coo_3tA_.d.ts +114 -0
- package/dist/Timeline.markdown-C6UPDv1H.d.cts +4 -0
- package/dist/Timeline.markdown-C6UPDv1H.d.ts +4 -0
- package/dist/TransactionPreview-BzWDn8kE.d.cts +391 -0
- package/dist/TransactionPreview-BzWDn8kE.d.ts +391 -0
- package/dist/TransactionPreview.markdown-Dpb0VYgN.d.cts +7 -0
- package/dist/TransactionPreview.markdown-Dpb0VYgN.d.ts +7 -0
- package/dist/artifacts.cjs +186 -2
- package/dist/artifacts.cjs.map +1 -1
- package/dist/artifacts.js +186 -2
- package/dist/artifacts.js.map +1 -1
- package/dist/confirmation.cjs +724 -2
- package/dist/confirmation.cjs.map +1 -1
- package/dist/confirmation.d.cts +2 -1
- package/dist/confirmation.d.ts +2 -1
- package/dist/confirmation.js +722 -4
- package/dist/confirmation.js.map +1 -1
- package/dist/display.cjs +1551 -203
- package/dist/display.cjs.map +1 -1
- package/dist/display.d.cts +6 -229
- package/dist/display.d.ts +6 -229
- package/dist/display.js +1535 -206
- package/dist/display.js.map +1 -1
- package/dist/forms.cjs +139 -46
- package/dist/forms.cjs.map +1 -1
- package/dist/forms.d.cts +2 -2
- package/dist/forms.d.ts +2 -2
- package/dist/forms.js +139 -46
- package/dist/forms.js.map +1 -1
- package/dist/host.cjs +822 -0
- package/dist/host.cjs.map +1 -0
- package/dist/host.d.cts +287 -0
- package/dist/host.d.ts +287 -0
- package/dist/host.js +794 -0
- package/dist/host.js.map +1 -0
- package/dist/{index-CwXVgtGb.d.cts → index-BadRcCbm.d.cts} +28 -11
- package/dist/{index-CwXVgtGb.d.ts → index-BadRcCbm.d.ts} +28 -11
- package/dist/index.cjs +2198 -247
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -8
- package/dist/index.d.ts +42 -8
- package/dist/index.js +2163 -251
- package/dist/index.js.map +1 -1
- package/dist/input.d.cts +2 -2
- package/dist/input.d.ts +2 -2
- package/dist/media.cjs +186 -2
- package/dist/media.cjs.map +1 -1
- package/dist/media.d.cts +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.js +186 -2
- package/dist/media.js.map +1 -1
- package/dist/preact/artifacts.js +186 -2
- package/dist/preact/artifacts.js.map +1 -1
- package/dist/preact/confirmation.d.ts +321 -1
- package/dist/preact/confirmation.js +625 -4
- package/dist/preact/confirmation.js.map +1 -1
- package/dist/preact/display.d.ts +544 -47
- package/dist/preact/display.js +1190 -126
- package/dist/preact/display.js.map +1 -1
- package/dist/preact/forms.d.ts +32 -15
- package/dist/preact/forms.js +139 -46
- package/dist/preact/forms.js.map +1 -1
- package/dist/preact/host.d.ts +307 -0
- package/dist/preact/host.js +875 -0
- package/dist/preact/host.js.map +1 -0
- package/dist/preact/media.d.ts +37 -1
- package/dist/preact/media.js +423 -0
- package/dist/preact/media.js.map +1 -1
- package/dist/preact/progress.d.ts +92 -1
- package/dist/preact/progress.js +465 -3
- package/dist/preact/progress.js.map +1 -1
- package/dist/progress.cjs +521 -2
- package/dist/progress.cjs.map +1 -1
- package/dist/progress.d.cts +2 -1
- package/dist/progress.d.ts +2 -1
- package/dist/progress.js +518 -3
- package/dist/progress.js.map +1 -1
- package/dist/react/artifacts.cjs +186 -2
- package/dist/react/artifacts.cjs.map +1 -1
- package/dist/react/artifacts.js +186 -2
- package/dist/react/artifacts.js.map +1 -1
- package/dist/react/confirmation.cjs +626 -2
- package/dist/react/confirmation.cjs.map +1 -1
- package/dist/react/confirmation.d.cts +3 -3
- package/dist/react/confirmation.d.ts +3 -3
- package/dist/react/confirmation.js +625 -4
- package/dist/react/confirmation.js.map +1 -1
- package/dist/react/display.cjs +1076 -123
- package/dist/react/display.cjs.map +1 -1
- package/dist/react/display.d.cts +13 -27
- package/dist/react/display.d.ts +13 -27
- package/dist/react/display.js +1064 -126
- package/dist/react/display.js.map +1 -1
- package/dist/react/forms.cjs +139 -46
- package/dist/react/forms.cjs.map +1 -1
- package/dist/react/forms.d.cts +1 -1
- package/dist/react/forms.d.ts +1 -1
- package/dist/react/forms.js +139 -46
- package/dist/react/forms.js.map +1 -1
- package/dist/react/host.cjs +910 -0
- package/dist/react/host.cjs.map +1 -0
- package/dist/react/host.d.cts +24 -0
- package/dist/react/host.d.ts +24 -0
- package/dist/react/host.js +875 -0
- package/dist/react/host.js.map +1 -0
- package/dist/react/input.d.cts +1 -1
- package/dist/react/input.d.ts +1 -1
- package/dist/react/media.cjs +426 -0
- package/dist/react/media.cjs.map +1 -1
- package/dist/react/media.d.cts +19 -1
- package/dist/react/media.d.ts +19 -1
- package/dist/react/media.js +423 -0
- package/dist/react/media.js.map +1 -1
- package/dist/react/progress.cjs +467 -2
- package/dist/react/progress.cjs.map +1 -1
- package/dist/react/progress.d.cts +1 -1
- package/dist/react/progress.d.ts +1 -1
- package/dist/react/progress.js +465 -3
- package/dist/react/progress.js.map +1 -1
- package/dist/server/resource.cjs +151 -0
- package/dist/server/resource.cjs.map +1 -0
- package/dist/server/resource.d.cts +90 -0
- package/dist/server/resource.d.ts +90 -0
- package/dist/server/resource.js +147 -0
- package/dist/server/resource.js.map +1 -0
- package/dist/server.cjs +1100 -25
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +84 -5
- package/dist/server.d.ts +84 -5
- package/dist/server.js +1087 -27
- package/dist/server.js.map +1 -1
- package/package.json +250 -233
- package/registry.yaml +44 -2
- package/dist/Alert.schema-LPJE5gFP.d.cts +0 -71
- package/dist/Alert.schema-LPJE5gFP.d.ts +0 -71
- package/dist/ProgressBar.schema-CdVYx0Wq.d.cts +0 -22
- package/dist/ProgressBar.schema-CdVYx0Wq.d.ts +0 -22
- package/dist/{ConfirmDialog-B3CQQGmJ.d.cts → ConfirmDialog-BCtOcmHe.d.cts} +1 -1
- package/dist/{ConfirmDialog-B3CQQGmJ.d.ts → ConfirmDialog-BCtOcmHe.d.ts} +1 -1
package/dist/react/media.cjs
CHANGED
|
@@ -1,4 +1,430 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var zod = require('zod');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
// src/components/media/StatusBadge.schema.ts
|
|
7
|
+
var StatusBadgePropsSchema = zod.z.object({
|
|
8
|
+
status: zod.z.string(),
|
|
9
|
+
variant: zod.z.enum(["success", "warning", "danger", "info", "neutral"]).default("neutral"),
|
|
10
|
+
label: zod.z.string().optional(),
|
|
11
|
+
locale: zod.z.enum(["en", "fr"])
|
|
12
|
+
});
|
|
13
|
+
function validateProps(raw) {
|
|
14
|
+
return StatusBadgePropsSchema.parse(raw);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/i18n/strings.ts
|
|
18
|
+
var EN = {
|
|
19
|
+
// ─── Non-forms components ──────────────────────────────────────────────────
|
|
20
|
+
"ProgressBar.aria.label": "Progress",
|
|
21
|
+
"ProgressBar.error.invalidProps": "ProgressBar: invalid props",
|
|
22
|
+
"ConfirmDialog.button.confirm": "Confirm",
|
|
23
|
+
"ConfirmDialog.button.cancel": "Cancel",
|
|
24
|
+
"ConfirmDialog.aria.dialog": "Confirmation dialog",
|
|
25
|
+
"TableView.aria.table": "Data table",
|
|
26
|
+
"TableView.pagination.next": "Next page",
|
|
27
|
+
"TableView.pagination.prev": "Previous page",
|
|
28
|
+
"TableView.empty.message": "No data to display",
|
|
29
|
+
"TableView.error.invalidProps": "TableView: invalid props",
|
|
30
|
+
"MarkdownRenderer.aria.content": "Rendered Markdown content",
|
|
31
|
+
"MarkdownRenderer.error.invalidProps": "MarkdownRenderer: invalid props",
|
|
32
|
+
"MarkdownRenderer.error.tooLong": "Content exceeds maximum length",
|
|
33
|
+
"TokenDisplayOnceModal.button.copy": "Copy token",
|
|
34
|
+
"TokenDisplayOnceModal.button.close": "Close",
|
|
35
|
+
"TokenDisplayOnceModal.warning.once": "This token will only be shown once. Copy it now.",
|
|
36
|
+
"TokenDisplayOnceModal.copied": "Copied",
|
|
37
|
+
"StatusBadge.aria.status": "Status",
|
|
38
|
+
"StatusBadge.error.invalidProps": "StatusBadge: invalid props",
|
|
39
|
+
"Badge.aria.label": "Badge",
|
|
40
|
+
"Badge.error.invalidProps": "Badge: invalid props",
|
|
41
|
+
"EmptyState.error.invalidProps": "EmptyState: invalid props",
|
|
42
|
+
"Toast.aria.close": "Close notification",
|
|
43
|
+
"Toast.error.invalidProps": "Toast: invalid props",
|
|
44
|
+
"Alert.aria.dismiss": "Dismiss alert",
|
|
45
|
+
"Alert.error.invalidProps": "Alert: invalid props",
|
|
46
|
+
"VirtualList.empty.message": "No items to display",
|
|
47
|
+
"VirtualList.error.invalidProps": "VirtualList: invalid props",
|
|
48
|
+
"Skeleton.aria.label": "Loading",
|
|
49
|
+
"Skeleton.error.invalidProps": "Skeleton: invalid props",
|
|
50
|
+
// ─── Forms — useMosaicForm ─────────────────────────────────────────────────
|
|
51
|
+
"useMosaicForm.error.invalidProps": "useMosaicForm: invalid options",
|
|
52
|
+
// ─── Forms — FormProvider ──────────────────────────────────────────────────
|
|
53
|
+
"FormProvider.error.invalidProps": "FormProvider: invalid props",
|
|
54
|
+
// ─── Forms — FormField ────────────────────────────────────────────────────
|
|
55
|
+
"FormField.error.invalidProps": "FormField: invalid props",
|
|
56
|
+
// ─── Forms — ErrorDisplay ─────────────────────────────────────────────────
|
|
57
|
+
"ErrorDisplay.error.required": "This field is required",
|
|
58
|
+
"ErrorDisplay.error.min": "Value is below the minimum",
|
|
59
|
+
"ErrorDisplay.error.max": "Value exceeds the maximum",
|
|
60
|
+
"ErrorDisplay.error.minLength": "Input is too short",
|
|
61
|
+
"ErrorDisplay.error.maxLength": "Input is too long",
|
|
62
|
+
"ErrorDisplay.error.pattern": "Invalid format",
|
|
63
|
+
"ErrorDisplay.error.email": "Enter a valid email address",
|
|
64
|
+
"ErrorDisplay.error.url": "Enter a valid URL",
|
|
65
|
+
"ErrorDisplay.error.generic": "Invalid value",
|
|
66
|
+
// ─── Forms — SubmitButton ─────────────────────────────────────────────────
|
|
67
|
+
"SubmitButton.aria.submit": "Submit form",
|
|
68
|
+
"SubmitButton.state.loading": "Submitting\u2026",
|
|
69
|
+
"SubmitButton.error.invalidProps": "SubmitButton: invalid props",
|
|
70
|
+
// ─── Forms — Input ────────────────────────────────────────────────────────
|
|
71
|
+
"Input.aria.label": "Input field",
|
|
72
|
+
"Input.error.required": "This field is required",
|
|
73
|
+
"Input.error.invalid": "Invalid value",
|
|
74
|
+
"Input.error.tooLong": "Input is too long",
|
|
75
|
+
"Input.error.tooShort": "Input is too short",
|
|
76
|
+
"Input.error.invalidProps": "Input: invalid props",
|
|
77
|
+
// ─── Forms — Textarea ─────────────────────────────────────────────────────
|
|
78
|
+
"Textarea.aria.label": "Text area",
|
|
79
|
+
"Textarea.error.required": "This field is required",
|
|
80
|
+
"Textarea.error.tooLong": "Text is too long",
|
|
81
|
+
"Textarea.counter.remaining": "characters remaining",
|
|
82
|
+
"Textarea.error.invalidProps": "Textarea: invalid props",
|
|
83
|
+
// ─── Forms — FieldArray ───────────────────────────────────────────────────
|
|
84
|
+
"FieldArray.aria.list": "List of items",
|
|
85
|
+
"FieldArray.aria.addItem": "Add item",
|
|
86
|
+
"FieldArray.aria.removeItem": "Remove item",
|
|
87
|
+
"FieldArray.error.invalidProps": "FieldArray: invalid props",
|
|
88
|
+
// ─── Forms — Checkbox ─────────────────────────────────────────────────────
|
|
89
|
+
"Checkbox.aria.label": "Checkbox",
|
|
90
|
+
"Checkbox.error.required": "This field must be checked",
|
|
91
|
+
"Checkbox.error.invalidProps": "Checkbox: invalid props",
|
|
92
|
+
// ─── Forms — MultiSelect ──────────────────────────────────────────────────
|
|
93
|
+
"MultiSelect.aria.label": "Multi-select field",
|
|
94
|
+
"MultiSelect.aria.removeChip": "Remove",
|
|
95
|
+
"MultiSelect.error.required": "Select at least one option",
|
|
96
|
+
"MultiSelect.error.maxItems": "Maximum number of selections reached",
|
|
97
|
+
"MultiSelect.placeholder": "Select options\u2026",
|
|
98
|
+
"MultiSelect.search.placeholder": "Search\u2026",
|
|
99
|
+
"MultiSelect.empty": "No options available",
|
|
100
|
+
"MultiSelect.error.invalidProps": "MultiSelect: invalid props",
|
|
101
|
+
// ─── Forms — RadioGroup ───────────────────────────────────────────────────
|
|
102
|
+
"RadioGroup.aria.label": "Radio group",
|
|
103
|
+
"RadioGroup.error.required": "Select one option",
|
|
104
|
+
"RadioGroup.error.invalidProps": "RadioGroup: invalid props",
|
|
105
|
+
// ─── Forms — Select ───────────────────────────────────────────────────────
|
|
106
|
+
"Select.placeholder": "Select an option\u2026",
|
|
107
|
+
"Select.search.placeholder": "Search\u2026",
|
|
108
|
+
"Select.empty": "No options available",
|
|
109
|
+
"Select.error.required": "Select an option",
|
|
110
|
+
"Select.error.invalidProps": "Select: invalid props",
|
|
111
|
+
"ModelContext.selection.one": "1 row selected",
|
|
112
|
+
"ModelContext.selection.many": "{n} rows selected",
|
|
113
|
+
"ModelContext.selection.none": "No rows selected",
|
|
114
|
+
"TableView.sort.by": "Sort by",
|
|
115
|
+
"TableView.select.row": "Select row",
|
|
116
|
+
"TableView.select.all": "Select all rows",
|
|
117
|
+
"TableView.loading": "Loading table",
|
|
118
|
+
"StatCard.title": "Statistic",
|
|
119
|
+
"StatCard.trend.up": "Up",
|
|
120
|
+
"StatCard.trend.down": "Down",
|
|
121
|
+
"StatCard.trend.flat": "Flat",
|
|
122
|
+
"StatCard.empty.message": "No statistic to display",
|
|
123
|
+
"StatCard.loading": "Loading statistic",
|
|
124
|
+
"StatCard.error.invalidProps": "StatCard: invalid props",
|
|
125
|
+
"BalanceCard.title": "Balance",
|
|
126
|
+
"BalanceCard.network": "Network",
|
|
127
|
+
"BalanceCard.testnet": "Testnet",
|
|
128
|
+
"BalanceCard.address": "Address",
|
|
129
|
+
"BalanceCard.contract": "Token contract",
|
|
130
|
+
"BalanceCard.value": "Value",
|
|
131
|
+
"BalanceCard.copy": "Copy address",
|
|
132
|
+
"BalanceCard.copied": "Address copied",
|
|
133
|
+
"BalanceCard.empty.message": "No balance to display",
|
|
134
|
+
"BalanceCard.loading": "Loading balance",
|
|
135
|
+
"BalanceCard.error.invalidProps": "BalanceCard: invalid props",
|
|
136
|
+
"Timeline.title": "Timeline",
|
|
137
|
+
"Timeline.status.done": "Done",
|
|
138
|
+
"Timeline.status.current": "In progress",
|
|
139
|
+
"Timeline.status.pending": "Pending",
|
|
140
|
+
"Timeline.status.blocked": "Blocked",
|
|
141
|
+
"Timeline.completed": "{n} completed",
|
|
142
|
+
"Timeline.more": "{n} more",
|
|
143
|
+
"Timeline.empty.message": "No steps to display",
|
|
144
|
+
"Timeline.loading": "Loading timeline",
|
|
145
|
+
"Timeline.error.invalidProps": "Timeline: invalid props",
|
|
146
|
+
"MessageFeed.title": "Messages",
|
|
147
|
+
"MessageFeed.unread": "Unread",
|
|
148
|
+
"MessageFeed.attachment": "Attachment",
|
|
149
|
+
"MessageFeed.showing": "Showing the latest {n} of {total}",
|
|
150
|
+
"MessageFeed.empty.message": "No messages",
|
|
151
|
+
"MessageFeed.loading": "Loading messages",
|
|
152
|
+
"MessageFeed.error.invalidProps": "MessageFeed: invalid props",
|
|
153
|
+
"PipelineBoard.title": "Pipeline",
|
|
154
|
+
"PipelineBoard.deals.one": "1 deal",
|
|
155
|
+
"PipelineBoard.deals.many": "{n} deals",
|
|
156
|
+
"PipelineBoard.total": "Total",
|
|
157
|
+
"PipelineBoard.stage.empty": "No deals",
|
|
158
|
+
"PipelineBoard.filter.label": "Show stages",
|
|
159
|
+
"PipelineBoard.summary.open": "Open full board",
|
|
160
|
+
"PipelineBoard.more": "{n} more stages",
|
|
161
|
+
"PipelineBoard.empty.message": "No pipeline to display",
|
|
162
|
+
"PipelineBoard.loading": "Loading pipeline",
|
|
163
|
+
"PipelineBoard.error.invalidProps": "PipelineBoard: invalid props",
|
|
164
|
+
"PipelineBoard.col.stage": "Stage",
|
|
165
|
+
"PipelineBoard.col.deals": "Deals",
|
|
166
|
+
"TransactionPreview.title": "Transaction preview",
|
|
167
|
+
"TransactionPreview.notice": "NOT SIGNED - preparation only",
|
|
168
|
+
"TransactionPreview.kind.transfer": "Transfer",
|
|
169
|
+
"TransactionPreview.kind.swap": "Swap",
|
|
170
|
+
"TransactionPreview.testnet": "Testnet",
|
|
171
|
+
"TransactionPreview.field.network": "Network",
|
|
172
|
+
"TransactionPreview.field.from": "From",
|
|
173
|
+
"TransactionPreview.field.to": "To",
|
|
174
|
+
"TransactionPreview.field.amount": "Amount",
|
|
175
|
+
"TransactionPreview.field.fee": "Network fee",
|
|
176
|
+
"TransactionPreview.field.sell": "Sell",
|
|
177
|
+
"TransactionPreview.field.buy": "Buy",
|
|
178
|
+
"TransactionPreview.field.minReceived": "Minimum received",
|
|
179
|
+
"TransactionPreview.field.route": "Route",
|
|
180
|
+
"TransactionPreview.field.priceImpact": "Price impact",
|
|
181
|
+
"TransactionPreview.field.expires": "Quote expires",
|
|
182
|
+
"TransactionPreview.priceImpact.high": "High price impact",
|
|
183
|
+
"TransactionPreview.simulation.success": "Simulation succeeded",
|
|
184
|
+
"TransactionPreview.simulation.failed": "Simulation failed",
|
|
185
|
+
"TransactionPreview.simulation.unavailable": "Simulation unavailable",
|
|
186
|
+
"TransactionPreview.warnings": "Warnings",
|
|
187
|
+
"TransactionPreview.handoff": "Open in wallet",
|
|
188
|
+
"TransactionPreview.empty.message": "No transaction to preview",
|
|
189
|
+
"TransactionPreview.loading": "Loading preview",
|
|
190
|
+
"TransactionPreview.error.invalidProps": "TransactionPreview: invalid props",
|
|
191
|
+
"ProgressBar.title": "Progress",
|
|
192
|
+
"ConfirmDialog.title": "Confirmation",
|
|
193
|
+
"ConfirmDialog.options": "Answers",
|
|
194
|
+
"TableView.title": "Data table",
|
|
195
|
+
"TableView.markdown.more": "{n} more rows",
|
|
196
|
+
"MarkdownRenderer.title": "Markdown content",
|
|
197
|
+
"TokenDisplayOnceModal.title": "Token (shown once)",
|
|
198
|
+
"StatusBadge.title": "Status",
|
|
199
|
+
"TokenDisplayOnceModal.notice.once": "The value is shown once, in the app view only.",
|
|
200
|
+
"TokenDisplayOnceModal.field.scope": "Scope",
|
|
201
|
+
"TokenDisplayOnceModal.field.expires": "Expires",
|
|
202
|
+
"TokenDisplayOnceModal.field.fingerprint": "Fingerprint"
|
|
203
|
+
};
|
|
204
|
+
var FR = {
|
|
205
|
+
// ─── Non-forms components ──────────────────────────────────────────────────
|
|
206
|
+
"ProgressBar.aria.label": "Progression",
|
|
207
|
+
"ProgressBar.error.invalidProps": "ProgressBar : propri\xE9t\xE9s invalides",
|
|
208
|
+
"ConfirmDialog.button.confirm": "Confirmer",
|
|
209
|
+
"ConfirmDialog.button.cancel": "Annuler",
|
|
210
|
+
"ConfirmDialog.aria.dialog": "Bo\xEEte de dialogue de confirmation",
|
|
211
|
+
"TableView.aria.table": "Tableau de donn\xE9es",
|
|
212
|
+
"TableView.pagination.next": "Page suivante",
|
|
213
|
+
"TableView.pagination.prev": "Page pr\xE9c\xE9dente",
|
|
214
|
+
"TableView.empty.message": "Aucune donn\xE9e \xE0 afficher",
|
|
215
|
+
"TableView.error.invalidProps": "TableView : propri\xE9t\xE9s invalides",
|
|
216
|
+
"MarkdownRenderer.aria.content": "Contenu Markdown rendu",
|
|
217
|
+
"MarkdownRenderer.error.invalidProps": "MarkdownRenderer : propri\xE9t\xE9s invalides",
|
|
218
|
+
"MarkdownRenderer.error.tooLong": "Le contenu d\xE9passe la longueur maximale",
|
|
219
|
+
"TokenDisplayOnceModal.button.copy": "Copier le jeton",
|
|
220
|
+
"TokenDisplayOnceModal.button.close": "Fermer",
|
|
221
|
+
"TokenDisplayOnceModal.warning.once": "Ce jeton ne sera affich\xE9 qu'une seule fois. Copiez-le maintenant.",
|
|
222
|
+
"TokenDisplayOnceModal.copied": "Copi\xE9",
|
|
223
|
+
"StatusBadge.aria.status": "Statut",
|
|
224
|
+
"StatusBadge.error.invalidProps": "StatusBadge : propri\xE9t\xE9s invalides",
|
|
225
|
+
"Badge.aria.label": "Badge",
|
|
226
|
+
"Badge.error.invalidProps": "Badge : propri\xE9t\xE9s invalides",
|
|
227
|
+
"EmptyState.error.invalidProps": "EmptyState : propri\xE9t\xE9s invalides",
|
|
228
|
+
"Toast.aria.close": "Fermer la notification",
|
|
229
|
+
"Toast.error.invalidProps": "Toast : propri\xE9t\xE9s invalides",
|
|
230
|
+
"Alert.aria.dismiss": "Fermer l'alerte",
|
|
231
|
+
"Alert.error.invalidProps": "Alert : propri\xE9t\xE9s invalides",
|
|
232
|
+
"VirtualList.empty.message": "Aucun \xE9l\xE9ment \xE0 afficher",
|
|
233
|
+
"VirtualList.error.invalidProps": "VirtualList : propri\xE9t\xE9s invalides",
|
|
234
|
+
"Skeleton.aria.label": "Chargement",
|
|
235
|
+
"Skeleton.error.invalidProps": "Skeleton : propri\xE9t\xE9s invalides",
|
|
236
|
+
// ─── Forms — useMosaicForm ─────────────────────────────────────────────────
|
|
237
|
+
"useMosaicForm.error.invalidProps": "useMosaicForm : options invalides",
|
|
238
|
+
// ─── Forms — FormProvider ──────────────────────────────────────────────────
|
|
239
|
+
"FormProvider.error.invalidProps": "FormProvider : propri\xE9t\xE9s invalides",
|
|
240
|
+
// ─── Forms — FormField ────────────────────────────────────────────────────
|
|
241
|
+
"FormField.error.invalidProps": "FormField : propri\xE9t\xE9s invalides",
|
|
242
|
+
// ─── Forms — ErrorDisplay ─────────────────────────────────────────────────
|
|
243
|
+
"ErrorDisplay.error.required": "Ce champ est obligatoire",
|
|
244
|
+
"ErrorDisplay.error.min": "La valeur est inf\xE9rieure au minimum",
|
|
245
|
+
"ErrorDisplay.error.max": "La valeur d\xE9passe le maximum",
|
|
246
|
+
"ErrorDisplay.error.minLength": "La saisie est trop courte",
|
|
247
|
+
"ErrorDisplay.error.maxLength": "La saisie est trop longue",
|
|
248
|
+
"ErrorDisplay.error.pattern": "Format invalide",
|
|
249
|
+
"ErrorDisplay.error.email": "Saisissez une adresse e-mail valide",
|
|
250
|
+
"ErrorDisplay.error.url": "Saisissez une URL valide",
|
|
251
|
+
"ErrorDisplay.error.generic": "Valeur invalide",
|
|
252
|
+
// ─── Forms — SubmitButton ─────────────────────────────────────────────────
|
|
253
|
+
"SubmitButton.aria.submit": "Soumettre le formulaire",
|
|
254
|
+
"SubmitButton.state.loading": "Envoi en cours\u2026",
|
|
255
|
+
"SubmitButton.error.invalidProps": "SubmitButton : propri\xE9t\xE9s invalides",
|
|
256
|
+
// ─── Forms — Input ────────────────────────────────────────────────────────
|
|
257
|
+
"Input.aria.label": "Champ de saisie",
|
|
258
|
+
"Input.error.required": "Ce champ est obligatoire",
|
|
259
|
+
"Input.error.invalid": "Valeur invalide",
|
|
260
|
+
"Input.error.tooLong": "La saisie est trop longue",
|
|
261
|
+
"Input.error.tooShort": "La saisie est trop courte",
|
|
262
|
+
"Input.error.invalidProps": "Input : propri\xE9t\xE9s invalides",
|
|
263
|
+
// ─── Forms — Textarea ─────────────────────────────────────────────────────
|
|
264
|
+
"Textarea.aria.label": "Zone de texte",
|
|
265
|
+
"Textarea.error.required": "Ce champ est obligatoire",
|
|
266
|
+
"Textarea.error.tooLong": "Le texte est trop long",
|
|
267
|
+
"Textarea.counter.remaining": "caract\xE8res restants",
|
|
268
|
+
"Textarea.error.invalidProps": "Textarea : propri\xE9t\xE9s invalides",
|
|
269
|
+
// ─── Forms — FieldArray ───────────────────────────────────────────────────
|
|
270
|
+
"FieldArray.aria.list": "Liste d'\xE9l\xE9ments",
|
|
271
|
+
"FieldArray.aria.addItem": "Ajouter un \xE9l\xE9ment",
|
|
272
|
+
"FieldArray.aria.removeItem": "Supprimer l'\xE9l\xE9ment",
|
|
273
|
+
"FieldArray.error.invalidProps": "FieldArray : propri\xE9t\xE9s invalides",
|
|
274
|
+
// ─── Forms — Checkbox ─────────────────────────────────────────────────────
|
|
275
|
+
"Checkbox.aria.label": "Case \xE0 cocher",
|
|
276
|
+
"Checkbox.error.required": "Ce champ doit \xEAtre coch\xE9",
|
|
277
|
+
"Checkbox.error.invalidProps": "Checkbox : propri\xE9t\xE9s invalides",
|
|
278
|
+
// ─── Forms — MultiSelect ──────────────────────────────────────────────────
|
|
279
|
+
"MultiSelect.aria.label": "Champ de s\xE9lection multiple",
|
|
280
|
+
"MultiSelect.aria.removeChip": "Retirer",
|
|
281
|
+
"MultiSelect.error.required": "S\xE9lectionnez au moins une option",
|
|
282
|
+
"MultiSelect.error.maxItems": "Nombre maximum de s\xE9lections atteint",
|
|
283
|
+
"MultiSelect.placeholder": "S\xE9lectionner des options\u2026",
|
|
284
|
+
"MultiSelect.search.placeholder": "Rechercher\u2026",
|
|
285
|
+
"MultiSelect.empty": "Aucune option disponible",
|
|
286
|
+
"MultiSelect.error.invalidProps": "MultiSelect : propri\xE9t\xE9s invalides",
|
|
287
|
+
// ─── Forms — RadioGroup ───────────────────────────────────────────────────
|
|
288
|
+
"RadioGroup.aria.label": "Groupe de boutons radio",
|
|
289
|
+
"RadioGroup.error.required": "S\xE9lectionnez une option",
|
|
290
|
+
"RadioGroup.error.invalidProps": "RadioGroup : propri\xE9t\xE9s invalides",
|
|
291
|
+
// ─── Forms — Select ───────────────────────────────────────────────────────
|
|
292
|
+
"Select.placeholder": "S\xE9lectionner une option\u2026",
|
|
293
|
+
"Select.search.placeholder": "Rechercher\u2026",
|
|
294
|
+
"Select.empty": "Aucune option disponible",
|
|
295
|
+
"Select.error.required": "S\xE9lectionnez une option",
|
|
296
|
+
"Select.error.invalidProps": "Select : propri\xE9t\xE9s invalides",
|
|
297
|
+
"ModelContext.selection.one": "1 ligne s\xE9lectionn\xE9e",
|
|
298
|
+
"ModelContext.selection.many": "{n} lignes s\xE9lectionn\xE9es",
|
|
299
|
+
"ModelContext.selection.none": "Aucune ligne s\xE9lectionn\xE9e",
|
|
300
|
+
"TableView.sort.by": "Trier par",
|
|
301
|
+
"TableView.select.row": "S\xE9lectionner la ligne",
|
|
302
|
+
"TableView.select.all": "Tout s\xE9lectionner",
|
|
303
|
+
"TableView.loading": "Chargement du tableau",
|
|
304
|
+
"StatCard.title": "Statistique",
|
|
305
|
+
"StatCard.trend.up": "En hausse",
|
|
306
|
+
"StatCard.trend.down": "En baisse",
|
|
307
|
+
"StatCard.trend.flat": "Stable",
|
|
308
|
+
"StatCard.empty.message": "Aucune statistique \xE0 afficher",
|
|
309
|
+
"StatCard.loading": "Chargement de la statistique",
|
|
310
|
+
"StatCard.error.invalidProps": "StatCard : propri\xE9t\xE9s invalides",
|
|
311
|
+
"BalanceCard.title": "Solde",
|
|
312
|
+
"BalanceCard.network": "R\xE9seau",
|
|
313
|
+
"BalanceCard.testnet": "R\xE9seau de test",
|
|
314
|
+
"BalanceCard.address": "Adresse",
|
|
315
|
+
"BalanceCard.contract": "Contrat du jeton",
|
|
316
|
+
"BalanceCard.value": "Valeur",
|
|
317
|
+
"BalanceCard.copy": "Copier l'adresse",
|
|
318
|
+
"BalanceCard.copied": "Adresse copi\xE9e",
|
|
319
|
+
"BalanceCard.empty.message": "Aucun solde \xE0 afficher",
|
|
320
|
+
"BalanceCard.loading": "Chargement du solde",
|
|
321
|
+
"BalanceCard.error.invalidProps": "BalanceCard : propri\xE9t\xE9s invalides",
|
|
322
|
+
"Timeline.title": "Chronologie",
|
|
323
|
+
"Timeline.status.done": "Termin\xE9",
|
|
324
|
+
"Timeline.status.current": "En cours",
|
|
325
|
+
"Timeline.status.pending": "\xC0 venir",
|
|
326
|
+
"Timeline.status.blocked": "Bloqu\xE9",
|
|
327
|
+
"Timeline.completed": "{n} termin\xE9(s)",
|
|
328
|
+
"Timeline.more": "{n} de plus",
|
|
329
|
+
"Timeline.empty.message": "Aucune \xE9tape \xE0 afficher",
|
|
330
|
+
"Timeline.loading": "Chargement de la chronologie",
|
|
331
|
+
"Timeline.error.invalidProps": "Timeline : propri\xE9t\xE9s invalides",
|
|
332
|
+
"MessageFeed.title": "Messages",
|
|
333
|
+
"MessageFeed.unread": "Non lu",
|
|
334
|
+
"MessageFeed.attachment": "Pi\xE8ce jointe",
|
|
335
|
+
"MessageFeed.showing": "Affichage des {n} derniers sur {total}",
|
|
336
|
+
"MessageFeed.empty.message": "Aucun message",
|
|
337
|
+
"MessageFeed.loading": "Chargement des messages",
|
|
338
|
+
"MessageFeed.error.invalidProps": "MessageFeed : propri\xE9t\xE9s invalides",
|
|
339
|
+
"PipelineBoard.title": "Pipeline",
|
|
340
|
+
"PipelineBoard.deals.one": "1 affaire",
|
|
341
|
+
"PipelineBoard.deals.many": "{n} affaires",
|
|
342
|
+
"PipelineBoard.total": "Total",
|
|
343
|
+
"PipelineBoard.stage.empty": "Aucune affaire",
|
|
344
|
+
"PipelineBoard.filter.label": "Afficher les \xE9tapes",
|
|
345
|
+
"PipelineBoard.summary.open": "Ouvrir le tableau complet",
|
|
346
|
+
"PipelineBoard.more": "{n} \xE9tapes de plus",
|
|
347
|
+
"PipelineBoard.empty.message": "Aucun pipeline \xE0 afficher",
|
|
348
|
+
"PipelineBoard.loading": "Chargement du pipeline",
|
|
349
|
+
"PipelineBoard.error.invalidProps": "PipelineBoard : propri\xE9t\xE9s invalides",
|
|
350
|
+
"PipelineBoard.col.stage": "\xC9tape",
|
|
351
|
+
"PipelineBoard.col.deals": "Affaires",
|
|
352
|
+
"TransactionPreview.title": "Aper\xE7u de transaction",
|
|
353
|
+
"TransactionPreview.notice": "NON SIGN\xC9 - pr\xE9paration uniquement",
|
|
354
|
+
"TransactionPreview.kind.transfer": "Transfert",
|
|
355
|
+
"TransactionPreview.kind.swap": "\xC9change",
|
|
356
|
+
"TransactionPreview.testnet": "R\xE9seau de test",
|
|
357
|
+
"TransactionPreview.field.network": "R\xE9seau",
|
|
358
|
+
"TransactionPreview.field.from": "De",
|
|
359
|
+
"TransactionPreview.field.to": "\xC0",
|
|
360
|
+
"TransactionPreview.field.amount": "Montant",
|
|
361
|
+
"TransactionPreview.field.fee": "Frais de r\xE9seau",
|
|
362
|
+
"TransactionPreview.field.sell": "Vendre",
|
|
363
|
+
"TransactionPreview.field.buy": "Acheter",
|
|
364
|
+
"TransactionPreview.field.minReceived": "Minimum re\xE7u",
|
|
365
|
+
"TransactionPreview.field.route": "Itin\xE9raire",
|
|
366
|
+
"TransactionPreview.field.priceImpact": "Impact sur le prix",
|
|
367
|
+
"TransactionPreview.field.expires": "Expiration du devis",
|
|
368
|
+
"TransactionPreview.priceImpact.high": "Impact sur le prix \xE9lev\xE9",
|
|
369
|
+
"TransactionPreview.simulation.success": "Simulation r\xE9ussie",
|
|
370
|
+
"TransactionPreview.simulation.failed": "Simulation \xE9chou\xE9e",
|
|
371
|
+
"TransactionPreview.simulation.unavailable": "Simulation indisponible",
|
|
372
|
+
"TransactionPreview.warnings": "Avertissements",
|
|
373
|
+
"TransactionPreview.handoff": "Ouvrir dans le portefeuille",
|
|
374
|
+
"TransactionPreview.empty.message": "Aucune transaction \xE0 pr\xE9visualiser",
|
|
375
|
+
"TransactionPreview.loading": "Chargement de l'aper\xE7u",
|
|
376
|
+
"TransactionPreview.error.invalidProps": "TransactionPreview : propri\xE9t\xE9s invalides",
|
|
377
|
+
"ProgressBar.title": "Progression",
|
|
378
|
+
"ConfirmDialog.title": "Confirmation",
|
|
379
|
+
"ConfirmDialog.options": "R\xE9ponses",
|
|
380
|
+
"TableView.title": "Tableau de donn\xE9es",
|
|
381
|
+
"TableView.markdown.more": "{n} lignes de plus",
|
|
382
|
+
"MarkdownRenderer.title": "Contenu Markdown",
|
|
383
|
+
"TokenDisplayOnceModal.title": "Jeton (affich\xE9 une fois)",
|
|
384
|
+
"StatusBadge.title": "Statut",
|
|
385
|
+
"TokenDisplayOnceModal.notice.once": "La valeur n'est affich\xE9e qu'une fois, dans la vue de l'application uniquement.",
|
|
386
|
+
"TokenDisplayOnceModal.field.scope": "Port\xE9e",
|
|
387
|
+
"TokenDisplayOnceModal.field.expires": "Expire le",
|
|
388
|
+
"TokenDisplayOnceModal.field.fingerprint": "Empreinte"
|
|
389
|
+
};
|
|
390
|
+
var TABLE = {
|
|
391
|
+
en: EN,
|
|
392
|
+
fr: FR
|
|
393
|
+
};
|
|
394
|
+
function t(key, locale = "en") {
|
|
395
|
+
return TABLE[locale]?.[key] ?? TABLE.en[key];
|
|
396
|
+
}
|
|
397
|
+
var variantClasses = {
|
|
398
|
+
success: "bg-green-100 text-green-800 ring-1 ring-green-300",
|
|
399
|
+
warning: "bg-amber-100 text-amber-800 ring-1 ring-amber-300",
|
|
400
|
+
danger: "bg-red-100 text-red-800 ring-1 ring-red-300",
|
|
401
|
+
info: "bg-blue-100 text-blue-800 ring-1 ring-blue-300",
|
|
402
|
+
neutral: "bg-slate-100 text-slate-800 ring-1 ring-slate-300"
|
|
403
|
+
};
|
|
404
|
+
function StatusBadgeInner({ status, variant, label, locale }) {
|
|
405
|
+
const ariaLabel = label ?? status;
|
|
406
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
407
|
+
"output",
|
|
408
|
+
{
|
|
409
|
+
"aria-label": ariaLabel,
|
|
410
|
+
lang: locale,
|
|
411
|
+
className: `inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${variantClasses[variant]}`,
|
|
412
|
+
children: label ?? status
|
|
413
|
+
}
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
function StatusBadge(raw) {
|
|
417
|
+
try {
|
|
418
|
+
const props = validateProps(raw);
|
|
419
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StatusBadgeInner, { ...props });
|
|
420
|
+
} catch {
|
|
421
|
+
const locale = raw.locale === "fr" ? "fr" : "en";
|
|
422
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { role: "alert", children: t("StatusBadge.error.invalidProps", locale) });
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
exports.StatusBadge = StatusBadge;
|
|
427
|
+
exports.StatusBadgePropsSchema = StatusBadgePropsSchema;
|
|
428
|
+
exports.validateStatusBadgeProps = validateProps;
|
|
3
429
|
//# sourceMappingURL=media.cjs.map
|
|
4
430
|
//# sourceMappingURL=media.cjs.map
|
package/dist/react/media.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"media.cjs"}
|
|
1
|
+
{"version":3,"sources":["../../src/components/media/StatusBadge.schema.ts","../../src/i18n/strings.ts","../../src/runtimes/react/components/display/StatusBadge.tsx"],"names":["z","jsx"],"mappings":"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","file":"media.cjs","sourcesContent":["import { z } from \"zod\";\n\nexport const StatusBadgePropsSchema = z.object({\n status: z.string(),\n variant: z.enum([\"success\", \"warning\", \"danger\", \"info\", \"neutral\"]).default(\"neutral\"),\n label: z.string().optional(),\n locale: z.enum([\"en\", \"fr\"]),\n});\n\nexport type StatusBadgeProps = z.infer<typeof StatusBadgePropsSchema>;\n\nexport function validateProps(raw: unknown): StatusBadgeProps {\n return StatusBadgePropsSchema.parse(raw);\n}\n","/**\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 \"ModelContext.selection.one\": \"1 row selected\",\n \"ModelContext.selection.many\": \"{n} rows selected\",\n \"ModelContext.selection.none\": \"No rows selected\",\n \"TableView.sort.by\": \"Sort by\",\n \"TableView.select.row\": \"Select row\",\n \"TableView.select.all\": \"Select all rows\",\n \"TableView.loading\": \"Loading table\",\n \"StatCard.title\": \"Statistic\",\n \"StatCard.trend.up\": \"Up\",\n \"StatCard.trend.down\": \"Down\",\n \"StatCard.trend.flat\": \"Flat\",\n \"StatCard.empty.message\": \"No statistic to display\",\n \"StatCard.loading\": \"Loading statistic\",\n \"StatCard.error.invalidProps\": \"StatCard: invalid props\",\n \"BalanceCard.title\": \"Balance\",\n \"BalanceCard.network\": \"Network\",\n \"BalanceCard.testnet\": \"Testnet\",\n \"BalanceCard.address\": \"Address\",\n \"BalanceCard.contract\": \"Token contract\",\n \"BalanceCard.value\": \"Value\",\n \"BalanceCard.copy\": \"Copy address\",\n \"BalanceCard.copied\": \"Address copied\",\n \"BalanceCard.empty.message\": \"No balance to display\",\n \"BalanceCard.loading\": \"Loading balance\",\n \"BalanceCard.error.invalidProps\": \"BalanceCard: invalid props\",\n \"Timeline.title\": \"Timeline\",\n \"Timeline.status.done\": \"Done\",\n \"Timeline.status.current\": \"In progress\",\n \"Timeline.status.pending\": \"Pending\",\n \"Timeline.status.blocked\": \"Blocked\",\n \"Timeline.completed\": \"{n} completed\",\n \"Timeline.more\": \"{n} more\",\n \"Timeline.empty.message\": \"No steps to display\",\n \"Timeline.loading\": \"Loading timeline\",\n \"Timeline.error.invalidProps\": \"Timeline: invalid props\",\n \"MessageFeed.title\": \"Messages\",\n \"MessageFeed.unread\": \"Unread\",\n \"MessageFeed.attachment\": \"Attachment\",\n \"MessageFeed.showing\": \"Showing the latest {n} of {total}\",\n \"MessageFeed.empty.message\": \"No messages\",\n \"MessageFeed.loading\": \"Loading messages\",\n \"MessageFeed.error.invalidProps\": \"MessageFeed: invalid props\",\n \"PipelineBoard.title\": \"Pipeline\",\n \"PipelineBoard.deals.one\": \"1 deal\",\n \"PipelineBoard.deals.many\": \"{n} deals\",\n \"PipelineBoard.total\": \"Total\",\n \"PipelineBoard.stage.empty\": \"No deals\",\n \"PipelineBoard.filter.label\": \"Show stages\",\n \"PipelineBoard.summary.open\": \"Open full board\",\n \"PipelineBoard.more\": \"{n} more stages\",\n \"PipelineBoard.empty.message\": \"No pipeline to display\",\n \"PipelineBoard.loading\": \"Loading pipeline\",\n \"PipelineBoard.error.invalidProps\": \"PipelineBoard: invalid props\",\n \"PipelineBoard.col.stage\": \"Stage\",\n \"PipelineBoard.col.deals\": \"Deals\",\n \"TransactionPreview.title\": \"Transaction preview\",\n \"TransactionPreview.notice\": \"NOT SIGNED - preparation only\",\n \"TransactionPreview.kind.transfer\": \"Transfer\",\n \"TransactionPreview.kind.swap\": \"Swap\",\n \"TransactionPreview.testnet\": \"Testnet\",\n \"TransactionPreview.field.network\": \"Network\",\n \"TransactionPreview.field.from\": \"From\",\n \"TransactionPreview.field.to\": \"To\",\n \"TransactionPreview.field.amount\": \"Amount\",\n \"TransactionPreview.field.fee\": \"Network fee\",\n \"TransactionPreview.field.sell\": \"Sell\",\n \"TransactionPreview.field.buy\": \"Buy\",\n \"TransactionPreview.field.minReceived\": \"Minimum received\",\n \"TransactionPreview.field.route\": \"Route\",\n \"TransactionPreview.field.priceImpact\": \"Price impact\",\n \"TransactionPreview.field.expires\": \"Quote expires\",\n \"TransactionPreview.priceImpact.high\": \"High price impact\",\n \"TransactionPreview.simulation.success\": \"Simulation succeeded\",\n \"TransactionPreview.simulation.failed\": \"Simulation failed\",\n \"TransactionPreview.simulation.unavailable\": \"Simulation unavailable\",\n \"TransactionPreview.warnings\": \"Warnings\",\n \"TransactionPreview.handoff\": \"Open in wallet\",\n \"TransactionPreview.empty.message\": \"No transaction to preview\",\n \"TransactionPreview.loading\": \"Loading preview\",\n \"TransactionPreview.error.invalidProps\": \"TransactionPreview: invalid props\",\n \"ProgressBar.title\": \"Progress\",\n \"ConfirmDialog.title\": \"Confirmation\",\n \"ConfirmDialog.options\": \"Answers\",\n \"TableView.title\": \"Data table\",\n \"TableView.markdown.more\": \"{n} more rows\",\n \"MarkdownRenderer.title\": \"Markdown content\",\n \"TokenDisplayOnceModal.title\": \"Token (shown once)\",\n \"StatusBadge.title\": \"Status\",\n \"TokenDisplayOnceModal.notice.once\": \"The value is shown once, in the app view only.\",\n \"TokenDisplayOnceModal.field.scope\": \"Scope\",\n \"TokenDisplayOnceModal.field.expires\": \"Expires\",\n \"TokenDisplayOnceModal.field.fingerprint\": \"Fingerprint\",\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 \"ModelContext.selection.one\": \"1 ligne sélectionnée\",\n \"ModelContext.selection.many\": \"{n} lignes sélectionnées\",\n \"ModelContext.selection.none\": \"Aucune ligne sélectionnée\",\n \"TableView.sort.by\": \"Trier par\",\n \"TableView.select.row\": \"Sélectionner la ligne\",\n \"TableView.select.all\": \"Tout sélectionner\",\n \"TableView.loading\": \"Chargement du tableau\",\n \"StatCard.title\": \"Statistique\",\n \"StatCard.trend.up\": \"En hausse\",\n \"StatCard.trend.down\": \"En baisse\",\n \"StatCard.trend.flat\": \"Stable\",\n \"StatCard.empty.message\": \"Aucune statistique à afficher\",\n \"StatCard.loading\": \"Chargement de la statistique\",\n \"StatCard.error.invalidProps\": \"StatCard : propriétés invalides\",\n \"BalanceCard.title\": \"Solde\",\n \"BalanceCard.network\": \"Réseau\",\n \"BalanceCard.testnet\": \"Réseau de test\",\n \"BalanceCard.address\": \"Adresse\",\n \"BalanceCard.contract\": \"Contrat du jeton\",\n \"BalanceCard.value\": \"Valeur\",\n \"BalanceCard.copy\": \"Copier l'adresse\",\n \"BalanceCard.copied\": \"Adresse copiée\",\n \"BalanceCard.empty.message\": \"Aucun solde à afficher\",\n \"BalanceCard.loading\": \"Chargement du solde\",\n \"BalanceCard.error.invalidProps\": \"BalanceCard : propriétés invalides\",\n \"Timeline.title\": \"Chronologie\",\n \"Timeline.status.done\": \"Terminé\",\n \"Timeline.status.current\": \"En cours\",\n \"Timeline.status.pending\": \"À venir\",\n \"Timeline.status.blocked\": \"Bloqué\",\n \"Timeline.completed\": \"{n} terminé(s)\",\n \"Timeline.more\": \"{n} de plus\",\n \"Timeline.empty.message\": \"Aucune étape à afficher\",\n \"Timeline.loading\": \"Chargement de la chronologie\",\n \"Timeline.error.invalidProps\": \"Timeline : propriétés invalides\",\n \"MessageFeed.title\": \"Messages\",\n \"MessageFeed.unread\": \"Non lu\",\n \"MessageFeed.attachment\": \"Pièce jointe\",\n \"MessageFeed.showing\": \"Affichage des {n} derniers sur {total}\",\n \"MessageFeed.empty.message\": \"Aucun message\",\n \"MessageFeed.loading\": \"Chargement des messages\",\n \"MessageFeed.error.invalidProps\": \"MessageFeed : propriétés invalides\",\n \"PipelineBoard.title\": \"Pipeline\",\n \"PipelineBoard.deals.one\": \"1 affaire\",\n \"PipelineBoard.deals.many\": \"{n} affaires\",\n \"PipelineBoard.total\": \"Total\",\n \"PipelineBoard.stage.empty\": \"Aucune affaire\",\n \"PipelineBoard.filter.label\": \"Afficher les étapes\",\n \"PipelineBoard.summary.open\": \"Ouvrir le tableau complet\",\n \"PipelineBoard.more\": \"{n} étapes de plus\",\n \"PipelineBoard.empty.message\": \"Aucun pipeline à afficher\",\n \"PipelineBoard.loading\": \"Chargement du pipeline\",\n \"PipelineBoard.error.invalidProps\": \"PipelineBoard : propriétés invalides\",\n \"PipelineBoard.col.stage\": \"Étape\",\n \"PipelineBoard.col.deals\": \"Affaires\",\n \"TransactionPreview.title\": \"Aperçu de transaction\",\n \"TransactionPreview.notice\": \"NON SIGNÉ - préparation uniquement\",\n \"TransactionPreview.kind.transfer\": \"Transfert\",\n \"TransactionPreview.kind.swap\": \"Échange\",\n \"TransactionPreview.testnet\": \"Réseau de test\",\n \"TransactionPreview.field.network\": \"Réseau\",\n \"TransactionPreview.field.from\": \"De\",\n \"TransactionPreview.field.to\": \"À\",\n \"TransactionPreview.field.amount\": \"Montant\",\n \"TransactionPreview.field.fee\": \"Frais de réseau\",\n \"TransactionPreview.field.sell\": \"Vendre\",\n \"TransactionPreview.field.buy\": \"Acheter\",\n \"TransactionPreview.field.minReceived\": \"Minimum reçu\",\n \"TransactionPreview.field.route\": \"Itinéraire\",\n \"TransactionPreview.field.priceImpact\": \"Impact sur le prix\",\n \"TransactionPreview.field.expires\": \"Expiration du devis\",\n \"TransactionPreview.priceImpact.high\": \"Impact sur le prix élevé\",\n \"TransactionPreview.simulation.success\": \"Simulation réussie\",\n \"TransactionPreview.simulation.failed\": \"Simulation échouée\",\n \"TransactionPreview.simulation.unavailable\": \"Simulation indisponible\",\n \"TransactionPreview.warnings\": \"Avertissements\",\n \"TransactionPreview.handoff\": \"Ouvrir dans le portefeuille\",\n \"TransactionPreview.empty.message\": \"Aucune transaction à prévisualiser\",\n \"TransactionPreview.loading\": \"Chargement de l'aperçu\",\n \"TransactionPreview.error.invalidProps\": \"TransactionPreview : propriétés invalides\",\n \"ProgressBar.title\": \"Progression\",\n \"ConfirmDialog.title\": \"Confirmation\",\n \"ConfirmDialog.options\": \"Réponses\",\n \"TableView.title\": \"Tableau de données\",\n \"TableView.markdown.more\": \"{n} lignes de plus\",\n \"MarkdownRenderer.title\": \"Contenu Markdown\",\n \"TokenDisplayOnceModal.title\": \"Jeton (affiché une fois)\",\n \"StatusBadge.title\": \"Statut\",\n \"TokenDisplayOnceModal.notice.once\":\n \"La valeur n'est affichée qu'une fois, dans la vue de l'application uniquement.\",\n \"TokenDisplayOnceModal.field.scope\": \"Portée\",\n \"TokenDisplayOnceModal.field.expires\": \"Expire le\",\n \"TokenDisplayOnceModal.field.fingerprint\": \"Empreinte\",\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","// i18nKeys: StatusBadge.aria.status, StatusBadge.error.invalidProps\n\nimport React from \"react\";\nimport {\n type StatusBadgeProps,\n validateProps,\n} from \"../../../../components/media/StatusBadge.schema.js\";\nimport { type MosaicLocale, t } from \"../../../../i18n/strings.js\";\n\ntype Variant = \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\";\n\nconst variantClasses: Record<Variant, string> = {\n success: \"bg-green-100 text-green-800 ring-1 ring-green-300\",\n warning: \"bg-amber-100 text-amber-800 ring-1 ring-amber-300\",\n danger: \"bg-red-100 text-red-800 ring-1 ring-red-300\",\n info: \"bg-blue-100 text-blue-800 ring-1 ring-blue-300\",\n neutral: \"bg-slate-100 text-slate-800 ring-1 ring-slate-300\",\n};\n\nfunction StatusBadgeInner({ status, variant, label, locale }: StatusBadgeProps) {\n const ariaLabel = label ?? status;\n return (\n <output\n aria-label={ariaLabel}\n lang={locale}\n className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${variantClasses[variant]}`}\n >\n {label ?? status}\n </output>\n );\n}\n\n/**\n * StatusBadge — cross-runtime status indicator badge (React 19 implementation).\n *\n * Accepts `Record<string, unknown>` for MCP postMessage injection safety.\n * Zod validation narrows before render. Invalid props → accessible error span.\n *\n * WCAG-AA:\n * - `<output>` has implicit role=\"status\" per ARIA spec §5.3.17\n * - aria-label from `label` prop (falls back to `status` string)\n * - `lang` attribute set to locale for correct AT language announcement\n *\n * Bilingue: EN/FR strings resolved via t() from i18n/strings — no hardcoded literals.\n */\nexport function StatusBadge(raw: Record<string, unknown>) {\n try {\n const props = validateProps(raw);\n return <StatusBadgeInner {...props} />;\n } catch {\n const locale: MosaicLocale = raw.locale === \"fr\" ? \"fr\" : \"en\";\n return <span role=\"alert\">{t(\"StatusBadge.error.invalidProps\", locale)}</span>;\n }\n}\n"]}
|
package/dist/react/media.d.cts
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
export { S as StatusBadgeProps, a as StatusBadgePropsSchema, v as validateStatusBadgeProps } from '../StatusBadge.schema-BEjSH2_4.cjs';
|
|
3
|
+
import 'zod';
|
|
1
4
|
|
|
2
|
-
|
|
5
|
+
/**
|
|
6
|
+
* StatusBadge — cross-runtime status indicator badge (React 19 implementation).
|
|
7
|
+
*
|
|
8
|
+
* Accepts `Record<string, unknown>` for MCP postMessage injection safety.
|
|
9
|
+
* Zod validation narrows before render. Invalid props → accessible error span.
|
|
10
|
+
*
|
|
11
|
+
* WCAG-AA:
|
|
12
|
+
* - `<output>` has implicit role="status" per ARIA spec §5.3.17
|
|
13
|
+
* - aria-label from `label` prop (falls back to `status` string)
|
|
14
|
+
* - `lang` attribute set to locale for correct AT language announcement
|
|
15
|
+
*
|
|
16
|
+
* Bilingue: EN/FR strings resolved via t() from i18n/strings — no hardcoded literals.
|
|
17
|
+
*/
|
|
18
|
+
declare function StatusBadge(raw: Record<string, unknown>): react_jsx_runtime.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { StatusBadge };
|
package/dist/react/media.d.ts
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
export { S as StatusBadgeProps, a as StatusBadgePropsSchema, v as validateStatusBadgeProps } from '../StatusBadge.schema-BEjSH2_4.js';
|
|
3
|
+
import 'zod';
|
|
1
4
|
|
|
2
|
-
|
|
5
|
+
/**
|
|
6
|
+
* StatusBadge — cross-runtime status indicator badge (React 19 implementation).
|
|
7
|
+
*
|
|
8
|
+
* Accepts `Record<string, unknown>` for MCP postMessage injection safety.
|
|
9
|
+
* Zod validation narrows before render. Invalid props → accessible error span.
|
|
10
|
+
*
|
|
11
|
+
* WCAG-AA:
|
|
12
|
+
* - `<output>` has implicit role="status" per ARIA spec §5.3.17
|
|
13
|
+
* - aria-label from `label` prop (falls back to `status` string)
|
|
14
|
+
* - `lang` attribute set to locale for correct AT language announcement
|
|
15
|
+
*
|
|
16
|
+
* Bilingue: EN/FR strings resolved via t() from i18n/strings — no hardcoded literals.
|
|
17
|
+
*/
|
|
18
|
+
declare function StatusBadge(raw: Record<string, unknown>): react_jsx_runtime.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { StatusBadge };
|