@ceed/cds 1.34.0 → 1.35.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 (120) hide show
  1. package/dist/components/Accordions/Accordions.d.ts +1 -0
  2. package/dist/components/Alert/Alert.d.ts +5 -5
  3. package/dist/components/Autocomplete/Autocomplete.d.ts +2 -2
  4. package/dist/components/Avatar/Avatar.d.ts +7 -17
  5. package/dist/components/Box/Box.d.ts +1 -0
  6. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -5
  7. package/dist/components/Button/Button.d.ts +3 -2
  8. package/dist/components/Calendar/Calendar.d.ts +1 -0
  9. package/dist/components/Card/Card.d.ts +1 -0
  10. package/dist/components/Checkbox/Checkbox.d.ts +1 -0
  11. package/dist/components/Chip/Chip.d.ts +1 -0
  12. package/dist/components/Container/Container.d.ts +6 -1
  13. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  14. package/dist/components/DialogActions/DialogActions.d.ts +1 -0
  15. package/dist/components/DialogContent/DialogContent.d.ts +1 -0
  16. package/dist/components/DialogFrame/DialogFrame.d.ts +1 -1
  17. package/dist/components/DialogTitle/DialogTitle.d.ts +1 -0
  18. package/dist/components/Divider/Divider.d.ts +1 -0
  19. package/dist/components/Drawer/Drawer.d.ts +1 -0
  20. package/dist/components/Dropdown/Dropdown.d.ts +28 -1
  21. package/dist/components/FormControl/FormControl.d.ts +1 -0
  22. package/dist/components/FormHelperText/FormHelperText.d.ts +1 -0
  23. package/dist/components/FormLabel/FormLabel.d.ts +1 -0
  24. package/dist/components/Grid/Grid.d.ts +1 -0
  25. package/dist/components/IconButton/IconButton.d.ts +3 -2
  26. package/dist/components/IconMenuButton/IconMenuButton.d.ts +7 -6
  27. package/dist/components/InfoSign/InfoSign.d.ts +3 -2
  28. package/dist/components/Input/Input.d.ts +8 -22
  29. package/dist/components/InsetDrawer/InsetDrawer.d.ts +1 -0
  30. package/dist/components/Markdown/Markdown.d.ts +9 -24
  31. package/dist/components/Menu/Menu.d.ts +2 -1
  32. package/dist/components/MenuButton/MenuButton.d.ts +10 -8
  33. package/dist/components/Modal/Modal.d.ts +4 -2
  34. package/dist/components/NavigationGroup/NavigationGroup.d.ts +3 -2
  35. package/dist/components/NavigationItem/NavigationItem.d.ts +3 -2
  36. package/dist/components/Navigator/Navigator.d.ts +5 -4
  37. package/dist/components/Pagination/Pagination.d.ts +1 -1
  38. package/dist/components/Radio/Radio.d.ts +1 -0
  39. package/dist/components/RadioList/RadioList.d.ts +3 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +6 -5
  41. package/dist/components/SearchBar/index.d.ts +3 -2
  42. package/dist/components/Select/Select.d.ts +12 -10
  43. package/dist/components/Sheet/Sheet.d.ts +1 -0
  44. package/dist/components/Stack/Stack.d.ts +1 -0
  45. package/dist/components/Stepper/Stepper.d.ts +2 -1
  46. package/dist/components/Switch/Switch.d.ts +1 -0
  47. package/dist/components/Table/Table.d.ts +7 -5
  48. package/dist/components/Tabs/Tabs.d.ts +1 -0
  49. package/dist/components/Textarea/Textarea.d.ts +8 -20
  50. package/dist/components/Tooltip/Tooltip.d.ts +1 -0
  51. package/dist/components/Typography/Typography.d.ts +1 -0
  52. package/dist/components/Uploader/Uploader.d.ts +18 -17
  53. package/dist/components/data-display/Avatar.md +60 -72
  54. package/dist/components/data-display/Badge.md +197 -181
  55. package/dist/components/data-display/Chip.md +164 -142
  56. package/dist/components/data-display/DataTable.md +843 -338
  57. package/dist/components/data-display/InfoSign.md +1 -3
  58. package/dist/components/data-display/Markdown.md +93 -125
  59. package/dist/components/data-display/Table.md +1453 -1007
  60. package/dist/components/data-display/Typography.md +113 -116
  61. package/dist/components/feedback/Alert.md +80 -86
  62. package/dist/components/feedback/CircularProgress.md +32 -36
  63. package/dist/components/feedback/Dialog.md +25 -17
  64. package/dist/components/feedback/Modal.md +296 -264
  65. package/dist/components/feedback/Skeleton.md +125 -89
  66. package/dist/components/index.d.ts +63 -4
  67. package/dist/components/inputs/Autocomplete.md +191 -95
  68. package/dist/components/inputs/Button.md +83 -83
  69. package/dist/components/inputs/ButtonGroup.md +195 -185
  70. package/dist/components/inputs/Calendar.md +25 -28
  71. package/dist/components/inputs/Checkbox.md +11 -29
  72. package/dist/components/inputs/CurrencyInput.md +4 -4
  73. package/dist/components/inputs/DatePicker.md +229 -110
  74. package/dist/components/inputs/DateRangePicker.md +248 -137
  75. package/dist/components/inputs/FilterableCheckboxGroup.md +115 -55
  76. package/dist/components/inputs/FormControl.md +75 -69
  77. package/dist/components/inputs/IconButton.md +229 -205
  78. package/dist/components/inputs/Input.md +131 -98
  79. package/dist/components/inputs/MonthPicker.md +186 -84
  80. package/dist/components/inputs/MonthRangePicker.md +73 -49
  81. package/dist/components/inputs/PercentageInput.md +15 -31
  82. package/dist/components/inputs/RadioButton.md +320 -256
  83. package/dist/components/inputs/RadioList.md +66 -50
  84. package/dist/components/inputs/RadioTileGroup.md +287 -170
  85. package/dist/components/inputs/SearchBar.md +154 -55
  86. package/dist/components/inputs/Select.md +106 -95
  87. package/dist/components/inputs/Slider.md +153 -102
  88. package/dist/components/inputs/Switch.md +193 -138
  89. package/dist/components/inputs/Textarea.md +15 -20
  90. package/dist/components/inputs/Uploader/Uploader.md +68 -39
  91. package/dist/components/layout/Box.md +841 -662
  92. package/dist/components/layout/Container.md +3 -11
  93. package/dist/components/layout/Grid.md +480 -394
  94. package/dist/components/layout/Stack.md +739 -566
  95. package/dist/components/navigation/Breadcrumbs.md +4 -4
  96. package/dist/components/navigation/Drawer.md +34 -25
  97. package/dist/components/navigation/Dropdown.md +745 -408
  98. package/dist/components/navigation/IconMenuButton.md +14 -6
  99. package/dist/components/navigation/InsetDrawer.md +8 -13
  100. package/dist/components/navigation/Link.md +1 -2
  101. package/dist/components/navigation/Menu.md +623 -502
  102. package/dist/components/navigation/MenuButton.md +18 -10
  103. package/dist/components/navigation/NavigationGroup.md +19 -50
  104. package/dist/components/navigation/NavigationItem.md +6 -6
  105. package/dist/components/navigation/Navigator.md +26 -28
  106. package/dist/components/navigation/Pagination.md +86 -75
  107. package/dist/components/navigation/Stepper.md +2 -12
  108. package/dist/components/navigation/Tabs.md +48 -36
  109. package/dist/components/surfaces/Accordions.md +89 -172
  110. package/dist/components/surfaces/Card.md +1094 -709
  111. package/dist/components/surfaces/Divider.md +562 -412
  112. package/dist/components/surfaces/Sheet.md +700 -518
  113. package/dist/guides/ThemeProvider.md +8 -8
  114. package/dist/index.browser.js +4 -4
  115. package/dist/index.browser.js.map +4 -4
  116. package/dist/index.cjs +1079 -1052
  117. package/dist/index.d.ts +2 -1
  118. package/dist/index.js +725 -690
  119. package/framer/index.js +1 -1
  120. package/package.json +32 -35
