@vibe/core 4.2.5 → 4.3.0-alpha-9bd83.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 (109) hide show
  1. package/dist/metadata/accessibility/Accordion.md +10 -0
  2. package/dist/metadata/accessibility/AlertBanner.md +9 -0
  3. package/dist/metadata/accessibility/Avatar.md +12 -0
  4. package/dist/metadata/accessibility/AvatarGroup.md +6 -0
  5. package/dist/metadata/accessibility/BreadcrumbsBar.md +10 -0
  6. package/dist/metadata/accessibility/Button.md +13 -0
  7. package/dist/metadata/accessibility/ButtonGroup.md +9 -0
  8. package/dist/metadata/accessibility/Checkbox.md +13 -0
  9. package/dist/metadata/accessibility/Chips.md +10 -0
  10. package/dist/metadata/accessibility/Combobox.md +6 -0
  11. package/dist/metadata/accessibility/DropdownBasicDropdown.md +10 -0
  12. package/dist/metadata/accessibility/IconButton.md +26 -0
  13. package/dist/metadata/accessibility/Info.md +12 -0
  14. package/dist/metadata/accessibility/Link.md +8 -0
  15. package/dist/metadata/accessibility/List.md +11 -0
  16. package/dist/metadata/accessibility/Menu.md +10 -0
  17. package/dist/metadata/accessibility/MenuButton.md +6 -0
  18. package/dist/metadata/accessibility/MenuItem.md +8 -0
  19. package/dist/metadata/accessibility/Modal.md +35 -0
  20. package/dist/metadata/accessibility/NumberField.md +9 -0
  21. package/dist/metadata/accessibility/RadioButton.md +11 -0
  22. package/dist/metadata/accessibility/Search.md +10 -0
  23. package/dist/metadata/accessibility/Tabs.md +10 -0
  24. package/dist/metadata/accessibility/TextArea.md +17 -0
  25. package/dist/metadata/accessibility/TextField.md +16 -0
  26. package/dist/metadata/accessibility/Toast.md +4 -0
  27. package/dist/metadata/accessibility/Toggle.md +7 -0
  28. package/dist/metadata/accessibility/Tooltip.md +11 -0
  29. package/dist/metadata/components.json +20940 -0
  30. package/dist/metadata/examples/Accordion.md +136 -0
  31. package/dist/metadata/examples/AlertBanner.md +85 -0
  32. package/dist/metadata/examples/AttentionBox.md +267 -0
  33. package/dist/metadata/examples/Avatar.md +118 -0
  34. package/dist/metadata/examples/AvatarGroup.md +390 -0
  35. package/dist/metadata/examples/Badge.md +59 -0
  36. package/dist/metadata/examples/BaseInput.md +2 -0
  37. package/dist/metadata/examples/BaseList.md +342 -0
  38. package/dist/metadata/examples/Box.md +208 -0
  39. package/dist/metadata/examples/BreadcrumbItem.md +54 -0
  40. package/dist/metadata/examples/BreadcrumbsBar.md +64 -0
  41. package/dist/metadata/examples/Button.md +174 -0
  42. package/dist/metadata/examples/ButtonGroup.md +180 -0
  43. package/dist/metadata/examples/Checkbox.md +24 -0
  44. package/dist/metadata/examples/Chips.md +192 -0
  45. package/dist/metadata/examples/Clickable.md +31 -0
  46. package/dist/metadata/examples/ColorPicker.md +2 -0
  47. package/dist/metadata/examples/Combobox.md +438 -0
  48. package/dist/metadata/examples/Counter.md +188 -0
  49. package/dist/metadata/examples/DatePicker.md +43 -0
  50. package/dist/metadata/examples/Dialog.md +521 -0
  51. package/dist/metadata/examples/DialogContentContainer.md +18 -0
  52. package/dist/metadata/examples/Divider.md +50 -0
  53. package/dist/metadata/examples/DropdownBasicDropdown.md +479 -0
  54. package/dist/metadata/examples/DropdownBoxMode.md +218 -0
  55. package/dist/metadata/examples/EditableHeading.md +33 -0
  56. package/dist/metadata/examples/EditableText.md +36 -0
  57. package/dist/metadata/examples/EmptyState.md +192 -0
  58. package/dist/metadata/examples/ExpandCollapse.md +77 -0
  59. package/dist/metadata/examples/Flex.md +916 -0
  60. package/dist/metadata/examples/Heading.md +124 -0
  61. package/dist/metadata/examples/HiddenText.md +8 -0
  62. package/dist/metadata/examples/Icon.md +67 -0
  63. package/dist/metadata/examples/IconButton.md +141 -0
  64. package/dist/metadata/examples/Info.md +80 -0
  65. package/dist/metadata/examples/Label.md +109 -0
  66. package/dist/metadata/examples/Link.md +52 -0
  67. package/dist/metadata/examples/List.md +125 -0
  68. package/dist/metadata/examples/ListItem.md +42 -0
  69. package/dist/metadata/examples/Loader.md +148 -0
  70. package/dist/metadata/examples/Menu.md +141 -0
  71. package/dist/metadata/examples/MenuButton.md +127 -0
  72. package/dist/metadata/examples/MenuDivider.md +35 -0
  73. package/dist/metadata/examples/MenuGridItem.md +65 -0
  74. package/dist/metadata/examples/MenuItem.md +98 -0
  75. package/dist/metadata/examples/MenuItemButton.md +42 -0
  76. package/dist/metadata/examples/MenuTitle.md +25 -0
  77. package/dist/metadata/examples/ModalBasicLayout.md +400 -0
  78. package/dist/metadata/examples/ModalMediaLayout.md +240 -0
  79. package/dist/metadata/examples/ModalSideBySideLayout.md +313 -0
  80. package/dist/metadata/examples/MultiStepIndicator.md +189 -0
  81. package/dist/metadata/examples/NumberField.md +68 -0
  82. package/dist/metadata/examples/ProgressBar.md +152 -0
  83. package/dist/metadata/examples/RadioButton.md +41 -0
  84. package/dist/metadata/examples/Search.md +24 -0
  85. package/dist/metadata/examples/Skeleton.md +161 -0
  86. package/dist/metadata/examples/Slider.md +109 -0
  87. package/dist/metadata/examples/SplitButton.md +120 -0
  88. package/dist/metadata/examples/Steps.md +106 -0
  89. package/dist/metadata/examples/Table.md +449 -0
  90. package/dist/metadata/examples/Tabs.md +241 -0
  91. package/dist/metadata/examples/Text.md +188 -0
  92. package/dist/metadata/examples/TextArea.md +28 -0
  93. package/dist/metadata/examples/TextField.md +119 -0
  94. package/dist/metadata/examples/TextWithHighlight.md +2 -0
  95. package/dist/metadata/examples/ThemeProvider.md +47 -0
  96. package/dist/metadata/examples/Tipseen.md +111 -0
  97. package/dist/metadata/examples/Toast.md +127 -0
  98. package/dist/metadata/examples/Toggle.md +38 -0
  99. package/dist/metadata/examples/Tooltip.md +53 -0
  100. package/dist/metadata/examples/VirtualizedGrid.md +54 -0
  101. package/dist/metadata/examples/VirtualizedList.md +50 -0
  102. package/dist/metadata/examples/useGridKeyboardNavigationContext.md +61 -0
  103. package/dist/mocked_classnames/scripts/build-all-metadata.d.ts +1 -0
  104. package/dist/mocked_classnames/scripts/extract-accessibility.d.ts +4 -0
  105. package/dist/mocked_classnames/scripts/extract-examples.d.ts +3 -0
  106. package/dist/scripts/build-all-metadata.d.ts +1 -0
  107. package/dist/scripts/extract-accessibility.d.ts +4 -0
  108. package/dist/scripts/extract-examples.d.ts +3 -0
  109. package/package.json +12 -10
