@boostdev/design-system-components 1.2.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/AGENTS.md +5 -3
  2. package/README.md +57 -38
  3. package/dist/client.cjs +52 -50
  4. package/dist/client.css +537 -524
  5. package/dist/client.d.cts +31 -1
  6. package/dist/client.d.ts +31 -1
  7. package/dist/client.js +52 -50
  8. package/dist/index.cjs +52 -50
  9. package/dist/index.css +537 -524
  10. package/dist/index.d.cts +31 -1
  11. package/dist/index.d.ts +31 -1
  12. package/dist/index.js +52 -50
  13. package/dist/native/index.cjs +5 -2
  14. package/dist/native/index.d.cts +3 -1
  15. package/dist/native/index.d.ts +3 -1
  16. package/dist/native/index.js +5 -2
  17. package/dist/web-components/{chunk-DZRSJGPB.js → chunk-3S42DZ7W.js} +1 -1
  18. package/dist/web-components/{chunk-3REOIRDW.js → chunk-N3TN6WCH.js} +26 -1
  19. package/dist/web-components/globals.js +1 -1
  20. package/dist/web-components/index.js +2 -2
  21. package/dist/web-components/interaction/bds-button.d.ts +7 -0
  22. package/dist/web-components/interaction/bds-button.js +1 -1
  23. package/package.json +3 -3
  24. package/src/components/interaction/Button/Button.mdx +84 -29
  25. package/src/components/interaction/Button/Button.module.css +25 -1
  26. package/src/components/interaction/Button/Button.native.mdx +33 -14
  27. package/src/components/interaction/Button/Button.native.spec.tsx +20 -0
  28. package/src/components/interaction/Button/Button.native.stories.tsx +110 -9
  29. package/src/components/interaction/Button/Button.native.tsx +13 -4
  30. package/src/components/interaction/Button/Button.spec.tsx +16 -0
  31. package/src/components/interaction/Button/Button.stories.tsx +134 -16
  32. package/src/components/interaction/Button/Button.tsx +32 -0
  33. package/src/components/interaction/Command/Command.module.css +1 -1
  34. package/src/components/interaction/Dialog/Dialog.module.css +1 -1
  35. package/src/components/interaction/Dialog/Dialog.native.mdx +2 -2
  36. package/src/components/interaction/Drawer/Drawer.module.css +1 -1
  37. package/src/components/interaction/Drawer/Drawer.native.mdx +2 -2
  38. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +1 -1
  39. package/src/components/interaction/DropdownMenu/DropdownMenu.native.mdx +2 -2
  40. package/src/components/interaction/Popover/Popover.module.css +1 -1
  41. package/src/components/interaction/Popover/Popover.native.mdx +2 -2
  42. package/src/components/interaction/Rating/Rating.module.css +1 -1
  43. package/src/components/interaction/Rating/Rating.native.mdx +1 -1
  44. package/src/components/interaction/Toast/Toast.module.css +1 -1
  45. package/src/components/interaction/Toast/Toast.native.mdx +3 -3
  46. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -1
  47. package/src/components/interaction/form/Checkbox/Checkbox.native.mdx +1 -1
  48. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +1 -1
  49. package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.mdx +1 -1
  50. package/src/components/interaction/form/Combobox/Combobox.module.css +1 -1
  51. package/src/components/interaction/form/Combobox/Combobox.native.mdx +1 -1
  52. package/src/components/interaction/form/FileInput/FileInput.module.css +1 -1
  53. package/src/components/interaction/form/FileInput/FileInput.native.mdx +1 -1
  54. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -1
  55. package/src/components/interaction/form/FormInput/FormInput.native.mdx +1 -1
  56. package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -1
  57. package/src/components/interaction/form/NumberInput/NumberInput.native.mdx +1 -1
  58. package/src/components/interaction/form/Radio/Radio.module.css +1 -1
  59. package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +1 -1
  60. package/src/components/interaction/form/RadioGroup/RadioGroup.native.mdx +1 -1
  61. package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +1 -1
  62. package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.mdx +1 -1
  63. package/src/components/interaction/form/Select/Select.module.css +1 -1
  64. package/src/components/interaction/form/Select/Select.native.mdx +1 -1
  65. package/src/components/interaction/form/Slider/Slider.module.css +1 -1
  66. package/src/components/interaction/form/Slider/Slider.native.mdx +1 -1
  67. package/src/components/interaction/form/Switch/Switch.module.css +1 -1
  68. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -1
  69. package/src/components/interaction/form/Textarea/Textarea.native.mdx +1 -1
  70. package/src/components/interaction/form/atoms/InputContainer.module.css +1 -1
  71. package/src/components/interaction/form/atoms/Label.module.css +1 -1
  72. package/src/components/interaction/form/atoms/Message.module.css +1 -1
  73. package/src/components/layout/ButtonGroup/ButtonGroup.module.css +1 -1
  74. package/src/components/layout/Card/Card.module.css +1 -1
  75. package/src/components/layout/IconWrapper/IconWrapper.module.css +1 -1
  76. package/src/components/layout/IconWrapper/IconWrapper.stories.tsx +46 -14
  77. package/src/components/layout/SectionHeader/SectionHeader.module.css +1 -1
  78. package/src/components/ui/Accordion/Accordion.module.css +1 -1
  79. package/src/components/ui/Accordion/Accordion.native.mdx +1 -1
  80. package/src/components/ui/Accordion/Accordion.native.stories.tsx +1 -1
  81. package/src/components/ui/Alert/Alert.module.css +1 -1
  82. package/src/components/ui/Alert/Alert.native.mdx +1 -1
  83. package/src/components/ui/Avatar/Avatar.module.css +1 -1
  84. package/src/components/ui/Avatar/Avatar.native.mdx +1 -1
  85. package/src/components/ui/Badge/Badge.module.css +1 -1
  86. package/src/components/ui/Badge/Badge.native.mdx +1 -1
  87. package/src/components/ui/Breadcrumb/Breadcrumb.module.css +1 -1
  88. package/src/components/ui/Breadcrumb/Breadcrumb.native.mdx +1 -1
  89. package/src/components/ui/Calendar/Calendar.module.css +1 -1
  90. package/src/components/ui/Calendar/Calendar.native.mdx +1 -1
  91. package/src/components/ui/Carousel/Carousel.module.css +1 -1
  92. package/src/components/ui/Carousel/Carousel.native.mdx +1 -1
  93. package/src/components/ui/Collapsible/Collapsible.module.css +1 -1
  94. package/src/components/ui/Collapsible/Collapsible.native.mdx +1 -1
  95. package/src/components/ui/DescriptionList/DescriptionList.module.css +1 -1
  96. package/src/components/ui/DescriptionList/DescriptionList.native.mdx +1 -1
  97. package/src/components/ui/Link/Link.module.css +1 -1
  98. package/src/components/ui/Link/Link.native.mdx +1 -1
  99. package/src/components/ui/Loading/Loading.module.css +1 -1
  100. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +1 -1
  101. package/src/components/ui/Pagination/Pagination.module.css +1 -1
  102. package/src/components/ui/Pagination/Pagination.native.mdx +1 -1
  103. package/src/components/ui/Progress/Progress.module.css +1 -1
  104. package/src/components/ui/ProgressCircle/ProgressCircle.module.css +1 -1
  105. package/src/components/ui/ProgressCircle/ProgressCircle.native.mdx +1 -1
  106. package/src/components/ui/Separator/Separator.module.css +1 -1
  107. package/src/components/ui/Skeleton/Skeleton.module.css +1 -1
  108. package/src/components/ui/SkipLink/SkipLink.module.css +1 -1
  109. package/src/components/ui/Table/Table.module.css +1 -1
  110. package/src/components/ui/Table/Table.native.mdx +1 -1
  111. package/src/components/ui/Tabs/Tabs.module.css +1 -1
  112. package/src/components/ui/Tabs/Tabs.native.mdx +1 -1
  113. package/src/components/ui/Tooltip/Tooltip.module.css +1 -1
  114. package/src/components/ui/Tooltip/Tooltip.native.mdx +1 -1
  115. package/src/components/ui/Typography/Typography.module.css +1 -1
  116. package/src/components/ui/Typography/Typography.native.mdx +1 -1
  117. package/src/css/bdc.css +1 -1
  118. package/src/css/index.css +1 -1
  119. package/src/stories/DesignSystem/Borders.mdx +3 -3
  120. package/src/stories/DesignSystem/Colors.mdx +1 -1
  121. package/src/stories/DesignSystem/DarkMode.mdx +3 -3
  122. package/src/stories/DesignSystem/Overview.mdx +16 -5
  123. package/src/stories/DesignSystem/Typography.mdx +1 -1
  124. package/src/stories/Introduction.mdx +4 -4
  125. package/src/stories/ReactNative.mdx +6 -6
  126. package/src/web-components/globals.ts +1 -1
  127. package/src/web-components/interaction/BdsAccordion.mdx +3 -3
  128. package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
  129. package/src/web-components/interaction/BdsButton.mdx +48 -16
  130. package/src/web-components/interaction/BdsButton.stories.tsx +171 -19
  131. package/src/web-components/interaction/BdsCollapsible.mdx +2 -2
  132. package/src/web-components/interaction/BdsDialog.mdx +2 -2
  133. package/src/web-components/interaction/BdsDrawer.mdx +2 -2
  134. package/src/web-components/interaction/BdsDropdownMenu.mdx +2 -2
  135. package/src/web-components/interaction/BdsPopover.mdx +1 -1
  136. package/src/web-components/interaction/BdsSkipLink.mdx +2 -2
  137. package/src/web-components/interaction/BdsTabs.mdx +2 -2
  138. package/src/web-components/interaction/BdsToastProvider.mdx +3 -3
  139. package/src/web-components/interaction/BdsTooltip.mdx +2 -2
  140. package/src/web-components/interaction/bds-button.spec.ts +35 -0
  141. package/src/web-components/interaction/bds-button.ts +28 -1
  142. package/src/web-components/interaction/form/BdsCheckbox.mdx +1 -1
  143. package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +1 -1
  144. package/src/web-components/interaction/form/BdsCombobox.mdx +1 -1
  145. package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
  146. package/src/web-components/interaction/form/BdsFormInput.mdx +1 -1
  147. package/src/web-components/interaction/form/BdsNumberInput.mdx +1 -1
  148. package/src/web-components/interaction/form/BdsRadio.mdx +1 -1
  149. package/src/web-components/interaction/form/BdsRadioGroup.mdx +1 -1
  150. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
  151. package/src/web-components/interaction/form/BdsSelect.mdx +1 -1
  152. package/src/web-components/interaction/form/BdsSlider.mdx +1 -1
  153. package/src/web-components/interaction/form/BdsSwitch.mdx +1 -1
  154. package/src/web-components/interaction/form/BdsTextarea.mdx +1 -1
  155. package/src/web-components/ui/BdsAlert.mdx +1 -1
  156. package/src/web-components/ui/BdsAvatar.mdx +1 -1
  157. package/src/web-components/ui/BdsBadge.mdx +1 -1
  158. package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
  159. package/src/web-components/ui/BdsButtonGroup.mdx +1 -1
  160. package/src/web-components/ui/BdsCalendar.mdx +1 -1
  161. package/src/web-components/ui/BdsCard.mdx +1 -1
  162. package/src/web-components/ui/BdsCarousel.mdx +1 -1
  163. package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
  164. package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
  165. package/src/web-components/ui/BdsLink.mdx +1 -1
  166. package/src/web-components/ui/BdsLoading.mdx +1 -1
  167. package/src/web-components/ui/BdsNotificationBanner.mdx +1 -1
  168. package/src/web-components/ui/BdsPagination.mdx +1 -1
  169. package/src/web-components/ui/BdsProgress.mdx +1 -1
  170. package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
  171. package/src/web-components/ui/BdsRating.mdx +1 -1
  172. package/src/web-components/ui/BdsSectionHeader.mdx +1 -1
  173. package/src/web-components/ui/BdsSeparator.mdx +2 -2
  174. package/src/web-components/ui/BdsSkeleton.mdx +1 -1
  175. package/src/web-components/ui/BdsTable.mdx +1 -1
  176. package/src/web-components/ui/BdsTypography.mdx +1 -1
