@vadimcomanescu/nadicode-design-system 2.0.6 → 2.0.7

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 (177) hide show
  1. package/.agents/skills/seed/contract.md +1 -0
  2. package/.agents/skills/seed/recipes/marketing-shell.md +10 -19
  3. package/.agents/skills/seed/recipes/navigation-shell.md +5 -5
  4. package/.agents/skills/seed/recipes/service-detail.md +1 -1
  5. package/.agents/skills/seed/references/blocks.md +25 -24
  6. package/.agents/skills/seed/references/brand-override.md +3 -1
  7. package/css/tokens.css +300 -122
  8. package/dist/catalog.json +1926 -125
  9. package/dist/chunk-2BADJLMV.js +117 -0
  10. package/dist/chunk-35EX5FP5.js +106 -0
  11. package/dist/chunk-5PORR6LE.js +60 -0
  12. package/dist/chunk-5PZ4VR2D.js +142 -0
  13. package/dist/chunk-5UESKK6S.js +76 -0
  14. package/dist/chunk-6N6CSJVE.js +269 -0
  15. package/dist/chunk-AURJQZC4.js +110 -0
  16. package/dist/{chunk-DF47R6LN.js → chunk-AWIG4QN6.js} +9 -9
  17. package/dist/chunk-AYWL4IYM.js +67 -0
  18. package/dist/{chunk-SV3KZ6CB.js → chunk-DSMGCFMJ.js} +7 -2
  19. package/dist/chunk-E4L6LR6P.js +33 -0
  20. package/dist/chunk-EJNF6JLL.js +105 -0
  21. package/dist/chunk-FX23F33E.js +57 -0
  22. package/dist/chunk-GJPTPLCQ.js +52 -0
  23. package/dist/chunk-GV4PKHG4.js +147 -0
  24. package/dist/chunk-HJ3A2YNO.js +163 -0
  25. package/dist/chunk-HJZRSPWB.js +38 -0
  26. package/dist/chunk-IDKZEPWK.js +133 -0
  27. package/dist/chunk-K7NQ6ZAW.js +84 -0
  28. package/dist/chunk-LCKLZ4XK.js +60 -0
  29. package/dist/chunk-MX5FUFQR.js +205 -0
  30. package/dist/chunk-NEHCPO53.js +44 -0
  31. package/dist/chunk-OHOOQUVJ.js +113 -0
  32. package/dist/chunk-QIHA7S3A.js +36 -0
  33. package/dist/chunk-RKQPU75I.js +126 -0
  34. package/dist/chunk-RMLS2QUC.js +77 -0
  35. package/dist/chunk-TS2JSPQR.js +120 -0
  36. package/dist/chunk-TUKZKU72.js +110 -0
  37. package/dist/chunk-TZXZFSD2.js +33 -0
  38. package/dist/chunk-UGV45DH3.js +18 -0
  39. package/dist/chunk-VBZQ4DBE.js +52 -0
  40. package/dist/{chunk-LQLFA2EL.js → chunk-VDONTZZX.js} +2 -2
  41. package/dist/{chunk-RWNJ54CI.js → chunk-VN475YZS.js} +1 -1
  42. package/dist/chunk-VZCB4APK.js +94 -0
  43. package/dist/chunk-W7FXDRQJ.js +94 -0
  44. package/dist/chunk-WAVU744B.js +183 -0
  45. package/dist/{chunk-5I3FWRC5.js → chunk-WOYBVPXK.js} +10 -10
  46. package/dist/chunk-WST5NLLC.js +73 -0
  47. package/dist/chunk-X6VXWEDO.js +125 -0
  48. package/dist/chunk-ZM2NODUK.js +39 -0
  49. package/dist/components/blocks/AccountLockedBlock.js +7 -57
  50. package/dist/components/blocks/ActivityFeedBlock.js +6 -39
  51. package/dist/components/blocks/AgentConversationBlock.js +5 -33
  52. package/dist/components/blocks/AudioVisualizerBlock.d.ts +1 -1
  53. package/dist/components/blocks/AudioVisualizerBlock.js +2 -2
  54. package/dist/components/blocks/AuthSuccessBlock.js +5 -60
  55. package/dist/components/blocks/BarChartBlock.d.ts +1 -1
  56. package/dist/components/blocks/BarChartBlock.js +2 -2
  57. package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
  58. package/dist/components/blocks/CallToActionBlock.js +6 -52
  59. package/dist/components/blocks/ChangelogBlock.js +8 -105
  60. package/dist/components/blocks/ChartCollectionBlock.js +2 -2
  61. package/dist/components/blocks/CodeBlock.js +7 -60
  62. package/dist/components/blocks/ComparisonBlock.js +9 -94
  63. package/dist/components/blocks/ContactBlock.js +11 -120
  64. package/dist/components/blocks/FAQBlock.js +6 -44
  65. package/dist/components/blocks/FeatureBlock.d.ts +10 -14
  66. package/dist/components/blocks/FeatureBlock.js +17 -159
  67. package/dist/components/blocks/FeatureGridBlock.d.ts +1 -1
  68. package/dist/components/blocks/FeatureGridBlock.js +2 -2
  69. package/dist/components/blocks/FooterBlock.d.ts +2 -2
  70. package/dist/components/blocks/FooterBlock.js +11 -67
  71. package/dist/components/blocks/HeaderBlock.d.ts +2 -2
  72. package/dist/components/blocks/HeaderBlock.js +1 -1
  73. package/dist/components/blocks/HeatmapChartBlock.d.ts +1 -1
  74. package/dist/components/blocks/HeatmapChartBlock.js +1 -1
  75. package/dist/components/blocks/HeroBlock.d.ts +6 -3
  76. package/dist/components/blocks/HeroBlock.js +16 -199
  77. package/dist/components/blocks/HeroSectionBlock.d.ts +1 -1
  78. package/dist/components/blocks/HeroSectionBlock.js +4 -4
  79. package/dist/components/blocks/IntegrationsBlock.d.ts +1 -1
  80. package/dist/components/blocks/IntegrationsBlock.js +4 -4
  81. package/dist/components/blocks/InteractiveAreaChartBlock.d.ts +1 -1
  82. package/dist/components/blocks/InteractiveAreaChartBlock.js +2 -2
  83. package/dist/components/blocks/NewsletterBlock.js +11 -84
  84. package/dist/components/blocks/PasswordRecoveryBlock.js +14 -142
  85. package/dist/components/blocks/PricingBlock.d.ts +1 -1
  86. package/dist/components/blocks/PricingBlock.js +11 -110
  87. package/dist/components/blocks/ProcessFlowBlock.js +10 -77
  88. package/dist/components/blocks/ResetPasswordBlock.js +11 -125
  89. package/dist/components/blocks/SignUpBlock.d.ts +1 -1
  90. package/dist/components/blocks/SignUpBlock.js +2 -2
  91. package/dist/components/blocks/SocialProofBlock.d.ts +7 -11
  92. package/dist/components/blocks/SocialProofBlock.js +8 -107
  93. package/dist/components/blocks/StatsBlock.d.ts +1 -1
  94. package/dist/components/blocks/StatsBlock.js +2 -2
  95. package/dist/components/blocks/StatsMarketingBlock.d.ts +1 -1
  96. package/dist/components/blocks/StatsMarketingBlock.js +5 -36
  97. package/dist/components/blocks/TeamBlock.d.ts +1 -1
  98. package/dist/components/blocks/TeamBlock.js +4 -52
  99. package/dist/components/blocks/TestimonialsBlock.d.ts +1 -1
  100. package/dist/components/blocks/TestimonialsBlock.js +4 -133
  101. package/dist/components/blocks/TwoFactorChallengeBlock.js +9 -94
  102. package/dist/components/blocks/TwoFactorSetupBlock.js +16 -183
  103. package/dist/components/blocks/UsageDonutBlock.d.ts +1 -1
  104. package/dist/components/blocks/UsageDonutBlock.js +2 -2
  105. package/dist/components/logos/index.js +2 -2
  106. package/dist/components/page-kits/AccountLockedPageKit.d.ts +10 -0
  107. package/dist/components/page-kits/AccountLockedPageKit.js +48 -0
  108. package/dist/components/page-kits/AgentsChatPageKit.d.ts +46 -0
  109. package/dist/components/page-kits/AgentsChatPageKit.js +289 -0
  110. package/dist/components/page-kits/AnalyticsPageKit.d.ts +49 -0
  111. package/dist/components/page-kits/AnalyticsPageKit.js +277 -0
  112. package/dist/components/page-kits/BlogContentPageKit.d.ts +64 -0
  113. package/dist/components/page-kits/BlogContentPageKit.js +296 -0
  114. package/dist/components/page-kits/CheckoutPageKit.d.ts +36 -0
  115. package/dist/components/page-kits/CheckoutPageKit.js +209 -0
  116. package/dist/components/page-kits/CompanySuitePageKit.d.ts +25 -0
  117. package/dist/components/page-kits/CompanySuitePageKit.js +240 -0
  118. package/dist/components/page-kits/CrudFormPageKit.d.ts +54 -0
  119. package/dist/components/page-kits/CrudFormPageKit.js +138 -0
  120. package/dist/components/page-kits/CrudListDetailPageKit.d.ts +70 -0
  121. package/dist/components/page-kits/CrudListDetailPageKit.js +138 -0
  122. package/dist/components/page-kits/DashboardPageKit.d.ts +39 -0
  123. package/dist/components/page-kits/DashboardPageKit.js +284 -0
  124. package/dist/components/page-kits/ErrorPageKit.d.ts +22 -0
  125. package/dist/components/page-kits/ErrorPageKit.js +55 -0
  126. package/dist/components/page-kits/KanbanBoardPageKit.d.ts +31 -0
  127. package/dist/components/page-kits/KanbanBoardPageKit.js +305 -0
  128. package/dist/components/page-kits/LandingPageKit.d.ts +29 -0
  129. package/dist/components/page-kits/LandingPageKit.js +221 -0
  130. package/dist/components/page-kits/LoginPageKit.d.ts +16 -0
  131. package/dist/components/page-kits/LoginPageKit.js +43 -0
  132. package/dist/components/page-kits/MarketingShellPageKit.d.ts +21 -0
  133. package/dist/components/page-kits/MarketingShellPageKit.js +131 -0
  134. package/dist/components/page-kits/NavigationShellPageKit.d.ts +41 -0
  135. package/dist/components/page-kits/NavigationShellPageKit.js +132 -0
  136. package/dist/components/page-kits/OnboardingPageKit.d.ts +26 -0
  137. package/dist/components/page-kits/OnboardingPageKit.js +248 -0
  138. package/dist/components/page-kits/PricingPageKit.d.ts +41 -0
  139. package/dist/components/page-kits/PricingPageKit.js +279 -0
  140. package/dist/components/page-kits/ProfileSettingsPageKit.d.ts +50 -0
  141. package/dist/components/page-kits/ProfileSettingsPageKit.js +171 -0
  142. package/dist/components/page-kits/RecoveryPageKit.d.ts +17 -0
  143. package/dist/components/page-kits/RecoveryPageKit.js +58 -0
  144. package/dist/components/page-kits/ResetPageKit.d.ts +14 -0
  145. package/dist/components/page-kits/ResetPageKit.js +52 -0
  146. package/dist/components/page-kits/ServiceSuitePageKit.d.ts +25 -0
  147. package/dist/components/page-kits/ServiceSuitePageKit.js +320 -0
  148. package/dist/components/page-kits/SettingsPageKit.d.ts +27 -0
  149. package/dist/components/page-kits/SettingsPageKit.js +11 -0
  150. package/dist/components/page-kits/SignupPageKit.d.ts +15 -0
  151. package/dist/components/page-kits/SignupPageKit.js +41 -0
  152. package/dist/components/page-kits/SuccessPageKit.d.ts +15 -0
  153. package/dist/components/page-kits/SuccessPageKit.js +146 -0
  154. package/dist/components/page-kits/TeamSettingsPageKit.d.ts +50 -0
  155. package/dist/components/page-kits/TeamSettingsPageKit.js +297 -0
  156. package/dist/components/page-kits/TwoFactorPageKit.d.ts +16 -0
  157. package/dist/components/page-kits/TwoFactorPageKit.js +156 -0
  158. package/dist/components/page-kits/VerifyEmailPageKit.d.ts +15 -0
  159. package/dist/components/page-kits/VerifyEmailPageKit.js +146 -0
  160. package/dist/components/page-kits/VoiceAgentsPageKit.d.ts +35 -0
  161. package/dist/components/page-kits/VoiceAgentsPageKit.js +246 -0
  162. package/dist/components/ui/AudioWaveform.js +2 -76
  163. package/dist/components/ui/AvatarUpload.js +1 -1
  164. package/dist/components/ui/Breadcrumb.js +4 -106
  165. package/dist/components/ui/ChartCard.js +5 -38
  166. package/dist/components/ui/CheckoutFormDemo.js +5 -6
  167. package/dist/components/ui/DataFreshness.js +2 -73
  168. package/dist/components/ui/MouseEffect.js +1 -1
  169. package/dist/components/ui/NativeSelect.js +2 -18
  170. package/dist/components/ui/Pagination.js +6 -117
  171. package/dist/components/ui/ShaderBackground.js +2 -2
  172. package/dist/hooks/use-shader-preset.js +2 -2
  173. package/dist/lib/shader-presets.js +1 -1
  174. package/dist/lib/tokens.config.d.ts +19 -0
  175. package/package.json +792 -680
  176. package/scripts/ds-check.mjs +8 -0
  177. package/src/lib/tokens.config.js +63 -41