@@ -0,0 +1,479 @@
1
+ # Storybook Code Examples
2
+
3
+ ## Overview
4
+
5
+ ```tsx
6
+ const dropdownTemplate = (props: BaseDropdownProps<any>) => {
7
+ const options = useMemo(() => [{
8
+ value: 1,
9
+ label: "Option 1"
10
+ }, {
11
+ value: 2,
12
+ label: "Option 2"
13
+ }, {
14
+ value: 3,
15
+ label: "Option 3"
16
+ }], []);
17
+ return <div style={{
18
+ height: "150px",
19
+ width: "300px"
20
+ }}>
21
+ <Dropdown options={options} label="Label" helperText="Helper text" {...props} />
22
+ </div>;
23
+ }
24
+ ```
25
+
26
+ ## Sizes
27
+
28
+ ```tsx
29
+ const options = useMemo(() => [{
30
+ value: 1,
31
+ label: "Option 1"
32
+ }, {
33
+ value: 2,
34
+ label: "Option 2"
35
+ }, {
36
+ value: 3,
37
+ label: "Option 3"
38
+ }], []);
39
+ return <Flex gap="medium">
40
+ <div style={{
41
+ width: "300px"
42
+ }}>
43
+ <Dropdown id="sizes-large" aria-label="Large dropdown" options={options} placeholder="Placeholder text here" label="Label" size="large" clearAriaLabel="Clear" />
44
+ </div>
45
+ <div style={{
46
+ width: "300px"
47
+ }}>
48
+ <Dropdown id="sizes-medium" aria-label="Medium dropdown" options={options} placeholder="Placeholder text here" label="Label" size="medium" clearAriaLabel="Clear" />
49
+ </div>
50
+ <div style={{
51
+ width: "300px"
52
+ }}>
53
+ <Dropdown id="sizes-small" aria-label="Small dropdown" options={options} placeholder="Placeholder text here" label="Label" size="small" clearAriaLabel="Clear" />
54
+ </div>
55
+ </Flex>;
56
+ ```
57
+
58
+ ## States
59
+
60
+ ```tsx
61
+ <Flex direction="row" gap="medium">
62
+ <Flex direction="column" gap="medium">
63
+ <div style={{
64
+ width: "300px"
65
+ }}>
66
+ <Dropdown id="states-default" aria-label="Default dropdown" options={[]} placeholder="Default" clearAriaLabel="Clear" />
67
+ </div>
68
+ <div style={{
69
+ width: "300px"
70
+ }}>
71
+ <Dropdown id="states-disabled" aria-label="Disabled dropdown" options={[]} placeholder="Disabled" disabled clearAriaLabel="Clear" />
72
+ </div>
73
+ </Flex>
74
+ <Flex direction="column" gap="medium">
75
+ <div style={{
76
+ width: "300px"
77
+ }}>
78
+ <Dropdown id="states-error" aria-label="Error dropdown" options={[]} placeholder="Error" error clearAriaLabel="Clear" />
79
+ </div>
80
+ <div style={{
81
+ width: "300px"
82
+ }}>
83
+ <Dropdown id="states-readonly" aria-label="Readonly dropdown" options={[]} placeholder="Readonly" readOnly clearAriaLabel="Clear" />
84
+ </div>
85
+ </Flex>
86
+ </Flex>
87
+ ```
88
+
89
+ ## MultiSelect
90
+
91
+ ```tsx
92
+ const options = useMemo(() => [{
93
+ value: "1",
94
+ label: "Chip one"
95
+ }, {
96
+ value: "2",
97
+ label: "Chip two"
98
+ }, {
99
+ value: "3",
100
+ label: "Chip three"
101
+ }, {
102
+ value: "4",
103
+ label: "Chip four"
104
+ }], []);
105
+ return <Flex gap="large" align="start" justify="start">
106
+ <Flex direction="column" gap="medium">
107
+ <Text>Single line with hidden options</Text>
108
+ <div style={{
109
+ width: "350px",
110
+ marginBottom: "50px"
111
+ }}>
112
+ <Dropdown placeholder="Single line multi state" defaultValue={[options[0], options[1], options[2]]} options={options} multi clearAriaLabel="Clear" />
113
+ </div>
114
+ </Flex>
115
+ <Flex direction="column" gap="medium">
116
+ <Text>Multiple lines</Text>
117
+ <div style={{
118
+ width: "350px",
119
+ marginBottom: "50px"
120
+ }}>
121
+ <Dropdown placeholder="Multiple line multi state" defaultValue={[options[0], options[1], options[2]]} options={options} multi multiline clearAriaLabel="Clear" />
122
+ </div>
123
+ </Flex>
124
+ </Flex>;
125
+ ```
126
+
127
+ ## DropdownWithIconOrAvatar
128
+
129
+ ```tsx
130
+ const optionsIcons: any = useMemo(() => [{
131
+ value: "email",
132
+ label: "Email",
133
+ startElement: {
134
+ type: "icon",
135
+ value: Email
136
+ }
137
+ }, {
138
+ value: "attach",
139
+ label: "Attach",
140
+ startElement: {
141
+ type: "icon",
142
+ value: Attach
143
+ }
144
+ }], []);
145
+ const optionsAvatar: any = useMemo(() => [{
146
+ value: "Julia",
147
+ label: "Julia Martinez",
148
+ startElement: {
149
+ type: "avatar",
150
+ value: person1
151
+ }
152
+ }, {
153
+ value: "Sophia",
154
+ label: "Sophia Johnson",
155
+ startElement: {
156
+ type: "avatar",
157
+ value: person2
158
+ }
159
+ }, {
160
+ value: "Marco",
161
+ label: "Marco DiAngelo",
162
+ startElement: {
163
+ type: "avatar",
164
+ value: person3
165
+ }
166
+ }], []);
167
+ return <Flex gap="large" align="start" justify="start">
168
+ <Flex direction="column" gap="medium">
169
+ <Text>Single value</Text>
170
+ <div style={{
171
+ width: "350px",
172
+ marginBottom: "10px"
173
+ }}>
174
+ <Dropdown defaultValue={optionsIcons[0]} options={optionsIcons} clearAriaLabel="Clear" />
175
+ </div>
176
+ <div style={{
177
+ width: "350px",
178
+ marginBottom: "10px"
179
+ }}>
180
+ <Dropdown defaultValue={optionsAvatar[0]} options={optionsAvatar} clearAriaLabel="Clear" />
181
+ </div>
182
+ </Flex>
183
+ <Flex direction="column" gap="medium">
184
+ <Text>Multiple values</Text>
185
+ <div style={{
186
+ width: "350px",
187
+ marginBottom: "10px"
188
+ }}>
189
+ <Dropdown defaultValue={[optionsIcons[0]]} options={optionsIcons} multi clearAriaLabel="Clear" />
190
+ </div>
191
+ <div style={{
192
+ width: "350px",
193
+ marginBottom: "10px"
194
+ }}>
195
+ <Dropdown defaultValue={[optionsAvatar[0]]} options={optionsAvatar} multi clearAriaLabel="Clear" />
196
+ </div>
197
+ </Flex>
198
+ </Flex>;
199
+ ```
200
+
201
+ ## Searchable
202
+
203
+ ```tsx
204
+ const options = useMemo(() => [{
205
+ value: "Item 1",
206
+ label: "Item 1"
207
+ }, {
208
+ value: "Item 2",
209
+ label: "Item 2"
210
+ }, {
211
+ value: "Item 3",
212
+ label: "Item 3"
213
+ }], []);
214
+ return <div style={{
215
+ width: "300px"
216
+ }}>
217
+ <Dropdown placeholder={"Search an item"} options={options} searchable maxMenuHeight={170} clearAriaLabel="Clear" />
218
+ </div>;
219
+ ```
220
+
221
+ ## DropdownWithGroups
222
+
223
+ ```tsx
224
+ const options = useMemo(() => [{
225
+ label: "Category 1",
226
+ options: [{
227
+ value: "1",
228
+ label: "Item 1"
229
+ }, {
230
+ value: "2",
231
+ label: "Item 2"
232
+ }, {
233
+ value: "3",
234
+ label: "Item 3"
235
+ }]
236
+ }, {
237
+ label: "Category 2",
238
+ options: [{
239
+ value: "4",
240
+ label: "Item 1"
241
+ }, {
242
+ value: "5",
243
+ label: "Item 2"
244
+ }, {
245
+ value: "6",
246
+ label: "Item 3"
247
+ }]
248
+ }], []);
249
+ const optionsWithoutGroupLabel = useMemo(() => [{
250
+ options: [{
251
+ value: "1",
252
+ label: "Item 1"
253
+ }, {
254
+ value: "2",
255
+ label: "Item 2"
256
+ }, {
257
+ value: "3",
258
+ label: "Item 3"
259
+ }]
260
+ }, {
261
+ options: [{
262
+ value: "4",
263
+ label: "Item 1"
264
+ }, {
265
+ value: "5",
266
+ label: "Item 2"
267
+ }]
268
+ }], []);
269
+ return <Flex gap="medium" align="start" justify="start">
270
+ <Flex direction="column" gap="medium">
271
+ <Text>Group by divider</Text>
272
+ <div style={{
273
+ width: "300px"
274
+ }}>
275
+ <Dropdown placeholder="Group by divider" options={optionsWithoutGroupLabel} withGroupDivider maxMenuHeight={170} clearAriaLabel="Clear" />
276
+ </div>
277
+ </Flex>
278
+ <Flex direction="column" gap="medium">
279
+ <Text>Group by category</Text>
280
+ <div style={{
281
+ width: "300px"
282
+ }}>
283
+ <Dropdown placeholder="Group by category" options={options} maxMenuHeight={170} clearAriaLabel="Clear" />
284
+ </div>
285
+ </Flex>
286
+ <Flex direction="column" gap="medium">
287
+ <Text>Group by category title sticky</Text>
288
+ <div style={{
289
+ width: "300px"
290
+ }}>
291
+ <Dropdown placeholder="Group by category title sticky" options={options} stickyGroupTitle maxMenuHeight={170} clearAriaLabel="Clear" />
292
+ </div>
293
+ </Flex>
294
+ </Flex>;
295
+ ```
296
+
297
+ ## DropdownItemWithElements
298
+
299
+ ```tsx
300
+ const startOptions: DropdownOption<Record<string, unknown>>[] = useMemo(() => [{
301
+ value: "icon",
302
+ label: "Item with icon",
303
+ startElement: {
304
+ type: "icon",
305
+ value: Email
306
+ }
307
+ }, {
308
+ value: "avatar",
309
+ label: "Item with avatar",
310
+ startElement: {
311
+ type: "avatar",
312
+ value: person1
313
+ }
314
+ }, {
315
+ value: "indent",
316
+ label: "Item with insert",
317
+ startElement: {
318
+ type: "indent"
319
+ }
320
+ }], []);
321
+ const endOptions: DropdownOption<Record<string, unknown>>[] = useMemo(() => [{
322
+ value: "endIcon",
323
+ label: "Item with icon",
324
+ endElement: {
325
+ type: "icon",
326
+ value: Email
327
+ }
328
+ }, {
329
+ value: "hintText",
330
+ label: "Item with hint text",
331
+ endElement: {
332
+ type: "suffix",
333
+ value: "⌘C"
334
+ }
335
+ }], []);
336
+ return <Flex gap="large">
337
+ <div style={{
338
+ width: "300px"
339
+ }}>
340
+ <Dropdown placeholder={"Start element"} options={startOptions} label="Start element" required clearAriaLabel="Clear" />
341
+ </div>
342
+ <div style={{
343
+ width: "300px"
344
+ }}>
345
+ <Dropdown placeholder={"End element"} options={endOptions} label="End element" required clearAriaLabel="Clear" />
346
+ </div>
347
+ </Flex>;
348
+ ```
349
+
350
+ ## DropdownHideSelectedItems
351
+
352
+ ```tsx
353
+ const options = useMemo(() => [{
354
+ value: "Option 1",
355
+ label: "Label"
356
+ }, {
357
+ value: "Option 2",
358
+ label: "Label"
359
+ }, {
360
+ value: "Option 3",
361
+ label: "Label"
362
+ }, {
363
+ value: "Option 4",
364
+ label: "Label"
365
+ }, {
366
+ value: "Option 5",
367
+ label: "Label"
368
+ }, {
369
+ value: "Option 6",
370
+ label: "Label"
371
+ }], []);
372
+ return <div style={{
373
+ width: "300px"
374
+ }}>
375
+ <Dropdown placeholder={"Placeholder text here"} options={options} defaultValue={[options[0], options[2], options[3]]} label="Label" required multi showSelectedOptions={false} clearAriaLabel="Clear" />
376
+ </div>;
377
+ ```
378
+
379
+ ## DropdownWithTooltips
380
+
381
+ ```tsx
382
+ const optionsWithTooltips = useMemo(() => [{
383
+ value: "Option 1",
384
+ label: "Tooltip",
385
+ tooltipProps: {
386
+ content: "This is a title message for further information will appear here."
387
+ }
388
+ }, {
389
+ value: "Option 2",
390
+ label: "Chip",
391
+ tooltipProps: {
392
+ content: "This is a title message for further information will appear here."
393
+ }
394
+ }, {
395
+ value: "Option 3",
396
+ label: "Button"
397
+ }], []);
398
+ return <div style={{
399
+ width: "300px"
400
+ }}>
401
+ <Dropdown placeholder={"Placeholder text here"} options={optionsWithTooltips} clearAriaLabel="Clear" />
402
+ </div>;
403
+ ```
404
+
405
+ ## Virtualized Dropdown
406
+
407
+ ```tsx
408
+ const options = useMemo(() => [{
409
+ options: Array.from({
410
+ length: 1000
411
+ }, (_, index) => ({
412
+ value: `option-${index + 1}`,
413
+ label: `Option ${index + 1}`
414
+ }))
415
+ }], []);
416
+ const groupedOptions = useMemo(() => Array.from({
417
+ length: 10
418
+ }, (_, groupIndex) => ({
419
+ label: `Group ${groupIndex + 1}`,
420
+ options: Array.from({
421
+ length: 100
422
+ }, (_, optionIndex) => ({
423
+ value: `group-${groupIndex + 1}-option-${optionIndex + 1}`,
424
+ label: `Group ${groupIndex + 1} - Option ${optionIndex + 1}`
425
+ }))
426
+ })), []);
427
+ const virtualizedMenuRenderer = useCallback(({
428
+ children
429
+ }: {
430
+ children: React.ReactNode;
431
+ }) => {
432
+ const flattenedOptions: React.ReactElement[] = [];
433
+ const flattenOptions = (reactNode: React.ReactNode) => {
434
+ React.Children.forEach(reactNode, childElement => {
435
+ if (React.isValidElement(childElement)) {
436
+ if (childElement.type === "li" || childElement.props?.role) {
437
+ flattenedOptions.push(childElement);
438
+ } else if (childElement.props?.children) {
439
+ flattenOptions(childElement.props.children);
440
+ }
441
+ }
442
+ });
443
+ };
444
+ flattenOptions(children);
445
+ if (flattenedOptions.length === 0) {
446
+ return <div>No options available</div>;
447
+ }
448
+ const itemHeight = 40;
449
+ const containerHeight = 200;
450
+
451
+ // Row renderer that preserves original elements with all their downshift props
452
+ const VirtualizedRow = useCallback(({
453
+ index,
454
+ style
455
+ }: {
456
+ index: number;
457
+ style: React.CSSProperties;
458
+ }) => {
459
+ const option = flattenedOptions[index];
460
+ return <div style={style}>{option}</div>;
461
+ }, [flattenedOptions]);
462
+ return <List height={containerHeight} width="100%" itemCount={flattenedOptions.length} itemSize={itemHeight} overscanCount={5}>
463
+ {VirtualizedRow}
464
+ </List>;
465
+ }, []);
466
+ return <Flex gap="large" align="start">
467
+ <div style={{
468
+ width: "350px"
469
+ }}>
470
+ <Dropdown placeholder="Search" options={options} label="Virtualized" menuRenderer={virtualizedMenuRenderer} searchable maxMenuHeight={250} clearAriaLabel="Clear" />
471
+ </div>
472
+ <div style={{
473
+ width: "350px"
474
+ }}>
475
+ <Dropdown placeholder="Search" options={groupedOptions} label="Grouped Virtualized" menuRenderer={virtualizedMenuRenderer} searchable maxMenuHeight={250} clearAriaLabel="Clear" />
476
+ </div>
477
+ </Flex>;
478
+ ```
479
+
@@ -0,0 +1,218 @@
1
+ # Storybook Code Examples
2
+
3
+ ## Overview
4
+
5
+ ```tsx
6
+ const dropdownTemplate = props => {
7
+ const options = useMemo(() => [{
8
+ value: 1,
9
+ label: "Label"
10
+ }, {
11
+ value: 2,
12
+ label: "Label"
13
+ }, {
14
+ value: 3,
15
+ label: "Label"
16
+ }, {
17
+ value: 4,
18
+ label: "Label"
19
+ }, {
20
+ value: 5,
21
+ label: "Label"
22
+ }], []);
23
+ return <div style={{
24
+ width: "300px"
25
+ }}>
26
+ <Dropdown id="box-mode-overview" aria-label="Box mode overview" options={options} label="Label" placeholder="Placeholder text here" helperText="Helper text" searchable boxMode clearAriaLabel="Clear" />
27
+ </div>;
28
+ }
29
+ ```
30
+
31
+ ## DefaultState
32
+
33
+ ```tsx
34
+ const options = useMemo(() => [{
35
+ value: 1,
36
+ label: "Label"
37
+ }, {
38
+ value: 2,
39
+ label: "Label"
40
+ }, {
41
+ value: 3,
42
+ label: "Label"
43
+ }, {
44
+ value: 4,
45
+ label: "Label"
46
+ }, {
47
+ value: 5,
48
+ label: "Label"
49
+ }, {
50
+ value: 6,
51
+ label: "Label"
52
+ }], []);
53
+ return <div style={{
54
+ width: "300px"
55
+ }}>
56
+ <Dropdown id="box-mode-default-state" aria-label="Box mode default state" options={options} label="Label" placeholder="Placeholder text" helperText="Helper text" searchable boxMode clearAriaLabel="Clear" />
57
+ </div>;
58
+ ```
59
+
60
+ ## InsideADialog
61
+
62
+ ```tsx
63
+ const options = useMemo(() => [{
64
+ value: 1,
65
+ label: "Label"
66
+ }, {
67
+ value: 2,
68
+ label: "Label"
69
+ }, {
70
+ value: 3,
71
+ label: "Label"
72
+ }, {
73
+ value: 4,
74
+ label: "Label"
75
+ }, {
76
+ value: 5,
77
+ label: "Label"
78
+ }, {
79
+ value: 6,
80
+ label: "Label"
81
+ }], []);
82
+ return <div style={{
83
+ width: "300px"
84
+ }}>
85
+ <DialogContentContainer>
86
+ <Dropdown id="box-mode-dialog" aria-label="Box mode inside dialog" options={options} placeholder="Placeholder text" searchable boxMode clearAriaLabel="Clear" />
87
+ <Button style={{
88
+ width: "100%"
89
+ }} kind="secondary" size="small">
90
+ Edit
91
+ </Button>
92
+ </DialogContentContainer>
93
+ </div>;
94
+ ```
95
+
96
+ ## MultiSelect
97
+
98
+ ```tsx
99
+ const options = useMemo(() => [{
100
+ value: 1,
101
+ label: "Label"
102
+ }, {
103
+ value: 2,
104
+ label: "Label"
105
+ }, {
106
+ value: 3,
107
+ label: "Label"
108
+ }, {
109
+ value: 4,
110
+ label: "Label"
111
+ }, {
112
+ value: 5,
113
+ label: "Label"
114
+ }], []);
115
+ return <Flex gap="large" align="start" wrap>
116
+ <Flex direction="column" gap="medium">
117
+ <Text type="text1" weight="bold">
118
+ Single line with hidden options
119
+ </Text>
120
+ <div style={{
121
+ width: "300px"
122
+ }}>
123
+ <Dropdown id="box-mode-multi-single-line" aria-label="Box mode multi select single line" options={options} placeholder="Placeholder text" searchable multi boxMode clearAriaLabel="Clear" />
124
+ </div>
125
+ </Flex>
126
+
127
+ <Flex direction="column" gap="medium">
128
+ <Text type="text1" weight="bold">
129
+ Multiple lines
130
+ </Text>
131
+ <div style={{
132
+ width: "300px"
133
+ }}>
134
+ <Dropdown id="box-mode-multi-multiline" aria-label="Box mode multi select multiple lines" options={options} placeholder="Placeholder text" searchable multi multiline boxMode clearAriaLabel="Clear" />
135
+ </div>
136
+ </Flex>
137
+ </Flex>;
138
+ ```
139
+
140
+ ## WithIcons
141
+
142
+ ```tsx
143
+ const optionsWithIcons: any = useMemo(() => [{
144
+ value: "email",
145
+ label: "Email",
146
+ startElement: {
147
+ type: "icon",
148
+ value: Email
149
+ }
150
+ }, {
151
+ value: "send",
152
+ label: "Send",
153
+ startElement: {
154
+ type: "icon",
155
+ value: Send
156
+ }
157
+ }, {
158
+ value: "mobile",
159
+ label: "Mobile",
160
+ startElement: {
161
+ type: "icon",
162
+ value: Mobile
163
+ }
164
+ }, {
165
+ value: "notification",
166
+ label: "Send notification"
167
+ }], []);
168
+ return <div style={{
169
+ width: "300px"
170
+ }}>
171
+ <Dropdown id="box-mode-with-icons" aria-label="Box mode with icons" options={optionsWithIcons} label="Notify via" placeholder="You can choose multiple options" searchable multi boxMode clearAriaLabel="Clear" />
172
+ </div>;
173
+ ```
174
+
175
+ ## PeoplePicker
176
+
177
+ ```tsx
178
+ const peopleOptions: any = useMemo(() => [{
179
+ label: "Suggested people",
180
+ options: [{
181
+ value: "Matt",
182
+ label: "Matt Gaman",
183
+ startElement: {
184
+ type: "avatar",
185
+ value: person1
186
+ }
187
+ }, {
188
+ value: "Jennifer",
189
+ label: "Jennifer Lawrence",
190
+ startElement: {
191
+ type: "avatar",
192
+ value: person2
193
+ }
194
+ }, {
195
+ value: "Emma",
196
+ label: "Emma Stone",
197
+ startElement: {
198
+ type: "avatar",
199
+ value: person3
200
+ }
201
+ }, {
202
+ value: "Johnny",
203
+ label: "Johnny Depp",
204
+ startElement: {
205
+ type: "avatar",
206
+ value: person4
207
+ }
208
+ }]
209
+ }], []);
210
+ return <Flex gap="large" align="start" wrap>
211
+ <div style={{
212
+ width: "350px"
213
+ }}>
214
+ <Dropdown id="box-mode-people-picker" aria-label="Box mode people picker" options={peopleOptions} label="Person" placeholder="Search for people" searchable boxMode multi clearAriaLabel="Clear" />
215
+ </div>
216
+ </Flex>;
217
+ ```
218
+