@boostdev/design-system-components 0.1.4 → 0.1.6

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 (59) hide show
  1. package/dist/client.cjs +188 -107
  2. package/dist/client.css +463 -441
  3. package/dist/client.d.cts +15 -13
  4. package/dist/client.d.ts +15 -13
  5. package/dist/client.js +192 -110
  6. package/dist/index.cjs +188 -107
  7. package/dist/index.css +463 -441
  8. package/dist/index.d.cts +15 -13
  9. package/dist/index.d.ts +15 -13
  10. package/dist/index.js +192 -110
  11. package/package.json +2 -1
  12. package/src/components/interaction/Button/Button.tsx +35 -8
  13. package/src/components/interaction/Command/Command.module.css +6 -5
  14. package/src/components/interaction/Dialog/Dialog.module.css +8 -5
  15. package/src/components/interaction/Dialog/Dialog.spec.tsx +10 -10
  16. package/src/components/interaction/Dialog/Dialog.stories.tsx +2 -2
  17. package/src/components/interaction/Dialog/Dialog.tsx +24 -8
  18. package/src/components/interaction/Drawer/Drawer.module.css +3 -4
  19. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +6 -4
  20. package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +1 -1
  21. package/src/components/interaction/DropdownMenu/index.ts +1 -0
  22. package/src/components/interaction/Popover/Popover.module.css +3 -3
  23. package/src/components/interaction/Toast/Toast.module.css +25 -8
  24. package/src/components/interaction/Toast/Toast.tsx +10 -1
  25. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -1
  26. package/src/components/interaction/form/Checkbox/Checkbox.tsx +3 -2
  27. package/src/components/interaction/form/Combobox/Combobox.module.css +3 -2
  28. package/src/components/interaction/form/Combobox/Combobox.tsx +11 -3
  29. package/src/components/interaction/form/Combobox/index.ts +1 -0
  30. package/src/components/interaction/form/FileInput/FileInput.tsx +15 -2
  31. package/src/components/interaction/form/FormInput/FormInput.tsx +5 -4
  32. package/src/components/interaction/form/NumberInput/NumberInput.tsx +21 -17
  33. package/src/components/interaction/form/Radio/Radio.module.css +1 -1
  34. package/src/components/interaction/form/Radio/Radio.tsx +3 -2
  35. package/src/components/interaction/form/Select/Select.spec.tsx +2 -1
  36. package/src/components/interaction/form/Select/Select.tsx +3 -3
  37. package/src/components/interaction/form/Select/index.ts +1 -0
  38. package/src/components/interaction/form/Slider/Slider.tsx +5 -4
  39. package/src/components/interaction/form/Switch/Switch.tsx +1 -1
  40. package/src/components/interaction/form/Textarea/Textarea.tsx +1 -1
  41. package/src/components/interaction/form/atoms/Message.tsx +2 -2
  42. package/src/components/layout/ButtonGroup/ButtonGroup.tsx +1 -1
  43. package/src/components/layout/Card/Card.module.css +3 -2
  44. package/src/components/layout/Card/Card.tsx +3 -0
  45. package/src/components/layout/SectionHeader/SectionHeader.tsx +2 -3
  46. package/src/components/ui/Accordion/Accordion.tsx +1 -1
  47. package/src/components/ui/Accordion/index.ts +1 -0
  48. package/src/components/ui/Breadcrumb/Breadcrumb.tsx +2 -2
  49. package/src/components/ui/Breadcrumb/index.ts +1 -0
  50. package/src/components/ui/Calendar/Calendar.tsx +8 -3
  51. package/src/components/ui/DescriptionList/DescriptionList.tsx +1 -1
  52. package/src/components/ui/DescriptionList/index.ts +1 -0
  53. package/src/components/ui/Link/Link.tsx +3 -1
  54. package/src/components/ui/Separator/Separator.module.css +1 -1
  55. package/src/components/ui/Table/Table.tsx +1 -1
  56. package/src/components/ui/Table/index.ts +1 -0
  57. package/src/components/ui/Tabs/Tabs.tsx +1 -1
  58. package/src/components/ui/Tabs/index.ts +1 -0
  59. package/src/index.ts +8 -0
package/dist/index.cjs CHANGED
@@ -72,7 +72,7 @@ module.exports = __toCommonJS(index_exports);
72
72
  var import_react = require("react");
73
73
 
74
74
  // src/components/ui/Accordion/Accordion.module.css
75
- var Accordion_default = {"accordion":"bds014-accordion","item":"bds014-item","heading":"bds014-heading","trigger":"bds014-trigger","triggerLabel":"bds014-triggerLabel","chevron":"bds014-chevron","--open":"bds014---open","panel":"bds014-panel","panelContent":"bds014-panelContent"};
75
+ var Accordion_default = {"accordion":"bds016-accordion","item":"bds016-item","heading":"bds016-heading","trigger":"bds016-trigger","triggerLabel":"bds016-triggerLabel","chevron":"bds016-chevron","--open":"bds016---open","panel":"bds016-panel","panelContent":"bds016-panelContent"};
76
76
 
77
77
  // src/components/ui/Accordion/Accordion.tsx
78
78
  var import_design_system_foundation = require("@boostdev/design-system-foundation");
@@ -140,7 +140,7 @@ function Accordion({
140
140
  }
141
141
 
142
142
  // src/components/ui/Alert/Alert.module.css
143
- var Alert_default = {"alert":"bds014-alert","--variant_info":"bds014---variant_info","--variant_success":"bds014---variant_success","--variant_warning":"bds014---variant_warning","--variant_error":"bds014---variant_error","icon":"bds014-icon","content":"bds014-content","title":"bds014-title","dismiss":"bds014-dismiss"};
143
+ var Alert_default = {"alert":"bds016-alert","--variant_info":"bds016---variant_info","--variant_success":"bds016---variant_success","--variant_warning":"bds016---variant_warning","--variant_error":"bds016---variant_error","icon":"bds016-icon","content":"bds016-content","title":"bds016-title","dismiss":"bds016-dismiss"};
144
144
 
145
145
  // src/components/ui/Alert/Alert.tsx
146
146
  var import_design_system_foundation2 = require("@boostdev/design-system-foundation");
@@ -183,7 +183,7 @@ function Alert({
183
183
  }
184
184
 
185
185
  // src/components/ui/Avatar/Avatar.module.css
186
- var Avatar_default = {"avatar":"bds014-avatar","--fallback":"bds014---fallback","--size_small":"bds014---size_small","--size_medium":"bds014---size_medium","--size_large":"bds014---size_large","image":"bds014-image","initials":"bds014-initials"};
186
+ var Avatar_default = {"avatar":"bds016-avatar","--fallback":"bds016---fallback","--size_small":"bds016---size_small","--size_medium":"bds016---size_medium","--size_large":"bds016---size_large","image":"bds016-image","initials":"bds016-initials"};
187
187
 
188
188
  // src/components/ui/Avatar/Avatar.tsx
189
189
  var import_design_system_foundation3 = require("@boostdev/design-system-foundation");
@@ -209,7 +209,7 @@ function Avatar({ src, alt, name, size = "medium", className }) {
209
209
  }
210
210
 
211
211
  // src/components/ui/Badge/Badge.module.css
212
- var Badge_default = {"badge":"bds014-badge","--variant_primary":"bds014---variant_primary","--variant_secondary":"bds014---variant_secondary","--variant_success":"bds014---variant_success","--variant_error":"bds014---variant_error","--variant_warning":"bds014---variant_warning"};
212
+ var Badge_default = {"badge":"bds016-badge","--variant_primary":"bds016---variant_primary","--variant_secondary":"bds016---variant_secondary","--variant_success":"bds016---variant_success","--variant_error":"bds016---variant_error","--variant_warning":"bds016---variant_warning"};
213
213
 
214
214
  // src/components/ui/Badge/Badge.tsx
215
215
  var import_design_system_foundation4 = require("@boostdev/design-system-foundation");
@@ -219,7 +219,7 @@ function Badge({ children, variant = "primary", className }) {
219
219
  }
220
220
 
221
221
  // src/components/ui/Breadcrumb/Breadcrumb.module.css
222
- var Breadcrumb_default = {"breadcrumb":"bds014-breadcrumb","list":"bds014-list","item":"bds014-item","link":"bds014-link","separator":"bds014-separator","current":"bds014-current"};
222
+ var Breadcrumb_default = {"breadcrumb":"bds016-breadcrumb","list":"bds016-list","item":"bds016-item","link":"bds016-link","separator":"bds016-separator","current":"bds016-current"};
223
223
 
224
224
  // src/components/ui/Breadcrumb/Breadcrumb.tsx
225
225
  var import_design_system_foundation5 = require("@boostdev/design-system-foundation");
@@ -230,7 +230,7 @@ function Breadcrumb({ items, className }) {
230
230
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("li", { className: Breadcrumb_default.item, children: isLast ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { "aria-current": "page", className: Breadcrumb_default.current, children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
231
231
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("a", { href: item.href, className: Breadcrumb_default.link, children: item.label }),
232
232
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: Breadcrumb_default.separator, "aria-hidden": "true", children: "\u203A" })
233
- ] }) }, item.label);
233
+ ] }) }, index);
234
234
  }) }) });
