@boostdev/design-system-components 2.7.0 → 2.8.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 (87) hide show
  1. package/AGENTS.md +102 -2
  2. package/dist/client.cjs +52 -52
  3. package/dist/client.css +548 -548
  4. package/dist/client.js +52 -52
  5. package/dist/index.cjs +52 -52
  6. package/dist/index.css +548 -548
  7. package/dist/index.js +52 -52
  8. package/dist/web-components/{chunk-T6AETZRP.js → chunk-3GFWLSLS.js} +1 -1
  9. package/dist/web-components/{chunk-N6IMUOY4.js → chunk-65JXQOBA.js} +3 -3
  10. package/dist/web-components/{chunk-7FMR53BW.js → chunk-7YURXHTS.js} +35 -15
  11. package/dist/web-components/{chunk-5TFWOPLH.js → chunk-A3RLT3AS.js} +3 -3
  12. package/dist/web-components/{chunk-X3FKVHLK.js → chunk-ARMKC4BQ.js} +2 -2
  13. package/dist/web-components/{chunk-ZTC6GRP7.js → chunk-BKIHQYJR.js} +1 -0
  14. package/dist/web-components/{chunk-EBJM3VD4.js → chunk-DZOEPVFT.js} +2 -2
  15. package/dist/web-components/{chunk-57TRNCWQ.js → chunk-FSZRP43R.js} +1 -1
  16. package/dist/web-components/{chunk-UFFCKVZE.js → chunk-FXURM6D5.js} +1 -1
  17. package/dist/web-components/{chunk-HHHRF2PS.js → chunk-JYYRJS2D.js} +3 -3
  18. package/dist/web-components/{chunk-OCODKRVZ.js → chunk-KUI55GFB.js} +2 -2
  19. package/dist/web-components/{chunk-ZNKEZIYE.js → chunk-NCPQ7AF3.js} +3 -2
  20. package/dist/web-components/chunk-OF6FFGOT.js +167 -0
  21. package/dist/web-components/{chunk-GER5UJOF.js → chunk-ORC56MDY.js} +6 -8
  22. package/dist/web-components/{chunk-RTOS7LLG.js → chunk-PC3IOQAH.js} +3 -8
  23. package/dist/web-components/{chunk-JUKB3BUP.js → chunk-PXZWYO6Z.js} +1 -1
  24. package/dist/web-components/{chunk-5R6IFELV.js → chunk-QLT6MTZF.js} +1 -1
  25. package/dist/web-components/{chunk-ECW3HHWA.js → chunk-TQ7IQ4GZ.js} +7 -2
  26. package/dist/web-components/{chunk-QLZ2362S.js → chunk-UUKSDCYS.js} +2 -2
  27. package/dist/web-components/{chunk-ITHLKR7Q.js → chunk-X3NQMBAQ.js} +2 -2
  28. package/dist/web-components/{chunk-AJSXNDAP.js → chunk-X46KL5BK.js} +19 -18
  29. package/dist/web-components/{chunk-HGBNDR22.js → chunk-Y7V7LM6R.js} +1 -1
  30. package/dist/web-components/index.js +35 -31
  31. package/dist/web-components/interaction/bds-accordion-item.js +1 -1
  32. package/dist/web-components/interaction/bds-accordion.js +1 -1
  33. package/dist/web-components/interaction/bds-button.js +1 -1
  34. package/dist/web-components/interaction/bds-dialog.js +1 -1
  35. package/dist/web-components/interaction/bds-drawer.js +1 -1
  36. package/dist/web-components/interaction/bds-popover.js +1 -1
  37. package/dist/web-components/interaction/bds-tooltip.js +1 -1
  38. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  39. package/dist/web-components/interaction/form/bds-combobox.js +1 -1
  40. package/dist/web-components/interaction/form/bds-number-input.js +1 -1
  41. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  42. package/dist/web-components/interaction/form/bds-select.js +1 -1
  43. package/dist/web-components/interaction/form/bds-slider.js +1 -1
  44. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  45. package/dist/web-components/interaction/form/bds-textarea.js +1 -1
  46. package/dist/web-components/ui/bds-alert.js +1 -1
  47. package/dist/web-components/ui/bds-avatar.js +1 -1
  48. package/dist/web-components/ui/bds-card.d.ts +3 -9
  49. package/dist/web-components/ui/bds-card.js +1 -1
  50. package/dist/web-components/ui/bds-icon-wrapper.js +1 -1
  51. package/dist/web-components/ui/bds-loading.js +1 -1
  52. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  53. package/dist/web-components/ui/bds-progress.js +1 -1
  54. package/package.json +2 -1
  55. package/src/components/layout/IconWrapper/IconWrapper.module.css +2 -2
  56. package/src/test/token-contract.spec.ts +86 -0
  57. package/src/web-components/interaction/bds-accordion-item.ts +1 -1
  58. package/src/web-components/interaction/bds-accordion.ts +1 -0
  59. package/src/web-components/interaction/bds-button.ts +6 -8
  60. package/src/web-components/interaction/bds-dialog.ts +3 -3
  61. package/src/web-components/interaction/bds-drawer.ts +2 -2
  62. package/src/web-components/interaction/bds-popover.ts +7 -2
  63. package/src/web-components/interaction/bds-tooltip.ts +1 -1
  64. package/src/web-components/interaction/form/bds-checkbox.ts +1 -1
  65. package/src/web-components/interaction/form/bds-combobox.ts +2 -2
  66. package/src/web-components/interaction/form/bds-form-input.ts +1 -1
  67. package/src/web-components/interaction/form/bds-number-input.ts +1 -1
  68. package/src/web-components/interaction/form/bds-radio.ts +3 -3
  69. package/src/web-components/interaction/form/bds-select.ts +2 -2
  70. package/src/web-components/interaction/form/bds-slider.ts +35 -15
  71. package/src/web-components/interaction/form/bds-switch.ts +73 -39
  72. package/src/web-components/interaction/form/bds-textarea.ts +2 -2
  73. package/src/web-components/ui/BdsCard.mdx +4 -3
  74. package/src/web-components/ui/BdsCard.stories.tsx +7 -11
  75. package/src/web-components/ui/BdsSkeleton.stories.tsx +4 -4
  76. package/src/web-components/ui/bds-alert.ts +3 -2
  77. package/src/web-components/ui/bds-avatar.ts +1 -1
  78. package/src/web-components/ui/bds-card.spec.ts +3 -5
  79. package/src/web-components/ui/bds-card.ts +5 -12
  80. package/src/web-components/ui/bds-carousel.ts +7 -7
  81. package/src/web-components/ui/bds-icon-wrapper.ts +3 -3
  82. package/src/web-components/ui/bds-loading.ts +1 -1
  83. package/src/web-components/ui/bds-notification-banner.ts +19 -18
  84. package/src/web-components/ui/bds-pagination.ts +1 -1
  85. package/src/web-components/ui/bds-progress.ts +2 -2
  86. package/src/web-components/ui/bds-table.ts +4 -0
  87. package/dist/web-components/chunk-XNA6WTXG.js +0 -133
