@splunk/react-ui 5.7.1 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/Accordion.js +6 -6
  2. package/Anchor.js +2 -1
  3. package/Box.js +83 -34
  4. package/CHANGELOG.md +51 -0
  5. package/Calendar.js +134 -134
  6. package/Clickable.js +131 -94
  7. package/CollapsiblePanel.js +175 -137
  8. package/ComboBox.js +32 -27
  9. package/ControlGroup.js +92 -91
  10. package/DefinitionList.js +9 -9
  11. package/Drawer.d.ts +2 -0
  12. package/Drawer.js +679 -0
  13. package/Dropdown.js +27 -18
  14. package/DualListbox.js +1 -1
  15. package/File.js +35 -35
  16. package/JSONTree.js +73 -72
  17. package/Link.js +2 -2
  18. package/MIGRATION.md +10 -0
  19. package/Menu.js +403 -261
  20. package/Modal.js +263 -252
  21. package/Monogram.js +2 -2
  22. package/Multiselect.js +551 -385
  23. package/Number.js +2 -1
  24. package/Paginator.js +14 -12
  25. package/Popover.js +4 -1
  26. package/README.md +11 -0
  27. package/RadioBar.js +1 -1
  28. package/Search.js +111 -95
  29. package/Select.js +42 -40
  30. package/SelectBase.js +819 -715
  31. package/SidePanel.js +346 -167
  32. package/SlidingPanels.js +11 -11
  33. package/StepBar.js +7 -7
  34. package/Switch.js +5 -5
  35. package/Table.js +116 -119
  36. package/Text.js +48 -48
  37. package/TextArea.js +7 -7
  38. package/TransitionOpen.js +188 -169
  39. package/docs-llm/Accordion.md +267 -0
  40. package/docs-llm/Anchor Menu.md +115 -0
  41. package/docs-llm/Anchor.md +54 -0
  42. package/docs-llm/AnimationToggle.md +254 -0
  43. package/docs-llm/Avatar.md +292 -0
  44. package/docs-llm/Badge.md +212 -0
  45. package/docs-llm/Breadcrumbs.md +306 -0
  46. package/docs-llm/Button Group.md +53 -0
  47. package/docs-llm/Button.md +361 -0
  48. package/docs-llm/Card Layout.md +286 -0
  49. package/docs-llm/Card.md +619 -0
  50. package/docs-llm/Checkbox.md +218 -0
  51. package/docs-llm/Chip.md +291 -0
  52. package/docs-llm/Clickable.md +160 -0
  53. package/docs-llm/Code.md +292 -0
  54. package/docs-llm/Collapsible Panel.md +744 -0
  55. package/docs-llm/Color.md +253 -0
  56. package/docs-llm/Column Layout.md +391 -0
  57. package/docs-llm/Combo Box.md +540 -0
  58. package/docs-llm/Control Group.md +594 -0
  59. package/docs-llm/Date.md +270 -0
  60. package/docs-llm/Definition List.md +278 -0
  61. package/docs-llm/Divider.md +216 -0
  62. package/docs-llm/Drawer.md +414 -0
  63. package/docs-llm/Dropdown.md +472 -0
  64. package/docs-llm/Dual Listbox.md +325 -0
  65. package/docs-llm/File.md +653 -0
  66. package/docs-llm/Form Rows.md +374 -0
  67. package/docs-llm/Heading.md +179 -0
  68. package/docs-llm/Image.md +109 -0
  69. package/docs-llm/JSON Tree.md +260 -0
  70. package/docs-llm/Layer.md +74 -0
  71. package/docs-llm/Layout.md +50 -0
  72. package/docs-llm/Link.md +318 -0
  73. package/docs-llm/List.md +189 -0
  74. package/docs-llm/Markdown.md +179 -0
  75. package/docs-llm/Menu.md +735 -0
  76. package/docs-llm/Message Bar.md +236 -0
  77. package/docs-llm/Message.md +248 -0
  78. package/docs-llm/Modal.md +443 -0
  79. package/docs-llm/Monogram.md +159 -0
  80. package/docs-llm/Multiselect.md +939 -0
  81. package/docs-llm/Notifications.md +46 -0
  82. package/docs-llm/Number.md +298 -0
  83. package/docs-llm/Paginator.md +395 -0
  84. package/docs-llm/Paragraph.md +148 -0
  85. package/docs-llm/Phone Number.md +254 -0
  86. package/docs-llm/Popover.md +166 -0
  87. package/docs-llm/Progress.md +141 -0
  88. package/docs-llm/Radio Bar.md +303 -0
  89. package/docs-llm/Radio List.md +350 -0
  90. package/docs-llm/Resize.md +362 -0
  91. package/docs-llm/Screen Reader Content.md +73 -0
  92. package/docs-llm/Scroll Container Context.md +155 -0
  93. package/docs-llm/Scroll.md +152 -0
  94. package/docs-llm/Search.md +381 -0
  95. package/docs-llm/Select.md +985 -0
  96. package/docs-llm/Side Panel.md +777 -0
  97. package/docs-llm/Slider.md +339 -0
  98. package/docs-llm/Sliding Panels.md +340 -0
  99. package/docs-llm/Split Button.md +295 -0
  100. package/docs-llm/Static Content.md +90 -0
  101. package/docs-llm/Step Bar.md +292 -0
  102. package/docs-llm/Switch.md +268 -0
  103. package/docs-llm/Tab Bar.md +439 -0
  104. package/docs-llm/Tab Layout.md +398 -0
  105. package/docs-llm/Table.md +2642 -0
  106. package/docs-llm/Text Area.md +253 -0
  107. package/docs-llm/Text.md +339 -0
  108. package/docs-llm/Tooltip.md +325 -0
  109. package/docs-llm/Transition Open.md +406 -0
  110. package/docs-llm/Tree.md +591 -0
  111. package/docs-llm/Typography.md +125 -0
  112. package/docs-llm/Wait Spinner.md +121 -0
  113. package/docs-llm/llms.txt +101 -0
  114. package/package.json +6 -5
  115. package/types/src/Box/Box.d.ts +2 -10
  116. package/types/src/Drawer/Body.d.ts +17 -0
  117. package/types/src/Drawer/Drawer.d.ts +114 -0
  118. package/types/src/Drawer/DrawerContext.d.ts +11 -0
  119. package/types/src/Drawer/Footer.d.ts +25 -0
  120. package/types/src/Drawer/Header.d.ts +41 -0
  121. package/types/src/Drawer/docs/examples/Basic.d.ts +6 -0
  122. package/types/src/Drawer/docs/examples/ContainerPosition.d.ts +7 -0
  123. package/types/src/Drawer/docs/examples/InitialFocus.d.ts +9 -0
  124. package/types/src/Drawer/docs/examples/InlinePosition.d.ts +7 -0
  125. package/types/src/Drawer/docs/examples/PagePosition.d.ts +7 -0
  126. package/types/src/Drawer/index.d.ts +2 -0
  127. package/types/src/JSONTree/JSONTree.d.ts +12 -5
  128. package/types/src/JSONTree/renderTreeItems.d.ts +2 -1
  129. package/types/src/Menu/Item.d.ts +2 -1
  130. package/types/src/Menu/docs/examples/SelectableCheckbox.d.ts +7 -0
  131. package/types/src/Modal/Modal.d.ts +1 -2
  132. package/types/src/Multiselect/Compact.d.ts +8 -3
  133. package/types/src/Multiselect/Multiselect.d.ts +8 -3
  134. package/types/src/Multiselect/Normal.d.ts +8 -3
  135. package/types/src/Multiselect/Option.d.ts +6 -3
  136. package/types/src/Multiselect/docs/examples/Disabled.d.ts +1 -0
  137. package/types/src/Select/Option.d.ts +6 -3
  138. package/types/src/Select/Select.d.ts +8 -5
  139. package/types/src/Select/docs/examples/Dimmed.d.ts +7 -0
  140. package/types/src/SelectBase/OptionBase.d.ts +6 -3
  141. package/types/src/SelectBase/SelectBase.d.ts +8 -3
  142. package/types/src/SidePanel/SidePanel.d.ts +43 -2
  143. package/types/src/SidePanel/docs/examples/DockLayout.d.ts +17 -0
  144. package/types/src/SidePanel/docs/examples/InitialFocus.d.ts +9 -0
  145. package/types/src/TransitionOpen/TransitionOpen.d.ts +29 -4
  146. package/types/src/useKeyPress/index.d.ts +9 -2
  147. package/types/src/useOnClickOutside/index.d.ts +2 -0
  148. package/types/src/useOnClickOutside/useOnClickOutside.d.ts +4 -0
  149. package/useKeyPress.js +23 -18
  150. package/useOnClickOutside.d.ts +2 -0
  151. package/useOnClickOutside.js +79 -0
  152. package/types/src/RadioList/docs/examples/Row.d.ts +0 -6