235
235
  }
236
236
 
@@ -238,7 +238,7 @@ function Breadcrumb({ items, className }) {
238
238
  var import_react2 = require("react");
239
239
 
240
240
  // src/components/ui/Calendar/Calendar.module.css
241
- var Calendar_default = {"calendar":"bds014-calendar","header":"bds014-header","monthYear":"bds014-monthYear","navBtn":"bds014-navBtn","grid":"bds014-grid","weekday":"bds014-weekday","empty":"bds014-empty","day":"bds014-day","disabled":"bds014-disabled","selected":"bds014-selected","today":"bds014-today"};
241
+ var Calendar_default = {"calendar":"bds016-calendar","header":"bds016-header","monthYear":"bds016-monthYear","navBtn":"bds016-navBtn","grid":"bds016-grid","weekday":"bds016-weekday","empty":"bds016-empty","day":"bds016-day","disabled":"bds016-disabled","selected":"bds016-selected","today":"bds016-today"};
242
242
 
243
243
  // src/components/ui/Calendar/Calendar.tsx
244
244
  var import_design_system_foundation6 = require("@boostdev/design-system-foundation");
@@ -261,10 +261,13 @@ var MONTHS = [
261
261
  function isSameDay(a, b) {
262
262
  return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
263
263
  }
264
+ function toMidnight(date) {
265
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
266
+ }
264
267
  function isOutOfRange(date, min, max) {
265
- if (min && date < min) return true;
266
- if (max && date > max) return true;
267
- return false;
268
+ const d = toMidnight(date);
269
+ if (min && d < toMidnight(min)) return true;
270
+ return !!(max && d > toMidnight(max));
268
271
  }
269
272
  function getDaysInMonth(year, month) {
270
273
  return new Date(year, month + 1, 0).getDate();
@@ -401,7 +404,7 @@ function Calendar({ value, defaultValue, min, max, onChange, className }) {
401
404
  var import_react3 = require("react");
402
405
 
403
406
  // src/components/ui/Carousel/Carousel.module.css
404
- var Carousel_default = {"carousel":"bds014-carousel","track":"bds014-track","slide":"bds014-slide","navBtn":"bds014-navBtn"};
407
+ var Carousel_default = {"carousel":"bds016-carousel","track":"bds016-track","slide":"bds016-slide","navBtn":"bds016-navBtn"};
405
408
 
406
409
  // src/components/ui/Carousel/Carousel.tsx
407
410
  var import_design_system_foundation7 = require("@boostdev/design-system-foundation");
@@ -454,7 +457,7 @@ function Carousel({ items, label, className }) {
454
457
  }
455
458
 
456
459
  // src/components/ui/DescriptionList/DescriptionList.module.css
457
- var DescriptionList_default = {"list":"bds014-list","group":"bds014-group","term":"bds014-term","details":"bds014-details","--layout_inline":"bds014---layout_inline"};
460
+ var DescriptionList_default = {"list":"bds016-list","group":"bds016-group","term":"bds016-term","details":"bds016-details","--layout_inline":"bds016---layout_inline"};
458
461
 
459
462
  // src/components/ui/DescriptionList/DescriptionList.tsx
460
463
  var import_design_system_foundation8 = require("@boostdev/design-system-foundation");
@@ -467,7 +470,7 @@ function DescriptionList({ items, layout = "stacked", className }) {
467
470
  }
468
471
 
469
472
  // src/components/ui/Link/Link.module.css
470
- var Link_default = {"link":"bds014-link","--variant_default":"bds014---variant_default","--variant_subtle":"bds014---variant_subtle","--variant_standalone":"bds014---variant_standalone","externalLabel":"bds014-externalLabel"};
473
+ var Link_default = {"link":"bds016-link","--variant_default":"bds016---variant_default","--variant_subtle":"bds016---variant_subtle","--variant_standalone":"bds016---variant_standalone","externalLabel":"bds016-externalLabel"};
471
474
 
472
475
  // src/components/ui/Link/Link.tsx
473
476
  var import_design_system_foundation9 = require("@boostdev/design-system-foundation");
@@ -477,6 +480,7 @@ function Link({
477
480
  children,
478
481
  variant = "default",
479
482
  external = false,
483
+ externalLabel = "(opens in new tab)",
480
484
  className,
481
485
  ...props
482
486
  }) {
@@ -490,14 +494,14 @@ function Link({
490
494
  ...props,
491
495
  children: [
492
496
  children,
493
- external && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: Link_default.externalLabel, children: " (opens in new tab)" })
497
+ external && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: Link_default.externalLabel, children: externalLabel })
494
498
  ]
495
499
  }
496
500
  );
497
501
  }
498
502
 
499
503
  // src/components/ui/Loading/Loading.module.css
500
- var Loading_default = {"loading":"bds014-loading","spinner":"bds014-spinner","--size_small":"bds014---size_small","--size_large":"bds014---size_large"};
504
+ var Loading_default = {"loading":"bds016-loading","spinner":"bds016-spinner","--size_small":"bds016---size_small","--size_large":"bds016---size_large"};
501
505
 
502
506
  // src/components/ui/Loading/Loading.tsx
503
507
  var import_design_system_foundation10 = require("@boostdev/design-system-foundation");
@@ -507,7 +511,7 @@ function Loading({ size = "medium", className }) {
507
511
  }
508
512
 
509
513
  // src/components/ui/NotificationBanner/NotificationBanner.module.css
510
- var NotificationBanner_default = {"banner":"bds014-banner","--variant_info":"bds014---variant_info","--variant_success":"bds014---variant_success","--variant_warning":"bds014---variant_warning","--variant_error":"bds014---variant_error","content":"bds014-content","action":"bds014-action","dismiss":"bds014-dismiss"};
514
+ var NotificationBanner_default = {"banner":"bds016-banner","--variant_info":"bds016---variant_info","--variant_success":"bds016---variant_success","--variant_warning":"bds016---variant_warning","--variant_error":"bds016---variant_error","content":"bds016-content","action":"bds016-action","dismiss":"bds016-dismiss"};
511
515
 
512
516
  // src/components/ui/NotificationBanner/NotificationBanner.tsx
513
517
  var import_design_system_foundation11 = require("@boostdev/design-system-foundation");