@@ -1,39 +1,39 @@
1
1
  import {
2
2
  BdsSwitch
3
- } from "./chunk-XNA6WTXG.js";
3
+ } from "./chunk-OF6FFGOT.js";
4
4
  import {
5
5
  BdsTextarea
6
- } from "./chunk-EBJM3VD4.js";
6
+ } from "./chunk-DZOEPVFT.js";
7
7
  import {
8
8
  BdsCheckbox
9
- } from "./chunk-T6AETZRP.js";
9
+ } from "./chunk-3GFWLSLS.js";
10
10
  import {
11
11
  BdsCombobox
12
- } from "./chunk-QLZ2362S.js";
12
+ } from "./chunk-UUKSDCYS.js";
13
13
  import {
14
14
  BdsFileInput
15
15
  } from "./chunk-PY62FTRW.js";
16
16
  import {
17
17
  BdsNumberInput
18
- } from "./chunk-JUKB3BUP.js";
18
+ } from "./chunk-PXZWYO6Z.js";
19
19
  import {
20
20
  BdsRadio
21
- } from "./chunk-HHHRF2PS.js";
21
+ } from "./chunk-JYYRJS2D.js";
22
22
  import {
23
23
  BdsSegmentedControl
24
24
  } from "./chunk-2FGATTGT.js";
