@boostdev/design-system-components 0.1.17 → 1.0.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 (137) hide show
  1. package/AGENTS.md +65 -27
  2. package/README.md +64 -29
  3. package/dist/client.cjs +412 -241
  4. package/dist/client.css +1380 -1186
  5. package/dist/client.d.cts +43 -16
  6. package/dist/client.d.ts +43 -16
  7. package/dist/client.js +414 -245
  8. package/dist/index.cjs +412 -241
  9. package/dist/index.css +1380 -1186
  10. package/dist/index.d.cts +43 -16
  11. package/dist/index.d.ts +43 -16
  12. package/dist/index.js +414 -245
  13. package/package.json +9 -4
  14. package/src/components/interaction/Button/Button.mdx +2 -5
  15. package/src/components/interaction/Button/Button.module.css +74 -44
  16. package/src/components/interaction/Button/Button.stories.tsx +4 -4
  17. package/src/components/interaction/Button/Button.tsx +5 -5
  18. package/src/components/interaction/Button/index.ts +1 -0
  19. package/src/components/interaction/Command/Command.module.css +53 -38
  20. package/src/components/interaction/Command/Command.spec.tsx +24 -0
  21. package/src/components/interaction/Command/Command.tsx +5 -0
  22. package/src/components/interaction/Dialog/Dialog.mdx +2 -2
  23. package/src/components/interaction/Dialog/Dialog.module.css +20 -10
  24. package/src/components/interaction/Dialog/Dialog.spec.tsx +19 -0
  25. package/src/components/interaction/Dialog/Dialog.tsx +22 -0
  26. package/src/components/interaction/Drawer/Drawer.module.css +13 -11
  27. package/src/components/interaction/Drawer/Drawer.spec.tsx +30 -0
  28. package/src/components/interaction/Drawer/Drawer.tsx +7 -3
  29. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +24 -19
  30. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +4 -4
  31. package/src/components/interaction/Popover/Popover.module.css +17 -12
  32. package/src/components/interaction/Popover/Popover.spec.tsx +25 -4
  33. package/src/components/interaction/Popover/Popover.stories.tsx +1 -1
  34. package/src/components/interaction/Popover/Popover.tsx +5 -2
  35. package/src/components/interaction/Rating/Rating.module.css +3 -3
  36. package/src/components/interaction/Toast/Toast.module.css +19 -19
  37. package/src/components/interaction/Toast/Toast.tsx +1 -1
  38. package/src/components/interaction/form/Checkbox/Checkbox.mdx +2 -2
  39. package/src/components/interaction/form/Checkbox/Checkbox.module.css +22 -18
  40. package/src/components/interaction/form/Checkbox/Checkbox.tsx +2 -2
  41. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +29 -0
  42. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +87 -0
  43. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.stories.tsx +62 -0
  44. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +46 -0
  45. package/src/components/interaction/form/CheckboxGroup/index.ts +2 -0
  46. package/src/components/interaction/form/Combobox/Combobox.module.css +44 -34
  47. package/src/components/interaction/form/Combobox/Combobox.tsx +0 -1
  48. package/src/components/interaction/form/FileInput/FileInput.module.css +24 -16
  49. package/src/components/interaction/form/FileInput/FileInput.tsx +5 -2
  50. package/src/components/interaction/form/FormInput/FormInput.module.css +21 -16
  51. package/src/components/interaction/form/FormInput/FormInput.tsx +3 -0
  52. package/src/components/interaction/form/NumberInput/NumberInput.module.css +25 -19
  53. package/src/components/interaction/form/NumberInput/NumberInput.tsx +5 -2
  54. package/src/components/interaction/form/Radio/Radio.mdx +3 -3
  55. package/src/components/interaction/form/Radio/Radio.module.css +28 -24
  56. package/src/components/interaction/form/Radio/Radio.stories.tsx +1 -1
  57. package/src/components/interaction/form/Radio/Radio.tsx +2 -2
  58. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +29 -0
  59. package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +75 -0
  60. package/src/components/interaction/form/RadioGroup/RadioGroup.stories.tsx +64 -0
  61. package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +46 -0
  62. package/src/components/interaction/form/RadioGroup/index.ts +2 -0
  63. package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +5 -5
  64. package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +26 -26
  65. package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +4 -0
  66. package/src/components/interaction/form/Select/Select.module.css +24 -19
  67. package/src/components/interaction/form/Select/Select.tsx +3 -0
  68. package/src/components/interaction/form/Slider/Slider.mdx +1 -1
  69. package/src/components/interaction/form/Slider/Slider.module.css +24 -24
  70. package/src/components/interaction/form/Slider/Slider.tsx +1 -0
  71. package/src/components/interaction/form/Switch/Switch.mdx +4 -4
  72. package/src/components/interaction/form/Switch/Switch.module.css +22 -16
  73. package/src/components/interaction/form/Switch/Switch.tsx +1 -1
  74. package/src/components/interaction/form/Textarea/Textarea.module.css +23 -18
  75. package/src/components/interaction/form/Textarea/Textarea.tsx +3 -0
  76. package/src/components/interaction/form/atoms/InputContainer.module.css +2 -2
  77. package/src/components/interaction/form/atoms/Label.module.css +2 -2
  78. package/src/components/interaction/form/atoms/Message.module.css +2 -2
  79. package/src/components/layout/ButtonGroup/ButtonGroup.module.css +2 -2
  80. package/src/components/layout/ButtonGroup/ButtonGroup.stories.tsx +2 -2
  81. package/src/components/layout/ButtonGroup/ButtonGroup.tsx +8 -3
  82. package/src/components/layout/ButtonGroup/index.ts +1 -0
  83. package/src/components/layout/Card/Card.module.css +30 -16
  84. package/src/components/layout/Card/Card.tsx +1 -1
  85. package/src/components/layout/IconWrapper/IconWrapper.mdx +2 -2
  86. package/src/components/layout/IconWrapper/IconWrapper.module.css +5 -5
  87. package/src/components/layout/IconWrapper/IconWrapper.tsx +4 -3
  88. package/src/components/layout/IconWrapper/index.ts +1 -0
  89. package/src/components/layout/SectionHeader/SectionHeader.module.css +23 -23
  90. package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +2 -2
  91. package/src/components/layout/SectionHeader/SectionHeader.tsx +2 -2
  92. package/src/components/ui/Accordion/Accordion.module.css +23 -18
  93. package/src/components/ui/Alert/Alert.module.css +31 -27
  94. package/src/components/ui/Avatar/Avatar.module.css +6 -6
  95. package/src/components/ui/Avatar/Avatar.tsx +1 -1
  96. package/src/components/ui/Badge/Badge.mdx +2 -2
  97. package/src/components/ui/Badge/Badge.module.css +15 -15
  98. package/src/components/ui/Breadcrumb/Breadcrumb.module.css +11 -11
  99. package/src/components/ui/Calendar/Calendar.module.css +39 -29
  100. package/src/components/ui/Calendar/Calendar.tsx +6 -2
  101. package/src/components/ui/Carousel/Carousel.module.css +15 -10
  102. package/src/components/ui/Carousel/Carousel.stories.tsx +1 -1
  103. package/src/components/ui/Collapsible/Collapsible.mdx +6 -6
  104. package/src/components/ui/Collapsible/Collapsible.module.css +18 -18
  105. package/src/components/ui/DescriptionList/DescriptionList.module.css +8 -8
  106. package/src/components/ui/Link/Link.module.css +14 -14
  107. package/src/components/ui/Loading/Loading.module.css +8 -2
  108. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +27 -23
  109. package/src/components/ui/Pagination/Pagination.module.css +22 -17
  110. package/src/components/ui/Progress/Progress.mdx +1 -1
  111. package/src/components/ui/Progress/Progress.module.css +10 -10
  112. package/src/components/ui/ProgressCircle/ProgressCircle.module.css +8 -8
  113. package/src/components/ui/Separator/Separator.module.css +1 -1
  114. package/src/components/ui/Separator/Separator.tsx +1 -1
  115. package/src/components/ui/Skeleton/Skeleton.module.css +5 -5
  116. package/src/components/ui/SkipLink/SkipLink.module.css +17 -12
  117. package/src/components/ui/Table/Table.module.css +35 -30
  118. package/src/components/ui/Table/Table.tsx +2 -1
  119. package/src/components/ui/Tabs/Tabs.module.css +17 -17
  120. package/src/components/ui/Tabs/Tabs.tsx +0 -1
  121. package/src/components/ui/Tooltip/Tooltip.module.css +12 -12
  122. package/src/components/ui/Tooltip/Tooltip.spec.tsx +3 -3
  123. package/src/components/ui/Tooltip/Tooltip.tsx +10 -2
  124. package/src/components/ui/Typography/Typography.module.css +18 -18
  125. package/src/css/bdc.css +61 -0
  126. package/src/css/index.css +5 -0
  127. package/src/index.ts +7 -0
  128. package/src/stories/DesignSystem/Borders.mdx +158 -0
  129. package/src/stories/DesignSystem/Colors.mdx +196 -0
  130. package/src/stories/DesignSystem/Elevation.mdx +127 -0
  131. package/src/stories/DesignSystem/Grid.mdx +140 -0
  132. package/src/stories/DesignSystem/Motion.mdx +96 -0
  133. package/src/stories/DesignSystem/Overview.mdx +99 -0
  134. package/src/stories/DesignSystem/Spacing.mdx +74 -0
  135. package/src/stories/DesignSystem/Typography.mdx +110 -0
  136. package/src/stories/Introduction.css +2 -2
  137. package/src/stories/Introduction.mdx +7 -7
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ __export(index_exports, {
31
31
  Card: () => Card,
32
32
  Carousel: () => Carousel,
33
33
  Checkbox: () => Checkbox,
34
+ CheckboxGroup: () => CheckboxGroup,
34
35
  Collapsible: () => Collapsible,
35
36
  Combobox: () => Combobox,
36
37
  Command: () => Command,
@@ -50,6 +51,7 @@ __export(index_exports, {
50
51
  Progress: () => Progress,
51
52
  ProgressCircle: () => ProgressCircle,
52
53
  Radio: () => Radio,
54
+ RadioGroup: () => RadioGroup,
53
55
  Rating: () => Rating,
54
56
  SectionHeader: () => SectionHeader,
55
57
  SegmentedControl: () => SegmentedControl,
@@ -65,7 +67,7 @@ __export(index_exports, {
65
67
  ToastProvider: () => ToastProvider,
66
68
  Tooltip: () => Tooltip,
67
69
  Typography: () => Typography,
68
- cn: () => import_design_system_foundation46.cn,
70
+ cn: () => import_design_system_foundation48.cn,
69
71
  useToast: () => useToast
70
72
  });
71
73
  module.exports = __toCommonJS(index_exports);
@@ -74,7 +76,7 @@ module.exports = __toCommonJS(index_exports);
74
76
  var import_react = require("react");
75
77
 
76
78
  // src/components/ui/Accordion/Accordion.module.css
77
- var Accordion_default = {"accordion":"bds0117Accordion-accordion","item":"bds0117Accordion-item","heading":"bds0117Accordion-heading","trigger":"bds0117Accordion-trigger","triggerLabel":"bds0117Accordion-triggerLabel","chevron":"bds0117Accordion-chevron","--open":"bds0117Accordion---open","panel":"bds0117Accordion-panel","panelContent":"bds0117Accordion-panelContent"};
79
+ var Accordion_default = {"accordion":"bds100Accordion-accordion","item":"bds100Accordion-item","heading":"bds100Accordion-heading","trigger":"bds100Accordion-trigger","triggerLabel":"bds100Accordion-triggerLabel","chevron":"bds100Accordion-chevron","--open":"bds100Accordion---open","panel":"bds100Accordion-panel","panelContent":"bds100Accordion-panelContent"};
78
80
 
79
81
  // src/components/ui/Accordion/Accordion.tsx
80
82
  var import_design_system_foundation = require("@boostdev/design-system-foundation");
@@ -142,7 +144,7 @@ function Accordion({
142
144
  }
143
145
 
144
146
  // src/components/ui/Alert/Alert.module.css
145
- var Alert_default = {"alert":"bds0117Alert-alert","--variant_info":"bds0117Alert---variant_info","--variant_success":"bds0117Alert---variant_success","--variant_warning":"bds0117Alert---variant_warning","--variant_error":"bds0117Alert---variant_error","icon":"bds0117Alert-icon","content":"bds0117Alert-content","title":"bds0117Alert-title","dismiss":"bds0117Alert-dismiss"};
147
+ var Alert_default = {"alert":"bds100Alert-alert","--variant_info":"bds100Alert---variant_info","--variant_success":"bds100Alert---variant_success","--variant_warning":"bds100Alert---variant_warning","--variant_error":"bds100Alert---variant_error","icon":"bds100Alert-icon","content":"bds100Alert-content","title":"bds100Alert-title","dismiss":"bds100Alert-dismiss"};
146
148
 
147
149
  // src/components/ui/Alert/Alert.tsx
148
150
  var import_design_system_foundation2 = require("@boostdev/design-system-foundation");
@@ -185,7 +187,7 @@ function Alert({
185
187
  }
186
188
 
187
189
  // src/components/ui/Avatar/Avatar.module.css
188
- var Avatar_default = {"avatar":"bds0117Avatar-avatar","--fallback":"bds0117Avatar---fallback","--size_small":"bds0117Avatar---size_small","--size_medium":"bds0117Avatar---size_medium","--size_large":"bds0117Avatar---size_large","image":"bds0117Avatar-image","initials":"bds0117Avatar-initials"};
190
+ var Avatar_default = {"avatar":"bds100Avatar-avatar","--fallback":"bds100Avatar---fallback","--size_small":"bds100Avatar---size_small","--size_medium":"bds100Avatar---size_medium","--size_large":"bds100Avatar---size_large","image":"bds100Avatar-image","initials":"bds100Avatar-initials"};
189
191
 
190
192
  // src/components/ui/Avatar/Avatar.tsx
191
193
  var import_design_system_foundation3 = require("@boostdev/design-system-foundation");
@@ -196,7 +198,7 @@ function getInitials(name) {
196
198
  function Avatar({ src, alt, name, size = "medium", className }) {
197
199
  const sizeClass = Avatar_default[`--size_${size}`];
198
200
  if (src) {
199
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: (0, import_design_system_foundation3.cn)(Avatar_default.avatar, sizeClass, className), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("img", { src, alt: alt ?? name ?? "", className: Avatar_default.image }) });
201
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: (0, import_design_system_foundation3.cn)(Avatar_default.avatar, sizeClass, className), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("img", { src, alt: alt ?? name ?? "User avatar", className: Avatar_default.image }) });
200
202
  }
201
203
  const initials = name ? getInitials(name) : "";
202
204
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
@@ -211,7 +213,7 @@ function Avatar({ src, alt, name, size = "medium", className }) {
211
213
  }
212
214
 
213
215
  // src/components/ui/Badge/Badge.module.css
214
- var Badge_default = {"badge":"bds0117Badge-badge","--variant_primary":"bds0117Badge---variant_primary","--variant_secondary":"bds0117Badge---variant_secondary","--variant_success":"bds0117Badge---variant_success","--variant_error":"bds0117Badge---variant_error","--variant_warning":"bds0117Badge---variant_warning"};
216
+ var Badge_default = {"badge":"bds100Badge-badge","--variant_primary":"bds100Badge---variant_primary","--variant_secondary":"bds100Badge---variant_secondary","--variant_success":"bds100Badge---variant_success","--variant_error":"bds100Badge---variant_error","--variant_warning":"bds100Badge---variant_warning"};
215
217
 
216
218
  // src/components/ui/Badge/Badge.tsx
217
219
  var import_design_system_foundation4 = require("@boostdev/design-system-foundation");
@@ -221,7 +223,7 @@ function Badge({ children, variant = "primary", className }) {
221
223
  }
222
224
 
223
225
  // src/components/ui/Breadcrumb/Breadcrumb.module.css
224
- var Breadcrumb_default = {"breadcrumb":"bds0117Breadcrumb-breadcrumb","list":"bds0117Breadcrumb-list","item":"bds0117Breadcrumb-item","link":"bds0117Breadcrumb-link","separator":"bds0117Breadcrumb-separator","current":"bds0117Breadcrumb-current"};
226
+ var Breadcrumb_default = {"breadcrumb":"bds100Breadcrumb-breadcrumb","list":"bds100Breadcrumb-list","item":"bds100Breadcrumb-item","link":"bds100Breadcrumb-link","separator":"bds100Breadcrumb-separator","current":"bds100Breadcrumb-current"};
225
227
 
226
228
  // src/components/ui/Breadcrumb/Breadcrumb.tsx
227
229
  var import_design_system_foundation5 = require("@boostdev/design-system-foundation");
@@ -237,7 +239,7 @@ function Breadcrumb({ items, className }) {
237
239
  }
238
240
 
239
241
  // src/components/ui/Collapsible/Collapsible.module.css
240
- var Collapsible_default = {"collapsible":"bds0117Collapsible-collapsible","summary":"bds0117Collapsible-summary","summaryContent":"bds0117Collapsible-summaryContent","icon":"bds0117Collapsible-icon","content":"bds0117Collapsible-content"};
242
+ var Collapsible_default = {"collapsible":"bds100Collapsible-collapsible","summary":"bds100Collapsible-summary","summaryContent":"bds100Collapsible-summaryContent","icon":"bds100Collapsible-icon","content":"bds100Collapsible-content"};
241
243
 
242
244
  // src/components/ui/Collapsible/Collapsible.tsx
243
245
  var import_design_system_foundation6 = require("@boostdev/design-system-foundation");
@@ -278,12 +280,21 @@ function Collapsible({
278
280
  var import_react2 = require("react");
279
281
 
280
282
  // src/components/ui/Calendar/Calendar.module.css
281
- var Calendar_default = {"calendar":"bds0117Calendar-calendar","header":"bds0117Calendar-header","monthYear":"bds0117Calendar-monthYear","navBtn":"bds0117Calendar-navBtn","grid":"bds0117Calendar-grid","weekday":"bds0117Calendar-weekday","empty":"bds0117Calendar-empty","day":"bds0117Calendar-day","disabled":"bds0117Calendar-disabled","selected":"bds0117Calendar-selected","today":"bds0117Calendar-today"};
283
+ var Calendar_default = {"calendar":"bds100Calendar-calendar","header":"bds100Calendar-header","monthYear":"bds100Calendar-monthYear","navBtn":"bds100Calendar-navBtn","grid":"bds100Calendar-grid","weekday":"bds100Calendar-weekday","empty":"bds100Calendar-empty","day":"bds100Calendar-day","disabled":"bds100Calendar-disabled","selected":"bds100Calendar-selected","today":"bds100Calendar-today"};
282
284
 
283
285
  // src/components/ui/Calendar/Calendar.tsx
284
286
  var import_design_system_foundation7 = require("@boostdev/design-system-foundation");
285
287
  var import_jsx_runtime7 = require("react/jsx-runtime");
286
288
  var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
289
+ var DAY_LABELS = {
290
+ Su: "Sunday",
291
+ Mo: "Monday",
292
+ Tu: "Tuesday",
293
+ We: "Wednesday",
294
+ Th: "Thursday",
295
+ Fr: "Friday",
296
+ Sa: "Saturday"
297
+ };
287
298
  var MONTHS = [
288
299
  "January",
289
300
  "February",
@@ -404,7 +415,7 @@ function Calendar({ value, defaultValue, min, max, onChange, className }) {
404
415
  role: "grid",
405
416
  "aria-labelledby": titleId,
406
417
  children: [
407
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tr", { children: DAYS.map((d) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("th", { scope: "col", abbr: d, className: Calendar_default.weekday, children: d }, d)) }) }),
418
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tr", { children: DAYS.map((d) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("th", { scope: "col", "aria-label": DAY_LABELS[d] ?? d, className: Calendar_default.weekday, children: d }, d)) }) }),
408
419
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tbody", { children: Array.from({ length: cells.length / 7 }, (_, row) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("tr", { children: cells.slice(row * 7, row * 7 + 7).map((cell, col) => {
409
420
  if (!cell) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("td", { className: Calendar_default.empty, "aria-hidden": "true" }, col);
410
421
  const date = new Date(viewYear, viewMonth, cell.day);
@@ -423,7 +434,7 @@ function Calendar({ value, defaultValue, min, max, onChange, className }) {
423
434
  disabled && Calendar_default.disabled
424
435
  ),
425
436
  "aria-label": date.toLocaleDateString("en", { month: "long", day: "numeric", year: "numeric" }),
426
- "aria-pressed": isSelected,
437
+ "aria-selected": isSelected,
427
438
  "aria-current": isToday ? "date" : void 0,
428
439
  "aria-disabled": disabled,
429
440
  disabled,
@@ -444,7 +455,7 @@ function Calendar({ value, defaultValue, min, max, onChange, className }) {
444
455
  var import_react3 = require("react");
445
456
 
446
457
  // src/components/ui/Carousel/Carousel.module.css
447
- var Carousel_default = {"carousel":"bds0117Carousel-carousel","track":"bds0117Carousel-track","slide":"bds0117Carousel-slide","navBtn":"bds0117Carousel-navBtn"};
458
+ var Carousel_default = {"carousel":"bds100Carousel-carousel","track":"bds100Carousel-track","slide":"bds100Carousel-slide","navBtn":"bds100Carousel-navBtn"};
448
459
 
449
460
  // src/components/ui/Carousel/Carousel.tsx
450
461
  var import_design_system_foundation8 = require("@boostdev/design-system-foundation");
@@ -497,7 +508,7 @@ function Carousel({ items, label, className }) {
497
508
  }
498
509
 
499
510
  // src/components/ui/DescriptionList/DescriptionList.module.css
500
- var DescriptionList_default = {"list":"bds0117DescriptionList-list","group":"bds0117DescriptionList-group","term":"bds0117DescriptionList-term","details":"bds0117DescriptionList-details","--layout_inline":"bds0117DescriptionList---layout_inline"};
511
+ var DescriptionList_default = {"list":"bds100DescriptionList-list","group":"bds100DescriptionList-group","term":"bds100DescriptionList-term","details":"bds100DescriptionList-details","--layout_inline":"bds100DescriptionList---layout_inline"};
501
512
 
502
513
  // src/components/ui/DescriptionList/DescriptionList.tsx
503
514
  var import_design_system_foundation9 = require("@boostdev/design-system-foundation");
@@ -510,7 +521,7 @@ function DescriptionList({ items, layout = "stacked", className }) {
510
521
  }
511
522
 
512
523
  // src/components/ui/Link/Link.module.css
513
- var Link_default = {"link":"bds0117Link-link","--variant_default":"bds0117Link---variant_default","--variant_subtle":"bds0117Link---variant_subtle","--variant_standalone":"bds0117Link---variant_standalone","externalLabel":"bds0117Link-externalLabel"};
524
+ var Link_default = {"link":"bds100Link-link","--variant_default":"bds100Link---variant_default","--variant_subtle":"bds100Link---variant_subtle","--variant_standalone":"bds100Link---variant_standalone","externalLabel":"bds100Link-externalLabel"};
514
525
 
515
526
  // src/components/ui/Link/Link.tsx
516
527
  var import_design_system_foundation10 = require("@boostdev/design-system-foundation");
@@ -541,7 +552,7 @@ function Link({
541
552
  }
542
553
 
543
554
  // src/components/ui/Loading/Loading.module.css
544
- var Loading_default = {"loading":"bds0117Loading-loading","spinner":"bds0117Loading-spinner","--size_small":"bds0117Loading---size_small","--size_large":"bds0117Loading---size_large"};
555
+ var Loading_default = {"loading":"bds100Loading-loading","spinner":"bds100Loading-spinner","--size_small":"bds100Loading---size_small","--size_large":"bds100Loading---size_large"};
545
556
 
546
557
  // src/components/ui/Loading/Loading.tsx
547
558
  var import_design_system_foundation11 = require("@boostdev/design-system-foundation");
@@ -551,7 +562,7 @@ function Loading({ size = "medium", className }) {
551
562
  }
552
563
 
553
564
  // src/components/ui/NotificationBanner/NotificationBanner.module.css
554
- var NotificationBanner_default = {"banner":"bds0117NotificationBanner-banner","--variant_info":"bds0117NotificationBanner---variant_info","--variant_success":"bds0117NotificationBanner---variant_success","--variant_warning":"bds0117NotificationBanner---variant_warning","--variant_error":"bds0117NotificationBanner---variant_error","content":"bds0117NotificationBanner-content","action":"bds0117NotificationBanner-action","dismiss":"bds0117NotificationBanner-dismiss"};
565
+ var NotificationBanner_default = {"banner":"bds100NotificationBanner-banner","--variant_info":"bds100NotificationBanner---variant_info","--variant_success":"bds100NotificationBanner---variant_success","--variant_warning":"bds100NotificationBanner---variant_warning","--variant_error":"bds100NotificationBanner---variant_error","content":"bds100NotificationBanner-content","action":"bds100NotificationBanner-action","dismiss":"bds100NotificationBanner-dismiss"};
555
566
 
556
567
  // src/components/ui/NotificationBanner/NotificationBanner.tsx
557
568
  var import_design_system_foundation12 = require("@boostdev/design-system-foundation");
@@ -590,7 +601,7 @@ function NotificationBanner({
590
601
  }
591
602
 
592
603
  // src/components/ui/Pagination/Pagination.module.css
593
- var Pagination_default = {"pagination":"bds0117Pagination-pagination","list":"bds0117Pagination-list","button":"bds0117Pagination-button","--active":"bds0117Pagination---active","--nav":"bds0117Pagination---nav","ellipsis":"bds0117Pagination-ellipsis"};
604
+ var Pagination_default = {"pagination":"bds100Pagination-pagination","list":"bds100Pagination-list","button":"bds100Pagination-button","--active":"bds100Pagination---active","--nav":"bds100Pagination---nav","ellipsis":"bds100Pagination-ellipsis"};
594
605
 
595
606
  // src/components/ui/Pagination/Pagination.tsx
596
607
  var import_design_system_foundation13 = require("@boostdev/design-system-foundation");
@@ -654,7 +665,7 @@ function Pagination({
654
665
  }
655
666
 
656
667
  // src/components/ui/Progress/Progress.module.css
657
- var Progress_default = {"container":"bds0117Progress-container","labelRow":"bds0117Progress-labelRow","value":"bds0117Progress-value","track":"bds0117Progress-track","--size_small":"bds0117Progress---size_small","--size_medium":"bds0117Progress---size_medium","--size_large":"bds0117Progress---size_large","fill":"bds0117Progress-fill"};
668
+ var Progress_default = {"container":"bds100Progress-container","labelRow":"bds100Progress-labelRow","value":"bds100Progress-value","track":"bds100Progress-track","--size_small":"bds100Progress---size_small","--size_medium":"bds100Progress---size_medium","--size_large":"bds100Progress---size_large","fill":"bds100Progress-fill"};
658
669
 
659
670
  // src/components/ui/Progress/Progress.tsx
660
671
  var import_design_system_foundation14 = require("@boostdev/design-system-foundation");
@@ -692,7 +703,7 @@ function Progress({
692
703
  }
693
704
 
694
705
  // src/components/ui/ProgressCircle/ProgressCircle.module.css
695
- var ProgressCircle_default = {"wrapper":"bds0117ProgressCircle-wrapper","svg":"bds0117ProgressCircle-svg","track":"bds0117ProgressCircle-track","fill":"bds0117ProgressCircle-fill","value":"bds0117ProgressCircle-value","--size_small":"bds0117ProgressCircle---size_small","--size_medium":"bds0117ProgressCircle---size_medium","--size_large":"bds0117ProgressCircle---size_large"};
706
+ var ProgressCircle_default = {"wrapper":"bds100ProgressCircle-wrapper","svg":"bds100ProgressCircle-svg","track":"bds100ProgressCircle-track","fill":"bds100ProgressCircle-fill","value":"bds100ProgressCircle-value","--size_small":"bds100ProgressCircle---size_small","--size_medium":"bds100ProgressCircle---size_medium","--size_large":"bds100ProgressCircle---size_large"};
696
707
 
697
708
  // src/components/ui/ProgressCircle/ProgressCircle.tsx
698
709
  var import_design_system_foundation15 = require("@boostdev/design-system-foundation");
@@ -771,7 +782,7 @@ function ProgressCircle({
771
782
  }
772
783
 
773
784
  // src/components/ui/Separator/Separator.module.css
774
- var Separator_default = {"separator":"bds0117Separator-separator","--horizontal":"bds0117Separator---horizontal","--vertical":"bds0117Separator---vertical"};
785
+ var Separator_default = {"separator":"bds100Separator-separator","--horizontal":"bds100Separator---horizontal","--vertical":"bds100Separator---vertical"};
775
786
 
776
787
  // src/components/ui/Separator/Separator.tsx
777
788
  var import_design_system_foundation16 = require("@boostdev/design-system-foundation");
@@ -787,14 +798,14 @@ function Separator({ orientation = "horizontal", className }) {
787
798
  }
788
799
  );
789
800
  }
790
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("hr", { className: (0, import_design_system_foundation16.cn)(Separator_default.separator, Separator_default["--horizontal"], className) });
801
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("hr", { "aria-orientation": "horizontal", className: (0, import_design_system_foundation16.cn)(Separator_default.separator, Separator_default["--horizontal"], className) });
791
802
  }
792
803
 
793
804
  // src/components/ui/Skeleton/Skeleton.tsx
794
805
  var import_design_system_foundation17 = require("@boostdev/design-system-foundation");
795
806
 
796
807
  // src/components/ui/Skeleton/Skeleton.module.css
797
- var Skeleton_default = {"skeleton":"bds0117Skeleton-skeleton"};
808
+ var Skeleton_default = {"skeleton":"bds100Skeleton-skeleton"};
798
809
 
799
810
  // src/components/ui/Skeleton/Skeleton.tsx
800
811
  var import_jsx_runtime17 = require("react/jsx-runtime");
@@ -803,7 +814,7 @@ function Skeleton({ className }) {
803
814
  }
804
815
 
805
816
  // src/components/ui/SkipLink/SkipLink.module.css
806
- var SkipLink_default = {"skipLink":"bds0117SkipLink-skipLink"};
817
+ var SkipLink_default = {"skipLink":"bds100SkipLink-skipLink"};
807
818
 
808
819
  // src/components/ui/SkipLink/SkipLink.tsx
809
820
  var import_jsx_runtime18 = require("react/jsx-runtime");
@@ -812,7 +823,7 @@ function SkipLink({ href = "#main", children = "Skip to main content" }) {
812
823
  }
813
824
 
814
825
  // src/components/ui/Table/Table.module.css
815
- var Table_default = {"wrapper":"bds0117Table-wrapper","table":"bds0117Table-table","caption":"bds0117Table-caption","thead":"bds0117Table-thead","th":"bds0117Table-th","--sortable":"bds0117Table---sortable","sortButton":"bds0117Table-sortButton","sortIcon":"bds0117Table-sortIcon","--sort-active":"bds0117Table---sort-active","--sort-desc":"bds0117Table---sort-desc","tbody":"bds0117Table-tbody","tr":"bds0117Table-tr","td":"bds0117Table-td"};
826
+ var Table_default = {"wrapper":"bds100Table-wrapper","table":"bds100Table-table","caption":"bds100Table-caption","thead":"bds100Table-thead","th":"bds100Table-th","--sortable":"bds100Table---sortable","sortButton":"bds100Table-sortButton","sortIcon":"bds100Table-sortIcon","--sort-active":"bds100Table---sort-active","--sort-desc":"bds100Table---sort-desc","tbody":"bds100Table-tbody","tr":"bds100Table-tr","td":"bds100Table-td"};
816
827
 
817
828
  // src/components/ui/Table/Table.tsx
818
829
  var import_design_system_foundation18 = require("@boostdev/design-system-foundation");
@@ -849,6 +860,7 @@ function Table({
849
860
  type: "button",
850
861
  className: Table_default.sortButton,
851
862
  onClick: () => handleSort(col.key),
863
+ "aria-label": `Sort by ${String(col.header)}${sortKey === col.key ? `, currently ${sortDirection === "asc" ? "ascending" : "descending"}` : ""}`,
852
864
  children: [
853
865
  col.header,
854
866
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
@@ -873,7 +885,7 @@ function Table({
873
885
  },
874
886
  col.key
875
887
  )) }) }),
876
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { className: Table_default.tbody, children: rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { className: Table_default.tr, children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("td", { className: Table_default.td, children: col.render ? col.render(row) : String(row[col.key] ?? "") }, col.key)) }, rowIndex)) })
888
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { className: Table_default.tbody, children: rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { className: Table_default.tr, children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("td", { className: Table_default.td, children: col.render ? col.render(row) : String(row[col.key] ?? "") }, col.key)) }, JSON.stringify(row) || rowIndex)) })
877
889
  ] }) });