@@ -546,7 +550,7 @@ function NotificationBanner({
546
550
  }
547
551
 
548
552
  // src/components/ui/Pagination/Pagination.module.css
549
- var Pagination_default = {"pagination":"bds014-pagination","list":"bds014-list","button":"bds014-button","--active":"bds014---active","--nav":"bds014---nav","ellipsis":"bds014-ellipsis"};
553
+ var Pagination_default = {"pagination":"bds016-pagination","list":"bds016-list","button":"bds016-button","--active":"bds016---active","--nav":"bds016---nav","ellipsis":"bds016-ellipsis"};
550
554
 
551
555
  // src/components/ui/Pagination/Pagination.tsx
552
556
  var import_design_system_foundation12 = require("@boostdev/design-system-foundation");
@@ -610,7 +614,7 @@ function Pagination({
610
614
  }
611
615
 
612
616
  // src/components/ui/Progress/Progress.module.css
613
- var Progress_default = {"container":"bds014-container","labelRow":"bds014-labelRow","label":"bds014-label","value":"bds014-value","track":"bds014-track","--size_small":"bds014---size_small","--size_medium":"bds014---size_medium","--size_large":"bds014---size_large","fill":"bds014-fill"};
617
+ var Progress_default = {"container":"bds016-container","labelRow":"bds016-labelRow","label":"bds016-label","value":"bds016-value","track":"bds016-track","--size_small":"bds016---size_small","--size_medium":"bds016---size_medium","--size_large":"bds016---size_large","fill":"bds016-fill"};
614
618
 
615
619
  // src/components/ui/Progress/Progress.tsx
616
620
  var import_design_system_foundation13 = require("@boostdev/design-system-foundation");
@@ -648,7 +652,7 @@ function Progress({
648
652
  }
649
653
 
650
654
  // src/components/ui/ProgressCircle/ProgressCircle.module.css
651
- var ProgressCircle_default = {"wrapper":"bds014-wrapper","svg":"bds014-svg","track":"bds014-track","fill":"bds014-fill","value":"bds014-value","--size_small":"bds014---size_small","--size_medium":"bds014---size_medium","--size_large":"bds014---size_large"};
655
+ var ProgressCircle_default = {"wrapper":"bds016-wrapper","svg":"bds016-svg","track":"bds016-track","fill":"bds016-fill","value":"bds016-value","--size_small":"bds016---size_small","--size_medium":"bds016---size_medium","--size_large":"bds016---size_large"};
652
656
 
653
657
  // src/components/ui/ProgressCircle/ProgressCircle.tsx
654
658
  var import_design_system_foundation14 = require("@boostdev/design-system-foundation");
@@ -727,7 +731,7 @@ function ProgressCircle({
727
731
  }
728
732
 
729
733
  // src/components/ui/Separator/Separator.module.css
730
- var Separator_default = {"separator":"bds014-separator","--horizontal":"bds014---horizontal","--vertical":"bds014---vertical"};
734
+ var Separator_default = {"separator":"bds016-separator","--horizontal":"bds016---horizontal","--vertical":"bds016---vertical"};
731
735
 
732
736
  // src/components/ui/Separator/Separator.tsx
733
737
  var import_design_system_foundation15 = require("@boostdev/design-system-foundation");
@@ -750,7 +754,7 @@ function Separator({ orientation = "horizontal", className }) {
750
754
  var import_design_system_foundation16 = require("@boostdev/design-system-foundation");
751
755
 
752
756
  // src/components/ui/Skeleton/Skeleton.module.css
753
- var Skeleton_default = {"skeleton":"bds014-skeleton"};
757
+ var Skeleton_default = {"skeleton":"bds016-skeleton"};
754
758
 
755
759
  // src/components/ui/Skeleton/Skeleton.tsx
756
760
  var import_jsx_runtime16 = require("react/jsx-runtime");
@@ -759,7 +763,7 @@ function Skeleton({ className }) {
759
763
  }
760
764
 
761
765
  // src/components/ui/SkipLink/SkipLink.module.css
762
- var SkipLink_default = {"skipLink":"bds014-skipLink"};
766
+ var SkipLink_default = {"skipLink":"bds016-skipLink"};
763
767
 
764
768
  // src/components/ui/SkipLink/SkipLink.tsx
765
769
  var import_jsx_runtime17 = require("react/jsx-runtime");
@@ -768,7 +772,7 @@ function SkipLink({ href = "#main", children = "Skip to main content" }) {
768
772
  }
769
773
 
770
774
  // src/components/ui/Table/Table.module.css
771
- var Table_default = {"wrapper":"bds014-wrapper","table":"bds014-table","caption":"bds014-caption","thead":"bds014-thead","th":"bds014-th","--sortable":"bds014---sortable","sortButton":"bds014-sortButton","sortIcon":"bds014-sortIcon","--sort-active":"bds014---sort-active","--sort-desc":"bds014---sort-desc","tbody":"bds014-tbody","tr":"bds014-tr","td":"bds014-td"};
775
+ var Table_default = {"wrapper":"bds016-wrapper","table":"bds016-table","caption":"bds016-caption","thead":"bds016-thead","th":"bds016-th","--sortable":"bds016---sortable","sortButton":"bds016-sortButton","sortIcon":"bds016-sortIcon","--sort-active":"bds016---sort-active","--sort-desc":"bds016---sort-desc","tbody":"bds016-tbody","tr":"bds016-tr","td":"bds016-td"};
772
776
 
773
777
  // src/components/ui/Table/Table.tsx
774
778
  var import_design_system_foundation17 = require("@boostdev/design-system-foundation");
@@ -837,7 +841,7 @@ function Table({
837
841
  var import_react4 = require("react");
838
842
 
839
843
  // src/components/ui/Tabs/Tabs.module.css
840
- var Tabs_default = {"tabs":"bds014-tabs","tabList":"bds014-tabList","tab":"bds014-tab","--active":"bds014---active","panel":"bds014-panel"};
844
+ var Tabs_default = {"tabs":"bds016-tabs","tabList":"bds016-tabList","tab":"bds016-tab","--active":"bds016---active","panel":"bds016-panel"};
841
845
 
842
846
  // src/components/ui/Tabs/Tabs.tsx
843
847
  var import_design_system_foundation18 = require("@boostdev/design-system-foundation");
@@ -918,7 +922,7 @@ function Tabs({ tabs, defaultTab, className }) {
918
922
  var import_react5 = require("react");
919
923
 
920
924
  // src/components/ui/Tooltip/Tooltip.module.css
921
- var Tooltip_default = {"wrapper":"bds014-wrapper","tooltip":"bds014-tooltip","--placement_top":"bds014---placement_top","--placement_bottom":"bds014---placement_bottom","--placement_left":"bds014---placement_left","--placement_right":"bds014---placement_right"};
925
+ var Tooltip_default = {"wrapper":"bds016-wrapper","tooltip":"bds016-tooltip","--placement_top":"bds016---placement_top","--placement_bottom":"bds016---placement_bottom","--placement_left":"bds016---placement_left","--placement_right":"bds016---placement_right"};
922
926
 
923
927
  // src/components/ui/Tooltip/Tooltip.tsx
924
928
  var import_design_system_foundation19 = require("@boostdev/design-system-foundation");
@@ -948,7 +952,7 @@ function Tooltip({
948
952
  }
949
953
 
950
954
  // src/components/ui/Typography/Typography.module.css
951
- var Typography_default = {"typography":"bds014-typography","--h1":"bds014---h1","--h2":"bds014---h2","--h3":"bds014---h3","--body":"bds014---body","--body_s":"bds014---body_s"};
955
+ var Typography_default = {"typography":"bds016-typography","--h1":"bds016---h1","--h2":"bds016---h2","--h3":"bds016---h3","--body":"bds016---body","--body_s":"bds016---body_s"};
952
956
 
953
957
  // src/components/ui/Typography/Typography.tsx
954
958
  var import_design_system_foundation20 = require("@boostdev/design-system-foundation");
@@ -966,14 +970,14 @@ function Typography({ variant = "body", component, children, className }) {
966
970
  }
967
971
 
968
972
  // src/components/interaction/Button/Button.module.css
969
- var Button_default = {"button":"bds014-button","--primary":"bds014---primary","--secondary":"bds014---secondary","--size_small":"bds014---size_small","--size_medium":"bds014---size_medium","--size_large":"bds014---size_large","--hasPulse":"bds014---hasPulse","prefix":"bds014-prefix","suffix":"bds014-suffix"};
973
+ var Button_default = {"button":"bds016-button","--primary":"bds016---primary","--secondary":"bds016---secondary","--size_small":"bds016---size_small","--size_medium":"bds016---size_medium","--size_large":"bds016---size_large","--hasPulse":"bds016---hasPulse","prefix":"bds016-prefix","suffix":"bds016-suffix"};
970
974
 
971
975
  // src/components/interaction/Button/Button.tsx
972
976
  var import_design_system_foundation21 = require("@boostdev/design-system-foundation");
973
977
  var import_jsx_runtime22 = require("react/jsx-runtime");
974
978
  function Button({
975
979
  children,
976
- className = "",
980
+ className,
977
981
  variant = "primary",
978
982
  type = "button",
979
983
  iconStart,
@@ -994,22 +998,55 @@ function Button({
994
998
  hasPulse && Button_default["--hasPulse"],
995
999
  className
996
1000
  );
997
- const allChildren = /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
998
- !!iconStart && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: Button_default.prefix, children: iconStart }),
1001
+ const handleAnchorClick = (e) => {
1002
+ if (disabled) {
1003
+ e.preventDefault();
1004
+ return;
1005
+ }
1006
+ onClick?.(e);
1007
+ };
1008
+ const handleButtonClick = (e) => {
1009
+ onClick?.(e);
1010
+ };
1011
+ const content = /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
1012
+ Boolean(iconStart) && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: Button_default.prefix, children: iconStart }),
999
1013
  children,
1000
- !!iconEnd && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: Button_default.suffix, children: iconEnd })
1014
+ Boolean(iconEnd) && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: Button_default.suffix, children: iconEnd })
1001
1015
  ] });
1002
1016
  if (href) {
1003
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("a", { className: classNames, href, target, rel, onClick, ...rest, children: allChildren });
1017
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1018
+ "a",
1019
+ {
1020
+ className: classNames,
1021
+ href: disabled ? void 0 : href,
1022
+ target,
1023
+ rel,
1024
+ "aria-disabled": disabled,
1025
+ tabIndex: disabled ? -1 : void 0,
1026
+ onClick: handleAnchorClick,
1027
+ ...rest,
1028
+ children: content
1029
+ }
1030
+ );
1004
1031
  }
