@nadicodeai/design-system 0.5.1 → 0.5.2

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/AGENTS.md CHANGED
@@ -41,7 +41,7 @@ Generated-artifact and runtime-JS prohibitions live in the Forbidden Patterns ta
41
41
  | --- | --- | --- | --- |
42
42
  | Design token, contract, or token-pipeline change | `DESIGN.md`, `scripts/sd/config.ts`, `scripts/sd/transforms.ts`, `scripts/sd/format-token-layer.ts`, `scripts/sd/format-tailwind-v4-theme.ts` | `npm exec -- design.md spec`, `scripts/build.ts`, `tests/token-structural-parity.test.ts`, `tests/consumer-css-discipline.test.ts`, `tests/tailwind-v4-theme.test.ts` | `npm run lint:design && npm run build && npm run test` |
43
43
  | Kernel geometry or component work | `DESIGN.md` Layout and Components | `src/css/index.css`, `src/css/layout.css`, `src/css/primitives.css`, `src/css/components/*.css`, `src/css/motion.css`, `tests/kernel-css-architecture.test.ts`, `tests/kernel-rendered-geometry.test.ts` | from design-system/: `npx vitest run tests/kernel-css-architecture.test.ts tests/kernel-rendered-geometry.test.ts` |
44
- | CSS component or `examples/` specimen work | `DESIGN.md` Layout and Components | `src/css/components/`, `examples/`, `../skills/nadicodeai-brand-copy/SKILL.md`, `../skills/nadicodeai-brand-copy/references/brand-voice-profile.md`, `../skills/nadicodeai-brand-copy/references/voice-examples.md`, `../skills/nadicodeai-brand-copy/references/anti-slop-patterns.md` | `npm run test -- tests/examples-package-coherence.test.ts` |
44
+ | CSS component or `examples/` specimen work | `DESIGN.md` Layout and Components | `src/css/components/`, `examples/`, `../skills/nadicodeai-brand-copy/SKILL.md`, `../skills/nadicodeai-brand-copy/references/writing-craft.md`, `../skills/nadicodeai-brand-copy/references/brand-voice-profile.md`, `../skills/nadicodeai-brand-copy/references/voice-examples.md` | `npm run test -- tests/examples-package-coherence.test.ts` |
45
45
  | Package consumption or export surface | `README.md` | `package.json`, `scripts/build.ts`, `dist/tailwind/`, `dist/tokens/` | `npm run build && npm run test -- tests/build-produces-exports.test.ts tests/tailwind-v4-theme.test.ts` |
46
46
 
47
47
  ## DESIGN.md Authoring
package/DESIGN.md CHANGED
@@ -137,6 +137,10 @@ colors:
137
137
  dark-selection-fg: "#0a0a0a"
138
138
  dark-cross: "#6e6e6e"
139
139
  dark-chart-1: "#7d99f2"
140
+ dark-chart-2: "#17b568"
141
+ dark-chart-3: "#ffd97d"
142
+ dark-chart-4: "#f28085"
143
+ dark-chart-5: "#33d1cb"
140
144
  dark-chart-6: "#9575cd"
141
145
 
142
146
  typography:
