7k-design-system 1.1.0 → 1.2.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/CHANGELOG.md +34 -0
- package/CONSUMER_GUIDE.md +109 -50
- package/DESIGN.md +631 -439
- package/README.md +76 -75
- package/SKILL.md +107 -78
- package/build/icons/icon-7kgroup-light.svg +10 -0
- package/build/icons/icon-7kgroup.svg +10 -0
- package/build/icons/icon-7kminato-light.svg +10 -0
- package/build/icons/icon-7kminato.svg +10 -0
- package/build/icons/icon-base.svg +10 -0
- package/build/icons/icon-inari-light.svg +10 -0
- package/build/icons/icon-inari.svg +10 -0
- package/dist/7k-design-system.css +1 -1
- package/dist/animations.css +1 -1
- package/dist/build/icons/icon-7kgroup-light.svg +10 -0
- package/dist/build/icons/icon-7kgroup.svg +10 -0
- package/dist/build/icons/icon-7kminato-light.svg +10 -0
- package/dist/build/icons/icon-7kminato.svg +10 -0
- package/dist/build/icons/icon-base.svg +10 -0
- package/dist/build/icons/icon-inari-light.svg +10 -0
- package/dist/build/icons/icon-inari.svg +10 -0
- package/dist/components.css +1 -1
- package/dist/mockServiceWorker.js +361 -0
- package/dist/projects.css +1 -0
- package/dist/react/components/Alert.d.ts +2 -0
- package/dist/react/components/Avatar.d.ts +2 -0
- package/dist/react/{react/components → components}/Badge.d.ts +0 -1
- package/dist/react/{react/components → components}/Button.d.ts +0 -1
- package/dist/react/components/Card.d.ts +4 -0
- package/dist/react/components/Checkbox.d.ts +2 -0
- package/dist/react/components/Drawer.d.ts +2 -0
- package/dist/react/components/Icon.d.ts +2 -0
- package/dist/react/{react/components → components}/Input.d.ts +0 -1
- package/dist/react/components/IsometricBackground.d.ts +2 -0
- package/dist/react/components/Listbox.d.ts +2 -0
- package/dist/react/components/Modal.d.ts +4 -0
- package/dist/react/components/Nav.d.ts +3 -0
- package/dist/react/components/Progress.d.ts +2 -0
- package/dist/react/components/ProjectIcon.d.ts +6 -0
- package/dist/react/components/Radio.d.ts +2 -0
- package/dist/react/components/Select.d.ts +3 -0
- package/dist/react/components/Skeleton.d.ts +2 -0
- package/dist/react/components/Spinner.d.ts +2 -0
- package/dist/react/components/Tabs.d.ts +8 -0
- package/dist/react/components/TextureOverlay.d.ts +2 -0
- package/dist/react/components/Toast.d.ts +2 -0
- package/dist/react/components/Toggle.d.ts +2 -0
- package/dist/react/components/Tooltip.d.ts +2 -0
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +32 -0
- package/dist/react/index.js +1188 -128
- package/dist/react/mockServiceWorker.js +361 -0
- package/dist/react/theme/ProjectProvider.d.ts +14 -0
- package/dist/react/{react/theme → theme}/ThemeContext.d.ts +0 -1
- package/dist/react/{react/theme → theme}/ThemeProvider.d.ts +0 -1
- package/dist/react/theme/projects.d.ts +4 -0
- package/dist/react/theme/useProject.d.ts +2 -0
- package/dist/react/{react/theme → theme}/useTheme.d.ts +0 -1
- package/dist/react/types.d.ts +160 -0
- package/dist/textures.css +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +49 -35
- package/dist/preview/brand-assets.html +0 -83
- package/dist/preview/colors-primary.html +0 -101
- package/dist/preview/components-buttons.html +0 -84
- package/dist/preview/spacing-tokens.html +0 -79
- package/dist/preview/textures-backgrounds.html +0 -102
- package/dist/preview/typography-specimens.html +0 -73
- package/dist/react/react/components/Badge.stories.d.ts +0 -12
- package/dist/react/react/components/Button.stories.d.ts +0 -16
- package/dist/react/react/components/Input.stories.d.ts +0 -11
- package/dist/react/react/components/ThemeToggle.stories.d.ts +0 -7
- package/dist/react/react/index.d.ts +0 -8
- package/dist/react/react/types.d.ts +0 -33
- package/dist/react/stories/Components.stories.d.ts +0 -10
- package/dist/react/stories/Textures.stories.d.ts +0 -11
- package/preview/brand-assets.html +0 -83
- package/preview/colors-primary.html +0 -101
- package/preview/components-buttons.html +0 -84
- package/preview/spacing-tokens.html +0 -79
- package/preview/textures-backgrounds.html +0 -102
- package/preview/typography-specimens.html +0 -73
- /package/build/{icon.svg → icons/icon.svg} +0 -0
- /package/build/{logo-7k-light.svg → logos/logo-7k-light.svg} +0 -0
- /package/build/{logo-7k.svg → logos/logo-7k.svg} +0 -0
- /package/dist/build/{icon.svg → icons/icon.svg} +0 -0
- /package/dist/build/{logo-7k-light.svg → logos/logo-7k-light.svg} +0 -0
- /package/dist/build/{logo-7k.svg → logos/logo-7k.svg} +0 -0
- /package/dist/react/{react/components → components}/ThemeToggle.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# [1.2.0](https://github.com/7K-Group/7k-design-system/compare/v1.1.1...v1.2.0) (2026-10-08)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* modernize design system — naming standardization, Inari project, accent-driven UI ([#65](https://github.com/7K-Group/7k-design-system/issues/65)) ([b160a60](https://github.com/7K-Group/7k-design-system/commit/b160a60b4373c6a8fb1d91446397f8cd6b84ef80))
|
|
7
|
+
|
|
8
|
+
## [1.1.1](https://github.com/7K-Group/7k-design-system/compare/v1.1.0...v1.1.1) (2026-08-13)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add missing perms ([b0e54a3](https://github.com/7K-Group/7k-design-system/commit/b0e54a3be2ff1248736e3c0de379c61a02af750d))
|
|
14
|
+
* do not run ci on main and cd ([f38dce0](https://github.com/7K-Group/7k-design-system/commit/f38dce02bcb8e938b916a59acfede57225e18905))
|
|
15
|
+
* release process failing ([ab488bc](https://github.com/7K-Group/7k-design-system/commit/ab488bc40537ed54dc04a606eef668da317a812b))
|
|
16
|
+
|
|
1
17
|
# [1.1.0](https://github.com/7K-Group/7k-design-system/compare/v1.0.0...v1.1.0) (2026-06-05)
|
|
2
18
|
|
|
3
19
|
|
|
@@ -22,6 +38,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
22
38
|
## [Unreleased]
|
|
23
39
|
|
|
24
40
|
### Added
|
|
41
|
+
- `.btn-modern-glow-secondary` variant (cyan/per-project outline + glow) — completes the `glow-secondary` Button variant that React and the consumer guide already referenced
|
|
42
|
+
- `.btn-modern:disabled` / `[aria-disabled='true']` styling (40% opacity, no pointer events, glow removed) for all button variants
|
|
43
|
+
- `.select-native:disabled`, `.checkbox`/`.radio`/`.toggle` disabled styling (`:has(input:disabled)`, 40% opacity)
|
|
44
|
+
- Visible keyboard focus rings for custom `Checkbox`, `Radio`, and `Toggle` controls (`:has(input:focus-visible)`)
|
|
45
|
+
- Missing status variant classes: `.toast-info`, `.alert-info`, `.alert-danger` (the React `Alert` `danger` variant emitted an unstyled class), `.alert-content`, `.alert-close`, `.toast-content`, plus focus-visible styles for dismiss buttons
|
|
46
|
+
- `.card-static:hover` reset so `Card hover={false}` actually disables the hover lift
|
|
47
|
+
- `.spinner-cyan` and `.icon-box-cyan` classes (previously documented but unimplemented)
|
|
48
|
+
- Modal: Escape key closes, Tab focus is trapped inside the dialog while open
|
|
49
|
+
- Drawer: Escape key closes, focus returns to the triggering element
|
|
50
|
+
- Tabs: ARIA APG keyboard support (Arrow/Home/End moves selection, roving tabindex), `TabPanel` is focusable
|
|
51
|
+
- `tests/States.test.tsx` covering the new interaction states
|
|
25
52
|
- Production-ready build pipeline with Vite, PostCSS, and autoprefixer
|
|
26
53
|
- TypeScript configuration and type definitions for React UI kit
|
|
27
54
|
- ESLint, Prettier, and Stylelint configurations for code quality
|
|
@@ -35,6 +62,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
35
62
|
- Self-hosted Geist font strategy with CDN fallback
|
|
36
63
|
|
|
37
64
|
### Changed
|
|
65
|
+
- **Contrast (WCAG AA, dark theme):** `--text-tertiary` now maps to `--neutral-400` (was `--neutral-500`, 3.5–3.7:1) and `--text-disabled` to `--neutral-600` (was `--neutral-700`, 1.75:1); `.badge-neutral` uses `--status-neutral`; primary/glow button `:active` text is now white (was magenta on muted fill, 3.0:1). Visual change is subtle but visible — captions and disabled elements read slightly brighter
|
|
66
|
+
- `Input` with an `error` now applies the `.error` class (danger border) in addition to `aria-invalid`
|
|
67
|
+
- Component CSS now consumes semantic tokens instead of raw ramps (`.input:focus` → `--border-focus`; badge/toast/alert status colors → `--status-*`; `.table td`/`.modal-body` → `--text-secondary`)
|
|
68
|
+
- Hard-coded z-index values replaced with `--z-*` tokens in `.tooltip-content`, `.combobox-menu`, and Modal/Drawer/Tooltip inline styles
|
|
69
|
+
- Shimmer animation now uses theme-aware `--texture-*` tokens (works in light theme)
|
|
70
|
+
- Light theme: `--shadow-inset` corrected to a black inner shadow; the `prefers-color-scheme: light` media block now yields to an explicit `data-theme` attribute
|
|
71
|
+
- DESIGN.md, SKILL.md, and CONSUMER_GUIDE.md synced with implemented class names, button variants, modifier names, and token values
|
|
38
72
|
- Converted React UI kit from plain JS to TypeScript with proper component patterns
|
|
39
73
|
- Refactored CSS to eliminate hard-coded colors in favor of design tokens
|
|
40
74
|
- Updated `package.json` with proper `exports`, `engines`, and `types` fields
|
package/CONSUMER_GUIDE.md
CHANGED
|
@@ -72,9 +72,9 @@ import '7k-design-system/css/animations';
|
|
|
72
72
|
|
|
73
73
|
```html
|
|
74
74
|
<!-- Buttons -->
|
|
75
|
-
<button class="btn
|
|
76
|
-
<button class="btn
|
|
77
|
-
<button class="btn
|
|
75
|
+
<button class="btn btn-primary">Primary</button>
|
|
76
|
+
<button class="btn btn-secondary">Secondary</button>
|
|
77
|
+
<button class="btn btn-ghost">Ghost</button>
|
|
78
78
|
|
|
79
79
|
<!-- Forms -->
|
|
80
80
|
<input class="input" placeholder="Enter text" />
|
|
@@ -116,16 +116,16 @@ All CSS custom properties are available globally:
|
|
|
116
116
|
background: var(--bg-elevated);
|
|
117
117
|
color: var(--text-primary);
|
|
118
118
|
border: 2px solid var(--border-default);
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
/* Typography */
|
|
121
121
|
font-family: var(--font-sans);
|
|
122
122
|
font-size: var(--text-body);
|
|
123
123
|
line-height: var(--leading-normal);
|
|
124
|
-
|
|
124
|
+
|
|
125
125
|
/* Spacing */
|
|
126
126
|
padding: var(--space-4);
|
|
127
127
|
gap: var(--space-2);
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
/* Brand accent */
|
|
130
130
|
border-color: var(--brand-primary);
|
|
131
131
|
}
|
|
@@ -194,7 +194,7 @@ import { useTheme } from '7k-design-system/react';
|
|
|
194
194
|
|
|
195
195
|
function ThemeAwareComponent() {
|
|
196
196
|
const { theme, toggleTheme, setTheme } = useTheme();
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
return (
|
|
199
199
|
<div>
|
|
200
200
|
<p>Current theme: {theme}</p>
|
|
@@ -212,11 +212,12 @@ function ThemeAwareComponent() {
|
|
|
212
212
|
|
|
213
213
|
```tsx
|
|
214
214
|
<Button
|
|
215
|
-
variant="primary"
|
|
216
|
-
size="md"
|
|
215
|
+
variant="primary" // 'primary' | 'secondary' | 'ghost' | 'glow' | 'accent' | 'glow-accent' | 'glow-secondary' | 'danger'
|
|
216
|
+
size="md" // 'sm' | 'md' | 'lg'
|
|
217
217
|
disabled={false}
|
|
218
|
+
loading={false}
|
|
218
219
|
onClick={() => {}}
|
|
219
|
-
type="button"
|
|
220
|
+
type="button" // 'button' | 'submit' | 'reset'
|
|
220
221
|
>
|
|
221
222
|
Click me
|
|
222
223
|
</Button>
|
|
@@ -226,11 +227,13 @@ function ThemeAwareComponent() {
|
|
|
226
227
|
|
|
227
228
|
```tsx
|
|
228
229
|
<Input
|
|
229
|
-
type="text"
|
|
230
|
+
type="text" // any HTML input type
|
|
230
231
|
placeholder="Hint"
|
|
231
232
|
disabled={false}
|
|
232
233
|
value={value}
|
|
233
234
|
onChange={(value) => setValue(value)}
|
|
235
|
+
label="Email"
|
|
236
|
+
error="Required"
|
|
234
237
|
/>
|
|
235
238
|
```
|
|
236
239
|
|
|
@@ -238,37 +241,96 @@ function ThemeAwareComponent() {
|
|
|
238
241
|
|
|
239
242
|
```tsx
|
|
240
243
|
<Badge
|
|
241
|
-
variant="default"
|
|
244
|
+
variant="default" // 'default' | 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral'
|
|
245
|
+
role="status"
|
|
242
246
|
>
|
|
243
247
|
Status
|
|
244
248
|
</Badge>
|
|
245
249
|
```
|
|
246
250
|
|
|
251
|
+
#### Card
|
|
252
|
+
|
|
253
|
+
```tsx
|
|
254
|
+
<Card texture="halftone" hover={true}>
|
|
255
|
+
<CardHeader>Title</CardHeader>
|
|
256
|
+
<CardBody>Content</CardBody>
|
|
257
|
+
</Card>
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### Modal
|
|
261
|
+
|
|
262
|
+
```tsx
|
|
263
|
+
<Modal open={isOpen} onClose={close} texture="noise" aria-labelledby="modal-title">
|
|
264
|
+
<ModalHeader>
|
|
265
|
+
<h2 id="modal-title">Title</h2>
|
|
266
|
+
</ModalHeader>
|
|
267
|
+
<p>Content</p>
|
|
268
|
+
<ModalFooter>
|
|
269
|
+
<Button onClick={close}>Close</Button>
|
|
270
|
+
</ModalFooter>
|
|
271
|
+
</Modal>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Accessibility notes: `Modal` closes on **Escape**, traps **Tab** focus inside the dialog while open, and restores focus to the triggering element on close. Always pass `aria-labelledby` (or `aria-label`). `Drawer` supports Escape and focus restoration as well.
|
|
275
|
+
|
|
276
|
+
#### Toast
|
|
277
|
+
|
|
278
|
+
```tsx
|
|
279
|
+
<Toast
|
|
280
|
+
variant="success" // 'default' | 'success' | 'error' | 'warning' | 'info'
|
|
281
|
+
onDismiss={() => setShow(false)}
|
|
282
|
+
>
|
|
283
|
+
Deployed
|
|
284
|
+
</Toast>
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Mount toasts in a fixed container at the top of your app (they use `role="status"`/`role="alert"` and the `slide-up-reveal` animation). Example container:
|
|
288
|
+
|
|
289
|
+
```tsx
|
|
290
|
+
<div style={{ position: 'fixed', bottom: 24, right: 24, zIndex: 'var(--z-toast)', display: 'grid', gap: 8 }}>
|
|
291
|
+
{toasts.map((t) => <Toast key={t.id} {...t} />)}
|
|
292
|
+
</div>
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
#### Layout helpers
|
|
296
|
+
|
|
297
|
+
```tsx
|
|
298
|
+
<TextureOverlay texture="halftone" animate>...</TextureOverlay>
|
|
299
|
+
<IsometricBackground pattern="grid" animated>...</IsometricBackground>
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
#### Forms
|
|
303
|
+
|
|
304
|
+
```tsx
|
|
305
|
+
<Checkbox label="Accept" />
|
|
306
|
+
<Radio label="Option" name="group" />
|
|
307
|
+
<Toggle label="Enable" checked={on} onChange={setOn} />
|
|
308
|
+
<Select><option>A</option></Select>
|
|
309
|
+
<Listbox options={[{ value: 'a', label: 'A' }]} value={v} onChange={setV} />
|
|
310
|
+
<Textarea rows={4} />
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Form notes: passing `error` to `Input` adds the `.error` class (danger border) and wires `aria-invalid` + an alert-role message automatically (for `Textarea`/`Select`, add the `error` class and `aria-invalid` manually). Custom `Checkbox`/`Radio`/`Toggle` render a visually-hidden native input — keyboard focus shows a magenta focus ring on the custom control via `:focus-visible`. `Tabs` supports full arrow-key / Home / End navigation with roving tabindex per the ARIA tabs pattern.
|
|
314
|
+
|
|
247
315
|
---
|
|
248
316
|
|
|
249
317
|
## Project Customization
|
|
250
318
|
|
|
251
|
-
|
|
319
|
+
The parent 7K brand uses magenta primary + cyan secondary. Each sub-project can theme the secondary accent while keeping the same base design.
|
|
252
320
|
|
|
253
321
|
### Override Accent Colors
|
|
254
322
|
|
|
255
323
|
```css
|
|
256
324
|
/* project-neon.css */
|
|
257
325
|
.project-neon {
|
|
258
|
-
/*
|
|
259
|
-
--
|
|
326
|
+
/* 7KMinato — cyan takes over the full brand chain */
|
|
327
|
+
--brand-secondary: var(--cyan-500);
|
|
260
328
|
}
|
|
261
329
|
|
|
262
|
-
/* project-
|
|
263
|
-
.project-
|
|
264
|
-
/*
|
|
265
|
-
--
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/* project-ember.css */
|
|
269
|
-
.project-ember {
|
|
270
|
-
/* Line project — orange accent */
|
|
271
|
-
--accent-line: var(--ember-500);
|
|
330
|
+
/* project-inari.css */
|
|
331
|
+
.project-inari {
|
|
332
|
+
/* Inari — burnt orange takes over the full brand chain */
|
|
333
|
+
--brand-secondary: var(--inari-500);
|
|
272
334
|
}
|
|
273
335
|
```
|
|
274
336
|
|
|
@@ -279,9 +341,9 @@ Each 7K sub-project can override the accent color while keeping the same base de
|
|
|
279
341
|
function App() {
|
|
280
342
|
return (
|
|
281
343
|
<ThemeProvider>
|
|
282
|
-
<
|
|
344
|
+
<ProjectProvider defaultProject="circle">
|
|
283
345
|
<YourApp />
|
|
284
|
-
</
|
|
346
|
+
</ProjectProvider>
|
|
285
347
|
</ThemeProvider>
|
|
286
348
|
);
|
|
287
349
|
}
|
|
@@ -363,29 +425,31 @@ import { Button, ThemeToggle } from '7k-design-system/react';
|
|
|
363
425
|
export function Home() {
|
|
364
426
|
return (
|
|
365
427
|
<div className="project-neon">
|
|
366
|
-
<nav
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
428
|
+
<nav
|
|
429
|
+
style={{
|
|
430
|
+
position: 'sticky',
|
|
431
|
+
top: 0,
|
|
432
|
+
display: 'flex',
|
|
433
|
+
justifyContent: 'space-between',
|
|
434
|
+
padding: '12px 24px',
|
|
435
|
+
background: 'var(--bg-base)',
|
|
436
|
+
borderBottom: '2px solid var(--border-default)',
|
|
437
|
+
}}
|
|
438
|
+
>
|
|
375
439
|
<span className="mono-label">7K GROUP</span>
|
|
376
440
|
<ThemeToggle />
|
|
377
441
|
</nav>
|
|
378
442
|
|
|
379
|
-
<section
|
|
380
|
-
className="scanline"
|
|
381
|
-
style={{
|
|
443
|
+
<section
|
|
444
|
+
className="scanline"
|
|
445
|
+
style={{
|
|
382
446
|
minHeight: '80vh',
|
|
383
447
|
display: 'flex',
|
|
384
448
|
flexDirection: 'column',
|
|
385
449
|
alignItems: 'center',
|
|
386
450
|
justifyContent: 'center',
|
|
387
451
|
textAlign: 'center',
|
|
388
|
-
padding: 'var(--space-8)'
|
|
452
|
+
padding: 'var(--space-8)',
|
|
389
453
|
}}
|
|
390
454
|
>
|
|
391
455
|
<span className="mono-label" style={{ color: 'var(--brand-primary)' }}>
|
|
@@ -395,8 +459,8 @@ export function Home() {
|
|
|
395
459
|
Built for Midnight
|
|
396
460
|
</h1>
|
|
397
461
|
<p className="body-lg" style={{ maxWidth: '600px', marginTop: 'var(--space-4)' }}>
|
|
398
|
-
A multi-project technology company crafting infrastructure,
|
|
399
|
-
|
|
462
|
+
A multi-project technology company crafting infrastructure, AI pipelines, and digital
|
|
463
|
+
products.
|
|
400
464
|
</p>
|
|
401
465
|
<div style={{ display: 'flex', gap: 'var(--space-3)', marginTop: 'var(--space-6)' }}>
|
|
402
466
|
<Button variant="glow">Explore Projects</Button>
|
|
@@ -404,15 +468,10 @@ export function Home() {
|
|
|
404
468
|
</div>
|
|
405
469
|
</section>
|
|
406
470
|
|
|
407
|
-
<section
|
|
408
|
-
className="halftone-md"
|
|
409
|
-
style={{ padding: 'var(--space-8)' }}
|
|
410
|
-
>
|
|
471
|
+
<section className="halftone-md" style={{ padding: 'var(--space-8)' }}>
|
|
411
472
|
<span className="mono-label">PHILOSOPHY</span>
|
|
412
473
|
<h2 className="h2">Dark First</h2>
|
|
413
|
-
<p className="body">
|
|
414
|
-
We design for the dark. Light mode is opt-in, not default.
|
|
415
|
-
</p>
|
|
474
|
+
<p className="body">We design for the dark. Light mode is opt-in, not default.</p>
|
|
416
475
|
</section>
|
|
417
476
|
</div>
|
|
418
477
|
);
|
|
@@ -466,6 +525,6 @@ Make sure your `tsconfig.json` includes:
|
|
|
466
525
|
## Next Steps
|
|
467
526
|
|
|
468
527
|
1. Run `npm run storybook` in the design system repo to explore all components
|
|
469
|
-
2.
|
|
528
|
+
2. Browse the Tokens, Textures, and Components stories to see token values rendered
|
|
470
529
|
3. Read `DESIGN.md` for detailed design principles and constraints
|
|
471
530
|
4. Check `CONTRIBUTING.md` if you want to contribute back
|