1005
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type, className: classNames, disabled, onClick, ...rest, children: allChildren });
1032
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1033
+ "button",
1034
+ {
1035
+ type,
1036
+ className: classNames,
1037
+ disabled,
1038
+ onClick: handleButtonClick,
1039
+ ...rest,
1040
+ children: content
1041
+ }
1042
+ );
1006
1043
  }
1007
1044
 
1008
1045
  // src/components/interaction/Command/Command.tsx
1009
1046
  var import_react6 = require("react");
1010
1047
 
1011
1048
  // src/components/interaction/Command/Command.module.css
1012
- var Command_default = {"dialog":"bds014-dialog","palette":"bds014-palette","searchRow":"bds014-searchRow","searchIcon":"bds014-searchIcon","search":"bds014-search","escHint":"bds014-escHint","list":"bds014-list","groupList":"bds014-groupList","group":"bds014-group","item":"bds014-item","itemActive":"bds014-itemActive","itemLabel":"bds014-itemLabel","itemDesc":"bds014-itemDesc","shortcut":"bds014-shortcut","empty":"bds014-empty"};
1049
+ var Command_default = {"dialog":"bds016-dialog","palette":"bds016-palette","searchRow":"bds016-searchRow","searchIcon":"bds016-searchIcon","search":"bds016-search","escHint":"bds016-escHint","list":"bds016-list","groupList":"bds016-groupList","group":"bds016-group","item":"bds016-item","itemActive":"bds016-itemActive","itemLabel":"bds016-itemLabel","itemDesc":"bds016-itemDesc","shortcut":"bds016-shortcut","empty":"bds016-empty"};
1013
1050
 
1014
1051
  // src/components/interaction/Command/Command.tsx
1015
1052
  var import_design_system_foundation22 = require("@boostdev/design-system-foundation");
@@ -1148,42 +1185,58 @@ function Command({
1148
1185
  var import_react7 = require("react");
1149
1186
 
1150
1187
  // src/components/interaction/Dialog/Dialog.module.css
1151
- var Dialog_default = {"dialog":"bds014-dialog","closeForm":"bds014-closeForm","closeButton":"bds014-closeButton"};
1188
+ var Dialog_default = {"dialog":"bds016-dialog","dialogContent":"bds016-dialogContent","closeForm":"bds016-closeForm","closeButton":"bds016-closeButton"};
1152
1189
 
1153
1190
  // src/components/interaction/Dialog/Dialog.tsx
1154
1191
  var import_design_system_foundation23 = require("@boostdev/design-system-foundation");
1155
1192
  var import_jsx_runtime24 = require("react/jsx-runtime");
1156
- function Dialog({ children, isVisible = false, className, handleClose }) {
1193
+ function Dialog({ children, isOpen = false, className, onClose }) {
1157
1194
  const dialogRef = (0, import_react7.useRef)(null);
1158
1195
  (0, import_react7.useEffect)(() => {
1159
1196
  const dialog = dialogRef.current;
1160
1197
  if (!dialog) return;
1161
- if (isVisible) {
1198
+ if (isOpen) {
1162
1199
  dialog.showModal();
1163
1200
  } else if (dialog.open) {
1164
1201
  dialog.close();
1165
1202
  }
1166
- }, [isVisible]);
1167
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("dialog", { ref: dialogRef, className: (0, import_design_system_foundation23.cn)(className, Dialog_default.dialog), children: [
1168
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("form", { method: "dialog", className: Dialog_default.closeForm, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1169
- "button",
1170
- {
1171
- type: "submit",
1172
- className: Dialog_default.closeButton,
1173
- onClick: handleClose,
1174
- "aria-label": "Close dialog",
1175
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) })
1176
- }
1177
- ) }),
1178
- children
1179
- ] });
1203
+ }, [isOpen]);
1204
+ const handleBackdropClick = (e) => {
1205
+ if (e.target === dialogRef.current) onClose?.();
1206
+ };
1207
+ const handleCancel = (e) => {
1208
+ e.preventDefault();
1209
+ onClose?.();
1210
+ };
1211
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1212
+ "dialog",
1213
+ {
1214
+ ref: dialogRef,
1215
+ className: (0, import_design_system_foundation23.cn)(className, Dialog_default.dialog),
1216
+ onClick: handleBackdropClick,
1217
+ onCancel: handleCancel,
1218
+ children: [
1219
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("form", { method: "dialog", className: Dialog_default.closeForm, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1220
+ "button",
1221
+ {
1222
+ type: "submit",
1223
+ className: Dialog_default.closeButton,
1224
+ onClick: onClose,
1225
+ "aria-label": "Close dialog",
1226
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) })
1227
+ }
1228
+ ) }),
1229
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: Dialog_default.dialogContent, children })
1230
+ ]
1231
+ }
1232
+ );
1180
1233
  }
1181
1234
 
1182
1235
  // src/components/interaction/Drawer/Drawer.tsx
1183
1236
  var import_react8 = require("react");
1184
1237
 
1185
1238
  // src/components/interaction/Drawer/Drawer.module.css
1186
- var Drawer_default = {"drawer":"bds014-drawer","panel":"bds014-panel","--side_right":"bds014---side_right","--side_left":"bds014---side_left","header":"bds014-header","title":"bds014-title","closeButton":"bds014-closeButton","body":"bds014-body"};
1239
+ var Drawer_default = {"drawer":"bds016-drawer","panel":"bds016-panel","--side_right":"bds016---side_right","--side_left":"bds016---side_left","header":"bds016-header","title":"bds016-title","closeButton":"bds016-closeButton","body":"bds016-body"};
1187
1240
 
1188
1241
  // src/components/interaction/Drawer/Drawer.tsx
1189
1242
  var import_design_system_foundation24 = require("@boostdev/design-system-foundation");