@@ -493,8 +497,8 @@ Backgrounds are `{colors.background-100}` (page default, white) and `{colors.bac
493
497
 
494
498
  ### Chart categoricals (functional tier)
495
499
 
496
- - **Charts** (`{colors.chart-1}`…`{colors.chart-6}`): the categorical series palette — cobalto, verde, ambra, rosso, plus a functional-only teal and viola. Functional only: never place chart colours on marketing surfaces, campi, or generated imagery. On the dark canvas the deep cobalto and viola drop below the 3:1 WCAG 1.4.11 floor for data marks, so they carry dark-tuned steps (`{colors.dark-chart-1}` on `blue-cobalto-500`, `{colors.dark-chart-6}` a lighter viola); the four mid/high-luminance series (verde, ambra, rosso, teal) already clear 3:1 and stay saturated in both modes.
497
- - **Categorical distinguishability**: the same-family neighbours are held apart — `chart-3`/`chart-4` (ambra/rosso) and `chart-2`/`chart-5` (verde/teal) each clear a CIEDE2000 ≥ 20 normal / ≥ 15 deuteranopia-simulated floor. Two proximities are brand-locked and exempt from the numeric floor: `chart-2`/`chart-4` (verde/rosso, the flag pair, which collapses under red-green deficiency by identity) and `chart-1`/`chart-6` (cobalto/viola, adjacent blue-violet). Charts using the full six must carry redundant encoding (direct labels, position, or pattern), never hue alone, so these two pairs stay readable under colour-vision deficiency.
500
+ - **Charts** (`{colors.chart-1}`…`{colors.chart-6}`): the categorical series palette — cobalto, verde, ambra, rosso, plus a functional-only teal and viola. Functional only: never place chart colours on marketing surfaces, campi, or generated imagery. On the dark canvas all six series carry dark-tuned steps, remapped in the `.dark` scope so any consumer reading the semantic token gets the right hue in both modes: `{colors.dark-chart-1}` on `blue-cobalto-500`, `{colors.dark-chart-2}` on `green-italia-600`, `{colors.dark-chart-3}` on `amber-400`, `{colors.dark-chart-4}` on `red-italia-500`, `{colors.dark-chart-5}` on the `dark-cyan` value, `{colors.dark-chart-6}` a lighter viola. Clearing the 3:1 WCAG 1.4.11 data-mark floor is necessary but not sufficient on the near-black canvas: the full-saturation light hues read as loud saturated blocks there, so each dark step lightens or desaturates its hue while keeping series identity, and all six clear 3:1 against `{colors.dark-canvas}`. Verde takes the one-step move to `green-italia-600` (not the mint `green-italia-500`) so the verde/teal separation survives in normal vision.
501
+ - **Categorical distinguishability**: the same-family neighbours are held apart — `chart-3`/`chart-4` (ambra/rosso) and `chart-2`/`chart-5` (verde/teal) each clear a CIEDE2000 ≥ 20 normal / ≥ 15 deuteranopia-simulated floor, in the light set and in the dark-tuned set alike. Two proximities are brand-locked and exempt from the numeric floor: `chart-2`/`chart-4` (verde/rosso, the flag pair, which collapses under red-green deficiency by identity) and `chart-1`/`chart-6` (cobalto/viola, adjacent blue-violet). Charts using the full six must carry redundant encoding (direct labels, position, or pattern), never hue alone, so these two pairs stay readable under colour-vision deficiency.
498
502
 
499
503
  ### Brand tier — i campi
500
504
 
package/README.md CHANGED
@@ -11,7 +11,7 @@ For Tailwind CSS v4 CSS-first projects, `npm run build` also emits `dist/tailwin
11
11
  @import "@nadicodeai/design-system/tailwind/theme.css";
