impact-nova 1.5.14 → 1.6.0

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.
Files changed (149) hide show
  1. package/dist/components/ui/accordion.d.ts +4 -1
  2. package/dist/components/ui/accordion.js +28 -22
  3. package/dist/components/ui/ag-grid-react/cell-renderers/badge-cell-renderer.js +11 -11
  4. package/dist/components/ui/ag-grid-react/cell-renderers/checkbox-display-renderer.js +12 -12
  5. package/dist/components/ui/ag-grid-react/cell-renderers/date-display-renderer.js +13 -13
  6. package/dist/components/ui/ag-grid-react/cell-renderers/editors/date-cell-editor.js +13 -13
  7. package/dist/components/ui/ag-grid-react/cell-renderers/editors/input-cell-editor.js +30 -30
  8. package/dist/components/ui/ag-grid-react/cell-renderers/editors/percent-progress-cell-editor.js +13 -13
  9. package/dist/components/ui/ag-grid-react/cell-renderers/editors/split-cell-editor.js +16 -16
  10. package/dist/components/ui/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +17 -17
  11. package/dist/components/ui/ag-grid-react/cell-renderers/input-display-renderer.js +11 -11
  12. package/dist/components/ui/ag-grid-react/cell-renderers/link-with-batch-cell-renderer.js +2 -2
  13. package/dist/components/ui/ag-grid-react/cell-renderers/percent-progress-display-renderer.js +11 -13
  14. package/dist/components/ui/ag-grid-react/cell-renderers/select-display-renderer.js +8 -8
  15. package/dist/components/ui/ag-grid-react/cell-renderers/split-cell-renderer.js +6 -6
  16. package/dist/components/ui/ag-grid-react/cell-renderers/status-badge-renderer.d.ts +1 -1
  17. package/dist/components/ui/ag-grid-react/cell-renderers/status-badge-renderer.js +14 -14
  18. package/dist/components/ui/ag-grid-react/cell-renderers/switch-display-renderer.js +18 -18
  19. package/dist/components/ui/ag-grid-react/cell-renderers/textarea-display-renderer.js +6 -6
  20. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +14 -14
  21. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.js +35 -35
  22. package/dist/components/ui/ag-grid-react/headers/column-menu/column-settings-menu.js +49 -49
  23. package/dist/components/ui/ag-grid-react/headers/components/header-info.js +29 -29
  24. package/dist/components/ui/ag-grid-react/headers/components/info-modal.js +9 -9
  25. package/dist/components/ui/ag-grid-react/headers/components/section-renderers.js +20 -20
  26. package/dist/components/ui/ag-grid-react/headers/custom-header-group.js +10 -10
  27. package/dist/components/ui/ag-grid-react/headers/custom-header.js +76 -76
  28. package/dist/components/ui/ag-grid-react/headers/header-search-input.js +118 -118
  29. package/dist/components/ui/ag-grid-react/index.js +121 -102
  30. package/dist/components/ui/alert-dialog.js +6 -6
  31. package/dist/components/ui/alert.d.ts +4 -3
  32. package/dist/components/ui/alert.js +182 -64
  33. package/dist/components/ui/avatar.js +5 -5
  34. package/dist/components/ui/badge.d.ts +7 -2
  35. package/dist/components/ui/badge.js +105 -32
  36. package/dist/components/ui/breadcrumb.js +26 -21
  37. package/dist/components/ui/button-group.d.ts +7 -0
  38. package/dist/components/ui/button-group.js +116 -91
  39. package/dist/components/ui/button-variants.d.ts +7 -2
  40. package/dist/components/ui/button-variants.js +31 -16
  41. package/dist/components/ui/button.d.ts +2 -2
  42. package/dist/components/ui/button.js +10 -10
  43. package/dist/components/ui/calendar.js +185 -184
  44. package/dist/components/ui/card.js +24 -24
  45. package/dist/components/ui/chart/chart.js +27 -27
  46. package/dist/components/ui/chart/chart.utils.js +50 -50
  47. package/dist/components/ui/checkbox.js +22 -22
  48. package/dist/components/ui/chips.d.ts +19 -3
  49. package/dist/components/ui/chips.js +140 -41
  50. package/dist/components/ui/command-palette/command-palette-layout.d.ts +28 -0
  51. package/dist/components/ui/command-palette/command-palette-layout.js +59 -0
  52. package/dist/components/ui/command-palette/command-palette.js +254 -264
  53. package/dist/components/ui/command-palette/index.d.ts +1 -1
  54. package/dist/components/ui/command-palette/index.js +42 -41
  55. package/dist/components/ui/command-palette/kbd.js +18 -18
  56. package/dist/components/ui/command-palette/shortcut-settings.d.ts +3 -3
  57. package/dist/components/ui/command-palette/shortcut-settings.js +105 -111
  58. package/dist/components/ui/command-palette/utils.d.ts +6 -1
  59. package/dist/components/ui/command-palette/utils.js +81 -74
  60. package/dist/components/ui/data-table/data-table-column-list.js +31 -31
  61. package/dist/components/ui/data-table/data-table-constants.d.ts +6 -0
  62. package/dist/components/ui/data-table/data-table-constants.js +4 -0
  63. package/dist/components/ui/data-table/data-table-context.d.ts +4 -0
  64. package/dist/components/ui/data-table/data-table-format-options.js +35 -35
  65. package/dist/components/ui/data-table/data-table-sheet.d.ts +4 -4
  66. package/dist/components/ui/data-table/data-table-sheet.js +91 -58
  67. package/dist/components/ui/data-table/data-table-view-options.js +29 -29
  68. package/dist/components/ui/data-table/data-table.js +84 -52
  69. package/dist/components/ui/data-table/index.d.ts +1 -0
  70. package/dist/components/ui/data-table/index.js +15 -13
  71. package/dist/components/ui/date-picker/date-picker.js +35 -35
  72. package/dist/components/ui/date-picker/date-range-picker.js +166 -164
  73. package/dist/components/ui/date-picker/month-picker.js +14 -14
  74. package/dist/components/ui/date-picker/month-range-picker.js +198 -189
  75. package/dist/components/ui/date-picker/multi-date-picker.js +14 -14
  76. package/dist/components/ui/date-picker/multi-month-picker.js +1 -1
  77. package/dist/components/ui/date-picker/multi-week-picker.js +1 -1
  78. package/dist/components/ui/date-picker/week-picker.js +2 -2
  79. package/dist/components/ui/date-picker/week-range-picker.js +164 -162
  80. package/dist/components/ui/dialog.js +25 -28
  81. package/dist/components/ui/drawer.js +40 -40
  82. package/dist/components/ui/dropdown-menu.js +72 -72
  83. package/dist/components/ui/empty-container.js +73 -69
  84. package/dist/components/ui/file-upload.js +137 -135
  85. package/dist/components/ui/filter-panel/filter-panel.d.ts +2 -2
  86. package/dist/components/ui/filter-panel/filter-panel.js +175 -97
  87. package/dist/components/ui/filter-strip/filter-strip.d.ts +1 -1
  88. package/dist/components/ui/filter-strip/filter-strip.js +63 -50
  89. package/dist/components/ui/filter-strip/filter-summary.d.ts +4 -1
  90. package/dist/components/ui/filter-strip/filter-summary.js +230 -146
  91. package/dist/components/ui/filter-strip/filter-tag-list.js +125 -91
  92. package/dist/components/ui/header.d.ts +7 -3
  93. package/dist/components/ui/header.js +87 -79
  94. package/dist/components/ui/horizontal-scroller/horizontal-scroller.js +44 -44
  95. package/dist/components/ui/hover-card.js +10 -10
  96. package/dist/components/ui/input.js +79 -70
  97. package/dist/components/ui/loader.js +16 -16
  98. package/dist/components/ui/nested-list/components/NestedListCategoryFilters.js +16 -16
  99. package/dist/components/ui/nested-list/components/NestedListHeader.js +27 -27
  100. package/dist/components/ui/nested-list/components/SortableItem.js +58 -58
  101. package/dist/components/ui/notification-panel/notification-item.js +32 -32
  102. package/dist/components/ui/notification-panel/notification-list.js +24 -24
  103. package/dist/components/ui/notification-panel/notification-panel.js +26 -26
  104. package/dist/components/ui/popover.js +22 -22
  105. package/dist/components/ui/progress.js +34 -34
  106. package/dist/components/ui/prompt.js +48 -48
  107. package/dist/components/ui/radio-group.js +63 -54
  108. package/dist/components/ui/select/components/LabelWithSequence.js +6 -6
  109. package/dist/components/ui/select/components/Submenu.js +33 -33
  110. package/dist/components/ui/select/select.js +425 -376
  111. package/dist/components/ui/sheet.js +88 -66
  112. package/dist/components/ui/sidebar.js +342 -296
  113. package/dist/components/ui/skeleton.js +6 -6
  114. package/dist/components/ui/slider.js +17 -17
  115. package/dist/components/ui/statistics-card.d.ts +86 -0
  116. package/dist/components/ui/statistics-card.hooks.d.ts +150 -0
  117. package/dist/components/ui/statistics-card.hooks.js +100 -0
  118. package/dist/components/ui/statistics-card.js +259 -0
  119. package/dist/components/ui/stepper.js +51 -51
  120. package/dist/components/ui/switch.js +7 -7
  121. package/dist/components/ui/tabs.js +70 -70
  122. package/dist/components/ui/tag-group.d.ts +1 -0
  123. package/dist/components/ui/tag-group.js +14 -13
  124. package/dist/components/ui/tag.js +43 -43
  125. package/dist/components/ui/textarea.js +86 -58
  126. package/dist/components/ui/toast.js +39 -39
  127. package/dist/components/ui/tooltip.js +23 -23
  128. package/dist/components/ui/types/date-picker.types.d.ts +1 -0
  129. package/dist/components/ui/types/filter-panel.types.d.ts +3 -0
  130. package/dist/components/ui/types/filter-strip.types.d.ts +14 -0
  131. package/dist/components/ui/types/horizontal-scroller.types.d.ts +1 -1
  132. package/dist/components/ui/types/statistics-card.types.d.ts +1 -0
  133. package/dist/i18n/defaultMessages.d.ts +8 -0
  134. package/dist/i18n/defaultMessages.js +15 -9
  135. package/dist/i18n/locales/de.js +7 -1
  136. package/dist/i18n/locales/es.js +7 -1
  137. package/dist/i18n/locales/hi.js +7 -1
  138. package/dist/i18n/locales/kn.js +7 -1
  139. package/dist/icons/assets/bulk-edit.svg.js +5 -0
  140. package/dist/icons/assets/clock.svg.js +5 -0
  141. package/dist/icons/assets/statistics.svg.js +5 -0
  142. package/dist/icons/index.d.ts +3 -0
  143. package/dist/icons/index.js +254 -206
  144. package/dist/impact-nova.css +1 -1
  145. package/dist/index.d.ts +1 -0
  146. package/dist/index.js +361 -347
  147. package/package.json +3 -2
  148. package/tailwind.config.js +259 -152
  149. /package/dist/icons/assets/{PivotMode.svg.js → pivotMode.svg.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impact-nova",
3
- "version": "1.5.14",
3
+ "version": "1.6.0",
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",
@@ -529,7 +529,8 @@
529
529
  "scripts": {
530
530
  "dev": "vite",
531
531
  "prepublishOnly": "npm i && npm run build",
532
- "build": "tsc -b && vite build",
532
+ "validate-imports": "node scripts/validate-imports.mjs",
533
+ "build": "node scripts/validate-imports.mjs && tsc -b && vite build",
533
534
  "lint": "eslint .",
534
535
  "preview": "vite preview",
535
536
  "storybook": "storybook dev -p 6006",
@@ -1,8 +1,29 @@
1
1
  import tailwindcssAnimate from "tailwindcss-animate";
2
+ import tailwindPlugin from "tailwindcss/plugin";
2
3
 
4
+ const scrollbarUtilities = tailwindPlugin(({ addUtilities }) => {
5
+ addUtilities({
6
+ ".scrollbar-hide": {
7
+ "-ms-overflow-style": "none",
8
+ "scrollbar-width": "none",
9
+ },
10
+ ".scrollbar-hide::-webkit-scrollbar": {
11
+ display: "none",
12
+ },
13
+ });
14
+ });
15
+
16
+ /** Semantic color token from `index.scss` (hex value inside the variable). */
17
+ const cssVar = (name) => `var(${name})`;
18
+
19
+ /**
20
+ * Semantic color roles (maps to --color-* in index.scss).
21
+ * Naming: canvas / content / brand / stroke / field / focus / feedback / navigation / domain
22
+ * matches common design-system layers (surface, typography, brand, borders, forms, status, shell).
23
+ */
3
24
  const baseConfig = {
4
- darkMode: ["class"],
5
- content: [
25
+ darkMode: ["class"],
26
+ content: [
6
27
  "./index.html",
7
28
  "./src/**/*.{js,ts,jsx,tsx}",
8
29
  "./src/components/ui/**/*.{js,ts,jsx,tsx}",
@@ -10,153 +31,241 @@ const baseConfig = {
10
31
  "./.storybook/**/*.{js,ts,jsx,tsx,mdx}",
11
32
  ],
12
33
  theme: {
13
- extend: {
14
- fontFamily: {
15
- sans: [
16
- 'Manrope',
17
- 'sans-serif'
18
- ]
19
- },
20
- borderRadius: {
21
- lg: 'calc(var(--radius) + 4px)',
22
- md: 'var(--radius)',
23
- sm: 'calc(var(--radius) - 4px)'
24
- },
25
- colors: {
26
- background: 'hsl(var(--background))',
27
- foreground: 'hsl(var(--foreground))',
28
- card: {
29
- DEFAULT: 'hsl(var(--card))',
30
- foreground: 'hsl(var(--card-foreground))'
31
- },
32
- popover: {
33
- DEFAULT: 'hsl(var(--popover))',
34
- foreground: 'hsl(var(--popover-foreground))'
35
- },
36
- primary: {
37
- DEFAULT: 'hsl(var(--primary))',
38
- foreground: 'hsl(var(--primary-foreground))',
39
- '700': 'hsl(var(--primary-700))',
40
- 'subtle-bg': 'hsl(var(--subtle-primary-bg))',
41
- 'subtle-text': 'hsl(var(--subtle-primary-text))'
42
- },
43
- secondary: {
44
- DEFAULT: 'hsl(var(--secondary))',
45
- foreground: 'hsl(var(--secondary-foreground))',
46
- 'hover-foreground': 'hsl(var(--secondary-hover-foreground))'
47
- },
48
- tertiary: {
49
- border: 'hsl(var(--tertiary-border))'
50
- },
51
- disabled: {
52
- primary: 'hsl(var(--tertiary-border))',
53
- 'secondary-bg': 'hsl(var(--disabled-secondary-bg))',
54
- text: 'hsl(var(--disabled-text))'
55
- },
56
- muted: {
57
- DEFAULT: 'hsl(var(--muted))',
58
- foreground: 'hsl(var(--muted-foreground))'
59
- },
60
- accent: {
61
- DEFAULT: 'hsl(var(--accent))',
62
- foreground: 'hsl(var(--accent-foreground))'
63
- },
64
- destructive: {
65
- DEFAULT: 'hsl(var(--destructive))',
66
- foreground: 'hsl(var(--destructive-foreground))'
67
- },
68
- border: 'hsl(var(--border))',
69
- 'border-subtle': 'hsl(var(--border-subtle))',
70
- 'light-blue': 'hsl(var(--light-blue))',
71
- 'accordion-bg': 'hsl(var(--accordion-bg))',
72
- success: 'hsl(var(--success))',
73
- warning: 'hsl(var(--warning))',
74
- info: {
75
- bg: 'hsl(var(--info-bg))',
76
- border: 'hsl(var(--info-border))'
77
- },
78
- 'warning-alert': {
79
- bg: 'hsl(var(--warning-bg))',
80
- border: 'hsl(var(--warning-border))'
81
- },
82
- 'error-alert': {
83
- bg: 'hsl(var(--error-bg))',
84
- border: 'hsl(var(--error-border))'
85
- },
86
- 'success-alert': {
87
- bg: 'hsl(var(--success-bg))',
88
- border: 'hsl(var(--success-border))'
89
- },
90
- input: 'hsl(var(--input))',
91
- ring: 'hsl(var(--ring))',
92
- chart: {
93
- '1': 'hsl(var(--chart-1))',
94
- '2': 'hsl(var(--chart-2))',
95
- '3': 'hsl(var(--chart-3))',
96
- '4': 'hsl(var(--chart-4))',
97
- '5': 'hsl(var(--chart-5))'
98
- },
99
- sidebar: {
100
- DEFAULT: 'hsl(var(--sidebar-background))',
101
- foreground: 'hsl(var(--sidebar-foreground))',
102
- primary: 'hsl(var(--sidebar-primary))',
103
- 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',
104
- accent: 'hsl(var(--sidebar-accent))',
105
- 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',
106
- border: 'hsl(var(--sidebar-border))',
107
- ring: 'hsl(var(--sidebar-ring))',
108
- 'active-accent': 'hsl(var(--sidebar-active-accent))'
109
- },
110
- 'sidebar-light': 'hsl(var(--sidebar-light))',
111
- 'active-blue': 'hsl(var(--active-blue-light))',
112
- 'error': 'hsl(var(--color-error))',
113
- 'primary-hover': 'hsl(var(--primary-hover))',
114
- 'text-secondary': 'hsl(var(--text-secondary-cool))',
115
- 'icon-gray': 'hsl(var(--icon-gray))',
116
- },
117
- keyframes: {
118
- 'accordion-down': {
119
- from: {
120
- height: '0'
121
- },
122
- to: {
123
- height: 'var(--radix-accordion-content-height)'
124
- }
125
- },
126
- 'accordion-up': {
127
- from: {
128
- height: 'var(--radix-accordion-content-height)'
129
- },
130
- to: {
131
- height: '0'
132
- }
133
- },
134
- 'collapsible-down': {
135
- from: {
136
- height: '0'
137
- },
138
- to: {
139
- height: 'var(--radix-collapsible-content-height)'
140
- }
141
- },
142
- 'collapsible-up': {
143
- from: {
144
- height: 'var(--radix-collapsible-content-height)'
145
- },
146
- to: {
147
- height: '0'
148
- }
149
- }
150
- },
151
- animation: {
152
- 'accordion-down': 'accordion-down 0.2s ease-out',
153
- 'accordion-up': 'accordion-up 0.2s ease-out',
154
- 'collapsible-down': 'collapsible-down 0.2s ease-out',
155
- 'collapsible-up': 'collapsible-up 0.2s ease-out'
156
- }
157
- }
34
+ extend: {
35
+ fontFamily: {
36
+ sans: ["Manrope", "sans-serif"],
37
+ },
38
+ borderRadius: {
39
+ lg: "calc(var(--radius) + 4px)",
40
+ md: "var(--radius)",
41
+ sm: "calc(var(--radius) - 4px)",
42
+ },
43
+ boxShadow: {
44
+ "elevation-floating": "0px 0px 4px 0px rgb(0 0 0 / 12%)",
45
+ "elevation-select": "0px 1px 6px 0px rgb(26 39 124 / 14%)",
46
+ "elevation-header": "0px 0px 16px 2px rgb(0 0 0 / 6%)",
47
+ "elevation-card": "0px 2px 8px 0px rgb(0 0 0 / 5%)",
48
+ "elevation-toast": "0px 10px 30px 0px rgb(0 0 0 / 15%)",
49
+ "elevation-dialog-footer": "0 -4px 6px -1px rgb(0 0 0 / 5%)",
50
+ "elevation-settings": "0px 0px 2px 0px rgb(0 0 0 / 25%)",
51
+ "alert-elevated": "var(--shadow-alert-elevated)",
52
+ },
53
+ colors: {
54
+ /* Page & elevation */
55
+ canvas: {
56
+ DEFAULT: cssVar("--color-background"),
57
+ elevated: {
58
+ DEFAULT: cssVar("--color-surface-elevated"),
59
+ foreground: cssVar("--color-surface-elevated-foreground"),
60
+ },
61
+ overlay: {
62
+ DEFAULT: cssVar("--color-surface-floating"),
63
+ foreground: cssVar("--color-surface-floating-foreground"),
64
+ },
65
+ muted: cssVar("--color-surface-muted"),
66
+ wash: cssVar("--color-surface-canvas"),
67
+ disabled: cssVar("--color-surface-input-disabled"),
68
+ readonly: cssVar("--color-surface-readonly"),
69
+ accent: cssVar("--color-surface-selection-tint"),
70
+ tint: cssVar("--color-surface-tint-blue"),
71
+ accordion: cssVar("--color-surface-accordion"),
72
+ },
73
+
74
+ /* Typography & neutral text */
75
+ content: {
76
+ DEFAULT: cssVar("--color-foreground"),
77
+ secondary: cssVar("--color-foreground-secondary"),
78
+ tertiary: cssVar("--color-foreground-tertiary"),
79
+ placeholder: cssVar("--color-foreground-placeholder"),
80
+ empty: cssVar("--color-foreground-empty"),
81
+ muted: cssVar("--color-muted-foreground"),
82
+ icon: cssVar("--color-foreground-icon"),
83
+ "header-notification": cssVar("--color-header-notification-icon"),
84
+ charcoal: cssVar("--color-neutral-charcoal"),
85
+ badge: cssVar("--color-neutral-badge"),
86
+ },
87
+
88
+ /* Brand / primary interactive */
89
+ brand: {
90
+ DEFAULT: cssVar("--color-primary"),
91
+ foreground: cssVar("--color-primary-foreground"),
92
+ strong: cssVar("--color-primary-strong"),
93
+ hover: cssVar("--color-primary-hover"),
94
+ subtle: cssVar("--color-primary-surface-subtle"),
95
+ "on-subtle": cssVar("--color-primary-on-surface-subtle"),
96
+ highlight: cssVar("--color-primary-selection"),
97
+ /* Soft brand fill — IA DS #ECEEFD; same hex as --color-accent */
98
+ tint: cssVar("--color-primary-soft"),
99
+ "tint-hover": cssVar("--color-primary-soft-hover"),
100
+ variant: cssVar("--color-primary-variant"),
101
+ "variant-hover": cssVar("--color-primary-variant-hover"),
102
+ },
103
+
104
+ /* Secondary & accent (interaction surfaces) */
105
+ secondary: {
106
+ DEFAULT: cssVar("--color-secondary"),
107
+ foreground: cssVar("--color-secondary-foreground"),
108
+ "hover-foreground": cssVar("--color-secondary-hover-foreground"),
109
+ },
110
+ accent: {
111
+ DEFAULT: cssVar("--color-accent"),
112
+ foreground: cssVar("--color-accent-foreground"),
113
+ },
114
+ muted: {
115
+ DEFAULT: cssVar("--color-muted"),
116
+ },
117
+
118
+ /* Borders & dividers */
119
+ stroke: {
120
+ DEFAULT: cssVar("--color-border"),
121
+ subtle: cssVar("--color-border-subtle"),
122
+ hairline: cssVar("--color-border-hairline"),
123
+ strong: cssVar("--color-border-strong"),
124
+ accent: cssVar("--color-border-accent-muted"),
125
+ track: cssVar("--color-track-muted"),
126
+ field: cssVar("--color-border-tertiary"),
127
+ },
128
+
129
+ /* Form control chrome */
130
+ field: {
131
+ border: cssVar("--color-input"),
132
+ },
133
+ focus: {
134
+ ring: cssVar("--color-ring"),
135
+ },
136
+ disabled: {
137
+ border: cssVar("--color-disabled-border"),
138
+ surface: cssVar("--color-disabled-surface"),
139
+ foreground: cssVar("--color-disabled-foreground"),
140
+ },
141
+ validation: {
142
+ DEFAULT: cssVar("--color-danger-validation"),
143
+ },
144
+
145
+ /* Semantic status */
146
+ destructive: {
147
+ DEFAULT: cssVar("--color-destructive"),
148
+ foreground: cssVar("--color-destructive-foreground"),
149
+ hover: cssVar("--color-destructive-hover"),
150
+ },
151
+ success: {
152
+ DEFAULT: cssVar("--color-success"),
153
+ foreground: cssVar("--color-success-foreground"),
154
+ },
155
+ warning: cssVar("--color-warning"),
156
+ danger: cssVar("--color-danger-bright"),
157
+
158
+ /* Alert / inline feedback surfaces */
159
+ /* Badge pills — IA v3.1 */
160
+ button: {
161
+ "primary-disabled": cssVar("--color-button-primary-disabled"),
162
+ },
163
+
164
+ badge: {
165
+ neutral: {
166
+ muted: cssVar("--color-badge-neutral-muted"),
167
+ },
168
+ info: {
169
+ filled: cssVar("--color-badge-info-filled"),
170
+ muted: cssVar("--color-badge-info-muted"),
171
+ },
172
+ warning: {
173
+ filled: cssVar("--color-badge-warning-filled"),
174
+ muted: cssVar("--color-badge-warning-muted"),
175
+ ink: cssVar("--color-badge-warning-text"),
176
+ },
177
+ error: {
178
+ filled: cssVar("--color-badge-error-filled"),
179
+ muted: cssVar("--color-badge-error-muted"),
180
+ ink: cssVar("--color-badge-error-text"),
181
+ },
182
+ success: {
183
+ filled: cssVar("--color-badge-success-filled"),
184
+ muted: cssVar("--color-badge-success-muted"),
185
+ ink: cssVar("--color-badge-success-text"),
186
+ },
187
+ },
188
+
189
+ feedback: {
190
+ info: {
191
+ surface: cssVar("--color-info-surface"),
192
+ border: cssVar("--color-info-border"),
193
+ },
194
+ warning: {
195
+ surface: cssVar("--color-warning-surface"),
196
+ border: cssVar("--color-warning-border"),
197
+ },
198
+ error: {
199
+ surface: cssVar("--color-error-surface"),
200
+ border: cssVar("--color-error-border"),
201
+ },
202
+ success: {
203
+ surface: cssVar("--color-success-surface"),
204
+ border: cssVar("--color-success-border"),
205
+ },
206
+ },
207
+
208
+ /* Data visualization */
209
+ chart: {
210
+ 1: cssVar("--color-chart-1"),
211
+ 2: cssVar("--color-chart-2"),
212
+ 3: cssVar("--color-chart-3"),
213
+ 4: cssVar("--color-chart-4"),
214
+ 5: cssVar("--color-chart-5"),
215
+ },
216
+ domain: {
217
+ cohort: cssVar("--color-data-cohort"),
218
+ },
219
+
220
+ /* Application navigation shell */
221
+ /* Modal / overlay backdrop (IA: neutral scrim) */
222
+ scrim: "hsl(0 0% 0% / 0.4)",
223
+ "scrim-deep": "hsl(0 0% 0% / 0.8)",
224
+
225
+ navigation: {
226
+ DEFAULT: cssVar("--color-sidebar-background"),
227
+ foreground: cssVar("--color-sidebar-foreground"),
228
+ surface: cssVar("--color-sidebar-surface"),
229
+ "on-surface": cssVar("--color-sidebar-on-surface"),
230
+ hover: cssVar("--color-sidebar-hover"),
231
+ "on-hover": cssVar("--color-sidebar-on-hover"),
232
+ border: cssVar("--color-sidebar-border"),
233
+ ring: cssVar("--color-sidebar-ring"),
234
+ indicator: cssVar("--color-sidebar-indicator"),
235
+ "item-hover": cssVar("--color-sidebar-item-hover"),
236
+ "item-active": cssVar("--color-sidebar-item-active"),
237
+ muted: cssVar("--color-sidebar-foreground-muted"),
238
+ canvas: cssVar("--color-sidebar-canvas"),
239
+ },
240
+ },
241
+
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
+ },
260
+ animation: {
261
+ "accordion-down": "accordion-down 0.2s ease-out",
262
+ "accordion-up": "accordion-up 0.2s ease-out",
263
+ "collapsible-down": "collapsible-down 0.2s ease-out",
264
+ "collapsible-up": "collapsible-up 0.2s ease-out",
265
+ },
266
+ },
158
267
  },
159
- plugins: [tailwindcssAnimate]
268
+ plugins: [tailwindcssAnimate, scrollbarUtilities],
160
269
  };
161
270
 
162
271
  /** @type {import('tailwindcss').Config} */
@@ -164,11 +273,10 @@ export default baseConfig;
164
273
 
165
274
  /**
166
275
  * Creates a Tailwind config with custom content paths.
167
- * Use this when you need to override the content paths for your project.
168
- *
276
+ *
169
277
  * @param {string[]} contentPaths - Array of content paths for your project
170
278
  * @returns {import('tailwindcss').Config}
171
- *
279
+ *
172
280
  * @example
173
281
  * import { createTailwindConfig } from "impact-nova/tailwind.config";
174
282
  * export default createTailwindConfig(["./index.html", "./src"]);
@@ -179,4 +287,3 @@ export function createTailwindConfig(contentPaths) {
179
287
  content: contentPaths,
180
288
  };
181
289
  }
182
-