@nazuraki/styles 0.2.1 → 0.2.3

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.
@@ -0,0 +1,115 @@
1
+ # summer-cloud
2
+
3
+ Light, airy, high-velocity retail aesthetic — "Airy Energetic." Frosted white
4
+ glass floating on a sky gradient, with a vivid violet doing all the work of
5
+ emphasis. Where neon-butterfly is a command console, summer-cloud is a summer
6
+ storefront: weightless, optimistic, effortless. Nothing sits flat on the page;
7
+ everything hovers.
8
+
9
+ Derived from the Stitch project *Summer Cloud UI System*
10
+ (`15973631330153907862`): Style Guide, Components Showcase, Retail Dashboard.
11
+
12
+ ## Color
13
+
14
+ | Role | Value | Usage |
15
+ | --- | --- | --- |
16
+ | Background | `#f6fafe` → `#c9e6ff` | Sky gradient at 135°, `fixed`. Apply via `.nb-bg` |
17
+ | Surface | `#ffffff` | Dialogs and fully opaque panels |
18
+ | Surface sunken | `#f0f4f8` | Inset form fields |
19
+ | Surface glass | `rgba(255,255,255,0.6)` + 12px blur | Cards, alerts (Level 1) |
20
+ | Surface glass high | `rgba(255,255,255,0.8)` + 20px blur | Floating/hover cards, modals (Level 2) |
21
+ | On-surface | `#171c1f` | Body text |
22
+ | Faint | `#484457` | Secondary text, labels, idle nav |
23
+ | Primary | `#4500d9` (violet) | Headings, CTAs, active states, prices, progress |
24
+ | Primary bright | `#5d2bff` | Shadow/glow tint and primary hover fill |
25
+ | Accent | `#0cb3ff` (sky blue) | Focus rings, secondary path, info — the interactive signal |
26
+ | Accent deep | `#006492` | Accent as *text* (the bright sky blue fails contrast) |
27
+ | Info | `#0cb3ff` | Informational callouts and badges |
28
+ | Success | `#30e330` | Switch "on" state — deliberately vibrant, the one high-energy pop |
29
+ | Warning | `#f2c025` | Caution states, "New" badges |
30
+ | Danger | `#ff4d4d` (retail red) | Errors, "Sale" badges, alert rules — carries dark text, never white |
31
+ | Danger deep | `#cc1f1f` | Danger where white text sits on it (destructive buttons) |
32
+ | Border | `rgba(255,255,255,0.4)` | Glass edges — the highlight that makes glass read as glass |
33
+ | Outline | `#c9c3da` | Hairlines on opaque surfaces (chips, table rules, checkboxes) |
34
+ | Sky tint | `rgba(255,255,255,0.7)` | Hover wash on ghost/nav elements |
35
+
36
+ Rules: the violet is the only loud color and carries emphasis alone — resting UI
37
+ is faint grey on white glass. Sky blue means "you can interact with this"
38
+ (focus, secondary actions, info). Never use pure black; never use a grey shadow.
39
+ The gradient is not decoration — on a flat white page the glass has nothing to
40
+ be glass against, and the theme collapses.
41
+
42
+ ## Typography
43
+
44
+ Three voices, per the project's design system:
45
+
46
+ - **Display & headings:** Plus Jakarta Sans (600/700/800), letter-spacing
47
+ `-0.02em` at display sizes — friendly rounded terminals, tucked in tight.
48
+ - **Body:** Inter 400, 16px/24px. Sentence case, always.
49
+ - **Data & labels:** JetBrains Mono 500, 12px, tracking `0.05em`. Field labels,
50
+ badges, table headers, prices, metadata. This is the "utility-grade"
51
+ counterweight to the soft headings. Uppercase for badges and table headers
52
+ (furniture); sentence case for field labels, which people read as words.
53
+
54
+ Interactive text (buttons, links, tabs) is Plus Jakarta Sans 600 at 14px,
55
+ sentence case. Uppercase never appears outside the mono voice.
56
+
57
+ The three webfonts are not bundled; include the Google Fonts links or self-host.
58
+ Every stack falls back to a system family.
59
+
60
+ ## Shape & effects
61
+
62
+ - Radius `1rem` (16px) for cards, panels, and fields; **pills**
63
+ (`--nb-radius-pill`) for every button, badge, and chip; `0.25rem` minimum
64
+ anywhere else. Never 0.
65
+ - Depth is **blur + tinted shadow**, never grey drop shadows. Shadows are tinted
66
+ with `#5d2bff`: `0 20px 40px rgba(93,43,255,0.08)` at rest,
67
+ `0 4px 14px rgba(93,43,255,0.39)` for raised CTAs.
68
+ - Two elevation tiers only — Level 1 glass (0.6 white / 12px blur) for content,
69
+ Level 2 (0.8 white / 20px blur + lift) for interactive and floating things.
70
+ - **Bouncy, not linear.** Buttons scale to 1.03 on hover and 0.95 on press with
71
+ `cubic-bezier(0.34,1.56,0.64,1)`; floating cards translate `-4px`.
72
+ - Focus is a 4px sky-blue ring (`0 0 0 4px rgba(12,179,255,0.2)`), never an
73
+ outline suppression without a replacement.
74
+ - Spacing is strictly multiples of 8px. When in doubt, add 8.
75
+ - Respect `prefers-reduced-motion` — every transform is dropped.
76
+
77
+ ## Components
78
+
79
+ Class prefix `nb-` (shared across themes so `@nazuraki/ui-react` stays
80
+ theme-agnostic). Variants use BEM-ish modifiers (`nb-btn--primary`).
81
+
82
+ - **Card** `.nb-card` — glass panel; `--floating` adds the Level 2 hover lift.
83
+ - **NavLink** `.nb-link` — pill, sky-tint wash, `→` slides 4px on hover;
84
+ `--active` / `[aria-current=page]` becomes the violet underline rule.
85
+ - **Button** `.nb-btn` — glass by default; `--primary` (solid violet CTA, one
86
+ per view), `--accent` (sky-edged glass), `--ghost`, `--danger`.
87
+ - **Form** `.nb-input`, `.nb-textarea`, `.nb-select`, `.nb-label`, `.nb-field`,
88
+ `.nb-checkbox`, `.nb-radio`, `.nb-switch`, `.nb-choice` — sunken fields, no
89
+ resting border, sky-blue ring on focus. The switch is the oversized
90
+ "cloud-toggle": squishy, and green when live.
91
+ - **Badge** `.nb-badge` + semantic modifiers — solid pills, mono uppercase.
92
+ **Chip** `.nb-chip` — outlined filter chip; `--selected` fills violet.
93
+ - **Alert** `.nb-alert` — glass card with a 4px semantic left rule.
94
+ - **Dialog** `.nb-dialog` — native `<dialog>`, opaque white, blurred backdrop.
95
+ - **Tabs** `.nb-tabs`/`.nb-tab`/`.nb-tabpanel` — violet underline when active.
96
+ - **Table** `.nb-table` — mono uppercase headers, sky-tint row hover; add
97
+ `.nb-num` to numeric cells for the mono/right-aligned treatment.
98
+ - **Progress** `.nb-progress`, **Spinner** `.nb-spinner` — glowing violet.
99
+
100
+ ## Deviations from the Stitch source
101
+
102
+ - The generated screens flattened all three type voices to Plus Jakarta Sans.
103
+ This theme follows the project's written design system instead (Inter body,
104
+ JetBrains Mono labels), which is the richer and intended spec.
105
+ - The project's stored theme carried an earlier palette (near-black primary
106
+ `#01020e`, lavender secondary `#7248ae`). The rendered screens — all three,
107
+ in agreement — use violet `#4500d9` and sky blue `#0cb3ff`. This theme
108
+ matches the screens, since that is what Summer Cloud actually looks like.
109
+ - Tabs, table, dialog, and spinner do not appear in the source screens; they are
110
+ extrapolated from the rules above to complete the `nb-*` inventory.
111
+ - The source screens set white text on retail red (`#ff4d4d`), which is 3.27:1 —
112
+ below AA at badge and button sizes. This theme keeps the vivid red and puts
113
+ dark text on it (4.97:1), and uses `--nb-danger-deep` for the solid
114
+ destructive button (5.55:1 on white). Every other foreground/background pair
115
+ in the palette clears AA.
@@ -0,0 +1,13 @@
1
+ /* summer-cloud — full theme entry point */
2
+ @import "./tokens.css";
3
+ @import "./base.css";
4
+ @import "./components/card.css";
5
+ @import "./components/link.css";
6
+ @import "./components/button.css";
7
+ @import "./components/form.css";
8
+ @import "./components/badge.css";
9
+ @import "./components/alert.css";
10
+ @import "./components/dialog.css";
11
+ @import "./components/tabs.css";
12
+ @import "./components/table.css";
13
+ @import "./components/progress.css";
@@ -0,0 +1,74 @@
1
+ /* summer-cloud — design tokens
2
+ * Source of truth for the summer-cloud theme. Consume via:
3
+ * @import "@nazuraki/styles/summer-cloud/tokens";
4
+ * or pull the whole theme with ./index.css.
5
+ *
6
+ * Token names mirror neon-butterfly's --nb-* contract so themes stay
7
+ * swappable; names marked (extra) are additions this theme needs and that
8
+ * neon-butterfly does not define.
9
+ */
10
+ :root {
11
+ /* color */
12
+ --nb-bg: #f6fafe;
13
+ --nb-bg-blend: #eaeef2;
14
+ --nb-surface: #ffffff;
15
+ --nb-surface-sunken: #f0f4f8; /* (extra) inset fields */
16
+ --nb-surface-glass: rgba(255, 255, 255, 0.6);
17
+ --nb-surface-glass-high: rgba(255, 255, 255, 0.8); /* (extra) floating tier */
18
+ --nb-on-surface: #171c1f;
19
+ --nb-faint: #484457;
20
+ --nb-primary: #4500d9;
21
+ --nb-primary-bright: #5d2bff; /* (extra) shadow/glow tint */
22
+ --nb-primary-glow: rgba(93, 43, 255, 0.4);
23
+ --nb-primary-border: rgba(69, 0, 217, 0.2);
24
+ --nb-accent: #0cb3ff;
25
+ --nb-accent-glow: rgba(12, 179, 255, 0.2);
26
+ --nb-accent-deep: #006492; /* (extra) readable accent text */
27
+ --nb-border: rgba(255, 255, 255, 0.4);
28
+ --nb-outline: #c9c3da; /* (extra) hairline on opaque surfaces */
29
+
30
+ /* semantic color */
31
+ --nb-info: #0cb3ff;
32
+ --nb-success: #30e330;
33
+ --nb-warning: #f2c025;
34
+ --nb-danger: #ff4d4d;
35
+ --nb-danger-deep: #cc1f1f; /* (extra) danger where white text sits on it */
36
+
37
+ /* sky gradient (extra) */
38
+ --nb-sky-start: #f0f4f8;
39
+ --nb-sky-end: #c9e6ff;
40
+ --nb-sky-tint: rgba(255, 255, 255, 0.7);
41
+
42
+ /* typography */
43
+ --nb-font-display: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif; /* (extra) */
44
+ --nb-font-body: "Inter", ui-sans-serif, system-ui, sans-serif; /* (extra) */
45
+ --nb-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
46
+ --nb-font-weight: 400;
47
+ --nb-font-weight-medium: 600; /* (extra) */
48
+ --nb-font-weight-bold: 700;
49
+ --nb-text-sm: 14px;
50
+ --nb-tracking-wide: 0.05em;
51
+ --nb-tracking-tight: -0.02em; /* (extra) display sizes */
52
+
53
+ /* shape & effects */
54
+ --nb-radius: 1rem;
55
+ --nb-radius-sm: 0.25rem; /* (extra) */
56
+ --nb-radius-pill: 9999px; /* (extra) */
57
+ --nb-blur: 12px;
58
+ --nb-blur-high: 20px; /* (extra) */
59
+ --nb-transition: 0.3s;
60
+ --nb-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); /* (extra) */
61
+
62
+ /* elevation (extra) — tinted with the primary, never grey */
63
+ --nb-shadow: 0 20px 40px rgba(93, 43, 255, 0.08);
64
+ --nb-shadow-soft: 0 10px 30px rgba(0, 100, 146, 0.05);
65
+ --nb-shadow-raised: 0 4px 14px rgba(93, 43, 255, 0.39);
66
+ --nb-shadow-raised-hover: 0 6px 20px rgba(93, 43, 255, 0.5);
67
+
68
+ /* spacing */
69
+ --nb-space-1: 0.25rem;
70
+ --nb-space-2: 0.5rem;
71
+ --nb-space-3: 1rem;
72
+ --nb-space-4: 1.5rem;
73
+ --nb-space-5: 2rem;
74
+ }