25
25
  import {
26
26
  BdsSelect
27
- } from "./chunk-X3FKVHLK.js";
27
+ } from "./chunk-ARMKC4BQ.js";
28
28
  import {
29
29
  BdsSlider
30
- } from "./chunk-7FMR53BW.js";
30
+ } from "./chunk-7YURXHTS.js";
31
31
  import {
32
32
  BdsDrawer
33
- } from "./chunk-OCODKRVZ.js";
33
+ } from "./chunk-KUI55GFB.js";
34
34
  import {
35
35
  BdsPopover
36
- } from "./chunk-ECW3HHWA.js";
36
+ } from "./chunk-TQ7IQ4GZ.js";
37
37
  import {
38
38
  BdsSkipLink
39
39
  } from "./chunk-BQLZ7I4G.js";
@@ -51,7 +51,7 @@ import {
51
51
  } from "./chunk-YLVTEY23.js";
52
52
  import {
53
53
  BdsTooltip
54
- } from "./chunk-HGBNDR22.js";
54
+ } from "./chunk-Y7V7LM6R.js";
55
55
  import {
56
56
  BdsSeparator
57
57
  } from "./chunk-VMMVWLXL.js";
@@ -63,34 +63,34 @@ import {
63
63
  } from "./chunk-SOQQ7RVJ.js";
64
64
  import {
65
65
  BdsAccordion
66
- } from "./chunk-ZTC6GRP7.js";
66
+ } from "./chunk-BKIHQYJR.js";
67
67
  import {
68
68
  BdsAccordionItem
69
- } from "./chunk-UFFCKVZE.js";
69
+ } from "./chunk-FXURM6D5.js";
70
70
  import {
71
71
  BdsButton
72
- } from "./chunk-GER5UJOF.js";
72
+ } from "./chunk-ORC56MDY.js";
73
73
  import {
74
74
  BdsCollapsible
75
75
  } from "./chunk-6I2DBFQ7.js";
76
76
  import {
77
77
  BdsDialog
78
- } from "./chunk-N6IMUOY4.js";
78
+ } from "./chunk-65JXQOBA.js";
79
79
  import {
80
80
  BdsIconWrapper
81
- } from "./chunk-5TFWOPLH.js";
81
+ } from "./chunk-A3RLT3AS.js";
82
82
  import {
83
83
  BdsLink
84
84
  } from "./chunk-CR5PGUHV.js";
85
85
  import {
86
86
  BdsLoading
87
- } from "./chunk-5R6IFELV.js";
87
+ } from "./chunk-QLT6MTZF.js";
88
88
  import {
89
89
  BdsNotificationBanner
90
- } from "./chunk-AJSXNDAP.js";
90
+ } from "./chunk-X46KL5BK.js";
91
91
  import {
92
92
  BdsProgress
93
- } from "./chunk-ITHLKR7Q.js";
93
+ } from "./chunk-X3NQMBAQ.js";
94
94
  import {
95
95
  BdsProgressCircle
96
96
  } from "./chunk-QDST57JC.js";
@@ -104,10 +104,10 @@ import "./chunk-QPOKHLMQ.js";
104
104
  import "./chunk-3S42DZ7W.js";
105
105
  import {
106
106
  BdsAlert
107
- } from "./chunk-ZNKEZIYE.js";
107
+ } from "./chunk-NCPQ7AF3.js";
108
108
  import {
109
109
  BdsAvatar
110
- } from "./chunk-57TRNCWQ.js";
110
+ } from "./chunk-FSZRP43R.js";
111
111
  import {
112
112
  BdsBadge
113
113
  } from "./chunk-QWPACK5L.js";