package/AGENTS.md CHANGED
@@ -13,7 +13,7 @@ A component library with three targets:
13
13
  ```css
14
14
  @import '@boostdev/design-system-foundation/css';
15
15
  ```
16
- All component styles live inside `@layer component`.
16
+ All component styles live inside `@layer boostdev.component`.
17
17
 
18
18
  **Web Components:** import the bundle to register all custom elements:
19
19
  ```js
@@ -77,7 +77,7 @@ React Native overview: `src/stories/ReactNative.mdx`.
77
77
  ## Styling conventions
78
78
 
79
79
  - CSS Modules (`.module.css`) for all components — styles are scoped, no global leakage
80
- - All rules placed inside `@layer component` to sit above token layers in the cascade
80
+ - All rules placed inside `@layer boostdev.component` to sit above token layers in the cascade
81
81
  - Variant classes follow the pattern `--{variant}` or `--{group}_{variant}` matching the source
82
82
  - Component-level CSS custom properties (e.g. `--button_bg`) can be overridden from a parent
83
83
  - Never hardcode colours, spacing, or typography values — always use design tokens
@@ -212,6 +212,8 @@ import '@boostdev/design-system-components/css';
212
212
 
213
213
  > **`cn()` in Server Components**: For `cn` only, prefer `@boostdev/design-system-components/utils` — the root entry includes a CSS side-effect import.
214
214
 
215
+ > **Next.js styles not applying?** Import the pre-built CSS once at the root: `import '@boostdev/design-system-components/css'` (exposed via the `./css` subpath in the package's `exports` map). `transpilePackages` is **not** required — class names are renamed to `bds{version}{Component}-*` at build time by `scripts/patch-css-modules.mjs`, and the JS bundle contains no runtime CSS Module imports. Forgetting the CSS import is the most common cause of unstyled components.
216
+
215
217
  ## Accessibility requirements (WCAG 2.1 AA)
216
218
 
217
219
  Every component must meet WCAG 2.1 Level AA:
@@ -271,7 +273,7 @@ Key patterns:
271
273
 
272
274
  1. Create `src/components/{category}/{ComponentName}/`
273
275
  2. Add `ComponentName.tsx`, `ComponentName.module.css`, `index.ts`
274
- 3. Wrap all CSS rules in `@layer component { ... }`
276
+ 3. Wrap all CSS rules in `@layer boostdev.component { ... }`
275
277
  4. Use only design token custom properties for colours, spacing, typography
276
278
  5. Export the props interface (`export interface ComponentNameProps`) from the component file
277
279
  6. Re-export component and props type from the local `index.ts` and from `src/index.ts`
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @boostdev/components
1
+ # @boostdev/design-system-components
2
2
 
3
3
  Accessible, token-driven React components built on [`@boostdev/design-system-foundation`](https://www.npmjs.com/package/@boostdev/design-system-foundation).
4
4
  Zero extra runtime — bring your own CSS reset and token layer, then import the components.
@@ -6,9 +6,9 @@ Zero extra runtime — bring your own CSS reset and token layer, then import the
6
6
  ## Installation
7
7
 
8
8
  ```bash