@@ -0,0 +1,306 @@
1
+ # Breadcrumbs
2
+
3
+ ## Overview
4
+
5
+
6
+ > Image: Illustration of a Breadcrumb component.
7
+
8
+
9
+ ## When to use this component
10
+ - The website or app structure has a large amount of content within a hierarchy of more than two levels.
11
+ - Pages are deeply nested and users could benefit from a sense of place to orient themselves and discover new content.
12
+
13
+ ## When to use another component
14
+ - For selecting a specific page from a range of pages, use Paginator.
15
+ - For conveying progress with numbered steps, use Step Bar.
16
+ - For switching between related sections on the same level of hierarchy, use Tab Bar.
17
+ - Products have a single level navigation.
18
+
19
+ ```mermaid
20
+ graph TD
21
+ accDescr: Decision tree that guides on when to use the Breadcrumbs component or something else
22
+ A(Is the page part of a multi-level hierarchy?) -- Yes --- B(Does the page have a single clear path?)
23
+ B -- Yes --- C(Breadcrumbs)
24
+ B -- No --- D(Links or other navigation)
25
+ A -- No --- E(Use global nav or back button)
26
+ ```
27
+
28
+ ### Check out
29
+ - [Paginator][1]
30
+ - [Step Bar] [2]
31
+ - [Tab Bar] [3]
32
+
33
+ ## Behaviors
34
+
35
+ ### Don’t hyperlink the current page
36
+ Allow users to navigate to parent pages in the breadcrumb trail.
37
+ <ImageAsset
38
+ context={require.context('./assets/clickable', false, /\.png$/)}
39
+ alt="Breadcrumb navigation showing 'Home > Community > Contact us.' The 'Community' breadcrumb is underlined with a hand cursor hovering over it, indicating it is clickable, while 'Contact us' is the current page and not clickable."
40
+ />
41
+
42
+
43
+ ## Usage
44
+
45
+ ### Don’t violate the Splunk logo with overrides
46
+ Do not override the separator '/'. Do not use the greater-than sign '>' or any iconography that is similar.
47
+ <ImageAsset
48
+ context={require.context('./assets/separator', false, /\.png$/)}
49
+ alt="Two breadcrumb examples. The first example with a heart eyes emoji uses a forward slash ('/') as a separator, displaying 'Page 1 / Page 2 / Current page.' The second example with a grimacing face emoji uses a greater-than symbol ('>') as a separator, which violates the Splunk brand guidelines."
50
+ />
51
+
52
+ ### Position accordingly
53
+ Breadcrumbs should be positioned below the top navigation and above the page title.
54
+ > Image: Two examples showing breadcrumb placement in relation to the page title. In the first example with a heart eyes emoji the Breadcrumb is positioned above the page title. In the second example with a grimacing face emoji the Breadcrumb is positioned below the page title, highlight improper positioning of Breadcrumb component.
55
+
56
+
57
+ ### Match the page title
58
+ Keep the current page breadcrumb the same as the page title.
59
+ > Image: Two examples showing breadcrumbs and page titles. The first example with a heart eyes emoji shows a breadcrumb
60
+
61
+
62
+ ### Provide a logical hierarchy
63
+ Ensure that the hierarchy mirrors the actual structure of the content or navigation.
64
+ > Image: Two breadcrumb examples showing content hierarchy. The first example, with a heart eyes emoji, displays
65
+
66
+
67
+ ### Allow for natural wrapping
68
+ Ensure that no individual breadcrumb item splits between lines, allowing the breadcrumb container to only break when necessary to maintain readability.
69
+ > Image: Two breadcrumb examples showing content hierarchy. The first example, with a heart eyes emoji, displays
70
+
71
+
72
+ ### Complement the main navigation
73
+ Breadcrumbs are a secondary navigation method and should complement the main navigation system, not replace it.
74
+ > Image: Two interface examples showing Breadcrumb usage with navigation. The first example, with a heart eyes emoji, has both a top navigation bar with the Splunk logo and a left sidebar navigation. The Breadcrumbs,
75
+
76
+
77
+ ### Don’t use more than one breadcrumb per page
78
+ Having more than one breadcrumb on a page can overwhelm or mislead users.
79
+ > Image: Two interface examples show breadcrumb usage. The first example, with a heart eyes emoji, displays a single Breadcrumb
80
+
81
+
82
+ ## Content
83
+
84
+ ### Limit breadcrumb to single line
85
+ Wrapping can make the hierarchy confusing.
86
+ > Image: Two examples showing Breadcrumb usage. The first example, with a heart eyes emoji, displays the Breadcrumb
87
+
88
+
89
+ [1]: ./Paginator
90
+ [2]: ./StepBar
91
+ [3]: ./TabBar
92
+
93
+ ## Examples
94
+
95
+
96
+ ### Basic
97
+
98
+ ```typescript
99
+ import React from 'react';
100
+
101
+ import Breadcrumbs from '@splunk/react-ui/Breadcrumbs';
102
+
103
+
104
+ function Basic() {
105
+ return (
106
+ <Breadcrumbs>
107
+ <Breadcrumbs.Item to="#home" label="Home" />
108
+ <Breadcrumbs.Item to="#design-principles" label="Design principles" />
109
+ <Breadcrumbs.Item to="#components" label="Using components" />
110
+ <Breadcrumbs.Item to="#setup" label="Setup a provider" />
111
+ </Breadcrumbs>
112
+ );
113
+ }
114
+
115
+ export default Basic;
116
+ ```
117
+
118
+
119
+
120
+ ### Adornments
121
+
122
+ A startAdornment and/or endAdornment can be added to a Breadcrumbs.Item. Icons should be decorative.
123
+
124
+ ```typescript
125
+ import React from 'react';
126
+
127
+ import Cog from '@splunk/react-icons/Cog';
128
+ import GeoTag from '@splunk/react-icons/GeoTag';
129
+ import Lock from '@splunk/react-icons/Lock';
130
+ import Portrait from '@splunk/react-icons/Portrait';
131
+ import Breadcrumbs from '@splunk/react-ui/Breadcrumbs';
132
+
133
+
134
+ function Adornments() {
135
+ return (
136
+ <Breadcrumbs>
137
+ <Breadcrumbs.Item to="#account" label="Account" startAdornment={<Portrait />} />
138
+ <Breadcrumbs.Item to="#settings" label="Settings" startAdornment={<Cog />} />
139
+ <Breadcrumbs.Item
140
+ to="#privacy"
141
+ label="Personal privacy"
142
+ startAdornment={<Portrait />}
143
+ endAdornment={<Lock />}
144
+ />
145
+ <Breadcrumbs.Item to="#history" label="Location history" endAdornment={<GeoTag />} />
146
+ </Breadcrumbs>
147
+ );
148
+ }
149
+
150
+ export default Adornments;
151
+ ```
152
+
153
+
154
+
155
+ ### Customized click
156
+
157
+ ```typescript
158
+ import React, { useState } from 'react';
159
+
160
+ import Breadcrumbs, { BreadcrumbsClickHandler } from '@splunk/react-ui/Breadcrumbs';
161
+ import DL, { Term as DT, Description as DD } from '@splunk/react-ui/DefinitionList';
162
+ import Typography from '@splunk/react-ui/Typography';
163
+
164
+ const asideStyle = { marginTop: 20 };
165
+ const overflowStyle = { overflow: 'scroll' };
166
+
167
+
168
+ function CustomizedClick() {
169
+ const [, setClickTo] = useState<string | undefined>();
170
+
171
+ const [activeItemData, setActiveItemData] = useState<string>();
172
+
173
+ const handleClick: BreadcrumbsClickHandler = (e, data) => {
174
+ const { to } = data;
175
+
176
+ setClickTo(to);
177
+ setActiveItemData(JSON.stringify(data));
178
+ };
179
+
180
+ return (
181
+ <>
182
+ <Breadcrumbs onClick={handleClick}>
183
+ <Breadcrumbs.Item to="#home" label="Home" />
184
+ <Breadcrumbs.Item to="#community" label="Community" />
185
+ <Breadcrumbs.Item to="#contactUs" label="Contact Us" />
186
+ </Breadcrumbs>
187
+ <aside style={asideStyle} aria-live="polite" aria-relevant="text">
188
+ <Typography as="p">Click a `Breadcrumbs.Item` to see the returned data</Typography>
189
+ {activeItemData ? (
190
+ <div style={overflowStyle}>
191
+ <DL>
192
+ <DT>Data:</DT>
193
+ <DD>
194
+ <code>{activeItemData}</code>
195
+ </DD>
196
+ </DL>
197
+ </div>
198
+ ) : null}
199
+ </aside>
200
+ </>
201
+ );
202
+ }
203
+
204
+ export default CustomizedClick;
205
+ ```
206
+
207
+
208
+
209
+
210
+ ## API
211
+
212
+
213
+ ### Breadcrumbs API
214
+
215
+ #### Props
216
+
217
+ | Name | Type | Required | Default | Description |
218
+ |------|------|------|------|------|
219
+ | children | React.ReactElement<typeof Item>[] \| React.ReactElement<typeof Item> | yes | | `children` must be of type `Breadcrumbs.Item`. The last child will be marked as the current page. |
220
+ | elementRef | React.Ref<HTMLElement> | no | | A React ref which is set to the DOM element when the component mounts and null when it unmounts. |
221
+ | enableCurrentPage | boolean | no | | By default, the current page is a dimmed link. This prop changes this behavior by enabling the current page link. |
222
+ | onClick | BreadcrumbsClickHandler | no | | An `onClick` handler for all Items. The function takes the event and an options argument with `to` and `label`. |
223
+
224
+ #### Types
225
+
226
+ | Name | Type | Description |
227
+ |------|------|------|
228
+ | BreadcrumbsClickHandler | ( event: React.MouseEvent<HTMLAnchorElement>, data: { label?: string; to: string; } ) => void | |
229
+
230
+
231
+
232
+ ### Breadcrumbs.Item API
233
+
234
+ #### Props
235
+
236
+ | Name | Type | Required | Default | Description |
237
+ |------|------|------|------|------|
238
+ | elementRef | React.Ref<HTMLAnchorElement> | no | | A React ref which is set to the DOM element when the component mounts and null when it unmounts. |
239
+ | endAdornment | React.ReactNode | no | | Adornment at the end of the label. |
240
+ | label | string | yes | | The label of the `Item`. |
241
+ | onClick | BreadcrumbsClickHandler | no | | An `onClick` handler for the current `Item`. |
242
+ | startAdornment | React.ReactNode | no | | Adornment at the start of the label. |
243
+ | to | string | yes | | The URL or path to link to. |
244
+
245
+
246
+
247
+
248
+
249
+ ## Accessibility
250
+
251
+ ## Component Use Cases
252
+
253
+ * Visual users know where they are in a product.
254
+ * Screen reader users have confirmation of the page they are on while tabbing.
255
+
256
+ ## Human Impact Overview
257
+
258
+ Breadcrumbs help users understand where they are in a product’s information architecture by displaying the parent pages of the current page in a hierarchical order. By having the component at the top of the page, a consistent guide is available, benefitting new product users and those with memory and focus difficulties.
259
+ When breadcrumbs are interactive, they create a highly visible and convenient method to return to a page, particularly for keyboard-only and screen reader users who would have to navigate through navigation and browser components.
260
+
261
+ ## Expected User Experience
262
+
263
+ * **Able-bodied user:** User sees breadcrumb component, likely under navigation bar and before header. They understand where they are in the app, and if needed, can click on any of the parent pages to go back.
264
+ * **Colorblind user:** User sees breadcrumb component. Placement and link treatment inform user that the component is interactive and can choose assistive technology of choice to interact with the component.
265
+ * **Keyboard-only user:** After either the “skip to main content” button or after all interactive navigation has passed, the first page in the breadcrumb component receives focus. The user is able to tab through the remaining pages before moving to main.
266
+ * **Screen reader user:** After either from the “skip to main content” button or after all interactive navigation, the screen reader announces that user has entered a nav element.
267
+
268
+ ## WCAG 2.2 Level A and AA Requirements
269
+
270
+ ### Design:
271
+
272
+ * [Use of Color][1] **(SC 1.4.1, Level A):** Because not all users can see colors the same way, there must be an additional differentiator between the prior and current page of the breadcrumb.
273
+ * [Color Contrast][2] **(SC 1.4.3, Level AA):** All text and symbols to background must have a color contrast ratio of >=4.5.1.
274
+
275
+ ### Implementation:
276
+
277
+ * [Keyboard Accessible][3] **(SC 2.1.1, Level A):** Close icon, and when applicable, in-line link, must be accessible via keyboard.
278
+ * <kbd>Tab</kbd> and <kbd>Shift+Tab</kbd>: moves through hierarchy.
279
+ * <kbd>Space</kbd> and <kbd>Enter</kbd>: navigates to selected link.
280
+ * [Focus Visible][4] **(SC 2.4.6, Level A):** Focus must be visible on any interactive element.
281
+
282
+ * For a focus border of &lt3px, color contrast must be &gt=4.5:1
283
+ * For a focus border of &gt3pc, color contrast must be &gt3:1
284
+
285
+ * [Consistent Navigation][5] **(SC 3.2.6, Level AA):** Breadcrumb names should replicate page names for consistency and exist in the same place on every webpage, where applicable.
286
+ * [Meaningful Sequence][6] **(SC 1.3.2, Level A):** On a page, breadcrumbs should appear or be announced after any primary and secondary (i.e. left side) navigation.
287
+
288
+ ## Additional Recommendations
289
+
290
+ * Breadcrumb should follow the [A11y and Docs Team Stance on Character Usage][7] and use forward slash.
291
+ * Implementation should align to [WAI-ARIA Breadcrumb Practices][8].
292
+ * For screen readers:
293
+ * Every clickable level/title is implemented as a **link** (not button).
294
+ * Breadcrumb should be an ordered list within a labeled navigation landmark region, where the active page is marked with `aria-current=”page”`. The last breadcrumb item will be automatically marked as the currently active page.
295
+ * Labels are required and icons should be decorative.
296
+
297
+ [1]: https://www.w3.org/TR/WCAG21/#use-of-color
298
+ [2]: https://www.w3.org/TR/WCAG21/#contrast-minimum
299
+ [3]: https://www.w3.org/TR/WCAG21/#keyboard-accessible
300
+ [4]: https://www.w3.org/TR/WCAG21/#focus-visible
301
+ [5]: https://www.w3.org/TR/WCAG21/#consistent-navigation
302
+ [6]: https://w3c.github.io/wcag/guidelines/22/#meaningful-sequence
303
+ [7]: https://docs.google.com/document/d/1av2jxk8n6DLHsq24_9szrsRQETR7ABWmJqCys0VJwXs/edit?usp=sharing
304
+ [8]: https://www.w3.org/TR/wai-aria-practices/#breadcrumb
305
+
306
+
@@ -0,0 +1,53 @@
1
+ # Button Group
2
+
3
+ ## Examples
4
+
5
+
6
+ ### Basic
7
+
8
+ ```typescript
9
+ import React from 'react';
10
+
11
+ import Button from '@splunk/react-ui/Button';
12
+ import ButtonGroup from '@splunk/react-ui/ButtonGroup';
13
+
14
+
15
+ export default function Basic() {
16
+ return (
17
+ <ButtonGroup>
18
+ <Button>One</Button>
19
+ <Button>Two</Button>
20
+ <Button>Three</Button>
21
+ </ButtonGroup>
22
+ );
23
+ }
24
+ ```
25
+
26
+
27
+
28
+
29
+ ## API
30
+
31
+
32
+ ### ButtonGroup API
33
+
34
+ #### Props
35
+
36
+ | Name | Type | Required | Default | Description |
37
+ |------|------|------|------|------|
38
+ | children | React.ReactNode | no | | Must be `Button`. |
39
+ | elementRef | React.Ref<HTMLDivElement> | no | | A React ref which is set to the DOM element when the component mounts and null when it unmounts. |
40
+
41
+
42
+
43
+
44
+
45
+ ## Accessibility
46
+
47
+ ButtonGroup is a series of buttons visually placed together; it has no functional or semantic use. Confirm use case below to find the best component for implementation.
48
+
49
+ - Single Select: any button in this group can be selected; actions are independent of one another. Refer to [Button](Button?section=a11y).
50
+ - Checkbox Select: Multiple buttons can be selected within the ButtonGroup; buttons are independent of one another. Refer to [Menu](Menu?section=a11y).
51
+ - Radio Select: Only one button can be selected within the ButtonGroup; actions revolve around one grouping. Refer to [RadioBar](RadioBar?section=a11y).
52
+
53
+