@@ -116,7 +116,7 @@ import {
116
116
  } from "./chunk-Q4T5BJT6.js";
117
117
  import {
118
118
  BdsCard
119
- } from "./chunk-RTOS7LLG.js";
119
+ } from "./chunk-PC3IOQAH.js";
120
120
  import {
121
121
  BdsDescriptionList
122
122
  } from "./chunk-AGKJTMJI.js";
@@ -622,6 +622,10 @@ var BdsTable = class extends i2 {
622
622
  .wrapper {
623
623
  overflow-inline: auto;
624
624
  -webkit-overflow-scrolling: touch;
625
+ border: var(--table_border, none);
626
+ border-radius: var(--table_radius, var(--bds-border_radius--s));
627
+ --bdc_color: var(--bds-color_bg--subtle);
628
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
625
629
  }
626
630
 
627
631
  ::slotted(table) {
@@ -724,7 +728,7 @@ var BdsPagination = class extends i2 {
724
728
  cursor: pointer;
725
729
  color: var(--bds-color_on-bg);
726
730
  transition: var(--bds-animation_transition);
727
- --bdc_color: transparent;
731
+ --bdc_color: var(--pagination_border-color, transparent);
728
732
  --bdc-outline_radius: var(--bds-border_radius--xs);
729
733
  box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--bdc-outline_shadow);
730
734
  }
@@ -1153,7 +1157,7 @@ var BdsFormInput = class extends i2 {
1153
1157
  position: relative;
1154
1158
  display: flex;
1155
1159
  align-items: center;
1156
- --bdc_color: currentcolor;
1160
+ --bdc_color: var(--formInput_border-color, currentcolor);
1157
1161
  --bdc-outline_radius: var(--bds-border_radius--xs);
1158
1162
 
1159
1163
  border-radius: var(--formInput_radius, var(--bdc-outline_radius));
@@ -1372,8 +1376,8 @@ var BdsCarousel = class extends i2 {
1372
1376
  inline-size: 2.5rem;
1373
1377
  block-size: 2.5rem;
1374
1378
  border: none;
1375
- border-radius: var(--bds-border_radius--full, 9999px);
1376
- background-color: var(--bds-color_bg--subtle);
1379
+ border-radius: var(--carousel_navBtn-radius, var(--bds-border_radius--circle));
1380
+ background-color: var(--carousel_navBtn-bg, var(--bds-color_bg--subtle));
1377
1381
  color: var(--bds-color_on-bg);
1378
1382
  cursor: pointer;
1379
1383
  transition: var(--bds-animation_transition);
@@ -1386,7 +1390,7 @@ var BdsCarousel = class extends i2 {
1386
1390
 
1387
1391
  @media (hover: hover) and (pointer: fine) {
1388
1392
  .nav-btn:hover {
1389
- background-color: var(--bds-color_bg--strong);
1393
+ background-color: var(--carousel_navBtn-bg--hover, var(--bds-color_bg--strong));
1390
1394
  }
1391
1395
  }
1392
1396
 
@@ -1411,18 +1415,18 @@ var BdsCarousel = class extends i2 {
1411
1415
  .dot {
1412
1416
  inline-size: 0.5rem;
1413
1417
  block-size: 0.5rem;
1414
- border-radius: 50%;
1418
+ border-radius: var(--carousel_indicator-radius, var(--bds-border_radius--circle));
1415
1419
  border: none;
1416
1420
  padding: 0;
1417
- background-color: var(--bds-color_bg--strong);
1421
+ background-color: var(--carousel_indicator-bg, var(--bds-color_bg--strong));
1418
1422
  cursor: pointer;
1419
1423
  transition: var(--bds-animation_transition);
1420
1424
  }
1421
1425
 
1422
1426
  .dot.--active {
1423
- background-color: var(--bds-color_interactive);
1427
+ background-color: var(--carousel_indicator-bg--active, var(--bds-color_interactive));
1424
1428
  inline-size: 1rem;
1425
- border-radius: 0.25rem;
1429
+ border-radius: var(--carousel_indicator-radius--active, var(--bds-border_radius--full));
1426
1430
  }
1427
1431
 
1428
1432
  .dot:focus-visible {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsAccordionItem
3
- } from "../chunk-UFFCKVZE.js";
3
+ } from "../chunk-FXURM6D5.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsAccordionItem
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsAccordion
3
- } from "../chunk-ZTC6GRP7.js";
3
+ } from "../chunk-BKIHQYJR.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsAccordion
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsButton
3
- } from "../chunk-GER5UJOF.js";
3
+ } from "../chunk-ORC56MDY.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsButton
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsDialog
3
- } from "../chunk-N6IMUOY4.js";
3
+ } from "../chunk-65JXQOBA.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsDialog
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsDrawer
3
- } from "../chunk-OCODKRVZ.js";
3
+ } from "../chunk-KUI55GFB.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsDrawer
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsPopover
3
- } from "../chunk-ECW3HHWA.js";
3
+ } from "../chunk-TQ7IQ4GZ.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsPopover
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsTooltip
3
- } from "../chunk-HGBNDR22.js";
3
+ } from "../chunk-Y7V7LM6R.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsTooltip
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsCheckbox
3
- } from "../../chunk-T6AETZRP.js";
3
+ } from "../../chunk-3GFWLSLS.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsCheckbox
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsCombobox
3
- } from "../../chunk-QLZ2362S.js";
3
+ } from "../../chunk-UUKSDCYS.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsCombobox
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsNumberInput
3
- } from "../../chunk-JUKB3BUP.js";
3
+ } from "../../chunk-PXZWYO6Z.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsNumberInput
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsRadio
3
- } from "../../chunk-HHHRF2PS.js";
3
+ } from "../../chunk-JYYRJS2D.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsRadio
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsSelect
3
- } from "../../chunk-X3FKVHLK.js";
3
+ } from "../../chunk-ARMKC4BQ.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsSelect
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsSlider
3
- } from "../../chunk-7FMR53BW.js";
3
+ } from "../../chunk-7YURXHTS.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsSlider
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsSwitch
3
- } from "../../chunk-XNA6WTXG.js";
3
+ } from "../../chunk-OF6FFGOT.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsSwitch
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsTextarea
3
- } from "../../chunk-EBJM3VD4.js";
3
+ } from "../../chunk-DZOEPVFT.js";
4
4
  import "../../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsTextarea
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsAlert
3
- } from "../chunk-ZNKEZIYE.js";
3
+ } from "../chunk-NCPQ7AF3.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsAlert
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsAvatar
3
- } from "../chunk-57TRNCWQ.js";
3
+ } from "../chunk-FSZRP43R.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsAvatar
@@ -2,14 +2,13 @@ import * as lit from 'lit';
2
2
  import { LitElement } from 'lit';