@@ -83,10 +83,10 @@ Available size options: `sm`, `md`, `lg`.
83
83
 
84
84
  ```tsx
85
85
  <>
86
- <Accordions {...args} size="sm" />
87
- <Accordions {...args} size="md" />
88
- <Accordions {...args} size="lg" />
89
- </>
86
+ <Accordions {...args} size="sm" />
87
+ <Accordions {...args} size="md" />
88
+ <Accordions {...args} size="lg" />
89
+ </>
90
90
  ```
91
91
 
92
92
  ### Variants
@@ -95,23 +95,23 @@ Style variants: `plain`, `outlined`, `soft`, `solid`.
95
95
 
96
96
  ```tsx
97
97
  <>
98
- <div>
99
- <h3>Plain</h3>
100
- <Accordions {...args} variant="plain" />
101
- </div>
102
- <div>
103
- <h3>Outlined</h3>
104
- <Accordions {...args} variant="outlined" />
105
- </div>
106
- <div>
107
- <h3>Soft</h3>
108
- <Accordions {...args} variant="soft" />
109
- </div>
110
- <div>
111
- <h3>Solid</h3>
112
- <Accordions {...args} variant="solid" />
113
- </div>
114
- </>
98
+ <div>
99
+ <h3>Plain</h3>
100
+ <Accordions {...args} variant="plain" />
101
+ </div>
102
+ <div>
103
+ <h3>Outlined</h3>
104
+ <Accordions {...args} variant="outlined" />
105
+ </div>
106
+ <div>
107
+ <h3>Soft</h3>
108
+ <Accordions {...args} variant="soft" />
109
+ </div>
110
+ <div>
111
+ <h3>Solid</h3>
112
+ <Accordions {...args} variant="solid" />
113
+ </div>
114
+ </>
115
115
  ```
