impact-nova 2.1.0-alpha.8 → 2.1.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,297 @@
1
+ /** Published Tailwind preset — generated by scripts/build-tailwind-preset.mjs. Do not edit. */
2
+ // tailwind.config.js
3
+ import tailwindcssAnimate from "tailwindcss-animate";
4
+ import tailwindPlugin from "tailwindcss/plugin.js";
5
+
6
+ // src/theme/generated/tailwind-colors.js
7
+ var cssVar = (name) => `var(${name})`;
8
+ var generatedColors = {
9
+ canvas: {
10
+ DEFAULT: cssVar("--color-background"),
11
+ elevated: {
12
+ DEFAULT: cssVar("--color-surface-elevated"),
13
+ foreground: cssVar("--color-surface-elevated-foreground")
14
+ },
15
+ overlay: {
16
+ DEFAULT: cssVar("--color-surface-floating"),
17
+ foreground: cssVar("--color-surface-floating-foreground")
18
+ },
19
+ muted: cssVar("--color-surface-muted"),
20
+ wash: cssVar("--color-surface-canvas"),
21
+ disabled: cssVar("--color-surface-input-disabled"),
22
+ readonly: cssVar("--color-surface-readonly"),
23
+ accent: cssVar("--color-surface-selection-tint"),
24
+ subtle: cssVar("--color-surface-subtle"),
25
+ tint: cssVar("--color-surface-tint-blue"),
26
+ accordion: cssVar("--color-surface-accordion")
27
+ },
28
+ content: {
29
+ DEFAULT: cssVar("--color-foreground"),
30
+ secondary: cssVar("--color-foreground-secondary"),
31
+ tertiary: cssVar("--color-foreground-tertiary"),
32
+ placeholder: cssVar("--color-foreground-placeholder"),
33
+ empty: cssVar("--color-foreground-empty"),
34
+ muted: cssVar("--color-muted-foreground"),
35
+ icon: cssVar("--color-foreground-icon"),
36
+ "header-notification": cssVar("--color-header-notification-icon"),
37
+ charcoal: cssVar("--color-neutral-charcoal"),
38
+ title: cssVar("--color-foreground-title"),
39
+ badge: cssVar("--color-neutral-badge"),
40
+ heading: cssVar("--color-header-notification-icon"),
41
+ subheading: cssVar("--color-secondary")
42
+ },
43
+ brand: {
44
+ DEFAULT: cssVar("--color-primary"),
45
+ foreground: cssVar("--color-primary-foreground"),
46
+ strong: cssVar("--color-primary-strong"),
47
+ hover: cssVar("--color-primary-hover"),
48
+ subtle: cssVar("--color-primary-surface-subtle"),
49
+ "on-subtle": cssVar("--color-primary-on-surface-subtle"),
50
+ highlight: cssVar("--color-primary-selection"),
51
+ tint: cssVar("--color-primary-soft"),
52
+ "tint-hover": cssVar("--color-primary-soft-hover"),
53
+ variant: cssVar("--color-primary-variant"),
54
+ "variant-hover": cssVar("--color-primary-variant-hover")
55
+ },
56
+ secondary: {
57
+ DEFAULT: cssVar("--color-secondary"),
58
+ foreground: cssVar("--color-secondary-foreground"),
59
+ "hover-foreground": cssVar("--color-secondary-hover-foreground")
60
+ },
61
+ accent: {
62
+ DEFAULT: cssVar("--color-accent"),
63
+ foreground: cssVar("--color-accent-foreground")
64
+ },
65
+ muted: cssVar("--color-muted"),
66
+ stroke: {
67
+ DEFAULT: cssVar("--color-border"),
68
+ subtle: cssVar("--color-border-subtle"),
69
+ hairline: cssVar("--color-border-hairline"),
70
+ strong: cssVar("--color-border-strong"),
71
+ accent: cssVar("--color-border-accent-muted"),
72
+ track: cssVar("--color-track-muted"),
73
+ field: cssVar("--color-border-tertiary")
74
+ },
75
+ field: {
76
+ border: cssVar("--color-input")
77
+ },
78
+ focus: {
79
+ ring: cssVar("--color-ring")
80
+ },
81
+ disabled: {
82
+ border: cssVar("--color-disabled-border"),
83
+ surface: cssVar("--color-disabled-surface"),
84
+ foreground: cssVar("--color-disabled-foreground")
85
+ },
86
+ validation: cssVar("--color-danger-validation"),
87
+ destructive: {
88
+ DEFAULT: cssVar("--color-destructive"),
89
+ foreground: cssVar("--color-destructive-foreground"),
90
+ hover: cssVar("--color-destructive-hover")
91
+ },
92
+ success: {
93
+ DEFAULT: cssVar("--color-success"),
94
+ foreground: cssVar("--color-success-foreground")
95
+ },
96
+ warning: cssVar("--color-warning"),
97
+ danger: cssVar("--color-danger-bright"),
98
+ button: {
99
+ "primary-disabled": cssVar("--color-button-primary-disabled")
100
+ },
101
+ badge: {
102
+ neutral: {
103
+ muted: cssVar("--color-badge-neutral-muted")
104
+ },
105
+ info: {
106
+ filled: cssVar("--color-badge-info-filled"),
107
+ muted: cssVar("--color-badge-info-muted")
108
+ },
109
+ warning: {
110
+ filled: cssVar("--color-badge-warning-filled"),
111
+ muted: cssVar("--color-badge-warning-muted"),
112
+ ink: cssVar("--color-badge-warning-text")
113
+ },
114
+ error: {
115
+ filled: cssVar("--color-badge-error-filled"),
116
+ muted: cssVar("--color-badge-error-muted"),
117
+ ink: cssVar("--color-badge-error-text")
118
+ },
119
+ success: {
120
+ filled: cssVar("--color-badge-success-filled"),
121
+ muted: cssVar("--color-badge-success-muted"),
122
+ ink: cssVar("--color-badge-success-text")
123
+ }
124
+ },
125
+ feedback: {
126
+ info: {
127
+ surface: cssVar("--color-info-surface"),
128
+ border: cssVar("--color-info-border")
129
+ },
130
+ warning: {
131
+ surface: cssVar("--color-warning-surface"),
132
+ border: cssVar("--color-warning-border")
133
+ },
134
+ error: {
135
+ surface: cssVar("--color-error-surface"),
136
+ border: cssVar("--color-error-border")
137
+ },
138
+ success: {
139
+ surface: cssVar("--color-success-surface"),
140
+ border: cssVar("--color-success-border")
141
+ }
142
+ },
143
+ chart: {
144
+ "1": cssVar("--color-chart-1"),
145
+ "2": cssVar("--color-chart-2"),
146
+ "3": cssVar("--color-chart-3"),
147
+ "4": cssVar("--color-chart-4"),
148
+ "5": cssVar("--color-chart-5")
149
+ },
150
+ domain: {
151
+ cohort: cssVar("--color-data-cohort")
152
+ },
153
+ indicator: {
154
+ sort: cssVar("--color-indicator-sort"),
155
+ filter: cssVar("--color-indicator-filter")
156
+ },
157
+ pinSwitch: {
158
+ "label-active": cssVar("--color-pin-switch-label-active"),
159
+ "label-inactive": cssVar("--color-pin-switch-label-inactive"),
160
+ "track-bg": cssVar("--color-pin-switch-track-bg"),
161
+ "track-border": cssVar("--color-pin-switch-track-border"),
162
+ "track-hover": cssVar("--color-pin-switch-track-hover")
163
+ },
164
+ scrim: cssVar("--color-scrim"),
165
+ "scrim-deep": cssVar("--color-scrim-deep"),
166
+ "scrim-light": cssVar("--color-scrim-light"),
167
+ "scrim-skeleton": cssVar("--color-scrim-skeleton"),
168
+ "scrim-hover": cssVar("--color-scrim-hover"),
169
+ navigation: {
170
+ DEFAULT: cssVar("--color-sidebar-background"),
171
+ foreground: cssVar("--color-sidebar-foreground"),
172
+ surface: cssVar("--color-sidebar-surface"),
173
+ "on-surface": cssVar("--color-sidebar-on-surface"),
174
+ hover: cssVar("--color-sidebar-hover"),
175
+ "on-hover": cssVar("--color-sidebar-on-hover"),
176
+ border: cssVar("--color-sidebar-border"),
177
+ ring: cssVar("--color-sidebar-ring"),
178
+ indicator: cssVar("--color-sidebar-indicator"),
179
+ "item-hover": cssVar("--color-sidebar-item-hover"),
180
+ "item-active": cssVar("--color-sidebar-item-active"),
181
+ muted: cssVar("--color-sidebar-foreground-muted"),
182
+ canvas: cssVar("--color-sidebar-canvas")
183
+ },
184
+ background: {
185
+ DEFAULT: cssVar("--color-background"),
186
+ foreground: cssVar("--color-foreground")
187
+ }
188
+ };
189
+ var generatedBoxShadow = {
190
+ "alert-elevated": "var(--shadow-alert-elevated)",
191
+ "elevation-card": "var(--shadow-elevation-card)",
192
+ "elevation-dialog-footer": "var(--shadow-elevation-dialog-footer)",
193
+ "elevation-floating": "var(--shadow-elevation-floating)",
194
+ "elevation-header": "var(--shadow-elevation-header)",
195
+ "elevation-kbd-dark": "var(--shadow-elevation-kbd-dark)",
196
+ "elevation-menu-ag-grid": "var(--shadow-elevation-menu-ag-grid)",
197
+ "elevation-pin-switch": "var(--shadow-elevation-pin-switch)",
198
+ "elevation-select": "var(--shadow-elevation-select)",
199
+ "elevation-settings": "var(--shadow-elevation-settings)",
200
+ "elevation-toast": "var(--shadow-elevation-toast)",
201
+ "elevation-wizard-footer": "var(--shadow-elevation-wizard-footer)"
202
+ };
203
+
204
+ // tailwind.config.js
205
+ var scrollbarUtilities = tailwindPlugin(({ addUtilities }) => {
206
+ addUtilities({
207
+ ".scrollbar-hide": {
208
+ "-ms-overflow-style": "none",
209
+ "scrollbar-width": "none"
210
+ },
211
+ ".scrollbar-hide::-webkit-scrollbar": {
212
+ display: "none"
213
+ }
214
+ });
215
+ });
216
+ var baseConfig = {
217
+ darkMode: ["class"],
218
+ content: [
219
+ "./index.html",
220
+ "./src/**/*.{js,ts,jsx,tsx}",
221
+ "./src/components/ui/**/*.{js,ts,jsx,tsx}",
222
+ "./src/components/ui/stories/**/*.{js,ts,jsx,tsx}",
223
+ "./.storybook/**/*.{js,ts,jsx,tsx,mdx}"
224
+ ],
225
+ theme: {
226
+ colors: {
227
+ transparent: "transparent",
228
+ current: "currentColor",
229
+ inherit: "inherit",
230
+ ...generatedColors
231
+ },
232
+ extend: {
233
+ fontFamily: {
234
+ sans: ["Manrope", "sans-serif"]
235
+ },
236
+ borderRadius: {
237
+ lg: "calc(var(--radius) + 4px)",
238
+ md: "var(--radius)",
239
+ sm: "calc(var(--radius) - 4px)"
240
+ },
241
+ boxShadow: generatedBoxShadow,
242
+ keyframes: {
243
+ "accordion-down": {
244
+ from: { height: "0" },
245
+ to: { height: "var(--radix-accordion-content-height)" }
246
+ },
247
+ "accordion-up": {
248
+ from: { height: "var(--radix-accordion-content-height)" },
249
+ to: { height: "0" }
250
+ },
251
+ "collapsible-down": {
252
+ from: { height: "0" },
253
+ to: { height: "var(--radix-collapsible-content-height)" }
254
+ },
255
+ "collapsible-up": {
256
+ from: { height: "var(--radix-collapsible-content-height)" },
257
+ to: { height: "0" }
258
+ },
259
+ "header-bot-gradient": {
260
+ "0%": { backgroundPosition: "0% 50%" },
261
+ "50%": { backgroundPosition: "100% 50%" },
262
+ "100%": { backgroundPosition: "0% 50%" }
263
+ },
264
+ "notification-waves": {
265
+ "0%": { width: "8px", height: "8px" },
266
+ "100%": { width: "16px", height: "16px" }
267
+ }
268
+ },
269
+ animation: {
270
+ "accordion-down": "accordion-down 0.2s ease-out",
271
+ "accordion-up": "accordion-up 0.2s ease-out",
272
+ "collapsible-down": "collapsible-down 0.2s ease-out",
273
+ "collapsible-up": "collapsible-up 0.2s ease-out",
274
+ "header-bot-gradient": "header-bot-gradient 5s ease infinite",
275
+ "header-bot-gradient-fast": "header-bot-gradient 2s ease infinite",
276
+ "notification-waves": "notification-waves 1.5s ease-out infinite"
277
+ }
278
+ }
279
+ },
280
+ plugins: [tailwindcssAnimate, scrollbarUtilities]
281
+ };
282
+ var tailwind_config_default = baseConfig;
283
+ function createTailwindConfig(contentPaths) {
284
+ return {
285
+ ...baseConfig,
286
+ content: contentPaths
287
+ };
288
+ }
289
+ function createAppTailwindConfig(appRootDir, appContentPaths) {
290
+ const impactNovaSourceGlob = `${appRootDir.replace(/\\/g, "/")}/../impact-nova/src/**/*.{js,ts,jsx,tsx}`;
291
+ return createTailwindConfig([...appContentPaths, impactNovaSourceGlob]);
292
+ }
293
+ export {
294
+ createAppTailwindConfig,
295
+ createTailwindConfig,
296
+ tailwind_config_default as default
297
+ };
@@ -0,0 +1,199 @@
1
+ /** Generated from src/theme/semantic-map.json — do not edit by hand. */
2
+ export const cssVar = (name) => `var(${name})`;
3
+
4
+ export const generatedColors = {
5
+ canvas: {
6
+ DEFAULT: cssVar("--color-background"),
7
+ elevated: {
8
+ DEFAULT: cssVar("--color-surface-elevated"),
9
+ foreground: cssVar("--color-surface-elevated-foreground"),
10
+ },
11
+ overlay: {
12
+ DEFAULT: cssVar("--color-surface-floating"),
13
+ foreground: cssVar("--color-surface-floating-foreground"),
14
+ },
15
+ muted: cssVar("--color-surface-muted"),
16
+ wash: cssVar("--color-surface-canvas"),
17
+ disabled: cssVar("--color-surface-input-disabled"),
18
+ readonly: cssVar("--color-surface-readonly"),
19
+ accent: cssVar("--color-surface-selection-tint"),
20
+ subtle: cssVar("--color-surface-subtle"),
21
+ tint: cssVar("--color-surface-tint-blue"),
22
+ accordion: cssVar("--color-surface-accordion"),
23
+ },
24
+ content: {
25
+ DEFAULT: cssVar("--color-foreground"),
26
+ secondary: cssVar("--color-foreground-secondary"),
27
+ tertiary: cssVar("--color-foreground-tertiary"),
28
+ placeholder: cssVar("--color-foreground-placeholder"),
29
+ empty: cssVar("--color-foreground-empty"),
30
+ muted: cssVar("--color-muted-foreground"),
31
+ icon: cssVar("--color-foreground-icon"),
32
+ "header-notification": cssVar("--color-header-notification-icon"),
33
+ charcoal: cssVar("--color-neutral-charcoal"),
34
+ title: cssVar("--color-foreground-title"),
35
+ badge: cssVar("--color-neutral-badge"),
36
+ heading: cssVar("--color-header-notification-icon"),
37
+ subheading: cssVar("--color-secondary"),
38
+ },
39
+ brand: {
40
+ DEFAULT: cssVar("--color-primary"),
41
+ foreground: cssVar("--color-primary-foreground"),
42
+ strong: cssVar("--color-primary-strong"),
43
+ hover: cssVar("--color-primary-hover"),
44
+ subtle: cssVar("--color-primary-surface-subtle"),
45
+ "on-subtle": cssVar("--color-primary-on-surface-subtle"),
46
+ highlight: cssVar("--color-primary-selection"),
47
+ tint: cssVar("--color-primary-soft"),
48
+ "tint-hover": cssVar("--color-primary-soft-hover"),
49
+ variant: cssVar("--color-primary-variant"),
50
+ "variant-hover": cssVar("--color-primary-variant-hover"),
51
+ },
52
+ secondary: {
53
+ DEFAULT: cssVar("--color-secondary"),
54
+ foreground: cssVar("--color-secondary-foreground"),
55
+ "hover-foreground": cssVar("--color-secondary-hover-foreground"),
56
+ },
57
+ accent: {
58
+ DEFAULT: cssVar("--color-accent"),
59
+ foreground: cssVar("--color-accent-foreground"),
60
+ },
61
+ muted: cssVar("--color-muted"),
62
+ stroke: {
63
+ DEFAULT: cssVar("--color-border"),
64
+ subtle: cssVar("--color-border-subtle"),
65
+ hairline: cssVar("--color-border-hairline"),
66
+ strong: cssVar("--color-border-strong"),
67
+ accent: cssVar("--color-border-accent-muted"),
68
+ track: cssVar("--color-track-muted"),
69
+ field: cssVar("--color-border-tertiary"),
70
+ },
71
+ field: {
72
+ border: cssVar("--color-input"),
73
+ },
74
+ focus: {
75
+ ring: cssVar("--color-ring"),
76
+ },
77
+ disabled: {
78
+ border: cssVar("--color-disabled-border"),
79
+ surface: cssVar("--color-disabled-surface"),
80
+ foreground: cssVar("--color-disabled-foreground"),
81
+ },
82
+ validation: cssVar("--color-danger-validation"),
83
+ destructive: {
84
+ DEFAULT: cssVar("--color-destructive"),
85
+ foreground: cssVar("--color-destructive-foreground"),
86
+ hover: cssVar("--color-destructive-hover"),
87
+ },
88
+ success: {
89
+ DEFAULT: cssVar("--color-success"),
90
+ foreground: cssVar("--color-success-foreground"),
91
+ },
92
+ warning: cssVar("--color-warning"),
93
+ danger: cssVar("--color-danger-bright"),
94
+ button: {
95
+ "primary-disabled": cssVar("--color-button-primary-disabled"),
96
+ },
97
+ badge: {
98
+ neutral: {
99
+ muted: cssVar("--color-badge-neutral-muted"),
100
+ },
101
+ info: {
102
+ filled: cssVar("--color-badge-info-filled"),
103
+ muted: cssVar("--color-badge-info-muted"),
104
+ },
105
+ warning: {
106
+ filled: cssVar("--color-badge-warning-filled"),
107
+ muted: cssVar("--color-badge-warning-muted"),
108
+ ink: cssVar("--color-badge-warning-text"),
109
+ },
110
+ error: {
111
+ filled: cssVar("--color-badge-error-filled"),
112
+ muted: cssVar("--color-badge-error-muted"),
113
+ ink: cssVar("--color-badge-error-text"),
114
+ },
115
+ success: {
116
+ filled: cssVar("--color-badge-success-filled"),
117
+ muted: cssVar("--color-badge-success-muted"),
118
+ ink: cssVar("--color-badge-success-text"),
119
+ },
120
+ },
121
+ feedback: {
122
+ info: {
123
+ surface: cssVar("--color-info-surface"),
124
+ border: cssVar("--color-info-border"),
125
+ },
126
+ warning: {
127
+ surface: cssVar("--color-warning-surface"),
128
+ border: cssVar("--color-warning-border"),
129
+ },
130
+ error: {
131
+ surface: cssVar("--color-error-surface"),
132
+ border: cssVar("--color-error-border"),
133
+ },
134
+ success: {
135
+ surface: cssVar("--color-success-surface"),
136
+ border: cssVar("--color-success-border"),
137
+ },
138
+ },
139
+ chart: {
140
+ "1": cssVar("--color-chart-1"),
141
+ "2": cssVar("--color-chart-2"),
142
+ "3": cssVar("--color-chart-3"),
143
+ "4": cssVar("--color-chart-4"),
144
+ "5": cssVar("--color-chart-5"),
145
+ },
146
+ domain: {
147
+ cohort: cssVar("--color-data-cohort"),
148
+ },
149
+ indicator: {
150
+ sort: cssVar("--color-indicator-sort"),
151
+ filter: cssVar("--color-indicator-filter"),
152
+ },
153
+ pinSwitch: {
154
+ "label-active": cssVar("--color-pin-switch-label-active"),
155
+ "label-inactive": cssVar("--color-pin-switch-label-inactive"),
156
+ "track-bg": cssVar("--color-pin-switch-track-bg"),
157
+ "track-border": cssVar("--color-pin-switch-track-border"),
158
+ "track-hover": cssVar("--color-pin-switch-track-hover"),
159
+ },
160
+ scrim: cssVar("--color-scrim"),
161
+ "scrim-deep": cssVar("--color-scrim-deep"),
162
+ "scrim-light": cssVar("--color-scrim-light"),
163
+ "scrim-skeleton": cssVar("--color-scrim-skeleton"),
164
+ "scrim-hover": cssVar("--color-scrim-hover"),
165
+ navigation: {
166
+ DEFAULT: cssVar("--color-sidebar-background"),
167
+ foreground: cssVar("--color-sidebar-foreground"),
168
+ surface: cssVar("--color-sidebar-surface"),
169
+ "on-surface": cssVar("--color-sidebar-on-surface"),
170
+ hover: cssVar("--color-sidebar-hover"),
171
+ "on-hover": cssVar("--color-sidebar-on-hover"),
172
+ border: cssVar("--color-sidebar-border"),
173
+ ring: cssVar("--color-sidebar-ring"),
174
+ indicator: cssVar("--color-sidebar-indicator"),
175
+ "item-hover": cssVar("--color-sidebar-item-hover"),
176
+ "item-active": cssVar("--color-sidebar-item-active"),
177
+ muted: cssVar("--color-sidebar-foreground-muted"),
178
+ canvas: cssVar("--color-sidebar-canvas"),
179
+ },
180
+ background: {
181
+ DEFAULT: cssVar("--color-background"),
182
+ foreground: cssVar("--color-foreground"),
183
+ },
184
+ };
185
+
186
+ export const generatedBoxShadow = {
187
+ "alert-elevated": "var(--shadow-alert-elevated)",
188
+ "elevation-card": "var(--shadow-elevation-card)",
189
+ "elevation-dialog-footer": "var(--shadow-elevation-dialog-footer)",
190
+ "elevation-floating": "var(--shadow-elevation-floating)",
191
+ "elevation-header": "var(--shadow-elevation-header)",
192
+ "elevation-kbd-dark": "var(--shadow-elevation-kbd-dark)",
193
+ "elevation-menu-ag-grid": "var(--shadow-elevation-menu-ag-grid)",
194
+ "elevation-pin-switch": "var(--shadow-elevation-pin-switch)",
195
+ "elevation-select": "var(--shadow-elevation-select)",
196
+ "elevation-settings": "var(--shadow-elevation-settings)",
197
+ "elevation-toast": "var(--shadow-elevation-toast)",
198
+ "elevation-wizard-footer": "var(--shadow-elevation-wizard-footer)"
199
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impact-nova",
3
- "version": "2.1.0-alpha.8",
3
+ "version": "2.1.0-alpha.9",
4
4
  "description": "Enterprise-grade React design system built with React 19, Vite, Tailwind CSS, and Radix UI. Built-in internationalization (i18n) and comprehensive UI component library for scalable, accessible, and performant applications.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -77,7 +77,6 @@
77
77
  ],