9
- pnpm add @boostdev/components @boostdev/design-system-foundation
10
- npm install @boostdev/components @boostdev/design-system-foundation
11
- yarn add @boostdev/components @boostdev/design-system-foundation
9
+ pnpm add @boostdev/design-system-components @boostdev/design-system-foundation
10
+ npm install @boostdev/design-system-components @boostdev/design-system-foundation
11
+ yarn add @boostdev/design-system-components @boostdev/design-system-foundation
12
12
  ```
13
13
 
14
14
  `@boostdev/design-system-foundation` is a required peer dependency. The components rely on its
@@ -21,7 +21,7 @@ Import the design system tokens and the component styles once at your app root:
21
21
  ```css
22
22
  /* app.css */
23
23
  @import "@boostdev/design-system-foundation/css";
24
- @import "@boostdev/components/css";
24
+ @import "@boostdev/design-system-components/css";
25
25
  ```
26
26
 
27
27
  Or with a JS bundler (Vite, Next.js, etc.):
@@ -29,17 +29,17 @@ Or with a JS bundler (Vite, Next.js, etc.):
29
29
  ```ts
30
30
  // main.ts / layout.tsx
31
31
  import '@boostdev/design-system-foundation/css';
32
- import '@boostdev/components/css';
32
+ import '@boostdev/design-system-components/css';
33
33
  ```
34
34
 
35
- All component styles live inside `@layer component`, which sits above the token layers in the
35
+ All component styles live inside `@layer boostdev.component`, which sits above the token layers in the
36
36
  cascade. You can override any component from outside without specificity fights.
37
37
 
38
38
  ---
39
39
 
40
40
  ## Next.js / React Server Components
41
41
 
42
- The main `@boostdev/components` entry has no `'use client'` directive. When Next.js evaluates the
42
+ The main `@boostdev/design-system-components` entry has no `'use client'` directive. When Next.js evaluates the
43
43
  bundle in a React Server Component context, components that call `createContext` (e.g. `Toast`) will
44
44
  crash at module evaluation time.
45
45
 
@@ -48,15 +48,33 @@ bundle, which tells Next.js to treat it as client-only code:
48
48
 
49
49
  ```ts