878
890
  }
879
891
 
@@ -881,7 +893,7 @@ function Table({
881
893
  var import_react4 = require("react");
882
894
 
883
895
  // src/components/ui/Tabs/Tabs.module.css
884
- var Tabs_default = {"tabs":"bds0117Tabs-tabs","tabList":"bds0117Tabs-tabList","tab":"bds0117Tabs-tab","--active":"bds0117Tabs---active","panel":"bds0117Tabs-panel"};
896
+ var Tabs_default = {"tabs":"bds100Tabs-tabs","tabList":"bds100Tabs-tabList","tab":"bds100Tabs-tab","--active":"bds100Tabs---active","panel":"bds100Tabs-panel"};
885
897
 
886
898
  // src/components/ui/Tabs/Tabs.tsx
887
899
  var import_design_system_foundation19 = require("@boostdev/design-system-foundation");
@@ -947,7 +959,6 @@ function Tabs({ tabs, defaultTab, className }) {
947
959
  id: panelId,
948
960
  role: "tabpanel",
949
961
  "aria-labelledby": tabId,
950
- tabIndex: 0,
951
962
  hidden: !isActive,
952
963
  className: Tabs_default.panel,
953
964
  children: tab.content
@@ -962,7 +973,7 @@ function Tabs({ tabs, defaultTab, className }) {
962
973
  var import_react5 = require("react");
963
974
 
964
975
  // src/components/ui/Tooltip/Tooltip.module.css
965
- var Tooltip_default = {"wrapper":"bds0117Tooltip-wrapper","tooltip":"bds0117Tooltip-tooltip","--placement_top":"bds0117Tooltip---placement_top","--placement_bottom":"bds0117Tooltip---placement_bottom","--placement_left":"bds0117Tooltip---placement_left","--placement_right":"bds0117Tooltip---placement_right"};
976
+ var Tooltip_default = {"wrapper":"bds100Tooltip-wrapper","tooltip":"bds100Tooltip-tooltip","--placement_top":"bds100Tooltip---placement_top","--placement_bottom":"bds100Tooltip---placement_bottom","--placement_left":"bds100Tooltip---placement_left","--placement_right":"bds100Tooltip---placement_right"};
966
977
 
967
978
  // src/components/ui/Tooltip/Tooltip.tsx
968
979
  var import_design_system_foundation20 = require("@boostdev/design-system-foundation");
@@ -974,25 +985,37 @@ function Tooltip({
974
985
  className
975
986
  }) {
976
987
  const tooltipId = (0, import_react5.useId)();
988
+ const [isVisible, setIsVisible] = (0, import_react5.useState)(false);
977
989
  const trigger = (0, import_react5.isValidElement)(children) ? (0, import_react5.cloneElement)(children, {
978
990
  "aria-describedby": tooltipId
979
991
  }) : children;
980
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: (0, import_design_system_foundation20.cn)(Tooltip_default.wrapper, className), children: [
981
- trigger,
982
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
983
- "span",
984
- {
985
- id: tooltipId,
986
- role: "tooltip",
987
- className: (0, import_design_system_foundation20.cn)(Tooltip_default.tooltip, Tooltip_default[`--placement_${placement}`]),
988
- children: content
989
- }
990
- )
991
- ] });
992
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
993
+ "span",
994
+ {
995
+ className: (0, import_design_system_foundation20.cn)(Tooltip_default.wrapper, className),
996
+ onMouseEnter: () => setIsVisible(true),
997
+ onMouseLeave: () => setIsVisible(false),
998
+ onFocus: () => setIsVisible(true),
999
+ onBlur: () => setIsVisible(false),
1000
+ children: [
1001
+ trigger,
1002
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1003
+ "span",
1004
+ {
1005
+ id: tooltipId,
1006
+ role: "tooltip",
1007
+ "aria-hidden": !isVisible,
1008
+ className: (0, import_design_system_foundation20.cn)(Tooltip_default.tooltip, Tooltip_default[`--placement_${placement}`]),
1009
+ children: content
1010
+ }
1011
+ )
1012
+ ]
1013
+ }
1014
+ );
992
1015
  }
