@ojiepermana/angular-theme 22.0.36 → 22.0.43
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 +25 -12
- package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +10 -1
- package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +72 -22
- package/fesm2022/ojiepermana-angular-theme-layout.mjs +117 -45
- package/fesm2022/ojiepermana-angular-theme-page.mjs +251 -101
- package/fesm2022/ojiepermana-angular-theme-styles.mjs +19 -0
- package/layout/README.md +41 -36
- package/package.json +3 -3
- package/page/README.md +53 -15
- package/styles/README.md +11 -3
- package/styles/css/base/components.css +212 -0
- package/styles/css/base/theme.css +117 -49
- package/styles/css/base/tokens.css +98 -48
- package/styles/css/color/amber.css +2 -0
- package/styles/css/color/blue.css +2 -0
- package/styles/css/color/cyan.css +2 -0
- package/styles/css/color/emerald.css +2 -0
- package/styles/css/color/fuchsia.css +2 -0
- package/styles/css/color/green.css +2 -0
- package/styles/css/color/indigo.css +2 -0
- package/styles/css/color/lime.css +2 -0
- package/styles/css/color/orange.css +2 -0
- package/styles/css/color/pink.css +2 -0
- package/styles/css/color/purple.css +2 -0
- package/styles/css/color/red.css +2 -0
- package/styles/css/color/rose.css +2 -0
- package/styles/css/color/sky.css +2 -0
- package/styles/css/color/teal.css +2 -0
- package/styles/css/color/violet.css +2 -0
- package/styles/css/color/yellow.css +2 -0
- package/styles/css/neutral/gray.css +2 -0
- package/styles/css/neutral/mauve.css +2 -0
- package/styles/css/neutral/mist.css +2 -0
- package/styles/css/neutral/neutral.css +2 -0
- package/styles/css/neutral/olive.css +2 -0
- package/styles/css/neutral/slate.css +2 -0
- package/styles/css/neutral/stone.css +2 -0
- package/styles/css/neutral/taupe.css +2 -0
- package/styles/css/neutral/zinc.css +2 -0
- package/styles/css/space/index.css +6 -3
- package/types/ojiepermana-angular-theme-layout-services.d.ts +1 -1
- package/types/ojiepermana-angular-theme-layout-types.d.ts +1 -1
- package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +40 -7
- package/types/ojiepermana-angular-theme-layout.d.ts +4 -2
- package/types/ojiepermana-angular-theme-page.d.ts +88 -36
- package/types/ojiepermana-angular-theme-styles.d.ts +1 -0
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
--border-width-base: 1px;
|
|
21
21
|
|
|
22
|
-
--shadow-base: 0 1px 2px hsl(
|
|
22
|
+
--shadow-base: 0 1px 2px hsl(0 0% 3.9% / 0.08);
|
|
23
23
|
|
|
24
24
|
--duration-base: 200ms;
|
|
25
25
|
--ease-base: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -82,10 +82,10 @@
|
|
|
82
82
|
* re-emitted by the Tailwind @theme mapping as var(--theme-shadow-*) in the
|
|
83
83
|
* later `theme` layer, so pointing either alias back at --shadow-* would
|
|
84
84
|
* create a var() cycle that invalidates the whole chain. */
|
|
85
|
-
--shadow-xs-base: 0 1px 1px hsl(
|
|
86
|
-
--shadow-md-base: 0 4px 6px hsl(
|
|
87
|
-
--shadow-lg-base: 0 10px 15px hsl(
|
|
88
|
-
--shadow-xl-base: 0 20px 25px hsl(
|
|
85
|
+
--shadow-xs-base: 0 1px 1px hsl(0 0% 3.9% / 0.05);
|
|
86
|
+
--shadow-md-base: 0 4px 6px hsl(0 0% 3.9% / 0.08);
|
|
87
|
+
--shadow-lg-base: 0 10px 15px hsl(0 0% 3.9% / 0.1);
|
|
88
|
+
--shadow-xl-base: 0 20px 25px hsl(0 0% 3.9% / 0.12);
|
|
89
89
|
--shadow-xs: var(--shadow-xs-base);
|
|
90
90
|
--shadow-sm: var(--shadow-base);
|
|
91
91
|
--shadow-md: var(--shadow-md-base);
|
|
@@ -157,12 +157,88 @@
|
|
|
157
157
|
--timeline-indicator-rose: 349 89% 60%;
|
|
158
158
|
--timeline-indicator-rose-foreground: 0 0% 100%;
|
|
159
159
|
|
|
160
|
-
--layout-grid-line
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
160
|
+
/* --layout-grid-line is defined per-mode in base/tokens.css and per-neutral
|
|
161
|
+
* by the generated theme-neutral CSS, so the surface grid keeps constant
|
|
162
|
+
* contrast across every neutral — not just base. Opacity is the global
|
|
163
|
+
* visibility knob shared by all grid surfaces:
|
|
164
|
+
* --layout-grid-line-opacity → the `grid` + `honeycomb` surfaces
|
|
165
|
+
* (multi-axis patterns)
|
|
166
|
+
* --layout-grid-dot-opacity → `line-vertical` / `line-horizontal`
|
|
167
|
+
* (single-axis rules)
|
|
168
|
+
* The multi-axis patterns are denser so they sit a step below the
|
|
169
|
+
* single-axis lines. Raised from 0.18/0.22 so the pattern actually reads
|
|
170
|
+
* on-screen against the ~16-point line/background lightness gap. */
|
|
171
|
+
--layout-grid-line-opacity: 0.4;
|
|
172
|
+
--layout-grid-dot-opacity: 0.5;
|
|
173
|
+
|
|
174
|
+
/* `grid` surface line color. DEFAULT (fallback) = the neutral --layout-grid-line
|
|
175
|
+
* at --layout-grid-line-opacity (unchanged behavior). Where CSS relative color
|
|
176
|
+
* is supported it's overridden below to FOLLOW THE ACCENT: accent hue+saturation
|
|
177
|
+
* (from --accent-foreground) at the grid's own lightness (82% light / 24% dark,
|
|
178
|
+
* pinned so brightness stays put — grayscale in the base theme, tinted under a
|
|
179
|
+
* color theme). Only the `grid` surface uses this; honeycomb/line-* stay neutral. */
|
|
180
|
+
--layout-grid-color: hsl(var(--layout-grid-line) / var(--layout-grid-line-opacity));
|
|
181
|
+
|
|
182
|
+
/* `grid-line` surface — global faintness of its accent-tinted glow (accent hue
|
|
183
|
+
* from --accent-foreground at lightness --layout-grid-highlight-l, composed in
|
|
184
|
+
* base/components.css). Per-element alpha (faint base grid, faint cell fills,
|
|
185
|
+
* bright glow squares) is baked into the SVG mask, so this multiplies it: lower
|
|
186
|
+
* for a quieter surface, raise for a more assertive glow. */
|
|
187
|
+
--layout-grid-highlight-opacity: 0.55;
|
|
188
|
+
|
|
189
|
+
/* `grid-line` frame border opacity. The square layout frame borders with the
|
|
190
|
+
* accent color (--accent-foreground — the STRONG member of the accent family,
|
|
191
|
+
* so it follows the active theme-color and inverts dark-on-light / light-on-
|
|
192
|
+
* dark). Now that the SURFACE also tints with the accent, the border was too
|
|
193
|
+
* strong — toned down to 0.484, but kept ABOVE the surface's strongest line
|
|
194
|
+
* (≈ --layout-grid-highlight-opacity 0.55 × the brightest baked stroke 0.9 ≈
|
|
195
|
+
* 0.5) so the layout edge still reads as the strongest line. */
|
|
196
|
+
--layout-grid-line-border-opacity: 0.484;
|
|
197
|
+
|
|
198
|
+
/* border-rail appearance — color, opacity, and THICKNESS of the layout's rail
|
|
199
|
+
* lines AND its frame border (all read these). Color/opacity follow the ACCENT
|
|
200
|
+
* (--accent-foreground) globally, so every border-rail layout picks up the
|
|
201
|
+
* active theme-color and reads bright, not the soft neutral --border.
|
|
202
|
+
* --accent-foreground inverts dark-on-light / light-on-dark automatically.
|
|
203
|
+
* --layout-rail-width is the single thickness knob for the layout rails. */
|
|
204
|
+
--layout-rail-color: var(--accent-foreground);
|
|
205
|
+
--layout-rail-opacity: 0.9;
|
|
206
|
+
--layout-rail-width: 1.21px;
|
|
207
|
+
|
|
208
|
+
/* `matrix` surface — a scattered binary (0/1) field tinted with the brand
|
|
209
|
+
* --primary accent (not the neutral --layout-grid-line), so it reads as a soft
|
|
210
|
+
* "digital" signature that recolors with the active theme. Two knobs:
|
|
211
|
+
* --layout-matrix-opacity → global faintness of the field. Per-glyph opacity
|
|
212
|
+
* is baked into the SVG mask, so this multiplies it;
|
|
213
|
+
* toned down for dark mode in base/tokens.css so the
|
|
214
|
+
* inverted (near-white) accent never shouts.
|
|
215
|
+
* --layout-matrix-size → the SVG tile period (square). Larger = sparser.
|
|
216
|
+
* --layout-matrix-glow-opacity → brightness of the sparse edge-glow accents
|
|
217
|
+
* (the `::after` lit digits). Sits ABOVE the field
|
|
218
|
+
* opacity so the ~10% lit digits read as a glow;
|
|
219
|
+
* raised in dark mode (base/tokens.css) so the
|
|
220
|
+
* inverted accent actually blooms. */
|
|
221
|
+
--layout-matrix-opacity: 0.26;
|
|
222
|
+
--layout-matrix-size: 240px;
|
|
223
|
+
|
|
224
|
+
/* `circuit` surface — a tileable PCB / circuit-board texture drawn as two
|
|
225
|
+
* mask layers (base/components.css). Two faintness knobs, one per layer:
|
|
226
|
+
* --layout-circuit-opacity → the neutral copper TRACES (--layout-grid-line).
|
|
227
|
+
* Per-trace alpha (ghost/trace/trunk) is baked
|
|
228
|
+
* into the SVG, so this multiplies it. Sits in
|
|
229
|
+
* the dense multi-axis tier (like `honeycomb`),
|
|
230
|
+
* so it matches --layout-grid-line-opacity.
|
|
231
|
+
* --layout-circuit-node-opacity → the accent via NODES / pads (--primary).
|
|
232
|
+
* Toned down for dark mode in base/tokens.css
|
|
233
|
+
* (the inverted near-white accent blooms). Kept
|
|
234
|
+
* a touch above the trace tier so the sparse
|
|
235
|
+
* nodes read as quiet glints, not noise. */
|
|
236
|
+
--layout-circuit-opacity: 0.4;
|
|
237
|
+
--layout-circuit-node-opacity: 0.5;
|
|
238
|
+
--layout-matrix-glow-opacity: 0.55;
|
|
239
|
+
|
|
240
|
+
--overlay-backdrop: 0 0% 3.9% / 0.5;
|
|
241
|
+
--overlay-backdrop-strong: 0 0% 3.9% / 0.4;
|
|
166
242
|
|
|
167
243
|
--editor-highlight: 48 96% 80%;
|
|
168
244
|
|
|
@@ -184,43 +260,28 @@
|
|
|
184
260
|
--theme-shadow-xl: var(--shadow-xl-base);
|
|
185
261
|
}
|
|
186
262
|
|
|
263
|
+
/* `grid` surface accent tint — applied only where CSS relative color is
|
|
264
|
+
* supported (otherwise the neutral fallback set on :root above stands). Follows
|
|
265
|
+
* the accent hue+saturation (from --accent-foreground) at the grid's own
|
|
266
|
+
* lightness (--layout-grid-l, per-mode), so brightness is unchanged while the
|
|
267
|
+
* tint tracks the theme-color. --layout-grid-l is per-mode, so this single rule
|
|
268
|
+
* covers light + dark. */
|
|
269
|
+
@supports (color: hsl(from white h s l)) {
|
|
270
|
+
:root {
|
|
271
|
+
--layout-grid-color: hsl(
|
|
272
|
+
from hsl(var(--accent-foreground)) h s var(--layout-grid-l) /
|
|
273
|
+
var(--layout-grid-line-opacity)
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
187
278
|
:root,
|
|
188
279
|
[data-mode='light'] {
|
|
189
280
|
color-scheme: light;
|
|
190
|
-
|
|
191
|
-
--background: 0 0% 100%;
|
|
192
|
-
--foreground: 240 10% 3.9%;
|
|
193
|
-
|
|
194
|
-
--card: 0 0% 100%;
|
|
195
|
-
--card-foreground: 240 10% 3.9%;
|
|
196
|
-
|
|
197
|
-
--popover: 0 0% 100%;
|
|
198
|
-
--popover-foreground: 240 10% 3.9%;
|
|
199
|
-
|
|
200
|
-
--muted: 240 4.8% 95.9%;
|
|
201
|
-
--muted-foreground: 240 3.8% 46.1%;
|
|
202
|
-
|
|
203
|
-
--border: 240 5.9% 90%;
|
|
204
|
-
--input: 240 5.9% 90%;
|
|
205
281
|
}
|
|
206
282
|
|
|
207
283
|
[data-mode='dark'] {
|
|
208
284
|
color-scheme: dark;
|
|
209
|
-
|
|
210
|
-
--background: 240 10% 3.9%;
|
|
211
|
-
--foreground: 0 0% 98%;
|
|
212
|
-
|
|
213
|
-
--card: 240 10% 3.9%;
|
|
214
|
-
--card-foreground: 0 0% 98%;
|
|
215
|
-
|
|
216
|
-
--popover: 240 10% 3.9%;
|
|
217
|
-
--popover-foreground: 0 0% 98%;
|
|
218
|
-
|
|
219
|
-
--muted: 240 3.7% 15.9%;
|
|
220
|
-
--muted-foreground: 240 5% 64.9%;
|
|
221
|
-
|
|
222
|
-
--border: 240 3.7% 15.9%;
|
|
223
|
-
--input: 240 3.7% 15.9%;
|
|
224
285
|
}
|
|
225
286
|
}
|
|
226
287
|
|
|
@@ -238,11 +299,17 @@
|
|
|
238
299
|
--info: 217 91% 60%;
|
|
239
300
|
--info-foreground: 0 0% 100%;
|
|
240
301
|
|
|
302
|
+
/*
|
|
303
|
+
* Chart series palette. --chart-1 follows the selected accent (--primary)
|
|
304
|
+
* so the primary series always reflects the picked theme color; --chart-2..5
|
|
305
|
+
* mirror the shadcn/ui chart palette for distinguishable supporting series.
|
|
306
|
+
* Each stays overridable per-theme via the --theme-chart-* hook.
|
|
307
|
+
*/
|
|
241
308
|
--chart-1: var(--theme-chart-1, var(--primary));
|
|
242
|
-
--chart-2: var(--theme-chart-2,
|
|
243
|
-
--chart-3: var(--theme-chart-3,
|
|
244
|
-
--chart-4: var(--theme-chart-4,
|
|
245
|
-
--chart-5: var(--theme-chart-5,
|
|
309
|
+
--chart-2: var(--theme-chart-2, 173 58% 39%);
|
|
310
|
+
--chart-3: var(--theme-chart-3, 197 37% 24%);
|
|
311
|
+
--chart-4: var(--theme-chart-4, 43 74% 66%);
|
|
312
|
+
--chart-5: var(--theme-chart-5, 27 87% 67%);
|
|
246
313
|
|
|
247
314
|
--sidebar: var(--card);
|
|
248
315
|
--sidebar-background: var(--sidebar);
|
|
@@ -273,10 +340,11 @@
|
|
|
273
340
|
|
|
274
341
|
--editor-highlight: 48 70% 30%;
|
|
275
342
|
|
|
343
|
+
/* Chart palette (dark) — --chart-1 follows --primary; rest track shadcn/ui. */
|
|
276
344
|
--chart-1: var(--theme-chart-1, var(--primary));
|
|
277
|
-
--chart-2: var(--theme-chart-2,
|
|
278
|
-
--chart-3: var(--theme-chart-3,
|
|
279
|
-
--chart-4: var(--theme-chart-4,
|
|
280
|
-
--chart-5: var(--theme-chart-5,
|
|
345
|
+
--chart-2: var(--theme-chart-2, 160 60% 45%);
|
|
346
|
+
--chart-3: var(--theme-chart-3, 30 80% 55%);
|
|
347
|
+
--chart-4: var(--theme-chart-4, 280 65% 60%);
|
|
348
|
+
--chart-5: var(--theme-chart-5, 340 75% 55%);
|
|
281
349
|
}
|
|
282
350
|
}
|
|
@@ -7,39 +7,57 @@
|
|
|
7
7
|
--highlight-border-alpha: 0.7;
|
|
8
8
|
--highlight-background-alpha: 0.7;
|
|
9
9
|
|
|
10
|
-
--background:
|
|
10
|
+
--background: 0 0% 98%;
|
|
11
11
|
--surface: 0 0% 89.8%;
|
|
12
|
-
--surface-foreground:
|
|
13
|
-
--foreground:
|
|
12
|
+
--surface-foreground: 0 0% 12%;
|
|
13
|
+
--foreground: 0 0% 12%;
|
|
14
14
|
|
|
15
15
|
--card: 0 0% 100%;
|
|
16
|
-
--card-foreground:
|
|
16
|
+
--card-foreground: 0 0% 12%;
|
|
17
17
|
|
|
18
18
|
--popover: 0 0% 100%;
|
|
19
|
-
--popover-foreground:
|
|
20
|
-
|
|
21
|
-
--muted:
|
|
22
|
-
--muted-foreground:
|
|
23
|
-
|
|
24
|
-
--border:
|
|
25
|
-
--input:
|
|
19
|
+
--popover-foreground: 0 0% 12%;
|
|
20
|
+
|
|
21
|
+
--muted: 0 0% 94%;
|
|
22
|
+
--muted-foreground: 0 0% 38%;
|
|
23
|
+
|
|
24
|
+
--border: 0 0% 82%;
|
|
25
|
+
--input: 0 0% 82%;
|
|
26
|
+
|
|
27
|
+
/* Surface-grid line for the base neutral. Explicit (not var(--border)) so the
|
|
28
|
+
* grid keeps the same ~16-point lightness gap vs --background that every
|
|
29
|
+
* generated neutral targets — base is no longer a special case. */
|
|
30
|
+
--layout-grid-line: 0 0% 82%;
|
|
31
|
+
/* LIGHTNESS of the `grid` surface lines — used to pin lightness when the grid
|
|
32
|
+
* follows the accent (see --layout-grid-color in base/theme.css), so the tint
|
|
33
|
+
* tracks the theme-color while brightness stays at the current ~82% (light). */
|
|
34
|
+
--layout-grid-l: 82%;
|
|
35
|
+
|
|
36
|
+
/* `grid-line` surface highlight LIGHTNESS. The glow now FOLLOWS the accent:
|
|
37
|
+
* the surface paints with the accent hue+saturation (from --accent-foreground,
|
|
38
|
+
* via CSS relative color in base/components.css) but pins lightness to this
|
|
39
|
+
* value, so the brightness stays exactly as before while the tint tracks the
|
|
40
|
+
* active theme-color. Medium-dark in light mode so the mosaic reads as soft
|
|
41
|
+
* darker lines on a light surface; inverts to near-white in dark (dark block).
|
|
42
|
+
* Global faintness lives in --layout-grid-highlight-opacity (base/theme.css). */
|
|
43
|
+
--layout-grid-highlight-l: 45%;
|
|
26
44
|
|
|
27
45
|
/* Base accent = near-black neutral (FluxUI "base"); inverts to near-white in
|
|
28
46
|
* dark mode (see :root[data-mode='dark'] below). Accent palettes
|
|
29
47
|
* (theme-color) override these at higher specificity. */
|
|
30
|
-
--primary:
|
|
48
|
+
--primary: 0 0% 10%;
|
|
31
49
|
--primary-foreground: 0 0% 100%;
|
|
32
|
-
--accent:
|
|
33
|
-
--accent-foreground:
|
|
34
|
-
--secondary:
|
|
35
|
-
--secondary-foreground:
|
|
36
|
-
--ring:
|
|
50
|
+
--accent: 0 0% 95%;
|
|
51
|
+
--accent-foreground: 0 0% 14%;
|
|
52
|
+
--secondary: 0 0% 95%;
|
|
53
|
+
--secondary-foreground: 0 0% 18%;
|
|
54
|
+
--ring: 0 0% 16%;
|
|
37
55
|
|
|
38
56
|
/* Brand identity color — set by the consumer via ThemeBrandService
|
|
39
57
|
* (provideUiTheme({ brand }) or setBrand()). Concrete (not var(--primary))
|
|
40
58
|
* so the theme-color='brand' preset never forms a var() cycle. Defaults to
|
|
41
59
|
* the base accent and inverts in dark mode. */
|
|
42
|
-
--brand:
|
|
60
|
+
--brand: 0 0% 10%;
|
|
43
61
|
--brand-foreground: 0 0% 100%;
|
|
44
62
|
|
|
45
63
|
--radius-base: 0.625rem;
|
|
@@ -53,17 +71,17 @@
|
|
|
53
71
|
* --shadow-* — the Tailwind @theme mapping re-emits
|
|
54
72
|
* --shadow-*: var(--theme-shadow-*) in the later `theme` layer, which
|
|
55
73
|
* turns that into a var() cycle and invalidates both tokens. */
|
|
56
|
-
--shadow-base: 0 1px 0 0 hsl(
|
|
57
|
-
--shadow-md-base: 0 8px 18px -14px hsl(
|
|
58
|
-
--shadow-lg-base: 0 18px 36px -28px hsl(
|
|
59
|
-
--shadow-xl-base: 0 24px 48px -36px hsl(
|
|
74
|
+
--shadow-base: 0 1px 0 0 hsl(0 0% 12% / 0.08);
|
|
75
|
+
--shadow-md-base: 0 8px 18px -14px hsl(0 0% 12% / 0.24);
|
|
76
|
+
--shadow-lg-base: 0 18px 36px -28px hsl(0 0% 12% / 0.34);
|
|
77
|
+
--shadow-xl-base: 0 24px 48px -36px hsl(0 0% 12% / 0.4);
|
|
60
78
|
--shadow-sm: var(--shadow-base);
|
|
61
79
|
--shadow-md: var(--shadow-md-base);
|
|
62
80
|
--shadow-lg: var(--shadow-lg-base);
|
|
63
81
|
--shadow-xl: var(--shadow-xl-base);
|
|
64
82
|
|
|
65
83
|
--theme-shadow-sm: var(--shadow-base);
|
|
66
|
-
--theme-shadow: 0 2px 4px -2px hsl(
|
|
84
|
+
--theme-shadow: 0 2px 4px -2px hsl(0 0% 12% / 0.14);
|
|
67
85
|
--theme-shadow-md: var(--shadow-md-base);
|
|
68
86
|
--theme-shadow-lg: var(--shadow-lg-base);
|
|
69
87
|
--theme-shadow-xl: var(--shadow-xl-base);
|
|
@@ -80,21 +98,28 @@
|
|
|
80
98
|
--line-height-base: 1.5;
|
|
81
99
|
--control-height-base: 2.25rem;
|
|
82
100
|
--nav-font-family: var(--font-sans);
|
|
83
|
-
|
|
84
|
-
--nav-text-
|
|
101
|
+
/* Item labels — the nav baseline tier (14px, snug line-height). */
|
|
102
|
+
--nav-text-size: var(--text-sm);
|
|
103
|
+
--nav-text-line-height: var(--text-sm--line-height);
|
|
85
104
|
--nav-heading-font-family: var(--font-sans);
|
|
86
|
-
|
|
87
|
-
|
|
105
|
+
/* Section/group headings — a distinct micro-label tier *below* item labels:
|
|
106
|
+
* smaller (11px), uppercase, heavier weight, restrained tracking. Keeping it
|
|
107
|
+
* smaller than --nav-text-size is what gives the sidebar a clear hierarchy. */
|
|
108
|
+
--nav-heading-size: var(--text-2xs-plus);
|
|
109
|
+
--nav-heading-line-height: var(--text-2xs-plus--line-height);
|
|
88
110
|
--nav-heading-weight: 600;
|
|
89
|
-
--nav-heading-letter-spacing: 0.
|
|
111
|
+
--nav-heading-letter-spacing: 0.08em;
|
|
90
112
|
--nav-badge-font-family: var(--font-sans);
|
|
91
|
-
|
|
92
|
-
--nav-badge-
|
|
113
|
+
/* Badges/counters — compact pill tier (11px), aligned with the heading tier. */
|
|
114
|
+
--nav-badge-size: var(--text-2xs-plus);
|
|
115
|
+
--nav-badge-line-height: var(--text-2xs-plus--line-height);
|
|
93
116
|
--nav-badge-weight: 500;
|
|
94
117
|
--letter-spacing: 0;
|
|
95
118
|
--spacing-base: 0.25rem;
|
|
96
119
|
--space-unit: var(--spacing-base);
|
|
97
|
-
|
|
120
|
+
/* Matches the actual shell bar height (h-12 = 3rem) used by the navigation
|
|
121
|
+
* header/footer/navbar and page header/footer. */
|
|
122
|
+
--layout-topbar-height: 3rem;
|
|
98
123
|
|
|
99
124
|
--layout-shell-padding: clamp(1rem, 2vw, 2rem);
|
|
100
125
|
--layout-frame-radius: var(--radius-lg);
|
|
@@ -114,36 +139,61 @@
|
|
|
114
139
|
--highlight-border-alpha: 0.45;
|
|
115
140
|
--highlight-background-alpha: 0.55;
|
|
116
141
|
|
|
117
|
-
--background:
|
|
118
|
-
--surface:
|
|
119
|
-
--surface-foreground:
|
|
120
|
-
--foreground:
|
|
142
|
+
--background: 0 0% 9%;
|
|
143
|
+
--surface: 0 0% 18%;
|
|
144
|
+
--surface-foreground: 0 0% 96%;
|
|
145
|
+
--foreground: 0 0% 96%;
|
|
146
|
+
|
|
147
|
+
--card: 0 0% 11%;
|
|
148
|
+
--card-foreground: 0 0% 96%;
|
|
149
|
+
|
|
150
|
+
--popover: 0 0% 11%;
|
|
151
|
+
--popover-foreground: 0 0% 96%;
|
|
152
|
+
|
|
153
|
+
--muted: 0 0% 18%;
|
|
154
|
+
--muted-foreground: 0 0% 70%;
|
|
155
|
+
|
|
156
|
+
--border: 0 0% 24%;
|
|
157
|
+
--input: 0 0% 24%;
|
|
121
158
|
|
|
122
|
-
|
|
123
|
-
--
|
|
159
|
+
/* Surface-grid line for the base neutral (dark). See light block. */
|
|
160
|
+
--layout-grid-line: 0 0% 24%;
|
|
161
|
+
/* `grid` surface line lightness (dark) — see light block. */
|
|
162
|
+
--layout-grid-l: 24%;
|
|
124
163
|
|
|
125
|
-
|
|
126
|
-
|
|
164
|
+
/* `grid-line` highlight lightness inverts to near-white so the glow squares
|
|
165
|
+
* read bright on the dark surface, matching the dark mosaic reference; the
|
|
166
|
+
* accent hue is mixed in via relative color (see light block). */
|
|
167
|
+
--layout-grid-highlight-l: 88%;
|
|
127
168
|
|
|
128
|
-
--
|
|
129
|
-
|
|
169
|
+
/* `matrix` is tinted with --primary, which inverts to near-white on dark
|
|
170
|
+
* — so tone the field down here to keep it as faint behind content as it is in
|
|
171
|
+
* light mode (see --layout-matrix-opacity in base/theme.css). The edge-glow
|
|
172
|
+
* accents are raised instead: near-white on near-black actually blooms, so the
|
|
173
|
+
* lit digits read as a glow against the dark surface. */
|
|
174
|
+
--layout-matrix-opacity: 0.19;
|
|
175
|
+
--layout-matrix-glow-opacity: 0.7;
|
|
130
176
|
|
|
131
|
-
--
|
|
132
|
-
|
|
177
|
+
/* `circuit` via nodes are tinted with --primary, which inverts to near-white
|
|
178
|
+
* on dark and blooms — so tone the node layer down here to keep the glints as
|
|
179
|
+
* quiet as they are in light mode (same treatment as --layout-matrix-opacity).
|
|
180
|
+
* The neutral traces use --layout-grid-line (already per-mode), so they need
|
|
181
|
+
* no dark override. */
|
|
182
|
+
--layout-circuit-node-opacity: 0.4;
|
|
133
183
|
|
|
134
184
|
/* Base accent inverts: near-white primary on dark. */
|
|
135
185
|
--primary: 0 0% 98%;
|
|
136
|
-
--primary-foreground:
|
|
137
|
-
--accent:
|
|
186
|
+
--primary-foreground: 0 0% 12%;
|
|
187
|
+
--accent: 0 0% 16%;
|
|
138
188
|
--accent-foreground: 0 0% 98%;
|
|
139
|
-
--secondary:
|
|
189
|
+
--secondary: 0 0% 18%;
|
|
140
190
|
--secondary-foreground: 0 0% 96%;
|
|
141
191
|
--ring: 0 0% 85%;
|
|
142
192
|
|
|
143
193
|
--brand: 0 0% 98%;
|
|
144
|
-
--brand-foreground:
|
|
194
|
+
--brand-foreground: 0 0% 12%;
|
|
145
195
|
|
|
146
|
-
--shadow-base: 0 1px 0 0 hsl(
|
|
196
|
+
--shadow-base: 0 1px 0 0 hsl(0 0% 96% / 0.08);
|
|
147
197
|
--shadow-sm: var(--shadow-base);
|
|
148
198
|
--theme-shadow-sm: var(--shadow-base);
|
|
149
199
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 38 18% 40%;
|
|
16
16
|
--border: 38 28% 87%;
|
|
17
17
|
--input: 38 28% 87%;
|
|
18
|
+
--layout-grid-line: 38 28% 82%;
|
|
18
19
|
--primary: 38 92% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 12%;
|
|
20
21
|
--accent: 38 55% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 38 18% 64%;
|
|
39
40
|
--border: 38 23% 18%;
|
|
40
41
|
--input: 38 23% 18%;
|
|
42
|
+
--layout-grid-line: 38 23% 23%;
|
|
41
43
|
--primary: 38 92% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 10%;
|
|
43
45
|
--accent: 38 46% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 221 17% 40%;
|
|
16
16
|
--border: 221 25% 87%;
|
|
17
17
|
--input: 221 25% 87%;
|
|
18
|
+
--layout-grid-line: 221 25% 82%;
|
|
18
19
|
--primary: 221 83% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 221 50% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 221 17% 64%;
|
|
39
40
|
--border: 221 21% 18%;
|
|
40
41
|
--input: 221 21% 18%;
|
|
42
|
+
--layout-grid-line: 221 21% 23%;
|
|
41
43
|
--primary: 221 83% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 221 42% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 191 17% 40%;
|
|
16
16
|
--border: 191 26% 87%;
|
|
17
17
|
--input: 191 26% 87%;
|
|
18
|
+
--layout-grid-line: 191 26% 82%;
|
|
18
19
|
--primary: 191 85% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 191 51% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 191 17% 64%;
|
|
39
40
|
--border: 191 21% 18%;
|
|
40
41
|
--input: 191 21% 18%;
|
|
42
|
+
--layout-grid-line: 191 21% 23%;
|
|
41
43
|
--primary: 191 85% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 191 43% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 160 16% 40%;
|
|
16
16
|
--border: 160 23% 87%;
|
|
17
17
|
--input: 160 23% 87%;
|
|
18
|
+
--layout-grid-line: 160 23% 82%;
|
|
18
19
|
--primary: 160 78% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 160 47% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 160 16% 64%;
|
|
39
40
|
--border: 160 20% 18%;
|
|
40
41
|
--input: 160 20% 18%;
|
|
42
|
+
--layout-grid-line: 160 20% 23%;
|
|
41
43
|
--primary: 160 78% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 160 39% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 292 16% 40%;
|
|
16
16
|
--border: 292 24% 87%;
|
|
17
17
|
--input: 292 24% 87%;
|
|
18
|
+
--layout-grid-line: 292 24% 82%;
|
|
18
19
|
--primary: 292 80% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 292 48% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 292 16% 64%;
|
|
39
40
|
--border: 292 20% 18%;
|
|
40
41
|
--input: 292 20% 18%;
|
|
42
|
+
--layout-grid-line: 292 20% 23%;
|
|
41
43
|
--primary: 292 80% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 292 40% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 142 14% 40%;
|
|
16
16
|
--border: 142 21% 87%;
|
|
17
17
|
--input: 142 21% 87%;
|
|
18
|
+
--layout-grid-line: 142 21% 82%;
|
|
18
19
|
--primary: 142 69% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 142 41% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 142 14% 64%;
|
|
39
40
|
--border: 142 17% 18%;
|
|
40
41
|
--input: 142 17% 18%;
|
|
42
|
+
--layout-grid-line: 142 17% 23%;
|
|
41
43
|
--primary: 142 69% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 142 35% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 239 16% 40%;
|
|
16
16
|
--border: 239 23% 87%;
|
|
17
17
|
--input: 239 23% 87%;
|
|
18
|
+
--layout-grid-line: 239 23% 82%;
|
|
18
19
|
--primary: 239 78% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 239 47% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 239 16% 64%;
|
|
39
40
|
--border: 239 20% 18%;
|
|
40
41
|
--input: 239 20% 18%;
|
|
42
|
+
--layout-grid-line: 239 20% 23%;
|
|
41
43
|
--primary: 239 78% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 239 39% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 84 16% 40%;
|
|
16
16
|
--border: 84 23% 87%;
|
|
17
17
|
--input: 84 23% 87%;
|
|
18
|
+
--layout-grid-line: 84 23% 82%;
|
|
18
19
|
--primary: 84 78% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 12%;
|
|
20
21
|
--accent: 84 47% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 84 16% 64%;
|
|
39
40
|
--border: 84 20% 18%;
|
|
40
41
|
--input: 84 20% 18%;
|
|
42
|
+
--layout-grid-line: 84 20% 23%;
|
|
41
43
|
--primary: 84 78% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 10%;
|
|
43
45
|
--accent: 84 39% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 24 19% 40%;
|
|
16
16
|
--border: 24 29% 87%;
|
|
17
17
|
--input: 24 29% 87%;
|
|
18
|
+
--layout-grid-line: 24 29% 82%;
|
|
18
19
|
--primary: 24 95% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 24 57% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 24 19% 64%;
|
|
39
40
|
--border: 24 24% 18%;
|
|
40
41
|
--input: 24 24% 18%;
|
|
42
|
+
--layout-grid-line: 24 24% 23%;
|
|
41
43
|
--primary: 24 95% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 24 48% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 330 16% 40%;
|
|
16
16
|
--border: 330 23% 87%;
|
|
17
17
|
--input: 330 23% 87%;
|
|
18
|
+
--layout-grid-line: 330 23% 82%;
|
|
18
19
|
--primary: 330 78% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 330 47% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 330 16% 64%;
|
|
39
40
|
--border: 330 20% 18%;
|
|
40
41
|
--input: 330 20% 18%;
|
|
42
|
+
--layout-grid-line: 330 20% 23%;
|
|
41
43
|
--primary: 330 78% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 330 39% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 271 16% 40%;
|
|
16
16
|
--border: 271 24% 87%;
|
|
17
17
|
--input: 271 24% 87%;
|
|
18
|
+
--layout-grid-line: 271 24% 82%;
|
|
18
19
|
--primary: 271 81% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 271 49% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 271 16% 64%;
|
|
39
40
|
--border: 271 20% 18%;
|
|
40
41
|
--input: 271 20% 18%;
|
|
42
|
+
--layout-grid-line: 271 20% 23%;
|
|
41
43
|
--primary: 271 81% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 271 41% 18%;
|
package/styles/css/color/red.css
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 0 14% 40%;
|
|
16
16
|
--border: 0 22% 87%;
|
|
17
17
|
--input: 0 22% 87%;
|
|
18
|
+
--layout-grid-line: 0 22% 82%;
|
|
18
19
|
--primary: 0 72% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 0 43% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 0 14% 64%;
|
|
39
40
|
--border: 0 18% 18%;
|
|
40
41
|
--input: 0 18% 18%;
|
|
42
|
+
--layout-grid-line: 0 18% 23%;
|
|
41
43
|
--primary: 0 72% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 0 36% 18%;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 349 17% 40%;
|
|
16
16
|
--border: 349 25% 87%;
|
|
17
17
|
--input: 349 25% 87%;
|
|
18
|
+
--layout-grid-line: 349 25% 82%;
|
|
18
19
|
--primary: 349 84% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 349 50% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 349 17% 64%;
|
|
39
40
|
--border: 349 21% 18%;
|
|
40
41
|
--input: 349 21% 18%;
|
|
42
|
+
--layout-grid-line: 349 21% 23%;
|
|
41
43
|
--primary: 349 84% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 349 42% 18%;
|
package/styles/css/color/sky.css
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
--muted-foreground: 199 18% 40%;
|
|
16
16
|
--border: 199 27% 87%;
|
|
17
17
|
--input: 199 27% 87%;
|
|
18
|
+
--layout-grid-line: 199 27% 82%;
|
|
18
19
|
--primary: 199 89% 48%;
|
|
19
20
|
--primary-foreground: 0 0% 100%;
|
|
20
21
|
--accent: 199 53% 94%;
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
--muted-foreground: 199 18% 64%;
|
|
39
40
|
--border: 199 22% 18%;
|
|
40
41
|
--input: 199 22% 18%;
|
|
42
|
+
--layout-grid-line: 199 22% 23%;
|
|
41
43
|
--primary: 199 89% 58%;
|
|
42
44
|
--primary-foreground: 0 0% 100%;
|
|
43
45
|
--accent: 199 45% 18%;
|