50
50
  // Plain React / Vite — unchanged
51
- import { Button, Card } from '@boostdev/components';
51
+ import { Button, Card } from '@boostdev/design-system-components';
52
52
 
53
53
  // Next.js / RSC — use the /client subpath
54
- import { Button, Card } from '@boostdev/components/client';
54
+ import { Button, Card } from '@boostdev/design-system-components/client';
55
55
 
56
56
  // Server-safe utilities (cn, WithClassName) — works in Server Components, layouts, middleware
57
- import { cn } from '@boostdev/components/utils';
57
+ import { cn } from '@boostdev/design-system-components/utils';
58
58
  ```
59
59
 
60
+ ### Styles won't apply? Import the CSS file
61
+
62
+ The most common cause of unstyled components in a Next.js app is forgetting to import the CSS
63
+ bundle. This package ships pre-built, already-scoped CSS (class names are renamed at build time
64
+ to `bds{version}{Component}-*`), so Next.js does **not** need to process it — you just need to
65
+ load it once at the root:
66
+
67
+ ```ts
68
+ // app/layout.tsx (App Router) or pages/_app.tsx (Pages Router)
69
+ import '@boostdev/design-system-foundation/css';
70
+ import '@boostdev/design-system-components/css';
71
+ ```
72
+
73
+ The `./css` subpath is exposed in the package's `exports` map and points at the pre-built
74
+ `dist/index.css`. You do **not** need `transpilePackages` for this library — classes are already
75
+ scoped at publish time and the JS bundle contains no runtime CSS Module imports. Add
76
+ `transpilePackages` only if another dependency in your tree genuinely requires it.
77
+
60
78
  ---
61
79
 
62
80
  ## Usage
@@ -66,7 +84,7 @@ import { cn } from '@boostdev/components/utils';
66
84
  #### Badge
67
85
 
68
86
  ```tsx