993
1016
 
994
1017
  // src/components/ui/Typography/Typography.module.css
995
- var Typography_default = {"typography":"bds0117Typography-typography","--h1":"bds0117Typography---h1","--h2":"bds0117Typography---h2","--h3":"bds0117Typography---h3","--body":"bds0117Typography---body","--body_s":"bds0117Typography---body_s"};
1018
+ var Typography_default = {"typography":"bds100Typography-typography","--h1":"bds100Typography---h1","--h2":"bds100Typography---h2","--h3":"bds100Typography---h3","--body":"bds100Typography---body","--body_s":"bds100Typography---body_s"};
996
1019
 
997
1020
  // src/components/ui/Typography/Typography.tsx
998
1021
  var import_design_system_foundation21 = require("@boostdev/design-system-foundation");
@@ -1010,7 +1033,7 @@ function Typography({ variant = "body", component, children, className }) {
1010
1033
  }
1011
1034
 
1012
1035
  // src/components/interaction/Button/Button.module.css
1013
- var Button_default = {"button":"bds0117Button-button","--primary":"bds0117Button---primary","--secondary":"bds0117Button---secondary","--size_small":"bds0117Button---size_small","--size_medium":"bds0117Button---size_medium","--size_large":"bds0117Button---size_large","--hasPulse":"bds0117Button---hasPulse","prefix":"bds0117Button-prefix","suffix":"bds0117Button-suffix"};
1036
+ var Button_default = {"button":"bds100Button-button","--default":"bds100Button---default","--ghost":"bds100Button---ghost","--size_small":"bds100Button---size_small","--size_medium":"bds100Button---size_medium","--size_large":"bds100Button---size_large","--hasPulse":"bds100Button---hasPulse","iconStart":"bds100Button-iconStart","iconEnd":"bds100Button-iconEnd"};
1014
1037
 
1015
1038
  // src/components/interaction/Button/Button.tsx
1016
1039
  var import_design_system_foundation22 = require("@boostdev/design-system-foundation");
@@ -1018,7 +1041,7 @@ var import_jsx_runtime23 = require("react/jsx-runtime");
1018
1041
  function Button({
1019
1042
  children,
1020
1043
  className,
1021
- variant = "primary",
1044
+ variant = "default",
1022
1045
  type = "button",
1023
1046
  iconStart,
1024
1047
  iconEnd,
@@ -1049,9 +1072,9 @@ function Button({
1049
1072
  onClick?.(e);
1050
1073
  };
1051
1074
  const content = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
1052
- Boolean(iconStart) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: Button_default.prefix, children: iconStart }),
1075
+ Boolean(iconStart) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: Button_default.iconStart, children: iconStart }),
1053
1076
  children,
1054
- Boolean(iconEnd) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: Button_default.suffix, children: iconEnd })
1077
+ Boolean(iconEnd) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: Button_default.iconEnd, children: iconEnd })
1055
1078
  ] });