3
3
 
4
4
  type CardVariant = 'default' | 'elevated' | 'outlined';
5
- type CardPadding = 'none' | 'small' | 'medium' | 'large';
6
5
  type CardTextAlign = 'start' | 'center' | 'end';
7
6
  /**
8
7
  * `<bds-card>` — framework-agnostic Card layout custom element.
9
8
  *
10
9
  * Attributes:
11
10
  * variant — "default" (default) | "elevated" | "outlined"
12
- * padding "none" | "small" | "medium" (default) | "large"
11
+ * --card_padding CSS custom property to override padding (default: var(--bds-space_m))
13
12
  * text-align — "start" (default) | "center" | "end"
14
13
  * clickable — boolean; renders as a <button> with hover/active effects
15
14
  * aria-label — accessible label (useful when clickable)
@@ -21,7 +20,7 @@ type CardTextAlign = 'start' | 'center' | 'end';
21
20
  * bds-click — fired (bubbles, composed) when the card button is clicked
22
21
  *
23
22
  * @example
24
- * <bds-card variant="elevated" padding="large">
23
+ * <bds-card variant="elevated" style="--card_padding: var(--bds-space_l)">
25
24
  * <p>Card content</p>
26
25
  * </bds-card>
27
26
  *
@@ -36,10 +35,6 @@ declare class BdsCard extends LitElement {
36
35
  type: StringConstructor;
37
36
  reflect: boolean;
38
37
  };
39
- padding: {
40
- type: StringConstructor;
41
- reflect: boolean;
42
- };
43
38
  textAlign: {
44
39
  type: StringConstructor;
45
40
  attribute: string;
@@ -55,7 +50,6 @@ declare class BdsCard extends LitElement {
55
50
  };
56
51
  };
57
52
  variant: CardVariant;
58
- padding: CardPadding;
59
53
  textAlign: CardTextAlign;
60
54
  clickable: boolean;
61
55
  ariaLabel: string;
@@ -69,4 +63,4 @@ declare global {
69
63
  }
70
64
  }
71
65
 
72
- export { BdsCard, type CardPadding, type CardTextAlign, type CardVariant };
66
+ export { BdsCard, type CardTextAlign, type CardVariant };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsCard
3
- } from "../chunk-RTOS7LLG.js";
3
+ } from "../chunk-PC3IOQAH.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsCard
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsIconWrapper
3
- } from "../chunk-5TFWOPLH.js";
3
+ } from "../chunk-A3RLT3AS.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsIconWrapper
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsLoading
3
- } from "../chunk-5R6IFELV.js";
3
+ } from "../chunk-QLT6MTZF.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsLoading
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsNotificationBanner
3
- } from "../chunk-AJSXNDAP.js";
3
+ } from "../chunk-X46KL5BK.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsNotificationBanner
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BdsProgress
3
- } from "../chunk-ITHLKR7Q.js";
3
+ } from "../chunk-X3NQMBAQ.js";
4
4
  import "../chunk-LGEZYFUU.js";
5
5
  export {
6
6
  BdsProgress
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boostdev/design-system-components",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "BoostDev React component library: accessible, token-driven components built on @boostdev/design-system-foundation",
5
5
  "keywords": [
6
6
  "React",
@@ -306,6 +306,7 @@
306
306
  "storybook-addon-tag-badges": "^1.4.0",
307
307
  "stylelint": "^16",
308
308
  "stylelint-config-standard": "^37",
309
+ "stylelint-declaration-strict-value": "^1.11.1",
309
310
  "tsup": "^8",
310
311
  "tsx": "^4",
311
312
  "typescript": "^5.8",
@@ -9,8 +9,8 @@
9
9
  justify-content: center;
10
10
  margin: var(--bds-space_l) auto var(--bds-space_m);
11
11
  background: var(--icon-wrapper-color, var(--bds-color_bg));
12
- color: var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg));
13
- fill: var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg));
12
+ color: var(--icon-wrapper_on-color, var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg)));
13
+ fill: var(--icon-wrapper_on-color, var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg)));
14
14
  position: relative;
15
15
  transition: var(--bds-animation_transition);
16
16
  }
@@ -0,0 +1,86 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { readdirSync, readFileSync, statSync } from 'node:fs';
3
+ import { join, relative } from 'node:path';
4
+ import { extractFoundationRefs, extractTokens } from '../../mcp/extract.ts';
5
+
6
+ function collectFiles(dir: string, ext: string): string[] {
7
+ const results: string[] = [];
8
+ for (const entry of readdirSync(dir)) {
9
+ const full = join(dir, entry);
10
+ if (statSync(full).isDirectory()) {
11
+ results.push(...collectFiles(full, ext));
12
+ } else if (full.endsWith(ext)) {
13
+ results.push(full);
14
+ }
15
+ }
16
+ return results;
17
+ }
18
+
19
+ function loadDeclaredTokens(): Set<string> {
20
+ const tokensDir = join(__dirname, '../../node_modules/@boostdev/design-system-foundation/src/tokens');
21
+ const propertiesFile = join(tokensDir, 'properties.css');
22
+ const declared = new Set<string>();
23
+
24
+ for (const file of collectFiles(tokensDir, '.css')) {
25
+ const css = readFileSync(file, 'utf-8');
26
+ for (const token of extractTokens(css, 'all')) {
27
+ declared.add(token.name);
28
+ }
29
+ }
30
+
31
+ // @property declarations aren't captured by extractTokens — parse them separately
32
+ if (statSync(propertiesFile).isFile()) {
33
+ const css = readFileSync(propertiesFile, 'utf-8');
34
+ for (const [, name] of css.matchAll(/@property\s+(--bds-[\w-]+)/g)) {
35
+ declared.add(name);
36
+ }
37
+ }
38
+
39
+ // Also include deprecated aliases (they resolve to real tokens)
40
+ const deprecatedFile = join(tokensDir, 'deprecated.css');
41
+ const deprecatedCss = readFileSync(deprecatedFile, 'utf-8');
42
+ for (const [, name] of deprecatedCss.matchAll(/^\s*(--bds-[\w-]+)\s*:/gm)) {
43
+ declared.add(name);
44
+ }
45
+
46
+ return declared;
47
+ }
48
+
49
+ // Component-local tokens that were incorrectly given the --bds-* prefix.
50
+ // Kept as deprecated fallbacks for backwards compatibility — remove in next major.
51
+ const DEPRECATED_BDS_ALIASES = new Set([
52
+ '--bds-on-icon-wrapper-color',
53
+ ]);
54
+
55
+ describe('token contract', () => {
56
+ const declared = loadDeclaredTokens();
57
+ const srcRoot = join(__dirname, '../');
58
+ const componentCssFiles = collectFiles(join(srcRoot, 'components'), '.module.css');
59
+ const bdcFile = join(srcRoot, 'css/bdc.css');
60
+
61
+ it('has a non-empty set of declared foundation tokens', () => {
62
+ expect(declared.size).toBeGreaterThan(50);
63
+ });
64
+
65
+ it('resolves every var(--bds-*) reference in component CSS to a declared token', () => {
66
+ const undeclared: { file: string; token: string }[] = [];
67
+
68
+ for (const file of [...componentCssFiles, bdcFile]) {
69
+ const css = readFileSync(file, 'utf-8');
70
+ for (const ref of extractFoundationRefs(css)) {
71
+ if (!declared.has(ref) && !DEPRECATED_BDS_ALIASES.has(ref)) {
72
+ undeclared.push({ file: relative(srcRoot, file), token: ref });
73
+ }
74
+ }
75
+ }
76
+
77
+ if (undeclared.length > 0) {
78
+ const report = undeclared
79
+ .map(({ file, token }) => ` ${token} in ${file}`)
80
+ .join('\n');
81
+ expect.fail(
82
+ `Found ${undeclared.length} reference(s) to undeclared foundation tokens:\n${report}`,
83
+ );
84
+ }
85
+ });
86
+ });
@@ -69,7 +69,7 @@ export class BdsAccordionItem extends LitElement {
69
69
 
70
70
  @media (hover: hover) and (pointer: fine) {
71
71
  .trigger:not(:disabled):hover {
72
- background-color: var(--bds-color_bg--subtle);
72
+ background-color: var(--accordion_trigger-bg--hover, var(--bds-color_bg--subtle));
73
73
  }
74
74
  }
75
75
 
@@ -26,6 +26,7 @@ export class BdsAccordion extends LitElement {
26
26
  static styles = css`
27
27
  :host {
28
28
  display: block;
29
+ border: var(--accordion_border, none);
29
30
  --bdc_color: var(--bds-color_bg--subtle);
30
31
  --bdc-outline_radius: var(--bds-border_radius--s);
31
32
  border-radius: var(--accordion_radius, var(--bdc-outline_radius));
@@ -56,14 +56,15 @@ export class BdsButton extends LitElement {
56
56
  padding-inline: var(--bds-space_l);
57
57
  display: inline-flex;
58
58
  gap: var(--bds-space_xs);
59
- border-radius: var(--button_border_radius--s, var(--bds-border_radius--s));
59
+ border-radius: var(--button_radius, var(--bds-border_radius--full));
60
60
  align-items: center;
61
61
  cursor: pointer;
62
62
  justify-content: center;
63
- height: var(--button_height, 3em);
63
+ block-size: var(--button_height, 3em);
64
64
  font-size: var(--button_font-size, inherit);
65
65
  white-space: nowrap;
66
66
  line-height: 1;
67
+ scroll-padding-block-end: var(--bds-space_l);
67
68
 
68
69
  /* Identity tokens — override --button_color + --button_on-color to re-theme */
