@12min/ds 0.1.0 → 3.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/README.md +84 -51
- package/dist/Checkbox.styles-DPyXzxFJ.d.mts +90 -0
- package/dist/Checkbox.styles-DPyXzxFJ.d.ts +90 -0
- package/dist/chunk-ZK7NW4WW.mjs +247 -0
- package/dist/chunk-ZK7NW4WW.mjs.map +1 -0
- package/dist/chunk-ZKPOS2PD.mjs +192 -0
- package/dist/chunk-ZKPOS2PD.mjs.map +1 -0
- package/dist/index.native.d.mts +184 -2
- package/dist/index.native.d.ts +184 -2
- package/dist/index.native.js +1160 -62
- package/dist/index.native.js.map +1 -1
- package/dist/index.native.mjs +742 -5
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.web.d.mts +182 -22
- package/dist/index.web.d.ts +182 -22
- package/dist/index.web.js +1052 -62
- package/dist/index.web.js.map +1 -1
- package/dist/index.web.mjs +644 -4
- package/dist/index.web.mjs.map +1 -1
- package/dist/tailwind/theme.css +300 -38
- package/dist/tokens/index.d.mts +385 -37
- package/dist/tokens/index.d.ts +385 -37
- package/dist/tokens/index.js +242 -33
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/index.mjs +17 -3
- package/package.json +28 -5
- package/dist/chunk-E2C4G6H4.mjs +0 -45
- package/dist/chunk-E2C4G6H4.mjs.map +0 -1
- package/dist/chunk-QIJRSFZB.mjs +0 -41
- package/dist/chunk-QIJRSFZB.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
```text
|
|
2
|
-
██╗ ██████╗ ███╗ ███╗ ██╗ ███╗ ██╗ ██████╗ ███████╗
|
|
3
|
-
███║ ╚════██╗ ████╗ ████║ ██║ ████╗ ██║ ██╔══██╗ ██╔════╝
|
|
4
|
-
╚██║ █████╔╝ ██╔████╔██║ ██║ ██╔██╗ ██║ █████╗ ██║ ██║ ███████╗
|
|
5
|
-
██║ ██╔═══╝ ██║╚██╔╝██║ ██║ ██║╚██╗██║ ╚════╝ ██║ ██║ ╚════██║
|
|
6
|
-
██║ ███████╗ ██║ ╚═╝ ██║ ██║ ██║ ╚████║ ██████╔╝ ███████║
|
|
7
|
-
╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
|
|
8
|
-
```
|
|
9
|
-
|
|
10
1
|
# `@12min/ds`
|
|
11
2
|
|
|
12
3
|
Single source of truth for 12min's visual language — tokens, styles, and components shared across web and mobile.
|
|
@@ -15,12 +6,15 @@ Single source of truth for 12min's visual language — tokens, styles, and compo
|
|
|
15
6
|
|
|
16
7
|
## What's included
|
|
17
8
|
|
|
18
|
-
| |
|
|
19
|
-
|
|
20
|
-
| Color
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
9
|
+
| | Status |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Color palette (`marianBlue`, `midnight`, `gray`, `mustard`, `ketchup`, `mint`) | ✅ |
|
|
12
|
+
| Typography tokens (14-entry scale) | ✅ |
|
|
13
|
+
| CSS theme (`theme.css`) — colors + `@utility text-*` blocks | ✅ |
|
|
14
|
+
| Semantic themes (light / dark) | ✅ |
|
|
15
|
+
| Components — Button, Chip, Alert, ProgressBar, Input, Checkbox, RadioItem, RadioGroup, ActionItem, Stepper, RatingScale | ✅ |
|
|
16
|
+
| `DSThemeProvider` + `useTheme` (native programmatic dark mode) | ✅ |
|
|
17
|
+
| Storybook 8 | ✅ |
|
|
24
18
|
|
|
25
19
|
---
|
|
26
20
|
|
|
@@ -37,26 +31,14 @@ pnpm add @12min/ds
|
|
|
37
31
|
pnpm add tailwindcss@^4.0.0
|
|
38
32
|
|
|
39
33
|
# mobile
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
pnpm add nativewind@5.0.0-preview.3
|
|
35
|
+
pnpm add --dev tailwindcss@^4.0.0
|
|
42
36
|
```
|
|
43
37
|
|
|
44
38
|
---
|
|
45
39
|
|
|
46
40
|
## Usage
|
|
47
41
|
|
|
48
|
-
### Tokens
|
|
49
|
-
|
|
50
|
-
Raw token values as TypeScript — use anywhere, including `StyleSheet.create`.
|
|
51
|
-
|
|
52
|
-
```ts
|
|
53
|
-
import { colors } from '@12min/ds/tokens'
|
|
54
|
-
|
|
55
|
-
const styles = StyleSheet.create({
|
|
56
|
-
button: { backgroundColor: colors.brand.primary },
|
|
57
|
-
})
|
|
58
|
-
```
|
|
59
|
-
|
|
60
42
|
### Web — Tailwind v4
|
|
61
43
|
|
|
62
44
|
Import the generated theme in your global CSS entry point:
|
|
@@ -67,15 +49,28 @@ Import the generated theme in your global CSS entry point:
|
|
|
67
49
|
@import "@12min/ds/tailwind/theme.css";
|
|
68
50
|
```
|
|
69
51
|
|
|
70
|
-
All tokens are
|
|
52
|
+
All palette tokens are available as Tailwind utilities, and typography utilities are pre-built:
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<div className="bg-marian-blue-600 text-white">
|
|
56
|
+
<p className="text-body-default">Body text</p>
|
|
57
|
+
<h1 className="text-h1">Heading</h1>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Import components from `@12min/ds`:
|
|
71
61
|
|
|
72
62
|
```tsx
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
<
|
|
63
|
+
import { Button, Input, RadioItem, RadioGroup } from '@12min/ds'
|
|
64
|
+
|
|
65
|
+
<Button variant="primary" size="md">Continue</Button>
|
|
66
|
+
|
|
67
|
+
<RadioGroup label="Pick your profile">
|
|
68
|
+
<RadioItem label="Leader" selected={selected === 'leader'} onClick={() => setSelected('leader')} />
|
|
69
|
+
<RadioItem label="Student" selected={selected === 'student'} onClick={() => setSelected('student')} />
|
|
70
|
+
</RadioGroup>
|
|
76
71
|
```
|
|
77
72
|
|
|
78
|
-
### Mobile — NativeWind v5
|
|
73
|
+
### Mobile — React Native + NativeWind v5
|
|
79
74
|
|
|
80
75
|
Point Metro at the published theme file:
|
|
81
76
|
|
|
@@ -88,36 +83,73 @@ module.exports = withNativeWind(config, {
|
|
|
88
83
|
})
|
|
89
84
|
```
|
|
90
85
|
|
|
91
|
-
|
|
86
|
+
Wrap your app in `DSThemeProvider` for programmatic dark mode:
|
|
92
87
|
|
|
93
88
|
```tsx
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
import { DSThemeProvider, Button, Input } from '@12min/ds'
|
|
90
|
+
|
|
91
|
+
export default function App() {
|
|
92
|
+
const colorScheme = useColorScheme()
|
|
93
|
+
return (
|
|
94
|
+
<DSThemeProvider colorScheme={colorScheme ?? 'light'}>
|
|
95
|
+
<Button variant="primary" onPress={handlePress}>Continue</Button>
|
|
96
|
+
<Input placeholder="Email" state="default" />
|
|
97
|
+
</DSThemeProvider>
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Access theme tokens directly via `useTheme()`:
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
import { useTheme } from '@12min/ds'
|
|
106
|
+
|
|
107
|
+
const { theme } = useTheme()
|
|
108
|
+
// theme.primary, theme.background, theme.error, ...
|
|
97
109
|
```
|
|
98
110
|
|
|
99
|
-
###
|
|
111
|
+
### Tokens (framework-agnostic)
|
|
100
112
|
|
|
101
|
-
|
|
113
|
+
Raw token values as TypeScript — useful for chart libraries, animations, or any non-Tailwind consumer:
|
|
102
114
|
|
|
103
115
|
```ts
|
|
116
|
+
import { colors, typography } from '@12min/ds/tokens'
|
|
104
117
|
import { lightTheme, darkTheme } from '@12min/ds'
|
|
105
|
-
import { useColorScheme } from 'react-native'
|
|
106
118
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// theme.primary === '#FF6B35'
|
|
111
|
-
// theme.background, theme.surface, theme.error, ...
|
|
119
|
+
// colors.marianBlue[600] === '#475CBB'
|
|
120
|
+
// typography.bodyDefault.fontSize === 14
|
|
121
|
+
// lightTheme.primary === '#475CBB'
|
|
112
122
|
```
|
|
113
123
|
|
|
114
124
|
---
|
|
115
125
|
|
|
126
|
+
## Components
|
|
127
|
+
|
|
128
|
+
All components are available on both web and native from the same `@12min/ds` import.
|
|
129
|
+
|
|
130
|
+
| Component | Props |
|
|
131
|
+
|---|---|
|
|
132
|
+
| `Button` | `variant` (primary/secondary/ghost), `size` (sm/md/lg), `disabled` |
|
|
133
|
+
| `Chip` | `children`, `checked`, `onPress`/`onClick` |
|
|
134
|
+
| `Alert` | `variant` (info/success), `title`, `description` |
|
|
135
|
+
| `ProgressBar` | `value` (0–100) |
|
|
136
|
+
| `Input` | `state` (default/filled/error/disabled), `leadingIcon`, `placeholder` |
|
|
137
|
+
| `Checkbox` | `checked`, `onChange`, `disabled` |
|
|
138
|
+
| `RadioItem` | `label`, `description`, `selected`, `icon`, `onPress`/`onClick` |
|
|
139
|
+
| `RadioGroup` | `label` (for a11y), `className`/`style` — wraps `RadioItem` list |
|
|
140
|
+
| `ActionItem` | `label`, `description`, `selected`, `icon`, `onPress`/`onClick` |
|
|
141
|
+
| `Stepper` | `steps`, `currentStep` |
|
|
142
|
+
| `RatingScale` | `value`, `onChange`, `options` (default: 5 emoji options) |
|
|
143
|
+
|
|
144
|
+
> Native components accept a `style` prop for layout overrides. Web components accept `className`.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
116
148
|
## Development
|
|
117
149
|
|
|
118
150
|
### Requirements
|
|
119
151
|
|
|
120
|
-
- Node
|
|
152
|
+
- Node 22+
|
|
121
153
|
- pnpm 10+
|
|
122
154
|
|
|
123
155
|
```sh
|
|
@@ -132,13 +164,15 @@ pnpm install
|
|
|
132
164
|
| `pnpm dev` | Watch mode (tsup) |
|
|
133
165
|
| `pnpm generate:theme` | Regenerate `src/tailwind/theme.css` from tokens |
|
|
134
166
|
| `pnpm typecheck` | TypeScript — library code |
|
|
167
|
+
| `pnpm test:unit` | Run unit tests (vitest) |
|
|
168
|
+
| `pnpm storybook` | Start Storybook on port 6006 |
|
|
135
169
|
| `pnpm lint` | ESLint |
|
|
136
170
|
|
|
137
171
|
### Adding or changing tokens
|
|
138
172
|
|
|
139
|
-
1. Edit `src/tokens/colors.ts`
|
|
173
|
+
1. Edit `src/tokens/colors.ts` or `src/tokens/typography.ts`
|
|
140
174
|
2. Run `pnpm generate:theme` to regenerate `theme.css`
|
|
141
|
-
3.
|
|
175
|
+
3. If adding a new semantic token, update `src/themes/types.ts` first, then both `lightTheme.ts` and `darkTheme.ts`
|
|
142
176
|
4. Run `pnpm build` before committing
|
|
143
177
|
|
|
144
178
|
`theme.css` is gitignored — it is always generated from source.
|
|
@@ -159,8 +193,7 @@ pnpm version major # 0.1.0 → 1.0.0
|
|
|
159
193
|
git push origin main --tags
|
|
160
194
|
```
|
|
161
195
|
|
|
162
|
-
The GitHub Actions
|
|
163
|
-
See [`docs/next-steps.md §5`](docs/next-steps.md) for the full workflow file.
|
|
196
|
+
The GitHub Actions CI runs typecheck, build, and unit tests on every push to `main` and on pull requests.
|
|
164
197
|
|
|
165
198
|
---
|
|
166
199
|
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
interface Theme {
|
|
2
|
+
bg: {
|
|
3
|
+
primary: string;
|
|
4
|
+
primaryHover: string;
|
|
5
|
+
primaryPressed: string;
|
|
6
|
+
primarySubtle: string;
|
|
7
|
+
primarySubtleHover: string;
|
|
8
|
+
primarySubtlePressed: string;
|
|
9
|
+
surface: string;
|
|
10
|
+
surfaceRaised: string;
|
|
11
|
+
surfaceHover: string;
|
|
12
|
+
surfacePressed: string;
|
|
13
|
+
overlay: string;
|
|
14
|
+
overlaySubtle: string;
|
|
15
|
+
overlaySubtleHover: string;
|
|
16
|
+
overlaySubtlePressed: string;
|
|
17
|
+
success: string;
|
|
18
|
+
successSubtle: string;
|
|
19
|
+
error: string;
|
|
20
|
+
errorSubtle: string;
|
|
21
|
+
warning: string;
|
|
22
|
+
warningSubtle: string;
|
|
23
|
+
info: string;
|
|
24
|
+
infoSubtle: string;
|
|
25
|
+
highlight: string;
|
|
26
|
+
accent: string;
|
|
27
|
+
accentSubtle: string;
|
|
28
|
+
disabled: string;
|
|
29
|
+
};
|
|
30
|
+
text: {
|
|
31
|
+
primary: string;
|
|
32
|
+
secondary: string;
|
|
33
|
+
inverse: string;
|
|
34
|
+
brand: string;
|
|
35
|
+
link: string;
|
|
36
|
+
placeholder: string;
|
|
37
|
+
success: string;
|
|
38
|
+
error: string;
|
|
39
|
+
warning: string;
|
|
40
|
+
info: string;
|
|
41
|
+
highlight: string;
|
|
42
|
+
accent: string;
|
|
43
|
+
disabled: string;
|
|
44
|
+
onSuccess: string;
|
|
45
|
+
onError: string;
|
|
46
|
+
onWarning: string;
|
|
47
|
+
onHighlight: string;
|
|
48
|
+
};
|
|
49
|
+
border: {
|
|
50
|
+
default: string;
|
|
51
|
+
strong: string;
|
|
52
|
+
subtle: string;
|
|
53
|
+
focus: string;
|
|
54
|
+
accent: string;
|
|
55
|
+
success: string;
|
|
56
|
+
error: string;
|
|
57
|
+
warning: string;
|
|
58
|
+
info: string;
|
|
59
|
+
disabled: string;
|
|
60
|
+
};
|
|
61
|
+
icon: {
|
|
62
|
+
primary: string;
|
|
63
|
+
secondary: string;
|
|
64
|
+
inverse: string;
|
|
65
|
+
brand: string;
|
|
66
|
+
accent: string;
|
|
67
|
+
success: string;
|
|
68
|
+
error: string;
|
|
69
|
+
warning: string;
|
|
70
|
+
info: string;
|
|
71
|
+
highlight: string;
|
|
72
|
+
disabled: string;
|
|
73
|
+
};
|
|
74
|
+
interactive: {
|
|
75
|
+
hover: string;
|
|
76
|
+
pressed: string;
|
|
77
|
+
selected: string;
|
|
78
|
+
selectedSubtle: string;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare const lightTheme: Theme;
|
|
83
|
+
|
|
84
|
+
declare const darkTheme: Theme;
|
|
85
|
+
|
|
86
|
+
type ChipSize = 'sm' | 'md';
|
|
87
|
+
|
|
88
|
+
type CheckboxSize = 'xs' | 'sm' | 'md';
|
|
89
|
+
|
|
90
|
+
export { type ChipSize as C, type Theme as T, type CheckboxSize as a, darkTheme as d, lightTheme as l };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
interface Theme {
|
|
2
|
+
bg: {
|
|
3
|
+
primary: string;
|
|
4
|
+
primaryHover: string;
|
|
5
|
+
primaryPressed: string;
|
|
6
|
+
primarySubtle: string;
|
|
7
|
+
primarySubtleHover: string;
|
|
8
|
+
primarySubtlePressed: string;
|
|
9
|
+
surface: string;
|
|
10
|
+
surfaceRaised: string;
|
|
11
|
+
surfaceHover: string;
|
|
12
|
+
surfacePressed: string;
|
|
13
|
+
overlay: string;
|
|
14
|
+
overlaySubtle: string;
|
|
15
|
+
overlaySubtleHover: string;
|
|
16
|
+
overlaySubtlePressed: string;
|
|
17
|
+
success: string;
|
|
18
|
+
successSubtle: string;
|
|
19
|
+
error: string;
|
|
20
|
+
errorSubtle: string;
|
|
21
|
+
warning: string;
|
|
22
|
+
warningSubtle: string;
|
|
23
|
+
info: string;
|
|
24
|
+
infoSubtle: string;
|
|
25
|
+
highlight: string;
|
|
26
|
+
accent: string;
|
|
27
|
+
accentSubtle: string;
|
|
28
|
+
disabled: string;
|
|
29
|
+
};
|
|
30
|
+
text: {
|
|
31
|
+
primary: string;
|
|
32
|
+
secondary: string;
|
|
33
|
+
inverse: string;
|
|
34
|
+
brand: string;
|
|
35
|
+
link: string;
|
|
36
|
+
placeholder: string;
|
|
37
|
+
success: string;
|
|
38
|
+
error: string;
|
|
39
|
+
warning: string;
|
|
40
|
+
info: string;
|
|
41
|
+
highlight: string;
|
|
42
|
+
accent: string;
|
|
43
|
+
disabled: string;
|
|
44
|
+
onSuccess: string;
|
|
45
|
+
onError: string;
|
|
46
|
+
onWarning: string;
|
|
47
|
+
onHighlight: string;
|
|
48
|
+
};
|
|
49
|
+
border: {
|
|
50
|
+
default: string;
|
|
51
|
+
strong: string;
|
|
52
|
+
subtle: string;
|
|
53
|
+
focus: string;
|
|
54
|
+
accent: string;
|
|
55
|
+
success: string;
|
|
56
|
+
error: string;
|
|
57
|
+
warning: string;
|
|
58
|
+
info: string;
|
|
59
|
+
disabled: string;
|
|
60
|
+
};
|
|
61
|
+
icon: {
|
|
62
|
+
primary: string;
|
|
63
|
+
secondary: string;
|
|
64
|
+
inverse: string;
|
|
65
|
+
brand: string;
|
|
66
|
+
accent: string;
|
|
67
|
+
success: string;
|
|
68
|
+
error: string;
|
|
69
|
+
warning: string;
|
|
70
|
+
info: string;
|
|
71
|
+
highlight: string;
|
|
72
|
+
disabled: string;
|
|
73
|
+
};
|
|
74
|
+
interactive: {
|
|
75
|
+
hover: string;
|
|
76
|
+
pressed: string;
|
|
77
|
+
selected: string;
|
|
78
|
+
selectedSubtle: string;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare const lightTheme: Theme;
|
|
83
|
+
|
|
84
|
+
declare const darkTheme: Theme;
|
|
85
|
+
|
|
86
|
+
type ChipSize = 'sm' | 'md';
|
|
87
|
+
|
|
88
|
+
type CheckboxSize = 'xs' | 'sm' | 'md';
|
|
89
|
+
|
|
90
|
+
export { type ChipSize as C, type Theme as T, type CheckboxSize as a, darkTheme as d, lightTheme as l };
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
// src/tokens/colors.ts
|
|
2
|
+
var colors = {
|
|
3
|
+
marianBlue: {
|
|
4
|
+
50: "#FAFBFF",
|
|
5
|
+
100: "#F6F8FF",
|
|
6
|
+
200: "#E1E7FF",
|
|
7
|
+
300: "#C3CCF7",
|
|
8
|
+
400: "#94A5F2",
|
|
9
|
+
500: "#697DD6",
|
|
10
|
+
600: "#4357AD",
|
|
11
|
+
700: "#31428B",
|
|
12
|
+
800: "#25326A",
|
|
13
|
+
900: "#131937"
|
|
14
|
+
},
|
|
15
|
+
midnight: {
|
|
16
|
+
50: "#707070",
|
|
17
|
+
100: "#5C5C5C",
|
|
18
|
+
200: "#525252",
|
|
19
|
+
300: "#474747",
|
|
20
|
+
400: "#3D3D3D",
|
|
21
|
+
500: "#333333",
|
|
22
|
+
600: "#292929",
|
|
23
|
+
700: "#161616",
|
|
24
|
+
800: "#141414",
|
|
25
|
+
900: "#0A0A0A"
|
|
26
|
+
},
|
|
27
|
+
gray: {
|
|
28
|
+
15: "#F4F5F8",
|
|
29
|
+
25: "#EDEEF1",
|
|
30
|
+
35: "#DDE0E6",
|
|
31
|
+
50: "#B1B5BE",
|
|
32
|
+
100: "#A6ABB5",
|
|
33
|
+
200: "#9BA0AB",
|
|
34
|
+
300: "#9095A2",
|
|
35
|
+
400: "#858B99",
|
|
36
|
+
500: "#7A8190",
|
|
37
|
+
600: "#6F7685",
|
|
38
|
+
700: "#5E6471",
|
|
39
|
+
800: "#5D636F",
|
|
40
|
+
900: "#545964"
|
|
41
|
+
},
|
|
42
|
+
amber: {
|
|
43
|
+
50: "#FFFBEB",
|
|
44
|
+
100: "#FEF3C7",
|
|
45
|
+
200: "#FDE68A",
|
|
46
|
+
300: "#FCD34D",
|
|
47
|
+
400: "#FBBF24",
|
|
48
|
+
500: "#F59E0B",
|
|
49
|
+
600: "#D97706",
|
|
50
|
+
700: "#B45309",
|
|
51
|
+
800: "#92400E",
|
|
52
|
+
900: "#78350F",
|
|
53
|
+
text: "#BA5C0A"
|
|
54
|
+
},
|
|
55
|
+
yellow: {
|
|
56
|
+
50: "#FFF2D6",
|
|
57
|
+
100: "#FFECC2",
|
|
58
|
+
200: "#FFE5AD",
|
|
59
|
+
300: "#FFDF99",
|
|
60
|
+
400: "#FFD885",
|
|
61
|
+
500: "#FFD270",
|
|
62
|
+
600: "#FFCB5C",
|
|
63
|
+
700: "#FFC140",
|
|
64
|
+
800: "#FFBE33",
|
|
65
|
+
900: "#FFB81F"
|
|
66
|
+
},
|
|
67
|
+
ketchup: {
|
|
68
|
+
50: "#FEF2F2",
|
|
69
|
+
100: "#FEE2E2",
|
|
70
|
+
200: "#FECACA",
|
|
71
|
+
300: "#FCA5A5",
|
|
72
|
+
400: "#F87171",
|
|
73
|
+
500: "#EF4444",
|
|
74
|
+
600: "#DC2626",
|
|
75
|
+
700: "#B91C1C",
|
|
76
|
+
800: "#991B1B",
|
|
77
|
+
900: "#7F1D1D",
|
|
78
|
+
text: "#D91F3C"
|
|
79
|
+
},
|
|
80
|
+
green: {
|
|
81
|
+
50: "#F2FDF4",
|
|
82
|
+
100: "#E5FBE9",
|
|
83
|
+
200: "#C7F4D0",
|
|
84
|
+
300: "#99E5AC",
|
|
85
|
+
400: "#5FCD80",
|
|
86
|
+
500: "#36B260",
|
|
87
|
+
600: "#258F4B",
|
|
88
|
+
700: "#1B6F3B",
|
|
89
|
+
800: "#145430",
|
|
90
|
+
900: "#0E3622",
|
|
91
|
+
text: "#0E8745"
|
|
92
|
+
},
|
|
93
|
+
blue: {
|
|
94
|
+
50: "#EFF6FF",
|
|
95
|
+
100: "#DBEAFE",
|
|
96
|
+
200: "#BFDBFE",
|
|
97
|
+
300: "#93C5FD",
|
|
98
|
+
400: "#60A5FA",
|
|
99
|
+
500: "#3B82F6",
|
|
100
|
+
600: "#2563EB",
|
|
101
|
+
700: "#1D4ED8",
|
|
102
|
+
800: "#1E40AF",
|
|
103
|
+
900: "#1E3A8A",
|
|
104
|
+
text: "#1E40AF"
|
|
105
|
+
},
|
|
106
|
+
// Single brand accent green — the vibrant tone that was previously green/300
|
|
107
|
+
// before the green scale was retuned to muted values in the Figma v2 palette.
|
|
108
|
+
brandGreen: "#6DFFB4",
|
|
109
|
+
overlayBlack: {
|
|
110
|
+
5: "#0000000D",
|
|
111
|
+
8: "#00000014",
|
|
112
|
+
12: "#0000001F",
|
|
113
|
+
16: "#00000029"
|
|
114
|
+
},
|
|
115
|
+
overlayWhite: {
|
|
116
|
+
5: "#FFFFFF0D",
|
|
117
|
+
8: "#FFFFFF14",
|
|
118
|
+
12: "#FFFFFF1F",
|
|
119
|
+
16: "#FFFFFF29"
|
|
120
|
+
},
|
|
121
|
+
white: "#FFFFFF",
|
|
122
|
+
black: "#000000"
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/tokens/typography.ts
|
|
126
|
+
var typography = {
|
|
127
|
+
display1: { fontFamily: "Poppins", fontSize: 32, fontWeight: "700", lineHeight: 40, letterSpacing: -1, textTransform: "none" },
|
|
128
|
+
display2: { fontFamily: "Poppins", fontSize: 32, fontWeight: "700", lineHeight: 40, letterSpacing: -1, textTransform: "none" },
|
|
129
|
+
h1: { fontFamily: "Poppins", fontSize: 24, fontWeight: "700", lineHeight: 32, letterSpacing: -1, textTransform: "none" },
|
|
130
|
+
h2: { fontFamily: "Poppins", fontSize: 20, fontWeight: "700", lineHeight: 28, letterSpacing: 0, textTransform: "none" },
|
|
131
|
+
h3: { fontFamily: "Poppins", fontSize: 16, fontWeight: "600", lineHeight: 24, letterSpacing: 0, textTransform: "none" },
|
|
132
|
+
bodyLarge: { fontFamily: "Inter", fontSize: 16, fontWeight: "500", lineHeight: 24, letterSpacing: 0, textTransform: "none" },
|
|
133
|
+
bodyDefault: { fontFamily: "Inter", fontSize: 14, fontWeight: "500", lineHeight: 20, letterSpacing: 0, textTransform: "none" },
|
|
134
|
+
bodySmall: { fontFamily: "Inter", fontSize: 12, fontWeight: "400", lineHeight: 16, letterSpacing: 0.2, textTransform: "none" },
|
|
135
|
+
labelLarge: { fontFamily: "Inter", fontSize: 16, fontWeight: "600", lineHeight: 20, letterSpacing: 0, textTransform: "none" },
|
|
136
|
+
labelDefault: { fontFamily: "Inter", fontSize: 14, fontWeight: "600", lineHeight: 20, letterSpacing: 0, textTransform: "none" },
|
|
137
|
+
labelSmall: { fontFamily: "Inter", fontSize: 12, fontWeight: "600", lineHeight: 16, letterSpacing: 0.2, textTransform: "none" },
|
|
138
|
+
labelTiny: { fontFamily: "Inter", fontSize: 10, fontWeight: "600", lineHeight: 14, letterSpacing: 0, textTransform: "none" },
|
|
139
|
+
caption: { fontFamily: "Inter", fontSize: 12, fontWeight: "500", lineHeight: 16, letterSpacing: 0.5, textTransform: "none" },
|
|
140
|
+
captionUppercase: { fontFamily: "Inter", fontSize: 12, fontWeight: "500", lineHeight: 16, letterSpacing: 0.5, textTransform: "uppercase" },
|
|
141
|
+
overline: { fontFamily: "Inter", fontSize: 10, fontWeight: "600", lineHeight: 16, letterSpacing: 8, textTransform: "uppercase" },
|
|
142
|
+
buttonLarge: { fontFamily: "Inter", fontSize: 16, fontWeight: "600", lineHeight: 20, letterSpacing: 0, textTransform: "none" },
|
|
143
|
+
buttonDefault: { fontFamily: "Inter", fontSize: 14, fontWeight: "600", lineHeight: 20, letterSpacing: 0, textTransform: "none" },
|
|
144
|
+
buttonSmall: { fontFamily: "Inter", fontSize: 12, fontWeight: "600", lineHeight: 16, letterSpacing: 0, textTransform: "none" }
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// src/tokens/spacing.ts
|
|
148
|
+
var spacing = {
|
|
149
|
+
unit: 4,
|
|
150
|
+
gap: {
|
|
151
|
+
"0.5": 2,
|
|
152
|
+
"1": 4,
|
|
153
|
+
"2": 8,
|
|
154
|
+
"3": 12,
|
|
155
|
+
"4": 16,
|
|
156
|
+
"5": 20,
|
|
157
|
+
"6": 24,
|
|
158
|
+
"8": 32,
|
|
159
|
+
"10": 40,
|
|
160
|
+
"12": 48,
|
|
161
|
+
"14": 56,
|
|
162
|
+
"16": 64,
|
|
163
|
+
"18": 72,
|
|
164
|
+
"20": 80,
|
|
165
|
+
"22": 88,
|
|
166
|
+
"24": 96
|
|
167
|
+
},
|
|
168
|
+
screen: {
|
|
169
|
+
x: 16,
|
|
170
|
+
y: 24
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// src/tokens/grid.ts
|
|
175
|
+
var grid = {
|
|
176
|
+
// 8px square baseline — line-height/* steps 16/24/32/40 snap; 20 and 28 land on a half-cell
|
|
177
|
+
baseline: 8,
|
|
178
|
+
breakpoints: {
|
|
179
|
+
mobile: 0,
|
|
180
|
+
tablet: 768,
|
|
181
|
+
desktop: 1024
|
|
182
|
+
},
|
|
183
|
+
columns: {
|
|
184
|
+
mobile: 4,
|
|
185
|
+
tablet: 8,
|
|
186
|
+
desktop: 12
|
|
187
|
+
},
|
|
188
|
+
gutter: {
|
|
189
|
+
mobile: 8,
|
|
190
|
+
tablet: 16,
|
|
191
|
+
desktop: 24
|
|
192
|
+
},
|
|
193
|
+
margin: {
|
|
194
|
+
mobile: 20,
|
|
195
|
+
tablet: 24,
|
|
196
|
+
desktop: 32
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// src/tokens/radius.ts
|
|
201
|
+
var radius = {
|
|
202
|
+
none: 0,
|
|
203
|
+
sm: 8,
|
|
204
|
+
md: 12,
|
|
205
|
+
lg: 16,
|
|
206
|
+
xl: 20,
|
|
207
|
+
"2xl": 24,
|
|
208
|
+
full: 9999,
|
|
209
|
+
button: 16,
|
|
210
|
+
card: 20,
|
|
211
|
+
input: 12,
|
|
212
|
+
chip: 9999,
|
|
213
|
+
badge: 8
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// src/tokens/borderWidth.ts
|
|
217
|
+
var borderWidth = {
|
|
218
|
+
default: 1,
|
|
219
|
+
strong: 1.5,
|
|
220
|
+
heavy: 2
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
// src/tokens/shadow.ts
|
|
224
|
+
var shadow = {
|
|
225
|
+
sm: { offsetX: 0, offsetY: 1, blur: 3, spread: 0, color: "#000000", opacity: { light: 0.08, dark: 0.4 } },
|
|
226
|
+
md: { offsetX: 0, offsetY: 4, blur: 12, spread: 0, color: "#000000", opacity: { light: 0.1, dark: 0.5 } },
|
|
227
|
+
lg: { offsetX: 0, offsetY: 8, blur: 24, spread: -4, color: "#000000", opacity: { light: 0.12, dark: 0.6 } }
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
// src/tokens/opacity.ts
|
|
231
|
+
var opacity = {
|
|
232
|
+
disabled: 0.4,
|
|
233
|
+
hover: 0.08,
|
|
234
|
+
pressed: 0.12
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
export {
|
|
238
|
+
colors,
|
|
239
|
+
typography,
|
|
240
|
+
spacing,
|
|
241
|
+
grid,
|
|
242
|
+
radius,
|
|
243
|
+
borderWidth,
|
|
244
|
+
shadow,
|
|
245
|
+
opacity
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=chunk-ZK7NW4WW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/colors.ts","../src/tokens/typography.ts","../src/tokens/spacing.ts","../src/tokens/grid.ts","../src/tokens/radius.ts","../src/tokens/borderWidth.ts","../src/tokens/shadow.ts","../src/tokens/opacity.ts"],"sourcesContent":["export const colors = {\n marianBlue: {\n 50: '#FAFBFF',\n 100: '#F6F8FF',\n 200: '#E1E7FF',\n 300: '#C3CCF7',\n 400: '#94A5F2',\n 500: '#697DD6',\n 600: '#4357AD',\n 700: '#31428B',\n 800: '#25326A',\n 900: '#131937',\n },\n\n midnight: {\n 50: '#707070',\n 100: '#5C5C5C',\n 200: '#525252',\n 300: '#474747',\n 400: '#3D3D3D',\n 500: '#333333',\n 600: '#292929',\n 700: '#161616',\n 800: '#141414',\n 900: '#0A0A0A',\n },\n\n gray: {\n 15: '#F4F5F8',\n 25: '#EDEEF1',\n 35: '#DDE0E6',\n 50: '#B1B5BE',\n 100: '#A6ABB5',\n 200: '#9BA0AB',\n 300: '#9095A2',\n 400: '#858B99',\n 500: '#7A8190',\n 600: '#6F7685',\n 700: '#5E6471',\n 800: '#5D636F',\n 900: '#545964',\n },\n\n amber: {\n 50: '#FFFBEB',\n 100: '#FEF3C7',\n 200: '#FDE68A',\n 300: '#FCD34D',\n 400: '#FBBF24',\n 500: '#F59E0B',\n 600: '#D97706',\n 700: '#B45309',\n 800: '#92400E',\n 900: '#78350F',\n text: '#BA5C0A',\n },\n\n yellow: {\n 50: '#FFF2D6',\n 100: '#FFECC2',\n 200: '#FFE5AD',\n 300: '#FFDF99',\n 400: '#FFD885',\n 500: '#FFD270',\n 600: '#FFCB5C',\n 700: '#FFC140',\n 800: '#FFBE33',\n 900: '#FFB81F',\n },\n\n ketchup: {\n 50: '#FEF2F2',\n 100: '#FEE2E2',\n 200: '#FECACA',\n 300: '#FCA5A5',\n 400: '#F87171',\n 500: '#EF4444',\n 600: '#DC2626',\n 700: '#B91C1C',\n 800: '#991B1B',\n 900: '#7F1D1D',\n text: '#D91F3C',\n },\n\n green: {\n 50: '#F2FDF4',\n 100: '#E5FBE9',\n 200: '#C7F4D0',\n 300: '#99E5AC',\n 400: '#5FCD80',\n 500: '#36B260',\n 600: '#258F4B',\n 700: '#1B6F3B',\n 800: '#145430',\n 900: '#0E3622',\n text: '#0E8745',\n },\n\n blue: {\n 50: '#EFF6FF',\n 100: '#DBEAFE',\n 200: '#BFDBFE',\n 300: '#93C5FD',\n 400: '#60A5FA',\n 500: '#3B82F6',\n 600: '#2563EB',\n 700: '#1D4ED8',\n 800: '#1E40AF',\n 900: '#1E3A8A',\n text: '#1E40AF',\n },\n\n // Single brand accent green — the vibrant tone that was previously green/300\n // before the green scale was retuned to muted values in the Figma v2 palette.\n brandGreen: '#6DFFB4',\n\n overlayBlack: {\n 5: '#0000000D',\n 8: '#00000014',\n 12: '#0000001F',\n 16: '#00000029',\n },\n\n overlayWhite: {\n 5: '#FFFFFF0D',\n 8: '#FFFFFF14',\n 12: '#FFFFFF1F',\n 16: '#FFFFFF29',\n },\n\n white: '#FFFFFF',\n black: '#000000',\n} as const\n\nexport type Colors = typeof colors\n","export const typography = {\n display1: { fontFamily: 'Poppins', fontSize: 32, fontWeight: '700', lineHeight: 40, letterSpacing: -1, textTransform: 'none' },\n display2: { fontFamily: 'Poppins', fontSize: 32, fontWeight: '700', lineHeight: 40, letterSpacing: -1, textTransform: 'none' },\n h1: { fontFamily: 'Poppins', fontSize: 24, fontWeight: '700', lineHeight: 32, letterSpacing: -1, textTransform: 'none' },\n h2: { fontFamily: 'Poppins', fontSize: 20, fontWeight: '700', lineHeight: 28, letterSpacing: 0, textTransform: 'none' },\n h3: { fontFamily: 'Poppins', fontSize: 16, fontWeight: '600', lineHeight: 24, letterSpacing: 0, textTransform: 'none' },\n bodyLarge: { fontFamily: 'Inter', fontSize: 16, fontWeight: '500', lineHeight: 24, letterSpacing: 0, textTransform: 'none' },\n bodyDefault: { fontFamily: 'Inter', fontSize: 14, fontWeight: '500', lineHeight: 20, letterSpacing: 0, textTransform: 'none' },\n bodySmall: { fontFamily: 'Inter', fontSize: 12, fontWeight: '400', lineHeight: 16, letterSpacing: 0.2, textTransform: 'none' },\n labelLarge: { fontFamily: 'Inter', fontSize: 16, fontWeight: '600', lineHeight: 20, letterSpacing: 0, textTransform: 'none' },\n labelDefault: { fontFamily: 'Inter', fontSize: 14, fontWeight: '600', lineHeight: 20, letterSpacing: 0, textTransform: 'none' },\n labelSmall: { fontFamily: 'Inter', fontSize: 12, fontWeight: '600', lineHeight: 16, letterSpacing: 0.2, textTransform: 'none' },\n labelTiny: { fontFamily: 'Inter', fontSize: 10, fontWeight: '600', lineHeight: 14, letterSpacing: 0, textTransform: 'none' },\n caption: { fontFamily: 'Inter', fontSize: 12, fontWeight: '500', lineHeight: 16, letterSpacing: 0.5, textTransform: 'none' },\n captionUppercase: { fontFamily: 'Inter', fontSize: 12, fontWeight: '500', lineHeight: 16, letterSpacing: 0.5, textTransform: 'uppercase' },\n overline: { fontFamily: 'Inter', fontSize: 10, fontWeight: '600', lineHeight: 16, letterSpacing: 8, textTransform: 'uppercase' },\n buttonLarge: { fontFamily: 'Inter', fontSize: 16, fontWeight: '600', lineHeight: 20, letterSpacing: 0, textTransform: 'none' },\n buttonDefault: { fontFamily: 'Inter', fontSize: 14, fontWeight: '600', lineHeight: 20, letterSpacing: 0, textTransform: 'none' },\n buttonSmall: { fontFamily: 'Inter', fontSize: 12, fontWeight: '600', lineHeight: 16, letterSpacing: 0, textTransform: 'none' },\n} as const\n\nexport type Typography = typeof typography\n","export const spacing = {\n unit: 4,\n gap: {\n '0.5': 2,\n '1': 4,\n '2': 8,\n '3': 12,\n '4': 16,\n '5': 20,\n '6': 24,\n '8': 32,\n '10': 40,\n '12': 48,\n '14': 56,\n '16': 64,\n '18': 72,\n '20': 80,\n '22': 88,\n '24': 96,\n },\n screen: {\n x: 16,\n y: 24,\n },\n} as const\n\nexport type Spacing = typeof spacing\n","export const grid = {\n // 8px square baseline — line-height/* steps 16/24/32/40 snap; 20 and 28 land on a half-cell\n baseline: 8,\n breakpoints: {\n mobile: 0,\n tablet: 768,\n desktop: 1024,\n },\n columns: {\n mobile: 4,\n tablet: 8,\n desktop: 12,\n },\n gutter: {\n mobile: 8,\n tablet: 16,\n desktop: 24,\n },\n margin: {\n mobile: 20,\n tablet: 24,\n desktop: 32,\n },\n} as const\n\nexport type Grid = typeof grid\n","export const radius = {\n none: 0,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 20,\n '2xl': 24,\n full: 9999,\n\n button: 16,\n card: 20,\n input: 12,\n chip: 9999,\n badge: 8,\n} as const\n\nexport type Radius = typeof radius\n","export const borderWidth = {\n default: 1,\n strong: 1.5,\n heavy: 2,\n} as const\n\nexport type BorderWidth = typeof borderWidth\n","export const shadow = {\n sm: { offsetX: 0, offsetY: 1, blur: 3, spread: 0, color: '#000000', opacity: { light: 0.08, dark: 0.40 } },\n md: { offsetX: 0, offsetY: 4, blur: 12, spread: 0, color: '#000000', opacity: { light: 0.10, dark: 0.50 } },\n lg: { offsetX: 0, offsetY: 8, blur: 24, spread: -4, color: '#000000', opacity: { light: 0.12, dark: 0.60 } },\n} as const\n\nexport type Shadow = typeof shadow\n","export const opacity = {\n disabled: 0.4,\n hover: 0.08,\n pressed: 0.12,\n} as const\n\nexport type Opacity = typeof opacity\n"],"mappings":"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","names":[]}
|