69
- import { Badge } from '@boostdev/components';
87
+ import { Badge } from '@boostdev/design-system-components';
70
88
 
71
89
  <Badge>New</Badge>
72
90
  <Badge variant="success">Active</Badge>
@@ -82,7 +100,7 @@ Variants: `primary` (default) · `secondary` · `success` · `error` · `warning
82
100
  #### Collapsible
83
101
 
84
102
  ```tsx
85
- import { Collapsible } from '@boostdev/components';
103
+ import { Collapsible } from '@boostdev/design-system-components';
86
104
 
87
105
  <Collapsible summary="What is the return policy?" defaultOpen>
88
106
  You can return any item within 30 days of purchase.
@@ -100,7 +118,7 @@ Built on native `<details>`/`<summary>`. Use `name` to group multiple Collapsibl
100
118
  #### Typography
101
119
 
102
120
  ```tsx
103
- import { Typography } from '@boostdev/components';
121
+ import { Typography } from '@boostdev/design-system-components';
104
122
 
105
123
  <Typography variant="h1">Page title</Typography>
106
124
  <Typography variant="h2">Section title</Typography>
@@ -121,7 +139,7 @@ Variants: `h1` · `h2` · `h3` · `body` (default) · `body_s`
121
139
  #### Loading
122
140
 
123
141
  ```tsx
