@boostdev/design-system-components 2.4.1 → 2.5.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 +4 -20
- package/README.md +3 -23
- package/dist/client.cjs +128 -62
- package/dist/client.css +537 -537
- package/dist/client.d.cts +11 -1
- package/dist/client.d.ts +11 -1
- package/dist/client.js +128 -62
- package/dist/index.cjs +128 -62
- package/dist/index.css +537 -537
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +128 -62
- package/dist/web-components/index.js +36 -4
- package/package.json +2 -10
- package/src/components/layout/Grid/Grid.mdx +20 -2
- package/src/components/layout/Grid/Grid.spec.tsx +206 -4
- package/src/components/layout/Grid/Grid.tsx +15 -1
- package/src/components/layout/Grid/masonry.ts +148 -10
- package/dist/native/index.cjs +0 -4337
- package/dist/native/index.d.cts +0 -574
- package/dist/native/index.d.ts +0 -574
- package/dist/native/index.js +0 -4421
- package/src/components/interaction/Button/Button.native.mdx +0 -91
- package/src/components/interaction/Button/Button.native.spec.tsx +0 -55
- package/src/components/interaction/Button/Button.native.stories.tsx +0 -141
- package/src/components/interaction/Button/Button.native.tsx +0 -105
- package/src/components/interaction/Dialog/Dialog.native.mdx +0 -61
- package/src/components/interaction/Dialog/Dialog.native.spec.tsx +0 -73
- package/src/components/interaction/Dialog/Dialog.native.stories.tsx +0 -53
- package/src/components/interaction/Dialog/Dialog.native.tsx +0 -128
- package/src/components/interaction/Drawer/Drawer.native.mdx +0 -58
- package/src/components/interaction/Drawer/Drawer.native.spec.tsx +0 -81
- package/src/components/interaction/Drawer/Drawer.native.stories.tsx +0 -33
- package/src/components/interaction/Drawer/Drawer.native.tsx +0 -175
- package/src/components/interaction/DropdownMenu/DropdownMenu.native.mdx +0 -74
- package/src/components/interaction/DropdownMenu/DropdownMenu.native.spec.tsx +0 -78
- package/src/components/interaction/DropdownMenu/DropdownMenu.native.stories.tsx +0 -51
- package/src/components/interaction/DropdownMenu/DropdownMenu.native.tsx +0 -254
- package/src/components/interaction/Popover/Popover.native.mdx +0 -61
- package/src/components/interaction/Popover/Popover.native.spec.tsx +0 -73
- package/src/components/interaction/Popover/Popover.native.stories.tsx +0 -44
- package/src/components/interaction/Popover/Popover.native.tsx +0 -87
- package/src/components/interaction/Rating/Rating.native.mdx +0 -55
- package/src/components/interaction/Rating/Rating.native.spec.tsx +0 -38
- package/src/components/interaction/Rating/Rating.native.stories.tsx +0 -37
- package/src/components/interaction/Rating/Rating.native.tsx +0 -50
- package/src/components/interaction/Toast/Toast.native.mdx +0 -81
- package/src/components/interaction/Toast/Toast.native.spec.tsx +0 -80
- package/src/components/interaction/Toast/Toast.native.stories.tsx +0 -47
- package/src/components/interaction/Toast/Toast.native.tsx +0 -202
- package/src/components/interaction/form/Checkbox/Checkbox.native.mdx +0 -74
- package/src/components/interaction/form/Checkbox/Checkbox.native.spec.tsx +0 -42
- package/src/components/interaction/form/Checkbox/Checkbox.native.stories.tsx +0 -34
- package/src/components/interaction/form/Checkbox/Checkbox.native.tsx +0 -80
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.mdx +0 -78
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.spec.tsx +0 -57
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.stories.tsx +0 -96
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.native.tsx +0 -61
- package/src/components/interaction/form/Combobox/Combobox.native.mdx +0 -86
- package/src/components/interaction/form/Combobox/Combobox.native.spec.tsx +0 -60
- package/src/components/interaction/form/Combobox/Combobox.native.stories.tsx +0 -99
- package/src/components/interaction/form/Combobox/Combobox.native.tsx +0 -211
- package/src/components/interaction/form/FileInput/FileInput.native.mdx +0 -86
- package/src/components/interaction/form/FileInput/FileInput.native.spec.tsx +0 -73
- package/src/components/interaction/form/FileInput/FileInput.native.stories.tsx +0 -69
- package/src/components/interaction/form/FileInput/FileInput.native.tsx +0 -129
- package/src/components/interaction/form/FormInput/FormInput.native.mdx +0 -81
- package/src/components/interaction/form/FormInput/FormInput.native.spec.tsx +0 -51
- package/src/components/interaction/form/FormInput/FormInput.native.stories.tsx +0 -54
- package/src/components/interaction/form/FormInput/FormInput.native.tsx +0 -122
- package/src/components/interaction/form/NumberInput/NumberInput.native.mdx +0 -87
- package/src/components/interaction/form/NumberInput/NumberInput.native.spec.tsx +0 -63
- package/src/components/interaction/form/NumberInput/NumberInput.native.stories.tsx +0 -63
- package/src/components/interaction/form/NumberInput/NumberInput.native.tsx +0 -198
- package/src/components/interaction/form/Radio/Radio.native.spec.tsx +0 -79
- package/src/components/interaction/form/Radio/Radio.native.stories.tsx +0 -44
- package/src/components/interaction/form/Radio/Radio.native.tsx +0 -79
- package/src/components/interaction/form/RadioGroup/RadioGroup.native.mdx +0 -79
- package/src/components/interaction/form/RadioGroup/RadioGroup.native.spec.tsx +0 -66
- package/src/components/interaction/form/RadioGroup/RadioGroup.native.stories.tsx +0 -96
- package/src/components/interaction/form/RadioGroup/RadioGroup.native.tsx +0 -61
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.mdx +0 -78
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.spec.tsx +0 -82
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.stories.tsx +0 -99
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.native.tsx +0 -121
- package/src/components/interaction/form/Select/Select.native.mdx +0 -85
- package/src/components/interaction/form/Select/Select.native.spec.tsx +0 -64
- package/src/components/interaction/form/Select/Select.native.stories.tsx +0 -75
- package/src/components/interaction/form/Select/Select.native.tsx +0 -252
- package/src/components/interaction/form/Slider/Slider.native.mdx +0 -83
- package/src/components/interaction/form/Slider/Slider.native.spec.tsx +0 -51
- package/src/components/interaction/form/Slider/Slider.native.stories.tsx +0 -58
- package/src/components/interaction/form/Slider/Slider.native.tsx +0 -188
- package/src/components/interaction/form/Switch/Switch.native.spec.tsx +0 -60
- package/src/components/interaction/form/Switch/Switch.native.stories.tsx +0 -33
- package/src/components/interaction/form/Switch/Switch.native.tsx +0 -59
- package/src/components/interaction/form/Textarea/Textarea.native.mdx +0 -76
- package/src/components/interaction/form/Textarea/Textarea.native.spec.tsx +0 -50
- package/src/components/interaction/form/Textarea/Textarea.native.stories.tsx +0 -50
- package/src/components/interaction/form/Textarea/Textarea.native.tsx +0 -108
- package/src/components/interaction/form/atoms/Label.native.spec.tsx +0 -39
- package/src/components/interaction/form/atoms/Label.native.stories.tsx +0 -18
- package/src/components/interaction/form/atoms/Label.native.tsx +0 -29
- package/src/components/interaction/form/atoms/Message.native.spec.tsx +0 -30
- package/src/components/interaction/form/atoms/Message.native.stories.tsx +0 -22
- package/src/components/interaction/form/atoms/Message.native.tsx +0 -34
- package/src/components/layout/ButtonGroup/ButtonGroup.native.spec.tsx +0 -83
- package/src/components/layout/ButtonGroup/ButtonGroup.native.stories.tsx +0 -44
- package/src/components/layout/ButtonGroup/ButtonGroup.native.tsx +0 -44
- package/src/components/layout/Card/Card.native.spec.tsx +0 -102
- package/src/components/layout/Card/Card.native.stories.tsx +0 -51
- package/src/components/layout/Card/Card.native.tsx +0 -89
- package/src/components/layout/IconWrapper/IconWrapper.native.spec.tsx +0 -39
- package/src/components/layout/IconWrapper/IconWrapper.native.stories.tsx +0 -37
- package/src/components/layout/IconWrapper/IconWrapper.native.tsx +0 -20
- package/src/components/layout/SectionHeader/SectionHeader.native.spec.tsx +0 -51
- package/src/components/layout/SectionHeader/SectionHeader.native.stories.tsx +0 -36
- package/src/components/layout/SectionHeader/SectionHeader.native.tsx +0 -79
- package/src/components/ui/Accordion/Accordion.native.mdx +0 -65
- package/src/components/ui/Accordion/Accordion.native.spec.tsx +0 -69
- package/src/components/ui/Accordion/Accordion.native.stories.tsx +0 -52
- package/src/components/ui/Accordion/Accordion.native.tsx +0 -141
- package/src/components/ui/Alert/Alert.native.mdx +0 -62
- package/src/components/ui/Alert/Alert.native.spec.tsx +0 -76
- package/src/components/ui/Alert/Alert.native.stories.tsx +0 -41
- package/src/components/ui/Alert/Alert.native.tsx +0 -94
- package/src/components/ui/Avatar/Avatar.native.mdx +0 -50
- package/src/components/ui/Avatar/Avatar.native.spec.tsx +0 -47
- package/src/components/ui/Avatar/Avatar.native.stories.tsx +0 -32
- package/src/components/ui/Avatar/Avatar.native.tsx +0 -85
- package/src/components/ui/Badge/Badge.native.mdx +0 -54
- package/src/components/ui/Badge/Badge.native.spec.tsx +0 -45
- package/src/components/ui/Badge/Badge.native.stories.tsx +0 -34
- package/src/components/ui/Badge/Badge.native.tsx +0 -50
- package/src/components/ui/Breadcrumb/Breadcrumb.native.mdx +0 -52
- package/src/components/ui/Breadcrumb/Breadcrumb.native.spec.tsx +0 -49
- package/src/components/ui/Breadcrumb/Breadcrumb.native.stories.tsx +0 -46
- package/src/components/ui/Breadcrumb/Breadcrumb.native.tsx +0 -83
- package/src/components/ui/Calendar/Calendar.native.mdx +0 -58
- package/src/components/ui/Calendar/Calendar.native.spec.tsx +0 -92
- package/src/components/ui/Calendar/Calendar.native.stories.tsx +0 -45
- package/src/components/ui/Calendar/Calendar.native.tsx +0 -294
- package/src/components/ui/Carousel/Carousel.native.mdx +0 -55
- package/src/components/ui/Carousel/Carousel.native.spec.tsx +0 -55
- package/src/components/ui/Carousel/Carousel.native.stories.tsx +0 -59
- package/src/components/ui/Carousel/Carousel.native.tsx +0 -184
- package/src/components/ui/Collapsible/Collapsible.native.mdx +0 -53
- package/src/components/ui/Collapsible/Collapsible.native.spec.tsx +0 -68
- package/src/components/ui/Collapsible/Collapsible.native.stories.tsx +0 -48
- package/src/components/ui/Collapsible/Collapsible.native.tsx +0 -139
- package/src/components/ui/DescriptionList/DescriptionList.native.mdx +0 -50
- package/src/components/ui/DescriptionList/DescriptionList.native.spec.tsx +0 -37
- package/src/components/ui/DescriptionList/DescriptionList.native.stories.tsx +0 -48
- package/src/components/ui/DescriptionList/DescriptionList.native.tsx +0 -54
- package/src/components/ui/Link/Link.native.mdx +0 -53
- package/src/components/ui/Link/Link.native.spec.tsx +0 -35
- package/src/components/ui/Link/Link.native.stories.tsx +0 -46
- package/src/components/ui/Link/Link.native.tsx +0 -48
- package/src/components/ui/Loading/Loading.native.spec.tsx +0 -24
- package/src/components/ui/Loading/Loading.native.stories.tsx +0 -31
- package/src/components/ui/Loading/Loading.native.tsx +0 -29
- package/src/components/ui/NotificationBanner/NotificationBanner.native.spec.tsx +0 -85
- package/src/components/ui/NotificationBanner/NotificationBanner.native.stories.tsx +0 -37
- package/src/components/ui/NotificationBanner/NotificationBanner.native.tsx +0 -76
- package/src/components/ui/Pagination/Pagination.native.mdx +0 -62
- package/src/components/ui/Pagination/Pagination.native.spec.tsx +0 -86
- package/src/components/ui/Pagination/Pagination.native.stories.tsx +0 -47
- package/src/components/ui/Pagination/Pagination.native.tsx +0 -157
- package/src/components/ui/Progress/Progress.native.spec.tsx +0 -56
- package/src/components/ui/Progress/Progress.native.stories.tsx +0 -34
- package/src/components/ui/Progress/Progress.native.tsx +0 -84
- package/src/components/ui/ProgressCircle/ProgressCircle.native.mdx +0 -63
- package/src/components/ui/ProgressCircle/ProgressCircle.native.spec.tsx +0 -39
- package/src/components/ui/ProgressCircle/ProgressCircle.native.stories.tsx +0 -36
- package/src/components/ui/ProgressCircle/ProgressCircle.native.tsx +0 -176
- package/src/components/ui/Separator/Separator.native.spec.tsx +0 -39
- package/src/components/ui/Separator/Separator.native.stories.tsx +0 -38
- package/src/components/ui/Separator/Separator.native.tsx +0 -32
- package/src/components/ui/Skeleton/Skeleton.native.spec.tsx +0 -39
- package/src/components/ui/Skeleton/Skeleton.native.stories.tsx +0 -31
- package/src/components/ui/Skeleton/Skeleton.native.tsx +0 -42
- package/src/components/ui/Table/Table.native.mdx +0 -72
- package/src/components/ui/Table/Table.native.spec.tsx +0 -83
- package/src/components/ui/Table/Table.native.stories.tsx +0 -55
- package/src/components/ui/Table/Table.native.tsx +0 -196
- package/src/components/ui/Tabs/Tabs.native.mdx +0 -65
- package/src/components/ui/Tabs/Tabs.native.spec.tsx +0 -65
- package/src/components/ui/Tabs/Tabs.native.stories.tsx +0 -57
- package/src/components/ui/Tabs/Tabs.native.tsx +0 -133
- package/src/components/ui/Tooltip/Tooltip.native.mdx +0 -47
- package/src/components/ui/Tooltip/Tooltip.native.spec.tsx +0 -37
- package/src/components/ui/Tooltip/Tooltip.native.stories.tsx +0 -38
- package/src/components/ui/Tooltip/Tooltip.native.tsx +0 -57
- package/src/components/ui/Typography/Typography.native.mdx +0 -56
- package/src/components/ui/Typography/Typography.native.spec.tsx +0 -49
- package/src/components/ui/Typography/Typography.native.stories.tsx +0 -36
- package/src/components/ui/Typography/Typography.native.tsx +0 -65
- package/src/native/ThemeContext.tsx +0 -28
- package/src/native/tokens.ts +0 -13
- package/src/native.ts +0 -76
- package/src/stories/ReactNative.mdx +0 -156
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/blocks';
|
|
2
|
-
|
|
3
|
-
<Meta title="React Native/Overview" />
|
|
4
|
-
|
|
5
|
-
# React Native
|
|
6
|
-
|
|
7
|
-
> **Status: alpha** — components and APIs may change before stable release.
|
|
8
|
-
|
|
9
|
-
`@boostdev/design-system-components` ships native implementations for 47 components — near-complete parity with the React web library. These use React Native primitives (`View`, `Text`, `Pressable`, `StyleSheet`, `Modal`, `Animated`) rather than HTML elements, and consume a dedicated token layer instead of CSS custom properties.
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install @boostdev/design-system-components
|
|
15
|
-
# or
|
|
16
|
-
pnpm add @boostdev/design-system-components
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Metro automatically resolves the native entry point via the `"react-native"` export condition in `package.json` — no extra configuration needed.
|
|
20
|
-
|
|
21
|
-
```ts
|
|
22
|
-
// Import is identical to the web version:
|
|
23
|
-
import { Button, Alert, Badge, Avatar, Typography } from '@boostdev/design-system-components';
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Setup — ThemeProvider
|
|
27
|
-
|
|
28
|
-
Wrap your app (or the relevant subtree) in `ThemeProvider` to give native components access to the design token context:
|
|
29
|
-
|
|
30
|
-
```tsx
|
|
31
|
-
import { ThemeProvider } from '@boostdev/design-system-components/native/ThemeContext';
|
|
32
|
-
|
|
33
|
-
export default function App() {
|
|
34
|
-
return (
|
|
35
|
-
<ThemeProvider>
|
|
36
|
-
{/* your app */}
|
|
37
|
-
</ThemeProvider>
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
`ThemeProvider` reads the current colour scheme via `useColorScheme()` and applies the corresponding dark/light token set automatically.
|
|
43
|
-
|
|
44
|
-
## Design Tokens
|
|
45
|
-
|
|
46
|
-
Native components consume tokens from `src/native/tokens.ts` — a JS object mirroring the CSS custom properties from `@boostdev/design-system-foundation`. Token categories:
|
|
47
|
-
|
|
48
|
-
| Category | Example |
|
|
49
|
-
|----------|---------|
|
|
50
|
-
| `colors` | `tokens.colors.bg`, `tokens.colors.interactive` |
|
|
51
|
-
| `spacing` | `tokens.spacing.xs`, `tokens.spacing.m` |
|
|
52
|
-
| `font` | `tokens.font.sizeBody`, `tokens.font.weightBold` |
|
|
53
|
-
| `border` | `tokens.border.radiusS`, `tokens.border.radiusM` |
|
|
54
|
-
| `zIndex` | `tokens.zIndex.modal` |
|
|
55
|
-
| `animation` | `tokens.animation.duration` |
|
|
56
|
-
|
|
57
|
-
Tokens are accessed inside components via `useTheme()`:
|
|
58
|
-
|
|
59
|
-
```tsx
|
|
60
|
-
import { useTheme } from '@boostdev/design-system-components/native/ThemeContext';
|
|
61
|
-
|
|
62
|
-
function MyComponent() {
|
|
63
|
-
const { tokens } = useTheme();
|
|
64
|
-
return <View style={{ backgroundColor: tokens.colors.bg }} />;
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Available Components (47)
|
|
69
|
-
|
|
70
|
-
### UI (22)
|
|
71
|
-
|
|
72
|
-
| Component | Description |
|
|
73
|
-
|-----------|-------------|
|
|
74
|
-
| `Accordion` | Expandable sections, exclusive or multi-open mode |
|
|
75
|
-
| `Alert` | Inline status message with optional title and dismiss |
|
|
76
|
-
| `Avatar` | Initials-based avatar with 3 sizes |
|
|
77
|
-
| `Badge` | Short status label with 5 semantic variants |
|
|
78
|
-
| `Breadcrumb` | Navigation trail with pressable items |
|
|
79
|
-
| `Calendar` | Month grid date picker with min/max constraints |
|
|
80
|
-
| `Carousel` | Horizontal paging scroll with dot indicators |
|
|
81
|
-
| `Collapsible` | Animated expand/collapse section |
|
|
82
|
-
| `DescriptionList` | Key-value pair display |
|
|
83
|
-
| `Link` | Pressable text that opens URLs via `Linking` |
|
|
84
|
-
| `Loading` | Animated loading spinner |
|
|
85
|
-
| `NotificationBanner` | Full-width banner notification |
|
|
86
|
-
| `Pagination` | Page navigation with prev/next and page buttons |
|
|
87
|
-
| `Progress` | Linear progress bar |
|
|
88
|
-
| `ProgressCircle` | Circular progress indicator |
|
|
89
|
-
| `Rating` | Read-only star rating display |
|
|
90
|
-
| `Separator` | Visual divider |
|
|
91
|
-
| `Skeleton` | Loading placeholder |
|
|
92
|
-
| `Table` | Scrollable data table with sortable columns |
|
|
93
|
-
| `Tabs` | Tabbed interface with pressable tab headers |
|
|
94
|
-
| `Tooltip` | Long-press tooltip overlay |
|
|
95
|
-
| `Typography` | Text with semantic variants: `h1`, `h2`, `h3`, `body`, `body_s` |
|
|
96
|
-
|
|
97
|
-
### Layout (4)
|
|
98
|
-
|
|
99
|
-
| Component | Description |
|
|
100
|
-
|-----------|-------------|
|
|
101
|
-
| `ButtonGroup` | Horizontal or vertical button row |
|
|
102
|
-
| `Card` | Elevated content container |
|
|
103
|
-
| `IconWrapper` | Consistent icon sizing wrapper |
|
|
104
|
-
| `SectionHeader` | Section heading with optional action |
|
|
105
|
-
|
|
106
|
-
### Interaction (8)
|
|
107
|
-
|
|
108
|
-
| Component | Description |
|
|
109
|
-
|-----------|-------------|
|
|
110
|
-
| `Button` | Primary action element with `onPress` |
|
|
111
|
-
| `Dialog` | Modal dialog with backdrop and close button |
|
|
112
|
-
| `Drawer` | Sliding side panel with animated transitions |
|
|
113
|
-
| `DropdownMenu` | Bottom-sheet menu with pressable items |
|
|
114
|
-
| `Popover` | Modal-based popover overlay |
|
|
115
|
-
| `ToastProvider` / `useToast` | Toast notification system with auto-dismiss |
|
|
116
|
-
|
|
117
|
-
### Form (13)
|
|
118
|
-
|
|
119
|
-
| Component | Description |
|
|
120
|
-
|-----------|-------------|
|
|
121
|
-
| `Checkbox` | Controlled checkbox with label, hint, and error |
|
|
122
|
-
| `CheckboxGroup` | Group wrapper with legend for multiple checkboxes |
|
|
123
|
-
| `Combobox` | Text input with filtered dropdown options |
|
|
124
|
-
| `FileInput` | File selection button with file name display |
|
|
125
|
-
| `FormInput` | Labeled text input with hint/error support |
|
|
126
|
-
| `NumberInput` | Numeric input with stepper buttons |
|
|
127
|
-
| `Radio` | Controlled radio button |
|
|
128
|
-
| `RadioGroup` | Group wrapper with legend for radio buttons |
|
|
129
|
-
| `SegmentedControl` | Horizontal segmented button group |
|
|
130
|
-
| `Select` | Bottom-sheet option picker |
|
|
131
|
-
| `Slider` | Draggable range input with value display |
|
|
132
|
-
| `Switch` | Toggle switch |
|
|
133
|
-
| `Textarea` | Multiline text input |
|
|
134
|
-
| `Label` | Form field label atom |
|
|
135
|
-
| `Message` | Form field hint/error atom |
|
|
136
|
-
|
|
137
|
-
### Not available (deferred)
|
|
138
|
-
|
|
139
|
-
| Component | Reason |
|
|
140
|
-
|-----------|--------|
|
|
141
|
-
| `Command` | Depends on cmdk library (browser-only) |
|
|
142
|
-
| `SkipLink` | Browser-only accessibility pattern |
|
|
143
|
-
|
|
144
|
-
## Key differences from the web components
|
|
145
|
-
|
|
146
|
-
| Web | React Native |
|
|
147
|
-
|-----|-------------|
|
|
148
|
-
| `onClick` | `onPress` |
|
|
149
|
-
| `aria-label` | `accessibilityLabel` |
|
|
150
|
-
| CSS `className` | `StyleSheet` / `style` prop |
|
|
151
|
-
| `children` as string/HTML | `children` must be `<Text>` nodes (RN restriction) |
|
|
152
|
-
| Design tokens via CSS custom properties | Design tokens via `useTheme()` JS object |
|
|
153
|
-
|
|
154
|
-
## Dark mode
|
|
155
|
-
|
|
156
|
-
`ThemeProvider` subscribes to `useColorScheme()` automatically. No extra work is needed — components adapt their colours when the device switches between light and dark mode.
|