package/css/tokens.css CHANGED
@@ -8,7 +8,7 @@
8
8
  @layer base {
9
9
 
10
10
 
11
- /* Light theme (default) Arctic Glow */
11
+ /* Light theme — Jade Vault */
12
12
  :root {
13
13
  color-scheme: light;
14
14
 
@@ -36,7 +36,7 @@
36
36
  --color-secondary-foreground: 24 29 32;
37
37
 
38
38
  /* Accent */
39
- --color-accent: 138 94 8;
39
+ --color-accent: 5 150 105;
40
40
  --color-accent-foreground: 255 255 255;
41
41
 
42
42
  /* Destructive */
@@ -44,15 +44,15 @@
44
44
  --color-destructive-foreground: 255 255 255;
45
45
 
46
46
  /* Success */
47
- --color-success: 26 143 78;
47
+ --color-success: 22 163 74;
48
48
  --color-success-foreground: 255 255 255;
49
49
 
50
50
  /* Warning */
51
- --color-warning: 168 74 8;
51
+ --color-warning: 202 88 8;
52
52
  --color-warning-foreground: 255 255 255;
53
53
 
54
54
  /* Info */
55
- --color-info: 41 112 220;
55
+ --color-info: 37 99 235;
56
56
  --color-info-foreground: 255 255 255;
57
57
 
58
58
  /* Overlay */
@@ -73,21 +73,23 @@
73
73
  --color-text-tertiary: 56 65 71;
74
74
 
75
75
  /* Interactive */
76
- --color-focus-ring: 138 94 8;
77
- --color-link: 122 82 16;
76
+ --color-focus-ring: 5 150 105;
77
+ --color-link: 4 120 84;
78
78
  --color-input: 222 225 227;
79
79
  --color-disabled: 154 165 172;
80
80
  --color-disabled-foreground: 95 109 119;
81
81
 
82
82
  /* Sidebar */
83
- --sidebar-background: 247 247 248;
84
- --sidebar-foreground: 38 45 49;
85
- --sidebar-primary: 24 29 32;
86
- --sidebar-primary-foreground: 247 247 248;
87
- --sidebar-accent: 222 225 227;
88
- --sidebar-accent-foreground: 24 29 32;
89
- --sidebar-border: 154 165 172;
90
- --sidebar-ring: 138 94 8;
83
+ --sidebar-background: var(--color-background);
84
+ --sidebar-foreground: var(--color-text-secondary);
85
+ --sidebar-primary: var(--color-primary);
86
+ --sidebar-primary-foreground: var(--color-primary-foreground);
87
+ --sidebar-accent: var(--color-secondary);
88
+ --sidebar-accent-foreground: var(--color-secondary-foreground);
89
+ --sidebar-border: var(--color-border);
90
+ --sidebar-ring: var(--color-focus-ring);
91
+
92
+ /* Sidebar layout */
91
93
  --sidebar-width: 16rem;
92
94
  --sidebar-width-icon: 3rem;
93
95
 
@@ -96,16 +98,16 @@
96
98
  inset 0 1px 0 0 rgba(255, 255, 255, 0.7),
97
99
  inset -1px 0 0 0 rgba(0, 30, 60, 0.04);
98
100
  --glass-sidebar-gradient: radial-gradient(ellipse at 15% 5%, rgba(255, 255, 255, 0.6), transparent 60%);
99
- --sidebar-btn-hover-shadow: inset 2px 0 0 0 rgb(138 94 8 / 0.4), inset 0 1px 0 0 rgba(255, 255, 255, 0.6);
100
- --sidebar-btn-active-shadow: inset 2px 0 0 0 rgb(138 94 8), inset 0 1px 0 0 rgba(255, 255, 255, 0.7);
101
-
102
- /* Charts — Arctic Glow (Light) */
103
- --chart-1: 138 94 8;
104
- --chart-2: 41 112 220;
105
- --chart-3: 26 143 78;
106
- --chart-4: 124 58 237;
107
- --chart-5: 198 40 50;
108
- --chart-6: 13 148 136;
101
+ --sidebar-btn-hover-shadow: inset 2px 0 0 0 rgb(5 150 105 / 0.4), inset 0 1px 0 0 rgba(255, 255, 255, 0.6);
102
+ --sidebar-btn-active-shadow: inset 2px 0 0 0 rgb(5 150 105), inset 0 1px 0 0 rgba(255, 255, 255, 0.7);
103
+
104
+ /* Charts — Jade Vault (Light) */
105
+ --chart-1: 5 150 105;
106
+ --chart-2: 124 58 237;
107
+ --chart-3: 202 88 8;
108
+ --chart-4: 225 29 72;
109
+ --chart-5: 8 145 178;
110
+ --chart-6: 22 133 64;
109
111
  --chart-7: 98 48 180;
110
112
  --chart-8: 200 88 45;
111
113
 
@@ -142,106 +144,108 @@
142
144
  --border-width-thick: 4px;
143
145
  }
144
146
 
145
- /* Dark theme — Arctic Glow */
147
+ /* Dark theme — Jade Vault */
146
148
  .dark {
147
149
  color-scheme: dark;
148
150
 
149
151
  /* Background */
150
- --color-background: 16 17 20;
152
+ --color-background: 0 0 0;
151
153
 
152
154
  /* Surface */
153
- --color-surface: 22 25 29;
154
- --color-surface-hover: 32 35 40;
155
- --color-surface-active: 41 45 51;
156
- --color-surface-raised: 51 55 62;
155
+ --color-surface: 8 12 10;
156
+ --color-surface-hover: 16 26 21;
157
+ --color-surface-active: 22 32 28;
158
+ --color-surface-raised: 30 42 36;
157
159
 
158
160
  /* Border */
159
- --color-border: 69 73 79;
160
- --color-border-hover: 91 94 97;
161
- --color-border-subtle: 200 220 240 / 0.06;
162
- --color-border-subtle-hover: 200 220 240 / 0.12;
161
+ --color-border: 38 58 48;
162
+ --color-border-hover: 52 78 64;
163
+ --color-border-subtle: 10 158 111 / 0.08;
164
+ --color-border-subtle-hover: 10 158 111 / 0.15;
163
165
 
164
166
  /* Primary */
165
- --color-primary: 244 244 246;
166
- --color-primary-foreground: 16 17 20;
167
+ --color-primary: 226 232 240;
168
+ --color-primary-foreground: 0 0 0;
167
169
 
168
170
  /* Secondary */
169
- --color-secondary: 41 45 51;
170
- --color-secondary-foreground: 244 244 246;
171
+ --color-secondary: 22 32 28;
172
+ --color-secondary-foreground: 226 232 240;
171
173
 
172
174
  /* Accent */
173
- --color-accent: 232 160 32;
174
- --color-accent-foreground: 16 17 20;
175
+ --color-accent: 10 158 111;
176
+ --color-accent-foreground: 0 0 0;
175
177
 
176
178
  /* Destructive */
177
- --color-destructive: 232 68 74;
179
+ --color-destructive: 220 38 38;
178
180
  --color-destructive-foreground: 255 255 255;
179
181
 
180
182
  /* Success */
181
- --color-success: 52 212 116;
182
- --color-success-foreground: 13 21 18;
183
+ --color-success: 22 163 74;
184
+ --color-success-foreground: 255 255 255;
183
185
 
184
186
  /* Warning */
185
- --color-warning: 242 140 56;
186
- --color-warning-foreground: 22 18 11;
187
+ --color-warning: 217 119 6;
188
+ --color-warning-foreground: 0 0 0;
187
189
 
188
190
  /* Info */
189
- --color-info: 74 158 248;
190
- --color-info-foreground: 15 21 32;
191
+ --color-info: 37 99 235;
192
+ --color-info-foreground: 255 255 255;
191
193
 
192
194
  /* Overlay */
193
195
  --color-overlay: 0 0 0;
194
- --color-overlay-foreground: 244 244 246;
196
+ --color-overlay-foreground: 226 232 240;
195
197
 
196
198
  /* Muted */
197
- --color-muted: 41 45 51;
198
- --color-muted-foreground: 224 225 229;
199
+ --color-muted: 22 32 28;
200
+ --color-muted-foreground: 180 192 200;
199
201
 
200
202
  /* Slider */
201
203
  --color-slider-fill: 255 255 255 / 0.10;
202
204
  --color-slider-handle: 255 255 255;
203
205
 
204
206
  /* Text */
205
- --color-text-primary: 244 244 246;
206
- --color-text-secondary: 224 225 229;
207
- --color-text-tertiary: 196 198 204;
207
+ --color-text-primary: 226 232 240;
208
+ --color-text-secondary: 160 174 186;
209
+ --color-text-tertiary: 168 184 200;
208
210
 
209
211
  /* Interactive */
210
- --color-focus-ring: 232 160 32;
211
- --color-link: 245 201 106;
212
- --color-input: 41 45 51;
213
- --color-disabled: 91 94 97;
214
- --color-disabled-foreground: 196 198 204;
212
+ --color-focus-ring: 10 158 111;
213
+ --color-link: 52 211 153;
214
+ --color-input: 22 32 28;
215
+ --color-disabled: 52 78 64;
216
+ --color-disabled-foreground: 168 184 200;
215
217
 
216
218
  /* Sidebar */
217
- --sidebar-background: 16 17 20;
218
- --sidebar-foreground: 244 244 246;
219
- --sidebar-primary: 244 244 246;
220
- --sidebar-primary-foreground: 16 17 20;
221
- --sidebar-accent: 41 45 51;
222
- --sidebar-accent-foreground: 244 244 246;
223
- --sidebar-border: 69 73 79;
224
- --sidebar-ring: 232 160 32;
219
+ --sidebar-background: var(--color-background);
220
+ --sidebar-foreground: var(--color-primary);
221
+ --sidebar-primary: var(--color-primary);
222
+ --sidebar-primary-foreground: var(--color-primary-foreground);
223
+ --sidebar-accent: var(--color-secondary);
224
+ --sidebar-accent-foreground: var(--color-secondary-foreground);
225
+ --sidebar-border: var(--color-border);
226
+ --sidebar-ring: var(--color-focus-ring);
227
+
228
+ /* Sidebar layout */
225
229
  --sidebar-width: 16rem;
226
230
  --sidebar-width-icon: 3rem;
227
231
 
228
232
  /* Sidebar glass (decorative, no blur) */
229
233
  --glass-sidebar-shadow:
230
- inset 0 1px 0 0 rgba(255, 255, 255, 0.06),
234
+ inset 0 1px 0 0 rgba(10, 158, 111, 0.08),
231
235
  inset -1px 0 0 0 rgba(255, 255, 255, 0.03);
232
- --glass-sidebar-gradient: radial-gradient(ellipse at 15% 5%, rgba(255, 255, 255, 0.04), transparent 60%);
233
- --sidebar-btn-hover-shadow: inset 2px 0 0 0 rgb(232 160 32 / 0.4), inset 0 1px 0 0 rgba(255, 255, 255, 0.05);
234
- --sidebar-btn-active-shadow: inset 2px 0 0 0 rgb(232 160 32), inset 0 1px 0 0 rgba(255, 255, 255, 0.08);
235
-
236
- /* Charts — Arctic Glow (Dark) */
237
- --chart-1: 232 160 32;
238
- --chart-2: 74 158 248;
239
- --chart-3: 52 212 116;
240
- --chart-4: 155 107 245;
241
- --chart-5: 232 68 74;
242
- --chart-6: 45 212 191;
236
+ --glass-sidebar-gradient: radial-gradient(ellipse at 15% 5%, rgba(10, 158, 111, 0.06), transparent 60%);
237
+ --sidebar-btn-hover-shadow: inset 2px 0 0 0 rgb(10 158 111 / 0.4), inset 0 1px 0 0 rgba(255, 255, 255, 0.05);
238
+ --sidebar-btn-active-shadow: inset 2px 0 0 0 rgb(10 158 111), inset 0 1px 0 0 rgba(255, 255, 255, 0.08);
239
+
240
+ /* Charts — Jade Vault (Dark) */
241
+ --chart-1: 10 158 111;
242
+ --chart-2: 124 58 237;
243
+ --chart-3: 217 119 6;
244
+ --chart-4: 225 29 72;
245
+ --chart-5: 8 145 178;
246
+ --chart-6: 52 211 153;
243
247
  --chart-7: 168 130 255;
244
- --chart-8: 255 165 120;
248
+ --chart-8: 251 146 60;
245
249
  }
246
250
 
247
251
  /* Bloom theme — warm, light-only */
@@ -271,11 +275,11 @@
271
275
  --color-secondary: 245 241 236;
272
276
  --color-secondary-foreground: 45 35 24;
273
277
 
274
- /* Accent – darkened from 232 87 58 for WCAG AA (5.03:1 vs bg, 5.11:1 vs white) */
278
+ /* Accent */
275
279
  --color-accent: 195 65 42;
276
280
  --color-accent-foreground: 255 255 255;
277
281
 
278
- /* Destructive – darkened from 232 86 109 for WCAG AA (5.05:1 vs bg, 5.14:1 vs white) */
282
+ /* Destructive */
279
283
  --color-destructive: 195 60 82;
280
284
  --color-destructive-foreground: 255 255 255;
281
285
 
@@ -306,7 +310,6 @@
306
310
  /* Text */
307
311
  --color-text-primary: 45 35 24;
308
312
  --color-text-secondary: 87 73 56;
309
- /* Tertiary – darkened from 136 121 104 for WCAG AA (5.62:1 vs bg) */
310
313
  --color-text-tertiary: 115 100 83;
311
314
 
312
315
  /* Interactive */
@@ -317,14 +320,16 @@
317
320
  --color-disabled-foreground: 168 155 140;
318
321
 
319
322
  /* Sidebar */
320
- --sidebar-background: 254 253 251;
321
- --sidebar-foreground: 87 73 56;
322
- --sidebar-primary: 45 35 24;
323
- --sidebar-primary-foreground: 254 253 251;
324
- --sidebar-accent: 245 241 236;
325
- --sidebar-accent-foreground: 45 35 24;
326
- --sidebar-border: 217 209 199;
327
- --sidebar-ring: 139 92 246;
323
+ --sidebar-background: var(--color-background);
324
+ --sidebar-foreground: var(--color-text-secondary);
325
+ --sidebar-primary: var(--color-primary);
326
+ --sidebar-primary-foreground: var(--color-primary-foreground);
327
+ --sidebar-accent: var(--color-secondary);
328
+ --sidebar-accent-foreground: var(--color-secondary-foreground);
329
+ --sidebar-border: var(--color-border);
330
+ --sidebar-ring: var(--color-focus-ring);
331
+
332
+ /* Sidebar layout */
328
333
  --sidebar-width: 16rem;
329
334
  --sidebar-width-icon: 3rem;
330
335
 
@@ -403,9 +408,10 @@
403
408
  0 4px 6px -1px rgba(0, 0, 0, 0.5),
404
409
  0 10px 15px -3px rgba(0, 0, 0, 0.35),
405
410
  0 20px 25px -5px rgba(0, 0, 0, 0.2),
406
- 0 0 20px rgba(232, 160, 32, 0.04),
411
+ 0 0 20px rgba(10, 158, 111, 0.04),
407
412
  inset 0 1px 0 0 rgba(255, 255, 255, 0.08),
408
- inset 0 1px 1px 0 rgba(255, 255, 255, 0.03);
413
+ inset 0 1px 1px 0 rgba(255, 255, 255, 0.03),
414
+ inset 0 0 12px rgba(255, 255, 255, 0.04);
409
415
  --glass-panel-gradient: radial-gradient(ellipse at 15% 15%, rgba(255, 255, 255, 0.06), transparent 70%);
410
416
 
411
417
  /* Floating tokens (dark defaults) */
@@ -415,49 +421,171 @@
415
421
  --glass-floating-shadow:
416
422
  0 10px 20px rgba(0, 0, 0, 0.5),
417
423
  0 30px 60px rgba(0, 0, 0, 0.35),
418
- 0 0 30px rgba(232, 160, 32, 0.06),
424
+ 0 0 30px rgba(10, 158, 111, 0.06),
419
425
  inset 0 0 0 1px rgba(255, 255, 255, 0.08),
420
- inset 0 1px 1px rgba(255, 255, 255, 0.15);
426
+ inset 0 1px 1px rgba(255, 255, 255, 0.15),
427
+ inset 0 0 16px rgba(255, 255, 255, 0.05);
421
428
 
422
429
  /* Overlay tokens (dark defaults) */
423
430
  --glass-overlay-blur: 12px;
424
431
  --glass-overlay-bg-opacity: 0.30;
425
432
  --glass-overlay-border-opacity: 0.10;
426
- --glass-overlay-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.4);
433
+ --glass-overlay-shadow:
434
+ 0 8px 32px 0 rgba(0, 0, 0, 0.4),
435
+ inset 0 1px 0 0 rgba(255, 255, 255, 0.06),
436
+ inset 0 0 8px rgba(255, 255, 255, 0.03);
437
+
438
+ /* Shared glass tokens (dark defaults) */
439
+ --glass-noise-opacity: 0.03;
440
+ --glass-noise-blend: overlay;
441
+ --glass-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
442
+ --glass-edge-width: 1px;
443
+ --glass-edge-from: rgba(255, 255, 255, 0.15);
444
+ --glass-edge-to: rgba(255, 255, 255, 0.03);
427
445
  }
