@boostdev/design-system-components 2.6.0 → 2.7.1
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 +257 -219
- package/dist/client.css +587 -539
- package/dist/client.d.cts +27 -1
- package/dist/client.d.ts +27 -1
- package/dist/client.js +220 -183
- package/dist/index.cjs +257 -219
- package/dist/index.css +587 -539
- package/dist/index.d.cts +27 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.js +220 -183
- 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-ZTC6GRP7.js → chunk-BKIHQYJR.js} +1 -0
- package/dist/web-components/{chunk-X3FKVHLK.js → chunk-CM3KYZ6Z.js} +1 -1
- package/dist/web-components/{chunk-QLZ2362S.js → chunk-CZBIVR4V.js} +1 -1
- package/dist/web-components/{chunk-GER5UJOF.js → chunk-F5E3IT7G.js} +1 -3
- package/dist/web-components/{chunk-UFFCKVZE.js → chunk-FXURM6D5.js} +1 -1
- package/dist/web-components/{chunk-HHHRF2PS.js → chunk-IYGF6CD5.js} +1 -1
- 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-RTOS7LLG.js → chunk-PC3IOQAH.js} +3 -8
- package/dist/web-components/{chunk-JUKB3BUP.js → chunk-PXZWYO6Z.js} +1 -1
- package/dist/web-components/{chunk-EBJM3VD4.js → chunk-QBB6ZX4R.js} +1 -1
- package/dist/web-components/{chunk-ECW3HHWA.js → chunk-TQ7IQ4GZ.js} +7 -2
- package/dist/web-components/{chunk-AJSXNDAP.js → chunk-X46KL5BK.js} +19 -18
- package/dist/web-components/{chunk-XNA6WTXG.js → chunk-Y3POAKGS.js} +1 -1
- package/dist/web-components/{chunk-HGBNDR22.js → chunk-Y7V7LM6R.js} +1 -1
- package/dist/web-components/index.d.ts +56 -1
- package/dist/web-components/index.js +140 -19
- 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-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-card.d.ts +3 -9
- package/dist/web-components/ui/bds-card.js +1 -1
- package/dist/web-components/ui/bds-notification-banner.js +1 -1
- package/package.json +4 -2
- package/src/components/interaction/form/FieldGroup/FieldGroup.mdx +113 -0
- package/src/components/interaction/form/FieldGroup/FieldGroup.module.css +96 -0
- package/src/components/interaction/form/FieldGroup/FieldGroup.spec.tsx +196 -0
- package/src/components/interaction/form/FieldGroup/FieldGroup.stories.tsx +99 -0
- package/src/components/interaction/form/FieldGroup/FieldGroup.tsx +64 -0
- package/src/components/interaction/form/FieldGroup/index.ts +2 -0
- package/src/components/interaction/form/atoms/Message.module.css +4 -0
- package/src/components/layout/IconWrapper/IconWrapper.module.css +2 -2
- package/src/index.ts +2 -0
- package/src/test/token-contract.spec.ts +86 -0
- package/src/web-components/index.ts +2 -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 +1 -3
- 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/BdsFieldGroup.mdx +67 -0
- package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +110 -0
- package/src/web-components/interaction/form/bds-checkbox-group.ts +1 -0
- package/src/web-components/interaction/form/bds-checkbox.ts +1 -1
- package/src/web-components/interaction/form/bds-combobox.ts +1 -1
- package/src/web-components/interaction/form/bds-field-group.spec.ts +64 -0
- package/src/web-components/interaction/form/bds-field-group.ts +157 -0
- package/src/web-components/interaction/form/bds-form-input.ts +2 -1
- package/src/web-components/interaction/form/bds-number-input.ts +1 -1
- package/src/web-components/interaction/form/bds-radio-group.ts +1 -0
- package/src/web-components/interaction/form/bds-radio.ts +1 -1
- package/src/web-components/interaction/form/bds-select.ts +1 -1
- package/src/web-components/interaction/form/bds-switch.ts +1 -1
- package/src/web-components/interaction/form/bds-textarea.ts +1 -1
- 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-card.spec.ts +3 -5
- package/src/web-components/ui/bds-card.ts +5 -12
- 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-table.ts +4 -0
|
@@ -6,10 +6,9 @@ describe('bds-card', () => {
|
|
|
6
6
|
expect(customElements.get('bds-card')).toBe(BdsCard);
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
it('defaults to variant="default",
|
|
9
|
+
it('defaults to variant="default", text-align="start"', async () => {
|
|
10
10
|
const el = await fixture('<bds-card>Content</bds-card>') as BdsCard;
|
|
11
11
|
expect(el.getAttribute('variant')).toBe('default');
|
|
12
|
-
expect(el.getAttribute('padding')).toBe('medium');
|
|
13
12
|
expect(el.getAttribute('text-align')).toBe('start');
|
|
14
13
|
cleanup(el);
|
|
15
14
|
});
|
|
@@ -45,11 +44,10 @@ describe('bds-card', () => {
|
|
|
45
44
|
cleanup(el);
|
|
46
45
|
});
|
|
47
46
|
|
|
48
|
-
it('applies variant
|
|
49
|
-
const el = await fixture('<bds-card variant="elevated"
|
|
47
|
+
it('applies variant and text-align classes to the card element', async () => {
|
|
48
|
+
const el = await fixture('<bds-card variant="elevated" text-align="center">Content</bds-card>');
|
|
50
49
|
const card = el.shadowRoot!.querySelector('.card')!;
|
|
51
50
|
expect(card.classList.contains('--elevated')).toBe(true);
|
|
52
|
-
expect(card.classList.contains('--padding-large')).toBe(true);
|
|
53
51
|
expect(card.classList.contains('--text-center')).toBe(true);
|
|
54
52
|
cleanup(el);
|
|
55
53
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LitElement, css, html, nothing } from 'lit';
|
|
2
2
|
|
|
3
3
|
export type CardVariant = 'default' | 'elevated' | 'outlined';
|
|
4
|
-
export type CardPadding = 'none' | 'small' | 'medium' | 'large';
|
|
5
4
|
export type CardTextAlign = 'start' | 'center' | 'end';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -9,7 +8,7 @@ export type CardTextAlign = 'start' | 'center' | 'end';
|
|
|
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 @@ export 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
|
*
|
|
@@ -43,9 +42,11 @@ export class BdsCard extends LitElement {
|
|
|
43
42
|
position: relative;
|
|
44
43
|
box-sizing: border-box;
|
|
45
44
|
inline-size: 100%;
|
|
45
|
+
block-size: 100%;
|
|
46
46
|
text-align: inherit;
|
|
47
47
|
font: inherit;
|
|
48
48
|
border: none;
|
|
49
|
+
padding: var(--card_padding, var(--bds-space_m));
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
/* Resting shadows — consumers can override per-variant via
|
|
@@ -54,15 +55,11 @@ export class BdsCard extends LitElement {
|
|
|
54
55
|
.card.--elevated { box-shadow: var(--card_shadow--elevated, var(--bds-shadow_m)); }
|
|
55
56
|
|
|
56
57
|
.card.--outlined {
|
|
58
|
+
border: var(--card_border, none);
|
|
57
59
|
--bdc_color: currentcolor;
|
|
58
60
|
box-shadow: var(--card_shadow--outlined, inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--bds-shadow_s));
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
.card.--padding-none { padding: 0; }
|
|
62
|
-
.card.--padding-small { padding: var(--bds-space_s); }
|
|
63
|
-
.card.--padding-medium { padding: var(--bds-space_m); }
|
|
64
|
-
.card.--padding-large { padding: var(--bds-space_l); }
|
|
65
|
-
|
|
66
63
|
.card.--text-start { text-align: start; }
|
|
67
64
|
.card.--text-center { text-align: center; }
|
|
68
65
|
.card.--text-end { text-align: end; }
|
|
@@ -96,14 +93,12 @@ export class BdsCard extends LitElement {
|
|
|
96
93
|
|
|
97
94
|
static properties = {
|
|
98
95
|
variant: { type: String, reflect: true },
|
|
99
|
-
padding: { type: String, reflect: true },
|
|
100
96
|
textAlign: { type: String, attribute: 'text-align', reflect: true },
|
|
101
97
|
clickable: { type: Boolean, reflect: true },
|
|
102
98
|
ariaLabel: { type: String, attribute: 'aria-label' },
|
|
103
99
|
};
|
|
104
100
|
|
|
105
101
|
declare variant: CardVariant;
|
|
106
|
-
declare padding: CardPadding;
|
|
107
102
|
declare textAlign: CardTextAlign;
|
|
108
103
|
declare clickable: boolean;
|
|
109
104
|
declare ariaLabel: string;
|
|
@@ -111,7 +106,6 @@ export class BdsCard extends LitElement {
|
|
|
111
106
|
constructor() {
|
|
112
107
|
super();
|
|
113
108
|
this.variant = 'default';
|
|
114
|
-
this.padding = 'medium';
|
|
115
109
|
this.textAlign = 'start';
|
|
116
110
|
this.clickable = false;
|
|
117
111
|
this.ariaLabel = '';
|
|
@@ -125,7 +119,6 @@ export class BdsCard extends LitElement {
|
|
|
125
119
|
const classes = [
|
|
126
120
|
'card',
|
|
127
121
|
`--${this.variant}`,
|
|
128
|
-
`--padding-${this.padding}`,
|
|
129
122
|
`--text-${this.textAlign}`,
|
|
130
123
|
this.clickable ? '--clickable' : '',
|
|
131
124
|
].filter(Boolean).join(' ');
|
|
@@ -34,9 +34,9 @@ export class BdsNotificationBanner extends LitElement {
|
|
|
34
34
|
align-items: center;
|
|
35
35
|
gap: var(--bds-space_m);
|
|
36
36
|
padding: var(--bds-space_s) var(--bds-space_m);
|
|
37
|
-
background-color: var(--banner_bg, var(--bds-color_blue--subtle));
|
|
38
|
-
color: var(--banner_text, var(--bds-color_on-blue--subtle));
|
|
39
|
-
border-block-end: 3px solid var(--banner_border, var(--bds-color_blue));
|
|
37
|
+
background-color: var(--banner_bg, var(--banner_bg--variant, var(--bds-color_blue--subtle)));
|
|
38
|
+
color: var(--banner_text, var(--banner_text--variant, var(--bds-color_on-blue--subtle)));
|
|
39
|
+
border-block-end: 3px solid var(--banner_border, var(--banner_border--variant, var(--bds-color_blue)));
|
|
40
40
|
font-size: var(--bds-font_size--body);
|
|
41
41
|
line-height: var(--bds-font_line-height--body);
|
|
42
42
|
inline-size: 100%;
|
|
@@ -44,27 +44,27 @@ export class BdsNotificationBanner extends LitElement {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
:host([variant='info']) .banner {
|
|
47
|
-
--banner_bg: var(--bds-color_blue--subtle);
|
|
48
|
-
--banner_text: var(--bds-color_on-blue--subtle);
|
|
49
|
-
--banner_border: var(--bds-color_blue);
|
|
47
|
+
--banner_bg--variant: var(--banner_bg--info, var(--bds-color_blue--subtle));
|
|
48
|
+
--banner_text--variant: var(--banner_text--info, var(--bds-color_on-blue--subtle));
|
|
49
|
+
--banner_border--variant: var(--banner_border--info, var(--bds-color_blue));
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
:host([variant='success']) .banner {
|
|
53
|
-
--banner_bg: var(--bds-color_success--subtle);
|
|
54
|
-
--banner_text: var(--bds-color_on-success--subtle);
|
|
55
|
-
--banner_border: var(--bds-color_success);
|
|
53
|
+
--banner_bg--variant: var(--banner_bg--success, var(--bds-color_success--subtle));
|
|
54
|
+
--banner_text--variant: var(--banner_text--success, var(--bds-color_on-success--subtle));
|
|
55
|
+
--banner_border--variant: var(--banner_border--success, var(--bds-color_success));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
:host([variant='warning']) .banner {
|
|
59
|
-
--banner_bg: var(--bds-color_orange--subtle);
|
|
60
|
-
--banner_text: var(--bds-color_on-orange--subtle);
|
|
61
|
-
--banner_border: var(--bds-color_warning);
|
|
59
|
+
--banner_bg--variant: var(--banner_bg--warning, var(--bds-color_orange--subtle));
|
|
60
|
+
--banner_text--variant: var(--banner_text--warning, var(--bds-color_on-orange--subtle));
|
|
61
|
+
--banner_border--variant: var(--banner_border--warning, var(--bds-color_warning));
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
:host([variant='error']) .banner {
|
|
65
|
-
--banner_bg: rgb(from var(--bds-color_error) r g b / 12%);
|
|
66
|
-
--banner_text: var(--bds-color_on-bg);
|
|
67
|
-
--banner_border: var(--bds-color_error);
|
|
65
|
+
--banner_bg--variant: var(--banner_bg--error, rgb(from var(--bds-color_error) r g b / 12%));
|
|
66
|
+
--banner_text--variant: var(--banner_text--error, var(--bds-color_on-bg));
|
|
67
|
+
--banner_border--variant: var(--banner_border--error, var(--bds-color_error));
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.content {
|
|
@@ -88,9 +88,10 @@ export class BdsNotificationBanner extends LitElement {
|
|
|
88
88
|
flex-shrink: 0;
|
|
89
89
|
cursor: pointer;
|
|
90
90
|
color: currentcolor;
|
|
91
|
-
border-radius:
|
|
91
|
+
border-radius: var(--banner_dismiss-radius, var(--bds-border_radius--circle));
|
|
92
|
+
border: var(--banner_dismiss-border, none);
|
|
92
93
|
transition: var(--bds-animation_transition);
|
|
93
|
-
--bdc_color: currentcolor;
|
|
94
|
+
--bdc_color: var(--notification-banner_dismiss-border-color, currentcolor);
|
|
94
95
|
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
|
|
95
96
|
}
|
|
96
97
|
|
|
@@ -106,7 +107,7 @@ export class BdsNotificationBanner extends LitElement {
|
|
|
106
107
|
|
|
107
108
|
@media (hover: hover) and (pointer: fine) {
|
|
108
109
|
.dismiss:hover {
|
|
109
|
-
opacity: 0.7;
|
|
110
|
+
opacity: var(--banner_dismiss-opacity--hover, 0.7);
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
`;
|
|
@@ -65,7 +65,7 @@ export class BdsPagination extends LitElement {
|
|
|
65
65
|
cursor: pointer;
|
|
66
66
|
color: var(--bds-color_on-bg);
|
|
67
67
|
transition: var(--bds-animation_transition);
|
|
68
|
-
--bdc_color: transparent;
|
|
68
|
+
--bdc_color: var(--pagination_border-color, transparent);
|
|
69
69
|
--bdc-outline_radius: var(--bds-border_radius--xs);
|
|
70
70
|
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--bdc-outline_shadow);
|
|
71
71
|
}
|
|
@@ -29,6 +29,10 @@ export class BdsTable extends LitElement {
|
|
|
29
29
|
.wrapper {
|
|
30
30
|
overflow-inline: auto;
|
|
31
31
|
-webkit-overflow-scrolling: touch;
|
|
32
|
+
border: var(--table_border, none);
|
|
33
|
+
border-radius: var(--table_radius, var(--bds-border_radius--s));
|
|
34
|
+
--bdc_color: var(--bds-color_bg--subtle);
|
|
35
|
+
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
::slotted(table) {
|