@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.
- package/AGENTS.md +102 -2
- package/dist/client.cjs +52 -52
- package/dist/client.css +548 -548
- package/dist/client.js +52 -52
- package/dist/index.cjs +52 -52
- package/dist/index.css +548 -548
- package/dist/index.js +52 -52
- package/dist/web-components/{chunk-T6AETZRP.js → chunk-3GFWLSLS.js} +1 -1
- package/dist/web-components/{chunk-N6IMUOY4.js → chunk-65JXQOBA.js} +3 -3
- package/dist/web-components/{chunk-7FMR53BW.js → chunk-7YURXHTS.js} +35 -15
- package/dist/web-components/{chunk-5TFWOPLH.js → chunk-A3RLT3AS.js} +3 -3
- package/dist/web-components/{chunk-X3FKVHLK.js → chunk-ARMKC4BQ.js} +2 -2
- package/dist/web-components/{chunk-ZTC6GRP7.js → chunk-BKIHQYJR.js} +1 -0
- package/dist/web-components/{chunk-EBJM3VD4.js → chunk-DZOEPVFT.js} +2 -2
- package/dist/web-components/{chunk-57TRNCWQ.js → chunk-FSZRP43R.js} +1 -1
- package/dist/web-components/{chunk-UFFCKVZE.js → chunk-FXURM6D5.js} +1 -1
- package/dist/web-components/{chunk-HHHRF2PS.js → chunk-JYYRJS2D.js} +3 -3
- package/dist/web-components/{chunk-OCODKRVZ.js → chunk-KUI55GFB.js} +2 -2
- package/dist/web-components/{chunk-ZNKEZIYE.js → chunk-NCPQ7AF3.js} +3 -2
- package/dist/web-components/chunk-OF6FFGOT.js +167 -0
- package/dist/web-components/{chunk-GER5UJOF.js → chunk-ORC56MDY.js} +6 -8
- package/dist/web-components/{chunk-RTOS7LLG.js → chunk-PC3IOQAH.js} +3 -8
- package/dist/web-components/{chunk-JUKB3BUP.js → chunk-PXZWYO6Z.js} +1 -1
- package/dist/web-components/{chunk-5R6IFELV.js → chunk-QLT6MTZF.js} +1 -1
- package/dist/web-components/{chunk-ECW3HHWA.js → chunk-TQ7IQ4GZ.js} +7 -2
- package/dist/web-components/{chunk-QLZ2362S.js → chunk-UUKSDCYS.js} +2 -2
- package/dist/web-components/{chunk-ITHLKR7Q.js → chunk-X3NQMBAQ.js} +2 -2
- package/dist/web-components/{chunk-AJSXNDAP.js → chunk-X46KL5BK.js} +19 -18
- package/dist/web-components/{chunk-HGBNDR22.js → chunk-Y7V7LM6R.js} +1 -1
- package/dist/web-components/index.js +35 -31
- package/dist/web-components/interaction/bds-accordion-item.js +1 -1
- package/dist/web-components/interaction/bds-accordion.js +1 -1
- package/dist/web-components/interaction/bds-button.js +1 -1
- package/dist/web-components/interaction/bds-dialog.js +1 -1
- package/dist/web-components/interaction/bds-drawer.js +1 -1
- package/dist/web-components/interaction/bds-popover.js +1 -1
- package/dist/web-components/interaction/bds-tooltip.js +1 -1
- package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
- package/dist/web-components/interaction/form/bds-combobox.js +1 -1
- package/dist/web-components/interaction/form/bds-number-input.js +1 -1
- package/dist/web-components/interaction/form/bds-radio.js +1 -1
- package/dist/web-components/interaction/form/bds-select.js +1 -1
- package/dist/web-components/interaction/form/bds-slider.js +1 -1
- package/dist/web-components/interaction/form/bds-switch.js +1 -1
- package/dist/web-components/interaction/form/bds-textarea.js +1 -1
- package/dist/web-components/ui/bds-alert.js +1 -1
- package/dist/web-components/ui/bds-avatar.js +1 -1
- package/dist/web-components/ui/bds-card.d.ts +3 -9
- package/dist/web-components/ui/bds-card.js +1 -1
- package/dist/web-components/ui/bds-icon-wrapper.js +1 -1
- package/dist/web-components/ui/bds-loading.js +1 -1
- package/dist/web-components/ui/bds-notification-banner.js +1 -1
- package/dist/web-components/ui/bds-progress.js +1 -1
- package/package.json +2 -1
- package/src/components/layout/IconWrapper/IconWrapper.module.css +2 -2
- package/src/test/token-contract.spec.ts +86 -0
- package/src/web-components/interaction/bds-accordion-item.ts +1 -1
- package/src/web-components/interaction/bds-accordion.ts +1 -0
- package/src/web-components/interaction/bds-button.ts +6 -8
- package/src/web-components/interaction/bds-dialog.ts +3 -3
- package/src/web-components/interaction/bds-drawer.ts +2 -2
- package/src/web-components/interaction/bds-popover.ts +7 -2
- package/src/web-components/interaction/bds-tooltip.ts +1 -1
- package/src/web-components/interaction/form/bds-checkbox.ts +1 -1
- package/src/web-components/interaction/form/bds-combobox.ts +2 -2
- package/src/web-components/interaction/form/bds-form-input.ts +1 -1
- package/src/web-components/interaction/form/bds-number-input.ts +1 -1
- package/src/web-components/interaction/form/bds-radio.ts +3 -3
- package/src/web-components/interaction/form/bds-select.ts +2 -2
- package/src/web-components/interaction/form/bds-slider.ts +35 -15
- package/src/web-components/interaction/form/bds-switch.ts +73 -39
- package/src/web-components/interaction/form/bds-textarea.ts +2 -2
- package/src/web-components/ui/BdsCard.mdx +4 -3
- package/src/web-components/ui/BdsCard.stories.tsx +7 -11
- package/src/web-components/ui/BdsSkeleton.stories.tsx +4 -4
- package/src/web-components/ui/bds-alert.ts +3 -2
- package/src/web-components/ui/bds-avatar.ts +1 -1
- package/src/web-components/ui/bds-card.spec.ts +3 -5
- package/src/web-components/ui/bds-card.ts +5 -12
- package/src/web-components/ui/bds-carousel.ts +7 -7
- package/src/web-components/ui/bds-icon-wrapper.ts +3 -3
- package/src/web-components/ui/bds-loading.ts +1 -1
- package/src/web-components/ui/bds-notification-banner.ts +19 -18
- package/src/web-components/ui/bds-pagination.ts +1 -1
- package/src/web-components/ui/bds-progress.ts +2 -2
- package/src/web-components/ui/bds-table.ts +4 -0
- package/dist/web-components/chunk-XNA6WTXG.js +0 -133
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BdsSwitch
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OF6FFGOT.js";
|
|
4
4
|
import {
|
|
5
5
|
BdsTextarea
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DZOEPVFT.js";
|
|
7
7
|
import {
|
|
8
8
|
BdsCheckbox
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3GFWLSLS.js";
|
|
10
10
|
import {
|
|
11
11
|
BdsCombobox
|
|
12
|
-
} from "./chunk-
|
|
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-
|
|
18
|
+
} from "./chunk-PXZWYO6Z.js";
|
|
19
19
|
import {
|
|
20
20
|
BdsRadio
|
|
21
|
-
} from "./chunk-
|
|
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-
|
|
27
|
+
} from "./chunk-ARMKC4BQ.js";
|
|
28
28
|
import {
|
|
29
29
|
BdsSlider
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-7YURXHTS.js";
|
|
31
31
|
import {
|
|
32
32
|
BdsDrawer
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-KUI55GFB.js";
|
|
34
34
|
import {
|
|
35
35
|
BdsPopover
|
|
36
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
66
|
+
} from "./chunk-BKIHQYJR.js";
|
|
67
67
|
import {
|
|
68
68
|
BdsAccordionItem
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-FXURM6D5.js";
|
|
70
70
|
import {
|
|
71
71
|
BdsButton
|
|
72
|
-
} from "./chunk-
|
|
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-
|
|
78
|
+
} from "./chunk-65JXQOBA.js";
|
|
79
79
|
import {
|
|
80
80
|
BdsIconWrapper
|
|
81
|
-
} from "./chunk-
|
|
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-
|
|
87
|
+
} from "./chunk-QLT6MTZF.js";
|
|
88
88
|
import {
|
|
89
89
|
BdsNotificationBanner
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-X46KL5BK.js";
|
|
91
91
|
import {
|
|
92
92
|
BdsProgress
|
|
93
|
-
} from "./chunk-
|
|
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-
|
|
107
|
+
} from "./chunk-NCPQ7AF3.js";
|
|
108
108
|
import {
|
|
109
109
|
BdsAvatar
|
|
110
|
-
} from "./chunk-
|
|
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-
|
|
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--
|
|
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:
|
|
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:
|
|
1429
|
+
border-radius: var(--carousel_indicator-radius--active, var(--bds-border_radius--full));
|
|
1426
1430
|
}
|
|
1427
1431
|
|
|
1428
1432
|
.dot:focus-visible {
|
|
@@ -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
|
-
*
|
|
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"
|
|
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
|
|
66
|
+
export { BdsCard, type CardTextAlign, type CardVariant };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boostdev/design-system-components",
|
|
3
|
-
"version": "2.
|
|
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(--
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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:
|
|
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;
|