@brokui/brok-design-language 0.1.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/LICENSE +21 -0
- package/README.md +24 -0
- package/dist/index.d.ts +1192 -0
- package/dist/index.js +1839 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.d.ts +2457 -0
- package/dist/tokens.js +1845 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +47 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,1192 @@
|
|
|
1
|
+
export { themeMetadata, themePresets, type DesignTokenPath, type ThemeBrand, type ThemeMode, } from "./tokens.js";
|
|
2
|
+
export interface InteractionContract {
|
|
3
|
+
readonly version: number;
|
|
4
|
+
readonly id: `IC-${number}`;
|
|
5
|
+
readonly slug: string;
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly requirement: string;
|
|
8
|
+
readonly appliesTo: readonly string[];
|
|
9
|
+
readonly helpers: readonly string[];
|
|
10
|
+
readonly evidence: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface VisualAccessibilityCheck {
|
|
13
|
+
readonly criterion: string;
|
|
14
|
+
readonly level: "A" | "AA" | "AAA";
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly applicability: "required" | "advisory" | "when-present" | "when-authentication-present";
|
|
17
|
+
readonly requirement: string;
|
|
18
|
+
}
|
|
19
|
+
export interface VisualPatternContract {
|
|
20
|
+
readonly version: number;
|
|
21
|
+
readonly id: `VC-${number}`;
|
|
22
|
+
readonly pattern: string;
|
|
23
|
+
readonly title: string;
|
|
24
|
+
readonly required: readonly string[];
|
|
25
|
+
readonly states: readonly string[];
|
|
26
|
+
readonly responsive: {
|
|
27
|
+
readonly mobile: string;
|
|
28
|
+
readonly desktop: string;
|
|
29
|
+
};
|
|
30
|
+
readonly interactionContractIds: readonly `IC-${number}`[];
|
|
31
|
+
readonly accessibility: {
|
|
32
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
33
|
+
readonly keyboardFlow: readonly string[];
|
|
34
|
+
readonly checks: readonly VisualAccessibilityCheck[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface ComponentSemanticContract {
|
|
38
|
+
readonly version: number;
|
|
39
|
+
readonly id: `CS-${number}`;
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly semanticRole: string;
|
|
42
|
+
readonly purpose: string;
|
|
43
|
+
readonly states: readonly string[];
|
|
44
|
+
readonly actions: readonly string[];
|
|
45
|
+
readonly interactionContractIds: readonly `IC-${number}`[];
|
|
46
|
+
readonly accessibilityRequirements: readonly string[];
|
|
47
|
+
readonly lifecycle: {
|
|
48
|
+
readonly status: "proposed" | "experimental" | "stable" | "deprecated" | "removed";
|
|
49
|
+
readonly owner: string;
|
|
50
|
+
readonly introducedIn: string;
|
|
51
|
+
readonly deprecatedIn: string | null;
|
|
52
|
+
readonly replacementId: `CS-${number}` | null;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface TelemetryContract {
|
|
56
|
+
readonly version: number;
|
|
57
|
+
readonly runtimeSchemaVersion: number;
|
|
58
|
+
readonly events: readonly string[];
|
|
59
|
+
readonly componentIdentity: {
|
|
60
|
+
readonly required: readonly string[];
|
|
61
|
+
readonly optional: readonly string[];
|
|
62
|
+
};
|
|
63
|
+
readonly outcomes: readonly string[];
|
|
64
|
+
readonly ratings: readonly string[];
|
|
65
|
+
readonly privacy: {
|
|
66
|
+
readonly prohibited: readonly string[];
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface PlatformAdapterImplementation {
|
|
70
|
+
readonly name: string;
|
|
71
|
+
readonly runtime: "blade" | "livewire";
|
|
72
|
+
readonly primary: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface PlatformAdapterMapping {
|
|
75
|
+
readonly semanticContractId: `CS-${number}`;
|
|
76
|
+
readonly implementations: readonly PlatformAdapterImplementation[];
|
|
77
|
+
}
|
|
78
|
+
export declare const interactionContracts: {
|
|
79
|
+
readonly "IC-001": {
|
|
80
|
+
readonly version: 2;
|
|
81
|
+
readonly id: "IC-001";
|
|
82
|
+
readonly slug: "destructive-confirmation";
|
|
83
|
+
readonly title: "Confirm destructive actions";
|
|
84
|
+
readonly requirement: "Every destructive or hard-to-reverse action requires an explicit confirmation surface before the write starts.";
|
|
85
|
+
readonly appliesTo: readonly ["delete", "destroy", "remove", "revoke", "bulk destructive action"];
|
|
86
|
+
readonly helpers: readonly ["alert-dialog", "livewire-confirm"];
|
|
87
|
+
readonly evidence: readonly ["lint", "feature-test", "browser-test", "review-check"];
|
|
88
|
+
};
|
|
89
|
+
readonly "IC-002": {
|
|
90
|
+
readonly version: 2;
|
|
91
|
+
readonly id: "IC-002";
|
|
92
|
+
readonly slug: "async-feedback";
|
|
93
|
+
readonly title: "Expose async progress";
|
|
94
|
+
readonly requirement: "Every asynchronous action exposes a named loading state, blocks repeat activation, and leaves unrelated controls enabled.";
|
|
95
|
+
readonly appliesTo: readonly ["Livewire action", "form submit", "upload", "client request"];
|
|
96
|
+
readonly helpers: readonly ["button", "spinner"];
|
|
97
|
+
readonly evidence: readonly ["lint", "feature-test", "browser-test", "review-check"];
|
|
98
|
+
};
|
|
99
|
+
readonly "IC-003": {
|
|
100
|
+
readonly version: 2;
|
|
101
|
+
readonly id: "IC-003";
|
|
102
|
+
readonly slug: "overlay-focus-return";
|
|
103
|
+
readonly title: "Restore overlay focus";
|
|
104
|
+
readonly requirement: "An overlay that moves focus returns focus to its invoking control after every close path.";
|
|
105
|
+
readonly appliesTo: readonly ["modal", "alert dialog", "sheet", "drawer", "menu", "focus-moving popover"];
|
|
106
|
+
readonly helpers: readonly ["dialog", "alert-dialog", "sheet", "drawer", "popover", "dropdown"];
|
|
107
|
+
readonly evidence: readonly ["contract-test", "browser-test", "review-check"];
|
|
108
|
+
};
|
|
109
|
+
readonly "IC-004": {
|
|
110
|
+
readonly version: 2;
|
|
111
|
+
readonly id: "IC-004";
|
|
112
|
+
readonly slug: "server-validation";
|
|
113
|
+
readonly title: "Render server validation consistently";
|
|
114
|
+
readonly requirement: "A persisted form renders the server error summary, keeps submitted values, and associates each field error with its control.";
|
|
115
|
+
readonly appliesTo: readonly ["POST form", "PUT form", "PATCH form", "Livewire persisted form"];
|
|
116
|
+
readonly helpers: readonly ["form", "field", "input", "textarea", "select"];
|
|
117
|
+
readonly evidence: readonly ["lint", "feature-test", "browser-test", "review-check"];
|
|
118
|
+
};
|
|
119
|
+
readonly "IC-005": {
|
|
120
|
+
readonly version: 2;
|
|
121
|
+
readonly id: "IC-005";
|
|
122
|
+
readonly slug: "notification-lifecycle";
|
|
123
|
+
readonly title: "Use one notification lifecycle";
|
|
124
|
+
readonly requirement: "Notifications use the shared queue, urgency vocabulary, announcement behavior, timeout policy, manual dismissal, and timer cleanup.";
|
|
125
|
+
readonly appliesTo: readonly ["toast", "Livewire toast", "flash-to-toast bridge"];
|
|
126
|
+
readonly helpers: readonly ["toast", "livewire-toast"];
|
|
127
|
+
readonly evidence: readonly ["feature-test", "browser-test", "review-check"];
|
|
128
|
+
};
|
|
129
|
+
readonly "IC-006": {
|
|
130
|
+
readonly version: 2;
|
|
131
|
+
readonly id: "IC-006";
|
|
132
|
+
readonly slug: "table-states";
|
|
133
|
+
readonly title: "Use common table states";
|
|
134
|
+
readonly requirement: "Data tables use the shared announced loading row and actionable empty row while they keep the table shape stable.";
|
|
135
|
+
readonly appliesTo: readonly ["client data table", "server data table", "Livewire data table"];
|
|
136
|
+
readonly helpers: readonly ["table.state", "data-table", "livewire-data-table"];
|
|
137
|
+
readonly evidence: readonly ["contract-test", "browser-test", "review-check"];
|
|
138
|
+
};
|
|
139
|
+
readonly "IC-007": {
|
|
140
|
+
readonly version: 2;
|
|
141
|
+
readonly id: "IC-007";
|
|
142
|
+
readonly slug: "keyboard-navigation";
|
|
143
|
+
readonly title: "Support keyboard navigation";
|
|
144
|
+
readonly requirement: "Navigation uses native links and buttons or implements the complete keyboard model for its ARIA pattern.";
|
|
145
|
+
readonly appliesTo: readonly ["navigation", "menu", "tabs", "listbox", "command palette"];
|
|
146
|
+
readonly helpers: readonly ["navigation-menu", "menubar", "dropdown", "tabs", "command"];
|
|
147
|
+
readonly evidence: readonly ["lint", "contract-test", "browser-test", "review-check"];
|
|
148
|
+
};
|
|
149
|
+
readonly "IC-008": {
|
|
150
|
+
readonly version: 2;
|
|
151
|
+
readonly id: "IC-008";
|
|
152
|
+
readonly slug: "unsaved-changes";
|
|
153
|
+
readonly title: "Warn about unsaved changes";
|
|
154
|
+
readonly requirement: "A persisted form uses the shared dirty guard for document navigation and cancelable client-router navigation, then clears it only for a valid submit or explicit reset.";
|
|
155
|
+
readonly appliesTo: readonly ["create form", "edit form", "wizard", "settings form", "file selection"];
|
|
156
|
+
readonly helpers: readonly ["form.guard"];
|
|
157
|
+
readonly evidence: readonly ["lint", "feature-test", "browser-test", "review-check"];
|
|
158
|
+
};
|
|
159
|
+
readonly "IC-009": {
|
|
160
|
+
readonly version: 2;
|
|
161
|
+
readonly id: "IC-009";
|
|
162
|
+
readonly slug: "failed-request-recovery";
|
|
163
|
+
readonly title: "Recover from failed requests";
|
|
164
|
+
readonly requirement: "A failed, interrupted, timed-out, offline, or session-expired request preserves safe user input, removes the busy state, announces the failure, and offers a retry path.";
|
|
165
|
+
readonly appliesTo: readonly ["form submit", "Livewire action", "upload", "client request"];
|
|
166
|
+
readonly helpers: readonly ["form.guard", "button"];
|
|
167
|
+
readonly evidence: readonly ["feature-test", "browser-test", "review-check"];
|
|
168
|
+
};
|
|
169
|
+
readonly "IC-010": {
|
|
170
|
+
readonly version: 2;
|
|
171
|
+
readonly id: "IC-010";
|
|
172
|
+
readonly slug: "idempotent-writes";
|
|
173
|
+
readonly title: "Make repeat writes idempotent";
|
|
174
|
+
readonly requirement: "A retried create or side-effecting request uses a stable operation key or an equivalent database invariant so one user intent produces one durable effect.";
|
|
175
|
+
readonly appliesTo: readonly ["create request", "payment", "notification-producing action", "webhook"];
|
|
176
|
+
readonly helpers: readonly ["form", "server idempotency store"];
|
|
177
|
+
readonly evidence: readonly ["feature-test", "database-test", "review-check"];
|
|
178
|
+
};
|
|
179
|
+
readonly "IC-011": {
|
|
180
|
+
readonly version: 2;
|
|
181
|
+
readonly id: "IC-011";
|
|
182
|
+
readonly slug: "history-restoration";
|
|
183
|
+
readonly title: "Restore history navigation state";
|
|
184
|
+
readonly requirement: "Back, forward, and back-forward-cache restoration remove stale busy states and restore safe draft values without repeating a write.";
|
|
185
|
+
readonly appliesTo: readonly ["persisted form", "client router", "paginated view", "filter state"];
|
|
186
|
+
readonly helpers: readonly ["form.guard", "URL-backed state"];
|
|
187
|
+
readonly evidence: readonly ["browser-test", "review-check"];
|
|
188
|
+
};
|
|
189
|
+
readonly "IC-012": {
|
|
190
|
+
readonly version: 2;
|
|
191
|
+
readonly id: "IC-012";
|
|
192
|
+
readonly slug: "concurrent-edit-conflicts";
|
|
193
|
+
readonly title: "Detect concurrent edit conflicts";
|
|
194
|
+
readonly requirement: "An update sends the version that the user edited and the server rejects a stale version without overwriting the newer record.";
|
|
195
|
+
readonly appliesTo: readonly ["edit form", "settings update", "bulk edit", "stale browser tab"];
|
|
196
|
+
readonly helpers: readonly ["form", "server version check"];
|
|
197
|
+
readonly evidence: readonly ["feature-test", "database-test", "browser-test", "review-check"];
|
|
198
|
+
};
|
|
199
|
+
readonly "IC-013": {
|
|
200
|
+
readonly version: 2;
|
|
201
|
+
readonly id: "IC-013";
|
|
202
|
+
readonly slug: "javascript-fallback";
|
|
203
|
+
readonly title: "Honor the JavaScript fallback contract";
|
|
204
|
+
readonly requirement: "Each component has an explicit no-JavaScript classification, keeps meaningful server-rendered content, and supplies a native path or a clear unavailable-interaction message.";
|
|
205
|
+
readonly appliesTo: readonly ["Alpine component", "Livewire component", "client-rendered control"];
|
|
206
|
+
readonly helpers: readonly ["component API contract", "noscript fallback"];
|
|
207
|
+
readonly evidence: readonly ["contract-test", "browser-test", "review-check"];
|
|
208
|
+
};
|
|
209
|
+
readonly "IC-014": {
|
|
210
|
+
readonly version: 2;
|
|
211
|
+
readonly id: "IC-014";
|
|
212
|
+
readonly slug: "assistive-preferences";
|
|
213
|
+
readonly title: "Honor assistive technology preferences";
|
|
214
|
+
readonly requirement: "Interactive behavior keeps a screen-reader navigation path and honors reduced-motion preferences without removing status or focus feedback.";
|
|
215
|
+
readonly appliesTo: readonly ["interactive component", "animated component", "navigation", "form"];
|
|
216
|
+
readonly helpers: readonly ["semantic HTML", "motion tokens", "live region"];
|
|
217
|
+
readonly evidence: readonly ["accessibility-test", "browser-test", "manual-screen-reader-test", "review-check"];
|
|
218
|
+
};
|
|
219
|
+
readonly "IC-015": {
|
|
220
|
+
readonly version: 2;
|
|
221
|
+
readonly id: "IC-015";
|
|
222
|
+
readonly slug: "content-and-direction";
|
|
223
|
+
readonly title: "Support content expansion and direction";
|
|
224
|
+
readonly requirement: "Components keep actions and content usable with long translated text, unbroken values, narrow widths, and right-to-left document direction.";
|
|
225
|
+
readonly appliesTo: readonly ["text content", "localized label", "URL", "right-to-left locale"];
|
|
226
|
+
readonly helpers: readonly ["logical layout utilities", "showcase state matrix"];
|
|
227
|
+
readonly evidence: readonly ["contract-test", "browser-test", "visual-test", "review-check"];
|
|
228
|
+
};
|
|
229
|
+
readonly "IC-016": {
|
|
230
|
+
readonly version: 2;
|
|
231
|
+
readonly id: "IC-016";
|
|
232
|
+
readonly slug: "dataset-boundaries";
|
|
233
|
+
readonly title: "Define dataset boundaries";
|
|
234
|
+
readonly requirement: "A data component states its client-side row limit and uses server pagination beyond that limit while keeping query, memory, and pagination behavior bounded.";
|
|
235
|
+
readonly appliesTo: readonly ["table", "list", "search", "select", "activity feed"];
|
|
236
|
+
readonly helpers: readonly ["data-table", "livewire-data-table"];
|
|
237
|
+
readonly evidence: readonly ["feature-test", "performance-test", "browser-test", "review-check"];
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
export declare const visualPatternContracts: {
|
|
241
|
+
readonly "VC-001": {
|
|
242
|
+
readonly version: 1;
|
|
243
|
+
readonly id: "VC-001";
|
|
244
|
+
readonly pattern: "application-shell";
|
|
245
|
+
readonly title: "Application shell";
|
|
246
|
+
readonly required: readonly ["desktop sidebar", "top bar", "content outlet"];
|
|
247
|
+
readonly states: readonly ["sidebar collapsed", "mobile navigation open"];
|
|
248
|
+
readonly responsive: {
|
|
249
|
+
readonly mobile: "Use a disclosed navigation surface and one scrollable content column.";
|
|
250
|
+
readonly desktop: "Keep persistent navigation, global actions, and the content outlet in a stable frame.";
|
|
251
|
+
};
|
|
252
|
+
readonly interactionContractIds: readonly ["IC-003", "IC-007"];
|
|
253
|
+
readonly accessibility: {
|
|
254
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
255
|
+
readonly keyboardFlow: readonly ["Reach the skip link first.", "Move through global navigation before page actions.", "Return focus to the navigation trigger after the mobile surface closes."];
|
|
256
|
+
readonly checks: readonly [{
|
|
257
|
+
readonly criterion: "2.4.7";
|
|
258
|
+
readonly level: "AA";
|
|
259
|
+
readonly name: "Focus Visible";
|
|
260
|
+
readonly applicability: "required";
|
|
261
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
262
|
+
}, {
|
|
263
|
+
readonly criterion: "2.4.11";
|
|
264
|
+
readonly level: "AA";
|
|
265
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
266
|
+
readonly applicability: "required";
|
|
267
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
268
|
+
}, {
|
|
269
|
+
readonly criterion: "2.4.13";
|
|
270
|
+
readonly level: "AAA";
|
|
271
|
+
readonly name: "Focus Appearance";
|
|
272
|
+
readonly applicability: "advisory";
|
|
273
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
274
|
+
}, {
|
|
275
|
+
readonly criterion: "2.5.7";
|
|
276
|
+
readonly level: "AA";
|
|
277
|
+
readonly name: "Dragging Movements";
|
|
278
|
+
readonly applicability: "when-present";
|
|
279
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
280
|
+
}, {
|
|
281
|
+
readonly criterion: "2.5.8";
|
|
282
|
+
readonly level: "AA";
|
|
283
|
+
readonly name: "Target Size (Minimum)";
|
|
284
|
+
readonly applicability: "required";
|
|
285
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
286
|
+
}, {
|
|
287
|
+
readonly criterion: "3.2.6";
|
|
288
|
+
readonly level: "A";
|
|
289
|
+
readonly name: "Consistent Help";
|
|
290
|
+
readonly applicability: "when-present";
|
|
291
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
292
|
+
}, {
|
|
293
|
+
readonly criterion: "3.3.8";
|
|
294
|
+
readonly level: "AA";
|
|
295
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
296
|
+
readonly applicability: "when-authentication-present";
|
|
297
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
298
|
+
}];
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
readonly "VC-002": {
|
|
302
|
+
readonly version: 1;
|
|
303
|
+
readonly id: "VC-002";
|
|
304
|
+
readonly pattern: "navigation";
|
|
305
|
+
readonly title: "Navigation";
|
|
306
|
+
readonly required: readonly ["desktop sidebar", "mobile navigation sheet", "breadcrumb"];
|
|
307
|
+
readonly states: readonly ["mobile navigation open"];
|
|
308
|
+
readonly responsive: {
|
|
309
|
+
readonly mobile: "Replace persistent navigation with a labelled disclosure or sheet.";
|
|
310
|
+
readonly desktop: "Expose the current location in persistent navigation.";
|
|
311
|
+
};
|
|
312
|
+
readonly interactionContractIds: readonly ["IC-003", "IC-007"];
|
|
313
|
+
readonly accessibility: {
|
|
314
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
315
|
+
readonly keyboardFlow: readonly ["Use native links for destinations.", "Expose the current destination without relying on color.", "Restore focus after a disclosed navigation surface closes."];
|
|
316
|
+
readonly checks: readonly [{
|
|
317
|
+
readonly criterion: "2.4.7";
|
|
318
|
+
readonly level: "AA";
|
|
319
|
+
readonly name: "Focus Visible";
|
|
320
|
+
readonly applicability: "required";
|
|
321
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
322
|
+
}, {
|
|
323
|
+
readonly criterion: "2.4.11";
|
|
324
|
+
readonly level: "AA";
|
|
325
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
326
|
+
readonly applicability: "required";
|
|
327
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
328
|
+
}, {
|
|
329
|
+
readonly criterion: "2.4.13";
|
|
330
|
+
readonly level: "AAA";
|
|
331
|
+
readonly name: "Focus Appearance";
|
|
332
|
+
readonly applicability: "advisory";
|
|
333
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
334
|
+
}, {
|
|
335
|
+
readonly criterion: "2.5.7";
|
|
336
|
+
readonly level: "AA";
|
|
337
|
+
readonly name: "Dragging Movements";
|
|
338
|
+
readonly applicability: "when-present";
|
|
339
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
340
|
+
}, {
|
|
341
|
+
readonly criterion: "2.5.8";
|
|
342
|
+
readonly level: "AA";
|
|
343
|
+
readonly name: "Target Size (Minimum)";
|
|
344
|
+
readonly applicability: "required";
|
|
345
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
346
|
+
}, {
|
|
347
|
+
readonly criterion: "3.2.6";
|
|
348
|
+
readonly level: "A";
|
|
349
|
+
readonly name: "Consistent Help";
|
|
350
|
+
readonly applicability: "when-present";
|
|
351
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
352
|
+
}, {
|
|
353
|
+
readonly criterion: "3.3.8";
|
|
354
|
+
readonly level: "AA";
|
|
355
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
356
|
+
readonly applicability: "when-authentication-present";
|
|
357
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
358
|
+
}];
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
readonly "VC-003": {
|
|
362
|
+
readonly version: 1;
|
|
363
|
+
readonly id: "VC-003";
|
|
364
|
+
readonly pattern: "page-header";
|
|
365
|
+
readonly title: "Page header";
|
|
366
|
+
readonly required: readonly ["heading", "query-controls", "primary-action"];
|
|
367
|
+
readonly states: readonly ["unfiltered", "filtered"];
|
|
368
|
+
readonly responsive: {
|
|
369
|
+
readonly mobile: "Stack context, controls, and the primary action in reading order.";
|
|
370
|
+
readonly desktop: "Keep context and the primary action visually distinct in one header region.";
|
|
371
|
+
};
|
|
372
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-007"];
|
|
373
|
+
readonly accessibility: {
|
|
374
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
375
|
+
readonly keyboardFlow: readonly ["Reach the page heading before page controls.", "Keep the primary action after its explanatory context."];
|
|
376
|
+
readonly checks: readonly [{
|
|
377
|
+
readonly criterion: "2.4.7";
|
|
378
|
+
readonly level: "AA";
|
|
379
|
+
readonly name: "Focus Visible";
|
|
380
|
+
readonly applicability: "required";
|
|
381
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
382
|
+
}, {
|
|
383
|
+
readonly criterion: "2.4.11";
|
|
384
|
+
readonly level: "AA";
|
|
385
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
386
|
+
readonly applicability: "required";
|
|
387
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
388
|
+
}, {
|
|
389
|
+
readonly criterion: "2.4.13";
|
|
390
|
+
readonly level: "AAA";
|
|
391
|
+
readonly name: "Focus Appearance";
|
|
392
|
+
readonly applicability: "advisory";
|
|
393
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
394
|
+
}, {
|
|
395
|
+
readonly criterion: "2.5.7";
|
|
396
|
+
readonly level: "AA";
|
|
397
|
+
readonly name: "Dragging Movements";
|
|
398
|
+
readonly applicability: "when-present";
|
|
399
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
400
|
+
}, {
|
|
401
|
+
readonly criterion: "2.5.8";
|
|
402
|
+
readonly level: "AA";
|
|
403
|
+
readonly name: "Target Size (Minimum)";
|
|
404
|
+
readonly applicability: "required";
|
|
405
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
406
|
+
}, {
|
|
407
|
+
readonly criterion: "3.2.6";
|
|
408
|
+
readonly level: "A";
|
|
409
|
+
readonly name: "Consistent Help";
|
|
410
|
+
readonly applicability: "when-present";
|
|
411
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
412
|
+
}, {
|
|
413
|
+
readonly criterion: "3.3.8";
|
|
414
|
+
readonly level: "AA";
|
|
415
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
416
|
+
readonly applicability: "when-authentication-present";
|
|
417
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
418
|
+
}];
|
|
419
|
+
};
|
|
420
|
+
};
|
|
421
|
+
readonly "VC-004": {
|
|
422
|
+
readonly version: 1;
|
|
423
|
+
readonly id: "VC-004";
|
|
424
|
+
readonly pattern: "form";
|
|
425
|
+
readonly title: "Form";
|
|
426
|
+
readonly required: readonly ["heading", "fields", "form-actions"];
|
|
427
|
+
readonly states: readonly ["submitting", "validation-error", "success"];
|
|
428
|
+
readonly responsive: {
|
|
429
|
+
readonly mobile: "Use one field column and keep actions in source order.";
|
|
430
|
+
readonly desktop: "Use multiple columns only when field relationships stay clear.";
|
|
431
|
+
};
|
|
432
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-004", "IC-008"];
|
|
433
|
+
readonly accessibility: {
|
|
434
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
435
|
+
readonly keyboardFlow: readonly ["Move from the form heading to the error summary and then to fields.", "Associate every error with its control.", "Keep submit feedback announced and focusable."];
|
|
436
|
+
readonly checks: readonly [{
|
|
437
|
+
readonly criterion: "2.4.7";
|
|
438
|
+
readonly level: "AA";
|
|
439
|
+
readonly name: "Focus Visible";
|
|
440
|
+
readonly applicability: "required";
|
|
441
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
442
|
+
}, {
|
|
443
|
+
readonly criterion: "2.4.11";
|
|
444
|
+
readonly level: "AA";
|
|
445
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
446
|
+
readonly applicability: "required";
|
|
447
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
448
|
+
}, {
|
|
449
|
+
readonly criterion: "2.4.13";
|
|
450
|
+
readonly level: "AAA";
|
|
451
|
+
readonly name: "Focus Appearance";
|
|
452
|
+
readonly applicability: "advisory";
|
|
453
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
454
|
+
}, {
|
|
455
|
+
readonly criterion: "2.5.7";
|
|
456
|
+
readonly level: "AA";
|
|
457
|
+
readonly name: "Dragging Movements";
|
|
458
|
+
readonly applicability: "when-present";
|
|
459
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
460
|
+
}, {
|
|
461
|
+
readonly criterion: "2.5.8";
|
|
462
|
+
readonly level: "AA";
|
|
463
|
+
readonly name: "Target Size (Minimum)";
|
|
464
|
+
readonly applicability: "required";
|
|
465
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
466
|
+
}, {
|
|
467
|
+
readonly criterion: "3.2.6";
|
|
468
|
+
readonly level: "A";
|
|
469
|
+
readonly name: "Consistent Help";
|
|
470
|
+
readonly applicability: "when-present";
|
|
471
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
472
|
+
}, {
|
|
473
|
+
readonly criterion: "3.3.8";
|
|
474
|
+
readonly level: "AA";
|
|
475
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
476
|
+
readonly applicability: "when-authentication-present";
|
|
477
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
478
|
+
}];
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
readonly "VC-005": {
|
|
482
|
+
readonly version: 1;
|
|
483
|
+
readonly id: "VC-005";
|
|
484
|
+
readonly pattern: "table";
|
|
485
|
+
readonly title: "Table";
|
|
486
|
+
readonly required: readonly ["query-toolbar", "data-table", "pagination"];
|
|
487
|
+
readonly states: readonly ["populated", "empty", "selected"];
|
|
488
|
+
readonly responsive: {
|
|
489
|
+
readonly mobile: "Keep header and cell relationships intact in a labelled scroll region.";
|
|
490
|
+
readonly desktop: "Keep query, selection, table, and pagination controls in a predictable order.";
|
|
491
|
+
};
|
|
492
|
+
readonly interactionContractIds: readonly ["IC-001", "IC-002", "IC-006", "IC-007"];
|
|
493
|
+
readonly accessibility: {
|
|
494
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
495
|
+
readonly keyboardFlow: readonly ["Reach query controls before table content.", "Keep row actions keyboard operable.", "Announce loading, empty, and selection changes."];
|
|
496
|
+
readonly checks: readonly [{
|
|
497
|
+
readonly criterion: "2.4.7";
|
|
498
|
+
readonly level: "AA";
|
|
499
|
+
readonly name: "Focus Visible";
|
|
500
|
+
readonly applicability: "required";
|
|
501
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
502
|
+
}, {
|
|
503
|
+
readonly criterion: "2.4.11";
|
|
504
|
+
readonly level: "AA";
|
|
505
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
506
|
+
readonly applicability: "required";
|
|
507
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
508
|
+
}, {
|
|
509
|
+
readonly criterion: "2.4.13";
|
|
510
|
+
readonly level: "AAA";
|
|
511
|
+
readonly name: "Focus Appearance";
|
|
512
|
+
readonly applicability: "advisory";
|
|
513
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
514
|
+
}, {
|
|
515
|
+
readonly criterion: "2.5.7";
|
|
516
|
+
readonly level: "AA";
|
|
517
|
+
readonly name: "Dragging Movements";
|
|
518
|
+
readonly applicability: "when-present";
|
|
519
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
520
|
+
}, {
|
|
521
|
+
readonly criterion: "2.5.8";
|
|
522
|
+
readonly level: "AA";
|
|
523
|
+
readonly name: "Target Size (Minimum)";
|
|
524
|
+
readonly applicability: "required";
|
|
525
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
526
|
+
}, {
|
|
527
|
+
readonly criterion: "3.2.6";
|
|
528
|
+
readonly level: "A";
|
|
529
|
+
readonly name: "Consistent Help";
|
|
530
|
+
readonly applicability: "when-present";
|
|
531
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
532
|
+
}, {
|
|
533
|
+
readonly criterion: "3.3.8";
|
|
534
|
+
readonly level: "AA";
|
|
535
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
536
|
+
readonly applicability: "when-authentication-present";
|
|
537
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
538
|
+
}];
|
|
539
|
+
};
|
|
540
|
+
};
|
|
541
|
+
readonly "VC-006": {
|
|
542
|
+
readonly version: 1;
|
|
543
|
+
readonly id: "VC-006";
|
|
544
|
+
readonly pattern: "detail-page";
|
|
545
|
+
readonly title: "Detail page";
|
|
546
|
+
readonly required: readonly ["breadcrumb", "page-header", "overview", "related-content"];
|
|
547
|
+
readonly states: readonly ["populated", "empty-activity"];
|
|
548
|
+
readonly responsive: {
|
|
549
|
+
readonly mobile: "Use one reading column and keep key actions near the heading.";
|
|
550
|
+
readonly desktop: "Separate primary details from related and historical content.";
|
|
551
|
+
};
|
|
552
|
+
readonly interactionContractIds: readonly ["IC-001", "IC-002", "IC-007"];
|
|
553
|
+
readonly accessibility: {
|
|
554
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
555
|
+
readonly keyboardFlow: readonly ["Reach the breadcrumb and page heading before record actions.", "Keep related content after the primary record details."];
|
|
556
|
+
readonly checks: readonly [{
|
|
557
|
+
readonly criterion: "2.4.7";
|
|
558
|
+
readonly level: "AA";
|
|
559
|
+
readonly name: "Focus Visible";
|
|
560
|
+
readonly applicability: "required";
|
|
561
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
562
|
+
}, {
|
|
563
|
+
readonly criterion: "2.4.11";
|
|
564
|
+
readonly level: "AA";
|
|
565
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
566
|
+
readonly applicability: "required";
|
|
567
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
568
|
+
}, {
|
|
569
|
+
readonly criterion: "2.4.13";
|
|
570
|
+
readonly level: "AAA";
|
|
571
|
+
readonly name: "Focus Appearance";
|
|
572
|
+
readonly applicability: "advisory";
|
|
573
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
574
|
+
}, {
|
|
575
|
+
readonly criterion: "2.5.7";
|
|
576
|
+
readonly level: "AA";
|
|
577
|
+
readonly name: "Dragging Movements";
|
|
578
|
+
readonly applicability: "when-present";
|
|
579
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
580
|
+
}, {
|
|
581
|
+
readonly criterion: "2.5.8";
|
|
582
|
+
readonly level: "AA";
|
|
583
|
+
readonly name: "Target Size (Minimum)";
|
|
584
|
+
readonly applicability: "required";
|
|
585
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
586
|
+
}, {
|
|
587
|
+
readonly criterion: "3.2.6";
|
|
588
|
+
readonly level: "A";
|
|
589
|
+
readonly name: "Consistent Help";
|
|
590
|
+
readonly applicability: "when-present";
|
|
591
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
592
|
+
}, {
|
|
593
|
+
readonly criterion: "3.3.8";
|
|
594
|
+
readonly level: "AA";
|
|
595
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
596
|
+
readonly applicability: "when-authentication-present";
|
|
597
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
598
|
+
}];
|
|
599
|
+
};
|
|
600
|
+
};
|
|
601
|
+
readonly "VC-007": {
|
|
602
|
+
readonly version: 1;
|
|
603
|
+
readonly id: "VC-007";
|
|
604
|
+
readonly pattern: "dashboard";
|
|
605
|
+
readonly title: "Dashboard";
|
|
606
|
+
readonly required: readonly ["welcome header", "quick actions", "KPI grid", "sales chart", "recent invoices table"];
|
|
607
|
+
readonly states: readonly ["default", "empty metrics", "loading chart", "empty invoices"];
|
|
608
|
+
readonly responsive: {
|
|
609
|
+
readonly mobile: "Stack summary, actions, charts, and tables in task order.";
|
|
610
|
+
readonly desktop: "Use a stable grid without changing the semantic reading order.";
|
|
611
|
+
};
|
|
612
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-006", "IC-007"];
|
|
613
|
+
readonly accessibility: {
|
|
614
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
615
|
+
readonly keyboardFlow: readonly ["Reach the page summary before quick actions.", "Provide a text equivalent for every chart.", "Keep table controls next to their table."];
|
|
616
|
+
readonly checks: readonly [{
|
|
617
|
+
readonly criterion: "2.4.7";
|
|
618
|
+
readonly level: "AA";
|
|
619
|
+
readonly name: "Focus Visible";
|
|
620
|
+
readonly applicability: "required";
|
|
621
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
622
|
+
}, {
|
|
623
|
+
readonly criterion: "2.4.11";
|
|
624
|
+
readonly level: "AA";
|
|
625
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
626
|
+
readonly applicability: "required";
|
|
627
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
628
|
+
}, {
|
|
629
|
+
readonly criterion: "2.4.13";
|
|
630
|
+
readonly level: "AAA";
|
|
631
|
+
readonly name: "Focus Appearance";
|
|
632
|
+
readonly applicability: "advisory";
|
|
633
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
634
|
+
}, {
|
|
635
|
+
readonly criterion: "2.5.7";
|
|
636
|
+
readonly level: "AA";
|
|
637
|
+
readonly name: "Dragging Movements";
|
|
638
|
+
readonly applicability: "when-present";
|
|
639
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
640
|
+
}, {
|
|
641
|
+
readonly criterion: "2.5.8";
|
|
642
|
+
readonly level: "AA";
|
|
643
|
+
readonly name: "Target Size (Minimum)";
|
|
644
|
+
readonly applicability: "required";
|
|
645
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
646
|
+
}, {
|
|
647
|
+
readonly criterion: "3.2.6";
|
|
648
|
+
readonly level: "A";
|
|
649
|
+
readonly name: "Consistent Help";
|
|
650
|
+
readonly applicability: "when-present";
|
|
651
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
652
|
+
}, {
|
|
653
|
+
readonly criterion: "3.3.8";
|
|
654
|
+
readonly level: "AA";
|
|
655
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
656
|
+
readonly applicability: "when-authentication-present";
|
|
657
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
658
|
+
}];
|
|
659
|
+
};
|
|
660
|
+
};
|
|
661
|
+
readonly "VC-008": {
|
|
662
|
+
readonly version: 1;
|
|
663
|
+
readonly id: "VC-008";
|
|
664
|
+
readonly pattern: "notifications";
|
|
665
|
+
readonly title: "Notifications";
|
|
666
|
+
readonly required: readonly ["filters", "notification-list", "pagination"];
|
|
667
|
+
readonly states: readonly ["populated", "empty", "unread-filter"];
|
|
668
|
+
readonly responsive: {
|
|
669
|
+
readonly mobile: "Stack filters and keep each notification action next to its message.";
|
|
670
|
+
readonly desktop: "Keep filters, status, messages, and actions in a stable reading order.";
|
|
671
|
+
};
|
|
672
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-005", "IC-007"];
|
|
673
|
+
readonly accessibility: {
|
|
674
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
675
|
+
readonly keyboardFlow: readonly ["Reach filters before messages.", "Announce unread and read-state changes.", "Keep dismissal and destination actions independently named."];
|
|
676
|
+
readonly checks: readonly [{
|
|
677
|
+
readonly criterion: "2.4.7";
|
|
678
|
+
readonly level: "AA";
|
|
679
|
+
readonly name: "Focus Visible";
|
|
680
|
+
readonly applicability: "required";
|
|
681
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
682
|
+
}, {
|
|
683
|
+
readonly criterion: "2.4.11";
|
|
684
|
+
readonly level: "AA";
|
|
685
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
686
|
+
readonly applicability: "required";
|
|
687
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
688
|
+
}, {
|
|
689
|
+
readonly criterion: "2.4.13";
|
|
690
|
+
readonly level: "AAA";
|
|
691
|
+
readonly name: "Focus Appearance";
|
|
692
|
+
readonly applicability: "advisory";
|
|
693
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
694
|
+
}, {
|
|
695
|
+
readonly criterion: "2.5.7";
|
|
696
|
+
readonly level: "AA";
|
|
697
|
+
readonly name: "Dragging Movements";
|
|
698
|
+
readonly applicability: "when-present";
|
|
699
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
700
|
+
}, {
|
|
701
|
+
readonly criterion: "2.5.8";
|
|
702
|
+
readonly level: "AA";
|
|
703
|
+
readonly name: "Target Size (Minimum)";
|
|
704
|
+
readonly applicability: "required";
|
|
705
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
706
|
+
}, {
|
|
707
|
+
readonly criterion: "3.2.6";
|
|
708
|
+
readonly level: "A";
|
|
709
|
+
readonly name: "Consistent Help";
|
|
710
|
+
readonly applicability: "when-present";
|
|
711
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
712
|
+
}, {
|
|
713
|
+
readonly criterion: "3.3.8";
|
|
714
|
+
readonly level: "AA";
|
|
715
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
716
|
+
readonly applicability: "when-authentication-present";
|
|
717
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
718
|
+
}];
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
readonly "VC-009": {
|
|
722
|
+
readonly version: 1;
|
|
723
|
+
readonly id: "VC-009";
|
|
724
|
+
readonly pattern: "empty-error-states";
|
|
725
|
+
readonly title: "Empty and error states";
|
|
726
|
+
readonly required: readonly ["state-heading", "state-body", "recovery-action", "ready-content"];
|
|
727
|
+
readonly states: readonly ["loading", "empty", "error", "ready"];
|
|
728
|
+
readonly responsive: {
|
|
729
|
+
readonly mobile: "Keep the state message and recovery action in one narrow column.";
|
|
730
|
+
readonly desktop: "Keep state feedback close to the content region that it replaces.";
|
|
731
|
+
};
|
|
732
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-007"];
|
|
733
|
+
readonly accessibility: {
|
|
734
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
735
|
+
readonly keyboardFlow: readonly ["Announce state changes without an unexpected focus move.", "Place the recovery action after the error explanation."];
|
|
736
|
+
readonly checks: readonly [{
|
|
737
|
+
readonly criterion: "2.4.7";
|
|
738
|
+
readonly level: "AA";
|
|
739
|
+
readonly name: "Focus Visible";
|
|
740
|
+
readonly applicability: "required";
|
|
741
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
742
|
+
}, {
|
|
743
|
+
readonly criterion: "2.4.11";
|
|
744
|
+
readonly level: "AA";
|
|
745
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
746
|
+
readonly applicability: "required";
|
|
747
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
748
|
+
}, {
|
|
749
|
+
readonly criterion: "2.4.13";
|
|
750
|
+
readonly level: "AAA";
|
|
751
|
+
readonly name: "Focus Appearance";
|
|
752
|
+
readonly applicability: "advisory";
|
|
753
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
754
|
+
}, {
|
|
755
|
+
readonly criterion: "2.5.7";
|
|
756
|
+
readonly level: "AA";
|
|
757
|
+
readonly name: "Dragging Movements";
|
|
758
|
+
readonly applicability: "when-present";
|
|
759
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
760
|
+
}, {
|
|
761
|
+
readonly criterion: "2.5.8";
|
|
762
|
+
readonly level: "AA";
|
|
763
|
+
readonly name: "Target Size (Minimum)";
|
|
764
|
+
readonly applicability: "required";
|
|
765
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
766
|
+
}, {
|
|
767
|
+
readonly criterion: "3.2.6";
|
|
768
|
+
readonly level: "A";
|
|
769
|
+
readonly name: "Consistent Help";
|
|
770
|
+
readonly applicability: "when-present";
|
|
771
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
772
|
+
}, {
|
|
773
|
+
readonly criterion: "3.3.8";
|
|
774
|
+
readonly level: "AA";
|
|
775
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
776
|
+
readonly applicability: "when-authentication-present";
|
|
777
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
778
|
+
}];
|
|
779
|
+
};
|
|
780
|
+
};
|
|
781
|
+
readonly "VC-010": {
|
|
782
|
+
readonly version: 1;
|
|
783
|
+
readonly id: "VC-010";
|
|
784
|
+
readonly pattern: "settings-page";
|
|
785
|
+
readonly title: "Settings page";
|
|
786
|
+
readonly required: readonly ["heading", "section-navigation", "feedback", "settings-sections"];
|
|
787
|
+
readonly states: readonly ["dirty", "submitting", "validation-error", "success"];
|
|
788
|
+
readonly responsive: {
|
|
789
|
+
readonly mobile: "Stack section navigation, feedback, and form sections.";
|
|
790
|
+
readonly desktop: "Use section navigation beside one readable form column.";
|
|
791
|
+
};
|
|
792
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-004", "IC-007", "IC-008"];
|
|
793
|
+
readonly accessibility: {
|
|
794
|
+
readonly wcagTarget: "WCAG 2.2 AA";
|
|
795
|
+
readonly keyboardFlow: readonly ["Reach the page title and section navigation before settings fields.", "Move validation focus to the error summary or first invalid field.", "Announce saved feedback without removing focus."];
|
|
796
|
+
readonly checks: readonly [{
|
|
797
|
+
readonly criterion: "2.4.7";
|
|
798
|
+
readonly level: "AA";
|
|
799
|
+
readonly name: "Focus Visible";
|
|
800
|
+
readonly applicability: "required";
|
|
801
|
+
readonly requirement: "Every keyboard focus indicator is visible.";
|
|
802
|
+
}, {
|
|
803
|
+
readonly criterion: "2.4.11";
|
|
804
|
+
readonly level: "AA";
|
|
805
|
+
readonly name: "Focus Not Obscured (Minimum)";
|
|
806
|
+
readonly applicability: "required";
|
|
807
|
+
readonly requirement: "Sticky and overlay content does not fully hide the focused control.";
|
|
808
|
+
}, {
|
|
809
|
+
readonly criterion: "2.4.13";
|
|
810
|
+
readonly level: "AAA";
|
|
811
|
+
readonly name: "Focus Appearance";
|
|
812
|
+
readonly applicability: "advisory";
|
|
813
|
+
readonly requirement: "Prefer a focus indicator that also meets the WCAG 2.2 AAA area and contrast measure.";
|
|
814
|
+
}, {
|
|
815
|
+
readonly criterion: "2.5.7";
|
|
816
|
+
readonly level: "AA";
|
|
817
|
+
readonly name: "Dragging Movements";
|
|
818
|
+
readonly applicability: "when-present";
|
|
819
|
+
readonly requirement: "Every drag interaction has a non-dragging pointer and keyboard alternative.";
|
|
820
|
+
}, {
|
|
821
|
+
readonly criterion: "2.5.8";
|
|
822
|
+
readonly level: "AA";
|
|
823
|
+
readonly name: "Target Size (Minimum)";
|
|
824
|
+
readonly applicability: "required";
|
|
825
|
+
readonly requirement: "Targets meet the 24 by 24 CSS pixel minimum or the spacing exception.";
|
|
826
|
+
}, {
|
|
827
|
+
readonly criterion: "3.2.6";
|
|
828
|
+
readonly level: "A";
|
|
829
|
+
readonly name: "Consistent Help";
|
|
830
|
+
readonly applicability: "when-present";
|
|
831
|
+
readonly requirement: "Repeated help controls stay in the same relative order.";
|
|
832
|
+
}, {
|
|
833
|
+
readonly criterion: "3.3.8";
|
|
834
|
+
readonly level: "AA";
|
|
835
|
+
readonly name: "Accessible Authentication (Minimum)";
|
|
836
|
+
readonly applicability: "when-authentication-present";
|
|
837
|
+
readonly requirement: "Authentication does not require a cognitive function test unless an accessible alternative or support mechanism is available.";
|
|
838
|
+
}];
|
|
839
|
+
};
|
|
840
|
+
};
|
|
841
|
+
};
|
|
842
|
+
export declare const componentSemantics: {
|
|
843
|
+
readonly button: {
|
|
844
|
+
readonly version: 2;
|
|
845
|
+
readonly id: "CS-001";
|
|
846
|
+
readonly name: "button";
|
|
847
|
+
readonly semanticRole: "action";
|
|
848
|
+
readonly purpose: "Start an immediate action or follow a destination with explicit button or link semantics.";
|
|
849
|
+
readonly states: readonly ["enabled", "disabled", "loading"];
|
|
850
|
+
readonly actions: readonly ["activate"];
|
|
851
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-007"];
|
|
852
|
+
readonly accessibilityRequirements: readonly ["Expose an accessible name.", "Preserve native activation semantics.", "Expose disabled and busy state without color alone."];
|
|
853
|
+
readonly lifecycle: {
|
|
854
|
+
readonly status: "stable";
|
|
855
|
+
readonly owner: "platform-ui";
|
|
856
|
+
readonly introducedIn: "1.0.0";
|
|
857
|
+
readonly deprecatedIn: null;
|
|
858
|
+
readonly replacementId: null;
|
|
859
|
+
};
|
|
860
|
+
};
|
|
861
|
+
readonly "text-input": {
|
|
862
|
+
readonly version: 2;
|
|
863
|
+
readonly id: "CS-002";
|
|
864
|
+
readonly name: "text-input";
|
|
865
|
+
readonly semanticRole: "text-entry";
|
|
866
|
+
readonly purpose: "Collect one bounded text value with a persistent label and validation relationship.";
|
|
867
|
+
readonly states: readonly ["empty", "filled", "disabled", "read-only", "invalid"];
|
|
868
|
+
readonly actions: readonly ["focus", "edit", "clear"];
|
|
869
|
+
readonly interactionContractIds: readonly ["IC-004", "IC-007"];
|
|
870
|
+
readonly accessibilityRequirements: readonly ["Expose a persistent accessible label.", "Associate help and error text with the field.", "Expose invalid, required, disabled, and read-only state programmatically."];
|
|
871
|
+
readonly lifecycle: {
|
|
872
|
+
readonly status: "stable";
|
|
873
|
+
readonly owner: "platform-ui";
|
|
874
|
+
readonly introducedIn: "1.0.0";
|
|
875
|
+
readonly deprecatedIn: null;
|
|
876
|
+
readonly replacementId: null;
|
|
877
|
+
};
|
|
878
|
+
};
|
|
879
|
+
readonly checkbox: {
|
|
880
|
+
readonly version: 2;
|
|
881
|
+
readonly id: "CS-003";
|
|
882
|
+
readonly name: "checkbox";
|
|
883
|
+
readonly semanticRole: "independent-selection";
|
|
884
|
+
readonly purpose: "Select zero or more independent options or acknowledge one boolean value.";
|
|
885
|
+
readonly states: readonly ["unchecked", "checked", "mixed", "disabled", "invalid"];
|
|
886
|
+
readonly actions: readonly ["toggle"];
|
|
887
|
+
readonly interactionContractIds: readonly ["IC-004", "IC-007"];
|
|
888
|
+
readonly accessibilityRequirements: readonly ["Expose checked or mixed state programmatically.", "Keep the label inside the activation target when possible."];
|
|
889
|
+
readonly lifecycle: {
|
|
890
|
+
readonly status: "stable";
|
|
891
|
+
readonly owner: "platform-ui";
|
|
892
|
+
readonly introducedIn: "1.0.0";
|
|
893
|
+
readonly deprecatedIn: null;
|
|
894
|
+
readonly replacementId: null;
|
|
895
|
+
};
|
|
896
|
+
};
|
|
897
|
+
readonly "radio-group": {
|
|
898
|
+
readonly version: 2;
|
|
899
|
+
readonly id: "CS-004";
|
|
900
|
+
readonly name: "radio-group";
|
|
901
|
+
readonly semanticRole: "exclusive-selection";
|
|
902
|
+
readonly purpose: "Choose exactly one value from a small visible set.";
|
|
903
|
+
readonly states: readonly ["unselected", "selected", "disabled", "invalid"];
|
|
904
|
+
readonly actions: readonly ["select", "move-next", "move-previous"];
|
|
905
|
+
readonly interactionContractIds: readonly ["IC-004", "IC-007"];
|
|
906
|
+
readonly accessibilityRequirements: readonly ["Expose one group label.", "Expose each option label and selected state.", "Support the platform radio-group keyboard model."];
|
|
907
|
+
readonly lifecycle: {
|
|
908
|
+
readonly status: "stable";
|
|
909
|
+
readonly owner: "platform-ui";
|
|
910
|
+
readonly introducedIn: "1.0.0";
|
|
911
|
+
readonly deprecatedIn: null;
|
|
912
|
+
readonly replacementId: null;
|
|
913
|
+
};
|
|
914
|
+
};
|
|
915
|
+
readonly switch: {
|
|
916
|
+
readonly version: 2;
|
|
917
|
+
readonly id: "CS-005";
|
|
918
|
+
readonly name: "switch";
|
|
919
|
+
readonly semanticRole: "immediate-setting";
|
|
920
|
+
readonly purpose: "Change one setting that takes effect immediately.";
|
|
921
|
+
readonly states: readonly ["off", "on", "disabled", "loading"];
|
|
922
|
+
readonly actions: readonly ["toggle"];
|
|
923
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-007"];
|
|
924
|
+
readonly accessibilityRequirements: readonly ["Expose the current on or off state.", "Use a stable label that does not change with state."];
|
|
925
|
+
readonly lifecycle: {
|
|
926
|
+
readonly status: "stable";
|
|
927
|
+
readonly owner: "platform-ui";
|
|
928
|
+
readonly introducedIn: "1.0.0";
|
|
929
|
+
readonly deprecatedIn: null;
|
|
930
|
+
readonly replacementId: null;
|
|
931
|
+
};
|
|
932
|
+
};
|
|
933
|
+
readonly select: {
|
|
934
|
+
readonly version: 2;
|
|
935
|
+
readonly id: "CS-006";
|
|
936
|
+
readonly name: "select";
|
|
937
|
+
readonly semanticRole: "constrained-selection";
|
|
938
|
+
readonly purpose: "Choose one value from a bounded option set when showing every option at once is not suitable.";
|
|
939
|
+
readonly states: readonly ["closed", "open", "selected", "disabled", "invalid", "empty"];
|
|
940
|
+
readonly actions: readonly ["open", "close", "select", "move-next", "move-previous"];
|
|
941
|
+
readonly interactionContractIds: readonly ["IC-003", "IC-004", "IC-007"];
|
|
942
|
+
readonly accessibilityRequirements: readonly ["Expose a label, selected value, and expanded state.", "Keep the complete option keyboard model.", "Restore focus after the option surface closes."];
|
|
943
|
+
readonly lifecycle: {
|
|
944
|
+
readonly status: "stable";
|
|
945
|
+
readonly owner: "platform-ui";
|
|
946
|
+
readonly introducedIn: "1.0.0";
|
|
947
|
+
readonly deprecatedIn: null;
|
|
948
|
+
readonly replacementId: null;
|
|
949
|
+
};
|
|
950
|
+
};
|
|
951
|
+
readonly dialog: {
|
|
952
|
+
readonly version: 2;
|
|
953
|
+
readonly id: "CS-007";
|
|
954
|
+
readonly name: "dialog";
|
|
955
|
+
readonly semanticRole: "modal-task";
|
|
956
|
+
readonly purpose: "Temporarily contain one focused task that requires context from the current surface.";
|
|
957
|
+
readonly states: readonly ["closed", "opening", "open", "closing"];
|
|
958
|
+
readonly actions: readonly ["open", "close", "confirm", "cancel"];
|
|
959
|
+
readonly interactionContractIds: readonly ["IC-003", "IC-007"];
|
|
960
|
+
readonly accessibilityRequirements: readonly ["Expose a dialog name.", "Trap focus while modal.", "Close with Escape when dismissal is allowed.", "Restore focus to the invoking control."];
|
|
961
|
+
readonly lifecycle: {
|
|
962
|
+
readonly status: "stable";
|
|
963
|
+
readonly owner: "platform-ui";
|
|
964
|
+
readonly introducedIn: "1.0.0";
|
|
965
|
+
readonly deprecatedIn: null;
|
|
966
|
+
readonly replacementId: null;
|
|
967
|
+
};
|
|
968
|
+
};
|
|
969
|
+
readonly "alert-dialog": {
|
|
970
|
+
readonly version: 2;
|
|
971
|
+
readonly id: "CS-008";
|
|
972
|
+
readonly name: "alert-dialog";
|
|
973
|
+
readonly semanticRole: "critical-confirmation";
|
|
974
|
+
readonly purpose: "Require an explicit decision before a destructive or hard-to-reverse action.";
|
|
975
|
+
readonly states: readonly ["closed", "open", "submitting", "failed"];
|
|
976
|
+
readonly actions: readonly ["open", "confirm", "cancel"];
|
|
977
|
+
readonly interactionContractIds: readonly ["IC-001", "IC-002", "IC-003", "IC-007"];
|
|
978
|
+
readonly accessibilityRequirements: readonly ["Expose a clear consequence in the name or description.", "Place initial focus on the safest suitable action.", "Restore focus after cancellation or completion."];
|
|
979
|
+
readonly lifecycle: {
|
|
980
|
+
readonly status: "stable";
|
|
981
|
+
readonly owner: "platform-ui";
|
|
982
|
+
readonly introducedIn: "1.0.0";
|
|
983
|
+
readonly deprecatedIn: null;
|
|
984
|
+
readonly replacementId: null;
|
|
985
|
+
};
|
|
986
|
+
};
|
|
987
|
+
readonly tabs: {
|
|
988
|
+
readonly version: 2;
|
|
989
|
+
readonly id: "CS-009";
|
|
990
|
+
readonly name: "tabs";
|
|
991
|
+
readonly semanticRole: "view-selection";
|
|
992
|
+
readonly purpose: "Switch between peer content views without changing the page context.";
|
|
993
|
+
readonly states: readonly ["selected", "unselected", "disabled"];
|
|
994
|
+
readonly actions: readonly ["select", "move-next", "move-previous", "move-first", "move-last"];
|
|
995
|
+
readonly interactionContractIds: readonly ["IC-007"];
|
|
996
|
+
readonly accessibilityRequirements: readonly ["Associate each tab with one panel.", "Expose selected state.", "Support the platform tab keyboard model."];
|
|
997
|
+
readonly lifecycle: {
|
|
998
|
+
readonly status: "stable";
|
|
999
|
+
readonly owner: "platform-ui";
|
|
1000
|
+
readonly introducedIn: "1.0.0";
|
|
1001
|
+
readonly deprecatedIn: null;
|
|
1002
|
+
readonly replacementId: null;
|
|
1003
|
+
};
|
|
1004
|
+
};
|
|
1005
|
+
readonly form: {
|
|
1006
|
+
readonly version: 2;
|
|
1007
|
+
readonly id: "CS-010";
|
|
1008
|
+
readonly name: "form";
|
|
1009
|
+
readonly semanticRole: "data-submission";
|
|
1010
|
+
readonly purpose: "Collect, validate, and submit a related set of values to a server-owned boundary.";
|
|
1011
|
+
readonly states: readonly ["pristine", "dirty", "submitting", "invalid", "succeeded", "failed"];
|
|
1012
|
+
readonly actions: readonly ["edit", "submit", "reset", "leave"];
|
|
1013
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-004", "IC-008"];
|
|
1014
|
+
readonly accessibilityRequirements: readonly ["Use persistent labels and associated errors.", "Expose a server error summary.", "Announce submission progress and result.", "Warn before losing dirty values."];
|
|
1015
|
+
readonly lifecycle: {
|
|
1016
|
+
readonly status: "stable";
|
|
1017
|
+
readonly owner: "platform-ui";
|
|
1018
|
+
readonly introducedIn: "1.0.0";
|
|
1019
|
+
readonly deprecatedIn: null;
|
|
1020
|
+
readonly replacementId: null;
|
|
1021
|
+
};
|
|
1022
|
+
};
|
|
1023
|
+
readonly "data-table": {
|
|
1024
|
+
readonly version: 2;
|
|
1025
|
+
readonly id: "CS-011";
|
|
1026
|
+
readonly name: "data-table";
|
|
1027
|
+
readonly semanticRole: "tabular-data-exploration";
|
|
1028
|
+
readonly purpose: "Inspect and act on structured records while preserving row and column relationships.";
|
|
1029
|
+
readonly states: readonly ["loading", "populated", "empty", "filtered-empty", "selected", "failed"];
|
|
1030
|
+
readonly actions: readonly ["sort", "filter", "select", "paginate", "activate-row-action"];
|
|
1031
|
+
readonly interactionContractIds: readonly ["IC-002", "IC-006", "IC-007"];
|
|
1032
|
+
readonly accessibilityRequirements: readonly ["Preserve row and column relationships.", "Name sorting, filtering, selection, and row actions.", "Announce loading and empty states.", "Keep a non-dragging alternative for reordering."];
|
|
1033
|
+
readonly lifecycle: {
|
|
1034
|
+
readonly status: "stable";
|
|
1035
|
+
readonly owner: "platform-ui";
|
|
1036
|
+
readonly introducedIn: "1.0.0";
|
|
1037
|
+
readonly deprecatedIn: null;
|
|
1038
|
+
readonly replacementId: null;
|
|
1039
|
+
};
|
|
1040
|
+
};
|
|
1041
|
+
};
|
|
1042
|
+
export declare const telemetryContract: {
|
|
1043
|
+
readonly version: 1;
|
|
1044
|
+
readonly runtimeSchemaVersion: 2;
|
|
1045
|
+
readonly events: readonly ["accessibility.journey", "client.exception", "component.bundle", "component.exposure", "component.state", "form.abandonment", "form.attempt", "form.submit", "form.validation", "interaction", "livewire.dom-update", "livewire.request", "network.summary", "runtime.init", "server.request", "web-vital"];
|
|
1046
|
+
readonly componentIdentity: {
|
|
1047
|
+
readonly required: readonly ["implementationName", "adapter", "designLanguageRelease"];
|
|
1048
|
+
readonly optional: readonly ["semanticComponentId"];
|
|
1049
|
+
};
|
|
1050
|
+
readonly outcomes: readonly ["success", "failure", "abandoned", "observed"];
|
|
1051
|
+
readonly ratings: readonly ["good", "needs-improvement", "poor"];
|
|
1052
|
+
readonly privacy: {
|
|
1053
|
+
readonly prohibited: readonly ["field values", "user identifiers", "email addresses", "full URLs", "stack traces"];
|
|
1054
|
+
};
|
|
1055
|
+
};
|
|
1056
|
+
export declare const laravelPlatformAdapter: {
|
|
1057
|
+
readonly version: 1;
|
|
1058
|
+
readonly adapterVersion: "0.1.0";
|
|
1059
|
+
readonly mappings: readonly [{
|
|
1060
|
+
readonly semanticContractId: "CS-001";
|
|
1061
|
+
readonly implementations: readonly [{
|
|
1062
|
+
readonly name: "button";
|
|
1063
|
+
readonly runtime: "blade";
|
|
1064
|
+
readonly primary: true;
|
|
1065
|
+
}];
|
|
1066
|
+
}, {
|
|
1067
|
+
readonly semanticContractId: "CS-002";
|
|
1068
|
+
readonly implementations: readonly [{
|
|
1069
|
+
readonly name: "input";
|
|
1070
|
+
readonly runtime: "blade";
|
|
1071
|
+
readonly primary: true;
|
|
1072
|
+
}];
|
|
1073
|
+
}, {
|
|
1074
|
+
readonly semanticContractId: "CS-003";
|
|
1075
|
+
readonly implementations: readonly [{
|
|
1076
|
+
readonly name: "checkbox";
|
|
1077
|
+
readonly runtime: "blade";
|
|
1078
|
+
readonly primary: true;
|
|
1079
|
+
}];
|
|
1080
|
+
}, {
|
|
1081
|
+
readonly semanticContractId: "CS-004";
|
|
1082
|
+
readonly implementations: readonly [{
|
|
1083
|
+
readonly name: "radio";
|
|
1084
|
+
readonly runtime: "blade";
|
|
1085
|
+
readonly primary: true;
|
|
1086
|
+
}];
|
|
1087
|
+
}, {
|
|
1088
|
+
readonly semanticContractId: "CS-005";
|
|
1089
|
+
readonly implementations: readonly [{
|
|
1090
|
+
readonly name: "switch";
|
|
1091
|
+
readonly runtime: "blade";
|
|
1092
|
+
readonly primary: true;
|
|
1093
|
+
}];
|
|
1094
|
+
}, {
|
|
1095
|
+
readonly semanticContractId: "CS-006";
|
|
1096
|
+
readonly implementations: readonly [{
|
|
1097
|
+
readonly name: "select";
|
|
1098
|
+
readonly runtime: "blade";
|
|
1099
|
+
readonly primary: true;
|
|
1100
|
+
}];
|
|
1101
|
+
}, {
|
|
1102
|
+
readonly semanticContractId: "CS-007";
|
|
1103
|
+
readonly implementations: readonly [{
|
|
1104
|
+
readonly name: "dialog";
|
|
1105
|
+
readonly runtime: "blade";
|
|
1106
|
+
readonly primary: true;
|
|
1107
|
+
}, {
|
|
1108
|
+
readonly name: "livewire-modal";
|
|
1109
|
+
readonly runtime: "livewire";
|
|
1110
|
+
readonly primary: false;
|
|
1111
|
+
}];
|
|
1112
|
+
}, {
|
|
1113
|
+
readonly semanticContractId: "CS-008";
|
|
1114
|
+
readonly implementations: readonly [{
|
|
1115
|
+
readonly name: "alert-dialog";
|
|
1116
|
+
readonly runtime: "blade";
|
|
1117
|
+
readonly primary: true;
|
|
1118
|
+
}, {
|
|
1119
|
+
readonly name: "livewire-confirm";
|
|
1120
|
+
readonly runtime: "livewire";
|
|
1121
|
+
readonly primary: false;
|
|
1122
|
+
}];
|
|
1123
|
+
}, {
|
|
1124
|
+
readonly semanticContractId: "CS-009";
|
|
1125
|
+
readonly implementations: readonly [{
|
|
1126
|
+
readonly name: "tabs";
|
|
1127
|
+
readonly runtime: "blade";
|
|
1128
|
+
readonly primary: true;
|
|
1129
|
+
}, {
|
|
1130
|
+
readonly name: "livewire-tabs";
|
|
1131
|
+
readonly runtime: "livewire";
|
|
1132
|
+
readonly primary: false;
|
|
1133
|
+
}];
|
|
1134
|
+
}, {
|
|
1135
|
+
readonly semanticContractId: "CS-010";
|
|
1136
|
+
readonly implementations: readonly [{
|
|
1137
|
+
readonly name: "form";
|
|
1138
|
+
readonly runtime: "blade";
|
|
1139
|
+
readonly primary: true;
|
|
1140
|
+
}];
|
|
1141
|
+
}, {
|
|
1142
|
+
readonly semanticContractId: "CS-011";
|
|
1143
|
+
readonly implementations: readonly [{
|
|
1144
|
+
readonly name: "data-table";
|
|
1145
|
+
readonly runtime: "blade";
|
|
1146
|
+
readonly primary: true;
|
|
1147
|
+
}, {
|
|
1148
|
+
readonly name: "livewire-data-table";
|
|
1149
|
+
readonly runtime: "livewire";
|
|
1150
|
+
readonly primary: false;
|
|
1151
|
+
}];
|
|
1152
|
+
}];
|
|
1153
|
+
};
|
|
1154
|
+
export declare const designLanguageRelease: {
|
|
1155
|
+
readonly schemaVersion: 1;
|
|
1156
|
+
readonly releaseVersion: "1.3.0";
|
|
1157
|
+
readonly foundationVersion: "2.0.0";
|
|
1158
|
+
readonly contracts: {
|
|
1159
|
+
readonly interaction: 2;
|
|
1160
|
+
readonly visualPattern: 1;
|
|
1161
|
+
readonly componentSemantic: 2;
|
|
1162
|
+
readonly componentApi: 2;
|
|
1163
|
+
readonly platformAdapter: 1;
|
|
1164
|
+
readonly telemetry: 1;
|
|
1165
|
+
};
|
|
1166
|
+
readonly adapters: {
|
|
1167
|
+
readonly laravel: "0.1.0";
|
|
1168
|
+
readonly typescript: "0.1.0";
|
|
1169
|
+
readonly mcp: "0.1.0";
|
|
1170
|
+
};
|
|
1171
|
+
readonly generatorVersion: 2;
|
|
1172
|
+
readonly sources: {
|
|
1173
|
+
readonly tokens: {
|
|
1174
|
+
readonly sha256: "sha256:05ade47e548b432e15dd2901575447376580c795beeef9d04189436dbb60a541";
|
|
1175
|
+
readonly files: 26;
|
|
1176
|
+
};
|
|
1177
|
+
readonly interactions: "sha256:bab774f918c06dfc6c01a59d1e3b8d4e0ff4f51a3282710039974e696381bc70";
|
|
1178
|
+
readonly visualPatterns: "sha256:ca7d0e659c68748f4cf71f78cd07d8e71c757757ac477e7d89768036d0b6b1d8";
|
|
1179
|
+
readonly componentSemantics: "sha256:bd93376709eceeb32bf5c26c542856162f5e56e2b5a5beb1e6f4698a925981b0";
|
|
1180
|
+
readonly telemetry: "sha256:86b2605c00bf3c6236c96dbaf3008757b6cdf085c9f29661310dfde7f38e8221";
|
|
1181
|
+
readonly laravelAdapter: "sha256:3238c6e8793013afc57490b083beae25e124c0c4ae7d6db24577df4a3dc7efa4";
|
|
1182
|
+
};
|
|
1183
|
+
readonly catalogSha256: "0b7c8a06106aa60b2dae1f2905cc993b686d7e44503d3761cf8ea420ad637b35";
|
|
1184
|
+
};
|
|
1185
|
+
export type InteractionContractId = keyof typeof interactionContracts;
|
|
1186
|
+
export type VisualPatternContractId = keyof typeof visualPatternContracts;
|
|
1187
|
+
export type ComponentSemanticName = keyof typeof componentSemantics;
|
|
1188
|
+
export type LaravelImplementationName = typeof laravelPlatformAdapter.mappings[number]["implementations"][number]["name"];
|
|
1189
|
+
export declare function getInteractionContract(id: InteractionContractId): InteractionContract;
|
|
1190
|
+
export declare function getVisualPatternContract(id: VisualPatternContractId): VisualPatternContract;
|
|
1191
|
+
export declare function getComponentSemanticContract(name: ComponentSemanticName): ComponentSemanticContract;
|
|
1192
|
+
export declare function getLaravelSemanticMapping(implementationName: LaravelImplementationName): PlatformAdapterMapping | undefined;
|