1056
1079
  if (href) {
1057
1080
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
@@ -1086,7 +1109,7 @@ function Button({
1086
1109
  var import_react6 = require("react");
1087
1110
 
1088
1111
  // src/components/interaction/Command/Command.module.css
1089
- var Command_default = {"dialog":"bds0117Command-dialog","palette":"bds0117Command-palette","searchRow":"bds0117Command-searchRow","searchIcon":"bds0117Command-searchIcon","search":"bds0117Command-search","escHint":"bds0117Command-escHint","list":"bds0117Command-list","groupList":"bds0117Command-groupList","group":"bds0117Command-group","item":"bds0117Command-item","itemActive":"bds0117Command-itemActive","itemLabel":"bds0117Command-itemLabel","itemDesc":"bds0117Command-itemDesc","shortcut":"bds0117Command-shortcut","empty":"bds0117Command-empty"};
1112
+ var Command_default = {"dialog":"bds100Command-dialog","palette":"bds100Command-palette","searchRow":"bds100Command-searchRow","searchIcon":"bds100Command-searchIcon","search":"bds100Command-search","escHint":"bds100Command-escHint","list":"bds100Command-list","groupList":"bds100Command-groupList","group":"bds100Command-group","item":"bds100Command-item","itemActive":"bds100Command-itemActive","itemLabel":"bds100Command-itemLabel","itemDesc":"bds100Command-itemDesc","shortcut":"bds100Command-shortcut","empty":"bds100Command-empty"};
1090
1113
 
1091
1114
  // src/components/interaction/Command/Command.tsx
1092
1115
  var import_design_system_foundation23 = require("@boostdev/design-system-foundation");
@@ -1119,10 +1142,12 @@ function Command({
1119
1142
  });
1120
1143
  return map;
1121
1144
  }, [filtered]);
1145
+ const triggerRef = (0, import_react6.useRef)(null);
1122
1146
  (0, import_react6.useEffect)(() => {
1123
1147
  const dialog = dialogRef.current;
1124
1148
  if (!dialog) return;
1125
1149
  if (isOpen) {
1150
+ triggerRef.current = document.activeElement;
1126
1151
  dialog.showModal();
1127
1152
  document.body.style.overflow = "hidden";
1128
1153
  setQuery("");
@@ -1131,6 +1156,7 @@ function Command({
1131
1156
  } else if (dialog.open) {
1132
1157
  dialog.close();
1133
1158
  document.body.style.overflow = "";
1159
+ triggerRef.current?.focus();
1134
1160
  }
1135
1161
  return () => {
1136
1162
  document.body.style.overflow = "";
@@ -1168,6 +1194,7 @@ function Command({
1168
1194
  ref: dialogRef,
1169
1195
  className: (0, import_design_system_foundation23.cn)(Command_default.dialog, className),
1170
1196
  "aria-label": "Command palette",
1197
+ "aria-modal": "true",
1171
1198
  onCancel: handleCancel,
1172
1199
  children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: Command_default.palette, onKeyDown: handleKeyDown, children: [
1173
1200
  /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: Command_default.searchRow, children: [
@@ -1230,22 +1257,26 @@ function Command({
1230
1257
  var import_react7 = require("react");
1231
1258
 
1232
1259
  // src/components/interaction/Dialog/Dialog.module.css
1233
- var Dialog_default = {"dialog":"bds0117Dialog-dialog","dialogContent":"bds0117Dialog-dialogContent","closeForm":"bds0117Dialog-closeForm","closeButton":"bds0117Dialog-closeButton"};
1260
+ var Dialog_default = {"dialog":"bds100Dialog-dialog","dialogContent":"bds100Dialog-dialogContent","closeForm":"bds100Dialog-closeForm","closeButton":"bds100Dialog-closeButton"};
1234
1261
 
1235
1262
  // src/components/interaction/Dialog/Dialog.tsx
1236
1263
  var import_design_system_foundation24 = require("@boostdev/design-system-foundation");
1237
1264
  var import_jsx_runtime25 = require("react/jsx-runtime");
1265
+ var FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
1238
1266
  function Dialog({ children, isOpen = false, className, onClose }) {
1239
1267
  const dialogRef = (0, import_react7.useRef)(null);
1268
+ const triggerRef = (0, import_react7.useRef)(null);
1240
1269
  (0, import_react7.useEffect)(() => {
1241
1270
  const dialog = dialogRef.current;
1242
1271
  if (!dialog) return;
1243
1272
  if (isOpen) {
1273
+ triggerRef.current = document.activeElement;
1244
1274
  dialog.showModal();
1245
1275
  document.body.style.overflow = "hidden";
1246
1276
  } else if (dialog.open) {
1247
1277
  dialog.close();
1248
1278
  document.body.style.overflow = "";
1279
+ triggerRef.current?.focus();
1249
1280
  }
1250
1281
  return () => {
1251
1282
  document.body.style.overflow = "";
@@ -1258,13 +1289,35 @@ function Dialog({ children, isOpen = false, className, onClose }) {
1258
1289
  e.preventDefault();
1259
1290
  onClose?.();
1260
1291
  };
1292
+ const handleKeyDown = (e) => {
1293
+ if (e.key !== "Tab") return;
1294
+ const dialog = dialogRef.current;
1295
+ if (!dialog) return;
1296
+ const focusable = Array.from(dialog.querySelectorAll(FOCUSABLE_SELECTOR));
1297
+ if (focusable.length === 0) return;
1298
+ const first = focusable[0];
1299
+ const last = focusable[focusable.length - 1];
1300
+ if (e.shiftKey) {
1301
+ if (document.activeElement === first) {
1302
+ e.preventDefault();
1303
+ last.focus();
1304
+ }
1305
+ } else {
1306
+ if (document.activeElement === last) {
1307
+ e.preventDefault();
1308
+ first.focus();
1309
+ }
1310
+ }
1311
+ };
1261
1312
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1262
1313
  "dialog",
1263
1314
  {
1264
1315
  ref: dialogRef,
1265
1316
  className: (0, import_design_system_foundation24.cn)(className, Dialog_default.dialog),
1317
+ "aria-modal": "true",
1266
1318
  onClick: handleBackdropClick,
1267
1319
  onCancel: handleCancel,
1320
+ onKeyDown: handleKeyDown,
1268
1321
  children: [
1269
1322
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("form", { method: "dialog", className: Dialog_default.closeForm, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1270
1323
  "button",
@@ -1286,7 +1339,7 @@ function Dialog({ children, isOpen = false, className, onClose }) {
1286
1339
  var import_react8 = require("react");
1287
1340
 
1288
1341
  // src/components/interaction/Drawer/Drawer.module.css
1289
- var Drawer_default = {"drawer":"bds0117Drawer-drawer","panel":"bds0117Drawer-panel","--side_right":"bds0117Drawer---side_right","--side_left":"bds0117Drawer---side_left","header":"bds0117Drawer-header","closeButton":"bds0117Drawer-closeButton","body":"bds0117Drawer-body"};
1342
+ var Drawer_default = {"drawer":"bds100Drawer-drawer","panel":"bds100Drawer-panel","--side_right":"bds100Drawer---side_right","--side_left":"bds100Drawer---side_left","header":"bds100Drawer-header","closeButton":"bds100Drawer-closeButton","body":"bds100Drawer-body"};
1290
1343
 
1291
1344
  // src/components/interaction/Drawer/Drawer.tsx
1292
1345
  var import_design_system_foundation25 = require("@boostdev/design-system-foundation");
@@ -1297,19 +1350,22 @@ function Drawer({
1297
1350
  title,
1298
1351
  children,
1299
1352
  side = "right",
1300
- arialLabel = "",
1353
+ ariaLabel,
1301
1354
  className
1302
1355
  }) {
1303
1356
  const dialogRef = (0, import_react8.useRef)(null);
1357
+ const triggerRef = (0, import_react8.useRef)(null);
1304
1358
  (0, import_react8.useEffect)(() => {
1305
1359
  const dialog = dialogRef.current;
1306
1360
  if (!dialog) return;
1307
1361
  if (isOpen) {
1362
+ triggerRef.current = document.activeElement;
1308
1363
  dialog.showModal();
1309
1364
  document.body.style.overflow = "hidden";
1310
1365
  } else if (dialog.open) {
1311
1366
  dialog.close();
1312
1367
  document.body.style.overflow = "";
1368
+ triggerRef.current?.focus();
1313
1369
  }
1314
1370
  return () => {
1315
1371
  document.body.style.overflow = "";
@@ -1327,7 +1383,8 @@ function Drawer({
1327
1383
  {
1328
1384
  ref: dialogRef,
1329
1385
  className: (0, import_design_system_foundation25.cn)(Drawer_default.drawer, Drawer_default[`--side_${side}`], className),
1330
- "aria-label": arialLabel,
1386
+ "aria-label": ariaLabel,
1387
+ "aria-modal": "true",
1331
1388
  onClick: handleClick,
1332
1389
  onCancel: handleCancel,
1333
1390
  children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: Drawer_default.panel, children: [
@@ -1354,7 +1411,7 @@ function Drawer({
1354
1411
  var import_react9 = require("react");
1355
1412
 
1356
1413
  // src/components/interaction/DropdownMenu/DropdownMenu.module.css
1357
- var DropdownMenu_default = {"wrapper":"bds0117DropdownMenu-wrapper","menu":"bds0117DropdownMenu-menu","--placement_bottom-start":"bds0117DropdownMenu---placement_bottom-start","--placement_bottom-end":"bds0117DropdownMenu---placement_bottom-end","separator":"bds0117DropdownMenu-separator","item":"bds0117DropdownMenu-item","icon":"bds0117DropdownMenu-icon"};
1414
+ var DropdownMenu_default = {"wrapper":"bds100DropdownMenu-wrapper","menu":"bds100DropdownMenu-menu","--placement_bottom-start":"bds100DropdownMenu---placement_bottom-start","--placement_bottom-end":"bds100DropdownMenu---placement_bottom-end","separator":"bds100DropdownMenu-separator","item":"bds100DropdownMenu-item","icon":"bds100DropdownMenu-icon"};
1358
1415
 
1359
1416
  // src/components/interaction/DropdownMenu/DropdownMenu.tsx
1360
1417
  var import_design_system_foundation26 = require("@boostdev/design-system-foundation");
@@ -1467,7 +1524,7 @@ function DropdownMenu({
1467
1524
  var import_react10 = require("react");
1468
1525
 
1469
1526
  // src/components/interaction/Popover/Popover.module.css
1470
- var Popover_default = {"wrapper":"bds0117Popover-wrapper","panel":"bds0117Popover-panel","--placement_bottom":"bds0117Popover---placement_bottom","--placement_top":"bds0117Popover---placement_top","--placement_right":"bds0117Popover---placement_right","--placement_left":"bds0117Popover---placement_left"};
1527
+ var Popover_default = {"wrapper":"bds100Popover-wrapper","panel":"bds100Popover-panel","--placement_bottom":"bds100Popover---placement_bottom","--placement_top":"bds100Popover---placement_top","--placement_right":"bds100Popover---placement_right","--placement_left":"bds100Popover---placement_left"};
1471
1528
 
1472
1529
  // src/components/interaction/Popover/Popover.tsx
1473
1530
  var import_design_system_foundation27 = require("@boostdev/design-system-foundation");
@@ -1476,7 +1533,8 @@ function Popover({
1476
1533
  children,
1477
1534
  content,
1478
1535
  placement = "bottom",
1479
- className
1536
+ className,
1537
+ "aria-label": ariaLabel
1480
1538
  }) {
1481
1539
  const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
1482
1540
  const containerRef = (0, import_react10.useRef)(null);
@@ -1501,6 +1559,7 @@ function Popover({
1501
1559
  const trigger = (0, import_react10.isValidElement)(children) ? (0, import_react10.cloneElement)(children, {
1502
1560
  "aria-expanded": isOpen,
1503
1561
  "aria-controls": panelId,
1562
+ "aria-haspopup": true,
1504
1563
  onClick: (e) => {
1505
1564
  setIsOpen((prev) => !prev);
1506
1565
  const existingOnClick = children.props.onClick;
@@ -1513,8 +1572,8 @@ function Popover({
1513
1572
  "div",
1514
1573
  {
1515
1574
  id: panelId,
1516
- role: "dialog",
1517
- "aria-modal": "false",
1575
+ role: ariaLabel ? "region" : void 0,
1576
+ "aria-label": ariaLabel,
1518
1577
  className: (0, import_design_system_foundation27.cn)(Popover_default.panel, Popover_default[`--placement_${placement}`]),
1519
1578
  children: content
1520
1579
  }
@@ -1523,7 +1582,7 @@ function Popover({
1523
1582
  }
1524
1583
 
1525
1584
  // src/components/interaction/Rating/Rating.module.css
1526
- var Rating_default = {"rating":"bds0117Rating-rating","star":"bds0117Rating-star","--filled":"bds0117Rating---filled"};
1585
+ var Rating_default = {"rating":"bds100Rating-rating","star":"bds100Rating-star","--filled":"bds100Rating---filled"};
1527
1586
 
1528
1587
  // src/components/interaction/Rating/Rating.tsx
1529
1588
  var import_design_system_foundation28 = require("@boostdev/design-system-foundation");
@@ -1554,7 +1613,7 @@ function Rating({ value, max = 5, className }) {
1554
1613
  var import_react11 = require("react");
1555
1614
 
1556
1615
  // src/components/interaction/Toast/Toast.module.css
1557
- var Toast_default = {"toastContainer":"bds0117Toast-toastContainer","toast":"bds0117Toast-toast","--variant_success":"bds0117Toast---variant_success","--variant_warning":"bds0117Toast---variant_warning","--variant_info":"bds0117Toast---variant_info","--variant_error":"bds0117Toast---variant_error","message":"bds0117Toast-message","closeButton":"bds0117Toast-closeButton"};
1616
+ var Toast_default = {"toastContainer":"bds100Toast-toastContainer","toast":"bds100Toast-toast","--variant_success":"bds100Toast---variant_success","--variant_warning":"bds100Toast---variant_warning","--variant_info":"bds100Toast---variant_info","--variant_error":"bds100Toast---variant_error","message":"bds100Toast-message","closeButton":"bds100Toast-closeButton"};
1558
1617
 
1559
1618
  // src/components/interaction/Toast/Toast.tsx
1560
1619
  var import_design_system_foundation29 = require("@boostdev/design-system-foundation");
@@ -1587,7 +1646,7 @@ function ToastItem({ toast, onRemove }) {
1587
1646
  const timer = setTimeout(onRemove, 5e3);
1588
1647
  return () => clearTimeout(timer);
1589
1648
  }, [onRemove]);
1590
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: (0, import_design_system_foundation29.cn)(Toast_default.toast, Toast_default[`--variant_${toast.variant}`]), role: "status", children: [
1649
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: (0, import_design_system_foundation29.cn)(Toast_default.toast, Toast_default[`--variant_${toast.variant}`]), role: "status", "aria-live": "polite", "aria-atomic": "true", children: [
1591
1650
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: Toast_default.message, children: toast.message }),
1592
1651
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("button", { type: "button", className: Toast_default.closeButton, onClick: onRemove, "aria-label": "Dismiss", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) }) })
1593
1652
  ] });
@@ -1604,10 +1663,10 @@ function useToast() {
1604
1663
  var import_react12 = require("react");
1605
1664
 
1606
1665
  // src/components/interaction/form/Checkbox/Checkbox.module.css
1607
- var Checkbox_default = {"checkboxGroup":"bds0117Checkbox-checkboxGroup","inputWrapper":"bds0117Checkbox-inputWrapper","checkbox":"bds0117Checkbox-checkbox","checkboxError":"bds0117Checkbox-checkboxError"};
1666
+ var Checkbox_default = {"checkboxGroup":"bds100Checkbox-checkboxGroup","inputWrapper":"bds100Checkbox-inputWrapper","checkbox":"bds100Checkbox-checkbox","checkboxError":"bds100Checkbox-checkboxError"};
1608
1667
 
1609
1668
  // src/components/interaction/form/atoms/Message.module.css
1610
- var Message_default = {"error":"bds0117Message-error","hint":"bds0117Message-hint"};
1669
+ var Message_default = {"error":"bds100Message-error","hint":"bds100Message-hint"};
1611
1670
 
1612
1671
  // src/components/interaction/form/atoms/Message.tsx
1613
1672
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -1617,7 +1676,7 @@ var Message = ({ message, type, inputId }) => {
1617
1676
  };
1618
1677
 
1619
1678
  // src/components/interaction/form/atoms/Label.module.css
1620
- var Label_default = {"label":"bds0117Label-label"};
1679
+ var Label_default = {"label":"bds100Label-label"};
1621
1680
 
1622
1681
  // src/components/interaction/form/atoms/Label.tsx
1623
1682
  var import_jsx_runtime32 = require("react/jsx-runtime");
@@ -1629,7 +1688,7 @@ var Label = ({ label, id }) => {
1629
1688
  var import_design_system_foundation31 = require("@boostdev/design-system-foundation");
1630
1689
 
1631
1690
  // src/components/interaction/form/atoms/InputContainer.module.css
1632
- var InputContainer_default = {"container":"bds0117InputContainer-container"};
1691
+ var InputContainer_default = {"container":"bds100InputContainer-container"};
1633
1692
 
1634
1693
  // src/components/interaction/form/atoms/InputContainer.tsx
1635
1694
  var import_design_system_foundation30 = require("@boostdev/design-system-foundation");
@@ -1666,15 +1725,57 @@ function Checkbox({ label, name, error, hint, className, ...props }) {
1666
1725
  ] });
1667
1726
  }
1668
1727
 
1669
- // src/components/interaction/form/Combobox/Combobox.tsx
1728
+ // src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx
1670
1729
  var import_react13 = require("react");
1671
1730
 
1672
- // src/components/interaction/form/Combobox/Combobox.module.css
1673
- var Combobox_default = {"formGroup":"bds0117Combobox-formGroup","inputWrapper":"bds0117Combobox-inputWrapper","input":"bds0117Combobox-input","inputError":"bds0117Combobox-inputError","chevron":"bds0117Combobox-chevron","listbox":"bds0117Combobox-listbox","option":"bds0117Combobox-option","--highlighted":"bds0117Combobox---highlighted","--selected":"bds0117Combobox---selected","--disabled":"bds0117Combobox---disabled"};
1731
+ // src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css
1732
+ var CheckboxGroup_default = {"group":"bds100CheckboxGroup-group","legend":"bds100CheckboxGroup-legend","required":"bds100CheckboxGroup-required","items":"bds100CheckboxGroup-items"};
1674
1733
 
1675
- // src/components/interaction/form/Combobox/Combobox.tsx
1734
+ // src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx
1676
1735
  var import_design_system_foundation32 = require("@boostdev/design-system-foundation");
1677
1736
  var import_jsx_runtime35 = require("react/jsx-runtime");
1737
+ function CheckboxGroup({
1738
+ legend,
1739
+ children,
1740
+ error,
1741
+ hint,
1742
+ required,
1743
+ disabled,
1744
+ className
1745
+ }) {
1746
+ const id = (0, import_react13.useId)();
1747
+ const hintId = id + "hint";
1748
+ const errorId = id + "error";
1749
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1750
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
1751
+ "fieldset",
1752
+ {
1753
+ className: (0, import_design_system_foundation32.cn)(CheckboxGroup_default.group, className),
1754
+ disabled,
1755
+ "aria-required": required || void 0,
1756
+ "aria-describedby": describedBy,
1757
+ children: [
1758
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("legend", { className: CheckboxGroup_default.legend, children: [
1759
+ legend,
1760
+ required && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: CheckboxGroup_default.required, "aria-hidden": "true", children: " *" })
1761
+ ] }),
1762
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: CheckboxGroup_default.items, children }),
1763
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Message, { inputId: id, type: "error", message: error }),
1764
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Message, { inputId: id, type: "hint", message: hint })
1765
+ ]
1766
+ }
1767
+ );
1768
+ }
1769
+
1770
+ // src/components/interaction/form/Combobox/Combobox.tsx
1771
+ var import_react14 = require("react");
1772
+
1773
+ // src/components/interaction/form/Combobox/Combobox.module.css
1774
+ var Combobox_default = {"formGroup":"bds100Combobox-formGroup","inputWrapper":"bds100Combobox-inputWrapper","input":"bds100Combobox-input","inputError":"bds100Combobox-inputError","chevron":"bds100Combobox-chevron","listbox":"bds100Combobox-listbox","option":"bds100Combobox-option","--highlighted":"bds100Combobox---highlighted","--selected":"bds100Combobox---selected","--disabled":"bds100Combobox---disabled"};
1775
+
1776
+ // src/components/interaction/form/Combobox/Combobox.tsx
1777
+ var import_design_system_foundation33 = require("@boostdev/design-system-foundation");
1778
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1678
1779
  function Combobox({
1679
1780
  label,
1680
1781
  name,
@@ -1687,25 +1788,25 @@ function Combobox({
1687
1788
  hint,
1688
1789
  className
1689
1790
  }) {
1690
- const id = name + (0, import_react13.useId)();
1791
+ const id = name + (0, import_react14.useId)();
1691
1792
  const listboxId = id + "listbox";
1692
1793
  const hintId = id + "hint";
1693
1794
  const errorId = id + "error";
1694
1795
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1695
- const selectedOption = (0, import_react13.useMemo)(() => options.find((o) => o.value === value), [options, value]);
1696
- const [inputValue, setInputValue] = (0, import_react13.useState)(selectedOption?.label ?? "");
1697
- (0, import_react13.useEffect)(() => {
1796
+ const selectedOption = (0, import_react14.useMemo)(() => options.find((o) => o.value === value), [options, value]);
1797
+ const [inputValue, setInputValue] = (0, import_react14.useState)(selectedOption?.label ?? "");
1798
+ (0, import_react14.useEffect)(() => {
1698
1799
  setInputValue(selectedOption?.label ?? "");
1699
1800
  }, [selectedOption]);
1700
- const [isOpen, setIsOpen] = (0, import_react13.useState)(false);
1701
- const [highlightedIndex, setHighlightedIndex] = (0, import_react13.useState)(-1);
1702
- const containerRef = (0, import_react13.useRef)(null);
1703
- const inputRef = (0, import_react13.useRef)(null);
1801
+ const [isOpen, setIsOpen] = (0, import_react14.useState)(false);
1802
+ const [highlightedIndex, setHighlightedIndex] = (0, import_react14.useState)(-1);
1803
+ const containerRef = (0, import_react14.useRef)(null);
1804
+ const inputRef = (0, import_react14.useRef)(null);
1704
1805
  const filtered = options.filter(
1705
1806
  (o) => o.label.toLowerCase().includes(inputValue.toLowerCase())
1706
1807
  );
1707
1808
  const getOptionId = (index) => `${id}-option-${index}`;
1708
- (0, import_react13.useEffect)(() => {
1809
+ (0, import_react14.useEffect)(() => {
1709
1810
  if (!isOpen) return;
1710
1811
  const handlePointerDown = (e) => {
1711
1812
  if (!containerRef.current?.contains(e.target)) setIsOpen(false);
@@ -1752,10 +1853,10 @@ function Combobox({
1752
1853
  setIsOpen(false);
1753
1854
  }
1754
1855
  };
1755
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(InputContainer, { className: (0, import_design_system_foundation32.cn)(Combobox_default.formGroup, className), children: [
1756
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Label, { id, label }),
1757
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { ref: containerRef, className: Combobox_default.inputWrapper, children: [
1758
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1856
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(InputContainer, { className: (0, import_design_system_foundation33.cn)(Combobox_default.formGroup, className), children: [
1857
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Label, { id, label }),
1858
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { ref: containerRef, className: Combobox_default.inputWrapper, children: [
1859
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1759
1860
  "input",
1760
1861
  {
1761
1862
  ref: inputRef,
@@ -1774,28 +1875,27 @@ function Combobox({
1774
1875
  placeholder,
1775
1876
  value: inputValue,
1776
1877
  disabled,
1777
- className: (0, import_design_system_foundation32.cn)(Combobox_default.input, error ? Combobox_default.inputError : void 0),
1878
+ className: (0, import_design_system_foundation33.cn)(Combobox_default.input, error ? Combobox_default.inputError : void 0),
1778
1879
  onChange: handleInputChange,
1779
1880
  onKeyDown: handleKeyDown,
1780
1881
  onFocus: () => setIsOpen(true)
1781
1882
  }
1782
1883
  ),
1783
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: Combobox_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) }),
1784
- isOpen && filtered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1884
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: Combobox_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) }),
1885
+ isOpen && filtered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1785
1886
  "ul",
1786
1887
  {
1787
1888
  id: listboxId,
1788
1889
  role: "listbox",
1789
- "aria-label": String(label),
1790
1890
  className: Combobox_default.listbox,
1791
- children: filtered.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1891
+ children: filtered.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1792
1892
  "li",
1793
1893
  {
1794
1894
  id: getOptionId(index),
1795
1895
  role: "option",
1796
1896
  "aria-selected": option.value === value,
1797
1897
  "aria-disabled": option.disabled,
1798
- className: (0, import_design_system_foundation32.cn)(
1898
+ className: (0, import_design_system_foundation33.cn)(
1799
1899
  Combobox_default.option,
1800
1900
  index === highlightedIndex ? Combobox_default["--highlighted"] : void 0,
1801
1901
  option.value === value ? Combobox_default["--selected"] : void 0,
@@ -1812,38 +1912,39 @@ function Combobox({
1812
1912
  }
1813
1913
  )
1814
1914
  ] }),
1815
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Message, { inputId: id, type: "error", message: error }),
1816
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Message, { inputId: id, type: "hint", message: hint })
1915
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: id, type: "error", message: error }),
1916
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: id, type: "hint", message: hint })
1817
1917
  ] });
1818
1918
  }
1819
1919
 
1820
1920
  // src/components/interaction/form/FileInput/FileInput.tsx
1821
- var import_react14 = require("react");
1921
+ var import_react15 = require("react");
1822
1922
 
1823
1923
  // src/components/interaction/form/FileInput/FileInput.module.css
1824
- var FileInput_default = {"formGroup":"bds0117FileInput-formGroup","dropZone":"bds0117FileInput-dropZone","isDragging":"bds0117FileInput-isDragging","hasError":"bds0117FileInput-hasError","isDisabled":"bds0117FileInput-isDisabled","icon":"bds0117FileInput-icon","prompt":"bds0117FileInput-prompt","acceptHint":"bds0117FileInput-acceptHint","hiddenInput":"bds0117FileInput-hiddenInput"};
1924
+ var FileInput_default = {"formGroup":"bds100FileInput-formGroup","fieldLabel":"bds100FileInput-fieldLabel","dropZone":"bds100FileInput-dropZone","isDragging":"bds100FileInput-isDragging","hasError":"bds100FileInput-hasError","isDisabled":"bds100FileInput-isDisabled","icon":"bds100FileInput-icon","prompt":"bds100FileInput-prompt","acceptHint":"bds100FileInput-acceptHint","hiddenInput":"bds100FileInput-hiddenInput"};
1825
1925
 
1826
1926
  // src/components/interaction/form/FileInput/FileInput.tsx
1827
- var import_design_system_foundation33 = require("@boostdev/design-system-foundation");
1828
- var import_jsx_runtime36 = require("react/jsx-runtime");
1927
+ var import_design_system_foundation34 = require("@boostdev/design-system-foundation");
1928
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1829
1929
  function FileInput({
1830
1930
  label,
1831
1931
  name,
1832
1932
  accept,
1833
1933
  multiple = false,
1834
1934
  disabled = false,
1935
+ required,
1835
1936
  error,
1836
1937
  hint,
1837
1938
  onChange,
1838
1939
  className
1839
1940
  }) {
1840
- const uid = name + (0, import_react14.useId)();
1941
+ const uid = name + (0, import_react15.useId)();
1841
1942
  const hintId = uid + "hint";
1842
1943
  const errorId = uid + "error";
1843
1944
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1844
- const inputRef = (0, import_react14.useRef)(null);
1845
- const [isDragging, setIsDragging] = (0, import_react14.useState)(false);
1846
- const [fileNames, setFileNames] = (0, import_react14.useState)([]);
1945
+ const inputRef = (0, import_react15.useRef)(null);
1946
+ const [isDragging, setIsDragging] = (0, import_react15.useState)(false);
1947
+ const [fileNames, setFileNames] = (0, import_react15.useState)([]);
1847
1948
  const isFileAccepted = (file) => {
1848
1949
  if (!accept) return true;
1849
1950
  return accept.split(",").some((token) => {
@@ -1873,24 +1974,24 @@ function FileInput({
1873
1974
  if (!disabled) setIsDragging(true);
1874
1975
  };
1875
1976
  const handleDragLeave = () => setIsDragging(false);
1876
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(InputContainer, { className: (0, import_design_system_foundation33.cn)(FileInput_default.formGroup, className), children: [
1877
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Label, { id: uid, label }),
1878
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
1977
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(InputContainer, { className: (0, import_design_system_foundation34.cn)(FileInput_default.formGroup, className), children: [
1978
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
1879
1979
  "label",
1880
1980
  {
1881
1981
  htmlFor: uid,
1882
- className: (0, import_design_system_foundation33.cn)(FileInput_default.dropZone, isDragging && FileInput_default.isDragging, error && FileInput_default.hasError, disabled && FileInput_default.isDisabled),
1982
+ className: (0, import_design_system_foundation34.cn)(FileInput_default.dropZone, isDragging && FileInput_default.isDragging, error && FileInput_default.hasError, disabled && FileInput_default.isDisabled),
1883
1983
  onDrop: handleDrop,
1884
1984
  onDragOver: handleDragOver,
1885
1985
  onDragLeave: handleDragLeave,
1886
1986
  children: [
1887
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("svg", { "aria-hidden": "true", className: FileInput_default.icon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5" }) }),
1888
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: FileInput_default.prompt, children: fileNames.length > 0 ? fileNames.join(", ") : /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
1889
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("strong", { children: "Click to upload" }),
1987
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: FileInput_default.fieldLabel, children: label }),
1988
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("svg", { "aria-hidden": "true", className: FileInput_default.icon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5" }) }),
1989
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: FileInput_default.prompt, children: fileNames.length > 0 ? fileNames.join(", ") : /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
1990
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("strong", { children: "Click to upload" }),
1890
1991
  " or drag and drop"
1891
1992
  ] }) }),
1892
- accept && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: FileInput_default.acceptHint, children: accept }),
1893
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1993
+ accept && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: FileInput_default.acceptHint, children: accept }),
1994
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1894
1995
  "input",
1895
1996
  {
1896
1997
  ref: inputRef,
@@ -1902,6 +2003,8 @@ function FileInput({
1902
2003
  disabled,
1903
2004
  "aria-invalid": !!error,
1904
2005
  "aria-describedby": describedBy,
2006
+ "aria-required": required || void 0,
2007
+ required,
1905
2008
  className: FileInput_default.hiddenInput,
1906
2009
  onChange: handleChange
1907
2010
  }
@@ -1909,20 +2012,20 @@ function FileInput({
1909
2012
  ]
1910
2013
  }
1911
2014
  ),
1912
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: uid, type: "error", message: error }),
1913
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: uid, type: "hint", message: hint })
2015
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: uid, type: "error", message: error }),
2016
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: uid, type: "hint", message: hint })
1914
2017
  ] });
1915
2018
  }
1916
2019
 
1917
2020
  // src/components/interaction/form/FormInput/FormInput.tsx
1918
- var import_react15 = require("react");
2021
+ var import_react16 = require("react");
1919
2022
 
1920
2023
  // src/components/interaction/form/FormInput/FormInput.module.css
1921
- var FormInput_default = {"formGroup":"bds0117FormInput-formGroup","input":"bds0117FormInput-input","inputError":"bds0117FormInput-inputError"};
2024
+ var FormInput_default = {"formGroup":"bds100FormInput-formGroup","input":"bds100FormInput-input","inputError":"bds100FormInput-inputError"};
1922
2025
 
1923
2026
  // src/components/interaction/form/FormInput/FormInput.tsx
1924
- var import_design_system_foundation34 = require("@boostdev/design-system-foundation");
1925
- var import_jsx_runtime37 = require("react/jsx-runtime");
2027
+ var import_design_system_foundation35 = require("@boostdev/design-system-foundation");
2028
+ var import_jsx_runtime38 = require("react/jsx-runtime");
1926
2029
  function FormInput({
1927
2030
  label,
1928
2031
  name,
@@ -1930,40 +2033,43 @@ function FormInput({
1930
2033
  error,
1931
2034
  hint,
1932
2035
  className,
2036
+ required,
1933
2037
  ...props
1934
2038
  }) {
1935
- const id = name + (0, import_react15.useId)();
2039
+ const id = name + (0, import_react16.useId)();
1936
2040
  const hintId = id + "hint";
1937
2041
  const errorId = id + "error";
1938
2042
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1939
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(InputContainer, { className: (0, import_design_system_foundation34.cn)(FormInput_default.formGroup, className), children: [
1940
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Label, { id, label }),
1941
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2043
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(InputContainer, { className: (0, import_design_system_foundation35.cn)(FormInput_default.formGroup, className), children: [
2044
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Label, { id, label }),
2045
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1942
2046
  "input",
1943
2047
  {
1944
2048
  "aria-invalid": !!error,
1945
2049
  "aria-describedby": describedBy,
1946
2050
  "aria-label": ariaLabel,
2051
+ "aria-required": required || void 0,
1947
2052
  id,
1948
2053
  name,
1949
- className: (0, import_design_system_foundation34.cn)(FormInput_default.input, error && FormInput_default.inputError),
2054
+ required,
2055
+ className: (0, import_design_system_foundation35.cn)(FormInput_default.input, error && FormInput_default.inputError),
1950
2056
  ...props
1951
2057
  }
1952
2058
  ),
1953
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: id, type: "error", message: error }),
1954
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: id, type: "hint", message: hint })
2059
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: id, type: "error", message: error }),
2060
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: id, type: "hint", message: hint })
1955
2061
  ] });
1956
2062
  }
1957
2063
 
1958
2064
  // src/components/interaction/form/NumberInput/NumberInput.tsx
1959
- var import_react16 = require("react");
2065
+ var import_react17 = require("react");
1960
2066
 
1961
2067
  // src/components/interaction/form/NumberInput/NumberInput.module.css
1962
- var NumberInput_default = {"formGroup":"bds0117NumberInput-formGroup","inputRow":"bds0117NumberInput-inputRow","input":"bds0117NumberInput-input","inputError":"bds0117NumberInput-inputError","stepper":"bds0117NumberInput-stepper"};
2068
+ var NumberInput_default = {"formGroup":"bds100NumberInput-formGroup","inputRow":"bds100NumberInput-inputRow","input":"bds100NumberInput-input","inputError":"bds100NumberInput-inputError","stepper":"bds100NumberInput-stepper"};
1963
2069
 
1964
2070
  // src/components/interaction/form/NumberInput/NumberInput.tsx
1965
- var import_design_system_foundation35 = require("@boostdev/design-system-foundation");
1966
- var import_jsx_runtime38 = require("react/jsx-runtime");
2071
+ var import_design_system_foundation36 = require("@boostdev/design-system-foundation");
2072
+ var import_jsx_runtime39 = require("react/jsx-runtime");
1967
2073
  function NumberInput({
1968
2074
  label,
1969
2075
  name,
@@ -1978,13 +2084,13 @@ function NumberInput({
1978
2084
  onChange,
1979
2085
  className
1980
2086
  }) {
1981
- const uid = name + (0, import_react16.useId)();
2087
+ const uid = name + (0, import_react17.useId)();
1982
2088
  const hintId = uid + "hint";
1983
2089
  const errorId = uid + "error";
1984
2090
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1985
- const inputRef = (0, import_react16.useRef)(null);
2091
+ const inputRef = (0, import_react17.useRef)(null);
1986
2092
  const isControlled = value !== void 0;
1987
- const [internalValue, setInternalValue] = (0, import_react16.useState)(defaultValue ?? 0);
2093
+ const [internalValue, setInternalValue] = (0, import_react17.useState)(defaultValue ?? 0);
1988
2094
  const currentValue = isControlled ? value : internalValue;
1989
2095
  const clamp = (v) => {
1990
2096
  const withMin = min !== void 0 ? Math.max(min, v) : v;
@@ -1995,22 +2101,23 @@ function NumberInput({
1995
2101
  if (!isControlled) setInternalValue(next);
1996
2102
  onChange?.(next);
1997
2103
  };
1998
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(InputContainer, { className: (0, import_design_system_foundation35.cn)(NumberInput_default.formGroup, className), children: [
1999
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Label, { id: uid, label }),
2000
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: NumberInput_default.inputRow, children: [
2001
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2104
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(InputContainer, { className: (0, import_design_system_foundation36.cn)(NumberInput_default.formGroup, className), children: [
2105
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Label, { id: uid, label }),
2106
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: NumberInput_default.inputRow, children: [
2107
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2002
2108
  "button",
2003
2109
  {
2004
2110
  type: "button",
2005
2111
  className: NumberInput_default.stepper,
2006
2112
  "aria-label": "Decrease",
2113
+ "aria-controls": uid,
2007
2114
  disabled: disabled || min !== void 0 && currentValue <= min,
2008
2115
  onClick: () => adjust(-step),
2009
2116
  tabIndex: -1,
2010
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" }) })
2117
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" }) })
2011
2118
  }
2012
2119
  ),
2013
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2120
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2014
2121
  "input",
2015
2122
  {
2016
2123
  ref: inputRef,
@@ -2024,49 +2131,51 @@ function NumberInput({
2024
2131
  disabled,
2025
2132
  "aria-invalid": !!error,
2026
2133
  "aria-describedby": describedBy,
2027
- className: (0, import_design_system_foundation35.cn)(NumberInput_default.input, error ? NumberInput_default.inputError : void 0),
2134
+ className: (0, import_design_system_foundation36.cn)(NumberInput_default.input, error ? NumberInput_default.inputError : void 0),
2028
2135
  onChange: (e) => {
2029
2136
  const v = parseFloat(e.target.value);
2030
- if (!isControlled) setInternalValue(isNaN(v) ? 0 : v);
2031
- onChange?.(v);
2137
+ const safe = isNaN(v) ? 0 : v;
2138
+ if (!isControlled) setInternalValue(safe);
2139
+ onChange?.(safe);
2032
2140
  }
2033
2141
  }
2034
2142
  ),
2035
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2143
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2036
2144
  "button",
2037
2145
  {
2038
2146
  type: "button",
2039
2147
  className: NumberInput_default.stepper,
2040
2148
  "aria-label": "Increase",
2149
+ "aria-controls": uid,
2041
2150
  disabled: disabled || max !== void 0 && currentValue >= max,
2042
2151
  onClick: () => adjust(step),
2043
2152
  tabIndex: -1,
2044
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 5v14M5 12h14" }) })
2153
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 5v14M5 12h14" }) })
2045
2154
  }
2046
2155
  )
2047
2156
  ] }),
2048
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: uid, type: "error", message: error }),
2049
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: uid, type: "hint", message: hint })
2157
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Message, { inputId: uid, type: "error", message: error }),
2158
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Message, { inputId: uid, type: "hint", message: hint })
2050
2159
  ] });
2051
2160
  }
2052
2161
 
2053
2162
  // src/components/interaction/form/Radio/Radio.tsx
2054
- var import_react17 = require("react");
2163
+ var import_react18 = require("react");
2055
2164
 
2056
2165
  // src/components/interaction/form/Radio/Radio.module.css
2057
- var Radio_default = {"radioGroup":"bds0117Radio-radioGroup","inputWrapper":"bds0117Radio-inputWrapper","textWrapper":"bds0117Radio-textWrapper","description":"bds0117Radio-description","radio":"bds0117Radio-radio","radioError":"bds0117Radio-radioError"};
2166
+ var Radio_default = {"radioGroup":"bds100Radio-radioGroup","inputWrapper":"bds100Radio-inputWrapper","textWrapper":"bds100Radio-textWrapper","description":"bds100Radio-description","radio":"bds100Radio-radio","radioError":"bds100Radio-radioError"};
2058
2167
 
2059
2168
  // src/components/interaction/form/Radio/Radio.tsx
2060
- var import_design_system_foundation36 = require("@boostdev/design-system-foundation");
2061
- var import_jsx_runtime39 = require("react/jsx-runtime");
2169
+ var import_design_system_foundation37 = require("@boostdev/design-system-foundation");
2170
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2062
2171
  function Radio({ label, name, description, error, hint, className, ...props }) {
2063
- const id = name + (0, import_react17.useId)();
2172
+ const id = name + (0, import_react18.useId)();
2064
2173
  const hintId = id + "hint";
2065
2174
  const errorId = id + "error";
2066
2175
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2067
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(InputContainer, { className: (0, import_design_system_foundation36.cn)(Radio_default.radioGroup, className), children: [
2068
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: Radio_default.inputWrapper, children: [
2069
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2176
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(InputContainer, { className: (0, import_design_system_foundation37.cn)(Radio_default.radioGroup, className), children: [
2177
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: Radio_default.inputWrapper, children: [
2178
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2070
2179
  "input",
2071
2180
  {
2072
2181
  "aria-describedby": describedBy,
@@ -2074,29 +2183,71 @@ function Radio({ label, name, description, error, hint, className, ...props }) {
2074
2183
  type: "radio",
2075
2184
  id,
2076
2185
  name,
2077
- className: (0, import_design_system_foundation36.cn)(Radio_default.radio, error && Radio_default.radioError),
2186
+ className: (0, import_design_system_foundation37.cn)(Radio_default.radio, error && Radio_default.radioError),
2078
2187
  ...props
2079
2188
  }
2080
2189
  ),
2081
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: Radio_default.textWrapper, children: [
2082
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Label, { id, label }),
2083
- description && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: Radio_default.description, children: description })
2190
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: Radio_default.textWrapper, children: [
2191
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Label, { id, label }),
2192
+ description && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: Radio_default.description, children: description })
2084
2193
  ] })
2085
2194
  ] }),
2086
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Message, { inputId: id, type: "error", message: error }),
2087
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Message, { inputId: id, type: "hint", message: hint })
2195
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Message, { inputId: id, type: "error", message: error }),
2196
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Message, { inputId: id, type: "hint", message: hint })
2088
2197
  ] });
2089
2198
  }
2090
2199
 
2200
+ // src/components/interaction/form/RadioGroup/RadioGroup.tsx
2201
+ var import_react19 = require("react");
2202
+
2203
+ // src/components/interaction/form/RadioGroup/RadioGroup.module.css
2204
+ var RadioGroup_default = {"group":"bds100RadioGroup-group","legend":"bds100RadioGroup-legend","required":"bds100RadioGroup-required","items":"bds100RadioGroup-items"};
2205
+
2206
+ // src/components/interaction/form/RadioGroup/RadioGroup.tsx
2207
+ var import_design_system_foundation38 = require("@boostdev/design-system-foundation");
2208
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2209
+ function RadioGroup({
2210
+ legend,
2211
+ children,
2212
+ error,
2213
+ hint,
2214
+ required,
2215
+ disabled,
2216
+ className
2217
+ }) {
2218
+ const id = (0, import_react19.useId)();
2219
+ const hintId = id + "hint";
2220
+ const errorId = id + "error";
2221
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2222
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2223
+ "fieldset",
2224
+ {
2225
+ className: (0, import_design_system_foundation38.cn)(RadioGroup_default.group, className),
2226
+ disabled,
2227
+ "aria-required": required || void 0,
2228
+ "aria-describedby": describedBy,
2229
+ children: [
2230
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("legend", { className: RadioGroup_default.legend, children: [
2231
+ legend,
2232
+ required && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: RadioGroup_default.required, "aria-hidden": "true", children: " *" })
2233
+ ] }),
2234
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: RadioGroup_default.items, children }),
2235
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "error", message: error }),
2236
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "hint", message: hint })
2237
+ ]
2238
+ }
2239
+ );
2240
+ }
2241
+
2091
2242
  // src/components/interaction/form/SegmentedControl/SegmentedControl.tsx
