@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.
- package/AGENTS.md +5 -3
- package/README.md +57 -38
- package/dist/client.cjs +52 -50
- package/dist/client.css +537 -524
- package/dist/client.d.cts +31 -1
- package/dist/client.d.ts +31 -1
- package/dist/client.js +52 -50
- package/dist/index.cjs +52 -50
- package/dist/index.css +537 -524
- package/dist/index.d.cts +31 -1
- package/dist/index.d.ts +31 -1
- package/dist/index.js +52 -50
- package/dist/native/index.cjs +5 -2
- package/dist/native/index.d.cts +3 -1
- package/dist/native/index.d.ts +3 -1
- package/dist/native/index.js +5 -2
- package/dist/web-components/{chunk-DZRSJGPB.js → chunk-3S42DZ7W.js} +1 -1
- package/dist/web-components/{chunk-3REOIRDW.js → chunk-N3TN6WCH.js} +26 -1
- package/dist/web-components/globals.js +1 -1
- package/dist/web-components/index.js +2 -2
- package/dist/web-components/interaction/bds-button.d.ts +7 -0
- package/dist/web-components/interaction/bds-button.js +1 -1
- package/package.json +3 -3
- package/src/components/interaction/Button/Button.mdx +84 -29
- package/src/components/interaction/Button/Button.module.css +25 -1
- package/src/components/interaction/Button/Button.native.mdx +33 -14
- package/src/components/interaction/Button/Button.native.spec.tsx +20 -0
- package/src/components/interaction/Button/Button.native.stories.tsx +110 -9
- package/src/components/interaction/Button/Button.native.tsx +13 -4
- package/src/components/interaction/Button/Button.spec.tsx +16 -0
- package/src/components/interaction/Button/Button.stories.tsx +134 -16
- package/src/components/interaction/Button/Button.tsx +32 -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/IconWrapper/IconWrapper.stories.tsx +46 -14
- 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 +48 -16
- package/src/web-components/interaction/BdsButton.stories.tsx +171 -19
- 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/bds-button.spec.ts +35 -0
- package/src/web-components/interaction/bds-button.ts +28 -1
- 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,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
|
|
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 (
|