@a11y-context/mcp-server 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 +201 -0
- package/README.md +62 -0
- package/corpus/web/react/components/accordion.basic.md +157 -0
- package/corpus/web/react/components/button.basic.md +91 -0
- package/corpus/web/react/components/button.toggle.md +109 -0
- package/corpus/web/react/components/carousel.dots.md +376 -0
- package/corpus/web/react/components/carousel.thumbnails.md +395 -0
- package/corpus/web/react/components/collection-row.basic.md +179 -0
- package/corpus/web/react/components/combobox.autocomplete.md +293 -0
- package/corpus/web/react/components/dialog.modal.md +202 -0
- package/corpus/web/react/components/dialog.nonmodal.md +184 -0
- package/corpus/web/react/components/disclosure.basic.md +97 -0
- package/corpus/web/react/components/grid.channel-guide.md +453 -0
- package/corpus/web/react/components/link.basic.md +105 -0
- package/corpus/web/react/components/listbox.basic.md +263 -0
- package/corpus/web/react/components/menu.basic.md +294 -0
- package/corpus/web/react/components/menu.menubar.md +296 -0
- package/corpus/web/react/components/navigation-menu.basic.md +349 -0
- package/corpus/web/react/components/navigation-menu.dropdown.md +220 -0
- package/corpus/web/react/components/select.basic.md +318 -0
- package/corpus/web/react/components/select.native.md +108 -0
- package/corpus/web/react/components/switch.basic.md +151 -0
- package/corpus/web/react/components/toast.basic.md +112 -0
- package/corpus/web/react/components/tooltip.basic.md +139 -0
- package/corpus/web/react/global/global_rules.md +292 -0
- package/corpus/web/react/patterns.json +946 -0
- package/dist/config.js +35 -0
- package/dist/contracts/v1/types.js +6 -0
- package/dist/http.js +103 -0
- package/dist/index.js +8 -0
- package/dist/mcp/createServer.js +122 -0
- package/dist/mcp/response.js +7 -0
- package/dist/mcp/server.js +15 -0
- package/dist/repo/cache.js +27 -0
- package/dist/repo/globalRules.js +304 -0
- package/dist/repo/index.js +178 -0
- package/dist/repo/paths.js +25 -0
- package/dist/repo/sections.js +166 -0
- package/dist/smoke/smoke-remote-mcp.js +43 -0
- package/dist/telemetry.js +15 -0
- package/dist/telemetryWrap.js +48 -0
- package/dist/tools/getGlobalRules.js +33 -0
- package/dist/tools/getPattern.js +54 -0
- package/dist/tools/listPatterns.js +33 -0
- package/dist/utils/fs.js +18 -0
- package/dist/utils/hash.js +4 -0
- package/package.json +68 -0
|
@@ -0,0 +1,946 @@
|
|
|
1
|
+
{
|
|
2
|
+
"stack": "web/react",
|
|
3
|
+
"schema_version": "1.0.0",
|
|
4
|
+
"catalog_revision": "0.5.2",
|
|
5
|
+
"cache_ttl_seconds": 3600,
|
|
6
|
+
"patterns": [
|
|
7
|
+
{
|
|
8
|
+
"id": "accordion.basic",
|
|
9
|
+
"title": "Accordion",
|
|
10
|
+
"pattern_type": "component",
|
|
11
|
+
"status": "beta",
|
|
12
|
+
"latest_version": "0.1.1",
|
|
13
|
+
"summary": "A set of show/hide sections with heading-wrapped buttons controlling associated panels via aria-expanded (and optionally aria-controls / region).",
|
|
14
|
+
"aliases": [
|
|
15
|
+
"accordion",
|
|
16
|
+
"disclosure group",
|
|
17
|
+
"expand collapse",
|
|
18
|
+
"collapsible panels"
|
|
19
|
+
],
|
|
20
|
+
"tags": [
|
|
21
|
+
"accordion",
|
|
22
|
+
"disclosure",
|
|
23
|
+
"show-hide"
|
|
24
|
+
],
|
|
25
|
+
"selection_excerpt": {
|
|
26
|
+
"use_when": [
|
|
27
|
+
"Use when content can be organized into collapsible sections to reduce scanning and scrolling."
|
|
28
|
+
],
|
|
29
|
+
"do_not_use_when": [
|
|
30
|
+
"Do not use when content must be visible for comparison or comprehension (use static, non-collapsing sections instead)."
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"variants": [],
|
|
34
|
+
"default_variant": null,
|
|
35
|
+
"source": {
|
|
36
|
+
"path": "components/accordion.basic.md",
|
|
37
|
+
"format": "markdown",
|
|
38
|
+
"frontmatter": true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "button.basic",
|
|
43
|
+
"title": "Basic Button",
|
|
44
|
+
"pattern_type": "component",
|
|
45
|
+
"status": "beta",
|
|
46
|
+
"latest_version": "0.2.1",
|
|
47
|
+
"summary": "Native button that triggers an action. Supports text-only, icon+text, and icon-only labeling patterns.",
|
|
48
|
+
"aliases": [
|
|
49
|
+
"btn",
|
|
50
|
+
"primary button",
|
|
51
|
+
"icon button",
|
|
52
|
+
"call to action",
|
|
53
|
+
"cta"
|
|
54
|
+
],
|
|
55
|
+
"tags": [
|
|
56
|
+
"button",
|
|
57
|
+
"control",
|
|
58
|
+
"action",
|
|
59
|
+
"icon-button"
|
|
60
|
+
],
|
|
61
|
+
"selection_excerpt": {
|
|
62
|
+
"use_when": [
|
|
63
|
+
"Use when the user triggers an immediate action (e.g., \"Save\", \"Continue\", \"Dismiss\")."
|
|
64
|
+
],
|
|
65
|
+
"do_not_use_when": [
|
|
66
|
+
"Do not use when the control navigates to a new URL (use link).",
|
|
67
|
+
"Do not use when the control represents an on/off pressed state (use button.toggle).",
|
|
68
|
+
"Do not use when the control opens a menu (use menu.basic)."
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"variants": [],
|
|
72
|
+
"default_variant": null,
|
|
73
|
+
"source": {
|
|
74
|
+
"path": "components/button.basic.md",
|
|
75
|
+
"format": "markdown",
|
|
76
|
+
"frontmatter": true
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "button.toggle",
|
|
81
|
+
"title": "Toggle Button",
|
|
82
|
+
"pattern_type": "component",
|
|
83
|
+
"status": "beta",
|
|
84
|
+
"latest_version": "0.2.1",
|
|
85
|
+
"summary": "Two- or three-state button that toggles between pressed and not pressed using aria-pressed.",
|
|
86
|
+
"aliases": [
|
|
87
|
+
"toggle button",
|
|
88
|
+
"pressed button"
|
|
89
|
+
],
|
|
90
|
+
"tags": [
|
|
91
|
+
"button",
|
|
92
|
+
"toggle",
|
|
93
|
+
"pressed",
|
|
94
|
+
"aria-pressed",
|
|
95
|
+
"mute-button"
|
|
96
|
+
],
|
|
97
|
+
"selection_excerpt": {
|
|
98
|
+
"use_when": [
|
|
99
|
+
"Use when a control toggles a feature or action within the current context (e.g., \"Mute\", \"Bold\", \"Pin\", \"Enable Closed Captioning\")."
|
|
100
|
+
],
|
|
101
|
+
"do_not_use_when": [
|
|
102
|
+
"Do not use when the control navigates to a new URL (use link).",
|
|
103
|
+
"Do not use when the control represents a persistent on/off system or application setting, such as \"Enable notifications\", \"Dark mode\" (use switch.basic).",
|
|
104
|
+
"Do not use when the control records a value to submit with a form rather than toggling something in the current context (use checkbox.basic).",
|
|
105
|
+
"Do not use when the control opens a menu (use menu.basic)."
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"variants": [],
|
|
109
|
+
"default_variant": null,
|
|
110
|
+
"source": {
|
|
111
|
+
"path": "components/button.toggle.md",
|
|
112
|
+
"format": "markdown",
|
|
113
|
+
"frontmatter": true
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "carousel.dots",
|
|
118
|
+
"title": "Carousel with Dot Navigation",
|
|
119
|
+
"pattern_type": "component",
|
|
120
|
+
"status": "beta",
|
|
121
|
+
"latest_version": "0.2.0",
|
|
122
|
+
"summary": "Horizontally-advancing carousel (aka hero or marquee carousel) with 'dot' navigation, prev/next buttons, and pause behavior.",
|
|
123
|
+
"aliases": [
|
|
124
|
+
"hero carousel",
|
|
125
|
+
"marquee",
|
|
126
|
+
"featured gallery",
|
|
127
|
+
"hero gallery",
|
|
128
|
+
"image gallery",
|
|
129
|
+
"slider"
|
|
130
|
+
],
|
|
131
|
+
"tags": [
|
|
132
|
+
"marquee",
|
|
133
|
+
"carousel",
|
|
134
|
+
"slider",
|
|
135
|
+
"gallery",
|
|
136
|
+
"dots",
|
|
137
|
+
"autoplay",
|
|
138
|
+
"reduced-motion"
|
|
139
|
+
],
|
|
140
|
+
"selection_excerpt": {
|
|
141
|
+
"use_when": [
|
|
142
|
+
"Use when slides are navigated sequentially using next/previous controls or dot indicators.",
|
|
143
|
+
"Use when dot buttons indicate slide position but do not display image previews."
|
|
144
|
+
],
|
|
145
|
+
"do_not_use_when": [
|
|
146
|
+
"Do not use when thumbnail images are shown for direct slide selection (use carousel.thumbnails).",
|
|
147
|
+
"Do not use when multiple slides are visible at once in a horizontal list (use content-shelf)."
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
"variants": [],
|
|
151
|
+
"default_variant": null,
|
|
152
|
+
"source": {
|
|
153
|
+
"path": "components/carousel.dots.md",
|
|
154
|
+
"format": "markdown",
|
|
155
|
+
"frontmatter": true
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "carousel.thumbnails",
|
|
160
|
+
"title": "Carousel with Thumbnail Navigation",
|
|
161
|
+
"pattern_type": "component",
|
|
162
|
+
"status": "beta",
|
|
163
|
+
"latest_version": "0.2.0",
|
|
164
|
+
"summary": "Horizontally-advancing carousel (aka hero or marquee carousel) with thumbnail navigation, prev/next buttons, and pause behavior.",
|
|
165
|
+
"aliases": [
|
|
166
|
+
"hero carousel thumbnails",
|
|
167
|
+
"marquee thumbnails",
|
|
168
|
+
"featured gallery thumbnails",
|
|
169
|
+
"hero gallery thumbnails",
|
|
170
|
+
"preview carousel"
|
|
171
|
+
],
|
|
172
|
+
"tags": [
|
|
173
|
+
"marquee",
|
|
174
|
+
"carousel",
|
|
175
|
+
"slider",
|
|
176
|
+
"gallery",
|
|
177
|
+
"thumbnails",
|
|
178
|
+
"autoplay",
|
|
179
|
+
"reduced-motion",
|
|
180
|
+
"image-preview"
|
|
181
|
+
],
|
|
182
|
+
"selection_excerpt": {
|
|
183
|
+
"use_when": [
|
|
184
|
+
"Use when thumbnail images are displayed for direct slide selection.",
|
|
185
|
+
"Use when users can identify slide content from visible preview images before activating a slide.",
|
|
186
|
+
"Use when thumbnails act as explicit navigation controls for specific slides."
|
|
187
|
+
],
|
|
188
|
+
"do_not_use_when": [
|
|
189
|
+
"Do not use when navigation is limited to dot indicators without image previews (use carousel.dots).",
|
|
190
|
+
"Do not use when multiple full-size items are visible simultaneously in a scrollable row (use content-shelf)."
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"variants": [],
|
|
194
|
+
"default_variant": null,
|
|
195
|
+
"source": {
|
|
196
|
+
"path": "components/carousel.thumbnails.md",
|
|
197
|
+
"format": "markdown",
|
|
198
|
+
"frontmatter": true
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"id": "collection-row.basic",
|
|
203
|
+
"title": "Collection Row",
|
|
204
|
+
"pattern_type": "component",
|
|
205
|
+
"status": "beta",
|
|
206
|
+
"latest_version": "0.2.0",
|
|
207
|
+
"summary": "Horizontal product shelf with a heading, list semantics, and Prev/Next paging that moves focus to newly revealed items.",
|
|
208
|
+
"aliases": [
|
|
209
|
+
"content row",
|
|
210
|
+
"content rail",
|
|
211
|
+
"rail",
|
|
212
|
+
"strip",
|
|
213
|
+
"shelf",
|
|
214
|
+
"multi item carousel",
|
|
215
|
+
"product row",
|
|
216
|
+
"product card grid",
|
|
217
|
+
"product cards",
|
|
218
|
+
"card row",
|
|
219
|
+
"media row"
|
|
220
|
+
],
|
|
221
|
+
"tags": [
|
|
222
|
+
"collection-row",
|
|
223
|
+
"shelf",
|
|
224
|
+
"rail",
|
|
225
|
+
"horizontal-list",
|
|
226
|
+
"ecommerce",
|
|
227
|
+
"navigation"
|
|
228
|
+
],
|
|
229
|
+
"selection_excerpt": {
|
|
230
|
+
"use_when": [
|
|
231
|
+
"Use when displaying multiple related items in a horizontally scrollable row under a shared category heading (e.g., \"Customers Also Viewed\", \"Action Movies\").",
|
|
232
|
+
"Use when multiple items are visible simultaneously and can be scrolled left or right.",
|
|
233
|
+
"Use when each item is a compact card with a primary visual element and brief supporting text."
|
|
234
|
+
],
|
|
235
|
+
"do_not_use_when": [
|
|
236
|
+
"Do not use when only one item is visible at a time within a rotatable sequence (use carousel).",
|
|
237
|
+
"Do not use when items are arranged in a multi-row or multi-column layout (use grid).",
|
|
238
|
+
"Do not use when items are presented as a simple vertical list without horizontal scrolling (use list)."
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
"variants": [],
|
|
242
|
+
"default_variant": null,
|
|
243
|
+
"source": {
|
|
244
|
+
"path": "components/collection-row.basic.md",
|
|
245
|
+
"format": "markdown",
|
|
246
|
+
"frontmatter": true
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "combobox.autocomplete",
|
|
251
|
+
"title": "Autocomplete Combobox",
|
|
252
|
+
"pattern_type": "component",
|
|
253
|
+
"status": "beta",
|
|
254
|
+
"latest_version": "0.1.0",
|
|
255
|
+
"summary": "An editable text input that filters a listbox of options as the user types; uses role=\"combobox\" with aria-autocomplete, aria-expanded, aria-controls, and aria-activedescendant while DOM focus stays on the input.",
|
|
256
|
+
"aliases": [
|
|
257
|
+
"typeahead",
|
|
258
|
+
"type-ahead",
|
|
259
|
+
"autosuggest",
|
|
260
|
+
"auto-suggest",
|
|
261
|
+
"search select",
|
|
262
|
+
"filterable dropdown",
|
|
263
|
+
"predictive input",
|
|
264
|
+
"combo box"
|
|
265
|
+
],
|
|
266
|
+
"tags": [
|
|
267
|
+
"combobox",
|
|
268
|
+
"autocomplete",
|
|
269
|
+
"listbox",
|
|
270
|
+
"filter",
|
|
271
|
+
"aria-activedescendant",
|
|
272
|
+
"form",
|
|
273
|
+
"search"
|
|
274
|
+
],
|
|
275
|
+
"selection_excerpt": {
|
|
276
|
+
"use_when": [
|
|
277
|
+
"Use when the option set is large enough that typing to filter or search is faster than scanning a list (e.g., \"Country\", \"City\", \"Assign to a user\").",
|
|
278
|
+
"Use when the user narrows the available options by typing (e.g., \"Search shows\", \"Add a tag\").",
|
|
279
|
+
"Use when free-text entry is allowed alongside suggestions (e.g., a tag field that accepts new values while suggesting existing ones)."
|
|
280
|
+
],
|
|
281
|
+
"do_not_use_when": [
|
|
282
|
+
"Do not use when no typing is needed and the set is small or preset (use select.native, or for a rich custom-styled picker use select.basic).",
|
|
283
|
+
"Do not use when the options must be permanently visible with no popup (use listbox.basic).",
|
|
284
|
+
"Do not use when the control performs actions rather than picking a value (use menu.basic).",
|
|
285
|
+
"Do not use when the trigger reveals navigation links (use navigation-menu.dropdown)."
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
"variants": [],
|
|
289
|
+
"default_variant": null,
|
|
290
|
+
"source": {
|
|
291
|
+
"path": "components/combobox.autocomplete.md",
|
|
292
|
+
"format": "markdown",
|
|
293
|
+
"frontmatter": true
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"id": "dialog.modal",
|
|
298
|
+
"title": "Dialog (Modal)",
|
|
299
|
+
"pattern_type": "component",
|
|
300
|
+
"status": "beta",
|
|
301
|
+
"latest_version": "0.3.1",
|
|
302
|
+
"summary": "User-initiated blocking dialog. Uses the native <dialog> element with .showModal() so the browser handles focus trap, background inertness, Escape dismissal, focus restoration, and top-layer rendering.",
|
|
303
|
+
"aliases": [
|
|
304
|
+
"dialog",
|
|
305
|
+
"modal",
|
|
306
|
+
"pop-up"
|
|
307
|
+
],
|
|
308
|
+
"tags": [
|
|
309
|
+
"dialog",
|
|
310
|
+
"modal",
|
|
311
|
+
"pop-up",
|
|
312
|
+
"overlay",
|
|
313
|
+
"focus-trap",
|
|
314
|
+
"blocking",
|
|
315
|
+
"native-dialog",
|
|
316
|
+
"show-modal"
|
|
317
|
+
],
|
|
318
|
+
"selection_excerpt": {
|
|
319
|
+
"use_when": [
|
|
320
|
+
"Use when content appears in an overlay that blocks interaction with the underlying page.",
|
|
321
|
+
"Use when keyboard focus must move into the dialog and remain contained until dismissal.",
|
|
322
|
+
"Use when the user must explicitly complete or dismiss the dialog before returning to the main interface."
|
|
323
|
+
],
|
|
324
|
+
"do_not_use_when": [
|
|
325
|
+
"Do not use when the content is part of the normal page flow and does not block background interaction.",
|
|
326
|
+
"Do not use when presenting brief, non-blocking status messages that do not require focus movement (use toast or snackbar).",
|
|
327
|
+
"Do not use when the message is urgent and requires immediate acknowledgment (use dialog.alert).",
|
|
328
|
+
"Do not use when the interaction involves complex, multi-step workflows spanning multiple screens."
|
|
329
|
+
]
|
|
330
|
+
},
|
|
331
|
+
"variants": [],
|
|
332
|
+
"default_variant": null,
|
|
333
|
+
"source": {
|
|
334
|
+
"path": "components/dialog.modal.md",
|
|
335
|
+
"format": "markdown",
|
|
336
|
+
"frontmatter": true
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"id": "dialog.nonmodal",
|
|
341
|
+
"title": "Dialog (Non-Modal)",
|
|
342
|
+
"pattern_type": "component",
|
|
343
|
+
"status": "beta",
|
|
344
|
+
"latest_version": "0.1.0",
|
|
345
|
+
"summary": "A dialog that does not block the page; uses role=\"dialog\" with an accessible name, moves focus in on open and restores it on close, but does not trap focus or inert the background.",
|
|
346
|
+
"aliases": [
|
|
347
|
+
"non-modal dialog",
|
|
348
|
+
"modeless dialog",
|
|
349
|
+
"non-blocking dialog",
|
|
350
|
+
"popover dialog",
|
|
351
|
+
"editor popover",
|
|
352
|
+
"composer panel",
|
|
353
|
+
"floating panel"
|
|
354
|
+
],
|
|
355
|
+
"tags": [
|
|
356
|
+
"dialog",
|
|
357
|
+
"non-modal",
|
|
358
|
+
"overlay",
|
|
359
|
+
"popover",
|
|
360
|
+
"focus-restoration",
|
|
361
|
+
"modeless"
|
|
362
|
+
],
|
|
363
|
+
"selection_excerpt": {
|
|
364
|
+
"use_when": [
|
|
365
|
+
"Use when an overlay presents content or a task without blocking the page (e.g., a non-blocking editor popover, a composer, a rich panel with interactive controls).",
|
|
366
|
+
"Use when the user can keep interacting with the rest of the page while the overlay is open.",
|
|
367
|
+
"Use when focus should move into the dialog on open but not be trapped there."
|
|
368
|
+
],
|
|
369
|
+
"do_not_use_when": [
|
|
370
|
+
"Do not use when the user must complete or dismiss the overlay before returning to the page (use dialog.modal).",
|
|
371
|
+
"Do not use when a control simply shows and hides inline content (use disclosure.basic).",
|
|
372
|
+
"Do not use when the overlay is a menu of commands (use menu.basic).",
|
|
373
|
+
"Do not use when the message is a brief, non-interactive status update (use toast.basic).",
|
|
374
|
+
"Do not use when the content is a plain-text supplementary hint (use tooltip.basic)."
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
"variants": [],
|
|
378
|
+
"default_variant": null,
|
|
379
|
+
"source": {
|
|
380
|
+
"path": "components/dialog.nonmodal.md",
|
|
381
|
+
"format": "markdown",
|
|
382
|
+
"frontmatter": true
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"id": "disclosure.basic",
|
|
387
|
+
"title": "Disclosure",
|
|
388
|
+
"pattern_type": "component",
|
|
389
|
+
"status": "beta",
|
|
390
|
+
"latest_version": "0.1.0",
|
|
391
|
+
"summary": "A button that shows and hides an associated content region; uses aria-expanded on the trigger and aria-controls to the region, with DOM show/hide.",
|
|
392
|
+
"aliases": [
|
|
393
|
+
"disclosure",
|
|
394
|
+
"show more",
|
|
395
|
+
"expand collapse",
|
|
396
|
+
"expandable section",
|
|
397
|
+
"collapsible panel",
|
|
398
|
+
"reveal panel",
|
|
399
|
+
"toggle content",
|
|
400
|
+
"twisty"
|
|
401
|
+
],
|
|
402
|
+
"tags": [
|
|
403
|
+
"disclosure",
|
|
404
|
+
"show-hide",
|
|
405
|
+
"expand-collapse",
|
|
406
|
+
"button",
|
|
407
|
+
"toggle"
|
|
408
|
+
],
|
|
409
|
+
"selection_excerpt": {
|
|
410
|
+
"use_when": [
|
|
411
|
+
"Use when a control shows and hides a single section of related content (e.g., \"Show more details\", an FAQ answer, an advanced-options or filters panel).",
|
|
412
|
+
"Use when the revealed content is arbitrary (text, form fields, media).",
|
|
413
|
+
"Use when a single independent expandable region is toggled by one trigger."
|
|
414
|
+
],
|
|
415
|
+
"do_not_use_when": [
|
|
416
|
+
"Do not use when several coordinated expandable sections form an accordion (use accordion.basic).",
|
|
417
|
+
"Do not use when the revealed items are in-place commands or actions (use menu.basic).",
|
|
418
|
+
"Do not use when a single trigger reveals a list of navigation links (use navigation-menu.dropdown).",
|
|
419
|
+
"Do not use when the control chooses a form value (use select.native)."
|
|
420
|
+
]
|
|
421
|
+
},
|
|
422
|
+
"variants": [],
|
|
423
|
+
"default_variant": null,
|
|
424
|
+
"source": {
|
|
425
|
+
"path": "components/disclosure.basic.md",
|
|
426
|
+
"format": "markdown",
|
|
427
|
+
"frontmatter": true
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"id": "grid.channel-guide",
|
|
432
|
+
"title": "Channel Guide Grid",
|
|
433
|
+
"pattern_type": "component",
|
|
434
|
+
"status": "beta",
|
|
435
|
+
"latest_version": "0.2.0",
|
|
436
|
+
"summary": "Interactive channel guide grid with one Tab stop and arrow-key navigation across channels and time slots.",
|
|
437
|
+
"aliases": [
|
|
438
|
+
"epg",
|
|
439
|
+
"electronic program guide",
|
|
440
|
+
"tv guide",
|
|
441
|
+
"live guide",
|
|
442
|
+
"schedule grid"
|
|
443
|
+
],
|
|
444
|
+
"tags": [
|
|
445
|
+
"grid",
|
|
446
|
+
"channel-guide",
|
|
447
|
+
"epg",
|
|
448
|
+
"schedule",
|
|
449
|
+
"roving-tabindex",
|
|
450
|
+
"keyboard"
|
|
451
|
+
],
|
|
452
|
+
"selection_excerpt": {
|
|
453
|
+
"use_when": [
|
|
454
|
+
"Use when content is arranged in a 2D matrix of channels (rows) and time slots (columns).",
|
|
455
|
+
"Use when program items span time horizontally and are positioned according to schedule duration.",
|
|
456
|
+
"Use when users navigate spatially across a time-based schedule using arrow keys."
|
|
457
|
+
],
|
|
458
|
+
"do_not_use_when": [
|
|
459
|
+
"Do not use when presenting static tabular data with row/column headers (use grid.data).",
|
|
460
|
+
"Do not use when items are displayed as a simple vertical or horizontal list without time-based positioning (use list).",
|
|
461
|
+
"Do not use when supporting spreadsheet-style editing, multi-cell selection, sorting, or resizing (use grid.interactive)."
|
|
462
|
+
]
|
|
463
|
+
},
|
|
464
|
+
"variants": [],
|
|
465
|
+
"default_variant": null,
|
|
466
|
+
"source": {
|
|
467
|
+
"path": "components/grid.channel-guide.md",
|
|
468
|
+
"format": "markdown",
|
|
469
|
+
"frontmatter": true
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"id": "link.basic",
|
|
474
|
+
"title": "Link",
|
|
475
|
+
"pattern_type": "component",
|
|
476
|
+
"status": "beta",
|
|
477
|
+
"latest_version": "0.2.0",
|
|
478
|
+
"summary": "Native link for navigation using <a href>. Supports optional context in the accessible name, including \"opens in new tab/window/dialog\".",
|
|
479
|
+
"aliases": [
|
|
480
|
+
"anchor",
|
|
481
|
+
"hyperlink",
|
|
482
|
+
"external link"
|
|
483
|
+
],
|
|
484
|
+
"tags": [
|
|
485
|
+
"link",
|
|
486
|
+
"anchor",
|
|
487
|
+
"navigation",
|
|
488
|
+
"external-link"
|
|
489
|
+
],
|
|
490
|
+
"selection_excerpt": {
|
|
491
|
+
"use_when": [
|
|
492
|
+
"Use when activating the element navigates to a different URL, route, or in-page anchor.",
|
|
493
|
+
"Use when the primary purpose of the element is destination-based navigation rather than performing an action."
|
|
494
|
+
],
|
|
495
|
+
"do_not_use_when": [
|
|
496
|
+
"Do not use when activating the element performs an in-place action such as submitting, saving, deleting, toggling, or opening a dialog (use button).",
|
|
497
|
+
"Do not use when the element changes UI state without navigation (use button)."
|
|
498
|
+
]
|
|
499
|
+
},
|
|
500
|
+
"variants": [],
|
|
501
|
+
"default_variant": null,
|
|
502
|
+
"source": {
|
|
503
|
+
"path": "components/link.basic.md",
|
|
504
|
+
"format": "markdown",
|
|
505
|
+
"frontmatter": true
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"id": "listbox.basic",
|
|
510
|
+
"title": "Listbox",
|
|
511
|
+
"pattern_type": "component",
|
|
512
|
+
"status": "beta",
|
|
513
|
+
"latest_version": "0.1.0",
|
|
514
|
+
"summary": "An always-visible list of selectable options using role=\"listbox\" and role=\"option\", supporting single or multiple selection with roving tabindex or aria-activedescendant.",
|
|
515
|
+
"aliases": [
|
|
516
|
+
"option list",
|
|
517
|
+
"select list",
|
|
518
|
+
"single-select list",
|
|
519
|
+
"multi-select list",
|
|
520
|
+
"transfer list source",
|
|
521
|
+
"inline listbox",
|
|
522
|
+
"choice list",
|
|
523
|
+
"selectable list"
|
|
524
|
+
],
|
|
525
|
+
"tags": [
|
|
526
|
+
"listbox",
|
|
527
|
+
"roving-tabindex",
|
|
528
|
+
"aria-activedescendant",
|
|
529
|
+
"multi-select",
|
|
530
|
+
"selection",
|
|
531
|
+
"form"
|
|
532
|
+
],
|
|
533
|
+
"selection_excerpt": {
|
|
534
|
+
"use_when": [
|
|
535
|
+
"Use when the choices are permanently visible with no popup or expansion (e.g., an inline \"Playback quality\" list, a settings choice shown in place).",
|
|
536
|
+
"Use when the user selects one option or multiple options from plain-text labels (e.g., \"Select genres to follow\", the source column of a transfer list)."
|
|
537
|
+
],
|
|
538
|
+
"do_not_use_when": [
|
|
539
|
+
"Do not use when a collapsed popup value picker is expected (use select.native, or select.basic for a custom-styled one).",
|
|
540
|
+
"Do not use when the user types to filter the options (use combobox.autocomplete).",
|
|
541
|
+
"Do not use when the options must contain interactive elements such as links or buttons (use grid.basic).",
|
|
542
|
+
"Do not use when the user chooses among many independent on and off settings (use checkbox.group).",
|
|
543
|
+
"Do not use when the control performs actions rather than holding a selection (use menu.basic)."
|
|
544
|
+
]
|
|
545
|
+
},
|
|
546
|
+
"variants": [],
|
|
547
|
+
"default_variant": null,
|
|
548
|
+
"source": {
|
|
549
|
+
"path": "components/listbox.basic.md",
|
|
550
|
+
"format": "markdown",
|
|
551
|
+
"frontmatter": true
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"id": "menu.basic",
|
|
556
|
+
"title": "Menu",
|
|
557
|
+
"pattern_type": "component",
|
|
558
|
+
"status": "beta",
|
|
559
|
+
"latest_version": "0.1.0",
|
|
560
|
+
"summary": "A button that opens a menu of commands using role='menu' and role='menuitem', with roving tabindex focus management and the full menu keyboard contract.",
|
|
561
|
+
"aliases": [
|
|
562
|
+
"kebab menu",
|
|
563
|
+
"overflow menu",
|
|
564
|
+
"actions menu",
|
|
565
|
+
"three-dot menu",
|
|
566
|
+
"more menu",
|
|
567
|
+
"menu button",
|
|
568
|
+
"context menu button",
|
|
569
|
+
"command menu"
|
|
570
|
+
],
|
|
571
|
+
"tags": [
|
|
572
|
+
"menu",
|
|
573
|
+
"actions-menu",
|
|
574
|
+
"roving-tabindex",
|
|
575
|
+
"overflow-menu",
|
|
576
|
+
"kebab-menu",
|
|
577
|
+
"commands"
|
|
578
|
+
],
|
|
579
|
+
"selection_excerpt": {
|
|
580
|
+
"use_when": [
|
|
581
|
+
"Use when a button reveals a set of in-place commands or actions (e.g., \"Rename\", \"Duplicate\", \"Delete\", \"Export\").",
|
|
582
|
+
"Use when a button exposes an overflow (\"...\") or kebab action menu on a toolbar, card, or table row.",
|
|
583
|
+
"Use when the items perform actions in place, not navigation to a URL.",
|
|
584
|
+
"Use when you will implement the full menu keyboard contract (roving tabindex, Arrow keys, Home/End, type-ahead, Esc)."
|
|
585
|
+
],
|
|
586
|
+
"do_not_use_when": [
|
|
587
|
+
"Do not use when the items are links or navigate to a URL (use navigation-menu.dropdown, or for a primary navigation bar use navigation-menu.basic).",
|
|
588
|
+
"Do not use when the user picks a value to submit in a form (use select.native, or for type-to-filter selection use combobox.autocomplete).",
|
|
589
|
+
"Do not use when the trigger shows and hides arbitrary content rather than a list of commands (use disclosure.basic).",
|
|
590
|
+
"Do not use when building a persistent application command bar with horizontal top-level items (use menu.menubar)."
|
|
591
|
+
]
|
|
592
|
+
},
|
|
593
|
+
"variants": [],
|
|
594
|
+
"default_variant": null,
|
|
595
|
+
"source": {
|
|
596
|
+
"path": "components/menu.basic.md",
|
|
597
|
+
"format": "markdown",
|
|
598
|
+
"frontmatter": true
|
|
599
|
+
}
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"id": "menu.menubar",
|
|
603
|
+
"title": "Menubar",
|
|
604
|
+
"pattern_type": "component",
|
|
605
|
+
"status": "beta",
|
|
606
|
+
"latest_version": "0.1.0",
|
|
607
|
+
"summary": "A persistent horizontal bar of application command menus using role=\"menubar\", role=\"menu\", and role=\"menuitem\", for desktop-application command surfaces only, never site navigation.",
|
|
608
|
+
"aliases": [
|
|
609
|
+
"menu bar",
|
|
610
|
+
"application menu bar",
|
|
611
|
+
"command bar",
|
|
612
|
+
"app menu bar",
|
|
613
|
+
"editor menu bar",
|
|
614
|
+
"file edit view menu",
|
|
615
|
+
"desktop menu bar"
|
|
616
|
+
],
|
|
617
|
+
"tags": [
|
|
618
|
+
"menubar",
|
|
619
|
+
"menu",
|
|
620
|
+
"roving-tabindex",
|
|
621
|
+
"command-bar",
|
|
622
|
+
"application",
|
|
623
|
+
"keyboard-navigation"
|
|
624
|
+
],
|
|
625
|
+
"selection_excerpt": {
|
|
626
|
+
"use_when": [
|
|
627
|
+
"Use when building a genuine desktop-application-style command bar that replicates an operating-system menu bar of commands (e.g., a web-based document editor, IDE, or design tool with \"File\", \"Edit\", \"View\").",
|
|
628
|
+
"Use when the items are application commands, not navigation destinations (e.g., \"New File\", \"Undo\", \"Toggle Sidebar\").",
|
|
629
|
+
"Use when the surface is a persistent bar of multiple always-visible top-level menus, not a single button that opens one menu (e.g., a File/Edit/View bar fixed at the top of the editor)."
|
|
630
|
+
],
|
|
631
|
+
"do_not_use_when": [
|
|
632
|
+
"Do not use when the bar is site or app navigation of any kind, including a nav bar styled to look like a menu bar or with fly-out submenus; this is the overwhelmingly common case (use navigation-menu.basic).",
|
|
633
|
+
"Do not use when a single button opens one action menu (use menu.basic).",
|
|
634
|
+
"Do not use when the user picks a value from a set (use select.native).",
|
|
635
|
+
"Do not use when a single trigger shows and hides a region of content (use disclosure.basic)."
|
|
636
|
+
]
|
|
637
|
+
},
|
|
638
|
+
"variants": [],
|
|
639
|
+
"default_variant": null,
|
|
640
|
+
"source": {
|
|
641
|
+
"path": "components/menu.menubar.md",
|
|
642
|
+
"format": "markdown",
|
|
643
|
+
"frontmatter": true
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"id": "navigation-menu.basic",
|
|
648
|
+
"title": "Navigation Menu",
|
|
649
|
+
"pattern_type": "component",
|
|
650
|
+
"status": "beta",
|
|
651
|
+
"latest_version": "0.3.0",
|
|
652
|
+
"summary": "A non-modal header navigation pattern that supports top-level links and optional sub-menus. Uses disclosure-style toggles (buttons) with aria-expanded/controls and Tab-based navigation (no roving focus / no role=menu).",
|
|
653
|
+
"aliases": [
|
|
654
|
+
"nav dropdown",
|
|
655
|
+
"header dropdown",
|
|
656
|
+
"mega menu (simple)",
|
|
657
|
+
"disclosure navigation",
|
|
658
|
+
"flyout menu"
|
|
659
|
+
],
|
|
660
|
+
"tags": [
|
|
661
|
+
"navigation",
|
|
662
|
+
"menu",
|
|
663
|
+
"disclosure",
|
|
664
|
+
"header",
|
|
665
|
+
"sitemap",
|
|
666
|
+
"flyout"
|
|
667
|
+
],
|
|
668
|
+
"selection_excerpt": {
|
|
669
|
+
"use_when": [
|
|
670
|
+
"Use when a website's top-level navigation contains at least one sub-menu of links.",
|
|
671
|
+
"Use for primary or secondary navigation regions (e.g., header nav, section nav) when the same link + sub-menu structure is needed.",
|
|
672
|
+
"Use when the navigation structure maps to a sitemap-like set of destinations."
|
|
673
|
+
],
|
|
674
|
+
"do_not_use_when": [
|
|
675
|
+
"Do not use when you are building a desktop-application command bar with arrow-key navigation and roving tabindex (use menu.menubar).",
|
|
676
|
+
"Do not use to select a value within a form (use select.native or combobox.autocomplete when searchable).",
|
|
677
|
+
"Do not use as the mobile or responsive version of a navigation menu."
|
|
678
|
+
]
|
|
679
|
+
},
|
|
680
|
+
"variants": [],
|
|
681
|
+
"default_variant": null,
|
|
682
|
+
"source": {
|
|
683
|
+
"path": "components/navigation-menu.basic.md",
|
|
684
|
+
"format": "markdown",
|
|
685
|
+
"frontmatter": true
|
|
686
|
+
}
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"id": "navigation-menu.dropdown",
|
|
690
|
+
"title": "Navigation Dropdown",
|
|
691
|
+
"pattern_type": "component",
|
|
692
|
+
"status": "beta",
|
|
693
|
+
"latest_version": "0.1.0",
|
|
694
|
+
"summary": "A single-trigger, non-modal dropdown that reveals a short list of navigation links and optional actions, using a native button with aria-expanded plus DOM show/hide, and never role=\"menu\".",
|
|
695
|
+
"aliases": [
|
|
696
|
+
"account dropdown",
|
|
697
|
+
"user menu",
|
|
698
|
+
"avatar menu",
|
|
699
|
+
"profile menu",
|
|
700
|
+
"nav dropdown",
|
|
701
|
+
"links dropdown",
|
|
702
|
+
"account menu",
|
|
703
|
+
"header dropdown"
|
|
704
|
+
],
|
|
705
|
+
"tags": [
|
|
706
|
+
"navigation",
|
|
707
|
+
"dropdown",
|
|
708
|
+
"disclosure",
|
|
709
|
+
"account-menu",
|
|
710
|
+
"avatar-menu",
|
|
711
|
+
"header"
|
|
712
|
+
],
|
|
713
|
+
"selection_excerpt": {
|
|
714
|
+
"use_when": [
|
|
715
|
+
"Use when a single dedicated control reveals a compact set of navigation destinations (e.g., an avatar button or an \"Account\" button opening \"Profile\", \"Settings\", \"Billing\").",
|
|
716
|
+
"Use when the revealed content is short and stable, typically 3-10 items that are primarily links.",
|
|
717
|
+
"Use when the revealed list ends in an optional single incidental action alongside the links (e.g., \"Sign out\")."
|
|
718
|
+
],
|
|
719
|
+
"do_not_use_when": [
|
|
720
|
+
"Do not use when the site navigation is a bar of several top-level items or sibling dropdowns (use navigation-menu.basic).",
|
|
721
|
+
"Do not use when the revealed items are primarily in-place commands or actions that need arrow-key navigation and role=\"menu\" (use menu.basic).",
|
|
722
|
+
"Do not use when the control chooses a value to submit in a form (use select.native).",
|
|
723
|
+
"Do not use when the trigger shows and hides arbitrary non-navigational content (use disclosure.basic)."
|
|
724
|
+
]
|
|
725
|
+
},
|
|
726
|
+
"variants": [],
|
|
727
|
+
"default_variant": null,
|
|
728
|
+
"source": {
|
|
729
|
+
"path": "components/navigation-menu.dropdown.md",
|
|
730
|
+
"format": "markdown",
|
|
731
|
+
"frontmatter": true
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"id": "select.basic",
|
|
736
|
+
"title": "Select",
|
|
737
|
+
"pattern_type": "component",
|
|
738
|
+
"status": "beta",
|
|
739
|
+
"latest_version": "0.2.0",
|
|
740
|
+
"summary": "A custom-styled form select that matches native <select> behavior using a button trigger + listbox popup, and a visually hidden native <select> for form submission and browser autofill.",
|
|
741
|
+
"aliases": [
|
|
742
|
+
"form select",
|
|
743
|
+
"styled select",
|
|
744
|
+
"listbox select",
|
|
745
|
+
"dropdown select"
|
|
746
|
+
],
|
|
747
|
+
"tags": [
|
|
748
|
+
"select",
|
|
749
|
+
"form",
|
|
750
|
+
"form-select",
|
|
751
|
+
"listbox",
|
|
752
|
+
"dropdown"
|
|
753
|
+
],
|
|
754
|
+
"selection_excerpt": {
|
|
755
|
+
"use_when": [
|
|
756
|
+
"Use when a form input must allow selecting **one option** from a predefined set.",
|
|
757
|
+
"Use when the options are short labels and the selection is discrete (not freeform text).",
|
|
758
|
+
"Use for primary or secondary forms anywhere on a site or application."
|
|
759
|
+
],
|
|
760
|
+
"do_not_use_when": [
|
|
761
|
+
"Do not use when a native <select> styled with CSS meets the need (use select.native).",
|
|
762
|
+
"Do not use when the user needs to type to filter a large list (use combobox.autocomplete).",
|
|
763
|
+
"Do not use when multiple selections are required (use listbox.basic).",
|
|
764
|
+
"Do not use for navigation menus or account menus (use navigation-menu.basic or navigation-menu.dropdown)."
|
|
765
|
+
]
|
|
766
|
+
},
|
|
767
|
+
"variants": [],
|
|
768
|
+
"default_variant": null,
|
|
769
|
+
"source": {
|
|
770
|
+
"path": "components/select.basic.md",
|
|
771
|
+
"format": "markdown",
|
|
772
|
+
"frontmatter": true
|
|
773
|
+
}
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
"id": "select.native",
|
|
777
|
+
"title": "Native Select",
|
|
778
|
+
"pattern_type": "component",
|
|
779
|
+
"status": "beta",
|
|
780
|
+
"latest_version": "0.1.0",
|
|
781
|
+
"summary": "A native select element styled with CSS, the default single-value form control; retains native keyboard, mobile, dismissal, and assistive-technology behavior.",
|
|
782
|
+
"aliases": [
|
|
783
|
+
"native select",
|
|
784
|
+
"html select",
|
|
785
|
+
"select element",
|
|
786
|
+
"dropdown",
|
|
787
|
+
"form select",
|
|
788
|
+
"single-select",
|
|
789
|
+
"option picker",
|
|
790
|
+
"select box"
|
|
791
|
+
],
|
|
792
|
+
"tags": [
|
|
793
|
+
"select",
|
|
794
|
+
"native-select",
|
|
795
|
+
"form",
|
|
796
|
+
"form-control",
|
|
797
|
+
"dropdown",
|
|
798
|
+
"picker"
|
|
799
|
+
],
|
|
800
|
+
"selection_excerpt": {
|
|
801
|
+
"use_when": [
|
|
802
|
+
"Use when a form field selects one value from a preset list of plain-text options (e.g., \"Sort by\", \"Country\", \"Subscription plan\").",
|
|
803
|
+
"Use when native keyboard support, mobile pickers, dismissal, form submission, and assistive-technology support are wanted without re-implementation.",
|
|
804
|
+
"Use when single selection is needed and no requirement forces a custom widget (this is the default choice)."
|
|
805
|
+
],
|
|
806
|
+
"do_not_use_when": [
|
|
807
|
+
"Do not use when the option list needs rich or interactive content the native control cannot render (use select.basic).",
|
|
808
|
+
"Do not use when the user must type to filter a large list (use combobox.autocomplete).",
|
|
809
|
+
"Do not use when multiple selection is required (use listbox.basic; a checkbox group is often better).",
|
|
810
|
+
"Do not use when the control performs actions rather than choosing a value (use menu.basic)."
|
|
811
|
+
]
|
|
812
|
+
},
|
|
813
|
+
"variants": [],
|
|
814
|
+
"default_variant": null,
|
|
815
|
+
"source": {
|
|
816
|
+
"path": "components/select.native.md",
|
|
817
|
+
"format": "markdown",
|
|
818
|
+
"frontmatter": true
|
|
819
|
+
}
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
"id": "switch.basic",
|
|
823
|
+
"title": "Switch",
|
|
824
|
+
"pattern_type": "component",
|
|
825
|
+
"status": "beta",
|
|
826
|
+
"latest_version": "0.3.0",
|
|
827
|
+
"summary": "Two-state on/off control representing a persistent setting. Uses role=\"switch\" with aria-checked, or native checkbox semantics when applicable.",
|
|
828
|
+
"aliases": [
|
|
829
|
+
"toggle switch",
|
|
830
|
+
"preference toggle"
|
|
831
|
+
],
|
|
832
|
+
"tags": [
|
|
833
|
+
"switch",
|
|
834
|
+
"form",
|
|
835
|
+
"settings",
|
|
836
|
+
"on-off",
|
|
837
|
+
"form-control",
|
|
838
|
+
"toggle"
|
|
839
|
+
],
|
|
840
|
+
"selection_excerpt": {
|
|
841
|
+
"use_when": [
|
|
842
|
+
"Use when a control represents a persistent binary setting that remains on or off beyond the current interaction (e.g., \"Enable notifications\", \"Dark mode\").",
|
|
843
|
+
"Use when the setting takes effect immediately when toggled, without requiring form submission.",
|
|
844
|
+
"Use when the control reflects the current state of a system or application preference."
|
|
845
|
+
],
|
|
846
|
+
"do_not_use_when": [
|
|
847
|
+
"Do not use when the control triggers an in-place action or transient feature toggle within the current context (use button.toggle).",
|
|
848
|
+
"Do not use when the choice is a value submitted with a form rather than a setting that takes effect immediately (use checkbox.basic).",
|
|
849
|
+
"Do not use when selecting one or more options from a set of related choices (use checkbox.group).",
|
|
850
|
+
"Do not use when more than two states are required (use button.toggle)."
|
|
851
|
+
]
|
|
852
|
+
},
|
|
853
|
+
"variants": [],
|
|
854
|
+
"default_variant": null,
|
|
855
|
+
"source": {
|
|
856
|
+
"path": "components/switch.basic.md",
|
|
857
|
+
"format": "markdown",
|
|
858
|
+
"frontmatter": true
|
|
859
|
+
}
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"id": "toast.basic",
|
|
863
|
+
"title": "Toast",
|
|
864
|
+
"pattern_type": "component",
|
|
865
|
+
"status": "beta",
|
|
866
|
+
"latest_version": "0.1.0",
|
|
867
|
+
"summary": "Temporary, non-blocking status message announced via live region. May include optional dismiss control. Disappears automatically.",
|
|
868
|
+
"aliases": [
|
|
869
|
+
"notification",
|
|
870
|
+
"toast",
|
|
871
|
+
"transient message",
|
|
872
|
+
"status message"
|
|
873
|
+
],
|
|
874
|
+
"tags": [
|
|
875
|
+
"toast",
|
|
876
|
+
"notification",
|
|
877
|
+
"status",
|
|
878
|
+
"live-region"
|
|
879
|
+
],
|
|
880
|
+
"selection_excerpt": {
|
|
881
|
+
"use_when": [
|
|
882
|
+
"Use when presenting a temporary, non-blocking status message.",
|
|
883
|
+
"Use when the message confirms an action (e.g., \"Saved\", \"Added to watchlist\").",
|
|
884
|
+
"Use when the message is text-only and contains no required actions, except for (at most) a dismiss button."
|
|
885
|
+
],
|
|
886
|
+
"do_not_use_when": [
|
|
887
|
+
"Do not use when the message requires user acknowledgment, moves keyboard focus, or blocks background interaction (use dialog).",
|
|
888
|
+
"Do not use when the message is urgent or must interrupt the user immediately (use dialog.alert).",
|
|
889
|
+
"Do not use when the message includes required actions or interactive controls beyond simple dismissal (use snackbar)."
|
|
890
|
+
]
|
|
891
|
+
},
|
|
892
|
+
"variants": [],
|
|
893
|
+
"default_variant": null,
|
|
894
|
+
"source": {
|
|
895
|
+
"path": "components/toast.basic.md",
|
|
896
|
+
"format": "markdown",
|
|
897
|
+
"frontmatter": true
|
|
898
|
+
}
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"id": "tooltip.basic",
|
|
902
|
+
"title": "Tooltip",
|
|
903
|
+
"pattern_type": "component",
|
|
904
|
+
"status": "beta",
|
|
905
|
+
"latest_version": "0.1.0",
|
|
906
|
+
"summary": "A brief supplementary text label shown on hover and focus of its trigger; uses role=\"tooltip\" referenced by aria-describedby, and is hoverable, dismissible, and persistent.",
|
|
907
|
+
"aliases": [
|
|
908
|
+
"tooltip",
|
|
909
|
+
"hint",
|
|
910
|
+
"help bubble",
|
|
911
|
+
"info bubble",
|
|
912
|
+
"hover text",
|
|
913
|
+
"popup label",
|
|
914
|
+
"title text",
|
|
915
|
+
"describedby"
|
|
916
|
+
],
|
|
917
|
+
"tags": [
|
|
918
|
+
"tooltip",
|
|
919
|
+
"aria-describedby",
|
|
920
|
+
"hover",
|
|
921
|
+
"focus",
|
|
922
|
+
"supplementary-label"
|
|
923
|
+
],
|
|
924
|
+
"selection_excerpt": {
|
|
925
|
+
"use_when": [
|
|
926
|
+
"Use when a brief plain-text label supplements a control (e.g., clarifying an icon-only button, a short hint on a form field).",
|
|
927
|
+
"Use when the content is non-essential supplementary text.",
|
|
928
|
+
"Use when the label should appear on both pointer hover and keyboard focus of the trigger."
|
|
929
|
+
],
|
|
930
|
+
"do_not_use_when": [
|
|
931
|
+
"Do not use when the content is interactive or rich, containing links or buttons (use dialog.nonmodal).",
|
|
932
|
+
"Do not use when the content is a status or confirmation message (use toast.basic).",
|
|
933
|
+
"Do not use when the label would be the control's only accessible name; give the control a real accessible name via a visible label or aria-label instead (use button.basic).",
|
|
934
|
+
"Do not use when the content is a menu of choices (use menu.basic)."
|
|
935
|
+
]
|
|
936
|
+
},
|
|
937
|
+
"variants": [],
|
|
938
|
+
"default_variant": null,
|
|
939
|
+
"source": {
|
|
940
|
+
"path": "components/tooltip.basic.md",
|
|
941
|
+
"format": "markdown",
|
|
942
|
+
"frontmatter": true
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
]
|
|
946
|
+
}
|