116
116
 
117
117
  ### Colors
@@ -120,27 +120,27 @@ Color options: `primary`, `neutral`, `danger`, `success`, `warning`.
120
120
 
121
121
  ```tsx
122
122
  <>
123
- <div>
124
- <h3>Primary</h3>
125
- <Accordions {...args} color="primary" />
126
- </div>
127
- <div>
128
- <h3>Neutral</h3>
129
- <Accordions {...args} color="neutral" />
130
- </div>
131
- <div>
132
- <h3>Danger</h3>
133
- <Accordions {...args} color="danger" />
134
- </div>
135
- <div>
136
- <h3>Success</h3>
137
- <Accordions {...args} color="success" />
138
- </div>
139
- <div>
140
- <h3>Warning</h3>
141
- <Accordions {...args} color="warning" />
142
- </div>
143
- </>
123
+ <div>
124
+ <h3>Primary</h3>
125
+ <Accordions {...args} color="primary" />
126
+ </div>
127
+ <div>
128
+ <h3>Neutral</h3>
129
+ <Accordions {...args} color="neutral" />
130
+ </div>
131
+ <div>
132
+ <h3>Danger</h3>
133
+ <Accordions {...args} color="danger" />
134
+ </div>
135
+ <div>
136
+ <h3>Success</h3>
137
+ <Accordions {...args} color="success" />
138
+ </div>
139
+ <div>
140
+ <h3>Warning</h3>
141
+ <Accordions {...args} color="warning" />
142
+ </div>
143
+ </>
144
144
  ```
145
145
 
146
146
  ### Removing Divider
@@ -183,8 +183,8 @@ function FAQAccordion() {
183
183
  summary: 'What payment methods do you accept?',
184
184
  details: (
185
185
  <Typography>
186
- We accept Visa, MasterCard, American Express, and PayPal.
187
- All payments are processed securely through our payment gateway.
186
+ We accept Visa, MasterCard, American Express, and PayPal. All payments are processed securely through our
187
+ payment gateway.
188
188
  </Typography>
189
189
  ),
190
190
  },