2092
- var import_react18 = require("react");
2243
+ var import_react20 = require("react");
2093
2244
 
2094
2245
  // src/components/interaction/form/SegmentedControl/SegmentedControl.module.css
2095
- var SegmentedControl_default = {"control":"bds0117SegmentedControl-control","thumb":"bds0117SegmentedControl-thumb","item":"bds0117SegmentedControl-item","--disabled":"bds0117SegmentedControl---disabled","radio":"bds0117SegmentedControl-radio","label":"bds0117SegmentedControl-label","--size_small":"bds0117SegmentedControl---size_small","--size_large":"bds0117SegmentedControl---size_large","--active":"bds0117SegmentedControl---active"};
2246
+ var SegmentedControl_default = {"control":"bds100SegmentedControl-control","thumb":"bds100SegmentedControl-thumb","item":"bds100SegmentedControl-item","--disabled":"bds100SegmentedControl---disabled","radio":"bds100SegmentedControl-radio","label":"bds100SegmentedControl-label","--size_small":"bds100SegmentedControl---size_small","--size_large":"bds100SegmentedControl---size_large","--active":"bds100SegmentedControl---active"};
2096
2247
 
2097
2248
  // src/components/interaction/form/SegmentedControl/SegmentedControl.tsx
2098
- var import_design_system_foundation37 = require("@boostdev/design-system-foundation");
2099
- var import_jsx_runtime40 = require("react/jsx-runtime");
2249
+ var import_design_system_foundation39 = require("@boostdev/design-system-foundation");
2250
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2100
2251
  function SegmentedControl({
2101
2252
  name,
2102
2253
  options,
@@ -2106,10 +2257,11 @@ function SegmentedControl({
2106
2257
  disabled,
2107
2258
  size = "medium",
2108
2259
  className,
2260
+ "aria-label": ariaLabel,
2109
2261
  ...rest
2110
2262
  }) {
2111
- const baseId = name + (0, import_react18.useId)();
2112
- const [internalValue, setInternalValue] = (0, import_react18.useState)(
2263
+ const baseId = name + (0, import_react20.useId)();
2264
+ const [internalValue, setInternalValue] = (0, import_react20.useState)(
2113
2265
  defaultValue ?? options[0]?.value ?? ""
2114
2266
  );
2115
2267
  const activeValue = value ?? internalValue;
@@ -2118,27 +2270,29 @@ function SegmentedControl({
2118
2270
  if (value === void 0) setInternalValue(optionValue);
2119
2271
  onChange?.(optionValue);
2120
2272
  };
2121
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2273
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
2122
2274
  "div",
2123
2275
  {
2124
- className: (0, import_design_system_foundation37.cn)(SegmentedControl_default.control, SegmentedControl_default[`--size_${size}`], className),
2276
+ role: "group",
2277
+ "aria-label": ariaLabel,
2278
+ className: (0, import_design_system_foundation39.cn)(SegmentedControl_default.control, SegmentedControl_default[`--size_${size}`], className),
2125
2279
  style: {
2126
2280
  "--control_count": options.length,
2127
2281
  "--control_selected-index": Math.max(0, selectedIndex)
2128
2282
  },
2129
2283
  children: [
2130
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: SegmentedControl_default.thumb, "aria-hidden": "true" }),
2284
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: SegmentedControl_default.thumb, "aria-hidden": "true" }),
2131
2285
  options.map((option, index) => {
2132
2286
  const id = `${baseId}-${index}`;
2133
2287
  const isChecked = option.value === activeValue;
2134
2288
  const isDisabled = disabled || option.disabled;
2135
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2289
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
2136
2290
  "label",
2137
2291
  {
2138
2292
  htmlFor: id,
2139
- className: (0, import_design_system_foundation37.cn)(SegmentedControl_default.item, isChecked && SegmentedControl_default["--active"], isDisabled && SegmentedControl_default["--disabled"]),
2293
+ className: (0, import_design_system_foundation39.cn)(SegmentedControl_default.item, isChecked && SegmentedControl_default["--active"], isDisabled && SegmentedControl_default["--disabled"]),
2140
2294
  children: [
2141
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2295
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2142
2296
  "input",
2143
2297
  {
2144
2298
  ...rest,
@@ -2152,7 +2306,7 @@ function SegmentedControl({
2152
2306
  onChange: () => handleChange(option.value)
2153
2307
  }
2154
2308
  ),
2155
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: SegmentedControl_default.label, children: option.label })
2309
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: SegmentedControl_default.label, children: option.label })
2156
2310
  ]
2157
2311
  },
2158
2312
  option.value
@@ -2164,14 +2318,14 @@ function SegmentedControl({
2164
2318
  }
2165
2319
 
2166
2320
  // src/components/interaction/form/Select/Select.tsx
2167
- var import_react19 = require("react");
2321
+ var import_react21 = require("react");
2168
2322
 
2169
2323
  // src/components/interaction/form/Select/Select.module.css
2170
- var Select_default = {"formGroup":"bds0117Select-formGroup","selectWrapper":"bds0117Select-selectWrapper","select":"bds0117Select-select","selectError":"bds0117Select-selectError","chevron":"bds0117Select-chevron"};
2324
+ var Select_default = {"formGroup":"bds100Select-formGroup","selectWrapper":"bds100Select-selectWrapper","select":"bds100Select-select","selectError":"bds100Select-selectError","chevron":"bds100Select-chevron"};
2171
2325
 
2172
2326
  // src/components/interaction/form/Select/Select.tsx
2173
- var import_design_system_foundation38 = require("@boostdev/design-system-foundation");
2174
- var import_jsx_runtime41 = require("react/jsx-runtime");
2327
+ var import_design_system_foundation40 = require("@boostdev/design-system-foundation");
2328
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2175
2329
  function Select({
2176
2330
  label,
2177
2331
  name,
@@ -2180,46 +2334,49 @@ function Select({
2180
2334
  error,
2181
2335
  hint,
2182
2336
  className,
2337
+ required,
2183
2338
  ...props
2184
2339
  }) {
2185
- const id = name + (0, import_react19.useId)();
2340
+ const id = name + (0, import_react21.useId)();
2186
2341
  const hintId = id + "hint";
2187
2342
  const errorId = id + "error";
2188
2343
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2189
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(InputContainer, { className: (0, import_design_system_foundation38.cn)(Select_default.formGroup, className), children: [
2190
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Label, { id, label }),
2191
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: Select_default.selectWrapper, children: [
2192
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2344
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(InputContainer, { className: (0, import_design_system_foundation40.cn)(Select_default.formGroup, className), children: [
2345
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Label, { id, label }),
2346
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: Select_default.selectWrapper, children: [
2347
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
2193
2348
  "select",
2194
2349
  {
2195
2350
  id,
2196
2351
  name,
2197
2352
  "aria-invalid": !!error,
2353
+ "aria-required": required || void 0,
2198
2354
  "aria-describedby": describedBy,
2199
- className: (0, import_design_system_foundation38.cn)(Select_default.select, error ? Select_default.selectError : void 0),
2355
+ required,
2356
+ className: (0, import_design_system_foundation40.cn)(Select_default.select, error ? Select_default.selectError : void 0),
2200
2357
  ...props,
2201
2358
  children: [
2202
- placeholder && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("option", { value: "", disabled: true, hidden: true, children: placeholder }),
2203
- options.map(({ value, label: optLabel, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("option", { value, disabled, children: optLabel }, value))
2359
+ placeholder && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("option", { value: "", disabled: true, hidden: true, children: placeholder }),
2360
+ options.map(({ value, label: optLabel, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("option", { value, disabled, children: optLabel }, value))
2204
2361
  ]
2205
2362
  }
2206
2363
  ),
2207
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: Select_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) })
2364
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: Select_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) })
2208
2365
  ] }),
2209
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "error", message: error }),
2210
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "hint", message: hint })
2366
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "error", message: error }),
2367
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "hint", message: hint })
2211
2368
  ] });
