@boostdev/design-system-components 1.2.8 → 2.0.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.
- package/AGENTS.md +5 -3
- package/README.md +55 -37
- package/dist/client.cjs +50 -50
- package/dist/client.css +524 -524
- package/dist/client.d.cts +28 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.js +50 -50
- package/dist/index.cjs +50 -50
- package/dist/index.css +524 -524
- package/dist/index.d.cts +28 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +50 -50
- package/dist/web-components/{chunk-DZRSJGPB.js → chunk-3S42DZ7W.js} +1 -1
- package/dist/web-components/globals.js +1 -1
- package/dist/web-components/index.js +1 -1
- package/package.json +3 -3
- package/src/components/interaction/Button/Button.mdx +13 -3
- package/src/components/interaction/Button/Button.module.css +1 -1
- package/src/components/interaction/Button/Button.native.mdx +2 -2
- package/src/components/interaction/Button/Button.tsx +28 -0
- package/src/components/interaction/Command/Command.module.css +1 -1
- package/src/components/interaction/Dialog/Dialog.module.css +1 -1
- package/src/components/interaction/Dialog/Dialog.native.mdx +2 -2
- package/src/components/interaction/Drawer/Drawer.module.css +1 -1
- package/src/components/interaction/Drawer/Drawer.native.mdx +2 -2
- package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +1 -1
- package/src/components/interaction/DropdownMenu/DropdownMenu.native.mdx +2 -2
- package/src/components/interaction/Popover/Popover.module.css +1 -1
- package/src/components/interaction/Popover/Popover.native.mdx +2 -2
- package/src/components/interaction/Rating/Rating.module.css +1 -1
- package/src/components/interaction/Rating/Rating.native.mdx +1 -1
- package/src/components/interaction/Toast/Toast.module.css +1 -1
- package/src/components/interaction/Toast/Toast.native.mdx +3 -3
- package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -1
- package/src/components/interaction/form/Checkbox/Checkbox.native.mdx +1 -1
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +1 -1
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.mdx +1 -1
- package/src/components/interaction/form/Combobox/Combobox.module.css +1 -1
- package/src/components/interaction/form/Combobox/Combobox.native.mdx +1 -1
- package/src/components/interaction/form/FileInput/FileInput.module.css +1 -1
- package/src/components/interaction/form/FileInput/FileInput.native.mdx +1 -1
- package/src/components/interaction/form/FormInput/FormInput.module.css +1 -1
- package/src/components/interaction/form/FormInput/FormInput.native.mdx +1 -1
- package/src/components/interaction/form/NumberInput/NumberInput.module.css +1 -1
- package/src/components/interaction/form/NumberInput/NumberInput.native.mdx +1 -1
- package/src/components/interaction/form/Radio/Radio.module.css +1 -1
- package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +1 -1
- package/src/components/interaction/form/RadioGroup/RadioGroup.native.mdx +1 -1
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +1 -1
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.mdx +1 -1
- package/src/components/interaction/form/Select/Select.module.css +1 -1
- package/src/components/interaction/form/Select/Select.native.mdx +1 -1
- package/src/components/interaction/form/Slider/Slider.module.css +1 -1
- package/src/components/interaction/form/Slider/Slider.native.mdx +1 -1
- package/src/components/interaction/form/Switch/Switch.module.css +1 -1
- package/src/components/interaction/form/Textarea/Textarea.module.css +1 -1
- package/src/components/interaction/form/Textarea/Textarea.native.mdx +1 -1
- package/src/components/interaction/form/atoms/InputContainer.module.css +1 -1
- package/src/components/interaction/form/atoms/Label.module.css +1 -1
- package/src/components/interaction/form/atoms/Message.module.css +1 -1
- package/src/components/layout/ButtonGroup/ButtonGroup.module.css +1 -1
- package/src/components/layout/Card/Card.module.css +1 -1
- package/src/components/layout/IconWrapper/IconWrapper.module.css +1 -1
- package/src/components/layout/SectionHeader/SectionHeader.module.css +1 -1
- package/src/components/ui/Accordion/Accordion.module.css +1 -1
- package/src/components/ui/Accordion/Accordion.native.mdx +1 -1
- package/src/components/ui/Accordion/Accordion.native.stories.tsx +1 -1
- package/src/components/ui/Alert/Alert.module.css +1 -1
- package/src/components/ui/Alert/Alert.native.mdx +1 -1
- package/src/components/ui/Avatar/Avatar.module.css +1 -1
- package/src/components/ui/Avatar/Avatar.native.mdx +1 -1
- package/src/components/ui/Badge/Badge.module.css +1 -1
- package/src/components/ui/Badge/Badge.native.mdx +1 -1
- package/src/components/ui/Breadcrumb/Breadcrumb.module.css +1 -1
- package/src/components/ui/Breadcrumb/Breadcrumb.native.mdx +1 -1
- package/src/components/ui/Calendar/Calendar.module.css +1 -1
- package/src/components/ui/Calendar/Calendar.native.mdx +1 -1
- package/src/components/ui/Carousel/Carousel.module.css +1 -1
- package/src/components/ui/Carousel/Carousel.native.mdx +1 -1
- package/src/components/ui/Collapsible/Collapsible.module.css +1 -1
- package/src/components/ui/Collapsible/Collapsible.native.mdx +1 -1
- package/src/components/ui/DescriptionList/DescriptionList.module.css +1 -1
- package/src/components/ui/DescriptionList/DescriptionList.native.mdx +1 -1
- package/src/components/ui/Link/Link.module.css +1 -1
- package/src/components/ui/Link/Link.native.mdx +1 -1
- package/src/components/ui/Loading/Loading.module.css +1 -1
- package/src/components/ui/NotificationBanner/NotificationBanner.module.css +1 -1
- package/src/components/ui/Pagination/Pagination.module.css +1 -1
- package/src/components/ui/Pagination/Pagination.native.mdx +1 -1
- package/src/components/ui/Progress/Progress.module.css +1 -1
- package/src/components/ui/ProgressCircle/ProgressCircle.module.css +1 -1
- package/src/components/ui/ProgressCircle/ProgressCircle.native.mdx +1 -1
- package/src/components/ui/Separator/Separator.module.css +1 -1
- package/src/components/ui/Skeleton/Skeleton.module.css +1 -1
- package/src/components/ui/SkipLink/SkipLink.module.css +1 -1
- package/src/components/ui/Table/Table.module.css +1 -1
- package/src/components/ui/Table/Table.native.mdx +1 -1
- package/src/components/ui/Tabs/Tabs.module.css +1 -1
- package/src/components/ui/Tabs/Tabs.native.mdx +1 -1
- package/src/components/ui/Tooltip/Tooltip.module.css +1 -1
- package/src/components/ui/Tooltip/Tooltip.native.mdx +1 -1
- package/src/components/ui/Typography/Typography.module.css +1 -1
- package/src/components/ui/Typography/Typography.native.mdx +1 -1
- package/src/css/bdc.css +1 -1
- package/src/css/index.css +1 -1
- package/src/stories/DesignSystem/Borders.mdx +3 -3
- package/src/stories/DesignSystem/Colors.mdx +1 -1
- package/src/stories/DesignSystem/DarkMode.mdx +3 -3
- package/src/stories/DesignSystem/Overview.mdx +16 -5
- package/src/stories/DesignSystem/Typography.mdx +1 -1
- package/src/stories/Introduction.mdx +4 -4
- package/src/stories/ReactNative.mdx +6 -6
- package/src/web-components/globals.ts +1 -1
- package/src/web-components/interaction/BdsAccordion.mdx +3 -3
- package/src/web-components/interaction/BdsAccordion.stories.tsx +1 -1
- package/src/web-components/interaction/BdsButton.mdx +2 -2
- package/src/web-components/interaction/BdsCollapsible.mdx +2 -2
- package/src/web-components/interaction/BdsDialog.mdx +2 -2
- package/src/web-components/interaction/BdsDrawer.mdx +2 -2
- package/src/web-components/interaction/BdsDropdownMenu.mdx +2 -2
- package/src/web-components/interaction/BdsPopover.mdx +1 -1
- package/src/web-components/interaction/BdsSkipLink.mdx +2 -2
- package/src/web-components/interaction/BdsTabs.mdx +2 -2
- package/src/web-components/interaction/BdsToastProvider.mdx +3 -3
- package/src/web-components/interaction/BdsTooltip.mdx +2 -2
- package/src/web-components/interaction/form/BdsCheckbox.mdx +1 -1
- package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +1 -1
- package/src/web-components/interaction/form/BdsCombobox.mdx +1 -1
- package/src/web-components/interaction/form/BdsFileInput.mdx +1 -1
- package/src/web-components/interaction/form/BdsFormInput.mdx +1 -1
- package/src/web-components/interaction/form/BdsNumberInput.mdx +1 -1
- package/src/web-components/interaction/form/BdsRadio.mdx +1 -1
- package/src/web-components/interaction/form/BdsRadioGroup.mdx +1 -1
- package/src/web-components/interaction/form/BdsSegmentedControl.mdx +1 -1
- package/src/web-components/interaction/form/BdsSelect.mdx +1 -1
- package/src/web-components/interaction/form/BdsSlider.mdx +1 -1
- package/src/web-components/interaction/form/BdsSwitch.mdx +1 -1
- package/src/web-components/interaction/form/BdsTextarea.mdx +1 -1
- package/src/web-components/ui/BdsAlert.mdx +1 -1
- package/src/web-components/ui/BdsAvatar.mdx +1 -1
- package/src/web-components/ui/BdsBadge.mdx +1 -1
- package/src/web-components/ui/BdsBreadcrumb.mdx +1 -1
- package/src/web-components/ui/BdsButtonGroup.mdx +1 -1
- package/src/web-components/ui/BdsCalendar.mdx +1 -1
- package/src/web-components/ui/BdsCard.mdx +1 -1
- package/src/web-components/ui/BdsCarousel.mdx +1 -1
- package/src/web-components/ui/BdsDescriptionList.mdx +1 -1
- package/src/web-components/ui/BdsIconWrapper.mdx +1 -1
- package/src/web-components/ui/BdsLink.mdx +1 -1
- package/src/web-components/ui/BdsLoading.mdx +1 -1
- package/src/web-components/ui/BdsNotificationBanner.mdx +1 -1
- package/src/web-components/ui/BdsPagination.mdx +1 -1
- package/src/web-components/ui/BdsProgress.mdx +1 -1
- package/src/web-components/ui/BdsProgressCircle.mdx +1 -1
- package/src/web-components/ui/BdsRating.mdx +1 -1
- package/src/web-components/ui/BdsSectionHeader.mdx +1 -1
- package/src/web-components/ui/BdsSeparator.mdx +2 -2
- package/src/web-components/ui/BdsSkeleton.mdx +1 -1
- package/src/web-components/ui/BdsTable.mdx +1 -1
- 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,7 +167,7 @@ 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>
|
|
@@ -187,7 +205,7 @@ import { Button } from '@boostdev/components';
|
|
|
187
205
|
#### Dialog
|
|
188
206
|
|
|
189
207
|
```tsx
|
|
190
|
-
import { Dialog } from '@boostdev/components';
|
|
208
|
+
import { Dialog } from '@boostdev/design-system-components';
|
|
191
209
|
|
|
192
210
|
<Dialog isOpen={open} onClose={() => setOpen(false)}>
|
|
193
211
|
<h2>Confirm</h2>
|
|
@@ -206,7 +224,7 @@ Override the backdrop colour via `--color_backdrop` (default: `rgb(0 0 0 / 50%)`
|
|
|
206
224
|
#### Rating
|
|
207
225
|
|
|
208
226
|
```tsx
|
|
209
|
-
import { Rating } from '@boostdev/components';
|
|
227
|
+
import { Rating } from '@boostdev/design-system-components';
|
|
210
228
|
|
|
211
229
|
<Rating value={3} />
|
|
212
230
|
<Rating value={4} max={10} />
|
|
@@ -220,7 +238,7 @@ background colour.
|
|
|
220
238
|
#### Toast
|
|
221
239
|
|
|
222
240
|
```tsx
|
|
223
|
-
import { ToastProvider, useToast } from '@boostdev/components';
|
|
241
|
+
import { ToastProvider, useToast } from '@boostdev/design-system-components';
|
|
224
242
|
|
|
225
243
|
// Wrap your app (or layout) once:
|
|
226
244
|
<ToastProvider>
|
|
@@ -251,7 +269,7 @@ All components accept native HTML attributes for their root element via `...rest
|
|
|
251
269
|
#### FormInput
|
|
252
270
|
|
|
253
271
|
```tsx
|
|
254
|
-
import { FormInput } from '@boostdev/components';
|
|
272
|
+
import { FormInput } from '@boostdev/design-system-components';
|
|
255
273
|
|
|
256
274
|
<FormInput
|
|
257
275
|
label="Email"
|
|
@@ -265,7 +283,7 @@ import { FormInput } from '@boostdev/components';
|
|
|
265
283
|
#### Checkbox
|
|
266
284
|
|
|
267
285
|
```tsx
|
|
268
|
-
import { Checkbox, CheckboxGroup } from '@boostdev/components';
|
|
286
|
+
import { Checkbox, CheckboxGroup } from '@boostdev/design-system-components';
|
|
269
287
|
|
|
270
288
|
<Checkbox
|
|
271
289
|
label="I agree to the terms"
|
|
@@ -287,7 +305,7 @@ Group multiple checkboxes with a shared label using `CheckboxGroup`:
|
|
|
287
305
|
#### Radio
|
|
288
306
|
|
|
289
307
|
```tsx
|
|
290
|
-
import { Radio, RadioGroup } from '@boostdev/components';
|
|
308
|
+
import { Radio, RadioGroup } from '@boostdev/design-system-components';
|
|
291
309
|
|
|
292
310
|
<RadioGroup legend="Preferred contact" required>
|
|
293
311
|
<Radio label="Option A" name="choice" value="a" description="Optional supporting text." />
|
|
@@ -298,7 +316,7 @@ import { Radio, RadioGroup } from '@boostdev/components';
|
|
|
298
316
|
#### Switch
|
|
299
317
|
|
|
300
318
|
```tsx
|
|
301
|
-
import { Switch } from '@boostdev/components';
|
|
319
|
+
import { Switch } from '@boostdev/design-system-components';
|
|
302
320
|
|
|
303
321
|
<Switch label="Enable notifications" name="notifications" />
|
|
304
322
|
<Switch label="Dark mode" name="dark-mode" defaultChecked />
|
|
@@ -310,7 +328,7 @@ Sizes: `small` · `medium` (default) · `large`
|
|
|
310
328
|
#### SegmentedControl
|
|
311
329
|
|
|
312
330
|
```tsx
|
|
313
|
-
import { SegmentedControl } from '@boostdev/components';
|
|
331
|
+
import { SegmentedControl } from '@boostdev/design-system-components';
|
|
314
332
|
|
|
315
333
|
<SegmentedControl aria-label="Calendar view" selectedIndex={1}>
|
|
316
334
|
<button>Day</button>
|
|
@@ -334,7 +352,7 @@ Children-based API — pass `<button>`, `<a>`, or router `<Link>` elements direc
|
|
|
334
352
|
#### ButtonGroup
|
|
335
353
|
|
|
336
354
|
```tsx
|
|
337
|
-
import { ButtonGroup, Button } from '@boostdev/components';
|
|
355
|
+
import { ButtonGroup, Button } from '@boostdev/design-system-components';
|
|
338
356
|
|
|
339
357
|
<ButtonGroup variant="flow" aria-label="Page navigation">
|
|
340
358
|
<Button>Back</Button>
|
|
@@ -352,7 +370,7 @@ import { ButtonGroup, Button } from '@boostdev/components';
|
|
|
352
370
|
#### Card
|
|
353
371
|
|
|
354
372
|
```tsx
|
|
355
|
-
import { Card } from '@boostdev/components';
|
|
373
|
+
import { Card } from '@boostdev/design-system-components';
|
|
356
374
|
|
|
357
375
|
<Card>Basic card</Card>
|
|
358
376
|
<Card variant="elevated" padding="large">Elevated</Card>
|
|
@@ -372,7 +390,7 @@ import { Card } from '@boostdev/components';
|
|
|
372
390
|
#### SectionHeader
|
|
373
391
|
|
|
374
392
|
```tsx
|
|
375
|
-
import { SectionHeader } from '@boostdev/components';
|
|
393
|
+
import { SectionHeader } from '@boostdev/design-system-components';
|
|
376
394
|
|
|
377
395
|
<SectionHeader title="Our services" />
|
|
378
396
|
<SectionHeader
|
|
@@ -395,7 +413,7 @@ import { SectionHeader } from '@boostdev/components';
|
|
|
395
413
|
#### IconWrapper
|
|
396
414
|
|
|
397
415
|
```tsx
|
|
398
|
-
import { IconWrapper } from '@boostdev/components';
|
|
416
|
+
import { IconWrapper } from '@boostdev/design-system-components';
|
|
399
417
|
|
|
400
418
|
<IconWrapper>
|
|
401
419
|
<svg>...</svg>
|
|
@@ -420,10 +438,10 @@ Composes class name strings, filtering out falsy values:
|
|
|
420
438
|
|
|
421
439
|
```ts
|
|
422
440
|
// Server-safe — works in Server Components, layouts, middleware
|
|
423
|
-
import { cn } from '@boostdev/components/utils';
|
|
441
|
+
import { cn } from '@boostdev/design-system-components/utils';
|
|
424
442
|
|
|
425
443
|
// Also available from root or /client (but these are client-only in Next.js)
|
|
426
|
-
import { cn } from '@boostdev/components';
|
|
444
|
+
import { cn } from '@boostdev/design-system-components';
|
|
427
445
|
|
|
428
446
|
cn('card', isActive && 'card--active', [extraClass])
|
|
429
447
|
// → "card card--active extraClass"
|
|
@@ -444,7 +462,7 @@ Every component exposes CSS custom properties as a styling API. Set them on a pa
|
|
|
444
462
|
}
|
|
445
463
|
```
|
|
446
464
|
|
|
447
|
-
All component styles sit in `@layer component`. You can also write rules in a higher layer:
|
|
465
|
+
All component styles sit in `@layer boostdev.component`. You can also write rules in a higher layer:
|
|
448
466
|
|
|
449
467
|
```css
|
|
450
468
|
@layer my-overrides {
|
|
@@ -500,7 +518,7 @@ retheme all components at once:
|
|
|
500
518
|
|
|
501
519
|
```css
|
|
502
520
|
/* tokens.config.css — import after the design system CSS */
|
|
503
|
-
@layer tokens.override {
|
|
521
|
+
@layer boostdev.tokens.override {
|
|
504
522
|
:root {
|
|
505
523
|
--bds-cta: var(--bds-BASE__color--orange);
|
|
506
524
|
--bds-on-cta: var(--bds-BASE__color--white);
|
|
@@ -516,7 +534,7 @@ and progress indicators. Override it once to retheme checkboxes, radio buttons,
|
|
|
516
534
|
bars, and the switch thumb simultaneously:
|
|
517
535
|
|
|
518
536
|
```css
|
|
519
|
-
@layer tokens.override {
|
|
537
|
+
@layer boostdev.tokens.override {
|
|
520
538
|
:root {
|
|
521
539
|
--bds-active: var(--bds-BASE__color--blue);
|
|
522
540
|
--bds-on-active: var(--bds-BASE__color--white);
|
|
@@ -548,7 +566,7 @@ pnpm storybook # Storybook dev server on port 6006
|
|
|
548
566
|
|
|
549
567
|
1. Create `src/components/{category}/{Name}/`
|
|
550
568
|
2. Add `Name.tsx`, `Name.module.css`, `index.ts`
|
|
551
|
-
3. Wrap all CSS in `@layer component { ... }`
|
|
569
|
+
3. Wrap all CSS in `@layer boostdev.component { ... }`
|
|
552
570
|
4. Use only design token custom properties — no hard-coded colours, spacing, or font sizes
|
|
553
571
|
5. Re-export from `src/index.ts`
|
|
554
572
|
6. Run `pnpm build && pnpm typecheck && pnpm lint && pnpm lint:css && pnpm test`
|
|
@@ -587,13 +605,13 @@ pnpm mcp:start # listens on http://localhost:3001/api/mcp
|
|
|
587
605
|
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
606
|
|
|
589
607
|
```tsx
|
|
590
|
-
import { Button, FormInput, Dialog, Tabs } from '@boostdev/components';
|
|
608
|
+
import { Button, FormInput, Dialog, Tabs } from '@boostdev/design-system-components';
|
|
591
609
|
```
|
|
592
610
|
|
|
593
611
|
Wrap your app in `ThemeProvider`:
|
|
594
612
|
|
|
595
613
|
```tsx
|
|
596
|
-
import { ThemeProvider } from '@boostdev/components/native/ThemeContext';
|
|
614
|
+
import { ThemeProvider } from '@boostdev/design-system-components/native/ThemeContext';
|
|
597
615
|
|
|
598
616
|
export default function App() {
|
|
599
617
|
return (
|