7k-design-system 1.1.1 → 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 +25 -0
- package/CONSUMER_GUIDE.md +32 -15
- package/DESIGN.md +79 -100
- package/README.md +17 -17
- package/SKILL.md +23 -25
- 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/projects.css +1 -1
- package/dist/react/components/Alert.d.ts +0 -1
- package/dist/react/components/Avatar.d.ts +2 -0
- package/dist/react/components/Badge.d.ts +0 -1
- package/dist/react/components/Button.d.ts +0 -1
- package/dist/react/components/Card.d.ts +0 -1
- package/dist/react/components/Checkbox.d.ts +0 -1
- package/dist/react/components/Drawer.d.ts +0 -1
- package/dist/react/components/Icon.d.ts +0 -1
- package/dist/react/components/Input.d.ts +0 -1
- package/dist/react/components/IsometricBackground.d.ts +0 -1
- package/dist/react/components/Listbox.d.ts +2 -0
- package/dist/react/components/Modal.d.ts +0 -1
- package/dist/react/components/Nav.d.ts +0 -1
- 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 +0 -1
- package/dist/react/components/Select.d.ts +0 -1
- 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 +0 -1
- package/dist/react/components/TextureOverlay.d.ts +0 -1
- package/dist/react/components/Toast.d.ts +0 -1
- package/dist/react/components/Toggle.d.ts +0 -1
- package/dist/react/components/Tooltip.d.ts +0 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +6 -1
- package/dist/react/index.js +1168 -876
- package/dist/react/theme/ProjectProvider.d.ts +0 -1
- package/dist/react/theme/ThemeContext.d.ts +0 -1
- package/dist/react/theme/ThemeProvider.d.ts +0 -1
- package/dist/react/theme/projects.d.ts +1 -1
- package/dist/react/theme/useProject.d.ts +0 -1
- package/dist/react/theme/useTheme.d.ts +0 -1
- package/dist/react/types.d.ts +31 -7
- package/dist/textures.css +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +18 -20
- package/dist/react/components/MangaPanel.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
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
|
+
|
|
1
8
|
## [1.1.1](https://github.com/7K-Group/7k-design-system/compare/v1.1.0...v1.1.1) (2026-08-13)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -31,6 +38,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
31
38
|
## [Unreleased]
|
|
32
39
|
|
|
33
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
|
|
34
52
|
- Production-ready build pipeline with Vite, PostCSS, and autoprefixer
|
|
35
53
|
- TypeScript configuration and type definitions for React UI kit
|
|
36
54
|
- ESLint, Prettier, and Stylelint configurations for code quality
|
|
@@ -44,6 +62,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
44
62
|
- Self-hosted Geist font strategy with CDN fallback
|
|
45
63
|
|
|
46
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
|
|
47
72
|
- Converted React UI kit from plain JS to TypeScript with proper component patterns
|
|
48
73
|
- Refactored CSS to eliminate hard-coded colors in favor of design tokens
|
|
49
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" />
|
|
@@ -271,12 +271,32 @@ function ThemeAwareComponent() {
|
|
|
271
271
|
</Modal>
|
|
272
272
|
```
|
|
273
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
|
+
|
|
274
295
|
#### Layout helpers
|
|
275
296
|
|
|
276
297
|
```tsx
|
|
277
298
|
<TextureOverlay texture="halftone" animate>...</TextureOverlay>
|
|
278
299
|
<IsometricBackground pattern="grid" animated>...</IsometricBackground>
|
|
279
|
-
<MangaPanel frame texture="halftone" speedLine="horizontal">...</MangaPanel>
|
|
280
300
|
```
|
|
281
301
|
|
|
282
302
|
#### Forms
|
|
@@ -286,9 +306,12 @@ function ThemeAwareComponent() {
|
|
|
286
306
|
<Radio label="Option" name="group" />
|
|
287
307
|
<Toggle label="Enable" checked={on} onChange={setOn} />
|
|
288
308
|
<Select><option>A</option></Select>
|
|
309
|
+
<Listbox options={[{ value: 'a', label: 'A' }]} value={v} onChange={setV} />
|
|
289
310
|
<Textarea rows={4} />
|
|
290
311
|
```
|
|
291
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
|
+
|
|
292
315
|
---
|
|
293
316
|
|
|
294
317
|
## Project Customization
|
|
@@ -300,20 +323,14 @@ The parent 7K brand uses magenta primary + cyan secondary. Each sub-project can
|
|
|
300
323
|
```css
|
|
301
324
|
/* project-neon.css */
|
|
302
325
|
.project-neon {
|
|
303
|
-
/*
|
|
326
|
+
/* 7KMinato — cyan takes over the full brand chain */
|
|
304
327
|
--brand-secondary: var(--cyan-500);
|
|
305
328
|
}
|
|
306
329
|
|
|
307
|
-
/* project-
|
|
308
|
-
.project-
|
|
309
|
-
/*
|
|
310
|
-
--brand-secondary: var(--
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/* project-ember.css */
|
|
314
|
-
.project-ember {
|
|
315
|
-
/* Line project — orange secondary accent */
|
|
316
|
-
--brand-secondary: 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);
|
|
317
334
|
}
|
|
318
335
|
```
|
|
319
336
|
|
package/DESIGN.md
CHANGED
|
@@ -20,7 +20,7 @@ Key constraints derived from the source:
|
|
|
20
20
|
- **Secondary neon accent** → Cyan by default (`--brand-secondary`), dynamically themable per project via `data-project` or `ProjectProvider`.
|
|
21
21
|
- **Logo** → Star-burst pattern logo in `build/logos/logo-7k.svg`: a geometric radial pattern with #FF0FF brand accent tones. Light variant at `build/logos/logo-7k-light.svg` (black polygons for light backgrounds). App icon at `build/icons/icon.svg`.
|
|
22
22
|
- **Dark theme** → All surfaces start from near-black. Light theme is opt-in only.
|
|
23
|
-
- **Project differentiation** →
|
|
23
|
+
- **Project differentiation** → Each project gets its own secondary accent on the same dark base: **magenta = 7KGroup** (parent, also `--brand-primary`), **cyan = 7KMinato**, **inari (burnt orange) = Inari**. Projects theme `--brand-secondary` to their hue via `data-project` or `ProjectProvider`.
|
|
24
24
|
- **Tokyo neon** → High contrast, nocturnal canvas, electric accents, no warm/beige tones.
|
|
25
25
|
- **1-bit manga influence** → 10-texture background pattern library (scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette). All textures are CSS gradients — no images, no SVG humans.
|
|
26
26
|
- **Abstract 1-bit animations** → 20+ animation keyframes organized as ambient (continuous) and trigger (burst) categories. Step timing for retro feel, reduced-motion collapse.
|
|
@@ -150,7 +150,7 @@ import '7k-design-system/css';
|
|
|
150
150
|
|
|
151
151
|
Tokyo neon meets manga-influenced 1-bit. The canvas is deep near-black, with sharp white text, electric magenta (`#FF0FF`) as the primary brand accent, and cyan as a secondary project accent. Black-and-white 1-bit textures — scanline overlays, halftone dot noise, glitch keyframes — provide rhythm and atmosphere. The mood is nocturnal, high-contrast, and unapologetically digital.
|
|
152
152
|
|
|
153
|
-
Company/project differentiation:
|
|
153
|
+
Company/project differentiation: 7KGroup (parent) uses vivid magenta (`--brand-primary` baseline). Inside a project scope the project accent becomes dominant, overriding the full `--brand-primary` chain: 7KMinato runs cyan, Inari runs burnt orange (Fushimi Inari palette). Same system, distinct at a glance.
|
|
154
154
|
|
|
155
155
|
**Logo:** Star-burst pattern logo in `build/logos/logo-7k.svg` — a geometric radial pattern with #FF0FF brand accent tones. Light variant at `build/logos/logo-7k-light.svg` (light backgrounds). App icon at `build/icons/icon.svg`.
|
|
156
156
|
|
|
@@ -187,16 +187,16 @@ Company/project differentiation: the parent 7K brand uses vivid magenta (`--bran
|
|
|
187
187
|
| Horizontal stripes | `.stripes-h`, `.stripes-h-dense` | 9px/5px pitch | Section rhythm, horizontal dividers |
|
|
188
188
|
| Vertical stripes | `.stripes-v`, `.stripes-v-dense` | 9px/5px pitch | Sidebar textures, column dividers |
|
|
189
189
|
| Crosshatch | `.crosshatch`, `.crosshatch-dense` | 7px/4px dual-angle | Dense manga shading, error states |
|
|
190
|
-
| Checkerboard | `.checkerboard`, `.checkerboard-
|
|
190
|
+
| Checkerboard | `.checkerboard`, `.checkerboard-contrast` | 12px/16px grid, pure B/W | Retro sections, QR motifs |
|
|
191
191
|
| Noise | `.noise`, `.noise-heavy`, `.noise-animated` | 4%/12% opacity, SVG fractal | CRT grain, analog texture |
|
|
192
|
-
| Vignette | `.vignette-
|
|
192
|
+
| Vignette | `.vignette-ink`, `.vignette-ink-sharp` | Soft/sharp radial fade | Panel corner fade, hero-edge vignette |
|
|
193
193
|
|
|
194
194
|
### Texture composition rules
|
|
195
195
|
|
|
196
196
|
1. **One texture per section layer.** Apply at most one texture on the background layer and one on the overlay layer (`::after`). Scanline + halftone is the default pair for hero sections.
|
|
197
197
|
2. **Opacity scales with section density.** Hero/landing sections use lighter textures (5–10% opacity). Data-dense utility sections use stronger textures (10–15% opacity) or none.
|
|
198
|
-
3. **Texture on components is allowed with restraint.** Cards, panels, modals, drawers, and buttons can carry low-opacity texture overlays (`::before`, `pointer-events: none`) as long as the texture sits behind content and does not reduce contrast. Inputs and form controls should remain solid to preserve legibility. Use `.card-halftone`, `.
|
|
199
|
-
4. **Texture as section separator.** When transitioning between full-bleed sections, add a `.separator-
|
|
198
|
+
3. **Texture on components is allowed with restraint.** Cards, panels, modals, drawers, and buttons can carry low-opacity texture overlays (`::before`, `pointer-events: none`) as long as the texture sits behind content and does not reduce contrast. Inputs and form controls should remain solid to preserve legibility. Use `.card-halftone`, `.surface-scanline`, `.btn-halftone`, `.modal-noise`, etc.
|
|
199
|
+
4. **Texture as section separator.** When transitioning between full-bleed sections, add a `.separator-solid` or `.stripes-h` band (40–80px tall) as a visual break — never use shadow or blur transitions.
|
|
200
200
|
5. **Layering order:** Base color → texture background → content container → optional scanline overlay. The overlay must have `pointer-events: none` and `z-index: 1` so it does not block interaction.
|
|
201
201
|
6. **Full-bleed hero walls** use scanline + vignette simultaneously: scanline on `::after` for the line pattern, vignette on `::before` for the edge fade. Both get `pointer-events: none`.
|
|
202
202
|
|
|
@@ -204,21 +204,21 @@ Company/project differentiation: the parent 7K brand uses vivid magenta (`--bran
|
|
|
204
204
|
|
|
205
205
|
```
|
|
206
206
|
Section 1 (hero) — Scanline overlay + noise grain, full-bleed
|
|
207
|
-
↓ separator-
|
|
207
|
+
↓ separator-solid
|
|
208
208
|
Section 2 (content) — Solid surface, no texture (reading zone)
|
|
209
|
-
↓ separator-
|
|
209
|
+
↓ separator-solid
|
|
210
210
|
Section 3 (stats) — Halftone-md background with accent tint
|
|
211
|
-
↓ separator-
|
|
211
|
+
↓ separator-solid
|
|
212
212
|
Section 4 (cta) — Scanline-fast overlay, invert section if 1-bit
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
### 1-bit section variants
|
|
216
216
|
|
|
217
|
-
- **Full invert section**: swap `--bg-base` with `--
|
|
217
|
+
- **Full invert section**: swap `--bg-base` with `--color-paper`, `--text-primary` with `--color-ink`. Used for CTAs, callout panels, or manga-style splash panels. Add `.diagonal-stripes-negative` for max contrast.
|
|
218
218
|
- **Scanline hero**: dark canvas, scanline overlay, accent headline with glow. The scanline `::after` sits above the background but below all content (`z-index: 1`). Content gets `position: relative; z-index: 2`.
|
|
219
219
|
- **Halftone card wall**: grid of cards with `.halftone-sm` or `.halftone-md` on the section container. Each card has solid `.card` background that breaks the texture — texture only lives between cards.
|
|
220
220
|
- **Noise backdrop**: `.noise` on full-page backgrounds for analog feel. Use `.noise-heavy` only on splash/loading screens where content density is low.
|
|
221
|
-
- **Vignette frame**: `.vignette-
|
|
221
|
+
- **Vignette frame**: `.vignette-ink` on slide/scene containers to draw the eye center. Used in intro animations and splash panels.
|
|
222
222
|
|
|
223
223
|
## 1c. Isometric Backgrounds — CSS-only 3D Perspective Patterns
|
|
224
224
|
|
|
@@ -253,7 +253,7 @@ Section 4 (cta) — Scanline-fast overlay, invert section if 1-bit
|
|
|
253
253
|
|
|
254
254
|
The color system has three strict layers:
|
|
255
255
|
|
|
256
|
-
1. **Raw ramps** — 11-step scales (50–950) for Neutral, Magenta
|
|
256
|
+
1. **Raw ramps** — 11-step scales (50–950) for Neutral, Magenta (7KGroup), Cyan (7KMinato), Inari (Inari), plus extended below-ramp values (1000, void) and 4 semantic ramps (Success, Warning, Danger, Info). Never reference these directly in components.
|
|
257
257
|
2. **Theme role mapping** — `--bg-*`, `--text-*`, `--border-*`, `--brand-*`, `--status-*`, `--accent-*` tokens that map ramp values to functional roles. Remap per dark/light theme. This is the only layer components touch.
|
|
258
258
|
3. **Semantic colors** — `--status-success/warning/danger/info` tokens bound by **meaning, not decoration**. Use only for actual machine-state indication (badges, toasts, validation). Never use for decorative borders, accent accents, or non-status backgrounds.
|
|
259
259
|
|
|
@@ -273,8 +273,8 @@ All ramps follow the same 11-step pattern (50 = lightest, 950 = darkest). Two ex
|
|
|
273
273
|
| `--neutral-100` | `#EEEEF1` | — | `--bg-elevated` |
|
|
274
274
|
| `--neutral-200` | `#D7D7DC` | — | `--bg-raised`, `--status-neutral-bg` |
|
|
275
275
|
| `--neutral-300` | `#B0B0B8` | `--text-secondary` | `--bg-overlay`, `--text-disabled`, `--status-neutral-fg` |
|
|
276
|
-
| `--neutral-400` | `#82828A` | `--status-neutral`
|
|
277
|
-
| `--neutral-500` | `#6B6B72` | `--text-
|
|
276
|
+
| `--neutral-400` | `#82828A` | `--text-tertiary`, `--status-neutral` | `--bg-pressed`, `--text-placeholder` |
|
|
277
|
+
| `--neutral-500` | `#6B6B72` | `--text-placeholder` | `--text-secondary` |
|
|
278
278
|
| `--neutral-600` | `#50505A` | `--text-disabled` | — |
|
|
279
279
|
| `--neutral-700` | `#3A3A42` | `--bg-pressed` | — |
|
|
280
280
|
| `--neutral-800` | `#26262B` | `--bg-overlay`, `--status-neutral-bg` | — |
|
|
@@ -301,29 +301,20 @@ All ramps follow the same 11-step pattern (50 = lightest, 950 = darkest). Two ex
|
|
|
301
301
|
| `--magenta-900` | `#570057` | — | — |
|
|
302
302
|
| `--magenta-950` | `#330033` | `--brand-primary-subtle` (dark) | — |
|
|
303
303
|
|
|
304
|
-
#### Project accent ramps —
|
|
304
|
+
#### Project accent ramps — 7KMinato (Cyan) / Inari
|
|
305
305
|
|
|
306
|
-
Each
|
|
306
|
+
Each project gets a single accent hue. Same 11-step structure; only the base (--500) and the theme-mapped hover (--600 in light) differ. (7KGroup's accent is the magenta primary ramp above.)
|
|
307
307
|
|
|
308
|
-
**
|
|
309
|
-
|
|
310
|
-
`--solar-50: #FFFCE5` → `--solar-500: #FFD60A` → `--solar-950: #332B02`.
|
|
311
|
-
Accent token: `--accent-triangle`. Dark: `var(--solar-500)`, Light: `var(--solar-600)`.
|
|
312
|
-
|
|
313
|
-
**Cyan — Circle (hue ~190)**
|
|
308
|
+
**Cyan — 7KMinato (hue ~190)**
|
|
314
309
|
|
|
315
310
|
`--cyan-50: #E5FBFF` → `--cyan-500: #00E5FF` → `--cyan-950: #002A2E`.
|
|
316
|
-
Accent token: `--accent-
|
|
317
|
-
|
|
318
|
-
**Acid — Grid (hue ~105)**
|
|
311
|
+
Accent token: `--accent-7kminato`. Dark: `var(--cyan-500)`, Light: `var(--cyan-600)`.
|
|
319
312
|
|
|
320
|
-
|
|
321
|
-
Accent token: `--accent-grid`. Dark: `var(--acid-500)`, Light: `var(--acid-600)`.
|
|
313
|
+
**Inari — Inari project (hue ~18, Fushimi Inari palette)**
|
|
322
314
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
`--
|
|
326
|
-
Accent token: `--accent-line`. Dark: `var(--ember-500)`, Light: `var(--ember-600)`.
|
|
315
|
+
`--inari-50: #FDEEE7` → `--inari-500: #EE560D` (Orangealicious) → `--inari-950: #2B1C17` (Tetsu-Guro Black).
|
|
316
|
+
Named stops: `--inari-400` Knockout Orange `#E56F3F`, `--inari-600` Red Panda `#C44813`, `--inari-800` Rogan Josh `#8B310D`.
|
|
317
|
+
Accent token: `--accent-inari`. Dark: `var(--inari-500)`, Light: `var(--inari-600)`.
|
|
327
318
|
|
|
328
319
|
#### Semantic ramps (raw)
|
|
329
320
|
|
|
@@ -338,8 +329,8 @@ Each has a full 11-step scale (50–950). Never use directly — always go throu
|
|
|
338
329
|
|
|
339
330
|
#### 1-bit primitives
|
|
340
331
|
|
|
341
|
-
- `--
|
|
342
|
-
- `--
|
|
332
|
+
- `--color-ink: #000000` (`oklch(0% 0 0)`)
|
|
333
|
+
- `--color-paper: #FFFFFF` (`oklch(100% 0 0)`)
|
|
343
334
|
|
|
344
335
|
---
|
|
345
336
|
|
|
@@ -423,15 +414,13 @@ Each has a full 11-step scale (50–950). Never use directly — always go throu
|
|
|
423
414
|
|
|
424
415
|
#### Project accent tokens
|
|
425
416
|
|
|
426
|
-
| Token
|
|
427
|
-
|
|
|
428
|
-
| `--accent-
|
|
429
|
-
| `--accent-
|
|
430
|
-
| `--accent-
|
|
431
|
-
| `--accent-grid` | `--acid-500` | `--acid-600` | Grid | Grid |
|
|
432
|
-
| `--accent-line` | `--ember-500` | `--ember-600` | Line | Line |
|
|
417
|
+
| Token | Dark base | Light base | Project |
|
|
418
|
+
| ------------------ | --------------- | --------------- | ---------------- |
|
|
419
|
+
| `--accent-7kgroup` | `--magenta-500` | `--magenta-500` | 7KGroup (parent) |
|
|
420
|
+
| `--accent-7kminato` | `--cyan-500` | `--cyan-600` | 7KMinato |
|
|
421
|
+
| `--accent-inari` | `--inari-500` | `--inari-600` | Inari |
|
|
433
422
|
|
|
434
|
-
These tokens are the canonical hue
|
|
423
|
+
These tokens are the canonical hue for each project. They also feed `--brand-secondary` when a project scope is applied via `data-project` or `ProjectProvider`. Light theme shifts project accents one step darker (500→600) to maintain contrast against the brighter background.
|
|
435
424
|
|
|
436
425
|
---
|
|
437
426
|
|
|
@@ -462,7 +451,7 @@ Semantic colors exist **only** for status indication. Each maps to exactly one m
|
|
|
462
451
|
2. **Accent on action, not surface** — Brand appears on primary CTAs, focus rings, active borders, brand typography. Never as a full surface background fill.
|
|
463
452
|
3. **Semantic = meaning only** — Status hues exist for machine-state communication (badge bg, toast icon, validation message, online/offline dot). If it doesn't communicate a machine state, use the raw ramps instead.
|
|
464
453
|
4. **Status bg uses `--*-bg`** — Status badges and pills use the `--status-*-bg` token, never the solid `--*-500` as a fill.
|
|
465
|
-
5. **Project scoping** —
|
|
454
|
+
5. **Project scoping** — 7KGroup uses magenta, 7KMinato cyan, Inari burnt orange. Within a project scope (`data-project` or `ProjectProvider`), the project accent takes over the **entire brand chain** — `--brand-primary` and `--brand-secondary` (primary/glow buttons, focus rings, brand borders) — making the project hue more prevalent than the 7KGroup baseline. Magenta only persists in constant identity marks (`--accent-7kgroup`, logo/icon strokes). Semantic status colors and the neutral ramp stay unchanged.
|
|
466
455
|
6. **No raw ramp references in components** — Always reference role tokens (`--bg-elevated`, `--text-primary`, `--border-default`), never raw ramp tokens (`--neutral-950`, `--neutral-50`, etc.). This is how theme switching works.
|
|
467
456
|
7. **Dark is default, light is opt-in** — `:root` holds dark token mappings. `@media (prefers-color-scheme: light)` overrides only the role tokens. Primitive ramps are shared and unchanged.
|
|
468
457
|
|
|
@@ -482,11 +471,11 @@ Semantic colors exist **only** for status indication. Each maps to exactly one m
|
|
|
482
471
|
|
|
483
472
|
| Variant | Weight | Pairs with | Best for |
|
|
484
473
|
| ------------ | --------------- | ------------------------ | ------------------------------------ |
|
|
485
|
-
| **Square** | 400 (Regular) | Magenta (
|
|
486
|
-
| **Circle** | 500 (Medium) | Cyan
|
|
487
|
-
| **Grid** | 600 (SemiBold) |
|
|
488
|
-
| **Line** | 700 (Bold) |
|
|
489
|
-
| **Triangle** | 800 (ExtraBold) |
|
|
474
|
+
| **Square** | 400 (Regular) | Magenta (7KGroup) | Body-sized pixel text, data displays |
|
|
475
|
+
| **Circle** | 500 (Medium) | Cyan (7KMinato) | Buttons, badges, navigation |
|
|
476
|
+
| **Grid** | 600 (SemiBold) | Neutral | Section titles, stat values |
|
|
477
|
+
| **Line** | 700 (Bold) | Neutral | Display headlines, hero text |
|
|
478
|
+
| **Triangle** | 800 (ExtraBold) | Inari (Inari project) | Hero wordmarks, giant headlines |
|
|
490
479
|
|
|
491
480
|
### Font stacks
|
|
492
481
|
|
|
@@ -647,9 +636,9 @@ Sharp (0px) and subtle (2–4px) are preferred for 1-bit elements. 8–12px for
|
|
|
647
636
|
|
|
648
637
|
- Scanline overlay on hero / full-bleed sections
|
|
649
638
|
- Halftone dot separators between content blocks
|
|
650
|
-
- Full-bleed sections use `.separator-
|
|
639
|
+
- Full-bleed sections use `.separator-solid` (2px white line at 25% opacity) as rhythm breaks
|
|
651
640
|
- Texture shift between sections: scanline → solid → halftone → solid → scanline. Never two textured sections adjacent.
|
|
652
|
-
- Manga panel composition: content is the "panel" (solid black border), background is the "page" (noise or scanline). Each panel gets a `.vignette-
|
|
641
|
+
- Manga panel composition: content is the "panel" (solid black border), background is the "page" (noise or scanline). Each panel gets a `.vignette-ink` edge fade.
|
|
653
642
|
|
|
654
643
|
### Product shell layout
|
|
655
644
|
|
|
@@ -677,29 +666,32 @@ Sharp (0px) and subtle (2–4px) are preferred for 1-bit elements. 8–12px for
|
|
|
677
666
|
|
|
678
667
|
**Modern neon** — the only button system. All buttons use `mono-label` typography (Geist Mono, 11px, 500 weight, 0.12em uppercase) and 4px border-radius. Accent fills use the brand-primary ramp (500→hover:400→active:600). Button groups, split buttons, and loading state are built on the same base.
|
|
679
668
|
|
|
680
|
-
| Class
|
|
681
|
-
|
|
|
682
|
-
| `.btn
|
|
683
|
-
| `.btn-
|
|
684
|
-
| `.btn-
|
|
685
|
-
| `.btn-
|
|
686
|
-
| `.btn-
|
|
687
|
-
| `.btn-
|
|
688
|
-
| `.btn-
|
|
689
|
-
| `.btn-
|
|
690
|
-
| `.btn-
|
|
691
|
-
| `.btn-
|
|
692
|
-
| `.btn-
|
|
693
|
-
| `.btn-
|
|
694
|
-
| `.btn-
|
|
695
|
-
| `.btn
|
|
669
|
+
| Class | Description |
|
|
670
|
+
| --------------------------- | ------------------------------------------------------------------------------------------ |
|
|
671
|
+
| `.btn` | Base: mono-label typography, 12px/20px padding, `rounded.sm` (4px) |
|
|
672
|
+
| `.btn-primary` | Magenta outline, `--brand-primary-subtle` fill tint on hover, white text when active |
|
|
673
|
+
| `.btn-secondary` | `--bg-raised` fill, `--bg-overlay` on hover |
|
|
674
|
+
| `.btn-ghost` | Transparent, `--text-secondary` text, subtle bg on hover |
|
|
675
|
+
| `.btn-glow` | Magenta outline + persistent neon glow, intensifies on hover |
|
|
676
|
+
| `.btn-accent` | Dynamic `--brand-secondary` outline + fill tint on hover (per-project accent) |
|
|
677
|
+
| `.btn-glow-accent` | `--brand-secondary` fill + glow (the filled "neon" button; magenta for the parent brand) |
|
|
678
|
+
| `.btn-glow-secondary`| Cyan/`--brand-secondary` outline + glow variant of `.btn-glow` |
|
|
679
|
+
| `.btn-danger` | Transparent + danger border, danger fill on hover |
|
|
680
|
+
| `.btn-sm/lg` | Size variants (8px/16px small, 16px/28px large) |
|
|
681
|
+
| `.btn-icon` | 40×40 square icon button |
|
|
682
|
+
| `.btn-lg-icon` | 52×52 large icon button |
|
|
683
|
+
| `.btn-loading` | Loading state — `spin-steps` replaces icon |
|
|
684
|
+
| `.btn:disabled` | 40% opacity, no pointer events, glow removed — applies to every variant |
|
|
685
|
+
| `.btn-group` | Inline flex container for grouped buttons (adjacent borders merge) |
|
|
686
|
+
| `.btn-split` | Split button trigger — last child gets narrower padding + left border |
|
|
696
687
|
|
|
697
688
|
All variants use standard CSS transitions for interaction states:
|
|
698
689
|
|
|
699
|
-
- **`:hover`** → fill shifts to
|
|
690
|
+
- **`:hover`** → border/fill shifts to the `-hover` step of the variant's ramp, optional glow shadow intensifies
|
|
700
691
|
- **`:focus-visible`** → outline ring
|
|
701
|
-
- **`:active`** → fill shifts to `--
|
|
702
|
-
-
|
|
692
|
+
- **`:active`** → fill shifts to the `-muted` step with `--color-paper` text (keeps contrast ≥ 7:1)
|
|
693
|
+
- **`:disabled`** → 40% opacity, `not-allowed` cursor, no glow
|
|
694
|
+
- **`Loading`** → `spin-steps` (0.6s steps(4) infinite — square frame rotation)
|
|
703
695
|
|
|
704
696
|
### 6b. Form controls
|
|
705
697
|
|
|
@@ -708,9 +700,9 @@ All variants use standard CSS transitions for interaction states:
|
|
|
708
700
|
| `.input` | Text input: black bg, 2px white border, accent glow on focus |
|
|
709
701
|
| `.textarea` | Multi-line input, same tokens |
|
|
710
702
|
| `.select-native` | Custom dropdown, SVG chevron |
|
|
711
|
-
| `.checkbox` | 16px square, checked fills white (`.checkbox-accent`: fills
|
|
712
|
-
| `.radio` | 16px square, selected fills white (`.radio-accent`: fills
|
|
713
|
-
| `.toggle` | 36x18 switch, on state fills white (`.toggle-accent`: fills
|
|
703
|
+
| `.checkbox` | 16px square, checked fills white (`.checkbox-accent`: fills `--brand-secondary`) |
|
|
704
|
+
| `.radio` | 16px square, selected fills white (`.radio-accent`: fills `--brand-secondary`) |
|
|
705
|
+
| `.toggle` | 36x18 switch, on state fills white (`.toggle-accent`: fills `--brand-secondary`) |
|
|
714
706
|
| `.range` | 6px track, 16px square thumb |
|
|
715
707
|
| `.form-group` | Flex column with gap |
|
|
716
708
|
| `.form-label` | Mono uppercase label, 11px |
|
|
@@ -776,7 +768,7 @@ All variants use standard CSS transitions for interaction states:
|
|
|
776
768
|
| Class | Description |
|
|
777
769
|
| ----------------------------------- | ------------------------------------------- |
|
|
778
770
|
| `.progress` | 12px bar, 2px border |
|
|
779
|
-
| `.progress-accent` |
|
|
771
|
+
| `.progress-accent` | `--brand-secondary` (project accent) fill |
|
|
780
772
|
| `.progress-indeterminate` | Scanning bar animation |
|
|
781
773
|
| `.progress-striped` | Striped fill overlay |
|
|
782
774
|
| `.spinner` | 20px square rotating frame, 90° steps |
|
|
@@ -816,16 +808,16 @@ All variants use standard CSS transitions for interaction states:
|
|
|
816
808
|
|
|
817
809
|
These classes add thin color to any 1-bit component without breaking the black/white base. Apply alongside the component class.
|
|
818
810
|
|
|
819
|
-
| Class
|
|
820
|
-
|
|
|
821
|
-
| `.accent-border-top` / `.accent-border-left` / `.accent-border-bottom`
|
|
822
|
-
| `.
|
|
823
|
-
| `.accent-underline` / `.
|
|
824
|
-
| `.accent-dot` / `.
|
|
825
|
-
| `.accent-bar` / `.
|
|
826
|
-
| `.glow-mod` / `.glow-mod-
|
|
827
|
-
| `.border-mod-accent` / `.border-mod-
|
|
828
|
-
| `.accent-corner` / `.
|
|
811
|
+
| Class | Effect |
|
|
812
|
+
| -------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
813
|
+
| `.accent-border-top` / `.accent-border-left` / `.accent-border-bottom` | 3px `--brand-primary` (magenta) border on one edge |
|
|
814
|
+
| `.accent-secondary-border-top` / `-left` / `-bottom` | 3px `--brand-secondary` (per-project) border |
|
|
815
|
+
| `.accent-underline` / `.accent-secondary-underline` | Colored underline on text |
|
|
816
|
+
| `.accent-dot` / `.accent-secondary-dot` | Small colored dot after element |
|
|
817
|
+
| `.accent-bar` / `.accent-secondary-bar` | Thin colored bar across top |
|
|
818
|
+
| `.glow-mod` / `.glow-mod-secondary` | Colored glow shadow |
|
|
819
|
+
| `.border-mod-accent` / `.border-mod-secondary` | Border color override |
|
|
820
|
+
| `.accent-corner` / `.accent-secondary-corner` | Small colored corner badge |
|
|
829
821
|
|
|
830
822
|
### 1-bit composition rules
|
|
831
823
|
|
|
@@ -963,10 +955,10 @@ import { Button } from '7k-design-system/react';
|
|
|
963
955
|
|
|
964
956
|
**CSS classes applied:**
|
|
965
957
|
|
|
966
|
-
- Base: `.btn
|
|
967
|
-
- Variant: `.btn-
|
|
968
|
-
- Size: `.btn-
|
|
969
|
-
- Loading: `.btn-
|
|
958
|
+
- Base: `.btn`
|
|
959
|
+
- Variant: `.btn-{variant}` (e.g., `.btn-primary`)
|
|
960
|
+
- Size: `.btn-sm` | `.btn-lg` (md applies no extra class)
|
|
961
|
+
- Loading: `.btn-loading` when `loading={true}`
|
|
970
962
|
|
|
971
963
|
**Behavior:** Forwards ref to `<button>`. Combines `className` prop with generated classes. Sets `aria-busy` when loading.
|
|
972
964
|
|
|
@@ -1170,18 +1162,6 @@ import { IsometricBackground } from '7k-design-system/react';
|
|
|
1170
1162
|
|
|
1171
1163
|
**CSS classes applied:** `.isometric-grid`, `.isometric-grid-animated`
|
|
1172
1164
|
|
|
1173
|
-
### MangaPanel
|
|
1174
|
-
|
|
1175
|
-
```typescript
|
|
1176
|
-
import { MangaPanel } from '7k-design-system/react';
|
|
1177
|
-
|
|
1178
|
-
<MangaPanel frame texture="halftone" speedLine="horizontal">
|
|
1179
|
-
Splash content
|
|
1180
|
-
</MangaPanel>
|
|
1181
|
-
```
|
|
1182
|
-
|
|
1183
|
-
**CSS classes applied:** `.panel`, `.panel-frame`, `.panel-halftone`, `.speed-line-horizontal`
|
|
1184
|
-
|
|
1185
1165
|
### ThemeToggle
|
|
1186
1166
|
|
|
1187
1167
|
```typescript
|
|
@@ -1361,7 +1341,6 @@ Port: 6006
|
|
|
1361
1341
|
| `Components/Badges` (`Components.stories.tsx`) | Badge variants |
|
|
1362
1342
|
| `Components/Cards` (`Components.stories.tsx`) | Card styles and textures |
|
|
1363
1343
|
| `Components/TexturedCards` | Textured card variants |
|
|
1364
|
-
| `Components/MangaPanels` | Manga panel frames and textures |
|
|
1365
1344
|
| `Components/Navigation` (`Components.stories.tsx`) | Nav patterns |
|
|
1366
1345
|
| `Components/Alerts` (`Components.stories.tsx`) | Alert variants |
|
|
1367
1346
|
| `Components/Toasts` (`Components.stories.tsx`) | Toast variants |
|
|
@@ -1417,4 +1396,4 @@ npm run chromatic # Visual regression testing
|
|
|
1417
1396
|
| Multiple textures on the same section layer | Max one background + one overlay per section |
|
|
1418
1397
|
| Continuous animation on UI surfaces | Ambient animations are for hero/landing sections only |
|
|
1419
1398
|
| Isometric animation on interactive UI | Isometric bg + motion is for hero/splash sections only; never on cards, buttons, or form controls |
|
|
1420
|
-
| Mixing 1-bit button patterns into product surfaces | Use the modern button system (.btn
|
|
1399
|
+
| Mixing 1-bit button patterns into product surfaces | Use the modern button system (.btn\*) for all product surfaces. 1-bit button classes (.btn, .btn-primary, .btn-accent) are removed — do not reintroduce raw invert-hover buttons in place of modern neon buttons. |
|
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# 7k-design-system
|
|
2
2
|
|
|
3
|
-
> Dark-first, neon-accented
|
|
4
|
-
> Built for midnight. Three-font system. Major neon #FF0FF. Secondary neon cyan (thematic per project). Background textures on components.
|
|
3
|
+
> Dark-first, neon-accented design system for multi-project tech company 7K.
|
|
4
|
+
> Built for midnight. Three-font system. Major neon #FF0FF. Secondary neon cyan (thematic per project). Background textures on components. Callouts & surfaces. Isometric animations.
|
|
5
5
|
|
|
6
6
|
## Product Overview
|
|
7
7
|
|
|
8
|
-
**7k-design-system** is a dark-first dual-theme design system created for 7K, a technology holding company with multiple sub-projects. The system embodies a Tokyo neon atmosphere — high contrast, nocturnal canvas, electric accents — combined with
|
|
8
|
+
**7k-design-system** is a dark-first dual-theme design system created for 7K, a technology holding company with multiple sub-projects. The system embodies a Tokyo neon atmosphere — high contrast, nocturnal canvas, electric accents — combined with high-contrast visual language using pure black and white textures.
|
|
9
9
|
|
|
10
10
|
**Source product:** 7K is a technology holding company that builds infrastructure, AI pipelines, and digital products across multiple sub-projects. This design system serves as the visual foundation for 7K and all its child projects, providing a unified design language that differentiates sub-projects through accent color overrides while maintaining consistent typography, spacing, component patterns, and animation systems across all surfaces.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ The design system supports five primary surfaces:
|
|
|
17
17
|
| ----------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
|
|
18
18
|
| **Company Website** | Dark landing pages with scanline heroes, project showcases, stats grids | `DESIGN.md` §1–5, `src/stories/Components.stories.tsx` |
|
|
19
19
|
| **Product Dashboard** | Data-dense admin interfaces with sidebar nav, tables, status cards | `src/react/components/`, `src/stories/Components.stories.tsx` |
|
|
20
|
-
| **Sub-project Landing** |
|
|
20
|
+
| **Sub-project Landing** | Project pages with accent hue overrides (magenta = 7KGroup, cyan = 7KMinato, inari = Inari) | `DESIGN.md` §2 (accent tokens), `src/css/projects.css` |
|
|
21
21
|
| **Internal Tools** | CLI-like interfaces, monitoring panels, resource dashboards | `DESIGN.md` §3 (mono labels), `src/stories/Tokens.mdx` |
|
|
22
22
|
| **Mobile App** | Responsive adaptations with bottom tab nav, touch-friendly targets | `DESIGN.md` §5 (responsive grid), `src/stories/Components.stories.tsx` |
|
|
23
23
|
|
|
@@ -28,8 +28,8 @@ The system provides these core capabilities:
|
|
|
28
28
|
- **Dark-first theming** with opt-in light mode via `data-theme="light"`
|
|
29
29
|
- **Major neon accent** (#FF0FF magenta) + **secondary neon accent** (cyan by default, thematic per project)
|
|
30
30
|
- **Three-font system**: Geist Sans (display/body), Geist Mono (labels/code), Geist Pixel (5 geometric variants for ornamental use)
|
|
31
|
-
- **Texture categories**: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, isometric,
|
|
32
|
-
- **40+
|
|
31
|
+
- **Texture categories**: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, isometric, surfaces & callouts
|
|
32
|
+
- **40+ components**: sharp geometry, high-contrast borders, invert-on-hover, thin accent modifiers
|
|
33
33
|
- **Textured component variants**: halftone, scanline, noise, dots, crosshatch on cards, panels, modals, drawers, toasts, buttons
|
|
34
34
|
- **20+ animations**: ambient (scanline scroll, CRT flicker, neon pulse) and trigger (glitch, pixel-dots, invert-flash)
|
|
35
35
|
- **Isometric geometry animations**: combined animated background classes (`.isometric-grid-animated`, etc.)
|
|
@@ -47,8 +47,8 @@ Every design rule is grounded in the original brand brief (quoted inline in `DES
|
|
|
47
47
|
| "Our main brand color is #FF0FF" | Major magenta accent; cyan secondary (thematic per project) |
|
|
48
48
|
| "Tech company with different projects" | Sub-project accent overrides via `--brand-secondary` and `--accent-*` tokens |
|
|
49
49
|
| "Tokyo's neon atmosphere" | Dark near-black canvas (`#0A0A0D`), electric accents, no warm/beige tones |
|
|
50
|
-
| "
|
|
51
|
-
| "
|
|
50
|
+
| "High-contrast textures" | Pure black/white elements, texture patterns, surface & callout utilities, zero radius, 2px borders |
|
|
51
|
+
| "Stepped animations" | 20+ keyframes with step timing for retro digital feel |
|
|
52
52
|
| "Dark theme for websites" | Dark-first: `--bg-void: #000000`, `--bg-base: #0A0A0D`; light is opt-in |
|
|
53
53
|
|
|
54
54
|
## Package Contents
|
|
@@ -69,9 +69,9 @@ Every design rule is grounded in the original brand brief (quoted inline in `DES
|
|
|
69
69
|
├── fonts/ # Geist Pixel font files (preserved originals)
|
|
70
70
|
│ ├── GeistPixel-Square.ttf # 400 weight · pairs with magenta (7K parent)
|
|
71
71
|
│ ├── GeistPixel-Circle.ttf # 500 weight · pairs with cyan
|
|
72
|
-
│ ├── GeistPixel-Grid.ttf # 600 weight ·
|
|
73
|
-
│ ├── GeistPixel-Line.ttf # 700 weight ·
|
|
74
|
-
│ └── GeistPixel-Triangle.ttf # 800 weight · pairs with
|
|
72
|
+
│ ├── GeistPixel-Grid.ttf # 600 weight · neutral
|
|
73
|
+
│ ├── GeistPixel-Line.ttf # 700 weight · neutral
|
|
74
|
+
│ └── GeistPixel-Triangle.ttf # 800 weight · pairs with Inari
|
|
75
75
|
│
|
|
76
76
|
├── src/ # Source code
|
|
77
77
|
│ ├── css/ # Modular CSS source files
|
|
@@ -107,7 +107,7 @@ npm run build-storybook # Static build for deployment
|
|
|
107
107
|
| -------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
|
|
108
108
|
| **Colors & Tokens** | `src/stories/Tokens.mdx` | Magenta/cyan brand ramps, semantic brand tokens, neutral/status colors, typography scale, spacing, radii, shadows | `src/css/tokens.css`; `DESIGN.md` §2–4 |
|
|
109
109
|
| **Components** | `src/stories/Components.stories.tsx` | Modern neon button system (primary, glow, secondary, ghost, danger), cards, modals, drawers, toasts, tooltips, alerts, tabs, nav, inputs, toggles, selects, textareas, texture overlays | `src/react/components/`; `src/css/components.css` |
|
|
110
|
-
| **Textures** | `src/stories/Textures.stories.tsx` | All texture categories with density variants: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, separators,
|
|
110
|
+
| **Textures** | `src/stories/Textures.stories.tsx` | All texture categories with density variants: scanline, halftone, dot matrix, stripes, crosshatch, checkerboard, noise, vignette, separators, surfaces & callouts | `src/css/textures.css`; `src/css/callouts.css`; `DESIGN.md` |
|
|
111
111
|
| **Icons & Logos** | `src/stories/Icons.stories.tsx` | Curated icon set, logo variants, brand application rules, contextual previews | `build/` directory; `src/react/components/Icon.tsx` |
|
|
112
112
|
| **Theme / Projects** | `src/stories/ThemeToggle.stories.tsx` | Light/dark/system theme switching and project accent overrides | `src/react/theme/`; `src/css/projects.css` |
|
|
113
113
|
| **Overview** | `src/stories/Overview.mdx` | Design principles, voice/tone, anti-patterns, reuse workflow | `DESIGN.md`; `SKILL.md`; `CONSUMER_GUIDE.md` |
|
|
@@ -147,11 +147,11 @@ Requires self-hosting the `fonts/` directory for Geist Pixel variants.
|
|
|
147
147
|
2. **Bind tokens** — Import `colors_and_type.css` (or `dist/7k-design-system.css` for external use)
|
|
148
148
|
3. **Override accent** — For child projects, set the appropriate `--accent-*` token:
|
|
149
149
|
```css
|
|
150
|
-
.project-
|
|
151
|
-
--accent-
|
|
150
|
+
.project-7kminato {
|
|
151
|
+
--accent-7kminato: var(--cyan-500);
|
|
152
152
|
}
|
|
153
|
-
.project-
|
|
154
|
-
--accent-
|
|
153
|
+
.project-inari {
|
|
154
|
+
--accent-inari: var(--inari-500);
|
|
155
155
|
}
|
|
156
156
|
```
|
|
157
157
|
4. **Preview tokens** — Run `npm run storybook` and open the Colors, Tokens, Textures, and Components stories to verify values render correctly
|
|
@@ -172,7 +172,7 @@ Requires self-hosting the `fonts/` directory for Geist Pixel variants.
|
|
|
172
172
|
}
|
|
173
173
|
```
|
|
174
174
|
4. **Apply textures** — Add classes like `.scanline`, `.halftone-md`, `.noise` to sections
|
|
175
|
-
5. **Use components** — Apply classes like `.btn-
|
|
175
|
+
5. **Use components** — Apply classes like `.btn-primary`, `.badge-success`, `.input`
|
|
176
176
|
|
|
177
177
|
## File Structure Notes
|
|
178
178
|
|