69
70
  --button_color: var(--bds-color_interactive);
@@ -102,7 +103,6 @@ export class BdsButton extends LitElement {
102
103
  .button.small {
103
104
  --button_height: 2.25em;
104
105
  --button_font-size: var(--bds-font_size--body--s);
105
- --button_border_radius--s: var(--bds-border_radius--xs);
106
106
  padding-inline: var(--bds-space_m);
107
107
  }
108
108
 
@@ -113,7 +113,6 @@ export class BdsButton extends LitElement {
113
113
 
114
114
  .button.large {
115
115
  --button_font-size: var(--bds-font_size--heading-3);
116
- --button_border_radius--s: var(--bds-border_radius--m);
117
116
  padding-inline: var(--bds-space_xl);
118
117
  }
119
118
 
@@ -131,7 +130,7 @@ export class BdsButton extends LitElement {
131
130
  .button.is-icon-only {
132
131
  aspect-ratio: 1;
133
132
  box-sizing: border-box;
134
- padding: var(--bds-space_xs);
133
+ padding: var(--bds-space_xxs);
135
134
  }
136
135
 
137
136
  :host([is-icon-only]) ::slotted(*) {
@@ -182,9 +181,9 @@ export class BdsButton extends LitElement {
182
181
  /* Default hover */
183
182
  .button.default:hover {
184
183
  --button_bg--variant: var(--button_bg--hover, var(--bds-color_bg));
185
- --button_text--variant: var(--button_text--hover, var(--bds-color_interactive));
184
+ --button_text--variant: var(--button_text--hover, var(--bds-color_interactive_on-bg));
186
185
  --button_border--variant: var(--button_border--hover, currentcolor);
187
- --button_pulse-color: var(--button_pulse-color--hover, var(--bds-color_interactive));
186
+ --button_pulse-color: var(--button_pulse-color--hover, var(--bds-color_interactive_on-bg));
188
187
  }
189
188
 
190
189
  /* Outline hover */
@@ -200,7 +199,6 @@ export class BdsButton extends LitElement {
200
199
  .button:focus-visible {
201
200
  outline: var(--bds-outline_default);
202
201
  outline-offset: var(--bds-outline_offset);
203
- border-radius: var(--bds-border_radius--s);
204
202
  }
205
203
 
206
204
  /* Disabled */
@@ -34,7 +34,7 @@ export class BdsDialog extends LitElement {
34
34
  .dialog {
35
35
  font-size: var(--bds-font_size--body--s);
36
36
  border: var(--dialog_border, none);
37
- --bdc_color: currentcolor;
37
+ --bdc_color: var(--dialog_border-color, currentcolor);
38
38
  --bdc-outline_radius: var(--bds-border_radius--m);
39
39
 
40
40
  border-radius: var(--dialog_radius, var(--bdc-outline_radius));
@@ -66,11 +66,11 @@ export class BdsDialog extends LitElement {
66
66
  display: flex;
67
67
  align-items: center;
68
68
  justify-content: center;
69
- border-radius: 50%;
69
+ border-radius: var(--dialog_close-radius, var(--bds-border_radius--circle));
70
70
  background-color: var(--bds-color_bg);
71
71
  color: currentcolor;
72
72
  border: var(--dialog_close-border, none);
73
- --bdc_color: currentcolor;
73
+ --bdc_color: var(--dialog_close-border-color, currentcolor);
74
74
 
75
75
  box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
76
76
  cursor: pointer;