12
12
  ```
13
13
 
14
- The CSS adapter provides shadcn-compatible semantic utilities such as `bg-background`, `text-foreground`, `bg-primary`, `text-primary-foreground`, `border-border`, and `ring-ring`. It publishes both `:root` light roles and `.dark` dark roles; consuming apps opt into dark mode by applying a `.dark` ancestor, normally through their own theme provider. NadicodeAI-specific spacing utilities are namespaced, for example `p-nadicode-lg` and `h-nadicode-h-cell-sm`, so standard Tailwind/shadcn classes such as `max-w-3xl` keep their normal Tailwind behavior. React consumers normally get this through `@nadicodeai/ui/globals.css`.
14
+ The CSS adapter provides shadcn-compatible semantic utilities such as `bg-background`, `text-foreground`, `bg-primary`, `text-primary-foreground`, `border-border`, and `ring-ring`. It publishes both `:root` light roles and `.dark` dark roles; consuming apps opt into dark mode by applying a `.dark` ancestor, normally through their own theme provider. The raw `--nc-*` brand-token remaps (the state, selection, cross, and chart families) are the one exception: they are emitted at `:root.dark`, so they flip only when the `dark` class sits on the root element itself (the next-themes `attribute="class"` default), not on an inner wrapper. NadicodeAI-specific spacing utilities are namespaced, for example `p-nadicode-lg` and `h-nadicode-h-cell-sm`, so standard Tailwind/shadcn classes such as `max-w-3xl` keep their normal Tailwind behavior. React consumers normally get this through `@nadicodeai/ui/globals.css`.
15
15
 
16
16
  Geist and Geist Mono (SIL Open Font License 1.1) ship inside the package under `src/assets/fonts/`. Consumers can pull the `@font-face` shim directly:
17
17
 
@@ -36,7 +36,7 @@
36
36
  * dark-grounded, not a light chip on the dark canvas. Scoped to the component
37
37
  * because canvas/ink/line are global neutrals that must not be remapped in the
38
38
  * unscoped .dark block. The variant state colors flip separately via the
39
- * generated .dark --nc-state-* remap in the Tailwind theme map. Direct
39
+ * generated :root.dark --nc-state-* remap in the Tailwind theme map. Direct
40
40
  * counterparts: the tag stays a canvas-grounded chip in both themes.
41
41
  */
42
42
  .dark .nc-state-tag {
@@ -134,6 +134,10 @@
134
134
  --nc-dark-selection-fg: #0a0a0a;
135
135
  --nc-dark-cross: #6e6e6e;
136
136
  --nc-dark-chart-1: #7d99f2;
137
+ --nc-dark-chart-2: #17b568;
138
+ --nc-dark-chart-3: #ffd97d;
139
+ --nc-dark-chart-4: #f28085;
140
+ --nc-dark-chart-5: #33d1cb;
137
141
  --nc-dark-chart-6: #9575cd;
138
142
 
139
143
  /* Spacing */
@@ -131,6 +131,10 @@
131
131
  "dark-selection-fg": "#0a0a0a",
132
132
  "dark-cross": "#6e6e6e",
133
133
  "dark-chart-1": "#7d99f2",
134
+ "dark-chart-2": "#17b568",
135
+ "dark-chart-3": "#ffd97d",
136
+ "dark-chart-4": "#f28085",
137
+ "dark-chart-5": "#33d1cb",
134
138
  "dark-chart-6": "#9575cd"
135
139
  },
136
140
  "fontFamily": {
@@ -60,10 +60,10 @@
60
60
  --input: var(--color-dark-input);
61
61
  --ring: var(--color-dark-link);
62
62
  --chart-1: var(--color-dark-chart-1);
63
- --chart-2: var(--color-nadicode-chart-2);
64
- --chart-3: var(--color-nadicode-chart-3);
65
- --chart-4: var(--color-nadicode-chart-4);
66
- --chart-5: var(--color-nadicode-chart-5);
63
+ --chart-2: var(--color-dark-chart-2);
64
+ --chart-3: var(--color-dark-chart-3);
65
+ --chart-4: var(--color-dark-chart-4);
66
+ --chart-5: var(--color-dark-chart-5);
67
67
  --sidebar: var(--color-dark-canvas);
68
68
  --sidebar-foreground: var(--color-dark-ink);
69
69
  --sidebar-primary: var(--color-dark-primary);
@@ -72,6 +72,9 @@
72
72
  --sidebar-accent-foreground: var(--color-dark-ink);
73
73
  --sidebar-border: var(--color-dark-line);
74
74
  --sidebar-ring: var(--color-dark-link);
75
+ }
76
+
77
+ :root.dark {
75
78
  --nc-state-ready: var(--nc-dark-state-ready);
76
79
  --nc-state-running: var(--nc-dark-state-running);
77
80
  --nc-state-review: var(--nc-dark-state-review);
@@ -80,6 +83,12 @@
80
83
  --nc-selection-bg: var(--nc-dark-selection-bg);
81
84
  --nc-selection-fg: var(--nc-dark-selection-fg);
82
85
  --nc-cross: var(--nc-dark-cross);
86
+ --nc-chart-1: var(--nc-dark-chart-1);
87
+ --nc-chart-2: var(--nc-dark-chart-2);
88
+ --nc-chart-3: var(--nc-dark-chart-3);
89
+ --nc-chart-4: var(--nc-dark-chart-4);
90
+ --nc-chart-5: var(--nc-dark-chart-5);
91
+ --nc-chart-6: var(--nc-dark-chart-6);
83
92
  }
84
93
 
85
94
  :root {
@@ -276,6 +285,10 @@
276
285
  --color-dark-selection-fg: #0a0a0a;
277
286
  --color-dark-cross: #6e6e6e;
278
287
  --color-dark-chart-1: #7d99f2;
288
+ --color-dark-chart-2: #17b568;
289
+ --color-dark-chart-3: #ffd97d;
290
+ --color-dark-chart-4: #f28085;
291
+ --color-dark-chart-5: #33d1cb;
279
292
  --color-dark-chart-6: #9575cd;
280
293
  --color-nadicode-muted: #888888;
281
294
  --color-nadicode-primary: #008c45;
@@ -1423,6 +1423,50 @@
1423
1423
  "hex": "#7d99f2"
1424
1424
  }
1425
1425
  },
1426
+ "dark-chart-2": {
1427
+ "$value": {
1428
+ "colorSpace": "srgb",
1429
+ "components": [
1430
+ 0.09,
1431
+ 0.71,
1432
+ 0.408
1433
+ ],
1434
+ "hex": "#17b568"
1435
+ }
1436
+ },
1437
+ "dark-chart-3": {
1438
+ "$value": {
1439
+ "colorSpace": "srgb",
1440
+ "components": [
1441
+ 1,
1442
+ 0.851,
1443
+ 0.49
1444
+ ],
1445
+ "hex": "#ffd97d"
1446
+ }
1447
+ },
1448
+ "dark-chart-4": {
1449
+ "$value": {
1450
+ "colorSpace": "srgb",
1451
+ "components": [
1452
+ 0.949,
1453
+ 0.502,
1454
+ 0.522
1455
+ ],
1456
+ "hex": "#f28085"
1457
+ }
1458
+ },
1459
+ "dark-chart-5": {
1460
+ "$value": {
1461
+ "colorSpace": "srgb",
1462
+ "components": [
1463
+ 0.2,
1464
+ 0.82,
1465
+ 0.796
1466
+ ],
1467
+ "hex": "#33d1cb"
1468
+ }
1469
+ },
1426
1470
  "dark-chart-6": {
1427
1471
  "$value": {
1428
1472
  "colorSpace": "srgb",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/design-system",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
Binary file