2212
2369
  }
2213
2370
 
2214
2371
  // src/components/interaction/form/Slider/Slider.tsx
2215
- var import_react20 = require("react");
2372
+ var import_react22 = require("react");
2216
2373
 
2217
2374
  // src/components/interaction/form/Slider/Slider.module.css
2218
- var Slider_default = {"formGroup":"bds0117Slider-formGroup","labelRow":"bds0117Slider-labelRow","value":"bds0117Slider-value","slider":"bds0117Slider-slider","sliderError":"bds0117Slider-sliderError"};
2375
+ var Slider_default = {"formGroup":"bds100Slider-formGroup","labelRow":"bds100Slider-labelRow","value":"bds100Slider-value","slider":"bds100Slider-slider","sliderError":"bds100Slider-sliderError"};
2219
2376
 
2220
2377
  // src/components/interaction/form/Slider/Slider.tsx
2221
- var import_design_system_foundation39 = require("@boostdev/design-system-foundation");
2222
- var import_jsx_runtime42 = require("react/jsx-runtime");
2378
+ var import_design_system_foundation41 = require("@boostdev/design-system-foundation");
2379
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2223
2380
  function Slider({
2224
2381
  label,
2225
2382
  name,
@@ -2232,24 +2389,24 @@ function Slider({
2232
2389
  onChange,
2233
2390
  ...props
2234
2391
  }) {
2235
- const id = name + (0, import_react20.useId)();
2392
+ const id = name + (0, import_react22.useId)();
2236
2393
  const hintId = id + "hint";
2237
2394
  const errorId = id + "error";
2238
2395
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2239
2396
  const isControlled = props.value !== void 0;
2240
- const [internalValue, setInternalValue] = (0, import_react20.useState)(Number(props.defaultValue ?? min));
2397
+ const [internalValue, setInternalValue] = (0, import_react22.useState)(Number(props.defaultValue ?? min));
2241
2398
  const currentValue = isControlled ? Number(props.value) : internalValue;
2242
2399
  const fillPct = (currentValue - min) / (max - min) * 100;
2243
2400
  const handleChange = (e) => {
2244
2401
  if (!isControlled) setInternalValue(Number(e.target.value));
2245
2402
  onChange?.(e);
2246
2403
  };
2247
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(InputContainer, { className: (0, import_design_system_foundation39.cn)(Slider_default.formGroup, className), children: [
2248
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: Slider_default.labelRow, children: [
2249
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Label, { id, label }),
2250
- showValue && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: Slider_default.value, children: currentValue })
2404
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(InputContainer, { className: (0, import_design_system_foundation41.cn)(Slider_default.formGroup, className), children: [
2405
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: Slider_default.labelRow, children: [
2406
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Label, { id, label }),
2407
+ showValue && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: Slider_default.value, children: currentValue })
2251
2408
  ] }),
2252
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2409
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2253
2410
  "input",
2254
2411
  {
2255
2412
  type: "range",
@@ -2261,26 +2418,27 @@ function Slider({
2261
2418
  "aria-valuemin": min,
2262
2419
  "aria-valuemax": max,
2263
2420
  "aria-valuenow": currentValue,
2264
- className: (0, import_design_system_foundation39.cn)(Slider_default.slider, error ? Slider_default.sliderError : void 0),
2421
+ "aria-valuetext": String(currentValue),
2422
+ className: (0, import_design_system_foundation41.cn)(Slider_default.slider, error ? Slider_default.sliderError : void 0),
2265
2423
  style: { "--slider_fill": `${fillPct}%` },
2266
2424
  onChange: handleChange,
2267
2425
  ...props
2268
2426
  }
2269
2427
  ),
2270
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Message, { inputId: id, type: "error", message: error }),
2271
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Message, { inputId: id, type: "hint", message: hint })
2428
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "error", message: error }),
2429
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "hint", message: hint })
2272
2430
  ] });
