@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.
Files changed (128) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/client.cjs +406 -362
  4. package/dist/client.css +560 -511
  5. package/dist/client.d.cts +27 -5
  6. package/dist/client.d.ts +27 -5
  7. package/dist/client.js +405 -362
  8. package/dist/index.cjs +406 -362
  9. package/dist/index.css +560 -511
  10. package/dist/index.d.cts +27 -5
  11. package/dist/index.d.ts +27 -5
  12. package/dist/index.js +405 -362
  13. package/package.json +4 -2
  14. package/src/components/interaction/Button/Button.mdx +73 -0
  15. package/src/components/interaction/Button/Button.module.css +12 -20
  16. package/src/components/interaction/Button/Button.stories.tsx +0 -1
  17. package/src/components/interaction/Command/Command.mdx +28 -0
  18. package/src/components/interaction/Command/Command.module.css +2 -1
  19. package/src/components/interaction/Command/Command.stories.tsx +3 -3
  20. package/src/components/interaction/Dialog/Dialog.mdx +57 -0
  21. package/src/components/interaction/Dialog/Dialog.module.css +1 -1
  22. package/src/components/interaction/Dialog/Dialog.stories.tsx +0 -1
  23. package/src/components/interaction/Drawer/Drawer.mdx +35 -0
  24. package/src/components/interaction/Drawer/Drawer.module.css +3 -9
  25. package/src/components/interaction/Drawer/Drawer.stories.tsx +3 -3
  26. package/src/components/interaction/Drawer/Drawer.tsx +5 -3
  27. package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +40 -0
  28. package/src/components/interaction/DropdownMenu/DropdownMenu.stories.tsx +5 -5
  29. package/src/components/interaction/Popover/Popover.mdx +34 -0
  30. package/src/components/interaction/Popover/Popover.stories.tsx +3 -3
  31. package/src/components/interaction/Rating/Rating.mdx +38 -0
  32. package/src/components/interaction/Rating/Rating.stories.tsx +0 -1
  33. package/src/components/interaction/Toast/Toast.mdx +78 -0
  34. package/src/components/interaction/Toast/Toast.module.css +21 -7
  35. package/src/components/interaction/Toast/Toast.stories.tsx +0 -1
  36. package/src/components/interaction/form/Checkbox/Checkbox.mdx +57 -0
  37. package/src/components/interaction/form/Checkbox/Checkbox.stories.tsx +0 -1
  38. package/src/components/interaction/form/Combobox/Combobox.mdx +37 -0
  39. package/src/components/interaction/form/Combobox/Combobox.stories.tsx +0 -1
  40. package/src/components/interaction/form/FileInput/FileInput.mdx +38 -0
  41. package/src/components/interaction/form/FileInput/FileInput.stories.tsx +0 -1
  42. package/src/components/interaction/form/FormInput/FormInput.mdx +54 -0
  43. package/src/components/interaction/form/FormInput/FormInput.stories.tsx +0 -1
  44. package/src/components/interaction/form/NumberInput/NumberInput.mdx +38 -0
  45. package/src/components/interaction/form/NumberInput/NumberInput.stories.tsx +0 -1
  46. package/src/components/interaction/form/Radio/Radio.mdx +60 -0
  47. package/src/components/interaction/form/Radio/Radio.module.css +24 -11
  48. package/src/components/interaction/form/Radio/Radio.stories.tsx +5 -5
  49. package/src/components/interaction/form/Radio/Radio.tsx +6 -2
  50. package/src/components/interaction/form/Select/Select.mdx +58 -0
  51. package/src/components/interaction/form/Select/Select.stories.tsx +0 -1
  52. package/src/components/interaction/form/Slider/Slider.mdx +58 -0
  53. package/src/components/interaction/form/Slider/Slider.stories.tsx +0 -1
  54. package/src/components/interaction/form/Switch/Switch.mdx +61 -0
  55. package/src/components/interaction/form/Switch/Switch.module.css +6 -10
  56. package/src/components/interaction/form/Switch/Switch.stories.tsx +0 -1
  57. package/src/components/interaction/form/Textarea/Textarea.mdx +41 -0
  58. package/src/components/interaction/form/Textarea/Textarea.stories.tsx +0 -1
  59. package/src/components/layout/ButtonGroup/ButtonGroup.mdx +47 -0
  60. package/src/components/layout/ButtonGroup/ButtonGroup.module.css +10 -10
  61. package/src/components/layout/ButtonGroup/ButtonGroup.stories.tsx +1 -2
  62. package/src/components/layout/Card/Card.mdx +58 -0
  63. package/src/components/layout/Card/Card.stories.tsx +0 -1
  64. package/src/components/layout/IconWrapper/IconWrapper.mdx +39 -0
  65. package/src/components/layout/IconWrapper/IconWrapper.stories.tsx +0 -1
  66. package/src/components/layout/SectionHeader/SectionHeader.mdx +38 -0
  67. package/src/components/layout/SectionHeader/SectionHeader.stories.tsx +0 -1
  68. package/src/components/ui/Accordion/Accordion.mdx +40 -0
  69. package/src/components/ui/Accordion/Accordion.stories.tsx +0 -1
  70. package/src/components/ui/Alert/Alert.mdx +63 -0
  71. package/src/components/ui/Alert/Alert.module.css +3 -7
  72. package/src/components/ui/Alert/Alert.stories.tsx +0 -1
  73. package/src/components/ui/Avatar/Avatar.mdx +53 -0
  74. package/src/components/ui/Avatar/Avatar.module.css +4 -8
  75. package/src/components/ui/Avatar/Avatar.stories.tsx +0 -1
  76. package/src/components/ui/Badge/Badge.mdx +62 -0
  77. package/src/components/ui/Badge/Badge.module.css +4 -10
  78. package/src/components/ui/Badge/Badge.stories.tsx +0 -1
  79. package/src/components/ui/Breadcrumb/Breadcrumb.mdx +36 -0
  80. package/src/components/ui/Breadcrumb/Breadcrumb.stories.tsx +0 -1
  81. package/src/components/ui/Calendar/Calendar.mdx +34 -0
  82. package/src/components/ui/Calendar/Calendar.stories.tsx +0 -1
  83. package/src/components/ui/Carousel/Carousel.mdx +31 -0
  84. package/src/components/ui/Carousel/Carousel.stories.tsx +0 -1
  85. package/src/components/ui/Collapsible/Collapsible.mdx +59 -0
  86. package/src/components/ui/Collapsible/Collapsible.module.css +76 -0
  87. package/src/components/ui/Collapsible/Collapsible.spec.tsx +75 -0
  88. package/src/components/ui/Collapsible/Collapsible.stories.tsx +57 -0
  89. package/src/components/ui/Collapsible/Collapsible.tsx +55 -0
  90. package/src/components/ui/Collapsible/index.ts +2 -0
  91. package/src/components/ui/DescriptionList/DescriptionList.mdx +28 -0
  92. package/src/components/ui/DescriptionList/DescriptionList.stories.tsx +0 -1
  93. package/src/components/ui/Link/Link.mdx +44 -0
  94. package/src/components/ui/Link/Link.module.css +2 -5
  95. package/src/components/ui/Link/Link.stories.tsx +0 -1
  96. package/src/components/ui/Loading/Loading.mdx +52 -0
  97. package/src/components/ui/Loading/Loading.stories.tsx +0 -1
  98. package/src/components/ui/NotificationBanner/NotificationBanner.mdx +45 -0
  99. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +3 -7
  100. package/src/components/ui/NotificationBanner/NotificationBanner.stories.tsx +2 -2
  101. package/src/components/ui/Pagination/Pagination.mdx +39 -0
  102. package/src/components/ui/Pagination/Pagination.module.css +3 -7
  103. package/src/components/ui/Pagination/Pagination.stories.tsx +0 -1
  104. package/src/components/ui/Progress/Progress.mdx +52 -0
  105. package/src/components/ui/Progress/Progress.module.css +1 -3
  106. package/src/components/ui/Progress/Progress.stories.tsx +0 -1
  107. package/src/components/ui/ProgressCircle/ProgressCircle.mdx +46 -0
  108. package/src/components/ui/ProgressCircle/ProgressCircle.stories.tsx +0 -1
  109. package/src/components/ui/Separator/Separator.mdx +29 -0
  110. package/src/components/ui/Separator/Separator.stories.tsx +0 -1
  111. package/src/components/ui/Skeleton/Skeleton.mdx +36 -0
  112. package/src/components/ui/Skeleton/Skeleton.stories.tsx +0 -1
  113. package/src/components/ui/SkipLink/SkipLink.mdx +34 -0
  114. package/src/components/ui/SkipLink/SkipLink.stories.tsx +0 -1
  115. package/src/components/ui/Table/Table.mdx +38 -0
  116. package/src/components/ui/Table/Table.stories.tsx +0 -1
  117. package/src/components/ui/Tabs/Tabs.mdx +40 -0
  118. package/src/components/ui/Tabs/Tabs.module.css +2 -5
  119. package/src/components/ui/Tabs/Tabs.stories.tsx +0 -1
  120. package/src/components/ui/Tooltip/Tooltip.mdx +43 -0
  121. package/src/components/ui/Tooltip/Tooltip.module.css +2 -5
  122. package/src/components/ui/Tooltip/Tooltip.stories.tsx +6 -6
  123. package/src/components/ui/Typography/Typography.mdx +41 -0
  124. package/src/components/ui/Typography/Typography.stories.tsx +0 -1
  125. package/src/index.ts +2 -0
  126. package/src/static/logo.svg +8 -0
  127. package/src/stories/Introduction.css +17 -0
  128. package/src/stories/Introduction.mdx +129 -0
@@ -4,7 +4,6 @@ import { Tabs } from './Tabs';
4
4
  const meta = {
5
5
  title: 'UI/Tabs',
6
6
  component: Tabs,
7
- tags: ['autodocs'],
8
7
  } satisfies Meta<typeof Tabs>;
9
8
 
10
9
  export default meta;
@@ -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
- <button type="button">Hover or focus me</button>
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
- <button type="button">Bottom tooltip</button>
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
- <button type="button">Left tooltip</button>
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
- <button type="button">Right tooltip</button>
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
- <button type="button">{p}</button>
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
@@ -4,7 +4,6 @@ import { Typography } from './Typography';
4
4
  const meta = {
5
5
  title: 'UI/Typography',
6
6
  component: Typography,
7
- tags: ['autodocs'],
8
7
  argTypes: {
9
8
  variant: { control: 'select', options: ['h1', 'h2', 'h3', 'body', 'body_s'] },
10
9
  },
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>