@neasg/design-system 0.4.12 → 0.4.13

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 CHANGED
@@ -64,9 +64,151 @@ const config: Config = {
64
64
  export default config;
65
65
  ```
66
66
 
67
- Theme tokens are provided through the exported stylesheet. The default root font
68
- size is 12.5px. If you want to change the package base font size, override
69
- `--font-size-root` after importing the stylesheet:
67
+ Theme tokens are provided through the exported stylesheet. Light mode is the
68
+ default; apply the `dark` class to an app root to render the dark palette:
69
+
70
+ ```tsx
71
+ <html className={isDarkMode ? "dark" : undefined}>
72
+ <body>...</body>
73
+ </html>
74
+ ```
75
+
76
+ Systems that need to inspect or mirror the dark palette can import the token
77
+ mapping from the root package:
78
+
79
+ ```ts
80
+ import {
81
+ darkThemeTokenMapping,
82
+ neaDarkNeutralPalette,
83
+ neaDarkNeutralTokenMapping,
84
+ neaPalette,
85
+ neaPaletteDarkTokenMapping,
86
+ semanticColorTokens,
87
+ } from "@neasg/design-system";
88
+ ```
89
+
90
+ `darkThemeTokenMapping` mirrors the `.dark` declarations in the package
91
+ stylesheet. `neaDarkNeutralTokenMapping` contains the raw dark neutral HSL
92
+ values. `neaDarkNeutralPalette` lists the dark neutral token names and is also
93
+ available as `neaPalette.darkNeutral`. `neaPaletteDarkTokenMapping` contains
94
+ the dark counterpart for every raw palette token.
95
+
96
+ For badges, status chips, and other token-driven UI, use `semanticColorTokens`.
97
+ Each semantic color token carries its direct dark mapping:
98
+
99
+ ```ts
100
+ const statusSuccess = semanticColorTokens.find(
101
+ (token) => token.token === "--status-success",
102
+ );
103
+
104
+ statusSuccess?.token; // "--status-success"
105
+ statusSuccess?.foregroundToken; // "--status-success-foreground"
106
+ statusSuccess?.darkValue; // "148 20% 18%"
107
+ statusSuccess?.darkForegroundValue; // "148 28% 62%"
108
+ ```
109
+
110
+ Raw palette entries also carry direct dark mappings:
111
+
112
+ ```ts
113
+ const greenBadge = neaPalette.green.find(
114
+ (token) => token.token === "--nea-green-100",
115
+ );
116
+
117
+ greenBadge?.token; // "--nea-green-100"
118
+ greenBadge?.darkValue; // "145 100% 21%"
119
+ neaPaletteDarkTokenMapping["--nea-green-100"]; // "145 100% 21%"
120
+ ```
121
+
122
+ ```ts
123
+ const neaDarkNeutralTokenMapping = {
124
+ "--nea-dark-neutral-50": "214 18% 92%",
125
+ "--nea-dark-neutral-100": "214 18% 90%",
126
+ "--nea-dark-neutral-200": "215 14% 68%",
127
+ "--nea-dark-neutral-300": "220 10% 16%",
128
+ "--nea-dark-neutral-400": "220 12% 13.5%",
129
+ "--nea-dark-neutral-500": "220 14% 11.5%",
130
+ "--nea-dark-neutral-600": "220 16% 9.5%",
131
+ "--nea-dark-neutral-700": "220 18% 8%",
132
+ "--nea-dark-neutral-800": "220 22% 6.5%",
133
+ } as const;
134
+ ```
135
+
136
+ ```ts
137
+ const darkThemeTokenMapping = {
138
+ "--background": "var(--nea-dark-neutral-300)",
139
+ "--foreground": "var(--nea-dark-neutral-50)",
140
+ "--card": "var(--nea-dark-neutral-300)",
141
+ "--card-foreground": "var(--nea-dark-neutral-50)",
142
+ "--card-border": "220 10% 28%",
143
+ "--popover": "var(--nea-dark-neutral-300)",
144
+ "--popover-foreground": "var(--nea-dark-neutral-50)",
145
+ "--tooltip-background": "var(--nea-dark-neutral-800)",
146
+ "--tooltip-foreground": "var(--nea-dark-neutral-50)",
147
+ "--primary": "148 30% 38%",
148
+ "--primary-foreground": "var(--nea-dark-neutral-50)",
149
+ "--secondary": "var(--nea-dark-neutral-500)",
150
+ "--secondary-foreground": "var(--nea-dark-neutral-100)",
151
+ "--muted": "var(--nea-dark-neutral-500)",
152
+ "--muted-foreground": "var(--nea-dark-neutral-200)",
153
+ "--accent": "var(--nea-dark-neutral-500)",
154
+ "--accent-foreground": "var(--nea-dark-neutral-50)",
155
+ "--destructive": "0 72% 58%",
156
+ "--destructive-foreground": "var(--nea-dark-neutral-50)",
157
+ "--status-success": "148 20% 18%",
158
+ "--status-success-foreground": "148 28% 62%",
159
+ "--status-warning": "38 22% 18%",
160
+ "--status-warning-foreground": "42 42% 64%",
161
+ "--status-info": "214 22% 19%",
162
+ "--status-info-foreground": "214 36% 66%",
163
+ "--status-accent": "263 18% 20%",
164
+ "--status-accent-foreground": "255 34% 68%",
165
+ "--status-destructive": "0 20% 19%",
166
+ "--status-destructive-foreground": "0 42% 66%",
167
+ "--tab-list-background": "var(--table-header-background)",
168
+ "--tab-trigger-foreground": "var(--nea-dark-neutral-200)",
169
+ "--tab-trigger-hover-background": "var(--nea-dark-neutral-400)",
170
+ "--tab-trigger-active-background": "var(--nea-dark-neutral-300)",
171
+ "--tab-trigger-active-foreground": "var(--nea-dark-neutral-50)",
172
+ "--tab-indicator": "var(--primary)",
173
+ "--card-gradient-from": "var(--nea-green-700)",
174
+ "--card-gradient-to": "var(--nea-green-500)",
175
+ "--card-gradient-border": "var(--nea-green-500)",
176
+ "--card-gradient-foreground": "var(--nea-neutral-0)",
177
+ "--layout-chrome-background": "var(--nea-dark-neutral-500)",
178
+ "--layout-shell-background": "var(--layout-chrome-background)",
179
+ "--layout-sidebar-background": "var(--layout-chrome-background)",
180
+ "--layout-sidebar-logo-background": "hsl(var(--nea-neutral-0))",
181
+ "--layout-sidebar-border": "var(--card-border)",
182
+ "--layout-surface-background": "var(--nea-dark-neutral-400)",
183
+ "--layout-workspace-header-background": "var(--nea-dark-neutral-300)",
184
+ "--layout-surface-border": "var(--card-border)",
185
+ "--layout-surface-shadow":
186
+ "0 24px 54px -34px rgb(0 0 0 / 0.64), 0 2px 10px rgb(0 0 0 / 0.26)",
187
+ "--overlay-shadow":
188
+ "0 18px 36px -22px rgb(0 0 0 / 0.58), 0 8px 18px -14px rgb(0 0 0 / 0.34)",
189
+ "--overlay-shadow-strong":
190
+ "0 10px 42px -24px rgb(0 0 0 / 0.68), 0 4px 16px -12px rgb(0 0 0 / 0.42)",
191
+ "--layout-right-panel-background": "var(--layout-surface-background)",
192
+ "--layout-right-panel-border": "220 10% 32%",
193
+ "--layout-right-panel-shadow":
194
+ "-18px 0 36px -28px rgb(0 0 0 / 0.58), -2px 0 12px -8px rgb(0 0 0 / 0.46)",
195
+ "--table-header-background": "var(--nea-dark-neutral-500)",
196
+ "--table-row-striped-background": "var(--nea-dark-neutral-500)",
197
+ "--table-row-warning-background": "var(--nea-dark-neutral-300)",
198
+ "--border": "var(--card-border)",
199
+ "--input": "var(--card-border)",
200
+ "--ring": "148 30% 38%",
201
+ "--component-border": "var(--card-border)",
202
+ "--button-outline-background": "var(--nea-dark-neutral-500)",
203
+ "--button-outline-hover-background": "var(--nea-dark-neutral-400)",
204
+ "--button-outline-border": "var(--component-border)",
205
+ "--tab-list-border": "var(--component-border)",
206
+ "--table-border": "var(--component-border)",
207
+ } as const;
208
+ ```
209
+
210
+ The default root font size is 14px. If you want to change the package base font
211
+ size, override `--font-size-root` after importing the stylesheet:
70
212
 
71
213
  ```css
72
214
  :root {
@@ -88,7 +230,7 @@ const inter = Inter({
88
230
 
89
231
  Use package components before creating app-local UI copies. If a reusable
90
232
  pattern is missing, extract it into the design system instead of duplicating it
91
- locally. This design system is light-theme only.
233
+ locally.
92
234
 
93
235
  ## AI Usage
94
236
 
@@ -135,8 +277,8 @@ Use @neasg/design-system as the source of truth for shared UI.
135
277
  import { Button, Input, Card, Table, Typography } from "@neasg/design-system";
136
278
  - Use the documented props-driven API. Do not build custom compositions from internal primitives.
137
279
  - Use the package theme tokens and Tailwind preset instead of inventing ad hoc colors, spacing, or radius values.
280
+ - Theme switching is driven by the `dark` class. Use the exported `darkThemeTokenMapping`, `semanticColorTokens`, and `neaPaletteDarkTokenMapping` instead of inventing app-local dark-mode colors.
138
281
  - Use Typography for headings, body copy, labels, and captions.
139
- - This design system is light-theme only. Do not generate dark-mode styles, tokens, or examples.
140
282
  - If a needed shared pattern is missing, extract it into @neasg/design-system rather than duplicating it locally.
141
283
  ```
142
284
 
package/dist/index.d.ts CHANGED
@@ -120,7 +120,8 @@ export { PageSection, PageSectionGroup } from "./page-section";
120
120
  export type { PageSectionGroupProps, PageSectionProps } from "./page-section";
121
121
  export { Typography, typographyVariants } from "./typography";
122
122
  export type { TypographyProps } from "./typography";
123
- export { neaPalette, semanticColorTokens, typographyTokens, radiusTokens, spacingTokens, layoutTokens, } from "./theme";
123
+ export { darkThemeTokenMapping, neaDarkNeutralPalette, neaDarkNeutralTokenMapping, neaPalette, neaPaletteDarkTokenMapping, semanticColorTokens, typographyTokens, radiusTokens, spacingTokens, layoutTokens, } from "./theme";
124
+ export type { CssTokenMapping, SemanticColorToken } from "./theme";
124
125
  export { neaDesignSystemContent, neaTailwindPreset, } from "./tailwind-preset";
125
126
  export { Pagination } from "./pagination";
126
127
  export type { PaginationProps } from "./pagination";
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ export { PageLayout, PageLayoutContext, PageLayoutControls, PageLayoutHeader, Pa
62
62
  export { WorkspaceHeader } from "./workspace-header";
63
63
  export { PageSection, PageSectionGroup } from "./page-section";
64
64
  export { Typography, typographyVariants } from "./typography";
65
- export { neaPalette, semanticColorTokens, typographyTokens, radiusTokens, spacingTokens, layoutTokens, } from "./theme";
65
+ export { darkThemeTokenMapping, neaDarkNeutralPalette, neaDarkNeutralTokenMapping, neaPalette, neaPaletteDarkTokenMapping, semanticColorTokens, typographyTokens, radiusTokens, spacingTokens, layoutTokens, } from "./theme";
66
66
  export { neaDesignSystemContent, neaTailwindPreset, } from "./tailwind-preset";
67
67
  export { Pagination } from "./pagination";
68
68
  export { TableToolbar } from "./table-toolbar";
package/dist/styles.css CHANGED
@@ -39,6 +39,22 @@
39
39
  animation: shake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97);
40
40
  }
41
41
 
42
+ .docs-token-swatch-preview {
43
+ background-color: var(--docs-token-swatch-background);
44
+ color: var(--docs-token-swatch-foreground, hsl(var(--foreground)));
45
+ }
46
+
47
+ .dark .docs-token-swatch-preview {
48
+ background-color: var(
49
+ --docs-token-swatch-dark-background,
50
+ var(--docs-token-swatch-background)
51
+ );
52
+ color: var(
53
+ --docs-token-swatch-dark-foreground,
54
+ var(--docs-token-swatch-foreground, hsl(var(--foreground)))
55
+ );
56
+ }
57
+
42
58
  @layer base {
43
59
  :root {
44
60
  --space-0: 0rem;
package/dist/theme.d.ts CHANGED
@@ -1,316 +1,575 @@
1
+ export type CssTokenMapping = Readonly<Record<`--${string}`, string>>;
2
+ export declare const neaPaletteDarkTokenMapping: {
3
+ readonly "--nea-green-50": "146 100% 15%";
4
+ readonly "--nea-green-100": "145 100% 21%";
5
+ readonly "--nea-green-200": "144 100% 27.5%";
6
+ readonly "--nea-green-300": "144 84% 33%";
7
+ readonly "--nea-green-400": "144 66% 40%";
8
+ readonly "--nea-green-500": "144 50% 53%";
9
+ readonly "--nea-green-600": "143 44% 67%";
10
+ readonly "--nea-green-700": "142 45% 80%";
11
+ readonly "--nea-green-800": "141 50% 90%";
12
+ readonly "--nea-green-900": "140 57% 96%";
13
+ readonly "--nea-blue-50": "224 64% 33%";
14
+ readonly "--nea-blue-100": "226 71% 40%";
15
+ readonly "--nea-blue-200": "224 76% 48%";
16
+ readonly "--nea-blue-300": "221 83% 53%";
17
+ readonly "--nea-blue-400": "217 91% 60%";
18
+ readonly "--nea-blue-500": "213 94% 68%";
19
+ readonly "--nea-blue-600": "213 97% 78%";
20
+ readonly "--nea-blue-700": "213 97% 87%";
21
+ readonly "--nea-blue-800": "214 95% 93%";
22
+ readonly "--nea-blue-900": "214 100% 97%";
23
+ readonly "--nea-amber-50": "22 78% 26%";
24
+ readonly "--nea-amber-100": "22 82% 31%";
25
+ readonly "--nea-amber-200": "26 90% 37%";
26
+ readonly "--nea-amber-300": "32 95% 44%";
27
+ readonly "--nea-amber-400": "38 92% 50%";
28
+ readonly "--nea-amber-500": "43 96% 56%";
29
+ readonly "--nea-amber-600": "43 96% 66%";
30
+ readonly "--nea-amber-700": "48 97% 77%";
31
+ readonly "--nea-amber-800": "48 96% 89%";
32
+ readonly "--nea-amber-900": "48 100% 96%";
33
+ readonly "--nea-red-50": "0 63% 31%";
34
+ readonly "--nea-red-100": "0 74% 35%";
35
+ readonly "--nea-red-200": "0 74% 42%";
36
+ readonly "--nea-red-300": "0 72% 51%";
37
+ readonly "--nea-red-400": "0 84% 60%";
38
+ readonly "--nea-red-500": "0 91% 71%";
39
+ readonly "--nea-red-600": "0 94% 82%";
40
+ readonly "--nea-red-700": "0 96% 89%";
41
+ readonly "--nea-red-800": "0 93% 94%";
42
+ readonly "--nea-red-900": "0 86% 97%";
43
+ readonly "--nea-violet-50": "264 69% 35%";
44
+ readonly "--nea-violet-100": "263 70% 42%";
45
+ readonly "--nea-violet-200": "263 84% 50%";
46
+ readonly "--nea-violet-300": "263 89% 60%";
47
+ readonly "--nea-violet-400": "258 90% 66%";
48
+ readonly "--nea-violet-500": "255 92% 76%";
49
+ readonly "--nea-violet-600": "252 95% 85%";
50
+ readonly "--nea-violet-700": "252 96% 90%";
51
+ readonly "--nea-violet-800": "250 100% 97%";
52
+ readonly "--nea-violet-900": "250 100% 98%";
53
+ readonly "--nea-neutral-0": "220 22% 6.5%";
54
+ readonly "--nea-neutral-50": "220 18% 8%";
55
+ readonly "--nea-neutral-100": "220 16% 9.5%";
56
+ readonly "--nea-neutral-200": "220 14% 11.5%";
57
+ readonly "--nea-neutral-300": "220 12% 13.5%";
58
+ readonly "--nea-neutral-400": "220 10% 16%";
59
+ readonly "--nea-neutral-500": "215 14% 68%";
60
+ readonly "--nea-neutral-600": "214 18% 90%";
61
+ readonly "--nea-neutral-700": "214 18% 92%";
62
+ readonly "--nea-neutral-800": "214 18% 92%";
63
+ readonly "--nea-neutral-900": "214 18% 92%";
64
+ readonly "--nea-dark-neutral-50": "214 18% 92%";
65
+ readonly "--nea-dark-neutral-100": "214 18% 90%";
66
+ readonly "--nea-dark-neutral-200": "215 14% 68%";
67
+ readonly "--nea-dark-neutral-300": "220 10% 16%";
68
+ readonly "--nea-dark-neutral-400": "220 12% 13.5%";
69
+ readonly "--nea-dark-neutral-500": "220 14% 11.5%";
70
+ readonly "--nea-dark-neutral-600": "220 16% 9.5%";
71
+ readonly "--nea-dark-neutral-700": "220 18% 8%";
72
+ readonly "--nea-dark-neutral-800": "220 22% 6.5%";
73
+ };
74
+ export declare const neaDarkNeutralTokenMapping: {
75
+ readonly "--nea-dark-neutral-50": "214 18% 92%";
76
+ readonly "--nea-dark-neutral-100": "214 18% 90%";
77
+ readonly "--nea-dark-neutral-200": "215 14% 68%";
78
+ readonly "--nea-dark-neutral-300": "220 10% 16%";
79
+ readonly "--nea-dark-neutral-400": "220 12% 13.5%";
80
+ readonly "--nea-dark-neutral-500": "220 14% 11.5%";
81
+ readonly "--nea-dark-neutral-600": "220 16% 9.5%";
82
+ readonly "--nea-dark-neutral-700": "220 18% 8%";
83
+ readonly "--nea-dark-neutral-800": "220 22% 6.5%";
84
+ };
85
+ export declare const neaDarkNeutralPalette: readonly (({
86
+ readonly name: "Dark Neutral 50";
87
+ readonly token: "--nea-dark-neutral-50";
88
+ } | {
89
+ readonly name: "Dark Neutral 100";
90
+ readonly token: "--nea-dark-neutral-100";
91
+ } | {
92
+ readonly name: "Dark Neutral 200";
93
+ readonly token: "--nea-dark-neutral-200";
94
+ } | {
95
+ readonly name: "Dark Neutral 300";
96
+ readonly token: "--nea-dark-neutral-300";
97
+ } | {
98
+ readonly name: "Dark Neutral 400";
99
+ readonly token: "--nea-dark-neutral-400";
100
+ } | {
101
+ readonly name: "Dark Neutral 500";
102
+ readonly token: "--nea-dark-neutral-500";
103
+ } | {
104
+ readonly name: "Dark Neutral 600";
105
+ readonly token: "--nea-dark-neutral-600";
106
+ } | {
107
+ readonly name: "Dark Neutral 700";
108
+ readonly token: "--nea-dark-neutral-700";
109
+ } | {
110
+ readonly name: "Dark Neutral 800";
111
+ readonly token: "--nea-dark-neutral-800";
112
+ }) & {
113
+ readonly darkValue: string;
114
+ })[];
1
115
  export declare const neaPalette: {
2
- readonly green: readonly [{
116
+ readonly green: readonly (({
3
117
  readonly name: "Green 50";
4
118
  readonly token: "--nea-green-50";
5
- }, {
119
+ } | {
6
120
  readonly name: "Green 100";
7
121
  readonly token: "--nea-green-100";
8
- }, {
122
+ } | {
9
123
  readonly name: "Green 200";
10
124
  readonly token: "--nea-green-200";
11
- }, {
125
+ } | {
12
126
  readonly name: "Green 300";
13
127
  readonly token: "--nea-green-300";
14
- }, {
128
+ } | {
15
129
  readonly name: "Green 400";
16
130
  readonly token: "--nea-green-400";
17
- }, {
131
+ } | {
18
132
  readonly name: "Green 500";
19
133
  readonly token: "--nea-green-500";
20
- }, {
134
+ } | {
21
135
  readonly name: "Green 600";
22
136
  readonly token: "--nea-green-600";
23
- }, {
137
+ } | {
24
138
  readonly name: "Green 700";
25
139
  readonly token: "--nea-green-700";
26
- }, {
140
+ } | {
27
141
  readonly name: "Green 800";
28
142
  readonly token: "--nea-green-800";
29
- }, {
143
+ } | {
30
144
  readonly name: "Green 900";
31
145
  readonly token: "--nea-green-900";
32
- }];
33
- readonly blue: readonly [{
146
+ }) & {
147
+ readonly darkValue: string;
148
+ })[];
149
+ readonly blue: readonly (({
34
150
  readonly name: "Blue 50";
35
151
  readonly token: "--nea-blue-50";
36
- }, {
152
+ } | {
37
153
  readonly name: "Blue 100";
38
154
  readonly token: "--nea-blue-100";
39
- }, {
155
+ } | {
40
156
  readonly name: "Blue 200";
41
157
  readonly token: "--nea-blue-200";
42
- }, {
158
+ } | {
43
159
  readonly name: "Blue 300";
44
160
  readonly token: "--nea-blue-300";
45
- }, {
161
+ } | {
46
162
  readonly name: "Blue 400";
47
163
  readonly token: "--nea-blue-400";
48
- }, {
164
+ } | {
49
165
  readonly name: "Blue 500";
50
166
  readonly token: "--nea-blue-500";
51
- }, {
167
+ } | {
52
168
  readonly name: "Blue 600";
53
169
  readonly token: "--nea-blue-600";
54
- }, {
170
+ } | {
55
171
  readonly name: "Blue 700";
56
172
  readonly token: "--nea-blue-700";
57
- }, {
173
+ } | {
58
174
  readonly name: "Blue 800";
59
175
  readonly token: "--nea-blue-800";
60
- }, {
176
+ } | {
61
177
  readonly name: "Blue 900";
62
178
  readonly token: "--nea-blue-900";
63
- }];
64
- readonly amber: readonly [{
179
+ }) & {
180
+ readonly darkValue: string;
181
+ })[];
182
+ readonly amber: readonly (({
65
183
  readonly name: "Amber 50";
66
184
  readonly token: "--nea-amber-50";
67
- }, {
185
+ } | {
68
186
  readonly name: "Amber 100";
69
187
  readonly token: "--nea-amber-100";
70
- }, {
188
+ } | {
71
189
  readonly name: "Amber 200";
72
190
  readonly token: "--nea-amber-200";
73
- }, {
191
+ } | {
74
192
  readonly name: "Amber 300";
75
193
  readonly token: "--nea-amber-300";
76
- }, {
194
+ } | {
77
195
  readonly name: "Amber 400";
78
196
  readonly token: "--nea-amber-400";
79
- }, {
197
+ } | {
80
198
  readonly name: "Amber 500";
81
199
  readonly token: "--nea-amber-500";
82
- }, {
200
+ } | {
83
201
  readonly name: "Amber 600";
84
202
  readonly token: "--nea-amber-600";
85
- }, {
203
+ } | {
86
204
  readonly name: "Amber 700";
87
205
  readonly token: "--nea-amber-700";
88
- }, {
206
+ } | {
89
207
  readonly name: "Amber 800";
90
208
  readonly token: "--nea-amber-800";
91
- }, {
209
+ } | {
92
210
  readonly name: "Amber 900";
93
211
  readonly token: "--nea-amber-900";
94
- }];
95
- readonly red: readonly [{
212
+ }) & {
213
+ readonly darkValue: string;
214
+ })[];
215
+ readonly red: readonly (({
96
216
  readonly name: "Red 50";
97
217
  readonly token: "--nea-red-50";
98
- }, {
218
+ } | {
99
219
  readonly name: "Red 100";
100
220
  readonly token: "--nea-red-100";
101
- }, {
221
+ } | {
102
222
  readonly name: "Red 200";
103
223
  readonly token: "--nea-red-200";
104
- }, {
224
+ } | {
105
225
  readonly name: "Red 300";
106
226
  readonly token: "--nea-red-300";
107
- }, {
227
+ } | {
108
228
  readonly name: "Red 400";
109
229
  readonly token: "--nea-red-400";
110
- }, {
230
+ } | {
111
231
  readonly name: "Red 500";
112
232
  readonly token: "--nea-red-500";
113
- }, {
233
+ } | {
114
234
  readonly name: "Red 600";
115
235
  readonly token: "--nea-red-600";
116
- }, {
236
+ } | {
117
237
  readonly name: "Red 700";
118
238
  readonly token: "--nea-red-700";
119
- }, {
239
+ } | {
120
240
  readonly name: "Red 800";
121
241
  readonly token: "--nea-red-800";
122
- }, {
242
+ } | {
123
243
  readonly name: "Red 900";
124
244
  readonly token: "--nea-red-900";
125
- }];
126
- readonly violet: readonly [{
245
+ }) & {
246
+ readonly darkValue: string;
247
+ })[];
248
+ readonly violet: readonly (({
127
249
  readonly name: "Violet 50";
128
250
  readonly token: "--nea-violet-50";
129
- }, {
251
+ } | {
130
252
  readonly name: "Violet 100";
131
253
  readonly token: "--nea-violet-100";
132
- }, {
254
+ } | {
133
255
  readonly name: "Violet 200";
134
256
  readonly token: "--nea-violet-200";
135
- }, {
257
+ } | {
136
258
  readonly name: "Violet 300";
137
259
  readonly token: "--nea-violet-300";
138
- }, {
260
+ } | {
139
261
  readonly name: "Violet 400";
140
262
  readonly token: "--nea-violet-400";
141
- }, {
263
+ } | {
142
264
  readonly name: "Violet 500";
143
265
  readonly token: "--nea-violet-500";
144
- }, {
266
+ } | {
145
267
  readonly name: "Violet 600";
146
268
  readonly token: "--nea-violet-600";
147
- }, {
269
+ } | {
148
270
  readonly name: "Violet 700";
149
271
  readonly token: "--nea-violet-700";
150
- }, {
272
+ } | {
151
273
  readonly name: "Violet 800";
152
274
  readonly token: "--nea-violet-800";
153
- }, {
275
+ } | {
154
276
  readonly name: "Violet 900";
155
277
  readonly token: "--nea-violet-900";
156
- }];
157
- readonly neutral: readonly [{
278
+ }) & {
279
+ readonly darkValue: string;
280
+ })[];
281
+ readonly neutral: readonly (({
158
282
  readonly name: "Neutral 0";
159
283
  readonly token: "--nea-neutral-0";
160
- }, {
284
+ } | {
161
285
  readonly name: "Neutral 50";
162
286
  readonly token: "--nea-neutral-50";
163
- }, {
287
+ } | {
164
288
  readonly name: "Neutral 100";
165
289
  readonly token: "--nea-neutral-100";
166
- }, {
290
+ } | {
167
291
  readonly name: "Neutral 200";
168
292
  readonly token: "--nea-neutral-200";
169
- }, {
293
+ } | {
170
294
  readonly name: "Neutral 300";
171
295
  readonly token: "--nea-neutral-300";
172
- }, {
296
+ } | {
173
297
  readonly name: "Neutral 400";
174
298
  readonly token: "--nea-neutral-400";
175
- }, {
299
+ } | {
176
300
  readonly name: "Neutral 500";
177
301
  readonly token: "--nea-neutral-500";
178
- }, {
302
+ } | {
179
303
  readonly name: "Neutral 600";
180
304
  readonly token: "--nea-neutral-600";
181
- }, {
305
+ } | {
182
306
  readonly name: "Neutral 700";
183
307
  readonly token: "--nea-neutral-700";
184
- }, {
308
+ } | {
185
309
  readonly name: "Neutral 800";
186
310
  readonly token: "--nea-neutral-800";
187
- }, {
311
+ } | {
188
312
  readonly name: "Neutral 900";
189
313
  readonly token: "--nea-neutral-900";
190
- }];
191
- readonly darkNeutral: readonly [{
314
+ }) & {
315
+ readonly darkValue: string;
316
+ })[];
317
+ readonly darkNeutral: readonly (({
192
318
  readonly name: "Dark Neutral 50";
193
319
  readonly token: "--nea-dark-neutral-50";
194
- }, {
320
+ } | {
195
321
  readonly name: "Dark Neutral 100";
196
322
  readonly token: "--nea-dark-neutral-100";
197
- }, {
323
+ } | {
198
324
  readonly name: "Dark Neutral 200";
199
325
  readonly token: "--nea-dark-neutral-200";
200
- }, {
326
+ } | {
201
327
  readonly name: "Dark Neutral 300";
202
328
  readonly token: "--nea-dark-neutral-300";
203
- }, {
329
+ } | {
204
330
  readonly name: "Dark Neutral 400";
205
331
  readonly token: "--nea-dark-neutral-400";
206
- }, {
332
+ } | {
207
333
  readonly name: "Dark Neutral 500";
208
334
  readonly token: "--nea-dark-neutral-500";
209
- }, {
335
+ } | {
210
336
  readonly name: "Dark Neutral 600";
211
337
  readonly token: "--nea-dark-neutral-600";
212
- }, {
338
+ } | {
213
339
  readonly name: "Dark Neutral 700";
214
340
  readonly token: "--nea-dark-neutral-700";
215
- }, {
341
+ } | {
216
342
  readonly name: "Dark Neutral 800";
217
343
  readonly token: "--nea-dark-neutral-800";
218
- }];
344
+ }) & {
345
+ readonly darkValue: string;
346
+ })[];
347
+ };
348
+ export declare const darkThemeTokenMapping: {
349
+ readonly "--background": "var(--nea-dark-neutral-300)";
350
+ readonly "--foreground": "var(--nea-dark-neutral-50)";
351
+ readonly "--card": "var(--nea-dark-neutral-300)";
352
+ readonly "--card-foreground": "var(--nea-dark-neutral-50)";
353
+ readonly "--card-border": "220 10% 28%";
354
+ readonly "--popover": "var(--nea-dark-neutral-300)";
355
+ readonly "--popover-foreground": "var(--nea-dark-neutral-50)";
356
+ readonly "--tooltip-background": "var(--nea-dark-neutral-800)";
357
+ readonly "--tooltip-foreground": "var(--nea-dark-neutral-50)";
358
+ readonly "--primary": "148 30% 38%";
359
+ readonly "--primary-foreground": "var(--nea-dark-neutral-50)";
360
+ readonly "--secondary": "var(--nea-dark-neutral-500)";
361
+ readonly "--secondary-foreground": "var(--nea-dark-neutral-100)";
362
+ readonly "--muted": "var(--nea-dark-neutral-500)";
363
+ readonly "--muted-foreground": "var(--nea-dark-neutral-200)";
364
+ readonly "--accent": "var(--nea-dark-neutral-500)";
365
+ readonly "--accent-foreground": "var(--nea-dark-neutral-50)";
366
+ readonly "--destructive": "0 72% 58%";
367
+ readonly "--destructive-foreground": "var(--nea-dark-neutral-50)";
368
+ readonly "--status-success": "148 20% 18%";
369
+ readonly "--status-success-foreground": "148 28% 62%";
370
+ readonly "--status-warning": "38 22% 18%";
371
+ readonly "--status-warning-foreground": "42 42% 64%";
372
+ readonly "--status-info": "214 22% 19%";
373
+ readonly "--status-info-foreground": "214 36% 66%";
374
+ readonly "--status-accent": "263 18% 20%";
375
+ readonly "--status-accent-foreground": "255 34% 68%";
376
+ readonly "--status-destructive": "0 20% 19%";
377
+ readonly "--status-destructive-foreground": "0 42% 66%";
378
+ readonly "--tab-list-background": "var(--table-header-background)";
379
+ readonly "--tab-trigger-foreground": "var(--nea-dark-neutral-200)";
380
+ readonly "--tab-trigger-hover-background": "var(--nea-dark-neutral-400)";
381
+ readonly "--tab-trigger-active-background": "var(--nea-dark-neutral-300)";
382
+ readonly "--tab-trigger-active-foreground": "var(--nea-dark-neutral-50)";
383
+ readonly "--tab-indicator": "var(--primary)";
384
+ readonly "--card-gradient-from": "var(--nea-green-700)";
385
+ readonly "--card-gradient-to": "var(--nea-green-500)";
386
+ readonly "--card-gradient-border": "var(--nea-green-500)";
387
+ readonly "--card-gradient-foreground": "var(--nea-neutral-0)";
388
+ readonly "--layout-chrome-background": "var(--nea-dark-neutral-500)";
389
+ readonly "--layout-shell-background": "var(--layout-chrome-background)";
390
+ readonly "--layout-sidebar-background": "var(--layout-chrome-background)";
391
+ readonly "--layout-sidebar-logo-background": "hsl(var(--nea-neutral-0))";
392
+ readonly "--layout-sidebar-border": "var(--card-border)";
393
+ readonly "--layout-surface-background": "var(--nea-dark-neutral-400)";
394
+ readonly "--layout-workspace-header-background": "var(--nea-dark-neutral-300)";
395
+ readonly "--layout-surface-border": "var(--card-border)";
396
+ readonly "--layout-surface-shadow": "0 24px 54px -34px rgb(0 0 0 / 0.64), 0 2px 10px rgb(0 0 0 / 0.26)";
397
+ readonly "--overlay-shadow": "0 18px 36px -22px rgb(0 0 0 / 0.58), 0 8px 18px -14px rgb(0 0 0 / 0.34)";
398
+ readonly "--overlay-shadow-strong": "0 10px 42px -24px rgb(0 0 0 / 0.68), 0 4px 16px -12px rgb(0 0 0 / 0.42)";
399
+ readonly "--layout-right-panel-background": "var(--layout-surface-background)";
400
+ readonly "--layout-right-panel-border": "220 10% 32%";
401
+ readonly "--layout-right-panel-shadow": "-18px 0 36px -28px rgb(0 0 0 / 0.58), -2px 0 12px -8px rgb(0 0 0 / 0.46)";
402
+ readonly "--table-header-background": "var(--nea-dark-neutral-500)";
403
+ readonly "--table-row-striped-background": "var(--nea-dark-neutral-500)";
404
+ readonly "--table-row-warning-background": "var(--nea-dark-neutral-300)";
405
+ readonly "--border": "var(--card-border)";
406
+ readonly "--input": "var(--card-border)";
407
+ readonly "--ring": "148 30% 38%";
408
+ readonly "--component-border": "var(--card-border)";
409
+ readonly "--button-outline-background": "var(--nea-dark-neutral-500)";
410
+ readonly "--button-outline-hover-background": "var(--nea-dark-neutral-400)";
411
+ readonly "--button-outline-border": "var(--component-border)";
412
+ readonly "--tab-list-border": "var(--component-border)";
413
+ readonly "--table-border": "var(--component-border)";
219
414
  };
220
415
  export declare const semanticColorTokens: readonly [{
221
416
  readonly name: "Background";
222
417
  readonly token: "--background";
223
418
  readonly foregroundToken: "--foreground";
419
+ readonly darkValue: "var(--nea-dark-neutral-300)";
420
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
224
421
  }, {
225
422
  readonly name: "Foreground";
226
423
  readonly token: "--foreground";
424
+ readonly foregroundToken?: undefined;
425
+ readonly darkValue: "var(--nea-dark-neutral-50)";
426
+ readonly darkForegroundValue?: undefined;
227
427
  }, {
228
428
  readonly name: "Card";
229
429
  readonly token: "--card";
230
430
  readonly foregroundToken: "--card-foreground";
431
+ readonly darkValue: "var(--nea-dark-neutral-300)";
432
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
231
433
  }, {
232
434
  readonly name: "Card Border";
233
435
  readonly token: "--card-border";
436
+ readonly foregroundToken?: undefined;
437
+ readonly darkValue: "220 10% 28%";
438
+ readonly darkForegroundValue?: undefined;
234
439
  }, {
235
440
  readonly name: "Popover";
236
441
  readonly token: "--popover";
237
442
  readonly foregroundToken: "--popover-foreground";
443
+ readonly darkValue: "var(--nea-dark-neutral-300)";
444
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
238
445
  }, {
239
446
  readonly name: "Primary";
240
447
  readonly token: "--primary";
241
448
  readonly foregroundToken: "--primary-foreground";
449
+ readonly darkValue: "148 30% 38%";
450
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
242
451
  }, {
243
452
  readonly name: "Secondary";
244
453
  readonly token: "--secondary";
245
454
  readonly foregroundToken: "--secondary-foreground";
455
+ readonly darkValue: "var(--nea-dark-neutral-500)";
456
+ readonly darkForegroundValue: "var(--nea-dark-neutral-100)";
246
457
  }, {
247
458
  readonly name: "Muted";
248
459
  readonly token: "--muted";
249
460
  readonly foregroundToken: "--muted-foreground";
461
+ readonly darkValue: "var(--nea-dark-neutral-500)";
462
+ readonly darkForegroundValue: "var(--nea-dark-neutral-200)";
250
463
  }, {
251
464
  readonly name: "Accent";
252
465
  readonly token: "--accent";
253
466
  readonly foregroundToken: "--accent-foreground";
467
+ readonly darkValue: "var(--nea-dark-neutral-500)";
468
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
254
469
  }, {
255
470
  readonly name: "Destructive";
256
471
  readonly token: "--destructive";
257
472
  readonly foregroundToken: "--destructive-foreground";
473
+ readonly darkValue: "0 72% 58%";
474
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
258
475
  }, {
259
476
  readonly name: "Status Success";
260
477
  readonly token: "--status-success";
261
478
  readonly foregroundToken: "--status-success-foreground";
479
+ readonly darkValue: "148 20% 18%";
480
+ readonly darkForegroundValue: "148 28% 62%";
262
481
  }, {
263
482
  readonly name: "Status Warning";
264
483
  readonly token: "--status-warning";
265
484
  readonly foregroundToken: "--status-warning-foreground";
485
+ readonly darkValue: "38 22% 18%";
486
+ readonly darkForegroundValue: "42 42% 64%";
266
487
  }, {
267
488
  readonly name: "Status Info";
268
489
  readonly token: "--status-info";
269
490
  readonly foregroundToken: "--status-info-foreground";
491
+ readonly darkValue: "214 22% 19%";
492
+ readonly darkForegroundValue: "214 36% 66%";
270
493
  }, {
271
494
  readonly name: "Status Accent";
272
495
  readonly token: "--status-accent";
273
496
  readonly foregroundToken: "--status-accent-foreground";
497
+ readonly darkValue: "263 18% 20%";
498
+ readonly darkForegroundValue: "255 34% 68%";
274
499
  }, {
275
500
  readonly name: "Status Destructive";
276
501
  readonly token: "--status-destructive";
277
502
  readonly foregroundToken: "--status-destructive-foreground";
503
+ readonly darkValue: "0 20% 19%";
504
+ readonly darkForegroundValue: "0 42% 66%";
278
505
  }, {
279
506
  readonly name: "Tab List";
280
507
  readonly token: "--tab-list-background";
508
+ readonly foregroundToken?: undefined;
509
+ readonly darkValue: "var(--table-header-background)";
510
+ readonly darkForegroundValue?: undefined;
281
511
  }, {
282
512
  readonly name: "Tab List Border";
283
513
  readonly token: "--tab-list-border";
514
+ readonly foregroundToken?: undefined;
515
+ readonly darkValue: "var(--component-border)";
516
+ readonly darkForegroundValue?: undefined;
284
517
  }, {
285
518
  readonly name: "Tab Trigger";
286
519
  readonly token: "--tab-trigger-hover-background";
287
520
  readonly foregroundToken: "--tab-trigger-foreground";
521
+ readonly darkValue: "var(--nea-dark-neutral-400)";
522
+ readonly darkForegroundValue: "var(--nea-dark-neutral-200)";
288
523
  }, {
289
524
  readonly name: "Tab Trigger Active";
290
525
  readonly token: "--tab-trigger-active-background";
291
526
  readonly foregroundToken: "--tab-trigger-active-foreground";
527
+ readonly darkValue: "var(--nea-dark-neutral-300)";
528
+ readonly darkForegroundValue: "var(--nea-dark-neutral-50)";
292
529
  }, {
293
530
  readonly name: "Border";
294
531
  readonly token: "--border";
532
+ readonly foregroundToken?: undefined;
533
+ readonly darkValue: "var(--card-border)";
534
+ readonly darkForegroundValue?: undefined;
295
535
  }, {
296
536
  readonly name: "Input";
297
537
  readonly token: "--input";
538
+ readonly foregroundToken?: undefined;
539
+ readonly darkValue: "var(--card-border)";
540
+ readonly darkForegroundValue?: undefined;
298
541
  }, {
299
542
  readonly name: "Ring";
300
543
  readonly token: "--ring";
544
+ readonly foregroundToken?: undefined;
545
+ readonly darkValue: "148 30% 38%";
546
+ readonly darkForegroundValue?: undefined;
301
547
  }, {
302
548
  readonly name: "Component Border";
303
549
  readonly token: "--component-border";
550
+ readonly foregroundToken?: undefined;
551
+ readonly darkValue: "var(--card-border)";
552
+ readonly darkForegroundValue?: undefined;
304
553
  }, {
305
554
  readonly name: "Button Outline";
306
555
  readonly token: "--button-outline-background";
556
+ readonly foregroundToken?: undefined;
557
+ readonly darkValue: "var(--nea-dark-neutral-500)";
558
+ readonly darkForegroundValue?: undefined;
307
559
  }, {
308
560
  readonly name: "Button Outline Hover";
309
561
  readonly token: "--button-outline-hover-background";
562
+ readonly foregroundToken?: undefined;
563
+ readonly darkValue: "var(--nea-dark-neutral-400)";
564
+ readonly darkForegroundValue?: undefined;
310
565
  }, {
311
566
  readonly name: "Button Outline Border";
312
567
  readonly token: "--button-outline-border";
568
+ readonly foregroundToken?: undefined;
569
+ readonly darkValue: "var(--component-border)";
570
+ readonly darkForegroundValue?: undefined;
313
571
  }];
572
+ export type SemanticColorToken = (typeof semanticColorTokens)[number];
314
573
  export declare const typographyTokens: readonly [{
315
574
  readonly name: "Sans Font";
316
575
  readonly token: "--font-sans";
package/dist/theme.js CHANGED
@@ -1,5 +1,105 @@
1
+ export const neaPaletteDarkTokenMapping = {
2
+ "--nea-green-50": "146 100% 15%",
3
+ "--nea-green-100": "145 100% 21%",
4
+ "--nea-green-200": "144 100% 27.5%",
5
+ "--nea-green-300": "144 84% 33%",
6
+ "--nea-green-400": "144 66% 40%",
7
+ "--nea-green-500": "144 50% 53%",
8
+ "--nea-green-600": "143 44% 67%",
9
+ "--nea-green-700": "142 45% 80%",
10
+ "--nea-green-800": "141 50% 90%",
11
+ "--nea-green-900": "140 57% 96%",
12
+ "--nea-blue-50": "224 64% 33%",
13
+ "--nea-blue-100": "226 71% 40%",
14
+ "--nea-blue-200": "224 76% 48%",
15
+ "--nea-blue-300": "221 83% 53%",
16
+ "--nea-blue-400": "217 91% 60%",
17
+ "--nea-blue-500": "213 94% 68%",
18
+ "--nea-blue-600": "213 97% 78%",
19
+ "--nea-blue-700": "213 97% 87%",
20
+ "--nea-blue-800": "214 95% 93%",
21
+ "--nea-blue-900": "214 100% 97%",
22
+ "--nea-amber-50": "22 78% 26%",
23
+ "--nea-amber-100": "22 82% 31%",
24
+ "--nea-amber-200": "26 90% 37%",
25
+ "--nea-amber-300": "32 95% 44%",
26
+ "--nea-amber-400": "38 92% 50%",
27
+ "--nea-amber-500": "43 96% 56%",
28
+ "--nea-amber-600": "43 96% 66%",
29
+ "--nea-amber-700": "48 97% 77%",
30
+ "--nea-amber-800": "48 96% 89%",
31
+ "--nea-amber-900": "48 100% 96%",
32
+ "--nea-red-50": "0 63% 31%",
33
+ "--nea-red-100": "0 74% 35%",
34
+ "--nea-red-200": "0 74% 42%",
35
+ "--nea-red-300": "0 72% 51%",
36
+ "--nea-red-400": "0 84% 60%",
37
+ "--nea-red-500": "0 91% 71%",
38
+ "--nea-red-600": "0 94% 82%",
39
+ "--nea-red-700": "0 96% 89%",
40
+ "--nea-red-800": "0 93% 94%",
41
+ "--nea-red-900": "0 86% 97%",
42
+ "--nea-violet-50": "264 69% 35%",
43
+ "--nea-violet-100": "263 70% 42%",
44
+ "--nea-violet-200": "263 84% 50%",
45
+ "--nea-violet-300": "263 89% 60%",
46
+ "--nea-violet-400": "258 90% 66%",
47
+ "--nea-violet-500": "255 92% 76%",
48
+ "--nea-violet-600": "252 95% 85%",
49
+ "--nea-violet-700": "252 96% 90%",
50
+ "--nea-violet-800": "250 100% 97%",
51
+ "--nea-violet-900": "250 100% 98%",
52
+ "--nea-neutral-0": "220 22% 6.5%",
53
+ "--nea-neutral-50": "220 18% 8%",
54
+ "--nea-neutral-100": "220 16% 9.5%",
55
+ "--nea-neutral-200": "220 14% 11.5%",
56
+ "--nea-neutral-300": "220 12% 13.5%",
57
+ "--nea-neutral-400": "220 10% 16%",
58
+ "--nea-neutral-500": "215 14% 68%",
59
+ "--nea-neutral-600": "214 18% 90%",
60
+ "--nea-neutral-700": "214 18% 92%",
61
+ "--nea-neutral-800": "214 18% 92%",
62
+ "--nea-neutral-900": "214 18% 92%",
63
+ "--nea-dark-neutral-50": "214 18% 92%",
64
+ "--nea-dark-neutral-100": "214 18% 90%",
65
+ "--nea-dark-neutral-200": "215 14% 68%",
66
+ "--nea-dark-neutral-300": "220 10% 16%",
67
+ "--nea-dark-neutral-400": "220 12% 13.5%",
68
+ "--nea-dark-neutral-500": "220 14% 11.5%",
69
+ "--nea-dark-neutral-600": "220 16% 9.5%",
70
+ "--nea-dark-neutral-700": "220 18% 8%",
71
+ "--nea-dark-neutral-800": "220 22% 6.5%",
72
+ };
73
+ export const neaDarkNeutralTokenMapping = {
74
+ "--nea-dark-neutral-50": "214 18% 92%",
75
+ "--nea-dark-neutral-100": "214 18% 90%",
76
+ "--nea-dark-neutral-200": "215 14% 68%",
77
+ "--nea-dark-neutral-300": "220 10% 16%",
78
+ "--nea-dark-neutral-400": "220 12% 13.5%",
79
+ "--nea-dark-neutral-500": "220 14% 11.5%",
80
+ "--nea-dark-neutral-600": "220 16% 9.5%",
81
+ "--nea-dark-neutral-700": "220 18% 8%",
82
+ "--nea-dark-neutral-800": "220 22% 6.5%",
83
+ };
84
+ function withPaletteDarkMappings(colors) {
85
+ return colors.map((color) => ({
86
+ ...color,
87
+ darkValue: neaPaletteDarkTokenMapping[color.token],
88
+ }));
89
+ }
90
+ export const neaDarkNeutralPalette = withPaletteDarkMappings([
91
+ { name: "Dark Neutral 50", token: "--nea-dark-neutral-50" },
92
+ { name: "Dark Neutral 100", token: "--nea-dark-neutral-100" },
93
+ { name: "Dark Neutral 200", token: "--nea-dark-neutral-200" },
94
+ { name: "Dark Neutral 300", token: "--nea-dark-neutral-300" },
95
+ { name: "Dark Neutral 400", token: "--nea-dark-neutral-400" },
96
+ { name: "Dark Neutral 500", token: "--nea-dark-neutral-500" },
97
+ { name: "Dark Neutral 600", token: "--nea-dark-neutral-600" },
98
+ { name: "Dark Neutral 700", token: "--nea-dark-neutral-700" },
99
+ { name: "Dark Neutral 800", token: "--nea-dark-neutral-800" },
100
+ ]);
1
101
  export const neaPalette = {
2
- green: [
102
+ green: withPaletteDarkMappings([
3
103
  { name: "Green 50", token: "--nea-green-50" },
4
104
  { name: "Green 100", token: "--nea-green-100" },
5
105
  { name: "Green 200", token: "--nea-green-200" },
@@ -10,8 +110,8 @@ export const neaPalette = {
10
110
  { name: "Green 700", token: "--nea-green-700" },
11
111
  { name: "Green 800", token: "--nea-green-800" },
12
112
  { name: "Green 900", token: "--nea-green-900" },
13
- ],
14
- blue: [
113
+ ]),
114
+ blue: withPaletteDarkMappings([
15
115
  { name: "Blue 50", token: "--nea-blue-50" },
16
116
  { name: "Blue 100", token: "--nea-blue-100" },
17
117
  { name: "Blue 200", token: "--nea-blue-200" },
@@ -22,8 +122,8 @@ export const neaPalette = {
22
122
  { name: "Blue 700", token: "--nea-blue-700" },
23
123
  { name: "Blue 800", token: "--nea-blue-800" },
24
124
  { name: "Blue 900", token: "--nea-blue-900" },
25
- ],
26
- amber: [
125
+ ]),
126
+ amber: withPaletteDarkMappings([
27
127
  { name: "Amber 50", token: "--nea-amber-50" },
28
128
  { name: "Amber 100", token: "--nea-amber-100" },
29
129
  { name: "Amber 200", token: "--nea-amber-200" },
@@ -34,8 +134,8 @@ export const neaPalette = {
34
134
  { name: "Amber 700", token: "--nea-amber-700" },
35
135
  { name: "Amber 800", token: "--nea-amber-800" },
36
136
  { name: "Amber 900", token: "--nea-amber-900" },
37
- ],
38
- red: [
137
+ ]),
138
+ red: withPaletteDarkMappings([
39
139
  { name: "Red 50", token: "--nea-red-50" },
40
140
  { name: "Red 100", token: "--nea-red-100" },
41
141
  { name: "Red 200", token: "--nea-red-200" },
@@ -46,8 +146,8 @@ export const neaPalette = {
46
146
  { name: "Red 700", token: "--nea-red-700" },
47
147
  { name: "Red 800", token: "--nea-red-800" },
48
148
  { name: "Red 900", token: "--nea-red-900" },
49
- ],
50
- violet: [
149
+ ]),
150
+ violet: withPaletteDarkMappings([
51
151
  { name: "Violet 50", token: "--nea-violet-50" },
52
152
  { name: "Violet 100", token: "--nea-violet-100" },
53
153
  { name: "Violet 200", token: "--nea-violet-200" },
@@ -58,8 +158,8 @@ export const neaPalette = {
58
158
  { name: "Violet 700", token: "--nea-violet-700" },
59
159
  { name: "Violet 800", token: "--nea-violet-800" },
60
160
  { name: "Violet 900", token: "--nea-violet-900" },
61
- ],
62
- neutral: [
161
+ ]),
162
+ neutral: withPaletteDarkMappings([
63
163
  { name: "Neutral 0", token: "--nea-neutral-0" },
64
164
  { name: "Neutral 50", token: "--nea-neutral-50" },
65
165
  { name: "Neutral 100", token: "--nea-neutral-100" },
@@ -71,70 +171,184 @@ export const neaPalette = {
71
171
  { name: "Neutral 700", token: "--nea-neutral-700" },
72
172
  { name: "Neutral 800", token: "--nea-neutral-800" },
73
173
  { name: "Neutral 900", token: "--nea-neutral-900" },
74
- ],
75
- darkNeutral: [
76
- { name: "Dark Neutral 50", token: "--nea-dark-neutral-50" },
77
- { name: "Dark Neutral 100", token: "--nea-dark-neutral-100" },
78
- { name: "Dark Neutral 200", token: "--nea-dark-neutral-200" },
79
- { name: "Dark Neutral 300", token: "--nea-dark-neutral-300" },
80
- { name: "Dark Neutral 400", token: "--nea-dark-neutral-400" },
81
- { name: "Dark Neutral 500", token: "--nea-dark-neutral-500" },
82
- { name: "Dark Neutral 600", token: "--nea-dark-neutral-600" },
83
- { name: "Dark Neutral 700", token: "--nea-dark-neutral-700" },
84
- { name: "Dark Neutral 800", token: "--nea-dark-neutral-800" },
85
- ],
174
+ ]),
175
+ darkNeutral: neaDarkNeutralPalette,
86
176
  };
177
+ export const darkThemeTokenMapping = {
178
+ "--background": "var(--nea-dark-neutral-300)",
179
+ "--foreground": "var(--nea-dark-neutral-50)",
180
+ "--card": "var(--nea-dark-neutral-300)",
181
+ "--card-foreground": "var(--nea-dark-neutral-50)",
182
+ "--card-border": "220 10% 28%",
183
+ "--popover": "var(--nea-dark-neutral-300)",
184
+ "--popover-foreground": "var(--nea-dark-neutral-50)",
185
+ "--tooltip-background": "var(--nea-dark-neutral-800)",
186
+ "--tooltip-foreground": "var(--nea-dark-neutral-50)",
187
+ "--primary": "148 30% 38%",
188
+ "--primary-foreground": "var(--nea-dark-neutral-50)",
189
+ "--secondary": "var(--nea-dark-neutral-500)",
190
+ "--secondary-foreground": "var(--nea-dark-neutral-100)",
191
+ "--muted": "var(--nea-dark-neutral-500)",
192
+ "--muted-foreground": "var(--nea-dark-neutral-200)",
193
+ "--accent": "var(--nea-dark-neutral-500)",
194
+ "--accent-foreground": "var(--nea-dark-neutral-50)",
195
+ "--destructive": "0 72% 58%",
196
+ "--destructive-foreground": "var(--nea-dark-neutral-50)",
197
+ "--status-success": "148 20% 18%",
198
+ "--status-success-foreground": "148 28% 62%",
199
+ "--status-warning": "38 22% 18%",
200
+ "--status-warning-foreground": "42 42% 64%",
201
+ "--status-info": "214 22% 19%",
202
+ "--status-info-foreground": "214 36% 66%",
203
+ "--status-accent": "263 18% 20%",
204
+ "--status-accent-foreground": "255 34% 68%",
205
+ "--status-destructive": "0 20% 19%",
206
+ "--status-destructive-foreground": "0 42% 66%",
207
+ "--tab-list-background": "var(--table-header-background)",
208
+ "--tab-trigger-foreground": "var(--nea-dark-neutral-200)",
209
+ "--tab-trigger-hover-background": "var(--nea-dark-neutral-400)",
210
+ "--tab-trigger-active-background": "var(--nea-dark-neutral-300)",
211
+ "--tab-trigger-active-foreground": "var(--nea-dark-neutral-50)",
212
+ "--tab-indicator": "var(--primary)",
213
+ "--card-gradient-from": "var(--nea-green-700)",
214
+ "--card-gradient-to": "var(--nea-green-500)",
215
+ "--card-gradient-border": "var(--nea-green-500)",
216
+ "--card-gradient-foreground": "var(--nea-neutral-0)",
217
+ "--layout-chrome-background": "var(--nea-dark-neutral-500)",
218
+ "--layout-shell-background": "var(--layout-chrome-background)",
219
+ "--layout-sidebar-background": "var(--layout-chrome-background)",
220
+ "--layout-sidebar-logo-background": "hsl(var(--nea-neutral-0))",
221
+ "--layout-sidebar-border": "var(--card-border)",
222
+ "--layout-surface-background": "var(--nea-dark-neutral-400)",
223
+ "--layout-workspace-header-background": "var(--nea-dark-neutral-300)",
224
+ "--layout-surface-border": "var(--card-border)",
225
+ "--layout-surface-shadow": "0 24px 54px -34px rgb(0 0 0 / 0.64), 0 2px 10px rgb(0 0 0 / 0.26)",
226
+ "--overlay-shadow": "0 18px 36px -22px rgb(0 0 0 / 0.58), 0 8px 18px -14px rgb(0 0 0 / 0.34)",
227
+ "--overlay-shadow-strong": "0 10px 42px -24px rgb(0 0 0 / 0.68), 0 4px 16px -12px rgb(0 0 0 / 0.42)",
228
+ "--layout-right-panel-background": "var(--layout-surface-background)",
229
+ "--layout-right-panel-border": "220 10% 32%",
230
+ "--layout-right-panel-shadow": "-18px 0 36px -28px rgb(0 0 0 / 0.58), -2px 0 12px -8px rgb(0 0 0 / 0.46)",
231
+ "--table-header-background": "var(--nea-dark-neutral-500)",
232
+ "--table-row-striped-background": "var(--nea-dark-neutral-500)",
233
+ "--table-row-warning-background": "var(--nea-dark-neutral-300)",
234
+ "--border": "var(--card-border)",
235
+ "--input": "var(--card-border)",
236
+ "--ring": "148 30% 38%",
237
+ "--component-border": "var(--card-border)",
238
+ "--button-outline-background": "var(--nea-dark-neutral-500)",
239
+ "--button-outline-hover-background": "var(--nea-dark-neutral-400)",
240
+ "--button-outline-border": "var(--component-border)",
241
+ "--tab-list-border": "var(--component-border)",
242
+ "--table-border": "var(--component-border)",
243
+ };
244
+ function withDarkThemeMapping(token) {
245
+ return {
246
+ ...token,
247
+ darkValue: darkThemeTokenMapping[token.token],
248
+ ...(token.foregroundToken
249
+ ? { darkForegroundValue: darkThemeTokenMapping[token.foregroundToken] }
250
+ : {}),
251
+ };
252
+ }
87
253
  export const semanticColorTokens = [
88
- { name: "Background", token: "--background", foregroundToken: "--foreground" },
89
- { name: "Foreground", token: "--foreground" },
90
- { name: "Card", token: "--card", foregroundToken: "--card-foreground" },
91
- { name: "Card Border", token: "--card-border" },
92
- { name: "Popover", token: "--popover", foregroundToken: "--popover-foreground" },
93
- { name: "Primary", token: "--primary", foregroundToken: "--primary-foreground" },
94
- { name: "Secondary", token: "--secondary", foregroundToken: "--secondary-foreground" },
95
- { name: "Muted", token: "--muted", foregroundToken: "--muted-foreground" },
96
- { name: "Accent", token: "--accent", foregroundToken: "--accent-foreground" },
97
- { name: "Destructive", token: "--destructive", foregroundToken: "--destructive-foreground" },
98
- {
254
+ withDarkThemeMapping({
255
+ name: "Background",
256
+ token: "--background",
257
+ foregroundToken: "--foreground",
258
+ }),
259
+ withDarkThemeMapping({ name: "Foreground", token: "--foreground" }),
260
+ withDarkThemeMapping({
261
+ name: "Card",
262
+ token: "--card",
263
+ foregroundToken: "--card-foreground",
264
+ }),
265
+ withDarkThemeMapping({ name: "Card Border", token: "--card-border" }),
266
+ withDarkThemeMapping({
267
+ name: "Popover",
268
+ token: "--popover",
269
+ foregroundToken: "--popover-foreground",
270
+ }),
271
+ withDarkThemeMapping({
272
+ name: "Primary",
273
+ token: "--primary",
274
+ foregroundToken: "--primary-foreground",
275
+ }),
276
+ withDarkThemeMapping({
277
+ name: "Secondary",
278
+ token: "--secondary",
279
+ foregroundToken: "--secondary-foreground",
280
+ }),
281
+ withDarkThemeMapping({
282
+ name: "Muted",
283
+ token: "--muted",
284
+ foregroundToken: "--muted-foreground",
285
+ }),
286
+ withDarkThemeMapping({
287
+ name: "Accent",
288
+ token: "--accent",
289
+ foregroundToken: "--accent-foreground",
290
+ }),
291
+ withDarkThemeMapping({
292
+ name: "Destructive",
293
+ token: "--destructive",
294
+ foregroundToken: "--destructive-foreground",
295
+ }),
296
+ withDarkThemeMapping({
99
297
  name: "Status Success",
100
298
  token: "--status-success",
101
299
  foregroundToken: "--status-success-foreground",
102
- },
103
- {
300
+ }),
301
+ withDarkThemeMapping({
104
302
  name: "Status Warning",
105
303
  token: "--status-warning",
106
304
  foregroundToken: "--status-warning-foreground",
107
- },
108
- {
305
+ }),
306
+ withDarkThemeMapping({
109
307
  name: "Status Info",
110
308
  token: "--status-info",
111
309
  foregroundToken: "--status-info-foreground",
112
- },
113
- {
310
+ }),
311
+ withDarkThemeMapping({
114
312
  name: "Status Accent",
115
313
  token: "--status-accent",
116
314
  foregroundToken: "--status-accent-foreground",
117
- },
118
- {
315
+ }),
316
+ withDarkThemeMapping({
119
317
  name: "Status Destructive",
120
318
  token: "--status-destructive",
121
319
  foregroundToken: "--status-destructive-foreground",
122
- },
123
- { name: "Tab List", token: "--tab-list-background" },
124
- { name: "Tab List Border", token: "--tab-list-border" },
125
- { name: "Tab Trigger", token: "--tab-trigger-hover-background", foregroundToken: "--tab-trigger-foreground" },
126
- {
320
+ }),
321
+ withDarkThemeMapping({ name: "Tab List", token: "--tab-list-background" }),
322
+ withDarkThemeMapping({ name: "Tab List Border", token: "--tab-list-border" }),
323
+ withDarkThemeMapping({
324
+ name: "Tab Trigger",
325
+ token: "--tab-trigger-hover-background",
326
+ foregroundToken: "--tab-trigger-foreground",
327
+ }),
328
+ withDarkThemeMapping({
127
329
  name: "Tab Trigger Active",
128
330
  token: "--tab-trigger-active-background",
129
331
  foregroundToken: "--tab-trigger-active-foreground",
130
- },
131
- { name: "Border", token: "--border" },
132
- { name: "Input", token: "--input" },
133
- { name: "Ring", token: "--ring" },
134
- { name: "Component Border", token: "--component-border" },
135
- { name: "Button Outline", token: "--button-outline-background" },
136
- { name: "Button Outline Hover", token: "--button-outline-hover-background" },
137
- { name: "Button Outline Border", token: "--button-outline-border" },
332
+ }),
333
+ withDarkThemeMapping({ name: "Border", token: "--border" }),
334
+ withDarkThemeMapping({ name: "Input", token: "--input" }),
335
+ withDarkThemeMapping({ name: "Ring", token: "--ring" }),
336
+ withDarkThemeMapping({
337
+ name: "Component Border",
338
+ token: "--component-border",
339
+ }),
340
+ withDarkThemeMapping({
341
+ name: "Button Outline",
342
+ token: "--button-outline-background",
343
+ }),
344
+ withDarkThemeMapping({
345
+ name: "Button Outline Hover",
346
+ token: "--button-outline-hover-background",
347
+ }),
348
+ withDarkThemeMapping({
349
+ name: "Button Outline Border",
350
+ token: "--button-outline-border",
351
+ }),
138
352
  ];
139
353
  export const typographyTokens = [
140
354
  { name: "Sans Font", token: "--font-sans" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neasg/design-system",
3
- "version": "0.4.12",
3
+ "version": "0.4.13",
4
4
  "description": "NEA shared design system primitives, theme tokens, and Storybook docs.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",