2273
2431
  }
2274
2432
 
2275
2433
  // src/components/interaction/form/Switch/Switch.tsx
2276
- var import_react21 = require("react");
2434
+ var import_react23 = require("react");
2277
2435
 
2278
2436
  // src/components/interaction/form/Switch/Switch.module.css
2279
- var Switch_default = {"switchGroup":"bds0117Switch-switchGroup","--size_small":"bds0117Switch---size_small","--size_medium":"bds0117Switch---size_medium","--size_large":"bds0117Switch---size_large","inputWrapper":"bds0117Switch-inputWrapper","trackWrapper":"bds0117Switch-trackWrapper","switch":"bds0117Switch-switch","track":"bds0117Switch-track","thumb":"bds0117Switch-thumb","switchError":"bds0117Switch-switchError"};
2437
+ var Switch_default = {"switchGroup":"bds100Switch-switchGroup","--size_small":"bds100Switch---size_small","--size_medium":"bds100Switch---size_medium","--size_large":"bds100Switch---size_large","inputWrapper":"bds100Switch-inputWrapper","trackWrapper":"bds100Switch-trackWrapper","switch":"bds100Switch-switch","track":"bds100Switch-track","thumb":"bds100Switch-thumb","switchError":"bds100Switch-switchError"};
2280
2438
 
2281
2439
  // src/components/interaction/form/Switch/Switch.tsx