124
- import { Loading } from '@boostdev/components';
142
+ import { Loading } from '@boostdev/design-system-components';
125
143
 
126
144
  <Loading />
127
145
  <Loading size="small" />
@@ -135,7 +153,7 @@ Sizes: `small` · `medium` (default) · `large`
135
153
  #### Skeleton
136
154
 
137
155
  ```tsx
138
- import { Skeleton } from '@boostdev/components';
156
+ import { Skeleton } from '@boostdev/design-system-components';
139
157
 
140
158
  <Skeleton className="w-48 h-4" />
141
159
  ```
@@ -149,13 +167,13 @@ Renders an `aria-hidden` shimmer block. Size it with a `className` or inline sty
149
167
  #### Button
150
168
 
151
169
  ```tsx
152
- import { Button } from '@boostdev/components';
170
+ import { Button } from '@boostdev/design-system-components';
153
171
 
154
172
  <Button>Click me</Button>
155
173
  <Button variant="outline">Cancel</Button>
156
174
  <Button size="small">Small</Button>
157
175
  <Button href="/dashboard">Link button</Button>
158
- <Button iconStart={<Icon />} aria-label="Delete" />
176
+ <Button isIconOnly aria-label="Delete"><Icon /></Button>
159
177
  <Button hasPulse>Call to action</Button>
160
178
  ```
161
179
 
@@ -166,6 +184,7 @@ import { Button } from '@boostdev/components';
166
184
  | `href` | `string` | — renders an `<a>` |
167
185
  | `iconStart` | `ReactNode` | — |
168
186
  | `iconEnd` | `ReactNode` | — |
187
+ | `isIconOnly` | `boolean` | `false` — forces 1:1 aspect ratio with minimal padding. Requires `aria-label`. |
169
188
  | `hasPulse` | `boolean` | `false` |
170
189
  | `disabled` | `boolean` | `false` |
171
190
 
@@ -187,7 +206,7 @@ import { Button } from '@boostdev/components';
187
206
  #### Dialog
188
207
 
189
208
  ```tsx
190
- import { Dialog } from '@boostdev/components';
209
+ import { Dialog } from '@boostdev/design-system-components';
191
210
 
192
211
  <Dialog isOpen={open} onClose={() => setOpen(false)}>
193
212
  <h2>Confirm</h2>
@@ -206,7 +225,7 @@ Override the backdrop colour via `--color_backdrop` (default: `rgb(0 0 0 / 50%)`
206
225
  #### Rating
207
226
 
208
227
  ```tsx