@@ -192,9 +192,8 @@ function FAQAccordion() {
192
192
  summary: 'How can I track my order?',
193
193
  details: (
194
194
  <Typography>
195
- Once your order ships, you'll receive an email with a tracking
196
- number. You can use this number on our website or the carrier's
197
- site to track your package.
195
+ Once your order ships, you'll receive an email with a tracking number. You can use this number on our website
196
+ or the carrier's site to track your package.
198
197
  </Typography>
199
198
  ),
200
199
  },
@@ -235,18 +234,11 @@ function SettingsAccordion({ settings, onSettingChange }) {
235
234
  <Stack gap={2}>
236
235
  <FormControl>
237
236
  <FormLabel>Display Name</FormLabel>
238
- <Input
239
- value={settings.displayName}
240
- onChange={(e) => onSettingChange('displayName', e.target.value)}
241
- />
237
+ <Input value={settings.displayName} onChange={(e) => onSettingChange('displayName', e.target.value)} />
242
238
  </FormControl>
243
239
  <FormControl>
244
240
  <FormLabel>Email</FormLabel>
245
- <Input
246
- type="email"
247
- value={settings.email}
248
- onChange={(e) => onSettingChange('email', e.target.value)}
249
- />
241
+ <Input type="email" value={settings.email} onChange={(e) => onSettingChange('email', e.target.value)} />
250
242
  </FormControl>
251
243
  </Stack>
252
244
  ),