2282
- var import_design_system_foundation40 = require("@boostdev/design-system-foundation");
2283
- var import_jsx_runtime43 = require("react/jsx-runtime");
2440
+ var import_design_system_foundation42 = require("@boostdev/design-system-foundation");
2441
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2284
2442
  function Switch({
2285
2443
  label,
2286
2444
  name,
@@ -2291,15 +2449,15 @@ function Switch({
2291
2449
  prefix,
2292
2450
  ...props
2293
2451
  }) {
2294
- const id = name + (0, import_react21.useId)();
2452
+ const id = name + (0, import_react23.useId)();
2295
2453
  const hintId = id + "hint";
2296
2454
  const errorId = id + "error";
2297
2455
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2298
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(InputContainer, { className: (0, import_design_system_foundation40.cn)(Switch_default.switchGroup, Switch_default[`--size_${size}`], className), children: [
2299
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: Switch_default.inputWrapper, children: [
2300
- prefix && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Label, { id, label: prefix }),
2301
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: Switch_default.trackWrapper, children: [
2302
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2456
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(InputContainer, { className: (0, import_design_system_foundation42.cn)(Switch_default.switchGroup, Switch_default[`--size_${size}`], className), children: [
2457
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: Switch_default.inputWrapper, children: [
2458
+ prefix && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { children: prefix }),
2459
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: Switch_default.trackWrapper, children: [
2460
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2303
2461
  "input",
2304
2462
  {
2305
2463
  type: "checkbox",
@@ -2307,74 +2465,85 @@ function Switch({
2307
2465
  id,
2308
2466
  name,
2309
2467
  "aria-describedby": describedBy,
2310
- className: (0, import_design_system_foundation40.cn)(Switch_default.switch, error ? Switch_default.switchError : void 0),
2468
+ className: (0, import_design_system_foundation42.cn)(Switch_default.switch, error ? Switch_default.switchError : void 0),
2311
2469
  ...props
2312
2470
  }
2313
2471
  ),
2314
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: Switch_default.track, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: Switch_default.thumb }) })
2472
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: Switch_default.track, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: Switch_default.thumb }) })
2315
2473
  ] }),
2316
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Label, { id, label })
2474
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Label, { id, label })
2317
2475
  ] }),
2318
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "error", message: error }),
2319
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "hint", message: hint })
2476
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Message, { inputId: id, type: "error", message: error }),
2477
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Message, { inputId: id, type: "hint", message: hint })
2320
2478
  ] });
2321
2479
  }
2322
2480
 
2323
2481
  // src/components/interaction/form/Textarea/Textarea.tsx
2324
- var import_react22 = require("react");
2482
+ var import_react24 = require("react");
2325
2483
 
2326
2484
  // src/components/interaction/form/Textarea/Textarea.module.css
2327
- var Textarea_default = {"formGroup":"bds0117Textarea-formGroup","textarea":"bds0117Textarea-textarea","textareaError":"bds0117Textarea-textareaError"};
2485
+ var Textarea_default = {"formGroup":"bds100Textarea-formGroup","textarea":"bds100Textarea-textarea","textareaError":"bds100Textarea-textareaError"};
2328
2486
 
2329
2487
  // src/components/interaction/form/Textarea/Textarea.tsx
2330
- var import_design_system_foundation41 = require("@boostdev/design-system-foundation");
2331
- var import_jsx_runtime44 = require("react/jsx-runtime");
2488
+ var import_design_system_foundation43 = require("@boostdev/design-system-foundation");
2489
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2332
2490
  function Textarea({
2333
2491
  label,
2334
2492
  name,
2335
2493
  error,
2336
2494
  hint,
2337
2495
  className,
2496
+ required,
2338
2497
  ...props
2339
2498
  }) {
2340
- const id = name + (0, import_react22.useId)();
2499
+ const id = name + (0, import_react24.useId)();
2341
2500
  const hintId = id + "hint";
2342
2501
  const errorId = id + "error";
2343
2502
  const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2344
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(InputContainer, { className: (0, import_design_system_foundation41.cn)(Textarea_default.formGroup, className), children: [
2345
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Label, { id, label }),
2346
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2503
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(InputContainer, { className: (0, import_design_system_foundation43.cn)(Textarea_default.formGroup, className), children: [
2504
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Label, { id, label }),
2505
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2347
2506
  "textarea",
2348
2507
  {
2349
2508
  id,
2350
2509
  name,
2351
2510
  "aria-invalid": !!error,
2352
2511
  "aria-describedby": describedBy,
2353
- className: (0, import_design_system_foundation41.cn)(Textarea_default.textarea, error ? Textarea_default.textareaError : void 0),
2512
+ "aria-required": required || void 0,
2513
+ required,
2514
+ className: (0, import_design_system_foundation43.cn)(Textarea_default.textarea, error ? Textarea_default.textareaError : void 0),
2354
2515
  ...props
2355
2516
  }
2356
2517
  ),
2357
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "error", message: error }),
2358
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "hint", message: hint })
2518
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Message, { inputId: id, type: "error", message: error }),
2519
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Message, { inputId: id, type: "hint", message: hint })
2359
2520
  ] });
2360
2521
  }
2361
2522
 
2362
2523
  // src/components/layout/ButtonGroup/ButtonGroup.module.css
2363
- var ButtonGroup_default = {"buttonGroup":"bds0117ButtonGroup-buttonGroup","container":"bds0117ButtonGroup-container","--variant_card":"bds0117ButtonGroup---variant_card","--variant_flow":"bds0117ButtonGroup---variant_flow","--variant_modal":"bds0117ButtonGroup---variant_modal","--variant_content":"bds0117ButtonGroup---variant_content","--variant_grid":"bds0117ButtonGroup---variant_grid"};
2524
+ var ButtonGroup_default = {"buttonGroup":"bds100ButtonGroup-buttonGroup","container":"bds100ButtonGroup-container","--variant_card":"bds100ButtonGroup---variant_card","--variant_flow":"bds100ButtonGroup---variant_flow","--variant_modal":"bds100ButtonGroup---variant_modal","--variant_content":"bds100ButtonGroup---variant_content","--variant_grid":"bds100ButtonGroup---variant_grid"};
2364
2525
 
2365
2526
  // src/components/layout/ButtonGroup/ButtonGroup.tsx
2366
- var import_design_system_foundation42 = require("@boostdev/design-system-foundation");
2367
- var import_jsx_runtime45 = require("react/jsx-runtime");
2368
- function ButtonGroup({ children, className, variant }) {
2369
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: (0, import_design_system_foundation42.cn)(ButtonGroup_default.buttonGroup, className, variant && ButtonGroup_default[`--variant_${variant}`]), children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: ButtonGroup_default.container, children }) });
2527
+ var import_design_system_foundation44 = require("@boostdev/design-system-foundation");
2528
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2529
+ function ButtonGroup({ children, className, variant, "aria-label": ariaLabel }) {
2530
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2531
+ "div",
2532
+ {
2533
+ role: "group",
2534
+ "aria-label": ariaLabel,
2535
+ className: (0, import_design_system_foundation44.cn)(ButtonGroup_default.buttonGroup, className, variant && ButtonGroup_default[`--variant_${variant}`]),
2536
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: ButtonGroup_default.container, children })
2537
+ }
2538
+ );
2370
2539
  }
2371
2540
 
2372
2541
  // src/components/layout/Card/Card.module.css
2373
- var Card_default = {"card":"bds0117Card-card","--default":"bds0117Card---default","--elevated":"bds0117Card---elevated","--outlined":"bds0117Card---outlined","--clickable":"bds0117Card---clickable","--padding-none":"bds0117Card---padding-none","--padding-small":"bds0117Card---padding-small","--padding-medium":"bds0117Card---padding-medium","--padding-large":"bds0117Card---padding-large","--text-start":"bds0117Card---text-start","--text-center":"bds0117Card---text-center","--text-end":"bds0117Card---text-end"};
2542
+ var Card_default = {"card":"bds100Card-card","--default":"bds100Card---default","--elevated":"bds100Card---elevated","--outlined":"bds100Card---outlined","--clickable":"bds100Card---clickable","--padding-none":"bds100Card---padding-none","--padding-small":"bds100Card---padding-small","--padding-medium":"bds100Card---padding-medium","--padding-large":"bds100Card---padding-large","--text-start":"bds100Card---text-start","--text-center":"bds100Card---text-center","--text-end":"bds100Card---text-end"};
2374
2543
 
2375
2544
  // src/components/layout/Card/Card.tsx
2376
- var import_design_system_foundation43 = require("@boostdev/design-system-foundation");
2377
- var import_jsx_runtime46 = require("react/jsx-runtime");
2545
+ var import_design_system_foundation45 = require("@boostdev/design-system-foundation");
2546
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2378
2547
  function Card({
2379
2548
  children,
2380
2549
  className,
@@ -2385,7 +2554,7 @@ function Card({
2385
2554
  onClick,
2386
2555
  "aria-label": ariaLabel
2387
2556
  }) {
2388
- const classNames = (0, import_design_system_foundation43.cn)(
2557
+ const classNames = (0, import_design_system_foundation45.cn)(
2389
2558
  Card_default.card,
2390
2559
  Card_default[`--${variant}`],
2391
2560
  Card_default[`--padding-${padding}`],
@@ -2394,7 +2563,7 @@ function Card({
2394
2563
  className
2395
2564
  );
2396
2565
  const Component = onClick ? "button" : "div";
2397
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2566
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2398
2567
  Component,
2399
2568
  {
2400
2569
  className: classNames,
@@ -2408,11 +2577,11 @@ function Card({
2408
2577
  }
2409
2578
 
2410
2579
  // src/components/layout/SectionHeader/SectionHeader.module.css
2411
- var SectionHeader_default = {"sectionHeader":"bds0117SectionHeader-sectionHeader","title":"bds0117SectionHeader-title","subtitle":"bds0117SectionHeader-subtitle","--start":"bds0117SectionHeader---start","--center":"bds0117SectionHeader---center","--end":"bds0117SectionHeader---end","--small":"bds0117SectionHeader---small","--medium":"bds0117SectionHeader---medium","--large":"bds0117SectionHeader---large"};
2580
+ var SectionHeader_default = {"sectionHeader":"bds100SectionHeader-sectionHeader","title":"bds100SectionHeader-title","subtitle":"bds100SectionHeader-subtitle","--start":"bds100SectionHeader---start","--center":"bds100SectionHeader---center","--end":"bds100SectionHeader---end","--small":"bds100SectionHeader---small","--medium":"bds100SectionHeader---medium","--large":"bds100SectionHeader---large"};
2412
2581
 
2413
2582
  // src/components/layout/SectionHeader/SectionHeader.tsx
2414
- var import_design_system_foundation44 = require("@boostdev/design-system-foundation");
2415
- var import_jsx_runtime47 = require("react/jsx-runtime");
2583
+ var import_design_system_foundation46 = require("@boostdev/design-system-foundation");
2584
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2416
2585
  function SectionHeader({
2417
2586
  title,
2418
2587
  subtitle,
@@ -2422,24 +2591,24 @@ function SectionHeader({
2422
2591
  titleAs = "h2"
2423
2592
  }) {
2424
2593
  const Title = titleAs;
2425
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { className: (0, import_design_system_foundation44.cn)(SectionHeader_default.sectionHeader, SectionHeader_default[`--${alignment}`], SectionHeader_default[`--${size}`], className), children: [
2426
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Title, { className: SectionHeader_default.title, children: title }),
2427
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: SectionHeader_default.subtitle, children: subtitle })
2594
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: (0, import_design_system_foundation46.cn)(SectionHeader_default.sectionHeader, SectionHeader_default[`--${alignment}`], SectionHeader_default[`--${size}`], className), children: [
2595
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Title, { className: SectionHeader_default.title, children: title }),
2596
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: SectionHeader_default.subtitle, children: subtitle })
2428
2597
  ] });
2429
2598
  }
2430
2599
 
2431
2600
  // src/components/layout/IconWrapper/IconWrapper.module.css
2432
- var IconWrapper_default = {"wrapper":"bds0117IconWrapper-wrapper"};
2601
+ var IconWrapper_default = {"wrapper":"bds100IconWrapper-wrapper"};
2433
2602
 
2434
2603
  // src/components/layout/IconWrapper/IconWrapper.tsx
2435
- var import_design_system_foundation45 = require("@boostdev/design-system-foundation");
2436
- var import_jsx_runtime48 = require("react/jsx-runtime");
2437
- function IconWrapper({ children, className }) {
2438
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: (0, import_design_system_foundation45.cn)(className, IconWrapper_default.wrapper), children });
2604
+ var import_design_system_foundation47 = require("@boostdev/design-system-foundation");
2605
+ var import_jsx_runtime50 = require("react/jsx-runtime");
2606
+ function IconWrapper({ children, className, "aria-hidden": ariaHidden }) {
2607
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: (0, import_design_system_foundation47.cn)(className, IconWrapper_default.wrapper), "aria-hidden": ariaHidden, children });
2439
2608
  }
2440
2609
 
2441
2610
  // src/index.ts
2442
- var import_design_system_foundation46 = require("@boostdev/design-system-foundation");
2611
+ var import_design_system_foundation48 = require("@boostdev/design-system-foundation");
2443
2612
  // Annotate the CommonJS export names for ESM import in node:
2444
2613
  0 && (module.exports = {
2445
2614
  Accordion,
@@ -2453,6 +2622,7 @@ var import_design_system_foundation46 = require("@boostdev/design-system-foundat
2453
2622
  Card,
2454
2623
  Carousel,
2455
2624
  Checkbox,
2625
+ CheckboxGroup,
2456
2626
  Collapsible,
2457
2627
  Combobox,
2458
2628
  Command,
@@ -2472,6 +2642,7 @@ var import_design_system_foundation46 = require("@boostdev/design-system-foundat
2472
2642
  Progress,
2473
2643
  ProgressCircle,
2474
2644
  Radio,
2645
+ RadioGroup,
2475
2646
  Rating,
2476
2647
  SectionHeader,
2477
2648
  SegmentedControl,