@@ -1245,7 +1298,7 @@ function Drawer({
1245
1298
  var import_react9 = require("react");
1246
1299
 
1247
1300
  // src/components/interaction/DropdownMenu/DropdownMenu.module.css
1248
- var DropdownMenu_default = {"wrapper":"bds014-wrapper","menu":"bds014-menu","--placement_bottom-start":"bds014---placement_bottom-start","--placement_bottom-end":"bds014---placement_bottom-end","separator":"bds014-separator","item":"bds014-item","icon":"bds014-icon"};
1301
+ var DropdownMenu_default = {"wrapper":"bds016-wrapper","menu":"bds016-menu","--placement_bottom-start":"bds016---placement_bottom-start","--placement_bottom-end":"bds016---placement_bottom-end","separator":"bds016-separator","item":"bds016-item","icon":"bds016-icon"};
1249
1302
 
1250
1303
  // src/components/interaction/DropdownMenu/DropdownMenu.tsx
1251
1304
  var import_design_system_foundation25 = require("@boostdev/design-system-foundation");
@@ -1358,7 +1411,7 @@ function DropdownMenu({
1358
1411
  var import_react10 = require("react");
1359
1412
 
1360
1413
  // src/components/interaction/Popover/Popover.module.css
1361
- var Popover_default = {"wrapper":"bds014-wrapper","panel":"bds014-panel","--placement_bottom":"bds014---placement_bottom","--placement_top":"bds014---placement_top","--placement_right":"bds014---placement_right","--placement_left":"bds014---placement_left"};
1414
+ var Popover_default = {"wrapper":"bds016-wrapper","panel":"bds016-panel","--placement_bottom":"bds016---placement_bottom","--placement_top":"bds016---placement_top","--placement_right":"bds016---placement_right","--placement_left":"bds016---placement_left"};
1362
1415
 
1363
1416
  // src/components/interaction/Popover/Popover.tsx
1364
1417
  var import_design_system_foundation26 = require("@boostdev/design-system-foundation");
@@ -1414,7 +1467,7 @@ function Popover({
1414
1467
  }
1415
1468
 
1416
1469
  // src/components/interaction/Rating/Rating.module.css
1417
- var Rating_default = {"rating":"bds014-rating","star":"bds014-star","--filled":"bds014---filled"};
1470
+ var Rating_default = {"rating":"bds016-rating","star":"bds016-star","--filled":"bds016---filled"};
1418
1471
 
1419
1472
  // src/components/interaction/Rating/Rating.tsx
1420
1473
  var import_design_system_foundation27 = require("@boostdev/design-system-foundation");
@@ -1445,7 +1498,7 @@ function Rating({ value, max = 5, className }) {
1445
1498
  var import_react11 = require("react");
1446
1499
 
1447
1500
  // src/components/interaction/Toast/Toast.module.css
1448
- var Toast_default = {"toastContainer":"bds014-toastContainer","toast":"bds014-toast","--variant_success":"bds014---variant_success","--variant_error":"bds014---variant_error","--variant_info":"bds014---variant_info"};
1501
+ var Toast_default = {"toastContainer":"bds016-toastContainer","toast":"bds016-toast","message":"bds016-message","closeButton":"bds016-closeButton"};
1449
1502
 
1450
1503
  // src/components/interaction/Toast/Toast.tsx
1451
1504
  var import_design_system_foundation28 = require("@boostdev/design-system-foundation");
@@ -1478,7 +1531,10 @@ function ToastItem({ toast, onRemove }) {
1478
1531
  const timer = setTimeout(onRemove, 5e3);
1479
1532
  return () => clearTimeout(timer);
1480
1533
  }, [onRemove]);
1481
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: (0, import_design_system_foundation28.cn)(Toast_default.toast, Toast_default[`--variant_${toast.variant}`]), children: toast.message });
1534
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: (0, import_design_system_foundation28.cn)(Toast_default.toast, Toast_default[`--variant_${toast.variant}`]), role: "status", children: [
1535
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: Toast_default.message, children: toast.message }),
1536
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("button", { type: "button", className: Toast_default.closeButton, onClick: onRemove, "aria-label": "Dismiss", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) }) })
1537
+ ] });
1482
1538
  }