428
446
 
429
447
  /* ── Glass Classes (consume tokens) ────────────────────────────────── */
430
448
 
431
449
  .glass-panel {
450
+ position: relative;
432
451
  backdrop-filter: blur(var(--glass-panel-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
433
452
  background-color: rgb(var(--color-surface) / var(--glass-panel-bg-opacity));
434
453
  background-image: var(--glass-panel-gradient);
435
- border: 1px solid rgb(255 255 255 / var(--glass-panel-border-opacity));
454
+ border: none;
436
455
  box-shadow: var(--glass-panel-shadow);
456
+ text-shadow: var(--glass-text-shadow);
437
457
  contain: layout style paint;
458
+ will-change: transform;
459
+
460
+ /* Noise texture */
461
+ &::before {
462
+ content: '';
463
+ position: absolute;
464
+ inset: 0;
465
+ border-radius: inherit;
466
+ pointer-events: none;
467
+ z-index: 0;
468
+ opacity: var(--glass-noise-opacity);
469
+ mix-blend-mode: var(--glass-noise-blend);
470
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
471
+ background-repeat: repeat;
472
+ background-size: 128px 128px;
473
+ }
474
+
475
+ /* Gradient border (replaces solid 1px border) */
476
+ &::after {
477
+ content: '';
478
+ position: absolute;
479
+ inset: 0;
480
+ border-radius: inherit;
481
+ padding: var(--glass-edge-width);
482
+ background: linear-gradient(135deg, var(--glass-edge-from), var(--glass-edge-to));
483
+ -webkit-mask:
484
+ linear-gradient(#fff 0 0) content-box,
485
+ linear-gradient(#fff 0 0);
486
+ -webkit-mask-composite: destination-out;
487
+ mask:
488
+ linear-gradient(#fff 0 0) content-box,
489
+ linear-gradient(#fff 0 0);
490
+ mask-composite: exclude;
491
+ pointer-events: none;
492
+ z-index: 0;
493
+ }
438
494
  }
439
495
 
440
496
  .glass-floating {
497
+ position: relative;
441
498
  backdrop-filter: blur(var(--glass-floating-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
442
499
  background-color: rgb(var(--color-surface) / var(--glass-floating-bg-opacity));
443
- border: 1px solid rgb(255 255 255 / var(--glass-floating-border-opacity));
500
+ border: none;
444
501
  box-shadow: var(--glass-floating-shadow);
502
+ text-shadow: var(--glass-text-shadow);
503
+ contain: layout style paint;
504
+ will-change: transform;
445
505
  transition: transform 150ms cubic-bezier(0.215, 0.61, 0.355, 1),
446
506
  box-shadow 150ms cubic-bezier(0.215, 0.61, 0.355, 1);
447
507
 
508
+ /* Noise texture */
509
+ &::before {
510
+ content: '';
511
+ position: absolute;
512
+ inset: 0;
513
+ border-radius: inherit;
514
+ pointer-events: none;
515
+ z-index: 0;
516
+ opacity: var(--glass-noise-opacity);
517
+ mix-blend-mode: var(--glass-noise-blend);
518
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
519
+ background-repeat: repeat;
520
+ background-size: 128px 128px;
521
+ }
522
+
523
+ /* Gradient border (replaces solid 1px border) */
448
524
  &::after {
449
525
  content: '';
450
- @apply absolute inset-0 rounded-[inherit] pointer-events-none;
451
- box-shadow: inset 0 0 10px 0 rgba(200, 220, 240, 0.04);
526
+ position: absolute;
527
+ inset: 0;
528
+ border-radius: inherit;
529
+ padding: var(--glass-edge-width);
530
+ background: linear-gradient(135deg, var(--glass-edge-from), var(--glass-edge-to));
531
+ -webkit-mask:
532
+ linear-gradient(#fff 0 0) content-box,
533
+ linear-gradient(#fff 0 0);
534
+ -webkit-mask-composite: destination-out;
535
+ mask:
536
+ linear-gradient(#fff 0 0) content-box,
537
+ linear-gradient(#fff 0 0);
538
+ mask-composite: exclude;
539
+ pointer-events: none;
540
+ z-index: 0;
452
541
  }
453
542
  }
454
543
 
455
544
  .glass-overlay {
545
+ position: relative;
456
546
  backdrop-filter: blur(var(--glass-overlay-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
457
547
  background-color: rgb(var(--color-surface) / var(--glass-overlay-bg-opacity));
458
- border: 1px solid rgb(255 255 255 / var(--glass-overlay-border-opacity));
548
+ border: none;
459
549
  box-shadow: var(--glass-overlay-shadow);
550
+ text-shadow: var(--glass-text-shadow);
551
+ contain: layout style paint;
552
+ will-change: transform;
460
553
  @apply transition-colors duration-300;
554
+
555
+ /* Noise texture */
556
+ &::before {
557
+ content: '';
558
+ position: absolute;
559
+ inset: 0;
560
+ border-radius: inherit;
561
+ pointer-events: none;
562
+ z-index: 0;
563
+ opacity: var(--glass-noise-opacity);
564
+ mix-blend-mode: var(--glass-noise-blend);
565
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
566
+ background-repeat: repeat;
567
+ background-size: 128px 128px;
568
+ }
569
+
570
+ /* Gradient border (replaces solid 1px border) */
571
+ &::after {
572
+ content: '';
573
+ position: absolute;
574
+ inset: 0;
575
+ border-radius: inherit;
576
+ padding: var(--glass-edge-width);
577
+ background: linear-gradient(135deg, var(--glass-edge-from), var(--glass-edge-to));
578
+ -webkit-mask:
579
+ linear-gradient(#fff 0 0) content-box,
580
+ linear-gradient(#fff 0 0);
581
+ -webkit-mask-composite: destination-out;
582
+ mask:
583
+ linear-gradient(#fff 0 0) content-box,
584
+ linear-gradient(#fff 0 0);
585
+ mask-composite: exclude;
586
+ pointer-events: none;
587
+ z-index: 0;
588
+ }
461
589
  }
462
590
 
463
591
  .surface-solid {
@@ -497,6 +625,13 @@
497
625
 
498
626
  /* ── Hover / Active / Focus States ─────────────────────────────────── */
499
627
 
628
+ .glass-panel {
629
+ transition: background-color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
630
+ }
631
+ .glass-panel:hover {
632
+ background-color: rgb(var(--color-surface) / calc(var(--glass-panel-bg-opacity) + 0.04));
633
+ }
634
+
500
635
  .glass-overlay:hover {
501
636
  background-color: rgb(var(--color-background) / 0.30);
502
637
  }
@@ -506,7 +641,7 @@
506
641
  box-shadow:
507
642
  0 30px 60px -12px rgba(0, 0, 0, 0.8),
508
643
  0 0 0 1px rgba(255, 255, 255, 0.15),
509
- 0 0 40px rgba(232, 160, 32, 0.08),
644
+ 0 0 40px rgba(10, 158, 111, 0.08),
510
645
  inset 0 1px 0 0 rgba(255, 255, 255, 0.3);
511
646
  }
512
647
 
@@ -532,7 +667,8 @@
532
667
  0 4px 12px rgba(0, 30, 60, 0.08),
533
668
  0 8px 24px rgba(0, 30, 60, 0.04),
534
669
  inset 0 1px 0 0 rgba(255, 255, 255, 0.9),
535
- inset 0 -1px 0 0 rgba(0, 30, 60, 0.03);
670
+ inset 0 -1px 0 0 rgba(0, 30, 60, 0.03),
671
+ inset 0 0 12px rgba(255, 255, 255, 0.08);
536
672
  --glass-panel-gradient: radial-gradient(ellipse at 15% 15%, rgba(255, 255, 255, 0.8), transparent 70%);
537
673
 
538
674
  --glass-floating-bg-opacity: 0.70;
@@ -541,7 +677,8 @@
541
677
  0 8px 20px rgba(0, 30, 60, 0.1),
542
678
  0 20px 40px rgba(0, 30, 60, 0.06),
543
679
  inset 0 1px 0 0 rgba(255, 255, 255, 0.9),
544
- inset 0 -1px 0 0 rgba(0, 30, 60, 0.03);
680
+ inset 0 -1px 0 0 rgba(0, 30, 60, 0.03),
681
+ inset 0 0 16px rgba(255, 255, 255, 0.06);
545
682
 
546
683
  --glass-overlay-bg-opacity: 0.65;
547
684
  --glass-overlay-border-opacity: 0.50;
@@ -549,25 +686,33 @@
549
686
  0 4px 20px -2px rgba(0, 30, 60, 0.08),
550
687
  0 8px 32px rgba(0, 30, 60, 0.04),
551
688
  inset 0 1px 0 0 rgba(255, 255, 255, 0.8),
552
- inset 0 -1px 0 0 rgba(0, 30, 60, 0.02);
689
+ inset 0 -1px 0 0 rgba(0, 30, 60, 0.02),
690
+ inset 0 0 8px rgba(255, 255, 255, 0.05);
691
+
692
+ --glass-noise-opacity: 0.025;
693
+ --glass-noise-blend: overlay;
694
+ --glass-text-shadow: 0 1px 1px rgba(0, 30, 60, 0.06);
695
+ --glass-edge-from: rgba(255, 255, 255, 0.8);
696
+ --glass-edge-to: rgba(255, 255, 255, 0.2);
553
697
  }
554
698
 
555
699
  :root[class~="light"] .glass-panel {
556
- border-color: rgb(var(--color-border) / 0.80);
557
700
  background-color: rgb(255 255 255 / var(--glass-panel-bg-opacity));
558
701
  background-image: var(--glass-panel-gradient);
559
702
  }
560
703
 
561
704
  :root[class~="light"] .glass-floating {
562
- border-color: rgb(var(--color-border) / 0.60);
563
705
  background-color: rgb(255 255 255 / var(--glass-floating-bg-opacity));
564
706
  }
565
707
 
566
708
  :root[class~="light"] .glass-overlay {
567
- border-color: rgb(var(--color-border) / 0.50);
568
709
  background-color: rgb(255 255 255 / var(--glass-overlay-bg-opacity));
569
710
  }
570
711
 
712
+ :root[class~="light"] .glass-panel:hover {
713
+ background-color: rgb(255 255 255 / calc(var(--glass-panel-bg-opacity) + 0.04));
714
+ }
715
+
571
716
  :root[class~="light"] .glass-overlay:hover {
572
717
  background-color: rgb(var(--color-surface) / 0.80);
573
718
  }
@@ -581,10 +726,6 @@
581
726
  inset 0 -1px 0 0 rgba(0, 30, 60, 0.04);
582
727
  }
583
728
 
584
- :root[class~="light"] .glass-floating::after {
585
- box-shadow: inset 0 0 12px 0 rgba(200, 220, 240, 0.08);
586
- }
587
-
588
729
  :root[class~="light"] .surface-solid {
589
730
  background-color: #fff;
590
731
  border-color: rgb(var(--color-border) / 0.80);
@@ -602,7 +743,8 @@
602
743
  --glass-panel-shadow:
603
744
  0 4px 12px rgba(45, 35, 24, 0.06),
604
745
  0 8px 24px rgba(45, 35, 24, 0.04),
605
- inset 0 1px 0 0 rgba(255, 248, 240, 0.6);
746
+ inset 0 1px 0 0 rgba(255, 248, 240, 0.6),
747
+ inset 0 0 12px rgba(255, 248, 240, 0.06);
606
748
  --glass-panel-gradient: radial-gradient(ellipse at 15% 15%, rgba(255, 248, 240, 0.5), transparent 70%);
607
749
 
608
750
  --glass-floating-bg-opacity: 0.60;
@@ -610,28 +752,30 @@
610
752
  --glass-floating-shadow:
611
753
  0 10px 25px rgba(45, 35, 24, 0.08),
612
754
  0 20px 40px rgba(45, 35, 24, 0.06),
613
- inset 0 1px 0 0 rgba(255, 248, 240, 0.5);
755
+ inset 0 1px 0 0 rgba(255, 248, 240, 0.5),
756
+ inset 0 0 16px rgba(255, 248, 240, 0.05);
614
757
 
615
758
  --glass-overlay-bg-opacity: 0.60;
616
759
  --glass-overlay-border-opacity: 0.30;
617
760
  --glass-overlay-shadow:
618
761
  0 4px 20px -2px rgba(45, 35, 24, 0.08),
619
- inset 0 1px 0 0 rgba(255, 248, 240, 0.4);
762
+ inset 0 1px 0 0 rgba(255, 248, 240, 0.4),
763
+ inset 0 0 8px rgba(255, 248, 240, 0.04);
764
+
765
+ --glass-noise-opacity: 0.02;
766
+ --glass-noise-blend: soft-light;
767
+ --glass-text-shadow: 0 1px 1px rgba(45, 35, 24, 0.05);
768
+ --glass-edge-from: rgba(255, 248, 240, 0.5);
769
+ --glass-edge-to: rgba(255, 248, 240, 0.1);
620
770
  }
621
771
 
622
772
  :root.bloom .glass-panel {
623
- border-color: rgb(var(--color-border) / 0.30);
624
773
  background-color: rgb(var(--color-surface) / var(--glass-panel-bg-opacity));
625
774
  background-image: var(--glass-panel-gradient);
626
775
  }
627
776
 
628
777
  :root.bloom .glass-floating {
629
- border-color: rgb(var(--color-border) / 0.20);
630
778
  background-color: rgb(var(--color-surface) / var(--glass-floating-bg-opacity));
631
-
632
- &::after {
633
- box-shadow: inset 0 0 10px 0 rgba(195, 65, 42, 0.03);
634
- }
635
779
  }
636
780
 
637
781
  :root.bloom .glass-floating:hover {
@@ -643,10 +787,13 @@
643
787
  }
644
788
 
645
789
  :root.bloom .glass-overlay {
646
- border-color: rgb(var(--color-border) / 0.30);
647
790
  background-color: rgb(var(--color-surface) / var(--glass-overlay-bg-opacity));
648
791
  }
649
792
 
793
+ :root.bloom .glass-panel:hover {
794
+ background-color: rgb(var(--color-surface) / calc(var(--glass-panel-bg-opacity) + 0.04));
795
+ }
796
+
650
797
  :root.bloom .glass-overlay:hover {
651
798
  background-color: rgb(var(--color-surface) / 0.80);
652
799
  }
@@ -679,6 +826,16 @@
679
826
  backdrop-filter: none;
680
827
  background: rgb(var(--color-surface));
681
828
  border: 1px solid rgb(var(--color-border));
829
+ will-change: auto;
830
+ text-shadow: none;
831
+ }
832
+ .glass-panel::before,
833
+ .glass-floating::before,
834
+ .glass-overlay::before,
835
+ .glass-panel::after,
836
+ .glass-floating::after,
837
+ .glass-overlay::after {
838
+ display: none;
682
839
  }
683
840
  .glass-sidebar {
684
841
  background-image: none;
@@ -703,6 +860,16 @@
703
860
  background: rgb(var(--color-surface));
704
861
  border: 2px solid rgb(var(--color-border));
705
862
  box-shadow: none;
863
+ will-change: auto;
864
+ text-shadow: none;
865
+ }
866
+ .glass-panel::before,
867
+ .glass-floating::before,
868
+ .glass-overlay::before,
869
+ .glass-panel::after,
870
+ .glass-floating::after,
871
+ .glass-overlay::after {
872
+ display: none;
706
873
  }
707
874
  .glass-sidebar {
708
875
  background-image: none;
@@ -834,6 +1001,17 @@
834
1001
  .glass-floating,
835
1002
  .glass-overlay {
836
1003
  background-image: none;
1004
+ border: 1px solid rgb(var(--color-border));
1005
+ will-change: auto;
1006
+ text-shadow: none;
1007
+ }
1008
+ .glass-panel::before,
1009
+ .glass-floating::before,
1010
+ .glass-overlay::before,
1011
+ .glass-panel::after,
1012
+ .glass-floating::after,
1013
+ .glass-overlay::after {
1014
+ display: none;
837
1015
  }
838
1016
  .glass-panel { background: rgb(var(--color-surface) / 0.92); }
839
1017
  .glass-floating { background: rgb(var(--color-surface) / 0.95); }