@amsterdamdatalabs/enact-design-system 0.1.1
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 +115 -0
- package/dist/components/core/Avatar/Avatar.d.ts +7 -0
- package/dist/components/core/Avatar/index.d.ts +1 -0
- package/dist/components/core/Badge/Badge.d.ts +7 -0
- package/dist/components/core/Badge/index.d.ts +1 -0
- package/dist/components/core/Button/Button.d.ts +10 -0
- package/dist/components/core/Button/index.d.ts +1 -0
- package/dist/components/core/Card/Card.d.ts +9 -0
- package/dist/components/core/Card/index.d.ts +1 -0
- package/dist/components/core/IconButton/IconButton.d.ts +9 -0
- package/dist/components/core/IconButton/index.d.ts +1 -0
- package/dist/components/core/Stat/Stat.d.ts +9 -0
- package/dist/components/core/Stat/index.d.ts +1 -0
- package/dist/components/core/Tag/Tag.d.ts +7 -0
- package/dist/components/core/Tag/index.d.ts +1 -0
- package/dist/components/feedback/Alert/Alert.d.ts +9 -0
- package/dist/components/feedback/Alert/index.d.ts +1 -0
- package/dist/components/feedback/Progress/Progress.d.ts +10 -0
- package/dist/components/feedback/Progress/index.d.ts +1 -0
- package/dist/components/feedback/Tooltip/Tooltip.d.ts +7 -0
- package/dist/components/feedback/Tooltip/index.d.ts +1 -0
- package/dist/components/forms/Checkbox/Checkbox.d.ts +9 -0
- package/dist/components/forms/Checkbox/index.d.ts +1 -0
- package/dist/components/forms/Field/Field.d.ts +11 -0
- package/dist/components/forms/Field/index.d.ts +1 -0
- package/dist/components/forms/Input/Input.d.ts +6 -0
- package/dist/components/forms/Input/index.d.ts +1 -0
- package/dist/components/forms/Select/Select.d.ts +7 -0
- package/dist/components/forms/Select/index.d.ts +1 -0
- package/dist/components/forms/Switch/Switch.d.ts +9 -0
- package/dist/components/forms/Switch/index.d.ts +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts +10 -0
- package/dist/components/navigation/Breadcrumb/index.d.ts +1 -0
- package/dist/components/navigation/Tabs/Tabs.d.ts +15 -0
- package/dist/components/navigation/Tabs/index.d.ts +1 -0
- package/dist/enact-design-system.css +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +749 -0
- package/dist/lib/cx.d.ts +2 -0
- package/dist/tokens.css +449 -0
- package/package.json +61 -0
package/dist/lib/cx.d.ts
ADDED
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
/* ==== tokens/fonts.css ==== */
|
|
2
|
+
/* Amsterdam Data Labs — webfonts.
|
|
3
|
+
NOTE: No brand font binaries were provided. These are Google Fonts
|
|
4
|
+
substitutions chosen to match the geometric, technical wordmark:
|
|
5
|
+
- Space Grotesk → display / headings (geometric grotesque, techy)
|
|
6
|
+
- Manrope → body / UI text (clean, slightly geometric humanist)
|
|
7
|
+
- IBM Plex Mono → code, data, numerals in tables
|
|
8
|
+
Replace with licensed brand fonts when available. */
|
|
9
|
+
@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap");
|
|
10
|
+
|
|
11
|
+
/* ==== tokens/colors.css ==== */
|
|
12
|
+
/* Amsterdam Data Labs — color tokens.
|
|
13
|
+
Primitives (--adl-*) come from the ADL W3C DTCG token source.
|
|
14
|
+
Product code should consume the SEMANTIC tokens (bottom of file). */
|
|
15
|
+
|
|
16
|
+
:root {
|
|
17
|
+
/* ── Primitive ramps ───────────────────────────────────────── */
|
|
18
|
+
|
|
19
|
+
/* Teal — primary brand. Anchor 500 = #18949a */
|
|
20
|
+
--adl-teal-50: #e6f4f5;
|
|
21
|
+
--adl-teal-100: #c0e3e5;
|
|
22
|
+
--adl-teal-200: #95d0d3;
|
|
23
|
+
--adl-teal-300: #66bcc0;
|
|
24
|
+
--adl-teal-400: #3aa9ae;
|
|
25
|
+
--adl-teal-500: #18949a;
|
|
26
|
+
--adl-teal-600: #147f84;
|
|
27
|
+
--adl-teal-700: #10696d;
|
|
28
|
+
--adl-teal-800: #0c5256;
|
|
29
|
+
--adl-teal-900: #073b3e;
|
|
30
|
+
|
|
31
|
+
/* Mint — secondary brand / success. Anchor 400 = #5acfb0 */
|
|
32
|
+
--adl-mint-50: #e9f9f4;
|
|
33
|
+
--adl-mint-100: #cdf1e6;
|
|
34
|
+
--adl-mint-200: #a6e6d2;
|
|
35
|
+
--adl-mint-300: #7eddc1;
|
|
36
|
+
--adl-mint-400: #5acfb0;
|
|
37
|
+
--adl-mint-500: #3bb898;
|
|
38
|
+
--adl-mint-600: #2e9a7f;
|
|
39
|
+
--adl-mint-700: #237b66;
|
|
40
|
+
--adl-mint-800: #195d4d;
|
|
41
|
+
--adl-mint-900: #103f34;
|
|
42
|
+
|
|
43
|
+
/* Navy — cool ink / dark neutral. Anchors 600/700/900 */
|
|
44
|
+
--adl-navy-50: #eef2f6;
|
|
45
|
+
--adl-navy-100: #d2dde7;
|
|
46
|
+
--adl-navy-200: #a8bccf;
|
|
47
|
+
--adl-navy-300: #7795b1;
|
|
48
|
+
--adl-navy-400: #4a6a8a;
|
|
49
|
+
--adl-navy-500: #2c4763;
|
|
50
|
+
--adl-navy-600: #1f3a5f;
|
|
51
|
+
--adl-navy-700: #1a2332;
|
|
52
|
+
--adl-navy-800: #0f2a44;
|
|
53
|
+
--adl-navy-900: #0a2840;
|
|
54
|
+
--adl-navy-950: #061726;
|
|
55
|
+
|
|
56
|
+
/* Blue — sky / bright blue. Anchors 200/400/500 */
|
|
57
|
+
--adl-blue-50: #eaf3fc;
|
|
58
|
+
--adl-blue-100: #cfe6f9;
|
|
59
|
+
--adl-blue-200: #c5ddf2;
|
|
60
|
+
--adl-blue-300: #8ec6ee;
|
|
61
|
+
--adl-blue-400: #5dade2;
|
|
62
|
+
--adl-blue-500: #4fa0e3;
|
|
63
|
+
--adl-blue-600: #3a82c4;
|
|
64
|
+
--adl-blue-700: #2e679e;
|
|
65
|
+
--adl-blue-800: #234e78;
|
|
66
|
+
--adl-blue-900: #183753;
|
|
67
|
+
|
|
68
|
+
/* Indigo — periwinkle. Anchors 500/600 */
|
|
69
|
+
--adl-indigo-50: #eef1fb;
|
|
70
|
+
--adl-indigo-100: #d6ddf5;
|
|
71
|
+
--adl-indigo-200: #b3c0ec;
|
|
72
|
+
--adl-indigo-300: #8fa3e2;
|
|
73
|
+
--adl-indigo-400: #7389db;
|
|
74
|
+
--adl-indigo-500: #5b7bd5;
|
|
75
|
+
--adl-indigo-600: #5b6bc0;
|
|
76
|
+
--adl-indigo-700: #48569c;
|
|
77
|
+
--adl-indigo-800: #384278;
|
|
78
|
+
--adl-indigo-900: #282f55;
|
|
79
|
+
|
|
80
|
+
/* Violet — accent. Anchor 500 = #6c5ce7 */
|
|
81
|
+
--adl-violet-50: #efedfc;
|
|
82
|
+
--adl-violet-100: #d8d2f8;
|
|
83
|
+
--adl-violet-200: #bab0f2;
|
|
84
|
+
--adl-violet-300: #9b8eec;
|
|
85
|
+
--adl-violet-400: #8170e9;
|
|
86
|
+
--adl-violet-500: #6c5ce7;
|
|
87
|
+
--adl-violet-600: #5847c4;
|
|
88
|
+
--adl-violet-700: #46389c;
|
|
89
|
+
--adl-violet-800: #352b76;
|
|
90
|
+
--adl-violet-900: #251e52;
|
|
91
|
+
|
|
92
|
+
/* Cyan — highlight. Anchor 400 = #4dd0e1 */
|
|
93
|
+
--adl-cyan-50: #e7fafc;
|
|
94
|
+
--adl-cyan-100: #c4f1f6;
|
|
95
|
+
--adl-cyan-200: #97e5ee;
|
|
96
|
+
--adl-cyan-300: #6cdae6;
|
|
97
|
+
--adl-cyan-400: #4dd0e1;
|
|
98
|
+
--adl-cyan-500: #2bb6c8;
|
|
99
|
+
--adl-cyan-600: #2194a3;
|
|
100
|
+
--adl-cyan-700: #19737f;
|
|
101
|
+
--adl-cyan-800: #12545d;
|
|
102
|
+
--adl-cyan-900: #0b373d;
|
|
103
|
+
|
|
104
|
+
/* Maroon — deep accent (estimated anchor 600) */
|
|
105
|
+
--adl-maroon-50: #f7eaea;
|
|
106
|
+
--adl-maroon-100: #ecc9c9;
|
|
107
|
+
--adl-maroon-200: #dc9d9d;
|
|
108
|
+
--adl-maroon-300: #c96f6f;
|
|
109
|
+
--adl-maroon-400: #a84444;
|
|
110
|
+
--adl-maroon-500: #842b2b;
|
|
111
|
+
--adl-maroon-600: #6b2020;
|
|
112
|
+
--adl-maroon-700: #561a1a;
|
|
113
|
+
--adl-maroon-800: #411414;
|
|
114
|
+
--adl-maroon-900: #2d0e0e;
|
|
115
|
+
|
|
116
|
+
/* Red — error / danger. Anchors 300 (dark) / 500 (light) */
|
|
117
|
+
--adl-red-50: #fcebe9;
|
|
118
|
+
--adl-red-100: #f6cac5;
|
|
119
|
+
--adl-red-200: #eea49b;
|
|
120
|
+
--adl-red-300: #e57373;
|
|
121
|
+
--adl-red-400: #d4564a;
|
|
122
|
+
--adl-red-500: #c0392b;
|
|
123
|
+
--adl-red-600: #a32d21;
|
|
124
|
+
--adl-red-700: #82241a;
|
|
125
|
+
--adl-red-800: #611b14;
|
|
126
|
+
--adl-red-900: #41120d;
|
|
127
|
+
|
|
128
|
+
/* Pink — soft tint. Anchor 200 = #f5c2c7 */
|
|
129
|
+
--adl-pink-50: #fdf0f1;
|
|
130
|
+
--adl-pink-100: #fad9dc;
|
|
131
|
+
--adl-pink-200: #f5c2c7;
|
|
132
|
+
--adl-pink-300: #eda1a8;
|
|
133
|
+
--adl-pink-400: #e07c85;
|
|
134
|
+
--adl-pink-500: #cf5762;
|
|
135
|
+
|
|
136
|
+
/* Amber — warning (added default; no native ADL warning hue) */
|
|
137
|
+
--adl-amber-50: #fdf6e8;
|
|
138
|
+
--adl-amber-100: #f9e6bf;
|
|
139
|
+
--adl-amber-200: #f2cf86;
|
|
140
|
+
--adl-amber-300: #e9b652;
|
|
141
|
+
--adl-amber-400: #e0a23b;
|
|
142
|
+
--adl-amber-500: #c8842a;
|
|
143
|
+
--adl-amber-600: #a4691f;
|
|
144
|
+
--adl-amber-700: #7e4f18;
|
|
145
|
+
|
|
146
|
+
/* Neutral — cool grays. Anchors 0/50/200 */
|
|
147
|
+
--adl-neutral-0: #ffffff;
|
|
148
|
+
--adl-neutral-50: #f7fbff;
|
|
149
|
+
--adl-neutral-100: #eef4fa;
|
|
150
|
+
--adl-neutral-200: #dde7f0;
|
|
151
|
+
--adl-neutral-300: #c2d2e0;
|
|
152
|
+
--adl-neutral-400: #9fb2c4;
|
|
153
|
+
--adl-neutral-500: #7388a0;
|
|
154
|
+
--adl-neutral-600: #51647a;
|
|
155
|
+
--adl-neutral-700: #374759;
|
|
156
|
+
--adl-neutral-800: #1f2c3a;
|
|
157
|
+
--adl-neutral-900: #0e1822;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* ── Semantic tokens — LIGHT (default) ─────────────────────────
|
|
161
|
+
Consume these in product code; never the raw ramps. */
|
|
162
|
+
:root {
|
|
163
|
+
--bg-canvas: var(--adl-neutral-0);
|
|
164
|
+
--bg-subtle: var(--adl-neutral-50);
|
|
165
|
+
--bg-muted: var(--adl-neutral-200);
|
|
166
|
+
--bg-inverse: var(--adl-navy-900);
|
|
167
|
+
|
|
168
|
+
--surface-default: var(--adl-neutral-0);
|
|
169
|
+
--surface-raised: var(--adl-neutral-50);
|
|
170
|
+
--surface-sunken: var(--adl-neutral-100);
|
|
171
|
+
|
|
172
|
+
--text-primary: var(--adl-navy-900);
|
|
173
|
+
--text-secondary: var(--adl-navy-600);
|
|
174
|
+
--text-muted: var(--adl-neutral-500);
|
|
175
|
+
--text-inverse: var(--adl-neutral-0);
|
|
176
|
+
--text-link: var(--adl-teal-600);
|
|
177
|
+
--text-on-brand: var(--adl-neutral-0);
|
|
178
|
+
|
|
179
|
+
--border-subtle: var(--adl-neutral-200);
|
|
180
|
+
--border-default: var(--adl-neutral-300);
|
|
181
|
+
--border-strong: var(--adl-neutral-400);
|
|
182
|
+
--border-focus: var(--adl-teal-500);
|
|
183
|
+
|
|
184
|
+
--brand-primary: var(--adl-teal-500);
|
|
185
|
+
--brand-primary-hover: var(--adl-teal-600);
|
|
186
|
+
--brand-primary-active: var(--adl-teal-700);
|
|
187
|
+
--brand-primary-subtle: var(--adl-teal-50);
|
|
188
|
+
--brand-secondary: var(--adl-mint-400);
|
|
189
|
+
--brand-secondary-hover: var(--adl-mint-500);
|
|
190
|
+
--brand-accent: var(--adl-indigo-500);
|
|
191
|
+
--brand-accent-alt: var(--adl-violet-500);
|
|
192
|
+
|
|
193
|
+
--feedback-info: var(--adl-blue-500);
|
|
194
|
+
--feedback-info-subtle: var(--adl-blue-50);
|
|
195
|
+
--feedback-success: var(--adl-mint-600);
|
|
196
|
+
--feedback-success-subtle: var(--adl-mint-50);
|
|
197
|
+
--feedback-warning: var(--adl-amber-400);
|
|
198
|
+
--feedback-warning-subtle: var(--adl-amber-50);
|
|
199
|
+
--feedback-danger: var(--adl-red-500);
|
|
200
|
+
--feedback-danger-subtle: var(--adl-red-50);
|
|
201
|
+
|
|
202
|
+
/* Foreground for tinted-subtle surfaces (badges, alerts, pills).
|
|
203
|
+
Dark, saturated text that reads on the light *-subtle backgrounds.
|
|
204
|
+
Overridden in dark mode to light tints — see [data-theme="dark"]. */
|
|
205
|
+
--tint-brand-fg: var(--adl-teal-700);
|
|
206
|
+
--tint-info-fg: var(--adl-blue-700);
|
|
207
|
+
--tint-success-fg: var(--adl-mint-700);
|
|
208
|
+
--tint-warning-fg: var(--adl-amber-700);
|
|
209
|
+
--tint-danger-fg: var(--adl-red-700);
|
|
210
|
+
|
|
211
|
+
/* Data-viz categorical order */
|
|
212
|
+
--chart-1: var(--adl-teal-500);
|
|
213
|
+
--chart-2: var(--adl-indigo-500);
|
|
214
|
+
--chart-3: var(--adl-cyan-400);
|
|
215
|
+
--chart-4: var(--adl-violet-500);
|
|
216
|
+
--chart-5: var(--adl-blue-500);
|
|
217
|
+
--chart-6: var(--adl-mint-400);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* ── Semantic tokens — DARK ───────────────────────────────────
|
|
221
|
+
Apply data-theme="dark" on <html> or any subtree root. */
|
|
222
|
+
[data-theme="dark"] {
|
|
223
|
+
--bg-canvas: var(--adl-navy-950);
|
|
224
|
+
--bg-subtle: var(--adl-navy-900);
|
|
225
|
+
--bg-muted: var(--adl-navy-800);
|
|
226
|
+
--bg-inverse: var(--adl-neutral-50);
|
|
227
|
+
|
|
228
|
+
--surface-default: var(--adl-navy-900);
|
|
229
|
+
--surface-raised: var(--adl-navy-800);
|
|
230
|
+
--surface-sunken: var(--adl-navy-950);
|
|
231
|
+
|
|
232
|
+
--text-primary: var(--adl-neutral-50);
|
|
233
|
+
--text-secondary: var(--adl-blue-200);
|
|
234
|
+
--text-muted: var(--adl-navy-300);
|
|
235
|
+
--text-inverse: var(--adl-navy-900);
|
|
236
|
+
--text-link: var(--adl-blue-400);
|
|
237
|
+
--text-on-brand: var(--adl-navy-900);
|
|
238
|
+
|
|
239
|
+
--border-subtle: var(--adl-navy-800);
|
|
240
|
+
--border-default: var(--adl-navy-700);
|
|
241
|
+
--border-strong: var(--adl-navy-600);
|
|
242
|
+
--border-focus: var(--adl-mint-400);
|
|
243
|
+
|
|
244
|
+
--brand-primary: var(--adl-mint-400);
|
|
245
|
+
--brand-primary-hover: var(--adl-mint-300);
|
|
246
|
+
--brand-primary-active: var(--adl-mint-200);
|
|
247
|
+
--brand-primary-subtle: var(--adl-teal-900);
|
|
248
|
+
--brand-secondary: var(--adl-blue-500);
|
|
249
|
+
--brand-secondary-hover: var(--adl-blue-400);
|
|
250
|
+
--brand-accent: var(--adl-indigo-600);
|
|
251
|
+
--brand-accent-alt: var(--adl-cyan-400);
|
|
252
|
+
|
|
253
|
+
--feedback-info: var(--adl-blue-400);
|
|
254
|
+
--feedback-info-subtle: var(--adl-navy-800);
|
|
255
|
+
--feedback-success: var(--adl-mint-400);
|
|
256
|
+
--feedback-success-subtle: var(--adl-teal-900);
|
|
257
|
+
--feedback-warning: var(--adl-amber-300);
|
|
258
|
+
--feedback-warning-subtle: var(--adl-amber-700);
|
|
259
|
+
--feedback-danger: var(--adl-red-300);
|
|
260
|
+
--feedback-danger-subtle: var(--adl-red-900);
|
|
261
|
+
|
|
262
|
+
/* Tinted-surface text flips to light tints so it reads on the dark
|
|
263
|
+
*-subtle backgrounds (fixes warning text vanishing on amber). */
|
|
264
|
+
--tint-brand-fg: var(--adl-teal-200);
|
|
265
|
+
--tint-info-fg: var(--adl-blue-200);
|
|
266
|
+
--tint-success-fg: var(--adl-mint-200);
|
|
267
|
+
--tint-warning-fg: var(--adl-amber-200);
|
|
268
|
+
--tint-danger-fg: var(--adl-red-200);
|
|
269
|
+
|
|
270
|
+
--chart-1: var(--adl-cyan-400);
|
|
271
|
+
--chart-2: var(--adl-indigo-400);
|
|
272
|
+
--chart-3: var(--adl-mint-400);
|
|
273
|
+
--chart-4: var(--adl-violet-400);
|
|
274
|
+
--chart-5: var(--adl-blue-400);
|
|
275
|
+
--chart-6: var(--adl-teal-300);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* ==== tokens/typography.css ==== */
|
|
279
|
+
/* Amsterdam Data Labs — typography tokens. */
|
|
280
|
+
:root {
|
|
281
|
+
/* Families (Google Fonts substitutes — see fonts.css) */
|
|
282
|
+
--font-display: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
|
|
283
|
+
--font-body: "Manrope", "Segoe UI", system-ui, sans-serif;
|
|
284
|
+
--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
|
|
285
|
+
|
|
286
|
+
/* Size scale (rem; 16px base) */
|
|
287
|
+
--text-xs: 0.75rem; /* 12 — captions, table meta */
|
|
288
|
+
--text-sm: 0.875rem; /* 14 — UI default, labels */
|
|
289
|
+
--text-md: 1rem; /* 16 — body */
|
|
290
|
+
--text-lg: 1.125rem; /* 18 — lede */
|
|
291
|
+
--text-xl: 1.25rem; /* 20 — card titles */
|
|
292
|
+
--text-2xl: 1.5rem; /* 24 — section heads */
|
|
293
|
+
--text-3xl: 1.875rem; /* 30 — page titles */
|
|
294
|
+
--text-4xl: 2.375rem; /* 38 — hero sub */
|
|
295
|
+
--text-5xl: 3rem; /* 48 — hero */
|
|
296
|
+
--text-6xl: 3.75rem; /* 60 — display */
|
|
297
|
+
|
|
298
|
+
/* Weights */
|
|
299
|
+
--weight-regular: 400;
|
|
300
|
+
--weight-medium: 500;
|
|
301
|
+
--weight-semibold: 600;
|
|
302
|
+
--weight-bold: 700;
|
|
303
|
+
--weight-extrabold: 800; /* Manrope only — stat numerals */
|
|
304
|
+
|
|
305
|
+
/* Line heights */
|
|
306
|
+
--leading-tight: 1.1; /* display */
|
|
307
|
+
--leading-snug: 1.25; /* headings */
|
|
308
|
+
--leading-normal: 1.5; /* UI */
|
|
309
|
+
--leading-relaxed: 1.65; /* long-form body */
|
|
310
|
+
|
|
311
|
+
/* Tracking */
|
|
312
|
+
--tracking-tight: -0.02em; /* display ≥ 30px */
|
|
313
|
+
--tracking-normal: 0;
|
|
314
|
+
--tracking-wide: 0.08em; /* uppercase labels / eyebrows */
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* ==== tokens/spacing.css ==== */
|
|
318
|
+
/* Amsterdam Data Labs — spacing, breakpoints, z-index. 4px base grid. */
|
|
319
|
+
:root {
|
|
320
|
+
--space-0: 0;
|
|
321
|
+
--space-px: 1px;
|
|
322
|
+
--space-0-5: 2px;
|
|
323
|
+
--space-1: 4px;
|
|
324
|
+
--space-1-5: 6px;
|
|
325
|
+
--space-2: 8px;
|
|
326
|
+
--space-2-5: 10px;
|
|
327
|
+
--space-3: 12px;
|
|
328
|
+
--space-4: 16px;
|
|
329
|
+
--space-5: 20px;
|
|
330
|
+
--space-6: 24px;
|
|
331
|
+
--space-7: 28px;
|
|
332
|
+
--space-8: 32px;
|
|
333
|
+
--space-10: 40px;
|
|
334
|
+
--space-12: 48px;
|
|
335
|
+
--space-14: 56px;
|
|
336
|
+
--space-16: 64px;
|
|
337
|
+
--space-20: 80px;
|
|
338
|
+
--space-24: 96px;
|
|
339
|
+
--space-32: 128px;
|
|
340
|
+
--space-40: 160px;
|
|
341
|
+
--space-48: 192px;
|
|
342
|
+
|
|
343
|
+
/* Breakpoints (min-width, mobile-first) — for reference in JS/media queries:
|
|
344
|
+
sm 640 / md 768 / lg 1024 / xl 1280 / 2xl 1536 */
|
|
345
|
+
--breakpoint-sm: 640px;
|
|
346
|
+
--breakpoint-md: 768px;
|
|
347
|
+
--breakpoint-lg: 1024px;
|
|
348
|
+
--breakpoint-xl: 1280px;
|
|
349
|
+
--breakpoint-2xl: 1536px;
|
|
350
|
+
|
|
351
|
+
/* Content widths */
|
|
352
|
+
--container-max: 1200px;
|
|
353
|
+
--container-narrow: 720px;
|
|
354
|
+
|
|
355
|
+
/* Z-index layers */
|
|
356
|
+
--z-hide: -1; /* @kind other */
|
|
357
|
+
--z-base: 0; /* @kind other */
|
|
358
|
+
--z-raised: 10; /* @kind other */
|
|
359
|
+
--z-dropdown: 1000; /* @kind other */
|
|
360
|
+
--z-sticky: 1100; /* @kind other */
|
|
361
|
+
--z-banner: 1200; /* @kind other */
|
|
362
|
+
--z-overlay: 1300; /* @kind other */
|
|
363
|
+
--z-modal: 1400; /* @kind other */
|
|
364
|
+
--z-popover: 1500; /* @kind other */
|
|
365
|
+
--z-toast: 1600; /* @kind other */
|
|
366
|
+
--z-tooltip: 1700; /* @kind other */
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/* ==== tokens/effects.css ==== */
|
|
370
|
+
/* Amsterdam Data Labs — radii, shadows, motion. */
|
|
371
|
+
:root {
|
|
372
|
+
/* Corner radii — crisp, technical; generous only on pills/avatars */
|
|
373
|
+
--radius-xs: 4px; /* checkboxes, tags */
|
|
374
|
+
--radius-sm: 6px; /* inputs, buttons */
|
|
375
|
+
--radius-md: 10px; /* cards */
|
|
376
|
+
--radius-lg: 14px; /* modals, feature panels */
|
|
377
|
+
--radius-xl: 20px; /* hero media */
|
|
378
|
+
--radius-full: 999px; /* pills, avatars */
|
|
379
|
+
|
|
380
|
+
/* Shadows — cool navy-tinted, low spread. Elevation, not decoration. */
|
|
381
|
+
--shadow-xs: 0 1px 2px rgba(10, 40, 64, 0.06);
|
|
382
|
+
--shadow-sm:
|
|
383
|
+
0 1px 3px rgba(10, 40, 64, 0.08), 0 1px 2px rgba(10, 40, 64, 0.04);
|
|
384
|
+
--shadow-md:
|
|
385
|
+
0 4px 12px rgba(10, 40, 64, 0.1), 0 1px 3px rgba(10, 40, 64, 0.06);
|
|
386
|
+
--shadow-lg:
|
|
387
|
+
0 12px 32px rgba(10, 40, 64, 0.14), 0 2px 6px rgba(10, 40, 64, 0.06);
|
|
388
|
+
--shadow-focus: 0 0 0 3px
|
|
389
|
+
color-mix(in srgb, var(--border-focus) 30%, transparent);
|
|
390
|
+
|
|
391
|
+
/* Motion — quick, understated. No bounces. */
|
|
392
|
+
--ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* @kind other */
|
|
393
|
+
--ease-in-out: cubic-bezier(0.45, 0, 0.55, 1); /* @kind other */
|
|
394
|
+
--duration-fast: 120ms; /* @kind other */
|
|
395
|
+
--duration-base: 180ms; /* @kind other */
|
|
396
|
+
--duration-slow: 320ms; /* @kind other */
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/* ==== tokens/base.css ==== */
|
|
400
|
+
/* Amsterdam Data Labs — minimal base element styles. */
|
|
401
|
+
:root {
|
|
402
|
+
color-scheme: light;
|
|
403
|
+
}
|
|
404
|
+
[data-theme="dark"] {
|
|
405
|
+
color-scheme: dark;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
body {
|
|
409
|
+
margin: 0;
|
|
410
|
+
font-family: var(--font-body);
|
|
411
|
+
font-size: var(--text-md);
|
|
412
|
+
-webkit-font-smoothing: antialiased;
|
|
413
|
+
line-height: var(--leading-normal);
|
|
414
|
+
color: var(--text-primary);
|
|
415
|
+
background: var(--bg-canvas);
|
|
416
|
+
text-rendering: optimizeLegibility;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
h1,
|
|
420
|
+
h2,
|
|
421
|
+
h3,
|
|
422
|
+
h4 {
|
|
423
|
+
margin: 0;
|
|
424
|
+
font-family: var(--font-display);
|
|
425
|
+
font-weight: var(--weight-semibold);
|
|
426
|
+
line-height: var(--leading-snug);
|
|
427
|
+
color: var(--text-primary);
|
|
428
|
+
letter-spacing: var(--tracking-tight);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
code,
|
|
432
|
+
pre,
|
|
433
|
+
kbd {
|
|
434
|
+
font-family: var(--font-mono);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
a {
|
|
438
|
+
color: var(--text-link);
|
|
439
|
+
text-decoration: none;
|
|
440
|
+
}
|
|
441
|
+
a:hover {
|
|
442
|
+
text-decoration: underline;
|
|
443
|
+
text-underline-offset: 3px;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
::selection {
|
|
447
|
+
color: var(--adl-navy-900);
|
|
448
|
+
background: var(--adl-teal-100);
|
|
449
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@amsterdamdatalabs/enact-design-system",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Enact design system — authored React + CSS-Modules components and 3-tier design tokens. Single source of truth; no local CSS/Tailwind overrides.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"sideEffects": [
|
|
10
|
+
"*.css"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./tokens.css": "./dist/tokens.css",
|
|
21
|
+
"./styles.css": "./dist/design-system.css"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"dev": "vite",
|
|
25
|
+
"build": "vite build && tsc -p tsconfig.build.json && bun scripts/build-tokens.mjs",
|
|
26
|
+
"prepublishOnly": "bun run build",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"lint": "biome check src docs scripts",
|
|
29
|
+
"format": "biome format --write src docs scripts",
|
|
30
|
+
"fix": "biome check --write src docs scripts",
|
|
31
|
+
"check": "bun run typecheck && bun run lint && bun run test",
|
|
32
|
+
"test": "bun test",
|
|
33
|
+
"test:visual": "playwright test",
|
|
34
|
+
"test:visual:update": "playwright test --update-snapshots",
|
|
35
|
+
"docs": "vite --config docs/vite.config.ts"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"react": "^19.0.0",
|
|
39
|
+
"react-dom": "^19.0.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@biomejs/biome": "^2.5.0",
|
|
43
|
+
"@happy-dom/global-registrator": "^20.10.6",
|
|
44
|
+
"@playwright/test": "^1.61.0",
|
|
45
|
+
"@testing-library/dom": "^10.4.1",
|
|
46
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
47
|
+
"@testing-library/react": "^16.3.2",
|
|
48
|
+
"@types/bun": "^1.3.14",
|
|
49
|
+
"@types/node": "^22.10.0",
|
|
50
|
+
"@types/react": "^19.1.6",
|
|
51
|
+
"@types/react-dom": "^19.1.5",
|
|
52
|
+
"@vitejs/plugin-react": "^4.5.2",
|
|
53
|
+
"axe-core": "^4.12.1",
|
|
54
|
+
"happy-dom": "^20.10.6",
|
|
55
|
+
"react": "^19.1.0",
|
|
56
|
+
"react-dom": "^19.1.0",
|
|
57
|
+
"typescript": "^5.8.3",
|
|
58
|
+
"ultracite": "^7.8.3",
|
|
59
|
+
"vite": "^6.3.5"
|
|
60
|
+
}
|
|
61
|
+
}
|