1483
1539
  function useToast() {
1484
1540
  const context = (0, import_react11.useContext)(ToastContext);
@@ -1492,20 +1548,20 @@ function useToast() {
1492
1548
  var import_react12 = require("react");
1493
1549
 
1494
1550
  // src/components/interaction/form/Checkbox/Checkbox.module.css
1495
- var Checkbox_default = {"checkboxGroup":"bds014-checkboxGroup","inputWrapper":"bds014-inputWrapper","checkbox":"bds014-checkbox","checkboxError":"bds014-checkboxError"};
1551
+ var Checkbox_default = {"checkboxGroup":"bds016-checkboxGroup","inputWrapper":"bds016-inputWrapper","checkbox":"bds016-checkbox","checkboxError":"bds016-checkboxError"};
1496
1552
 
1497
1553
  // src/components/interaction/form/atoms/Message.module.css
1498
- var Message_default = {"error":"bds014-error","hint":"bds014-hint"};
1554
+ var Message_default = {"error":"bds016-error","hint":"bds016-hint"};
1499
1555
 
1500
1556
  // src/components/interaction/form/atoms/Message.tsx
1501
1557
  var import_jsx_runtime30 = require("react/jsx-runtime");
1502
1558
  var Message = ({ message, type, inputId }) => {
1503
1559
  if (!message) return null;
1504
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("label", { id: inputId + type, htmlFor: inputId, className: Message_default[type], children: message });
1560
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { id: inputId + type, className: Message_default[type], children: message });
1505
1561
  };
1506
1562
 
1507
1563
  // src/components/interaction/form/atoms/Label.module.css
1508
- var Label_default = {"label":"bds014-label"};
1564
+ var Label_default = {"label":"bds016-label"};
1509
1565
 
1510
1566
  // src/components/interaction/form/atoms/Label.tsx
1511
1567
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -1517,7 +1573,7 @@ var Label = ({ label, id }) => {
1517
1573
  var import_design_system_foundation30 = require("@boostdev/design-system-foundation");
1518
1574
 
1519
1575
  // src/components/interaction/form/atoms/InputContainer.module.css
1520
- var InputContainer_default = {"container":"bds014-container"};
1576
+ var InputContainer_default = {"container":"bds016-container"};
1521
1577
 
1522
1578
  // src/components/interaction/form/atoms/InputContainer.tsx
1523
1579
  var import_design_system_foundation29 = require("@boostdev/design-system-foundation");
@@ -1532,17 +1588,18 @@ function Checkbox({ label, name, error, hint, className, ...props }) {
1532
1588
  const id = name + (0, import_react12.useId)();
1533
1589
  const hintId = id + "hint";
1534
1590
  const errorId = id + "error";
1535
- const describedBy = !!error ? errorId : hintId;
1591
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1536
1592
  return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(InputContainer, { className: (0, import_design_system_foundation30.cn)(Checkbox_default.checkboxGroup, className), children: [
1537
1593
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: Checkbox_default.inputWrapper, children: [
1538
1594
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1539
1595
  "input",
1540
1596
  {
1541
1597
  "aria-describedby": describedBy,
1598
+ "aria-invalid": !!error,
1542
1599
  type: "checkbox",
1543
1600
  id,
1544
1601
  name,
1545
- className: `${Checkbox_default.checkbox} ${error ? Checkbox_default.checkboxError : ""}`,
1602
+ className: (0, import_design_system_foundation30.cn)(Checkbox_default.checkbox, error && Checkbox_default.checkboxError),
1546
1603
  ...props
1547
1604
  }
1548
1605
  ),
@@ -1557,7 +1614,7 @@ function Checkbox({ label, name, error, hint, className, ...props }) {
1557
1614
  var import_react13 = require("react");
1558
1615
 
1559
1616
  // src/components/interaction/form/Combobox/Combobox.module.css
1560
- var Combobox_default = {"formGroup":"bds014-formGroup","inputWrapper":"bds014-inputWrapper","input":"bds014-input","inputError":"bds014-inputError","chevron":"bds014-chevron","listbox":"bds014-listbox","option":"bds014-option","--highlighted":"bds014---highlighted","--selected":"bds014---selected","--disabled":"bds014---disabled"};
1617
+ var Combobox_default = {"formGroup":"bds016-formGroup","inputWrapper":"bds016-inputWrapper","input":"bds016-input","inputError":"bds016-inputError","chevron":"bds016-chevron","listbox":"bds016-listbox","option":"bds016-option","--highlighted":"bds016---highlighted","--selected":"bds016---selected","--disabled":"bds016---disabled"};
1561
1618
 
1562
1619
  // src/components/interaction/form/Combobox/Combobox.tsx
1563
1620
  var import_design_system_foundation31 = require("@boostdev/design-system-foundation");
@@ -1569,6 +1626,7 @@ function Combobox({
1569
1626
  placeholder,
1570
1627
  value,
1571
1628
  onChange,
1629
+ disabled = false,
1572
1630
  error,
1573
1631
  hint,
1574
1632
  className
@@ -1577,9 +1635,12 @@ function Combobox({
1577
1635
  const listboxId = id + "listbox";
1578
1636
  const hintId = id + "hint";
1579
1637
  const errorId = id + "error";
1580
- const describedBy = error ? errorId : hintId;
1581
- const selectedOption = options.find((o) => o.value === value);
1638
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1639
+ const selectedOption = (0, import_react13.useMemo)(() => options.find((o) => o.value === value), [options, value]);
1582
1640
  const [inputValue, setInputValue] = (0, import_react13.useState)(selectedOption?.label ?? "");
1641
+ (0, import_react13.useEffect)(() => {
1642
+ setInputValue(selectedOption?.label ?? "");
1643
+ }, [selectedOption]);
1583
1644
  const [isOpen, setIsOpen] = (0, import_react13.useState)(false);
1584
1645
  const [highlightedIndex, setHighlightedIndex] = (0, import_react13.useState)(-1);
1585
1646
  const containerRef = (0, import_react13.useRef)(null);
@@ -1656,6 +1717,7 @@ function Combobox({
1656
1717
  autoComplete: "off",
1657
1718
  placeholder,
1658
1719
  value: inputValue,
1720
+ disabled,
1659
1721
  className: (0, import_design_system_foundation31.cn)(Combobox_default.input, error ? Combobox_default.inputError : void 0),
1660
1722
  onChange: handleInputChange,
1661
1723
  onKeyDown: handleKeyDown,
@@ -1703,7 +1765,7 @@ function Combobox({
1703
1765
  var import_react14 = require("react");
1704
1766
 
1705
1767
  // src/components/interaction/form/FileInput/FileInput.module.css
1706
- var FileInput_default = {"formGroup":"bds014-formGroup","dropZone":"bds014-dropZone","isDragging":"bds014-isDragging","hasError":"bds014-hasError","isDisabled":"bds014-isDisabled","icon":"bds014-icon","prompt":"bds014-prompt","acceptHint":"bds014-acceptHint","hiddenInput":"bds014-hiddenInput"};
1768
+ var FileInput_default = {"formGroup":"bds016-formGroup","dropZone":"bds016-dropZone","isDragging":"bds016-isDragging","hasError":"bds016-hasError","isDisabled":"bds016-isDisabled","icon":"bds016-icon","prompt":"bds016-prompt","acceptHint":"bds016-acceptHint","hiddenInput":"bds016-hiddenInput"};
1707
1769
 
1708
1770
  // src/components/interaction/form/FileInput/FileInput.tsx
1709
1771
  var import_design_system_foundation32 = require("@boostdev/design-system-foundation");
@@ -1722,10 +1784,19 @@ function FileInput({
1722
1784
  const uid = name + (0, import_react14.useId)();
1723
1785
  const hintId = uid + "hint";
1724
1786
  const errorId = uid + "error";
1725
- const describedBy = error ? errorId : hintId;
1787
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1726
1788
  const inputRef = (0, import_react14.useRef)(null);
1727
1789
  const [isDragging, setIsDragging] = (0, import_react14.useState)(false);
1728
1790
  const [fileNames, setFileNames] = (0, import_react14.useState)([]);
1791
+ const isFileAccepted = (file) => {
1792
+ if (!accept) return true;
1793
+ return accept.split(",").some((token) => {
1794
+ const t = token.trim();
1795
+ if (t.startsWith(".")) return file.name.toLowerCase().endsWith(t.toLowerCase());
1796
+ if (t.endsWith("/*")) return file.type.startsWith(t.slice(0, -1));
1797
+ return file.type === t;
1798
+ });
1799
+ };
1729
1800
  const handleFiles = (files) => {
1730
1801
  if (!files) return;
1731
1802
  setFileNames(Array.from(files).map((f) => f.name));
@@ -1736,7 +1807,10 @@ function FileInput({
1736
1807
  e.preventDefault();
1737
1808
  setIsDragging(false);
1738
1809
  if (disabled) return;
1739
- handleFiles(e.dataTransfer.files);
1810
+ const dt = new DataTransfer();
1811
+ Array.from(e.dataTransfer.files).filter(isFileAccepted).forEach((f) => dt.items.add(f));
1812
+ if (inputRef.current) inputRef.current.files = dt.files;
1813
+ handleFiles(dt.files.length > 0 ? dt.files : null);
1740
1814
  };
1741
1815
  const handleDragOver = (e) => {
1742
1816
  e.preventDefault();
@@ -1788,7 +1862,7 @@ function FileInput({
1788
1862
  var import_react15 = require("react");
1789
1863
 
1790
1864
  // src/components/interaction/form/FormInput/FormInput.module.css
1791
- var FormInput_default = {"formGroup":"bds014-formGroup","input":"bds014-input","inputError":"bds014-inputError"};
1865
+ var FormInput_default = {"formGroup":"bds016-formGroup","input":"bds016-input","inputError":"bds016-inputError"};
1792
1866
 
1793
1867
  // src/components/interaction/form/FormInput/FormInput.tsx
1794
1868
  var import_design_system_foundation33 = require("@boostdev/design-system-foundation");
@@ -1805,7 +1879,7 @@ function FormInput({
1805
1879
  const id = name + (0, import_react15.useId)();
1806
1880
  const hintId = id + "hint";
1807
1881
  const errorId = id + "error";
1808
- const describedBy = !!error ? errorId : hintId;
1882
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1809
1883
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(InputContainer, { className: (0, import_design_system_foundation33.cn)(FormInput_default.formGroup, className), children: [
1810
1884
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Label, { id, label }),
1811
1885
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -1816,7 +1890,7 @@ function FormInput({
1816
1890
  "aria-label": ariaLabel,
1817
1891
  id,
1818
1892
  name,
1819
- className: `${FormInput_default.input} ${error ? FormInput_default.inputError : ""}`,
1893
+ className: (0, import_design_system_foundation33.cn)(FormInput_default.input, error && FormInput_default.inputError),
1820
1894
  ...props
1821
1895
  }
1822
1896
  ),
@@ -1829,7 +1903,7 @@ function FormInput({
1829
1903
  var import_react16 = require("react");
1830
1904
 
1831
1905
  // src/components/interaction/form/NumberInput/NumberInput.module.css
1832
- var NumberInput_default = {"formGroup":"bds014-formGroup","inputRow":"bds014-inputRow","input":"bds014-input","inputError":"bds014-inputError","stepper":"bds014-stepper"};
1906
+ var NumberInput_default = {"formGroup":"bds016-formGroup","inputRow":"bds016-inputRow","input":"bds016-input","inputError":"bds016-inputError","stepper":"bds016-stepper"};
1833
1907
 
1834
1908
  // src/components/interaction/form/NumberInput/NumberInput.tsx
1835
1909
  var import_design_system_foundation34 = require("@boostdev/design-system-foundation");
@@ -1851,18 +1925,18 @@ function NumberInput({
1851
1925
  const uid = name + (0, import_react16.useId)();
1852
1926
  const hintId = uid + "hint";
1853
1927
  const errorId = uid + "error";
1854
- const describedBy = error ? errorId : hintId;
1928
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1855
1929
  const inputRef = (0, import_react16.useRef)(null);
1930
+ const isControlled = value !== void 0;
1931
+ const [internalValue, setInternalValue] = (0, import_react16.useState)(defaultValue ?? 0);
1932
+ const currentValue = isControlled ? value : internalValue;
1856
1933
  const clamp = (v) => {
1857
1934
  const withMin = min !== void 0 ? Math.max(min, v) : v;
1858
- const withMax = max !== void 0 ? Math.min(max, withMin) : withMin;
1859
- return withMax;
1935
+ return max !== void 0 ? Math.min(max, withMin) : withMin;
1860
1936
  };
1861
1937
  const adjust = (delta) => {
1862
- if (!inputRef.current) return;
1863
- const current = parseFloat(inputRef.current.value) || 0;
1864
- const next = clamp(current + delta);
1865
- inputRef.current.value = String(next);
1938
+ const next = clamp(currentValue + delta);
1939
+ if (!isControlled) setInternalValue(next);
1866
1940
  onChange?.(next);
1867
1941
  };
1868
1942
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(InputContainer, { className: (0, import_design_system_foundation34.cn)(NumberInput_default.formGroup, className), children: [
@@ -1874,7 +1948,7 @@ function NumberInput({
1874
1948
  type: "button",
1875
1949
  className: NumberInput_default.stepper,
1876
1950
  "aria-label": "Decrease",
1877
- disabled: disabled || min !== void 0 && (value ?? defaultValue ?? 0) <= min,
1951
+ disabled: disabled || min !== void 0 && currentValue <= min,
1878
1952
  onClick: () => adjust(-step),
1879
1953
  tabIndex: -1,
1880
1954
  children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" }) })
@@ -1887,8 +1961,7 @@ function NumberInput({
1887
1961
  id: uid,
1888
1962
  type: "number",
1889
1963
  name,
1890
- defaultValue,
1891
- value,
1964
+ ...isControlled ? { value } : { defaultValue },
1892
1965
  min,
1893
1966
  max,
1894
1967
  step,
@@ -1896,7 +1969,11 @@ function NumberInput({
1896
1969
  "aria-invalid": !!error,
1897
1970
  "aria-describedby": describedBy,
1898
1971
  className: (0, import_design_system_foundation34.cn)(NumberInput_default.input, error ? NumberInput_default.inputError : void 0),
1899
- onChange: (e) => onChange?.(parseFloat(e.target.value))
1972
+ onChange: (e) => {
1973
+ const v = parseFloat(e.target.value);
1974
+ if (!isControlled) setInternalValue(isNaN(v) ? 0 : v);
1975
+ onChange?.(v);
1976
+ }
1900
1977
  }
1901
1978
  ),
1902
1979
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
@@ -1905,7 +1982,7 @@ function NumberInput({
1905
1982
  type: "button",
1906
1983
  className: NumberInput_default.stepper,
1907
1984
  "aria-label": "Increase",
1908
- disabled: disabled || max !== void 0 && (value ?? defaultValue ?? 0) >= max,
1985
+ disabled: disabled || max !== void 0 && currentValue >= max,
1909
1986
  onClick: () => adjust(step),
1910
1987
  tabIndex: -1,
1911
1988
  children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 5v14M5 12h14" }) })
@@ -1921,7 +1998,7 @@ function NumberInput({
1921
1998
  var import_react17 = require("react");
1922
1999
 
1923
2000
  // src/components/interaction/form/Radio/Radio.module.css
1924
- var Radio_default = {"radioGroup":"bds014-radioGroup","inputWrapper":"bds014-inputWrapper","radio":"bds014-radio","radioError":"bds014-radioError"};
2001
+ var Radio_default = {"radioGroup":"bds016-radioGroup","inputWrapper":"bds016-inputWrapper","radio":"bds016-radio","radioError":"bds016-radioError"};
1925
2002
 
1926
2003
  // src/components/interaction/form/Radio/Radio.tsx
1927
2004
  var import_design_system_foundation35 = require("@boostdev/design-system-foundation");
@@ -1930,17 +2007,18 @@ function Radio({ label, name, error, hint, className, ...props }) {
1930
2007
  const id = name + (0, import_react17.useId)();
1931
2008
  const hintId = id + "hint";
1932
2009
  const errorId = id + "error";
1933
- const describedBy = !!error ? errorId : hintId;
2010
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1934
2011
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(InputContainer, { className: (0, import_design_system_foundation35.cn)(Radio_default.radioGroup, className), children: [
1935
2012
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: Radio_default.inputWrapper, children: [
1936
2013
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1937
2014
  "input",
1938
2015
  {
1939
2016
  "aria-describedby": describedBy,
2017
+ "aria-invalid": !!error,
1940
2018
  type: "radio",
1941
2019
  id,
1942
2020
  name,
1943
- className: `${Radio_default.radio} ${error ? Radio_default.radioError : ""}`,
2021
+ className: (0, import_design_system_foundation35.cn)(Radio_default.radio, error && Radio_default.radioError),
1944
2022
  ...props
1945
2023
  }
1946
2024
  ),
@@ -1955,7 +2033,7 @@ function Radio({ label, name, error, hint, className, ...props }) {
1955
2033
  var import_react18 = require("react");
1956
2034
 
1957
2035
  // src/components/interaction/form/Select/Select.module.css
1958
- var Select_default = {"formGroup":"bds014-formGroup","selectWrapper":"bds014-selectWrapper","select":"bds014-select","selectError":"bds014-selectError","chevron":"bds014-chevron"};
2036
+ var Select_default = {"formGroup":"bds016-formGroup","selectWrapper":"bds016-selectWrapper","select":"bds016-select","selectError":"bds016-selectError","chevron":"bds016-chevron"};
1959
2037
 
1960
2038
  // src/components/interaction/form/Select/Select.tsx
1961
2039
  var import_design_system_foundation36 = require("@boostdev/design-system-foundation");
@@ -1973,7 +2051,7 @@ function Select({
1973
2051
  const id = name + (0, import_react18.useId)();
1974
2052
  const hintId = id + "hint";
1975
2053
  const errorId = id + "error";
1976
- const describedBy = error ? errorId : hintId;
2054
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
1977
2055
  return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(InputContainer, { className: (0, import_design_system_foundation36.cn)(Select_default.formGroup, className), children: [
1978
2056
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Label, { id, label }),
1979
2057
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: Select_default.selectWrapper, children: [
@@ -1987,7 +2065,7 @@ function Select({
1987
2065
  className: (0, import_design_system_foundation36.cn)(Select_default.select, error ? Select_default.selectError : void 0),
1988
2066
  ...props,
1989
2067
  children: [
1990
- placeholder && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("option", { value: "", disabled: true, children: placeholder }),
2068
+ placeholder && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("option", { value: "", disabled: true, hidden: true, children: placeholder }),
1991
2069
  options.map(({ value, label: optLabel, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("option", { value, disabled, children: optLabel }, value))
1992
2070
  ]
1993
2071
  }
@@ -2003,7 +2081,7 @@ function Select({
2003
2081
  var import_react19 = require("react");
2004
2082
 
2005
2083
  // src/components/interaction/form/Slider/Slider.module.css
2006
- var Slider_default = {"formGroup":"bds014-formGroup","labelRow":"bds014-labelRow","value":"bds014-value","slider":"bds014-slider","sliderError":"bds014-sliderError"};
2084
+ var Slider_default = {"formGroup":"bds016-formGroup","labelRow":"bds016-labelRow","value":"bds016-value","slider":"bds016-slider","sliderError":"bds016-sliderError"};
2007
2085
 
2008
2086
  // src/components/interaction/form/Slider/Slider.tsx
2009
2087
  var import_design_system_foundation37 = require("@boostdev/design-system-foundation");
@@ -2023,12 +2101,13 @@ function Slider({
2023
2101
  const id = name + (0, import_react19.useId)();
2024
2102
  const hintId = id + "hint";
2025
2103
  const errorId = id + "error";
2026
- const describedBy = error ? errorId : hintId;
2027
- const initialValue = Number(props.value ?? props.defaultValue ?? min);
2028
- const [currentValue, setCurrentValue] = (0, import_react19.useState)(initialValue);
2104
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2105
+ const isControlled = props.value !== void 0;
2106
+ const [internalValue, setInternalValue] = (0, import_react19.useState)(Number(props.defaultValue ?? min));
2107
+ const currentValue = isControlled ? Number(props.value) : internalValue;
2029
2108
  const fillPct = (currentValue - min) / (max - min) * 100;
2030
2109
  const handleChange = (e) => {
2031
- setCurrentValue(Number(e.target.value));
2110
+ if (!isControlled) setInternalValue(Number(e.target.value));
2032
2111
  onChange?.(e);
2033
2112
  };
2034
2113
  return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(InputContainer, { className: (0, import_design_system_foundation37.cn)(Slider_default.formGroup, className), children: [
@@ -2063,7 +2142,7 @@ function Slider({
2063
2142
  var import_react20 = require("react");
2064
2143
 
2065
2144
  // src/components/interaction/form/Switch/Switch.module.css
2066
- var Switch_default = {"switchGroup":"bds014-switchGroup","--size_small":"bds014---size_small","--size_medium":"bds014---size_medium","--size_large":"bds014---size_large","inputWrapper":"bds014-inputWrapper","trackWrapper":"bds014-trackWrapper","switch":"bds014-switch","track":"bds014-track","thumb":"bds014-thumb","switchError":"bds014-switchError"};
2145
+ var Switch_default = {"switchGroup":"bds016-switchGroup","--size_small":"bds016---size_small","--size_medium":"bds016---size_medium","--size_large":"bds016---size_large","inputWrapper":"bds016-inputWrapper","trackWrapper":"bds016-trackWrapper","switch":"bds016-switch","track":"bds016-track","thumb":"bds016-thumb","switchError":"bds016-switchError"};
2067
2146
 
2068
2147
  // src/components/interaction/form/Switch/Switch.tsx
2069
2148
  var import_design_system_foundation38 = require("@boostdev/design-system-foundation");
@@ -2080,7 +2159,7 @@ function Switch({
2080
2159
  const id = name + (0, import_react20.useId)();
2081
2160
  const hintId = id + "hint";
2082
2161
  const errorId = id + "error";
2083
- const describedBy = error ? errorId : hintId;
2162
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2084
2163
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(InputContainer, { className: (0, import_design_system_foundation38.cn)(Switch_default.switchGroup, Switch_default[`--size_${size}`], className), children: [
2085
2164
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: Switch_default.inputWrapper, children: [
2086
2165
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: Switch_default.trackWrapper, children: [
@@ -2109,7 +2188,7 @@ function Switch({
2109
2188
  var import_react21 = require("react");
2110
2189
 
2111
2190
  // src/components/interaction/form/Textarea/Textarea.module.css
2112
- var Textarea_default = {"formGroup":"bds014-formGroup","textarea":"bds014-textarea","textareaError":"bds014-textareaError"};
2191
+ var Textarea_default = {"formGroup":"bds016-formGroup","textarea":"bds016-textarea","textareaError":"bds016-textareaError"};
2113
2192
 
2114
2193
  // src/components/interaction/form/Textarea/Textarea.tsx
2115
2194
  var import_design_system_foundation39 = require("@boostdev/design-system-foundation");
@@ -2125,7 +2204,7 @@ function Textarea({
2125
2204
  const id = name + (0, import_react21.useId)();
2126
2205
  const hintId = id + "hint";
2127
2206
  const errorId = id + "error";
2128
- const describedBy = error ? errorId : hintId;
2207
+ const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
2129
2208
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(InputContainer, { className: (0, import_design_system_foundation39.cn)(Textarea_default.formGroup, className), children: [
2130
2209
  /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Label, { id, label }),
2131
2210
  /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
@@ -2145,17 +2224,17 @@ function Textarea({
2145
2224
  }
2146
2225
 
2147
2226
  // src/components/layout/ButtonGroup/ButtonGroup.module.css
2148
- var ButtonGroup_default = {"buttonGroup":"bds014-buttonGroup","container":"bds014-container","--variant__card":"bds014---variant__card","--variant__flow":"bds014---variant__flow","--variant__modal":"bds014---variant__modal","--variant__content":"bds014---variant__content","--variant__grid":"bds014---variant__grid"};
2227
+ var ButtonGroup_default = {"buttonGroup":"bds016-buttonGroup","container":"bds016-container","--variant__card":"bds016---variant__card","--variant__flow":"bds016---variant__flow","--variant__modal":"bds016---variant__modal","--variant__content":"bds016---variant__content","--variant__grid":"bds016---variant__grid"};
2149
2228
 
2150
2229
  // src/components/layout/ButtonGroup/ButtonGroup.tsx
2151
2230
  var import_design_system_foundation40 = require("@boostdev/design-system-foundation");
2152
2231
  var import_jsx_runtime43 = require("react/jsx-runtime");
2153
2232
  function ButtonGroup({ children, className, variant }) {
2154
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: (0, import_design_system_foundation40.cn)(ButtonGroup_default.buttonGroup, className, variant && ButtonGroup_default[`--variant__${variant}`]), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: ButtonGroup_default.container, children }) });
2233
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: (0, import_design_system_foundation40.cn)(ButtonGroup_default.buttonGroup, className, variant && ButtonGroup_default[`--variant_${variant}`]), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: ButtonGroup_default.container, children }) });
2155
2234
  }
2156
2235
 
2157
2236
  // src/components/layout/Card/Card.module.css
2158
- var Card_default = {"card":"bds014-card","--default":"bds014---default","--elevated":"bds014---elevated","--outlined":"bds014---outlined","--clickable":"bds014---clickable","--padding-none":"bds014---padding-none","--padding-small":"bds014---padding-small","--padding-medium":"bds014---padding-medium","--padding-large":"bds014---padding-large","--text-start":"bds014---text-start","--text-center":"bds014---text-center","--text-end":"bds014---text-end"};
2237
+ var Card_default = {"card":"bds016-card","--default":"bds016---default","--elevated":"bds016---elevated","--outlined":"bds016---outlined","--clickable":"bds016---clickable","--padding-none":"bds016---padding-none","--padding-small":"bds016---padding-small","--padding-medium":"bds016---padding-medium","--padding-large":"bds016---padding-large","--text-start":"bds016---text-start","--text-center":"bds016---text-center","--text-end":"bds016---text-end"};
2159
2238
 
2160
2239
  // src/components/layout/Card/Card.tsx
2161
2240
  var import_design_system_foundation41 = require("@boostdev/design-system-foundation");
@@ -2167,7 +2246,8 @@ function Card({
2167
2246
  padding = "medium",
2168
2247
  textAlign = "start",
2169
2248
  style,
2170
- onClick
2249
+ onClick,
2250
+ "aria-label": ariaLabel
2171
2251
  }) {
2172
2252
  const classNames = (0, import_design_system_foundation41.cn)(
2173
2253
  Card_default.card,
@@ -2184,6 +2264,7 @@ function Card({
2184
2264
  className: classNames,
2185
2265
  onClick,
2186
2266
  style,
2267
+ "aria-label": ariaLabel,
2187
2268
  ...onClick && { type: "button" },
2188
2269
  children
2189
2270
  }
@@ -2191,7 +2272,7 @@ function Card({
2191
2272
  }
2192
2273
 
2193
2274
  // src/components/layout/SectionHeader/SectionHeader.module.css
2194
- var SectionHeader_default = {"sectionHeader":"bds014-sectionHeader","title":"bds014-title","subtitle":"bds014-subtitle","--start":"bds014---start","--center":"bds014---center","--end":"bds014---end","--small":"bds014---small","--medium":"bds014---medium","--large":"bds014---large"};
2275
+ var SectionHeader_default = {"sectionHeader":"bds016-sectionHeader","title":"bds016-title","subtitle":"bds016-subtitle","--start":"bds016---start","--center":"bds016---center","--end":"bds016---end","--small":"bds016---small","--medium":"bds016---medium","--large":"bds016---large"};
2195
2276
 
2196
2277
  // src/components/layout/SectionHeader/SectionHeader.tsx
2197
2278
  var import_design_system_foundation42 = require("@boostdev/design-system-foundation");
@@ -2212,7 +2293,7 @@ function SectionHeader({
2212
2293
  }
2213
2294
 
2214
2295
  // src/components/layout/IconWrapper/IconWrapper.module.css
2215
- var IconWrapper_default = {"wrapper":"bds014-wrapper"};
2296
+ var IconWrapper_default = {"wrapper":"bds016-wrapper"};
2216
2297
 
2217
2298
  // src/components/layout/IconWrapper/IconWrapper.tsx
2218
2299
  var import_design_system_foundation43 = require("@boostdev/design-system-foundation");