@boostdev/design-system-components 0.1.13 → 0.1.15
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 +1 -1
- package/README.md +1 -1
- package/dist/client.cjs +406 -362
- package/dist/client.css +560 -511
- package/dist/client.d.cts +27 -5
- package/dist/client.d.ts +27 -5
- package/dist/client.js +405 -362
- package/dist/index.cjs +406 -362
- package/dist/index.css +560 -511
- package/dist/index.d.cts +27 -5
- package/dist/index.d.ts +27 -5
- package/dist/index.js +405 -362
- package/package.json +4 -2
- package/src/components/interaction/Button/Button.mdx +73 -0
- package/src/components/interaction/Button/Button.module.css +12 -20
- package/src/components/interaction/Button/Button.stories.tsx +0 -1
- package/src/components/interaction/Command/Command.mdx +28 -0
- package/src/components/interaction/Command/Command.module.css +2 -1
- package/src/components/interaction/Command/Command.stories.tsx +3 -3
- package/src/components/interaction/Dialog/Dialog.mdx +57 -0
- package/src/components/interaction/Dialog/Dialog.module.css +1 -1
- package/src/components/interaction/Dialog/Dialog.stories.tsx +0 -1
- package/src/components/interaction/Drawer/Drawer.mdx +35 -0
- package/src/components/interaction/Drawer/Drawer.module.css +3 -9
- package/src/components/interaction/Drawer/Drawer.stories.tsx +3 -3
- package/src/components/interaction/Drawer/Drawer.tsx +5 -3
- package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +40 -0
- package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +5 -5
- package/src/components/interaction/Popover/Popover.mdx +34 -0
- package/src/components/interaction/Popover/Popover.stories.tsx +3 -3
- package/src/components/interaction/Rating/Rating.mdx +38 -0
- package/src/components/interaction/Rating/Rating.stories.tsx +0 -1
- package/src/components/interaction/Toast/Toast.mdx +78 -0
- package/src/components/interaction/Toast/Toast.module.css +21 -7
- package/src/components/interaction/Toast/Toast.stories.tsx +0 -1
- package/src/components/interaction/form/Checkbox/Checkbox.mdx +57 -0
- package/src/components/interaction/form/Checkbox/Checkbox.stories.tsx +0 -1
- package/src/components/interaction/form/Combobox/Combobox.mdx +37 -0
- package/src/components/interaction/form/Combobox/Combobox.stories.tsx +0 -1
- package/src/components/interaction/form/FileInput/FileInput.mdx +38 -0
- package/src/components/interaction/form/FileInput/FileInput.stories.tsx +0 -1
- package/src/components/interaction/form/FormInput/FormInput.mdx +54 -0
- package/src/components/interaction/form/FormInput/FormInput.stories.tsx +0 -1
- package/src/components/interaction/form/NumberInput/NumberInput.mdx +38 -0
- package/src/components/interaction/form/NumberInput/NumberInput.stories.tsx +0 -1
- package/src/components/interaction/form/Radio/Radio.mdx +60 -0
- package/src/components/interaction/form/Radio/Radio.module.css +24 -11
- package/src/components/interaction/form/Radio/Radio.stories.tsx +5 -5
- package/src/components/interaction/form/Radio/Radio.tsx +6 -2
- package/src/components/interaction/form/Select/Select.mdx +58 -0
- package/src/components/interaction/form/Select/Select.stories.tsx +0 -1
- package/src/components/interaction/form/Slider/Slider.mdx +58 -0
- package/src/components/interaction/form/Slider/Slider.stories.tsx +0 -1
- package/src/components/interaction/form/Switch/Switch.mdx +61 -0
- package/src/components/interaction/form/Switch/Switch.module.css +6 -10
- package/src/components/interaction/form/Switch/Switch.stories.tsx +0 -1
- package/src/components/interaction/form/Textarea/Textarea.mdx +41 -0
- package/src/components/interaction/form/Textarea/Textarea.stories.tsx +0 -1
- package/src/components/layout/ButtonGroup/ButtonGroup.mdx +47 -0
- package/src/components/layout/ButtonGroup/ButtonGroup.module.css +10 -10
- package/src/components/layout/ButtonGroup/ButtonGroup.stories.tsx +1 -2
- package/src/components/layout/Card/Card.mdx +58 -0
- package/src/components/layout/Card/Card.stories.tsx +0 -1
- package/src/components/layout/IconWrapper/IconWrapper.mdx +39 -0
- package/src/components/layout/IconWrapper/IconWrapper.stories.tsx +0 -1
- package/src/components/layout/SectionHeader/SectionHeader.mdx +38 -0
- package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +0 -1
- package/src/components/ui/Accordion/Accordion.mdx +40 -0
- package/src/components/ui/Accordion/Accordion.stories.tsx +0 -1
- package/src/components/ui/Alert/Alert.mdx +63 -0
- package/src/components/ui/Alert/Alert.module.css +3 -7
- package/src/components/ui/Alert/Alert.stories.tsx +0 -1
- package/src/components/ui/Avatar/Avatar.mdx +53 -0
- package/src/components/ui/Avatar/Avatar.module.css +4 -8
- package/src/components/ui/Avatar/Avatar.stories.tsx +0 -1
- package/src/components/ui/Badge/Badge.mdx +62 -0
- package/src/components/ui/Badge/Badge.module.css +4 -10
- package/src/components/ui/Badge/Badge.stories.tsx +0 -1
- package/src/components/ui/Breadcrumb/Breadcrumb.mdx +36 -0
- package/src/components/ui/Breadcrumb/Breadcrumb.stories.tsx +0 -1
- package/src/components/ui/Calendar/Calendar.mdx +34 -0
- package/src/components/ui/Calendar/Calendar.stories.tsx +0 -1
- package/src/components/ui/Carousel/Carousel.mdx +31 -0
- package/src/components/ui/Carousel/Carousel.stories.tsx +0 -1
- package/src/components/ui/Collapsible/Collapsible.mdx +59 -0
- package/src/components/ui/Collapsible/Collapsible.module.css +76 -0
- package/src/components/ui/Collapsible/Collapsible.spec.tsx +75 -0
- package/src/components/ui/Collapsible/Collapsible.stories.tsx +57 -0
- package/src/components/ui/Collapsible/Collapsible.tsx +55 -0
- package/src/components/ui/Collapsible/index.ts +2 -0
- package/src/components/ui/DescriptionList/DescriptionList.mdx +28 -0
- package/src/components/ui/DescriptionList/DescriptionList.stories.tsx +0 -1
- package/src/components/ui/Link/Link.mdx +44 -0
- package/src/components/ui/Link/Link.module.css +2 -5
- package/src/components/ui/Link/Link.stories.tsx +0 -1
- package/src/components/ui/Loading/Loading.mdx +52 -0
- package/src/components/ui/Loading/Loading.stories.tsx +0 -1
- package/src/components/ui/NotificationBanner/NotificationBanner.mdx +45 -0
- package/src/components/ui/NotificationBanner/NotificationBanner.module.css +3 -7
- package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +2 -2
- package/src/components/ui/Pagination/Pagination.mdx +39 -0
- package/src/components/ui/Pagination/Pagination.module.css +3 -7
- package/src/components/ui/Pagination/Pagination.stories.tsx +0 -1
- package/src/components/ui/Progress/Progress.mdx +52 -0
- package/src/components/ui/Progress/Progress.module.css +1 -3
- package/src/components/ui/Progress/Progress.stories.tsx +0 -1
- package/src/components/ui/ProgressCircle/ProgressCircle.mdx +46 -0
- package/src/components/ui/ProgressCircle/ProgressCircle.stories.tsx +0 -1
- package/src/components/ui/Separator/Separator.mdx +29 -0
- package/src/components/ui/Separator/Separator.stories.tsx +0 -1
- package/src/components/ui/Skeleton/Skeleton.mdx +36 -0
- package/src/components/ui/Skeleton/Skeleton.stories.tsx +0 -1
- package/src/components/ui/SkipLink/SkipLink.mdx +34 -0
- package/src/components/ui/SkipLink/SkipLink.stories.tsx +0 -1
- package/src/components/ui/Table/Table.mdx +38 -0
- package/src/components/ui/Table/Table.stories.tsx +0 -1
- package/src/components/ui/Tabs/Tabs.mdx +40 -0
- package/src/components/ui/Tabs/Tabs.module.css +2 -5
- package/src/components/ui/Tabs/Tabs.stories.tsx +0 -1
- package/src/components/ui/Tooltip/Tooltip.mdx +43 -0
- package/src/components/ui/Tooltip/Tooltip.module.css +2 -5
- package/src/components/ui/Tooltip/Tooltip.stories.tsx +6 -6
- package/src/components/ui/Typography/Typography.mdx +41 -0
- package/src/components/ui/Typography/Typography.stories.tsx +0 -1
- package/src/index.ts +2 -0
- package/src/static/logo.svg +8 -0
- package/src/stories/Introduction.css +17 -0
- package/src/stories/Introduction.mdx +129 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
|
|
2
|
+
import * as Stories from './Tooltip.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={Stories} />
|
|
5
|
+
|
|
6
|
+
# Tooltip
|
|
7
|
+
|
|
8
|
+
Short contextual label that appears on hover or focus. Use to supplement icon buttons or truncated text with a brief description.
|
|
9
|
+
|
|
10
|
+
## When to use
|
|
11
|
+
- Icon-only buttons that need a text label for clarity
|
|
12
|
+
- Truncated content where the full value is useful on demand
|
|
13
|
+
|
|
14
|
+
## When not to use
|
|
15
|
+
- For critical information — tooltips are not visible on touch devices
|
|
16
|
+
- For lengthy explanations — use an inline hint or a popover instead
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
### Top (default)
|
|
21
|
+
<Canvas of={Stories.Top} />
|
|
22
|
+
|
|
23
|
+
### Bottom
|
|
24
|
+
<Canvas of={Stories.Bottom} />
|
|
25
|
+
|
|
26
|
+
### Left
|
|
27
|
+
<Canvas of={Stories.Left} />
|
|
28
|
+
|
|
29
|
+
### Right
|
|
30
|
+
<Canvas of={Stories.Right} />
|
|
31
|
+
|
|
32
|
+
### All placements
|
|
33
|
+
<Canvas of={Stories.AllPlacements} />
|
|
34
|
+
|
|
35
|
+
## Props
|
|
36
|
+
|
|
37
|
+
<ArgTypes of={Stories} />
|
|
38
|
+
|
|
39
|
+
## Accessibility
|
|
40
|
+
|
|
41
|
+
- Tooltip content is linked via `aria-describedby` on the trigger element
|
|
42
|
+
- Shown on both `:hover` and `:focus` to be keyboard accessible
|
|
43
|
+
- Does not contain interactive content (use `Popover` for that)
|
|
@@ -6,15 +6,12 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
.tooltip {
|
|
9
|
-
--tooltip_bg: var(--color_on-bg);
|
|
10
|
-
--tooltip_text: var(--color_bg);
|
|
11
|
-
|
|
12
9
|
position: absolute;
|
|
13
10
|
z-index: var(--z-index_popover);
|
|
14
11
|
padding: var(--space_xxs) var(--space_xs);
|
|
15
12
|
border-radius: var(--border_radius--xs);
|
|
16
|
-
background-color: var(--tooltip_bg);
|
|
17
|
-
color: var(--tooltip_text);
|
|
13
|
+
background-color: var(--tooltip_bg, var(--color_on-bg));
|
|
14
|
+
color: var(--tooltip_text, var(--color_bg));
|
|
18
15
|
font-size: var(--font_size--body--s);
|
|
19
16
|
line-height: var(--font_line-height--body);
|
|
20
17
|
white-space: nowrap;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
import { Tooltip } from './Tooltip';
|
|
3
|
+
import { Button } from '../../interaction/Button/Button';
|
|
3
4
|
|
|
4
5
|
const meta = {
|
|
5
6
|
title: 'UI/Tooltip',
|
|
6
7
|
component: Tooltip,
|
|
7
|
-
tags: ['autodocs'],
|
|
8
8
|
argTypes: {
|
|
9
9
|
placement: { control: 'radio', options: ['top', 'bottom', 'left', 'right'] },
|
|
10
10
|
},
|
|
@@ -24,7 +24,7 @@ export const Top: Story = {
|
|
|
24
24
|
args: { content: 'Helpful tip', placement: 'top' },
|
|
25
25
|
render: args => (
|
|
26
26
|
<Tooltip {...args}>
|
|
27
|
-
<
|
|
27
|
+
<Button>Hover or focus me</Button>
|
|
28
28
|
</Tooltip>
|
|
29
29
|
),
|
|
30
30
|
};
|
|
@@ -33,7 +33,7 @@ export const Bottom: Story = {
|
|
|
33
33
|
args: { content: 'Below the trigger', placement: 'bottom' },
|
|
34
34
|
render: args => (
|
|
35
35
|
<Tooltip {...args}>
|
|
36
|
-
<
|
|
36
|
+
<Button>Bottom tooltip</Button>
|
|
37
37
|
</Tooltip>
|
|
38
38
|
),
|
|
39
39
|
};
|
|
@@ -42,7 +42,7 @@ export const Left: Story = {
|
|
|
42
42
|
args: { content: 'On the left', placement: 'left' },
|
|
43
43
|
render: args => (
|
|
44
44
|
<Tooltip {...args}>
|
|
45
|
-
<
|
|
45
|
+
<Button>Left tooltip</Button>
|
|
46
46
|
</Tooltip>
|
|
47
47
|
),
|
|
48
48
|
};
|
|
@@ -51,7 +51,7 @@ export const Right: Story = {
|
|
|
51
51
|
args: { content: 'On the right', placement: 'right' },
|
|
52
52
|
render: args => (
|
|
53
53
|
<Tooltip {...args}>
|
|
54
|
-
<
|
|
54
|
+
<Button>Right tooltip</Button>
|
|
55
55
|
</Tooltip>
|
|
56
56
|
),
|
|
57
57
|
};
|
|
@@ -61,7 +61,7 @@ export const AllPlacements: Story = {
|
|
|
61
61
|
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '3rem' }}>
|
|
62
62
|
{(['top', 'bottom', 'left', 'right'] as const).map(p => (
|
|
63
63
|
<Tooltip key={p} content={`Placement: ${p}`} placement={p}>
|
|
64
|
-
<
|
|
64
|
+
<Button>{p}</Button>
|
|
65
65
|
</Tooltip>
|
|
66
66
|
))}
|
|
67
67
|
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
|
|
2
|
+
import * as Stories from './Typography.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={Stories} />
|
|
5
|
+
|
|
6
|
+
# Typography
|
|
7
|
+
|
|
8
|
+
Renders a text element with a design-system variant. Decouples visual style from semantic HTML element via the `component` override prop.
|
|
9
|
+
|
|
10
|
+
## When to use
|
|
11
|
+
- Any heading or body text that should follow the design system scale
|
|
12
|
+
- When you need visual h2 styling on a semantically different element (e.g. a `<h3>`)
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
### All variants
|
|
17
|
+
<Canvas of={Stories.AllVariants} />
|
|
18
|
+
|
|
19
|
+
### H1
|
|
20
|
+
<Canvas of={Stories.H1} />
|
|
21
|
+
|
|
22
|
+
### H2
|
|
23
|
+
<Canvas of={Stories.H2} />
|
|
24
|
+
|
|
25
|
+
### H3
|
|
26
|
+
<Canvas of={Stories.H3} />
|
|
27
|
+
|
|
28
|
+
### Body
|
|
29
|
+
<Canvas of={Stories.Body} />
|
|
30
|
+
|
|
31
|
+
### Body small
|
|
32
|
+
<Canvas of={Stories.BodySmall} />
|
|
33
|
+
|
|
34
|
+
## Props
|
|
35
|
+
|
|
36
|
+
<ArgTypes of={Stories} />
|
|
37
|
+
|
|
38
|
+
## Accessibility
|
|
39
|
+
|
|
40
|
+
- Defaults to the semantically correct element for each variant (`h1`–`h3`, `p`)
|
|
41
|
+
- Use the `component` prop to override the rendered element when document outline requires a different level than the visual style
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,8 @@ export { Avatar } from './components/ui/Avatar';
|
|
|
6
6
|
export { Badge } from './components/ui/Badge';
|
|
7
7
|
export { Breadcrumb } from './components/ui/Breadcrumb';
|
|
8
8
|
export type { BreadcrumbItem } from './components/ui/Breadcrumb';
|
|
9
|
+
export { Collapsible } from './components/ui/Collapsible';
|
|
10
|
+
export type { CollapsibleProps } from './components/ui/Collapsible';
|
|
9
11
|
export { Calendar } from './components/ui/Calendar';
|
|
10
12
|
export { Carousel } from './components/ui/Carousel';
|
|
11
13
|
export { DescriptionList } from './components/ui/DescriptionList';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 97.165 42.584" >
|
|
2
|
+
<path fill="currentcolor" d="M0 25.594V1.406h3.465v8.527h.068q.578-.849 1.376-1.308t1.817-.459q1.257 0 1.954.442.695.441 1.138 1.121.339.543.441 1.427.101.883.102 2.752v6.557q0 1.427-.136 2.276-.136.85-.441 1.427-.884 1.63-3.023 1.63-1.291 0-1.971-.509c-.68-.509-.895-.759-1.325-1.257v1.563zM6.896 13.67q0-.816-.356-1.427-.357-.61-1.342-.611-.748 0-1.24.527-.493.526-.493 1.342v6.692q0 .952.476 1.546t1.257.595q.884 0 1.291-.646.408-.645.408-1.699V13.67ZM12.909 14.146q0-1.053.136-1.937a4.7 4.7 0 0 1 .51-1.563 4.67 4.67 0 0 1 1.75-1.8q1.138-.68 2.769-.68c1.631 0 2.01.227 2.769.68a4.7 4.7 0 0 1 1.75 1.8q.374.68.509 1.563.137.884.137 1.937v5.673q0 1.053-.137 1.937-.135.884-.509 1.562a4.7 4.7 0 0 1-1.75 1.801q-1.139.68-2.769.679c-1.63-.001-2.011-.226-2.769-.679a4.67 4.67 0 0 1-1.75-1.801 4.7 4.7 0 0 1-.51-1.562 13 13 0 0 1-.136-1.937zm3.465 6.216q0 .986.459 1.478.459.493 1.24.493c.781 0 .934-.164 1.24-.493q.459-.492.458-1.478v-6.76q0-.985-.458-1.478-.46-.492-1.24-.493c-.78-.001-.935.165-1.24.493q-.459.493-.459 1.478zM25.479 14.146q0-1.053.136-1.937a4.7 4.7 0 0 1 .51-1.563 4.67 4.67 0 0 1 1.75-1.8q1.138-.68 2.769-.68c1.631 0 2.01.227 2.769.68a4.7 4.7 0 0 1 1.75 1.8q.374.68.509 1.563.137.884.137 1.937v5.673q0 1.053-.137 1.937-.135.884-.509 1.562a4.7 4.7 0 0 1-1.75 1.801q-1.138.68-2.769.679c-1.631-.001-2.011-.226-2.769-.679a4.67 4.67 0 0 1-1.75-1.801 4.7 4.7 0 0 1-.51-1.562 13 13 0 0 1-.136-1.937zm3.465 6.216q0 .986.459 1.478.459.493 1.24.493c.781 0 .934-.164 1.24-.493q.459-.492.458-1.478v-6.76q0-.985-.458-1.478-.46-.492-1.24-.493c-.78-.001-.935.165-1.24.493q-.459.493-.459 1.478zM44.64 13.194q-.034-.883-.561-1.325a1.83 1.83 0 0 0-1.206-.441q-.816 0-1.257.526a1.82 1.82 0 0 0-.441 1.206q0 .475.237.934.236.458 1.223.833l2.039.815q1.936.748 2.667 2.038a5.64 5.64 0 0 1 .73 2.82q0 1.088-.392 2.021a5.4 5.4 0 0 1-1.069 1.648 4.9 4.9 0 0 1-1.631 1.121 5.2 5.2 0 0 1-2.072.407q-2.107 0-3.533-1.325a4.85 4.85 0 0 1-1.155-1.614q-.442-.968-.476-2.259h3.262q.1.714.492 1.325.39.612 1.376.611.747 0 1.342-.493.595-.492.595-1.376 0-.713-.374-1.223t-1.358-.883l-1.665-.612q-1.63-.611-2.564-1.817-.936-1.207-.935-2.938 0-1.087.407-2.021a4.9 4.9 0 0 1 1.121-1.614 4.6 4.6 0 0 1 1.597-1.036q.918-.357 1.971-.357c1.053 0 1.354.125 1.953.374q.9.374 1.546 1.053c.646.679.77.991 1.02 1.613q.374.936.374 1.988zM50.312 8.37V3.138h3.465V8.37h2.141v2.718h-2.141v9.546q0 .612.119.951.118.34.391.51c.273.17.402.181.663.204q.39.034.968.034v3.261h-1.427q-1.19 0-1.987-.374-.798-.373-1.274-.951c-.476-.578-.549-.821-.696-1.308a4.9 4.9 0 0 1-.221-1.41V11.088h-1.732V8.37zM25.479 37.796V27.404h1.489v3.663h.029a1.8 1.8 0 0 1 .59-.562q.344-.197.781-.197.54 0 .839.19.3.19.489.482.146.234.19.613c.044.379.044.648.044 1.182v2.817q0 .614-.058.978a2 2 0 0 1-.19.613q-.38.7-1.299.7-.556 0-.846-.219a3.6 3.6 0 0 1-.569-.54v.672zm2.963-5.124q0-.35-.154-.613-.152-.263-.576-.263a.7.7 0 0 0-.533.226.8.8 0 0 0-.211.576v2.876q0 .41.204.664c.204.254.316.256.54.256q.38 0 .555-.278.174-.277.175-.73zM35.521 30.396v7.4h-1.489v-.715h-.029a2.1 2.1 0 0 1-.562.577q-.329.226-.839.226-.277 0-.554-.095a1.3 1.3 0 0 1-.497-.314 1.6 1.6 0 0 1-.35-.562 2.4 2.4 0 0 1-.131-.839v-5.678h1.489v5.123q-.001.409.19.642.188.234.539.234.424 0 .584-.263c.16-.263.161-.428.161-.759v-4.977zM36.677 28.892v-1.489h1.489v1.489zm0 8.904v-7.4h1.489v7.4zM39.278 27.403h1.489v8.305q0 .423.154.576.153.153.576.197v1.401a5 5 0 0 1-.92-.08 1.6 1.6 0 0 1-.701-.314q-.291-.218-.445-.62c-.154-.402-.154-.62-.154-1.059v-8.407ZM42.274 30.396v-2.248h1.489v2.248h.92v1.168h-.92v4.102q0 .262.05.409c.05.147.09.17.169.219a.6.6 0 0 0 .284.088q.167.015.417.015v1.401h-.613q-.511 0-.854-.161a1.5 1.5 0 0 1-.547-.409q-.205-.247-.299-.562c-.094-.315-.094-.411-.094-.606v-4.496h-.745v-1.168h.745ZM47.967 30.396v-2.248h1.489v2.248h.92v1.168h-.92v4.102q0 .262.05.409c.05.147.09.17.169.219a.6.6 0 0 0 .284.088q.167.015.417.015v1.401h-.613q-.511 0-.854-.161a1.5 1.5 0 0 1-.547-.409q-.205-.247-.299-.562c-.094-.315-.094-.411-.094-.606v-4.496h-.745v-1.168h.745ZM51.043 32.877q0-.453.058-.832c.058-.379.111-.477.219-.672q.263-.482.752-.774.488-.292 1.19-.292c.702 0 .863.097 1.19.292q.488.292.751.774.161.293.219.672.059.38.059.832v2.438q0 .453-.059.832a2 2 0 0 1-.219.672 2 2 0 0 1-.751.774q-.49.292-1.19.292c-.7 0-.864-.097-1.19-.292a2 2 0 0 1-.752-.774 2 2 0 0 1-.219-.672 5.5 5.5 0 0 1-.058-.832zm1.489 2.671q0 .424.197.635c.197.211.309.212.533.212s.401-.071.532-.212.198-.352.198-.635v-2.904q0-.423-.198-.635c-.198-.212-.309-.212-.532-.212s-.402.071-.533.212-.197.353-.197.635z"/>
|
|
3
|
+
<path fill="none"
|
|
4
|
+
d="M72.798 23.318q.61 1.122 1.75 1.801 1.138.68 2.769.679 1.189 0 2.14-.407a4.9 4.9 0 0 0 1.631-1.121q1.394-1.393 1.394-3.669h-3.466a3.1 3.1 0 0 1-.391 1.155q-.323.578-1.308.578-.782 0-1.24-.442-.459-.441-.459-1.257v-2.344h6.863v-4.756q0-2.31-1.359-3.839a4.8 4.8 0 0 0-1.647-1.121q-.969-.407-2.157-.408-1.631 0-2.769.68a4.67 4.67 0 0 0-1.75 1.8 4.7 4.7 0 0 0-.51 1.563 13 13 0 0 0-.136 1.937v5.673q0 1.053.136 1.937a4.7 4.7 0 0 0 .51 1.562Zm2.819-9.716q0-.985.459-1.478.459-.492 1.24-.493c.781-.001.934.165 1.24.493q.458.493.458 1.478v1.97h-3.397zM95.186 8.37h-3.669l-2.31 11.007h-.068L86.828 8.37h-3.669l4.485 17.224h3.057zM66.14 9.933h-.067q-.58-.849-1.376-1.308-.8-.459-1.818-.459-1.29 0-1.936.442-1.394.85-1.598 2.548-.101.883-.102 2.752v6.557q0 1.427.136 2.276.136.85.442 1.427.848 1.63 3.023 1.63.645 0 1.121-.136.475-.135.849-.374.374-.237.68-.561.306-.322.646-.697v1.563h3.465V1.406H66.14zm0 10.259q0 .951-.476 1.546-.475.595-1.257.595-.884 0-1.291-.646c-.407-.646-.408-.997-.408-1.699v-6.319q0-.816.357-1.427.356-.61 1.342-.611.747 0 1.24.527.492.526.492 1.342v6.692Z"/>
|
|
5
|
+
<path fill="currentcolor" d="M79.015 13.602q0-.985-.458-1.478-.46-.492-1.24-.493c-.78-.001-.935.165-1.24.493q-.459.493-.459 1.478v1.97h3.397zM66.992 31.797q-.336 0-.533.212-.198.212-.197.635v.846h1.46v-.846q0-.423-.198-.635a.7.7 0 0 0-.532-.212M61.523 31.797q-.336 0-.54.255c-.204.255-.204.392-.204.664v2.875q0 .35.211.577a.7.7 0 0 0 .533.226q.424 0 .576-.263.153-.262.154-.613v-2.715q0-.453-.175-.73-.175-.278-.555-.278Z"/>
|
|
6
|
+
<path fill="currentcolor" d="M97.142 0 57.498.008l.022 42.576 39.644-.008zm-24.99 14.146q0-1.053.136-1.937a4.7 4.7 0 0 1 .51-1.563 4.67 4.67 0 0 1 1.75-1.8q1.138-.68 2.769-.68 1.189 0 2.157.408a4.8 4.8 0 0 1 1.647 1.121q1.358 1.53 1.359 3.839v4.756h-6.863v2.344q0 .815.459 1.257t1.24.442q.984 0 1.308-.578.322-.578.391-1.155h3.466q0 2.277-1.394 3.669a4.9 4.9 0 0 1-1.631 1.121q-.951.407-2.14.407-1.631 0-2.769-.679a4.67 4.67 0 0 1-1.75-1.801 4.7 4.7 0 0 1-.51-1.562 13 13 0 0 1-.136-1.937v-5.673Zm-8.41 21.27q0 .817-.044 1.183-.087.73-.671 1.094-.292.19-.847.19-.437 0-.781-.197a1.8 1.8 0 0 1-.59-.562h-.029v3.664h-1.489V30.396h1.489v.671q.277-.321.569-.54t.846-.219q.919 0 1.299.701.131.249.19.613.057.364.058.978zm5.469-.759h-2.949v1.007q0 .35.197.54t.533.19q.423 0 .561-.248t.169-.496h1.489q0 .978-.599 1.576a2.1 2.1 0 0 1-.7.482 2.3 2.3 0 0 1-.92.175q-.702 0-1.19-.292a2 2 0 0 1-.752-.774 2 2 0 0 1-.219-.672 5.5 5.5 0 0 1-.058-.832v-2.438q0-.453.058-.832.058-.38.219-.672.263-.482.752-.774.488-.292 1.19-.292.51 0 .927.175.416.176.708.482.585.657.584 1.649v2.043Zm.393-9.063h-3.465v-1.563q-.34.375-.646.697a3.6 3.6 0 0 1-.68.561 3.2 3.2 0 0 1-.849.374 4.1 4.1 0 0 1-1.121.136q-2.175 0-3.023-1.63-.306-.577-.442-1.427t-.136-2.276v-6.557q0-1.869.102-2.752.204-1.698 1.598-2.548.645-.442 1.936-.442 1.02 0 1.818.459.797.459 1.376 1.308h.067V1.406h3.465zm4.109 6.29a1.2 1.2 0 0 0-.452-.088q-.235 0-.504.08-.27.081-.489.27a1.4 1.4 0 0 0-.38.496q-.146.306-.146.759v4.393h-1.489v-7.4h1.489v.788q.452-.408.89-.642.439-.234 1.08-.234v1.577Zm3.829-3.08h-.672q-.438 0-.438.511v1.08h1.109v1.168h-1.109v6.232h-1.489v-6.232h-.73v-1.168h.73v-1.007q0-.54.161-.912.159-.372.438-.62.262-.248.605-.35t.708-.102h.687zm5.026 6.51q0 .453-.059.832a2 2 0 0 1-.219.672 2 2 0 0 1-.751.774q-.49.292-1.19.292c-.7 0-.864-.097-1.19-.292a2 2 0 0 1-.752-.774 2 2 0 0 1-.219-.672 5.5 5.5 0 0 1-.058-.832v-2.438q0-.453.058-.832c.058-.379.111-.477.219-.672q.263-.482.752-.774.488-.292 1.19-.292c.702 0 .863.097 1.19.292q.488.292.751.774.161.293.219.672.059.38.059.832zm4.512-3.43a1.2 1.2 0 0 0-.452-.088q-.235 0-.504.08-.27.081-.489.27a1.4 1.4 0 0 0-.379.496q-.146.306-.146.759v4.393h-1.489v-7.4h1.489v.788a4.6 4.6 0 0 1 .889-.642q.439-.234 1.08-.234v1.577ZM83.159 8.37h3.669l2.311 11.007h.068l2.31-11.007h3.669l-4.484 17.224h-3.058L83.16 8.37Zm12.107 29.426h-1.489v-5.123q0-.409-.19-.643-.189-.233-.54-.233-.423 0-.583.263-.16.262-.161.759v4.977h-1.489v-5.123q0-.408-.19-.643-.19-.233-.54-.233-.423 0-.584.263-.16.262-.16.759v4.977h-1.489v-7.4h1.489v.715h.029q.233-.35.561-.577t.839-.226q.482 0 .803.234t.525.51q.278-.307.613-.525.336-.219.934-.219.278 0 .569.095a1.4 1.4 0 0 1 .526.314q.234.219.379.562.146.343.146.839v5.678Z"/>
|
|
7
|
+
<path fill="currentcolor" d="M80.349 31.797q-.336 0-.533.212c-.197.212-.197.353-.197.635v2.904q0 .424.197.635c.197.211.309.212.533.212s.401-.071.532-.212.198-.352.198-.635v-2.904q0-.423-.198-.635c-.198-.212-.309-.212-.532-.212M64.407 11.631q-.985 0-1.342.611t-.357 1.427v6.319q0 1.053.408 1.699c.408.646.702.646 1.291.646q.78 0 1.257-.595.476-.594.476-1.546V13.5q0-.815-.492-1.342a1.63 1.63 0 0 0-1.24-.527Z"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.sbdocs.sbdocs-content .title {
|
|
2
|
+
font-size: 1.5em;
|
|
3
|
+
font-weight: bold;
|
|
4
|
+
line-height: 1.2;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.grid {
|
|
8
|
+
padding-inline: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.card {
|
|
12
|
+
grid-column: var(--grid_span-25)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.cardContent {
|
|
16
|
+
font-size: var(--font_size--body--s);
|
|
17
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import {Meta} from '@storybook/blocks';
|
|
2
|
+
import {Button} from "../components/interaction/Button/index.ts";
|
|
3
|
+
import componentsPackageJson from '../../package.json';
|
|
4
|
+
import foundationPackageJson from '../../node_modules/@boostdev/design-system-foundation/package.json';
|
|
5
|
+
import './Introduction.css';
|
|
6
|
+
import {ButtonGroup} from "../components/layout/ButtonGroup/index.ts";
|
|
7
|
+
import {Card} from "../components/layout/Card/index.ts";
|
|
8
|
+
|
|
9
|
+
<Meta title="Introduction"/>
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<div>
|
|
14
|
+
<div>
|
|
15
|
+
<img src="../../src/static/logo.svg" alt="BoostDev logo" width={200}/>
|
|
16
|
+
<div className="title">Design System Foundation {foundationPackageJson.version} &<br/> Components {componentsPackageJson.version}</div>
|
|
17
|
+
</div>
|
|
18
|
+
<div className="main-description">
|
|
19
|
+
<p>
|
|
20
|
+
Accessible, token-driven React components. Zero extra runtime.
|
|
21
|
+
</p>
|
|
22
|
+
<ButtonGroup variant="content">
|
|
23
|
+
<Button variant="secondary" href="https://www.npmjs.com/package/@boostdev/design-system-foundation">DS Foundation</Button>
|
|
24
|
+
<Button variant="secondary" href="https://www.npmjs.com/package/@boostdev/design-system-components">DS Components</Button>
|
|
25
|
+
</ButtonGroup>
|
|
26
|
+
</div>
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm add @boostdev/components @boostdev/design-system-foundation
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Import the CSS once at your app root:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import '@boostdev/design-system-foundation/css';
|
|
39
|
+
import '@boostdev/components/css';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For **Next.js / RSC**, use the `/client` subpath:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import {Button, Card} from '@boostdev/components/client';
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Components
|
|
51
|
+
|
|
52
|
+
<div className="utl-main-grid grid">
|
|
53
|
+
|
|
54
|
+
<Card className="card">
|
|
55
|
+
<strong>UI</strong>
|
|
56
|
+
<div className="cardContent">
|
|
57
|
+
Badge · Typography · Alert · Avatar · Loading · Skeleton · Separator · Tooltip · Progress ·
|
|
58
|
+
ProgressCircle · Tabs · Breadcrumb · Accordion · Pagination · Link · Table · DescriptionList ·
|
|
59
|
+
NotificationBanner · SkipLink · Carousel · Calendar
|
|
60
|
+
</div>
|
|
61
|
+
</Card>
|
|
62
|
+
|
|
63
|
+
<Card className="card">
|
|
64
|
+
<strong>Interaction</strong>
|
|
65
|
+
<div className="cardContent">
|
|
66
|
+
Button · Dialog · Toast · Rating · Popover · DropdownMenu · Command · Drawer
|
|
67
|
+
</div>
|
|
68
|
+
</Card>
|
|
69
|
+
|
|
70
|
+
<Card className="card">
|
|
71
|
+
<strong>Form</strong>
|
|
72
|
+
<div className="cardContent">
|
|
73
|
+
FormInput · Checkbox · Radio · Switch · Select · Textarea · Slider · NumberInput · FileInput · Combobox
|
|
74
|
+
</div>
|
|
75
|
+
</Card>
|
|
76
|
+
|
|
77
|
+
<Card className="card">
|
|
78
|
+
<strong>Layout</strong>
|
|
79
|
+
<div className="cardContent">
|
|
80
|
+
ButtonGroup · Card · SectionHeader · IconWrapper
|
|
81
|
+
</div>
|
|
82
|
+
</Card>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Design tokens
|
|
88
|
+
|
|
89
|
+
All components consume tokens from `@boostdev/design-system-foundation`. Override semantic tokens to retheme
|
|
90
|
+
everything at once:
|
|
91
|
+
|
|
92
|
+
```css
|
|
93
|
+
@layer tokens.override {
|
|
94
|
+
:root {
|
|
95
|
+
--color_cta: var(--BASE__color--orange);
|
|
96
|
+
--color_on-cta: var(--BASE__color--white);
|
|
97
|
+
--color_interactive: var(--BASE__color--orange);
|
|
98
|
+
--color_active: var(--BASE__color--orange);
|
|
99
|
+
--color_on-active: var(--BASE__color--white);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Dark mode is applied via `[data-theme="dark"]` or `prefers-color-scheme`. Use the **Theme** toolbar button at the
|
|
105
|
+
top of Storybook to toggle.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## MCP server
|
|
110
|
+
|
|
111
|
+
The design system exposes a live MCP server at `https://ds.boostdev.nl/api/mcp`.
|
|
112
|
+
AI coding agents can connect to it to query component props and tokens without reading source files directly.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<table>
|
|
116
|
+
<thead>
|
|
117
|
+
<tr><th>Tool</th><th>Description</th></tr>
|
|
118
|
+
</thead>
|
|
119
|
+
<tbody>
|
|
120
|
+
<tr><td>`ds_get_component`</td><td>Full props interface for a named component</td></tr>
|
|
121
|
+
<tr><td>`ds_list_components`</td><td>All components grouped by category</td></tr>
|
|
122
|
+
<tr><td>`ds_list_tokens`</td><td>Design tokens, filterable by group</td></tr>
|
|
123
|
+
<tr><td>`ds_search`</td><td>Keyword search across components and tokens</td></tr>
|
|
124
|
+
<tr><td>`ds_get_guide`</td><td>Returns the AGENTS.md usage guide</td></tr>
|
|
125
|
+
</tbody>
|
|
126
|
+
</table>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
</div>
|