78
78
  "files": [
79
79
  "dist",
80
- "tailwind.config.js",
81
80
  "tailwind.config.d.ts",
82
81
  "LICENSE",
83
82
  "README.md"
@@ -438,13 +437,17 @@
438
437
  },
439
438
  "./tailwind.config": {
440
439
  "types": "./tailwind.config.d.ts",
441
- "import": "./tailwind.config.js",
442
- "default": "./tailwind.config.js"
440
+ "import": "./dist/tailwind.config.js",
441
+ "default": "./dist/tailwind.config.js"
443
442
  },
444
443
  "./tailwind.config.js": {
445
444
  "types": "./tailwind.config.d.ts",
446
- "import": "./tailwind.config.js",
447
- "default": "./tailwind.config.js"
445
+ "import": "./dist/tailwind.config.js",
446
+ "default": "./dist/tailwind.config.js"
447
+ },
448
+ "./theme/tailwind-colors": {
449
+ "import": "./dist/theme/tailwind-colors.js",
450
+ "default": "./dist/theme/tailwind-colors.js"
448
451
  },
449
452
  "./dist/*": "./dist/*",
450
453
  "./kbd": {
@@ -485,7 +488,9 @@
485
488
  "validate:theme-editor-metadata": "node scripts/validate-theme-editor-metadata.mjs",
486
489
  "generate:theme-presets": "node scripts/complete-dark-theme.mjs && node scripts/generate-theme-presets.mjs",
487
490
  "validate:theme-presets": "node scripts/validate-theme-presets.mjs",
488
- "build": "node scripts/validate-imports.mjs && npm run build:tokens && npm run validate:token-usage && npm run build:registry && npm run validate:registry && tsc -b && vite build && node scripts/build-css-splits.mjs && node scripts/build-llms.mjs && node scripts/validate-declaration-exports.mjs",
491
+ "build:tailwind-preset": "node scripts/build-tailwind-preset.mjs",
492
+ "validate:published-package": "node scripts/validate-published-package.mjs",
493
+ "build": "node scripts/validate-imports.mjs && npm run build:tokens && npm run build:tailwind-preset && npm run validate:token-usage && npm run build:registry && npm run validate:registry && tsc -b && vite build && node scripts/build-css-splits.mjs && node scripts/build-llms.mjs && node scripts/validate-declaration-exports.mjs && npm run validate:published-package",
489
494
  "analyze": "ANALYZE=true npm run build",
490
495
  "lint": "eslint packages/mcp/src scripts --max-warnings 0",
491
496
  "lint:src": "eslint src --max-warnings 0",
@@ -510,7 +515,7 @@
510
515
  "bundle-budget": "node scripts/bundle-budget.mjs",
511
516
  "bundle-budget:update": "node scripts/bundle-budget.mjs --update",
512
517
  "ci:validate": "npm run validate-imports && npm run validate:docs && npm run validate:export-ssot && npm run build:registry && npm run validate:registry && npm run validate:mcp-sync && npm run validate:charter && npm run validate:factory-rollout && npm run validate:component-tests && npm run validate:component-types && npm run validate:layering && npm run validate:figma-tokens && npm run validate:token-usage && npm run validate:theme-presets && npm run sync:storybook-releases && npm run validate:story-docs && npm run lint && npm run lint:src && npm run typecheck",
513
- "ci:build": "npm run build && npm run test:tree-shaking && npm run bundle-budget",
518
+ "ci:build": "npm run build && npm run validate:published-package && npm run test:tree-shaking && npm run bundle-budget",
514
519
  "ci:storybook": "npm run test:storybook && npm run build-storybook",
515
520
  "ci": "npm run ci:validate && npm run test:coverage:ratchet && npm run ci:build && npm run ci:storybook"
516
521
  },
