@boostdev/design-system-components 1.2.5 → 1.2.7
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 +25 -6
- package/dist/client.cjs +60 -54
- package/dist/client.css +553 -540
- package/dist/client.d.cts +7 -5
- package/dist/client.d.ts +7 -5
- package/dist/client.js +60 -54
- package/dist/index.cjs +60 -54
- package/dist/index.css +553 -540
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +60 -54
- package/package.json +1 -1
- package/src/components/interaction/Button/Button.mdx +11 -3
- package/src/components/interaction/Button/Button.module.css +5 -5
- package/src/components/interaction/Command/Command.mdx +1 -0
- package/src/components/interaction/Command/Command.module.css +1 -1
- package/src/components/interaction/Drawer/Drawer.mdx +2 -0
- package/src/components/interaction/Drawer/Drawer.module.css +1 -1
- package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +19 -0
- package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +2 -2
- package/src/components/interaction/Rating/Rating.mdx +14 -0
- package/src/components/interaction/Rating/Rating.module.css +2 -2
- package/src/components/interaction/Toast/Toast.mdx +12 -4
- package/src/components/interaction/Toast/Toast.spec.tsx +11 -0
- package/src/components/interaction/Toast/Toast.tsx +11 -4
- package/src/components/interaction/form/Combobox/Combobox.mdx +2 -0
- package/src/components/interaction/form/Combobox/Combobox.module.css +3 -3
- package/src/components/interaction/form/FileInput/FileInput.mdx +2 -0
- package/src/components/interaction/form/FileInput/FileInput.module.css +2 -2
- package/src/components/interaction/form/NumberInput/NumberInput.mdx +4 -0
- package/src/components/interaction/form/NumberInput/NumberInput.module.css +3 -3
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +1 -0
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +1 -1
- package/src/components/interaction/form/Slider/Slider.mdx +4 -0
- package/src/components/interaction/form/Slider/Slider.module.css +8 -8
- package/src/components/interaction/form/Switch/Switch.mdx +3 -0
- package/src/components/interaction/form/Switch/Switch.module.css +1 -1
- package/src/components/interaction/form/Textarea/Textarea.mdx +1 -1
- package/src/components/interaction/form/Textarea/Textarea.module.css +1 -1
- package/src/components/layout/ButtonGroup/ButtonGroup.mdx +2 -0
- package/src/components/layout/Card/Card.mdx +17 -6
- package/src/components/layout/Card/Card.module.css +12 -8
- package/src/components/layout/Card/Card.spec.tsx +30 -0
- package/src/components/layout/Card/Card.stories.tsx +3 -1
- package/src/components/layout/Card/Card.tsx +12 -8
- package/src/components/layout/SectionHeader/SectionHeader.mdx +10 -2
- package/src/components/layout/SectionHeader/SectionHeader.module.css +29 -17
- package/src/components/layout/SectionHeader/SectionHeader.spec.tsx +5 -0
- package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +2 -1
- package/src/components/layout/SectionHeader/SectionHeader.tsx +1 -1
- package/src/components/ui/Accordion/Accordion.mdx +1 -0
- package/src/components/ui/Accordion/Accordion.module.css +1 -1
- package/src/components/ui/Alert/Alert.mdx +6 -3
- package/src/components/ui/Alert/Alert.module.css +1 -1
- package/src/components/ui/Calendar/Calendar.mdx +5 -0
- package/src/components/ui/Calendar/Calendar.module.css +5 -5
- package/src/components/ui/Carousel/Carousel.mdx +14 -0
- package/src/components/ui/Carousel/Carousel.module.css +1 -1
- package/src/components/ui/NotificationBanner/NotificationBanner.mdx +18 -0
- package/src/components/ui/NotificationBanner/NotificationBanner.module.css +1 -1
- package/src/components/ui/Pagination/Pagination.mdx +21 -0
- package/src/components/ui/Pagination/Pagination.module.css +5 -5
- package/src/components/ui/Table/Table.mdx +2 -0
- package/src/components/ui/Table/Table.module.css +2 -2
- package/src/components/ui/Tabs/Tabs.mdx +17 -0
- package/src/components/ui/Tabs/Tabs.module.css +3 -3
- package/src/css/bdc.css +1 -0
|
@@ -6,7 +6,7 @@ const meta = {
|
|
|
6
6
|
component: Card,
|
|
7
7
|
argTypes: {
|
|
8
8
|
variant: { control: 'select', options: ['default', 'elevated', 'outlined'] },
|
|
9
|
-
padding: { control: 'select', options: ['none', 'small', 'medium', 'large'] },
|
|
9
|
+
padding: { control: 'select', options: ['none', 'small', 'medium', 'large', 'extra-large'] },
|
|
10
10
|
textAlign: { control: 'select', options: ['start', 'center', 'end'] },
|
|
11
11
|
},
|
|
12
12
|
} satisfies Meta<typeof Card>;
|
|
@@ -18,6 +18,8 @@ export const Default: Story = { args: { children: 'Card content', variant: 'defa
|
|
|
18
18
|
export const Elevated: Story = { args: { children: 'Elevated card', variant: 'elevated' } };
|
|
19
19
|
export const Outlined: Story = { args: { children: 'Outlined card', variant: 'outlined' } };
|
|
20
20
|
export const Clickable: Story = { args: { children: 'Click me', onClick: () => alert('clicked') } };
|
|
21
|
+
export const AsLink: Story = { args: { children: 'Card as link', as: 'a', href: '#' } as Record<string, unknown> };
|
|
22
|
+
export const AsSection: Story = { args: { children: 'Card as section', as: 'section' } as Record<string, unknown> };
|
|
21
23
|
export const Centered: Story = { args: { children: 'Centered', textAlign: 'center' } };
|
|
22
24
|
export const AllVariants: Story = {
|
|
23
25
|
args: { children: '' },
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ElementType, ComponentPropsWithoutRef } from 'react';
|
|
2
2
|
import css from './Card.module.css';
|
|
3
3
|
import { cn } from '@boostdev/design-system-foundation';
|
|
4
4
|
import type { WithClassName } from '../../../types';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
type CardOwnProps = WithClassName & {
|
|
7
7
|
variant?: 'default' | 'elevated' | 'outlined';
|
|
8
|
-
padding?: 'none' | 'small' | 'medium' | 'large';
|
|
8
|
+
padding?: 'none' | 'small' | 'medium' | 'large' | 'extra-large';
|
|
9
9
|
textAlign?: 'start' | 'center' | 'end';
|
|
10
|
-
|
|
10
|
+
as?: ElementType;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type CardProps<C extends ElementType = 'div'> = CardOwnProps & Omit<ComponentPropsWithoutRef<C>, keyof CardOwnProps>;
|
|
11
14
|
|
|
12
|
-
export function Card({
|
|
15
|
+
export function Card<C extends ElementType = 'div'>({
|
|
13
16
|
children,
|
|
14
17
|
className,
|
|
15
18
|
variant = 'default',
|
|
16
19
|
padding = 'medium',
|
|
17
20
|
textAlign = 'start',
|
|
21
|
+
as,
|
|
18
22
|
onClick,
|
|
19
23
|
...rest
|
|
20
|
-
}: CardProps) {
|
|
24
|
+
}: CardProps<C>) {
|
|
21
25
|
const classNames = cn(
|
|
22
26
|
css.card,
|
|
23
27
|
css[`--${variant}`],
|
|
@@ -27,14 +31,14 @@ export function Card({
|
|
|
27
31
|
className,
|
|
28
32
|
);
|
|
29
33
|
|
|
30
|
-
const Component = onClick ? 'button' : 'div';
|
|
34
|
+
const Component = as ?? (onClick ? 'button' : 'div');
|
|
31
35
|
|
|
32
36
|
return (
|
|
33
37
|
<Component
|
|
34
38
|
{...rest}
|
|
35
39
|
className={classNames}
|
|
36
40
|
onClick={onClick}
|
|
37
|
-
{...(onClick && { type: 'button' as const })}
|
|
41
|
+
{...(!as && onClick && { type: 'button' as const })}
|
|
38
42
|
>
|
|
39
43
|
{children}
|
|
40
44
|
</Component>
|
|
@@ -19,12 +19,15 @@ Heading block with optional subtitle for introducing a content section.
|
|
|
19
19
|
### Without subtitle
|
|
20
20
|
<Canvas of={Stories.WithoutSubtitle} />
|
|
21
21
|
|
|
22
|
-
###
|
|
23
|
-
<Canvas of={Stories.
|
|
22
|
+
### Extra Small
|
|
23
|
+
<Canvas of={Stories.ExtraSmall} />
|
|
24
24
|
|
|
25
25
|
### Small
|
|
26
26
|
<Canvas of={Stories.Small} />
|
|
27
27
|
|
|
28
|
+
### Large
|
|
29
|
+
<Canvas of={Stories.Large} />
|
|
30
|
+
|
|
28
31
|
### Centered
|
|
29
32
|
<Canvas of={Stories.Centered} />
|
|
30
33
|
|
|
@@ -40,7 +43,12 @@ Heading block with optional subtitle for introducing a content section.
|
|
|
40
43
|
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
41
44
|
</thead>
|
|
42
45
|
<tbody>
|
|
46
|
+
<tr><td>`--sectionHeader-title-color`</td><td>`var(--bds-color_on-bg)`</td><td>Title text colour</td></tr>
|
|
47
|
+
<tr><td>`--sectionHeader_title-size`</td><td>varies by `size` prop</td><td>Title font-size (overrides the variant default)</td></tr>
|
|
48
|
+
<tr><td>`--sectionHeader_title-line-height`</td><td>varies by `size` prop</td><td>Title line-height</td></tr>
|
|
49
|
+
<tr><td>`--sectionHeader_title-weight`</td><td>`var(--bds-font_weight--bold)`</td><td>Title font-weight</td></tr>
|
|
43
50
|
<tr><td>`--sectionHeader_subtitle-color`</td><td>`var(--bds-color_grey--strong)`</td><td>Subtitle text colour</td></tr>
|
|
51
|
+
<tr><td>`--sectionHeader_subtitle-size`</td><td>varies by `size` prop</td><td>Subtitle font-size</td></tr>
|
|
44
52
|
</tbody>
|
|
45
53
|
</table>
|
|
46
54
|
|
|
@@ -34,37 +34,49 @@
|
|
|
34
34
|
text-align: end;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
/* medium first — default size, so MCP extraction picks up its fallbacks */
|
|
38
|
+
.sectionHeader.--medium .title {
|
|
39
|
+
font-size: var(--sectionHeader_title-size, var(--bds-font_size--display));
|
|
40
|
+
line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--display));
|
|
41
|
+
font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
.sectionHeader.--
|
|
44
|
-
font-size: var(--bds-font_size--
|
|
44
|
+
.sectionHeader.--medium .subtitle {
|
|
45
|
+
font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-3));
|
|
46
|
+
line-height: 1.3;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.sectionHeader.--xs .title {
|
|
50
|
+
font-size: var(--sectionHeader_title-size, 1.5em);
|
|
51
|
+
line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading));
|
|
52
|
+
font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.sectionHeader.--xs .subtitle {
|
|
56
|
+
font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body));
|
|
45
57
|
line-height: 1.4;
|
|
46
58
|
}
|
|
47
59
|
|
|
48
|
-
.sectionHeader.--
|
|
49
|
-
font-size: var(--bds-font_size--
|
|
50
|
-
line-height: var(--bds-font_line-height--
|
|
51
|
-
font-weight: var(--bds-font_weight--bold);
|
|
60
|
+
.sectionHeader.--small .title {
|
|
61
|
+
font-size: var(--sectionHeader_title-size, var(--bds-font_size--heading-1));
|
|
62
|
+
line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--heading));
|
|
63
|
+
font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
|
|
52
64
|
}
|
|
53
65
|
|
|
54
|
-
.sectionHeader.--
|
|
55
|
-
font-size: var(--bds-font_size--
|
|
56
|
-
line-height: 1.
|
|
66
|
+
.sectionHeader.--small .subtitle {
|
|
67
|
+
font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--body));
|
|
68
|
+
line-height: 1.4;
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
.sectionHeader.--large .title {
|
|
60
|
-
font-size: var(--bds-font_size--display);
|
|
61
|
-
line-height: var(--bds-font_line-height--display);
|
|
62
|
-
font-weight: var(--bds-font_weight--bold);
|
|
72
|
+
font-size: var(--sectionHeader_title-size, var(--bds-font_size--display));
|
|
73
|
+
line-height: var(--sectionHeader_title-line-height, var(--bds-font_line-height--display));
|
|
74
|
+
font-weight: var(--sectionHeader_title-weight, var(--bds-font_weight--bold));
|
|
63
75
|
letter-spacing: var(--bds-font_tracking--tight);
|
|
64
76
|
}
|
|
65
77
|
|
|
66
78
|
.sectionHeader.--large .subtitle {
|
|
67
|
-
font-size: var(--bds-font_size--heading-2);
|
|
79
|
+
font-size: var(--sectionHeader_subtitle-size, var(--bds-font_size--heading-2));
|
|
68
80
|
line-height: 1.3;
|
|
69
81
|
font-weight: var(--bds-font_weight--medium);
|
|
70
82
|
}
|
|
@@ -28,4 +28,9 @@ describe('SectionHeader', () => {
|
|
|
28
28
|
const { container } = render(<SectionHeader title="Title" className="custom" />);
|
|
29
29
|
expect(container.firstChild).toHaveClass('custom');
|
|
30
30
|
});
|
|
31
|
+
|
|
32
|
+
it('renders the xs size variant', () => {
|
|
33
|
+
const { container } = render(<SectionHeader title="XS Title" size="xs" />);
|
|
34
|
+
expect(container.firstChild).toHaveClass('--xs');
|
|
35
|
+
});
|
|
31
36
|
});
|
|
@@ -6,7 +6,7 @@ const meta = {
|
|
|
6
6
|
component: SectionHeader,
|
|
7
7
|
argTypes: {
|
|
8
8
|
alignment: { control: 'select', options: ['start', 'center', 'end'] },
|
|
9
|
-
size: { control: 'select', options: ['small', 'medium', 'large'] },
|
|
9
|
+
size: { control: 'select', options: ['xs', 'small', 'medium', 'large'] },
|
|
10
10
|
},
|
|
11
11
|
} satisfies Meta<typeof SectionHeader>;
|
|
12
12
|
|
|
@@ -16,5 +16,6 @@ type Story = StoryObj<typeof meta>;
|
|
|
16
16
|
export const Default: Story = { args: { title: 'Section Title', subtitle: 'A descriptive subtitle.' } };
|
|
17
17
|
export const WithoutSubtitle: Story = { args: { title: 'Title Only' } };
|
|
18
18
|
export const Centered: Story = { args: { title: 'Centered Title', subtitle: 'Centered subtitle.', alignment: 'center' } };
|
|
19
|
+
export const ExtraSmall: Story = { args: { title: 'Extra Small Header', subtitle: 'Extra small size.', size: 'xs' } };
|
|
19
20
|
export const Small: Story = { args: { title: 'Small Header', subtitle: 'Small size.', size: 'small' } };
|
|
20
21
|
export const Large: Story = { args: { title: 'Large Header', subtitle: 'Large size.', size: 'large' } };
|
|
@@ -9,7 +9,7 @@ type SectionHeaderProps = WithClassName & Omit<HTMLAttributes<HTMLDivElement>, '
|
|
|
9
9
|
title: string;
|
|
10
10
|
subtitle?: string;
|
|
11
11
|
alignment?: 'start' | 'center' | 'end';
|
|
12
|
-
size?: 'small' | 'medium' | 'large';
|
|
12
|
+
size?: 'xs' | 'small' | 'medium' | 'large';
|
|
13
13
|
titleAs?: IntrinsicElement;
|
|
14
14
|
};
|
|
15
15
|
|
|
@@ -43,6 +43,7 @@ Vertically stacked sections that can be expanded and collapsed independently.
|
|
|
43
43
|
<tbody>
|
|
44
44
|
<tr><td>`--accordion_border`</td><td>`none`</td><td>Container border</td></tr>
|
|
45
45
|
<tr><td>`--accordion_radius`</td><td>`var(--bdc-outline_radius)`</td><td>Container corner radius</td></tr>
|
|
46
|
+
<tr><td>`--accordion_trigger-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Trigger button background on hover</td></tr>
|
|
46
47
|
</tbody>
|
|
47
48
|
</table>
|
|
48
49
|
|
|
@@ -47,11 +47,14 @@ Inline contextual feedback message. Use for confirmations, warnings, errors, and
|
|
|
47
47
|
|
|
48
48
|
<table>
|
|
49
49
|
<thead>
|
|
50
|
-
<tr><th>Variable</th><th>Description</th></tr>
|
|
50
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
51
51
|
</thead>
|
|
52
52
|
<tbody>
|
|
53
|
-
<tr><td>`--alert_color`</td><td>Background colour (defaults to variant semantic token)</td></tr>
|
|
54
|
-
<tr><td>`--alert_on-color`</td><td>Text and icon colour</td></tr>
|
|
53
|
+
<tr><td>`--alert_color`</td><td>Per variant</td><td>Background colour (defaults to variant semantic token)</td></tr>
|
|
54
|
+
<tr><td>`--alert_on-color`</td><td>Per variant</td><td>Text and icon colour</td></tr>
|
|
55
|
+
<tr><td>`--alert_dismiss-border`</td><td>`none`</td><td>Dismiss button border</td></tr>
|
|
56
|
+
<tr><td>`--alert_dismiss-radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Dismiss button border radius</td></tr>
|
|
57
|
+
<tr><td>`--alert_dismiss-opacity--hover`</td><td>`0.7`</td><td>Dismiss button opacity on hover</td></tr>
|
|
55
58
|
</tbody>
|
|
56
59
|
</table>
|
|
57
60
|
|
|
@@ -38,6 +38,11 @@ Date picker calendar grid. Use standalone or as the popover content inside a dat
|
|
|
38
38
|
<tr><td>`--calendar_radius`</td><td>`var(--bdc-outline_radius)`</td><td>Container corner radius</td></tr>
|
|
39
39
|
<tr><td>`--calendar_shadow`</td><td>`var(--bds-shadow_s)`</td><td>Container box shadow</td></tr>
|
|
40
40
|
<tr><td>`--calendar_today-border`</td><td>`none`</td><td>Border on today's date cell</td></tr>
|
|
41
|
+
<tr><td>`--calendar_navBtn-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Month navigation button background on hover</td></tr>
|
|
42
|
+
<tr><td>`--calendar_day-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Day cell background on hover</td></tr>
|
|
43
|
+
<tr><td>`--calendar_today-color`</td><td>`var(--bds-color_interactive)`</td><td>Today's date text colour</td></tr>
|
|
44
|
+
<tr><td>`--calendar_day-bg--selected`</td><td>`var(--bds-color_interactive)`</td><td>Selected day background</td></tr>
|
|
45
|
+
<tr><td>`--calendar_day-color--selected`</td><td>`var(--bds-color_on-interactive)`</td><td>Selected day text colour</td></tr>
|
|
41
46
|
</tbody>
|
|
42
47
|
</table>
|
|
43
48
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
@media (hover: hover) and (pointer: fine) {
|
|
53
53
|
.navBtn:hover {
|
|
54
|
-
background-color: var(--bds-color_bg--subtle);
|
|
54
|
+
background-color: var(--calendar_navBtn-bg--hover, var(--bds-color_bg--subtle));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -95,22 +95,22 @@
|
|
|
95
95
|
|
|
96
96
|
@media (hover: hover) and (pointer: fine) {
|
|
97
97
|
.day:not(.disabled, .selected):hover {
|
|
98
|
-
background-color: var(--bds-color_bg--subtle);
|
|
98
|
+
background-color: var(--calendar_day-bg--hover, var(--bds-color_bg--subtle));
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.today {
|
|
103
103
|
font-weight: var(--bds-font_weight--semibold);
|
|
104
104
|
|
|
105
|
-
--bdc_color: var(--bds-color_interactive);
|
|
105
|
+
--bdc_color: var(--calendar_today-color, var(--bds-color_interactive));
|
|
106
106
|
|
|
107
107
|
border: var(--calendar_today-border, none);
|
|
108
108
|
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
.selected {
|
|
112
|
-
background-color: var(--bds-color_interactive);
|
|
113
|
-
color: var(--bds-color_on-interactive);
|
|
112
|
+
background-color: var(--calendar_day-bg--selected, var(--bds-color_interactive));
|
|
113
|
+
color: var(--calendar_day-color--selected, var(--bds-color_on-interactive));
|
|
114
114
|
font-weight: var(--bds-font_weight--semibold);
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -24,6 +24,20 @@ Horizontally scrollable slide container with previous/next navigation.
|
|
|
24
24
|
|
|
25
25
|
<ArgTypes of={Stories} />
|
|
26
26
|
|
|
27
|
+
## CSS variables
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
<table>
|
|
31
|
+
<thead>
|
|
32
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
33
|
+
</thead>
|
|
34
|
+
<tbody>
|
|
35
|
+
<tr><td>`--carousel_indicator-radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Navigation button border radius</td></tr>
|
|
36
|
+
<tr><td>`--carousel_navBtn-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Navigation button background on hover</td></tr>
|
|
37
|
+
</tbody>
|
|
38
|
+
</table>
|
|
39
|
+
|
|
40
|
+
|
|
27
41
|
## Accessibility
|
|
28
42
|
|
|
29
43
|
- Prev/next buttons have `aria-label="Previous"` / `"Next"`
|
|
@@ -39,6 +39,24 @@ Full-width banner for page-level system messages. Sits at the top of the page or
|
|
|
39
39
|
|
|
40
40
|
<ArgTypes of={Stories} />
|
|
41
41
|
|
|
42
|
+
## CSS variables
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<table>
|
|
46
|
+
<thead>
|
|
47
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
48
|
+
</thead>
|
|
49
|
+
<tbody>
|
|
50
|
+
<tr><td>`--banner_bg`</td><td>Per variant</td><td>Banner background colour</td></tr>
|
|
51
|
+
<tr><td>`--banner_text`</td><td>Per variant</td><td>Banner text colour</td></tr>
|
|
52
|
+
<tr><td>`--banner_border`</td><td>Per variant</td><td>Banner bottom border colour</td></tr>
|
|
53
|
+
<tr><td>`--banner_dismiss-radius`</td><td>`var(--bds-border_radius--circle)`</td><td>Dismiss button border radius</td></tr>
|
|
54
|
+
<tr><td>`--banner_dismiss-border`</td><td>`none`</td><td>Dismiss button border</td></tr>
|
|
55
|
+
<tr><td>`--banner_dismiss-opacity--hover`</td><td>`0.7`</td><td>Dismiss button opacity on hover</td></tr>
|
|
56
|
+
</tbody>
|
|
57
|
+
</table>
|
|
58
|
+
|
|
59
|
+
|
|
42
60
|
## Accessibility
|
|
43
61
|
|
|
44
62
|
- Uses `role="alert"` for error/warning variants and `role="status"` for info/success
|
|
@@ -32,6 +32,27 @@ Navigation control for paged data sets. Renders prev/next buttons plus numbered
|
|
|
32
32
|
|
|
33
33
|
<ArgTypes of={Stories} />
|
|
34
34
|
|
|
35
|
+
## CSS variables
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
<table>
|
|
39
|
+
<thead>
|
|
40
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
41
|
+
</thead>
|
|
42
|
+
<tbody>
|
|
43
|
+
<tr><td>`--pagination_radius`</td><td>`var(--bds-border_radius--full)`</td><td>Page button border radius</td></tr>
|
|
44
|
+
<tr><td>`--btn_bg`</td><td>`transparent`</td><td>Default button background</td></tr>
|
|
45
|
+
<tr><td>`--btn_color`</td><td>`var(--bds-color_on-bg)`</td><td>Default button text colour</td></tr>
|
|
46
|
+
<tr><td>`--btn_border`</td><td>`var(--bds-color_bg--subtle)`</td><td>Default button border colour</td></tr>
|
|
47
|
+
<tr><td>`--btn_bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Button background on hover</td></tr>
|
|
48
|
+
<tr><td>`--btn_color--hover`</td><td>`var(--bds-color_interactive_on-bg)`</td><td>Button text colour on hover</td></tr>
|
|
49
|
+
<tr><td>`--btn_bg--active`</td><td>`var(--bds-color_interactive)`</td><td>Active (current page) button background</td></tr>
|
|
50
|
+
<tr><td>`--btn_color--active`</td><td>`var(--bds-color_on-interactive)`</td><td>Active (current page) button text colour</td></tr>
|
|
51
|
+
<tr><td>`--btn_border--active`</td><td>`var(--bds-color_interactive)`</td><td>Active (current page) button border colour</td></tr>
|
|
52
|
+
</tbody>
|
|
53
|
+
</table>
|
|
54
|
+
|
|
55
|
+
|
|
35
56
|
## Accessibility
|
|
36
57
|
|
|
37
58
|
- Wraps in `<nav aria-label="Pagination">`
|
|
@@ -53,15 +53,15 @@
|
|
|
53
53
|
|
|
54
54
|
@media (hover: hover) and (pointer: fine) {
|
|
55
55
|
.button:not(:disabled, .--active):hover {
|
|
56
|
-
--btn_bg: var(--bds-color_bg--subtle);
|
|
57
|
-
--btn_color: var(--bds-color_interactive_on-bg);
|
|
56
|
+
--btn_bg: var(--btn_bg--hover, var(--bds-color_bg--subtle));
|
|
57
|
+
--btn_color: var(--btn_color--hover, var(--bds-color_interactive_on-bg));
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
.button.--active {
|
|
62
|
-
--btn_bg: var(--bds-color_interactive);
|
|
63
|
-
--btn_color: var(--bds-color_on-interactive);
|
|
64
|
-
--btn_border: var(--bds-color_interactive);
|
|
62
|
+
--btn_bg: var(--btn_bg--active, var(--bds-color_interactive));
|
|
63
|
+
--btn_color: var(--btn_color--active, var(--bds-color_on-interactive));
|
|
64
|
+
--btn_border: var(--btn_border--active, var(--bds-color_interactive));
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
.button.--nav svg {
|
|
@@ -40,6 +40,8 @@ Data table with optional sortable columns and caption.
|
|
|
40
40
|
<tbody>
|
|
41
41
|
<tr><td>`--table_border`</td><td>`none`</td><td>Container border</td></tr>
|
|
42
42
|
<tr><td>`--table_radius`</td><td>`var(--bdc-outline_radius)`</td><td>Container corner radius</td></tr>
|
|
43
|
+
<tr><td>`--table_sortBtn-color--hover`</td><td>`var(--bds-color_on-bg)`</td><td>Sort button text colour on hover</td></tr>
|
|
44
|
+
<tr><td>`--table_row-bg--hover`</td><td>`var(--bds-color_bg--subtle)`</td><td>Table row background on hover</td></tr>
|
|
43
45
|
</tbody>
|
|
44
46
|
</table>
|
|
45
47
|
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
|
|
66
66
|
@media (hover: hover) and (pointer: fine) {
|
|
67
67
|
.sortButton:hover {
|
|
68
|
-
color: var(--bds-color_on-bg);
|
|
68
|
+
color: var(--table_sortBtn-color--hover, var(--bds-color_on-bg));
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
|
|
98
98
|
@media (hover: hover) and (pointer: fine) {
|
|
99
99
|
.tbody .tr:hover {
|
|
100
|
-
background-color: var(--bds-color_bg--subtle);
|
|
100
|
+
background-color: var(--table_row-bg--hover, var(--bds-color_bg--subtle));
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -33,6 +33,23 @@ Organises content into discrete panels accessible via a horizontal tab list.
|
|
|
33
33
|
|
|
34
34
|
<ArgTypes of={Stories} />
|
|
35
35
|
|
|
36
|
+
## CSS variables
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<table>
|
|
40
|
+
<thead>
|
|
41
|
+
<tr><th>Variable</th><th>Default</th><th>Description</th></tr>
|
|
42
|
+
</thead>
|
|
43
|
+
<tbody>
|
|
44
|
+
<tr><td>`--tab_color`</td><td>`var(--bds-color_on-bg)`</td><td>Default tab text colour</td></tr>
|
|
45
|
+
<tr><td>`--tab_border-color`</td><td>`transparent`</td><td>Default tab bottom border colour</td></tr>
|
|
46
|
+
<tr><td>`--tab_color--active`</td><td>`var(--bds-color_interactive_on-bg)`</td><td>Active tab text colour</td></tr>
|
|
47
|
+
<tr><td>`--tab_border-color--active`</td><td>`var(--bds-color_interactive)`</td><td>Active tab bottom border colour</td></tr>
|
|
48
|
+
<tr><td>`--tab_color--hover`</td><td>`var(--bds-color_interactive_on-bg)`</td><td>Tab text colour on hover</td></tr>
|
|
49
|
+
</tbody>
|
|
50
|
+
</table>
|
|
51
|
+
|
|
52
|
+
|
|
36
53
|
## Accessibility
|
|
37
54
|
|
|
38
55
|
- Implements ARIA tabs pattern: `role="tablist"`, `role="tab"`, `role="tabpanel"`
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.tab.--active {
|
|
29
|
-
--tab_color: var(--bds-color_interactive_on-bg);
|
|
30
|
-
--tab_border-color: var(--bds-color_interactive);
|
|
29
|
+
--tab_color: var(--tab_color--active, var(--bds-color_interactive_on-bg));
|
|
30
|
+
--tab_border-color: var(--tab_border-color--active, var(--bds-color_interactive));
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.tab:disabled {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
@media (hover: hover) and (pointer: fine) {
|
|
45
45
|
.tab:not(:disabled, .--active):hover {
|
|
46
|
-
--tab_color: var(--bds-color_interactive_on-bg);
|
|
46
|
+
--tab_color: var(--tab_color--hover, var(--bds-color_interactive_on-bg));
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
package/src/css/bdc.css
CHANGED
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
--bdc-outline_width: 1px;
|
|
69
69
|
--bdc-outline_offset: -1px; /* available for consumer use; bdc borders now use inset box-shadow */
|
|
70
70
|
--bdc-outline_radius: var(--bds-border_radius--xs);
|
|
71
|
+
--bdc-outline_radius--l: 1.5em;
|
|
71
72
|
|
|
72
73
|
/* Shadow: opt-in; transparent (not 'none') so it's valid in a comma-separated box-shadow list */
|
|
73
74
|
--bdc-outline_shadow: 0 0 0 0 transparent;
|