@commercetools/nimbus-mcp 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/docs/route-manifest.json +714 -14
- package/data/docs/routes/components-data-display-item-group.json +413 -0
- package/data/docs/routes/components-data-display-item.json +611 -0
- package/data/docs/routes/components-feedback-skeleton.json +481 -0
- package/data/docs/routes/components-feedback-skeletoncircle.json +429 -0
- package/data/docs/routes/components-feedback-skeletontext.json +417 -0
- package/data/docs/routes/components-inputs-range-slider.json +633 -0
- package/data/docs/routes/components-inputs-slider.json +611 -0
- package/data/docs/routes/components-navigation-breadcrumbs.json +565 -0
- package/data/docs/routes/icons.json +3 -3
- package/data/docs/search-index.json +1 -1
- package/data/docs/types/Breadcrumbs.json +12 -0
- package/data/docs/types/BreadcrumbsItem.json +296 -0
- package/data/docs/types/BreadcrumbsItemProps.json +9 -0
- package/data/docs/types/BreadcrumbsProps.json +9 -0
- package/data/docs/types/BreadcrumbsRoot.json +110 -0
- package/data/docs/types/ItemActions.json +27 -0
- package/data/docs/types/ItemContent.json +27 -0
- package/data/docs/types/ItemDescription.json +27 -0
- package/data/docs/types/ItemFooter.json +27 -0
- package/data/docs/types/ItemGroup.json +12 -0
- package/data/docs/types/ItemGroupRoot.json +27 -0
- package/data/docs/types/ItemGroupSeparator.json +27 -0
- package/data/docs/types/ItemHeader.json +27 -0
- package/data/docs/types/ItemMedia.json +56 -0
- package/data/docs/types/ItemRoot.json +239 -0
- package/data/docs/types/ItemTitle.json +27 -0
- package/data/docs/types/RangeSlider.json +337 -0
- package/data/docs/types/RangeSliderProps.json +9 -0
- package/data/docs/types/Skeleton.json +129 -0
- package/data/docs/types/SkeletonCircle.json +103 -0
- package/data/docs/types/SkeletonCircleProps.json +9 -0
- package/data/docs/types/SkeletonProps.json +9 -0
- package/data/docs/types/SkeletonText.json +62 -0
- package/data/docs/types/SkeletonTextProps.json +9 -0
- package/data/docs/types/Slider.json +337 -0
- package/data/docs/types/createItemsFromCsvDrop.json +4 -4
- package/data/docs/types/createItemsFromDirectoryDrop.json +4 -4
- package/data/docs/types/createItemsFromFileDrop.json +4 -4
- package/data/docs/types/createItemsFromImageDrop.json +4 -4
- package/data/docs/types/createItemsFromJsonDrop.json +4 -4
- package/data/docs/types/manifest.json +25 -0
- package/data/docs/types/useRegion.json +2 -2
- package/package.json +4 -4
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"id": "Components-Breadcrumbs",
|
|
4
|
+
"title": "Breadcrumbs",
|
|
5
|
+
"exportName": "Breadcrumbs",
|
|
6
|
+
"description": "A navigation trail showing the path to the current page.",
|
|
7
|
+
"lifecycleState": "Stable",
|
|
8
|
+
"order": 999,
|
|
9
|
+
"repoPath": "packages/nimbus/src/components/breadcrumbs/breadcrumbs.mdx",
|
|
10
|
+
"menu": [
|
|
11
|
+
"Components",
|
|
12
|
+
"Navigation",
|
|
13
|
+
"Breadcrumbs"
|
|
14
|
+
],
|
|
15
|
+
"route": "components/navigation/breadcrumbs",
|
|
16
|
+
"tags": [
|
|
17
|
+
"component",
|
|
18
|
+
"navigation",
|
|
19
|
+
"breadcrumbs"
|
|
20
|
+
],
|
|
21
|
+
"toc": [
|
|
22
|
+
{
|
|
23
|
+
"value": "Overview",
|
|
24
|
+
"href": "#overview",
|
|
25
|
+
"depth": 2,
|
|
26
|
+
"numbering": [
|
|
27
|
+
1,
|
|
28
|
+
1
|
|
29
|
+
],
|
|
30
|
+
"parent": "root"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"value": "Resources",
|
|
34
|
+
"href": "#resources",
|
|
35
|
+
"depth": 3,
|
|
36
|
+
"numbering": [
|
|
37
|
+
1,
|
|
38
|
+
1,
|
|
39
|
+
1
|
|
40
|
+
],
|
|
41
|
+
"parent": "root"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"value": "Guidelines",
|
|
45
|
+
"href": "#guidelines",
|
|
46
|
+
"depth": 2,
|
|
47
|
+
"numbering": [
|
|
48
|
+
1,
|
|
49
|
+
2
|
|
50
|
+
],
|
|
51
|
+
"parent": "root"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"value": "Variables",
|
|
55
|
+
"href": "#variables",
|
|
56
|
+
"depth": 2,
|
|
57
|
+
"numbering": [
|
|
58
|
+
1,
|
|
59
|
+
3
|
|
60
|
+
],
|
|
61
|
+
"parent": "root"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"value": "Sizes",
|
|
65
|
+
"href": "#sizes",
|
|
66
|
+
"depth": 3,
|
|
67
|
+
"numbering": [
|
|
68
|
+
1,
|
|
69
|
+
3,
|
|
70
|
+
1
|
|
71
|
+
],
|
|
72
|
+
"parent": "root"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"value": "Current page",
|
|
76
|
+
"href": "#current-page",
|
|
77
|
+
"depth": 3,
|
|
78
|
+
"numbering": [
|
|
79
|
+
1,
|
|
80
|
+
3,
|
|
81
|
+
2
|
|
82
|
+
],
|
|
83
|
+
"parent": "root"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"value": "Data-driven trail",
|
|
87
|
+
"href": "#data-driven-trail",
|
|
88
|
+
"depth": 3,
|
|
89
|
+
"numbering": [
|
|
90
|
+
1,
|
|
91
|
+
3,
|
|
92
|
+
3
|
|
93
|
+
],
|
|
94
|
+
"parent": "root"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"value": "Custom separator",
|
|
98
|
+
"href": "#custom-separator",
|
|
99
|
+
"depth": 3,
|
|
100
|
+
"numbering": [
|
|
101
|
+
1,
|
|
102
|
+
3,
|
|
103
|
+
4
|
|
104
|
+
],
|
|
105
|
+
"parent": "root"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"value": "Disabled item",
|
|
109
|
+
"href": "#disabled-item",
|
|
110
|
+
"depth": 3,
|
|
111
|
+
"numbering": [
|
|
112
|
+
1,
|
|
113
|
+
3,
|
|
114
|
+
5
|
|
115
|
+
],
|
|
116
|
+
"parent": "root"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"layout": "app-frame",
|
|
120
|
+
"tabs": [
|
|
121
|
+
{
|
|
122
|
+
"key": "overview",
|
|
123
|
+
"title": "Overview",
|
|
124
|
+
"order": 0
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"key": "dev",
|
|
128
|
+
"title": "Implementation",
|
|
129
|
+
"order": 3
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"key": "a11y",
|
|
133
|
+
"title": "Accessibility",
|
|
134
|
+
"order": 4
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"mdx": "\n## Overview\n\nBreadcrumbs display the hierarchical path to the current page as an ordered list\nof links. They render a `<nav>` landmark containing an `<ol>` of `<a>` elements.\nEach item except the last navigates to an ancestor page; the last item is\ntreated as the current page automatically and is rendered as non-interactive\ntext with `aria-current=\"page\"`.\n\nUse breadcrumbs in pages that sit several levels deep in a hierarchy (e.g.\n`/products/apparel/shoes`) to help users understand where they are and to move\nback up the tree.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React Aria Breadcrumbs](https://react-spectrum.adobe.com/react-aria/Breadcrumbs.html)\n\n## Guidelines\n\n> [!TIP]\\\n> **When to use**\n>\n> - The page sits **three or more levels deep** in a clear hierarchy.\n> - Every level in the trail is a real, navigable page.\n> - Users benefit from seeing where they are and stepping back up the tree.\n\n> [!CAUTION]\\\n> **When not to use**\n>\n> - As a substitute for a **back button** or the browser's history.\n> - On flat or two-level sites where the hierarchy adds no value.\n> - To represent a **multi-step flow or wizard** — use progress steps instead.\n> - Keep labels short and match them to the destination page titles.\n\n## Variables\n\nGet familiar with the features.\n\n### Sizes\n\n`Breadcrumbs` supports two size variants — `sm` and `md` (default) — that\ncontrol the font size and spacing between items.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"column\" gap=\"600\">\n {[\"sm\", \"md\"].map((size) => (\n <Stack key={size} direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">{size}</Text>\n <Breadcrumbs.Root aria-label={`Breadcrumb (${size})`} size={size}>\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </Stack>\n ))}\n </Stack>\n);\n```\n\n### Current page\n\nThe **last** item is the current page automatically — there is no `isCurrent`\nprop. It renders as non-interactive text with `aria-current=\"page\"`, which\nscreen readers announce as \"current page\".\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Data-driven trail\n\nPass an `items` array to render a trail from data. The last entry is the current\npage.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root\n aria-label=\"Breadcrumb\"\n items={[\n { id: \"home\", label: \"Home\", href: \"/\" },\n { id: \"catalog\", label: \"Catalog\", href: \"/catalog\" },\n { id: \"shoes\", label: \"Shoes\" },\n ]}\n />\n);\n```\n\n### Custom separator\n\nSupply any React node via the `separator` prop on `Breadcrumbs.Root`. The\nseparator is decorative and hidden from assistive technologies.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\" separator=\"/\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/catalog\">Catalog</Breadcrumbs.Item>\n <Breadcrumbs.Item>Shoes</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Disabled item\n\nUse `isDisabled` to render an item that is part of the trail but cannot be\nnavigated to. Disabled items are visually dimmed and excluded from the tab\nsequence.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\" isDisabled>\n Orders\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n",
|
|
139
|
+
"views": {
|
|
140
|
+
"overview": {
|
|
141
|
+
"mdx": "\n## Overview\n\nBreadcrumbs display the hierarchical path to the current page as an ordered list\nof links. They render a `<nav>` landmark containing an `<ol>` of `<a>` elements.\nEach item except the last navigates to an ancestor page; the last item is\ntreated as the current page automatically and is rendered as non-interactive\ntext with `aria-current=\"page\"`.\n\nUse breadcrumbs in pages that sit several levels deep in a hierarchy (e.g.\n`/products/apparel/shoes`) to help users understand where they are and to move\nback up the tree.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React Aria Breadcrumbs](https://react-spectrum.adobe.com/react-aria/Breadcrumbs.html)\n\n## Guidelines\n\n> [!TIP]\\\n> **When to use**\n>\n> - The page sits **three or more levels deep** in a clear hierarchy.\n> - Every level in the trail is a real, navigable page.\n> - Users benefit from seeing where they are and stepping back up the tree.\n\n> [!CAUTION]\\\n> **When not to use**\n>\n> - As a substitute for a **back button** or the browser's history.\n> - On flat or two-level sites where the hierarchy adds no value.\n> - To represent a **multi-step flow or wizard** — use progress steps instead.\n> - Keep labels short and match them to the destination page titles.\n\n## Variables\n\nGet familiar with the features.\n\n### Sizes\n\n`Breadcrumbs` supports two size variants — `sm` and `md` (default) — that\ncontrol the font size and spacing between items.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"column\" gap=\"600\">\n {[\"sm\", \"md\"].map((size) => (\n <Stack key={size} direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">{size}</Text>\n <Breadcrumbs.Root aria-label={`Breadcrumb (${size})`} size={size}>\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </Stack>\n ))}\n </Stack>\n);\n```\n\n### Current page\n\nThe **last** item is the current page automatically — there is no `isCurrent`\nprop. It renders as non-interactive text with `aria-current=\"page\"`, which\nscreen readers announce as \"current page\".\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Data-driven trail\n\nPass an `items` array to render a trail from data. The last entry is the current\npage.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root\n aria-label=\"Breadcrumb\"\n items={[\n { id: \"home\", label: \"Home\", href: \"/\" },\n { id: \"catalog\", label: \"Catalog\", href: \"/catalog\" },\n { id: \"shoes\", label: \"Shoes\" },\n ]}\n />\n);\n```\n\n### Custom separator\n\nSupply any React node via the `separator` prop on `Breadcrumbs.Root`. The\nseparator is decorative and hidden from assistive technologies.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\" separator=\"/\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/catalog\">Catalog</Breadcrumbs.Item>\n <Breadcrumbs.Item>Shoes</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Disabled item\n\nUse `isDisabled` to render an item that is part of the trail but cannot be\nnavigated to. Disabled items are visually dimmed and excluded from the tab\nsequence.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\" isDisabled>\n Orders\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n",
|
|
142
|
+
"toc": [
|
|
143
|
+
{
|
|
144
|
+
"value": "Overview",
|
|
145
|
+
"href": "#overview",
|
|
146
|
+
"depth": 2,
|
|
147
|
+
"numbering": [
|
|
148
|
+
1,
|
|
149
|
+
1
|
|
150
|
+
],
|
|
151
|
+
"parent": "root"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"value": "Resources",
|
|
155
|
+
"href": "#resources",
|
|
156
|
+
"depth": 3,
|
|
157
|
+
"numbering": [
|
|
158
|
+
1,
|
|
159
|
+
1,
|
|
160
|
+
1
|
|
161
|
+
],
|
|
162
|
+
"parent": "root"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"value": "Guidelines",
|
|
166
|
+
"href": "#guidelines",
|
|
167
|
+
"depth": 2,
|
|
168
|
+
"numbering": [
|
|
169
|
+
1,
|
|
170
|
+
2
|
|
171
|
+
],
|
|
172
|
+
"parent": "root"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"value": "Variables",
|
|
176
|
+
"href": "#variables",
|
|
177
|
+
"depth": 2,
|
|
178
|
+
"numbering": [
|
|
179
|
+
1,
|
|
180
|
+
3
|
|
181
|
+
],
|
|
182
|
+
"parent": "root"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"value": "Sizes",
|
|
186
|
+
"href": "#sizes",
|
|
187
|
+
"depth": 3,
|
|
188
|
+
"numbering": [
|
|
189
|
+
1,
|
|
190
|
+
3,
|
|
191
|
+
1
|
|
192
|
+
],
|
|
193
|
+
"parent": "root"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"value": "Current page",
|
|
197
|
+
"href": "#current-page",
|
|
198
|
+
"depth": 3,
|
|
199
|
+
"numbering": [
|
|
200
|
+
1,
|
|
201
|
+
3,
|
|
202
|
+
2
|
|
203
|
+
],
|
|
204
|
+
"parent": "root"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"value": "Data-driven trail",
|
|
208
|
+
"href": "#data-driven-trail",
|
|
209
|
+
"depth": 3,
|
|
210
|
+
"numbering": [
|
|
211
|
+
1,
|
|
212
|
+
3,
|
|
213
|
+
3
|
|
214
|
+
],
|
|
215
|
+
"parent": "root"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"value": "Custom separator",
|
|
219
|
+
"href": "#custom-separator",
|
|
220
|
+
"depth": 3,
|
|
221
|
+
"numbering": [
|
|
222
|
+
1,
|
|
223
|
+
3,
|
|
224
|
+
4
|
|
225
|
+
],
|
|
226
|
+
"parent": "root"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"value": "Disabled item",
|
|
230
|
+
"href": "#disabled-item",
|
|
231
|
+
"depth": 3,
|
|
232
|
+
"numbering": [
|
|
233
|
+
1,
|
|
234
|
+
3,
|
|
235
|
+
5
|
|
236
|
+
],
|
|
237
|
+
"parent": "root"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
"a11y": {
|
|
242
|
+
"mdx": "\n## Accessibility\n\nAccessibility ensures that digital content and functionality are usable by\neveryone, including people with disabilities, by addressing visual, auditory,\ncognitive, and physical limitations.\n\n```jsx live\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/products\">Products</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/products/apparel\">Apparel</Breadcrumbs.Item>\n <Breadcrumbs.Item>Shoes</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Accessibility standards\n\n- **Landmark role:** `Breadcrumbs.Root` renders a `<nav>` HTML element — a\n navigation landmark. Always provide an `aria-label` (commonly `\"Breadcrumb\"`)\n to identify the landmark, especially when a page contains multiple `<nav>`\n elements.\n- **List semantics:** Items are rendered inside an ordered list (`<ol>` with\n `<li>` children) carrying an explicit `role=\"list\"`, which communicates the\n hierarchical, sequential nature of the trail to assistive technologies — and\n keeps list semantics under `list-style: none`, which WebKit (Safari +\n VoiceOver) otherwise strips.\n- **Link semantics:** Each navigable item renders an `<a>` element with the\n implicit `link` role.\n- **Current page indication:** The current (last) item is derived automatically\n (no `isCurrent` prop). It uses `aria-current=\"page\"` — **not** `aria-selected`\n — which screen readers announce as \"current page\". It renders as a\n non-focusable `<span role=\"link\">` and is removed from the tab sequence.\n- **Decorative separators:** Separators between items are decorative and carry\n `aria-hidden=\"true\"`, so they are not announced by screen readers.\n- **Keyboard navigation:** Breadcrumbs use standard sequential keyboard\n navigation. The `Tab` key moves focus to the next link and `Shift + Tab` moves\n to the previous link. Arrow keys do **not** cycle focus between items.\n- **Disabled items:** Disabled items carry `aria-disabled=\"true\"` and are\n excluded from the tab sequence, so keyboard users skip them naturally. Avoid\n disabling the **last** item: it is already the non-interactive current page,\n and because a disabled item renders as a plain `<span>` outside React Aria's\n collection context, a disabled final item will not receive\n `aria-current=\"page\"`.\n- **Contrast:** Ensure sufficient contrast between link text and the background\n in all states (default, hover, current, focused, disabled). The focus\n indicator must be clearly visible.\n",
|
|
243
|
+
"toc": [
|
|
244
|
+
{
|
|
245
|
+
"value": "Accessibility",
|
|
246
|
+
"href": "#accessibility",
|
|
247
|
+
"depth": 2,
|
|
248
|
+
"numbering": [
|
|
249
|
+
1,
|
|
250
|
+
1
|
|
251
|
+
],
|
|
252
|
+
"parent": "root"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"value": "Accessibility standards",
|
|
256
|
+
"href": "#accessibility-standards",
|
|
257
|
+
"depth": 3,
|
|
258
|
+
"numbering": [
|
|
259
|
+
1,
|
|
260
|
+
1,
|
|
261
|
+
1
|
|
262
|
+
],
|
|
263
|
+
"parent": "root"
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
"dev": {
|
|
268
|
+
"mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport {\n Breadcrumbs,\n type BreadcrumbsProps,\n type BreadcrumbsItemProps,\n} from \"@commercetools/nimbus\";\n```\n\n### Basic usage\n\n`Breadcrumbs` is a compound component for **hierarchical page navigation**. It\nrenders a `<nav>` landmark containing an ordered list of `<a>` elements. The\nlast item is treated as the current page automatically — there is no `isCurrent`\nprop.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n> [!NOTE]\\\n> Breadcrumbs is built on React Aria Components' `Breadcrumbs`/`Breadcrumb`\n> primitives. React Aria owns the collection semantics: it derives the current\n> page (the last item), applies `aria-current=\"page\"`, and removes that item\n> from the tab order automatically. This is why there is no `isCurrent` prop and\n> why the API mirrors other React-Aria-backed Nimbus components.\n\n## Usage examples\n\n### Current page\n\nThe final item is the current page automatically. React Aria strips its `href`,\nrenders it as non-interactive text, and sets `aria-current=\"page\"`.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/catalog\">Catalog</Breadcrumbs.Item>\n <Breadcrumbs.Item>Shoes</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\nWhen using a client-side router, derive the trail from the current route and\nrender the deepest segment last — it becomes current automatically:\n\n```tsx\nimport { useLocation } from \"react-router-dom\";\n\nconst ProductBreadcrumbs = ({ category }: { category: string }) => {\n const { pathname } = useLocation();\n\n return (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/products\">Products</Breadcrumbs.Item>\n <Breadcrumbs.Item>{category}</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n );\n};\n```\n\n### Data-driven trail (`items`)\n\nFor trails built from data, pass an `items` array instead of compound children.\nThe last entry is the current page, and `onAction` receives the activated\nentry's `id`.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root\n aria-label=\"Breadcrumb\"\n items={[\n { id: \"home\", label: \"Home\", href: \"/\" },\n { id: \"products\", label: \"Products\", href: \"/products\" },\n { id: \"apparel\", label: \"Apparel\", href: \"/products/apparel\" },\n { id: \"shoes\", label: \"Shoes\" },\n ]}\n />\n);\n```\n\n### Custom separator\n\nThe default separator is `›`. Pass any React node (string or icon) via the\n`separator` prop on `Breadcrumbs.Root`. Separators are decorative and hidden\nfrom assistive technologies.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\" separator=\"/\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/products\">Products</Breadcrumbs.Item>\n <Breadcrumbs.Item>Apparel</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### Size variants\n\nThe `size` prop controls font size and spacing. Available sizes: `sm`, `md`\n(default).\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"600\">\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"500\">Small</Text>\n <Breadcrumbs.Root aria-label=\"Breadcrumb (sm)\" size=\"sm\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </Stack>\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"500\">Medium (default)</Text>\n <Breadcrumbs.Root aria-label=\"Breadcrumb (md)\" size=\"md\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </Stack>\n </Stack>\n);\n```\n\n### Disabled items\n\nUse `isDisabled` to render an ancestor item that exists in the trail but cannot\ncurrently be navigated to. Disabled items are visually dimmed, removed from the\ntab sequence, and non-interactive.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\" isDisabled>\n Orders\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n### External links\n\nUse `target` and `rel` to open a breadcrumb in a new browser tab. Always pair\n`target=\"_blank\"` with `rel=\"noopener noreferrer\"` for security.\n\n```jsx live-dev\nconst App = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item\n href=\"https://docs.example.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Docs ↗\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Current page</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n);\n```\n\n## Component requirements\n\n### Accessibility\n\nThe Breadcrumbs component uses semantic HTML for navigation. Accessibility is\nhandled by the browser's `<nav>` landmark and ordered-list structure, combined\nwith React Aria's `Breadcrumbs`/`Breadcrumb`/`Link` primitives for current-page\nand interaction handling.\n\n#### Role\n\n- `Breadcrumbs.Root` renders a `<nav>` HTML element — a navigation landmark —\n wrapping an `<ol>` (with an explicit `role=\"list\"`, which keeps list semantics\n under `list-style: none` in Safari/VoiceOver).\n- Items are rendered inside an `<ol>`/`<li>` structure.\n- Each navigable item renders an `<a>` element with the implicit `link` role.\n- The current (last) item renders as a non-focusable `<span role=\"link\">` with\n `aria-current=\"page\"` — **not** `aria-selected`.\n\n#### Labeling\n\nAlways provide an `aria-label` on `Breadcrumbs.Root` (commonly `\"Breadcrumb\"`)\nto describe the navigation region. A development-time warning is logged if it is\nomitted. In localized apps, translate the label.\n\n```tsx\n<Breadcrumbs.Root aria-label=\"Breadcrumb\">...</Breadcrumbs.Root>\n```\n\n#### Keyboard navigation\n\nBreadcrumbs use standard sequential keyboard navigation — no roving tabindex, no\narrow key cycling.\n\n| Key | Action |\n| ------------- | ------------------------------- |\n| `Tab` | Move focus to the next link |\n| `Shift + Tab` | Move focus to the previous link |\n| `Enter` | Activate the focused link |\n\nThe current (last) item and any disabled items are non-interactive and skipped\nin the tab sequence.\n\n## API reference\n\n<PropsTable id=\"Breadcrumbs\" />\n\n## Common patterns\n\n### Building a trail from data\n\nPrefer the declarative `items` API — it owns the last-is-current logic for you,\nso there is no index bookkeeping:\n\n```tsx\nconst trail = [\n { id: \"home\", label: \"Home\", href: \"/\" },\n { id: \"products\", label: \"Products\", href: \"/products\" },\n { id: \"apparel\", label: \"Apparel\", href: \"/products/apparel\" },\n { id: \"shoes\", label: \"Shoes\" }, // last entry is the current page\n];\n\nconst ProductTrail = () => (\n <Breadcrumbs.Root aria-label=\"Breadcrumb\" items={trail} />\n);\n```\n\n## Out of scope\n\nThe following are intentionally **not** handled by this component today:\n\n- **Overflow / collapsing** long trails (e.g. `Home / … / Current`). Keep trails\n short, or truncate labels in your own layout.\n- **RTL separator glyphs.** The layout mirrors in RTL, but a directional glyph\n such as `›` does not flip — supply a direction-neutral separator (e.g. `/`)\n for RTL locales.\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using\nBreadcrumbs within your application. As the component's internal functionality\nis already tested by Nimbus, these patterns help you verify your integration and\napplication-specific logic.\n\n### Basic Rendering Tests\n\nVerify the Breadcrumbs component renders a nav landmark with an ordered list of links\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - Basic rendering\", () => {\n it(\"renders a navigation landmark with an ordered list\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(\n screen.getByRole(\"navigation\", { name: \"Breadcrumb\" })\n ).toBeInTheDocument();\n expect(screen.getByRole(\"list\").tagName).toBe(\"OL\");\n expect(screen.getAllByRole(\"listitem\")).toHaveLength(3);\n });\n\n it(\"renders link items as anchors with the correct href\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Current</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"link\", { name: \"Home\" })).toHaveAttribute(\n \"href\",\n \"/\"\n );\n expect(screen.getByRole(\"link\", { name: \"Orders\" })).toHaveAttribute(\n \"href\",\n \"/orders\"\n );\n });\n\n it(\"builds a trail from a data array via the items prop\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root\n aria-label=\"Breadcrumb\"\n items={[\n { id: \"home\", label: \"Home\", href: \"/\" },\n { id: \"orders\", label: \"Orders\", href: \"/orders\" },\n { id: \"detail\", label: \"Order #123\" },\n ]}\n />\n </NimbusProvider>\n );\n\n expect(screen.getAllByRole(\"listitem\")).toHaveLength(3);\n expect(screen.getByRole(\"link\", { name: \"Home\" })).toHaveAttribute(\n \"href\",\n \"/\"\n );\n expect(screen.getByText(\"Order #123\")).toHaveAttribute(\n \"aria-current\",\n \"page\"\n );\n });\n});\n```\n\n### Current Page Tests\n\nVerify aria-current=\"page\" is applied to the last item automatically and not to ancestors\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - Current page\", () => {\n it(\"sets aria-current='page' on the last item automatically\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Order #123\")).toHaveAttribute(\n \"aria-current\",\n \"page\"\n );\n });\n\n it(\"renders the current item as non-navigable (no href)\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n // React Aria renders the current item as a <span> (not an anchor) with no\n // href, so it is not a navigable link.\n const current = screen.getByText(\"Order #123\");\n expect(current).not.toHaveAttribute(\"href\");\n expect(current.tagName).toBe(\"SPAN\");\n });\n\n it(\"does not set aria-current on ancestor items\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\">Orders</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"link\", { name: \"Home\" })).not.toHaveAttribute(\n \"aria-current\"\n );\n expect(screen.getByRole(\"link\", { name: \"Orders\" })).not.toHaveAttribute(\n \"aria-current\"\n );\n });\n});\n```\n\n### Disabled Item Tests\n\nVerify disabled items are marked inaccessible and stripped of their href\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - Disabled items\", () => {\n it(\"marks disabled items with aria-disabled='true' and strips href\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"/orders\" isDisabled>\n Orders\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n const disabled = screen.getByText(\"Orders\");\n expect(disabled).toHaveAttribute(\"aria-disabled\", \"true\");\n expect(disabled).not.toHaveAttribute(\"href\");\n });\n});\n```\n\n### External Link Tests\n\nVerify target and rel attributes for external breadcrumb items\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - External links\", () => {\n it(\"applies target and rel to external link items\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item\n href=\"https://docs.example.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Docs ↗\n </Breadcrumbs.Item>\n <Breadcrumbs.Item>Current page</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n const external = screen.getByRole(\"link\", { name: \"Docs ↗\" });\n expect(external).toHaveAttribute(\"target\", \"_blank\");\n expect(external).toHaveAttribute(\"rel\", \"noopener noreferrer\");\n });\n});\n```\n\n### Interaction Tests\n\nVerify onAction fires with the activated breadcrumb's id\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - Interactions\", () => {\n it(\"calls onAction with the item id when a breadcrumb is activated\", async () => {\n const user = userEvent.setup();\n const handleAction = vi.fn();\n\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\" onAction={handleAction}>\n <Breadcrumbs.Item id=\"home\" href=\"/\">\n Home\n </Breadcrumbs.Item>\n <Breadcrumbs.Item id=\"orders\" href=\"/orders\">\n Orders\n </Breadcrumbs.Item>\n <Breadcrumbs.Item id=\"detail\">Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n await user.click(screen.getByRole(\"link\", { name: \"Orders\" }));\n expect(handleAction).toHaveBeenCalledWith(\"orders\");\n });\n\n it(\"focuses link items with the Tab key\", async () => {\n const user = userEvent.setup();\n\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n await user.tab();\n expect(screen.getByRole(\"link\", { name: \"Home\" })).toHaveFocus();\n });\n});\n```\n\n### Accessibility Tests\n\nVerify accessible labels and that the widget does not use aria-selected\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Breadcrumbs, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Breadcrumbs - Accessibility\", () => {\n it(\"supports aria-label on the root for landmark identification\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item>Current</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(\n screen.getByRole(\"navigation\", { name: \"Breadcrumb\" })\n ).toBeInTheDocument();\n });\n\n it(\"does not use aria-selected (navigation, not a widget)\", () => {\n render(\n <NimbusProvider>\n <Breadcrumbs.Root aria-label=\"Breadcrumb\">\n <Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item>Order #123</Breadcrumbs.Item>\n </Breadcrumbs.Root>\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Order #123\")).not.toHaveAttribute(\"aria-selected\");\n });\n});\n```\n\n\n## Resources\n\n- [React Aria Breadcrumbs](https://react-spectrum.adobe.com/react-aria/Breadcrumbs.html)\n- [ARIA: navigation landmark](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/navigation_role)\n- [aria-current attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n",
|
|
269
|
+
"toc": [
|
|
270
|
+
{
|
|
271
|
+
"value": "Getting started",
|
|
272
|
+
"href": "#getting-started",
|
|
273
|
+
"depth": 2,
|
|
274
|
+
"numbering": [
|
|
275
|
+
1,
|
|
276
|
+
1
|
|
277
|
+
],
|
|
278
|
+
"parent": "root"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"value": "Import",
|
|
282
|
+
"href": "#import",
|
|
283
|
+
"depth": 3,
|
|
284
|
+
"numbering": [
|
|
285
|
+
1,
|
|
286
|
+
1,
|
|
287
|
+
1
|
|
288
|
+
],
|
|
289
|
+
"parent": "root"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"value": "Basic usage",
|
|
293
|
+
"href": "#basic-usage",
|
|
294
|
+
"depth": 3,
|
|
295
|
+
"numbering": [
|
|
296
|
+
1,
|
|
297
|
+
1,
|
|
298
|
+
2
|
|
299
|
+
],
|
|
300
|
+
"parent": "root"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"value": "Usage examples",
|
|
304
|
+
"href": "#usage-examples",
|
|
305
|
+
"depth": 2,
|
|
306
|
+
"numbering": [
|
|
307
|
+
1,
|
|
308
|
+
2
|
|
309
|
+
],
|
|
310
|
+
"parent": "root"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"value": "Current page",
|
|
314
|
+
"href": "#current-page",
|
|
315
|
+
"depth": 3,
|
|
316
|
+
"numbering": [
|
|
317
|
+
1,
|
|
318
|
+
2,
|
|
319
|
+
1
|
|
320
|
+
],
|
|
321
|
+
"parent": "root"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"value": "Data-driven trail (items)",
|
|
325
|
+
"href": "#data-driven-trail-items",
|
|
326
|
+
"depth": 3,
|
|
327
|
+
"numbering": [
|
|
328
|
+
1,
|
|
329
|
+
2,
|
|
330
|
+
2
|
|
331
|
+
],
|
|
332
|
+
"parent": "root"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"value": "Custom separator",
|
|
336
|
+
"href": "#custom-separator",
|
|
337
|
+
"depth": 3,
|
|
338
|
+
"numbering": [
|
|
339
|
+
1,
|
|
340
|
+
2,
|
|
341
|
+
3
|
|
342
|
+
],
|
|
343
|
+
"parent": "root"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"value": "Size variants",
|
|
347
|
+
"href": "#size-variants",
|
|
348
|
+
"depth": 3,
|
|
349
|
+
"numbering": [
|
|
350
|
+
1,
|
|
351
|
+
2,
|
|
352
|
+
4
|
|
353
|
+
],
|
|
354
|
+
"parent": "root"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"value": "Disabled items",
|
|
358
|
+
"href": "#disabled-items",
|
|
359
|
+
"depth": 3,
|
|
360
|
+
"numbering": [
|
|
361
|
+
1,
|
|
362
|
+
2,
|
|
363
|
+
5
|
|
364
|
+
],
|
|
365
|
+
"parent": "root"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"value": "External links",
|
|
369
|
+
"href": "#external-links",
|
|
370
|
+
"depth": 3,
|
|
371
|
+
"numbering": [
|
|
372
|
+
1,
|
|
373
|
+
2,
|
|
374
|
+
6
|
|
375
|
+
],
|
|
376
|
+
"parent": "root"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"value": "Component requirements",
|
|
380
|
+
"href": "#component-requirements",
|
|
381
|
+
"depth": 2,
|
|
382
|
+
"numbering": [
|
|
383
|
+
1,
|
|
384
|
+
3
|
|
385
|
+
],
|
|
386
|
+
"parent": "root"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"value": "Accessibility",
|
|
390
|
+
"href": "#accessibility",
|
|
391
|
+
"depth": 3,
|
|
392
|
+
"numbering": [
|
|
393
|
+
1,
|
|
394
|
+
3,
|
|
395
|
+
1
|
|
396
|
+
],
|
|
397
|
+
"parent": "root"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"value": "Role",
|
|
401
|
+
"href": "#role",
|
|
402
|
+
"depth": 4,
|
|
403
|
+
"numbering": [
|
|
404
|
+
1,
|
|
405
|
+
3,
|
|
406
|
+
1,
|
|
407
|
+
1
|
|
408
|
+
],
|
|
409
|
+
"parent": "root"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"value": "Labeling",
|
|
413
|
+
"href": "#labeling",
|
|
414
|
+
"depth": 4,
|
|
415
|
+
"numbering": [
|
|
416
|
+
1,
|
|
417
|
+
3,
|
|
418
|
+
1,
|
|
419
|
+
2
|
|
420
|
+
],
|
|
421
|
+
"parent": "root"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"value": "Keyboard navigation",
|
|
425
|
+
"href": "#keyboard-navigation",
|
|
426
|
+
"depth": 4,
|
|
427
|
+
"numbering": [
|
|
428
|
+
1,
|
|
429
|
+
3,
|
|
430
|
+
1,
|
|
431
|
+
3
|
|
432
|
+
],
|
|
433
|
+
"parent": "root"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"value": "API reference",
|
|
437
|
+
"href": "#api-reference",
|
|
438
|
+
"depth": 2,
|
|
439
|
+
"numbering": [
|
|
440
|
+
1,
|
|
441
|
+
4
|
|
442
|
+
],
|
|
443
|
+
"parent": "root"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"value": "Common patterns",
|
|
447
|
+
"href": "#common-patterns",
|
|
448
|
+
"depth": 2,
|
|
449
|
+
"numbering": [
|
|
450
|
+
1,
|
|
451
|
+
5
|
|
452
|
+
],
|
|
453
|
+
"parent": "root"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"value": "Building a trail from data",
|
|
457
|
+
"href": "#building-a-trail-from-data",
|
|
458
|
+
"depth": 3,
|
|
459
|
+
"numbering": [
|
|
460
|
+
1,
|
|
461
|
+
5,
|
|
462
|
+
1
|
|
463
|
+
],
|
|
464
|
+
"parent": "root"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"value": "Out of scope",
|
|
468
|
+
"href": "#out-of-scope",
|
|
469
|
+
"depth": 2,
|
|
470
|
+
"numbering": [
|
|
471
|
+
1,
|
|
472
|
+
6
|
|
473
|
+
],
|
|
474
|
+
"parent": "root"
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
"value": "Testing your implementation",
|
|
478
|
+
"href": "#testing-your-implementation",
|
|
479
|
+
"depth": 2,
|
|
480
|
+
"numbering": [
|
|
481
|
+
1,
|
|
482
|
+
7
|
|
483
|
+
],
|
|
484
|
+
"parent": "root"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"value": "Basic Rendering Tests",
|
|
488
|
+
"href": "#basic-rendering-tests",
|
|
489
|
+
"depth": 3,
|
|
490
|
+
"numbering": [
|
|
491
|
+
1,
|
|
492
|
+
7,
|
|
493
|
+
1
|
|
494
|
+
],
|
|
495
|
+
"parent": "root"
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"value": "Current Page Tests",
|
|
499
|
+
"href": "#current-page-tests",
|
|
500
|
+
"depth": 3,
|
|
501
|
+
"numbering": [
|
|
502
|
+
1,
|
|
503
|
+
7,
|
|
504
|
+
2
|
|
505
|
+
],
|
|
506
|
+
"parent": "root"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"value": "Disabled Item Tests",
|
|
510
|
+
"href": "#disabled-item-tests",
|
|
511
|
+
"depth": 3,
|
|
512
|
+
"numbering": [
|
|
513
|
+
1,
|
|
514
|
+
7,
|
|
515
|
+
3
|
|
516
|
+
],
|
|
517
|
+
"parent": "root"
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"value": "External Link Tests",
|
|
521
|
+
"href": "#external-link-tests",
|
|
522
|
+
"depth": 3,
|
|
523
|
+
"numbering": [
|
|
524
|
+
1,
|
|
525
|
+
7,
|
|
526
|
+
4
|
|
527
|
+
],
|
|
528
|
+
"parent": "root"
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"value": "Interaction Tests",
|
|
532
|
+
"href": "#interaction-tests",
|
|
533
|
+
"depth": 3,
|
|
534
|
+
"numbering": [
|
|
535
|
+
1,
|
|
536
|
+
7,
|
|
537
|
+
5
|
|
538
|
+
],
|
|
539
|
+
"parent": "root"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"value": "Accessibility Tests",
|
|
543
|
+
"href": "#accessibility-tests",
|
|
544
|
+
"depth": 3,
|
|
545
|
+
"numbering": [
|
|
546
|
+
1,
|
|
547
|
+
7,
|
|
548
|
+
6
|
|
549
|
+
],
|
|
550
|
+
"parent": "root"
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"value": "Resources",
|
|
554
|
+
"href": "#resources",
|
|
555
|
+
"depth": 2,
|
|
556
|
+
"numbering": [
|
|
557
|
+
1,
|
|
558
|
+
8
|
|
559
|
+
],
|
|
560
|
+
"parent": "root"
|
|
561
|
+
}
|
|
562
|
+
]
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"meta": {
|
|
3
3
|
"id": "Icons",
|
|
4
4
|
"title": "Icons",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Find and use icons from the Nimbus icon library.",
|
|
6
6
|
"order": 5,
|
|
7
7
|
"repoPath": "packages/nimbus-icons/README.mdx",
|
|
8
8
|
"menu": [
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
}
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
|
-
"mdx": "\n
|
|
25
|
+
"mdx": "\n<IconSearch />\n",
|
|
26
26
|
"views": {
|
|
27
27
|
"overview": {
|
|
28
|
-
"mdx": "\n
|
|
28
|
+
"mdx": "\n<IconSearch />\n",
|
|
29
29
|
"toc": []
|
|
30
30
|
}
|
|
31
31
|
}
|