@@ -1,116 +0,0 @@
1
- import tailwindcssAnimate from "tailwindcss-animate";
2
- import tailwindPlugin from "tailwindcss/plugin";
3
- import { generatedBoxShadow, generatedColors } from "./src/theme/generated/tailwind-colors.js";
4
-
5
- const scrollbarUtilities = tailwindPlugin(({ addUtilities }) => {
6
- addUtilities({
7
- ".scrollbar-hide": {
8
- "-ms-overflow-style": "none",
9
- "scrollbar-width": "none",
10
- },
11
- ".scrollbar-hide::-webkit-scrollbar": {
12
- display: "none",
13
- },
14
- });
15
- });
16
-
17
- /**
18
- * Semantic color roles — generated from src/theme/semantic-map.json.
19
- * Edit semantic-map.json and run `npm run build:tokens`.
20
- */
21
- const baseConfig = {
22
- darkMode: ["class"],
23
- content: [
24
- "./index.html",
25
- "./src/**/*.{js,ts,jsx,tsx}",
26
- "./src/components/ui/**/*.{js,ts,jsx,tsx}",
27
- "./src/components/ui/stories/**/*.{js,ts,jsx,tsx}",
28
- "./.storybook/**/*.{js,ts,jsx,tsx,mdx}",
29
- ],
30
- theme: {
31
- colors: {
32
- transparent: "transparent",
33
- current: "currentColor",
34
- inherit: "inherit",
35
- ...generatedColors,
36
- },
37
- extend: {
38
- fontFamily: {
39
- sans: ["Manrope", "sans-serif"],
40
- },
41
- borderRadius: {
42
- lg: "calc(var(--radius) + 4px)",
43
- md: "var(--radius)",
44
- sm: "calc(var(--radius) - 4px)",
45
- },
46
- boxShadow: generatedBoxShadow,
47
-
48
- keyframes: {
49
- "accordion-down": {
50
- from: { height: "0" },
51
- to: { height: "var(--radix-accordion-content-height)" },
52
- },
53
- "accordion-up": {
54
- from: { height: "var(--radix-accordion-content-height)" },
55
- to: { height: "0" },
56
- },
57
- "collapsible-down": {
58
- from: { height: "0" },
59
- to: { height: "var(--radix-collapsible-content-height)" },
60
- },
61
- "collapsible-up": {
62
- from: { height: "var(--radix-collapsible-content-height)" },
63
- to: { height: "0" },
64
- },
65
- "header-bot-gradient": {
66
- "0%": { backgroundPosition: "0% 50%" },
67
- "50%": { backgroundPosition: "100% 50%" },
68
- "100%": { backgroundPosition: "0% 50%" },
69
- },
70
- "notification-waves": {
71
- "0%": { width: "8px", height: "8px" },
72
- "100%": { width: "16px", height: "16px" },
73
- },
74
- },
75
- animation: {
76
- "accordion-down": "accordion-down 0.2s ease-out",
77
- "accordion-up": "accordion-up 0.2s ease-out",
78
- "collapsible-down": "collapsible-down 0.2s ease-out",
79
- "collapsible-up": "collapsible-up 0.2s ease-out",
80
- "header-bot-gradient": "header-bot-gradient 5s ease infinite",
81
- "header-bot-gradient-fast": "header-bot-gradient 2s ease infinite",
82
- "notification-waves": "notification-waves 1.5s ease-out infinite",
83
- },
84
- },
85
- },
86
- plugins: [tailwindcssAnimate, scrollbarUtilities],
87
- };
88
-
89
- /** @type {import('tailwindcss').Config} */
90
- export default baseConfig;
91
-
92
- /**
93
- * Creates a Tailwind config with custom content paths.
94
- *
95
- * @param {string[]} contentPaths - Array of content paths for your project
96
- * @returns {import('tailwindcss').Config}
97
- *
98
- * @example
99
- * import { createTailwindConfig } from "impact-nova/tailwind.config";
100
- * export default createTailwindConfig(["./index.html", "./src"]);
101
- */
102
- export function createTailwindConfig(contentPaths) {
103
- return {
104
- ...baseConfig,
105
- content: contentPaths,
106
- };
107
- }
108
-
109
- /**
110
- * Tailwind config for apps consuming impact-nova via file: / npm link.
111
- * Single utility pipeline: scan app + impact-nova source (no duplicate impact-nova.css utilities).
112
- */
113
- export function createAppTailwindConfig(appRootDir, appContentPaths) {
114
- const impactNovaSourceGlob = `${appRootDir.replace(/\\/g, "/")}/../impact-nova/src/**/*.{js,ts,jsx,tsx}`;
115
- return createTailwindConfig([...appContentPaths, impactNovaSourceGlob]);
116
- }