@@ -258,16 +250,12 @@ function SettingsAccordion({ settings, onSettingChange }) {
258
250
  <Checkbox
259
251
  label="Email notifications"
260
252
  checked={settings.emailNotifications}
261
- onChange={(e) =>
262
- onSettingChange('emailNotifications', e.target.checked)
263
- }
253
+ onChange={(e) => onSettingChange('emailNotifications', e.target.checked)}
264
254
  />
265
255
  <Checkbox
266
256
  label="Push notifications"
267
257
  checked={settings.pushNotifications}
268
- onChange={(e) =>
269
- onSettingChange('pushNotifications', e.target.checked)
270
- }
258
+ onChange={(e) => onSettingChange('pushNotifications', e.target.checked)}
271
259
  />
272
260
  <Checkbox
273
261
  label="Weekly digest"
@@ -314,9 +302,7 @@ function ProductAccordion({ product }) {
314
302
  const productDetails = [
315
303
  {
316
304
  summary: 'Description',
317
- details: (
318
- <Typography>{product.description}</Typography>
319
- ),
305
+ details: <Typography>{product.description}</Typography>,
320
306
  },
321
307
  {
322
308
  summary: 'Specifications',
@@ -345,15 +331,11 @@ function ProductAccordion({ product }) {
345
331
  <Stack gap={2}>
346
332
  <Box>
347
333
  <Typography level="title-sm">Shipping</Typography>
348
- <Typography level="body-sm">
349
- Free shipping on orders over $50. Standard delivery 3-5 days.
350
- </Typography>
334
+ <Typography level="body-sm">Free shipping on orders over $50. Standard delivery 3-5 days.</Typography>
351
335
  </Box>
352
336
  <Box>
353
337
  <Typography level="title-sm">Returns</Typography>
354
- <Typography level="body-sm">
355
- 30-day return policy. Items must be unused with original tags.
356
- </Typography>
338
+ <Typography level="body-sm">30-day return policy. Items must be unused with original tags.</Typography>
357
339
  </Box>
358
340
  </Stack>
359
341
  ),
@@ -397,19 +379,13 @@ function NavigationAccordion() {
397
379
  details: (
398
380
  <List size="sm">
399
381
  <ListItem>
400
- <ListItemButton onClick={() => navigate('/products/electronics')}>
401
- Electronics
402
- </ListItemButton>
382
+ <ListItemButton onClick={() => navigate('/products/electronics')}>Electronics</ListItemButton>
403
383
  </ListItem>
404
384
  <ListItem>
405
- <ListItemButton onClick={() => navigate('/products/clothing')}>
406
- Clothing
407
- </ListItemButton>
385
+ <ListItemButton onClick={() => navigate('/products/clothing')}>Clothing</ListItemButton>
408
386
  </ListItem>
409
387
  <ListItem>
410
- <ListItemButton onClick={() => navigate('/products/home')}>
411
- Home & Garden
412
- </ListItemButton>
388
+ <ListItemButton onClick={() => navigate('/products/home')}>Home & Garden</ListItemButton>
413
389
  </ListItem>
414
390
  </List>
415
391
  ),
@@ -419,14 +395,10 @@ function NavigationAccordion() {
419
395
  details: (
420
396
  <List size="sm">
421
397
  <ListItem>
422
- <ListItemButton onClick={() => navigate('/services/consulting')}>
423
- Consulting
424
- </ListItemButton>
398
+ <ListItemButton onClick={() => navigate('/services/consulting')}>Consulting</ListItemButton>
425
399
  </ListItem>
426
400
  <ListItem>
427
- <ListItemButton onClick={() => navigate('/services/support')}>
428
- Support
429
- </ListItemButton>
401
+ <ListItemButton onClick={() => navigate('/services/support')}>Support</ListItemButton>
430
402
  </ListItem>
431
403
  </List>
432
404
  ),
@@ -436,19 +408,13 @@ function NavigationAccordion() {
436
408
  details: (
437
409
  <List size="sm">
438
410
  <ListItem>
439
- <ListItemButton onClick={() => navigate('/docs')}>
440
- Documentation
441
- </ListItemButton>
411
+ <ListItemButton onClick={() => navigate('/docs')}>Documentation</ListItemButton>
442
412
  </ListItem>
443
413
  <ListItem>
444
- <ListItemButton onClick={() => navigate('/blog')}>
445
- Blog
446
- </ListItemButton>
414
+ <ListItemButton onClick={() => navigate('/blog')}>Blog</ListItemButton>
447
415
  </ListItem>
448
416
  <ListItem>
449
- <ListItemButton onClick={() => navigate('/tutorials')}>
450
- Tutorials
451
- </ListItemButton>
417
+ <ListItemButton onClick={() => navigate('/tutorials')}>Tutorials</ListItemButton>
452
418
  </ListItem>
453
419
  </List>
454
420
  ),
@@ -473,17 +439,11 @@ function HelpAccordion() {
473
439
  details: (
474
440
  <Stack gap={2}>
475
441
  <Typography level="title-sm">Step 1: Create an Account</Typography>
476
- <Typography level="body-sm">
477
- Click the "Sign Up" button and fill in your details.
478
- </Typography>
442
+ <Typography level="body-sm">Click the "Sign Up" button and fill in your details.</Typography>
479
443
  <Typography level="title-sm">Step 2: Verify Email</Typography>
480
- <Typography level="body-sm">
481
- Check your inbox for a verification email and click the link.
482
- </Typography>
444
+ <Typography level="body-sm">Check your inbox for a verification email and click the link.</Typography>
483
445
  <Typography level="title-sm">Step 3: Complete Profile</Typography>
484
- <Typography level="body-sm">
485
- Add your profile picture and bio to personalize your account.
486
- </Typography>
446
+ <Typography level="body-sm">Add your profile picture and bio to personalize your account.</Typography>
487
447
  </Stack>
488
448
  ),
489
449
  },
@@ -495,17 +455,13 @@ function HelpAccordion() {
495
455
  <Typography level="title-sm" color="danger">
496
456
  Can't log in?
497
457
  </Typography>
498
- <Typography level="body-sm">
499
- Try resetting your password or clearing your browser cache.
500
- </Typography>
458
+ <Typography level="body-sm">Try resetting your password or clearing your browser cache.</Typography>
501
459
  </Box>
502
460
  <Box>
503
461
  <Typography level="title-sm" color="danger">
504
462
  Page not loading?
505
463
  </Typography>
506
- <Typography level="body-sm">
507
- Check your internet connection and try refreshing the page.
508
- </Typography>
464
+ <Typography level="body-sm">Check your internet connection and try refreshing the page.</Typography>
509
465
  </Box>
510
466
  </Stack>
511
467
  ),
@@ -514,19 +470,11 @@ function HelpAccordion() {
514
470
  summary: 'Contact Support',
515
471
  details: (
516
472
  <Stack gap={2}>
517
- <Typography level="body-sm">
518
- Need more help? Reach out to our support team:
519
- </Typography>
473
+ <Typography level="body-sm">Need more help? Reach out to our support team:</Typography>
520
474
  <Stack gap={1}>
521
- <Typography level="body-sm">
522
- 📧 Email: support@example.com
523
- </Typography>
524
- <Typography level="body-sm">
525
- 💬 Live Chat: Available 9am-5pm EST
526
- </Typography>
527
- <Typography level="body-sm">
528
- 📞 Phone: 1-800-EXAMPLE
529
- </Typography>
475
+ <Typography level="body-sm">📧 Email: support@example.com</Typography>
476
+ <Typography level="body-sm">💬 Live Chat: Available 9am-5pm EST</Typography>
477
+ <Typography level="body-sm">📞 Phone: 1-800-EXAMPLE</Typography>
530
478
  </Stack>
531
479
  </Stack>
532
480
  ),
@@ -571,18 +519,14 @@ function MultiSectionForm({ onSubmit }) {
571
519
  <FormLabel>First Name</FormLabel>
572
520
  <Input
573
521
  value={formData.personal.firstName}
574
- onChange={(e) =>
575
- updateField('personal', 'firstName', e.target.value)
576
- }
522
+ onChange={(e) => updateField('personal', 'firstName', e.target.value)}
577
523
  />
578
524
  </FormControl>
579
525
  <FormControl sx={{ flex: 1 }}>
580
526
  <FormLabel>Last Name</FormLabel>
581
527
  <Input
582
528
  value={formData.personal.lastName}
583
- onChange={(e) =>
584
- updateField('personal', 'lastName', e.target.value)
585
- }
529
+ onChange={(e) => updateField('personal', 'lastName', e.target.value)}
586
530
  />
587
531
  </FormControl>
588
532
  </Stack>
@@ -591,9 +535,7 @@ function MultiSectionForm({ onSubmit }) {
591
535
  <Input
592
536
  type="email"
593
537
  value={formData.personal.email}
594
- onChange={(e) =>
595
- updateField('personal', 'email', e.target.value)
596
- }
538
+ onChange={(e) => updateField('personal', 'email', e.target.value)}
597
539
  />
598
540
  </FormControl>
599
541
  </Stack>
@@ -605,30 +547,18 @@ function MultiSectionForm({ onSubmit }) {
605
547
  <Stack gap={2}>
606
548
  <FormControl>
607
549
  <FormLabel>Street Address</FormLabel>
608
- <Input
609
- value={formData.address.street}
610
- onChange={(e) =>
611
- updateField('address', 'street', e.target.value)
612
- }
613
- />
550
+ <Input value={formData.address.street} onChange={(e) => updateField('address', 'street', e.target.value)} />
614
551
  </FormControl>
615
552
  <Stack direction="row" gap={2}>
616
553
  <FormControl sx={{ flex: 2 }}>
617
554
  <FormLabel>City</FormLabel>
618
- <Input
619
- value={formData.address.city}
620
- onChange={(e) =>
621
- updateField('address', 'city', e.target.value)
622
- }
623
- />
555
+ <Input value={formData.address.city} onChange={(e) => updateField('address', 'city', e.target.value)} />
624
556
  </FormControl>
625
557
  <FormControl sx={{ flex: 1 }}>
626
558
  <FormLabel>ZIP Code</FormLabel>
627
559
  <Input
628
560
  value={formData.address.zipCode}
629
- onChange={(e) =>
630
- updateField('address', 'zipCode', e.target.value)
631
- }
561
+ onChange={(e) => updateField('address', 'zipCode', e.target.value)}
632
562
  />
633
563
  </FormControl>
634
564
  </Stack>
@@ -644,9 +574,7 @@ function MultiSectionForm({ onSubmit }) {
644
574
  <Input
645
575
  placeholder="1234 5678 9012 3456"
646
576
  value={formData.payment.cardNumber}
647
- onChange={(e) =>
648
- updateField('payment', 'cardNumber', e.target.value)
649
- }
577
+ onChange={(e) => updateField('payment', 'cardNumber', e.target.value)}
650
578
  />
651
579
  </FormControl>
652
580
  <Stack direction="row" gap={2}>
@@ -655,9 +583,7 @@ function MultiSectionForm({ onSubmit }) {
655
583
  <Input
656
584
  placeholder="MM/YY"
657
585
  value={formData.payment.expiry}
658
- onChange={(e) =>
659
- updateField('payment', 'expiry', e.target.value)
660
- }
586
+ onChange={(e) => updateField('payment', 'expiry', e.target.value)}
661
587
  />
662
588
  </FormControl>
663
589
  <FormControl sx={{ flex: 1 }}>
@@ -666,9 +592,7 @@ function MultiSectionForm({ onSubmit }) {
666
592
  type="password"
667
593
  placeholder="123"
668
594
  value={formData.payment.cvv}
669
- onChange={(e) =>
670
- updateField('payment', 'cvv', e.target.value)
671
- }
595
+ onChange={(e) => updateField('payment', 'cvv', e.target.value)}
672
596
  />
673
597
  </FormControl>
674
598
  </Stack>
@@ -704,7 +628,7 @@ function MultiSectionForm({ onSubmit }) {
704
628
 
705
629
  ```tsx
706
630
  interface AccordionItem {
707
- summary: string; // Header text displayed when collapsed
631
+ summary: string; // Header text displayed when collapsed
708
632
  details: ReactNode; // Content shown when expanded
709
633
  }
710
634
 
@@ -803,7 +727,7 @@ Accordions includes built-in accessibility features:
803
727
  <Accordions
804
728
  items={[
805
729
  {
806
- summary: 'Shipping Information', // Announced as header
730
+ summary: 'Shipping Information', // Announced as header
807
731
  details: <Typography>Content...</Typography>,
808
732
  },
809
733
  ]}
@@ -969,10 +893,10 @@ const accordionItems = useMemo(
969
893
  details: <ExpensiveComponent data={data2} />,
970
894
  },
971
895
  ],
972
- [data1, data2]
896
+ [data1, data2],
973
897
  );
974
898
 
975
- <Accordions items={accordionItems} />
899
+ <Accordions items={accordionItems} />;
976
900
  ```
977
901
 
978
902
  ### Avoid Inline Functions in Items
@@ -984,7 +908,7 @@ const accordionItems = useMemo(
984
908
  summary: item.title,
985
909
  details: <Content data={item} />,
986
910
  }))}
987
- />
911
+ />;
988
912
 
989
913
  // ✅ Good: Memoized transformation
990
914
  const items = useMemo(
@@ -993,9 +917,9 @@ const items = useMemo(
993
917
  summary: item.title,
994
918
  details: <Content data={item} />,
995
919
  })),
996
- [data]
920
+ [data],
997
921
  );
998
- <Accordions items={items} />
922
+ <Accordions items={items} />;
999
923
  ```
1000
924
 
1001
925
  ### Virtualize Long Lists
@@ -1012,20 +936,13 @@ function FilteredAccordions({ allItems }) {
1012
936
  const [search, setSearch] = useState('');
1013
937
 
1014
938
  const filteredItems = useMemo(
1015
- () =>
1016
- allItems.filter((item) =>
1017
- item.summary.toLowerCase().includes(search.toLowerCase())
1018
- ),
1019
- [allItems, search]
939
+ () => allItems.filter((item) => item.summary.toLowerCase().includes(search.toLowerCase())),
940
+ [allItems, search],
1020
941
  );
1021
942
 
1022
943
  return (
1023
944
  <Stack gap={2}>
1024
- <Input
1025
- placeholder="Search..."
1026
- value={search}
1027
- onChange={(e) => setSearch(e.target.value)}
1028
- />
945
+ <Input placeholder="Search..." value={search} onChange={(e) => setSearch(e.target.value)} />
1029
946
  <Accordions items={filteredItems.slice(0, 10)} />
1030
947
  {filteredItems.length > 10 && (
1031
948
  <Typography level="body-sm" color="neutral">