209
- import { Rating } from '@boostdev/components';
228
+ import { Rating } from '@boostdev/design-system-components';
210
229
 
211
230
  <Rating value={3} />
212
231
  <Rating value={4} max={10} />
@@ -220,7 +239,7 @@ background colour.
220
239
  #### Toast
221
240
 
222
241
  ```tsx
223
- import { ToastProvider, useToast } from '@boostdev/components';
242
+ import { ToastProvider, useToast } from '@boostdev/design-system-components';
224
243
 
225
244
  // Wrap your app (or layout) once:
226
245
  <ToastProvider>
@@ -251,7 +270,7 @@ All components accept native HTML attributes for their root element via `...rest
251
270
  #### FormInput
252
271
 
253
272
  ```tsx
254
- import { FormInput } from '@boostdev/components';
273
+ import { FormInput } from '@boostdev/design-system-components';
255
274
 
256
275
  <FormInput
257
276
  label="Email"
@@ -265,7 +284,7 @@ import { FormInput } from '@boostdev/components';
265
284
  #### Checkbox
266
285
 
267
286
  ```tsx
268
- import { Checkbox, CheckboxGroup } from '@boostdev/components';
287
+ import { Checkbox, CheckboxGroup } from '@boostdev/design-system-components';
269
288
 
270
289
  <Checkbox
271
290
  label="I agree to the terms"
@@ -287,7 +306,7 @@ Group multiple checkboxes with a shared label using `CheckboxGroup`:
287
306
  #### Radio
288
307
 
289
308
  ```tsx
290
- import { Radio, RadioGroup } from '@boostdev/components';
309
+ import { Radio, RadioGroup } from '@boostdev/design-system-components';
291
310
 
292
311
  <RadioGroup legend="Preferred contact" required>
293
312
  <Radio label="Option A" name="choice" value="a" description="Optional supporting text." />
@@ -298,7 +317,7 @@ import { Radio, RadioGroup } from '@boostdev/components';
298
317
  #### Switch
299
318
 
300
319
  ```tsx
301
- import { Switch } from '@boostdev/components';
320
+ import { Switch } from '@boostdev/design-system-components';
302
321
 
303
322
  <Switch label="Enable notifications" name="notifications" />
304
323
  <Switch label="Dark mode" name="dark-mode" defaultChecked />
@@ -310,7 +329,7 @@ Sizes: `small` · `medium` (default) · `large`
310
329
  #### SegmentedControl
311
330
 
312
331
  ```tsx
313
- import { SegmentedControl } from '@boostdev/components';
332
+ import { SegmentedControl } from '@boostdev/design-system-components';
314
333
 
315
334
  <SegmentedControl aria-label="Calendar view" selectedIndex={1}>
316
335
  <button>Day</button>
@@ -334,7 +353,7 @@ Children-based API — pass `<button>`, `<a>`, or router `<Link>` elements direc
334
353
  #### ButtonGroup
335
354
 
336
355
  ```tsx
337
- import { ButtonGroup, Button } from '@boostdev/components';
356
+ import { ButtonGroup, Button } from '@boostdev/design-system-components';
338
357
 
339
358
  <ButtonGroup variant="flow" aria-label="Page navigation">
340
359
  <Button>Back</Button>
@@ -352,7 +371,7 @@ import { ButtonGroup, Button } from '@boostdev/components';
352
371
  #### Card
353
372
 
354
373
  ```tsx
355
- import { Card } from '@boostdev/components';
374
+ import { Card } from '@boostdev/design-system-components';
356
375
 
357
376
  <Card>Basic card</Card>
358
377
  <Card variant="elevated" padding="large">Elevated</Card>
@@ -372,7 +391,7 @@ import { Card } from '@boostdev/components';
372
391
  #### SectionHeader
373
392
 
374
393
  ```tsx
375
- import { SectionHeader } from '@boostdev/components';
394
+ import { SectionHeader } from '@boostdev/design-system-components';
376
395
 
377
396
  <SectionHeader title="Our services" />
378
397
  <SectionHeader
@@ -395,7 +414,7 @@ import { SectionHeader } from '@boostdev/components';
395
414
  #### IconWrapper
396
415
 
397
416
  ```tsx
398
- import { IconWrapper } from '@boostdev/components';
417
+ import { IconWrapper } from '@boostdev/design-system-components';
399
418
 
400
419
  <IconWrapper>
401
420
  <svg>...</svg>
@@ -420,10 +439,10 @@ Composes class name strings, filtering out falsy values:
420
439
 
421
440
  ```ts
422
441
  // Server-safe — works in Server Components, layouts, middleware
423
- import { cn } from '@boostdev/components/utils';
442
+ import { cn } from '@boostdev/design-system-components/utils';
424
443
 
425
444
  // Also available from root or /client (but these are client-only in Next.js)
426
- import { cn } from '@boostdev/components';
445
+ import { cn } from '@boostdev/design-system-components';
427
446
 
428
447
  cn('card', isActive && 'card--active', [extraClass])
429
448
  // → "card card--active extraClass"
@@ -444,7 +463,7 @@ Every component exposes CSS custom properties as a styling API. Set them on a pa
444
463
  }
445
464
  ```
446
465
 
447
- All component styles sit in `@layer component`. You can also write rules in a higher layer:
466
+ All component styles sit in `@layer boostdev.component`. You can also write rules in a higher layer:
448
467
 
449
468
  ```css
450
469
  @layer my-overrides {
@@ -500,7 +519,7 @@ retheme all components at once:
500
519
 
501
520
  ```css
502
521
  /* tokens.config.css — import after the design system CSS */
503
- @layer tokens.override {
522
+ @layer boostdev.tokens.override {
504
523
  :root {
505
524
  --bds-cta: var(--bds-BASE__color--orange);
506
525
  --bds-on-cta: var(--bds-BASE__color--white);
@@ -516,7 +535,7 @@ and progress indicators. Override it once to retheme checkboxes, radio buttons,
516
535
  bars, and the switch thumb simultaneously:
517
536
 
518
537
  ```css
519
- @layer tokens.override {
538
+ @layer boostdev.tokens.override {
520
539
  :root {
521
540
  --bds-active: var(--bds-BASE__color--blue);
522
541
  --bds-on-active: var(--bds-BASE__color--white);
@@ -548,7 +567,7 @@ pnpm storybook # Storybook dev server on port 6006
548
567
 
549
568
  1. Create `src/components/{category}/{Name}/`
550
569
  2. Add `Name.tsx`, `Name.module.css`, `index.ts`
551
- 3. Wrap all CSS in `@layer component { ... }`
570
+ 3. Wrap all CSS in `@layer boostdev.component { ... }`
552
571
  4. Use only design token custom properties — no hard-coded colours, spacing, or font sizes
553
572
  5. Re-export from `src/index.ts`
554
573
  6. Run `pnpm build && pnpm typecheck && pnpm lint && pnpm lint:css && pnpm test`
@@ -587,13 +606,13 @@ pnpm mcp:start # listens on http://localhost:3001/api/mcp
587
606
  47 components are available for React Native — near-complete parity with the web library. Metro auto-resolves the native entry via the `"react-native"` export condition.
588
607
 
589
608
  ```tsx
590
- import { Button, FormInput, Dialog, Tabs } from '@boostdev/components';
609
+ import { Button, FormInput, Dialog, Tabs } from '@boostdev/design-system-components';
591
610
  ```
592
611
 
593
612
  Wrap your app in `ThemeProvider`:
594
613
 
595
614
  ```tsx
596
- import { ThemeProvider } from '@boostdev/components/native/ThemeContext';
615
+ import { ThemeProvider } from '@boostdev/design-system-components/native/ThemeContext';
597
616
 
598
617
  export default function App() {
599
618
  return (