@vanduo-oss/framework 1.3.8 → 1.4.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 (119) hide show
  1. package/README.md +87 -41
  2. package/css/components/affix.css +1 -1
  3. package/css/components/alerts.css +40 -40
  4. package/css/components/avatar.css +33 -33
  5. package/css/components/badges.css +42 -42
  6. package/css/components/breadcrumbs.css +5 -5
  7. package/css/components/bubble.css +4 -4
  8. package/css/components/buttons.css +124 -124
  9. package/css/components/cards.css +10 -10
  10. package/css/components/chips.css +28 -28
  11. package/css/components/code-snippet.css +18 -18
  12. package/css/components/collapsible.css +28 -20
  13. package/css/components/collections.css +21 -21
  14. package/css/components/datepicker.css +13 -13
  15. package/css/components/doc-search.css +46 -53
  16. package/css/components/doc-tabs.css +10 -10
  17. package/css/components/draggable.css +34 -34
  18. package/css/components/dropdown.css +14 -14
  19. package/css/components/expanding-cards.css +1 -1
  20. package/css/components/fab.css +7 -7
  21. package/css/components/flow.css +3 -3
  22. package/css/components/footer.css +26 -26
  23. package/css/components/forms.css +95 -83
  24. package/css/components/image-box.css +13 -17
  25. package/css/components/modals.css +8 -8
  26. package/css/components/music-player.css +26 -26
  27. package/css/components/navbar.css +27 -27
  28. package/css/components/pagination.css +15 -15
  29. package/css/components/preloader.css +10 -10
  30. package/css/components/progress.css +8 -8
  31. package/css/components/rating.css +4 -4
  32. package/css/components/sidenav.css +14 -14
  33. package/css/components/skeleton.css +10 -9
  34. package/css/components/spinner.css +10 -10
  35. package/css/components/spotlight.css +7 -7
  36. package/css/components/stepper.css +13 -13
  37. package/css/components/suggest.css +10 -10
  38. package/css/components/tabs.css +22 -22
  39. package/css/components/theme-customizer.css +87 -87
  40. package/css/components/timeline.css +14 -14
  41. package/css/components/timepicker.css +7 -7
  42. package/css/components/toast.css +31 -31
  43. package/css/components/tooltips.css +11 -11
  44. package/css/components/transfer.css +12 -12
  45. package/css/components/tree.css +9 -9
  46. package/css/components/waypoint.css +3 -3
  47. package/css/core/colors.css +61 -35
  48. package/css/core/grid.css +1 -6
  49. package/css/core/helpers.css +11 -11
  50. package/css/core/tokens.css +114 -36
  51. package/css/core/typography.css +15 -13
  52. package/css/core/vd-aliases.css +100 -52
  53. package/css/effects/morph.css +5 -5
  54. package/css/utilities/media.css +2 -2
  55. package/css/utilities/table.css +34 -34
  56. package/css/utilities/transitions.css +22 -10
  57. package/css/vanduo.css +14 -34
  58. package/dist/build-info.json +3 -3
  59. package/dist/vanduo.cjs.js +935 -294
  60. package/dist/vanduo.cjs.js.map +3 -3
  61. package/dist/vanduo.cjs.min.js +7 -7
  62. package/dist/vanduo.cjs.min.js.map +3 -3
  63. package/dist/vanduo.css +7942 -7824
  64. package/dist/vanduo.css.map +1 -1
  65. package/dist/vanduo.esm.js +935 -294
  66. package/dist/vanduo.esm.js.map +3 -3
  67. package/dist/vanduo.esm.min.js +7 -7
  68. package/dist/vanduo.esm.min.js.map +3 -3
  69. package/dist/vanduo.js +935 -294
  70. package/dist/vanduo.js.map +3 -3
  71. package/dist/vanduo.min.css +2 -2
  72. package/dist/vanduo.min.css.map +1 -1
  73. package/dist/vanduo.min.js +7 -7
  74. package/dist/vanduo.min.js.map +3 -3
  75. package/js/components/affix.js +2 -2
  76. package/js/components/bubble.js +3 -3
  77. package/js/components/code-snippet.js +129 -5
  78. package/js/components/collapsible.js +2 -3
  79. package/js/components/datepicker.js +2 -2
  80. package/js/components/doc-search.js +69 -11
  81. package/js/components/draggable.js +4 -4
  82. package/js/components/dropdown.js +2 -3
  83. package/js/components/expanding-cards.js +2 -2
  84. package/js/components/flow.js +2 -2
  85. package/js/components/font-switcher.js +26 -16
  86. package/js/components/glass.js +2 -2
  87. package/js/components/grid.js +19 -8
  88. package/js/components/image-box.js +49 -10
  89. package/js/components/lazy-load.js +81 -9
  90. package/js/components/modals.js +28 -12
  91. package/js/components/morph.js +2 -2
  92. package/js/components/music-player.js +2 -2
  93. package/js/components/navbar.js +2 -2
  94. package/js/components/pagination.js +2 -3
  95. package/js/components/parallax.js +9 -10
  96. package/js/components/preloader.js +14 -5
  97. package/js/components/rating.js +2 -2
  98. package/js/components/ripple.js +2 -2
  99. package/js/components/select.js +2 -3
  100. package/js/components/sidenav.js +43 -14
  101. package/js/components/spotlight.js +2 -2
  102. package/js/components/stepper.js +2 -2
  103. package/js/components/suggest.js +9 -3
  104. package/js/components/tabs.js +2 -2
  105. package/js/components/theme-customizer.js +154 -23
  106. package/js/components/theme-switcher.js +27 -16
  107. package/js/components/timeline.js +41 -12
  108. package/js/components/timepicker.js +2 -2
  109. package/js/components/toast.js +1 -1
  110. package/js/components/tooltips.js +4 -4
  111. package/js/components/transfer.js +2 -2
  112. package/js/components/tree.js +2 -2
  113. package/js/components/validate.js +2 -2
  114. package/js/components/vd-hex.js +12 -6
  115. package/js/components/waypoint.js +2 -2
  116. package/js/utils/helpers.js +7 -4
  117. package/js/utils/lifecycle.js +158 -83
  118. package/js/vanduo.js +203 -34
  119. package/package.json +3 -4
@@ -13,21 +13,21 @@
13
13
  --toast-gap: 0.8125rem; /* 13px - fib */
14
14
 
15
15
  /* Toast Colors */
16
- --toast-bg: var(--color-white);
17
- --toast-text: var(--text-primary);
18
- --toast-border: var(--border-color);
16
+ --toast-bg: var(--vd-color-white);
17
+ --toast-text: var(--vd-text-primary);
18
+ --toast-border: var(--vd-border-color);
19
19
  --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
20
20
  }
21
21
 
22
22
  /* Dark Theme Overrides */
23
23
  [data-theme="dark"] {
24
- --toast-bg: var(--color-gray-800);
24
+ --toast-bg: var(--vd-color-gray-800);
25
25
  --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
26
26
  }
27
27
 
28
28
  @media (prefers-color-scheme: dark) {
29
29
  :root:not([data-theme]) {
30
- --toast-bg: var(--color-gray-800);
30
+ --toast-bg: var(--vd-color-gray-800);
31
31
  --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
32
32
  }
33
33
  }
@@ -185,7 +185,7 @@
185
185
  /* Toast Message */
186
186
  .vd-toast-message {
187
187
  font-size: var(--font-size-sm);
188
- color: var(--text-secondary);
188
+ color: var(--vd-text-secondary);
189
189
  }
190
190
 
191
191
  /* Toast Close Button */
@@ -201,7 +201,7 @@
201
201
  background: transparent;
202
202
  border: none;
203
203
  border-radius: var(--btn-border-radius);
204
- color: var(--text-tertiary);
204
+ color: var(--vd-text-tertiary);
205
205
  cursor: pointer;
206
206
  opacity: 0.6;
207
207
  transition: opacity 0.15s ease, background-color 0.15s ease;
@@ -224,42 +224,42 @@
224
224
 
225
225
  /* Toast Color Variants */
226
226
  .vd-toast-success {
227
- border-left: 4px solid var(--color-success);
227
+ border-left: 4px solid var(--vd-color-success);
228
228
  }
229
229
 
230
230
  .vd-toast-success .vd-toast-icon {
231
- color: var(--color-success);
231
+ color: var(--vd-color-success);
232
232
  }
233
233
 
234
234
  .vd-toast-warning {
235
- border-left: 4px solid var(--color-warning);
235
+ border-left: 4px solid var(--vd-color-warning);
236
236
  }
237
237
 
238
238
  .vd-toast-warning .vd-toast-icon {
239
- color: var(--color-warning);
239
+ color: var(--vd-color-warning);
240
240
  }
241
241
 
242
242
  .vd-toast-error {
243
- border-left: 4px solid var(--color-error);
243
+ border-left: 4px solid var(--vd-color-error);
244
244
  }
245
245
 
246
246
  .vd-toast-error .vd-toast-icon {
247
- color: var(--color-error);
247
+ color: var(--vd-color-error);
248
248
  }
249
249
 
250
250
  .vd-toast-info {
251
- border-left: 4px solid var(--color-info);
251
+ border-left: 4px solid var(--vd-color-info);
252
252
  }
253
253
 
254
254
  .vd-toast-info .vd-toast-icon {
255
- color: var(--color-info);
255
+ color: var(--vd-color-info);
256
256
  }
257
257
 
258
258
  /* Solid Variants */
259
259
  .vd-toast-solid.vd-toast-success {
260
- background-color: var(--color-success);
261
- border-color: var(--color-success);
262
- color: var(--color-white);
260
+ background-color: var(--vd-color-success);
261
+ border-color: var(--vd-color-success);
262
+ color: var(--vd-color-white);
263
263
  }
264
264
 
265
265
  .vd-toast-solid.vd-toast-success .vd-toast-message {
@@ -267,13 +267,13 @@
267
267
  }
268
268
 
269
269
  .vd-toast-solid.vd-toast-success .vd-toast-icon {
270
- color: var(--color-white);
270
+ color: var(--vd-color-white);
271
271
  }
272
272
 
273
273
  .vd-toast-solid.vd-toast-warning {
274
- background-color: var(--color-warning);
275
- border-color: var(--color-warning);
276
- color: var(--color-gray-900);
274
+ background-color: var(--vd-color-warning);
275
+ border-color: var(--vd-color-warning);
276
+ color: var(--vd-color-gray-900);
277
277
  }
278
278
 
279
279
  .vd-toast-solid.vd-toast-warning .vd-toast-message {
@@ -281,13 +281,13 @@
281
281
  }
282
282
 
283
283
  .vd-toast-solid.vd-toast-warning .vd-toast-icon {
284
- color: var(--color-gray-900);
284
+ color: var(--vd-color-gray-900);
285
285
  }
286
286
 
287
287
  .vd-toast-solid.vd-toast-error {
288
- background-color: var(--color-error);
289
- border-color: var(--color-error);
290
- color: var(--color-white);
288
+ background-color: var(--vd-color-error);
289
+ border-color: var(--vd-color-error);
290
+ color: var(--vd-color-white);
291
291
  }
292
292
 
293
293
  .vd-toast-solid.vd-toast-error .vd-toast-message {
@@ -295,13 +295,13 @@
295
295
  }
296
296
 
297
297
  .vd-toast-solid.vd-toast-error .vd-toast-icon {
298
- color: var(--color-white);
298
+ color: var(--vd-color-white);
299
299
  }
300
300
 
301
301
  .vd-toast-solid.vd-toast-info {
302
- background-color: var(--color-info);
303
- border-color: var(--color-info);
304
- color: var(--color-white);
302
+ background-color: var(--vd-color-info);
303
+ border-color: var(--vd-color-info);
304
+ color: var(--vd-color-white);
305
305
  }
306
306
 
307
307
  .vd-toast-solid.vd-toast-info .vd-toast-message {
@@ -309,7 +309,7 @@
309
309
  }
310
310
 
311
311
  .vd-toast-solid.vd-toast-info .vd-toast-icon {
312
- color: var(--color-white);
312
+ color: var(--vd-color-white);
313
313
  }
314
314
 
315
315
  /* Toast Progress Bar (auto-dismiss indicator) */
@@ -5,12 +5,12 @@
5
5
 
6
6
  :root {
7
7
  /* Tooltip Colors */
8
- --tooltip-bg: var(--color-white);
9
- --tooltip-bg-light: var(--color-gray-100);
10
- --tooltip-bg-dark: var(--color-gray-900);
11
- --tooltip-text-color: var(--color-gray-900);
12
- --tooltip-text-color-light: var(--color-gray-800);
13
- --tooltip-text-color-dark: var(--color-white);
8
+ --tooltip-bg: var(--vd-color-white);
9
+ --tooltip-bg-light: var(--vd-color-gray-100);
10
+ --tooltip-bg-dark: var(--vd-color-gray-900);
11
+ --tooltip-text-color: var(--vd-color-gray-900);
12
+ --tooltip-text-color-light: var(--vd-color-gray-800);
13
+ --tooltip-text-color-dark: var(--vd-color-white);
14
14
 
15
15
  /* Tooltip Spacing (Fibonacci pairs: x/y ratio ~ phi) */
16
16
  --tooltip-padding-y: 0.5rem; /* 8px - fib */
@@ -39,14 +39,14 @@
39
39
 
40
40
  /* Dark Theme Overrides */
41
41
  [data-theme="dark"] {
42
- --tooltip-bg: var(--color-gray-900);
43
- --tooltip-text-color: var(--color-white);
42
+ --tooltip-bg: var(--vd-color-gray-900);
43
+ --tooltip-text-color: var(--vd-color-white);
44
44
  }
45
45
 
46
46
  @media (prefers-color-scheme: dark) {
47
47
  :root:not([data-theme]) {
48
- --tooltip-bg: var(--color-gray-900);
49
- --tooltip-text-color: var(--color-white);
48
+ --tooltip-bg: var(--vd-color-gray-900);
49
+ --tooltip-text-color: var(--vd-color-white);
50
50
  }
51
51
  }
52
52
 
@@ -78,7 +78,7 @@
78
78
  background: var(--vd-glass-bg-light);
79
79
  border: 1px solid var(--vd-glass-border-light);
80
80
  box-shadow: var(--vd-glass-shadow);
81
- color: var(--text-primary);
81
+ color: var(--vd-text-primary);
82
82
  backdrop-filter: blur(var(--vd-glass-blur)) saturate(var(--vd-glass-saturate));
83
83
  -webkit-backdrop-filter: blur(var(--vd-glass-blur)) saturate(var(--vd-glass-saturate));
84
84
  }
@@ -5,10 +5,10 @@
5
5
 
6
6
  :root {
7
7
  --transfer-bg: var(--card-bg, #fff);
8
- --transfer-border-color: var(--border-color, #dee2e6);
9
- --transfer-item-hover-bg: var(--bg-secondary, #f8f9fa);
10
- --transfer-item-selected-bg: var(--color-primary-alpha-10, rgba(13, 110, 253, 0.1));
11
- --transfer-header-bg: var(--bg-secondary, #f8f9fa);
8
+ --transfer-border-color: var(--vd-border-color, #dee2e6);
9
+ --transfer-item-hover-bg: var(--vd-bg-secondary, #f8f9fa);
10
+ --transfer-item-selected-bg: var(--vd-color-primary-alpha-10, rgba(13, 110, 253, 0.1));
11
+ --transfer-header-bg: var(--vd-bg-secondary, #f8f9fa);
12
12
  --transfer-padding: 0.5rem;
13
13
  --transfer-list-height: 15rem;
14
14
  --transfer-border-radius: var(--border-radius, 0.5rem);
@@ -17,17 +17,17 @@
17
17
 
18
18
  [data-theme="dark"] {
19
19
  --transfer-bg: var(--card-bg, #2d2d44);
20
- --transfer-border-color: var(--border-color, #3d3d5c);
21
- --transfer-item-hover-bg: var(--bg-primary, #1a1a2e);
22
- --transfer-header-bg: var(--bg-primary, #1a1a2e);
20
+ --transfer-border-color: var(--vd-border-color, #3d3d5c);
21
+ --transfer-item-hover-bg: var(--vd-bg-primary, #1a1a2e);
22
+ --transfer-header-bg: var(--vd-bg-primary, #1a1a2e);
23
23
  }
24
24
 
25
25
  @media (prefers-color-scheme: dark) {
26
26
  :root:not([data-theme]) {
27
27
  --transfer-bg: var(--card-bg, #2d2d44);
28
- --transfer-border-color: var(--border-color, #3d3d5c);
29
- --transfer-item-hover-bg: var(--bg-primary, #1a1a2e);
30
- --transfer-header-bg: var(--bg-primary, #1a1a2e);
28
+ --transfer-border-color: var(--vd-border-color, #3d3d5c);
29
+ --transfer-item-hover-bg: var(--vd-bg-primary, #1a1a2e);
30
+ --transfer-header-bg: var(--vd-bg-primary, #1a1a2e);
31
31
  }
32
32
  }
33
33
 
@@ -65,7 +65,7 @@
65
65
 
66
66
  .vd-transfer-count {
67
67
  font-weight: 400;
68
- color: var(--text-muted, #6c757d);
68
+ color: var(--vd-text-muted, #6c757d);
69
69
  }
70
70
 
71
71
  /* ========== Search ========== */
@@ -82,7 +82,7 @@
82
82
  border-radius: 0.25rem;
83
83
  font-size: 0.8125rem;
84
84
  background: var(--transfer-bg);
85
- color: var(--text-primary, #212529);
85
+ color: var(--vd-text-primary, #212529);
86
86
  }
87
87
 
88
88
  /* ========== List ========== */
@@ -5,23 +5,23 @@
5
5
 
6
6
  :root {
7
7
  --tree-indent: 1.3125rem; /* 21px - fib */
8
- --tree-line-color: var(--border-color, #dee2e6);
8
+ --tree-line-color: var(--vd-border-color, #dee2e6);
9
9
  --tree-line-width: 1px;
10
10
  --tree-item-padding: 0.25rem 0.3125rem; /* 4px 5px */
11
- --tree-item-hover-bg: var(--bg-secondary, #f8f9fa);
11
+ --tree-item-hover-bg: var(--vd-bg-secondary, #f8f9fa);
12
12
  --tree-icon-size: 1rem;
13
13
  --tree-toggle-size: 1.125rem;
14
14
  }
15
15
 
16
16
  [data-theme="dark"] {
17
- --tree-line-color: var(--color-gray-600, #6c757d);
18
- --tree-item-hover-bg: var(--bg-primary, #1a1a2e);
17
+ --tree-line-color: var(--vd-color-gray-600, #6c757d);
18
+ --tree-item-hover-bg: var(--vd-bg-primary, #1a1a2e);
19
19
  }
20
20
 
21
21
  @media (prefers-color-scheme: dark) {
22
22
  :root:not([data-theme]) {
23
- --tree-line-color: var(--color-gray-600, #6c757d);
24
- --tree-item-hover-bg: var(--bg-primary, #1a1a2e);
23
+ --tree-line-color: var(--vd-color-gray-600, #6c757d);
24
+ --tree-item-hover-bg: var(--vd-bg-primary, #1a1a2e);
25
25
  }
26
26
  }
27
27
 
@@ -71,7 +71,7 @@
71
71
  padding: 0;
72
72
  cursor: pointer;
73
73
  font-size: 0.625rem;
74
- color: var(--text-muted, #6c757d);
74
+ color: var(--vd-text-muted, #6c757d);
75
75
  transition: transform 0.2s ease;
76
76
  flex-shrink: 0;
77
77
  }
@@ -102,7 +102,7 @@
102
102
  .vd-tree-icon {
103
103
  font-size: var(--tree-icon-size);
104
104
  flex-shrink: 0;
105
- color: var(--text-muted, #6c757d);
105
+ color: var(--vd-text-muted, #6c757d);
106
106
  }
107
107
 
108
108
  .vd-tree-node.is-open > .vd-tree-node-content .vd-tree-icon-folder::before {
@@ -129,7 +129,7 @@
129
129
 
130
130
  .vd-tree-node.is-selected > .vd-tree-node-content .vd-tree-label {
131
131
  font-weight: 600;
132
- color: var(--color-primary, #0d6efd);
132
+ color: var(--vd-color-primary, #0d6efd);
133
133
  }
134
134
 
135
135
  /* ========== Children Container ========== */
@@ -6,19 +6,19 @@
6
6
 
7
7
  :root {
8
8
  /* Waypoint active indicator */
9
- --waypoint-active-color: var(--color-primary, #0d6efd);
9
+ --waypoint-active-color: var(--vd-color-primary, #0d6efd);
10
10
  --waypoint-active-bg: transparent;
11
11
  --waypoint-active-border-width: 2px;
12
12
  --waypoint-transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
13
13
  }
14
14
 
15
15
  [data-theme="dark"] {
16
- --waypoint-active-color: var(--color-primary-light, #6ea8fe);
16
+ --waypoint-active-color: var(--vd-color-primary-light, #6ea8fe);
17
17
  }
18
18
 
19
19
  @media (prefers-color-scheme: dark) {
20
20
  :root:not([data-theme]) {
21
- --waypoint-active-color: var(--color-primary-light, #6ea8fe);
21
+ --waypoint-active-color: var(--vd-color-primary-light, #6ea8fe);
22
22
  }
23
23
  }
24
24
 
@@ -312,6 +312,18 @@
312
312
  --slate-8: #1e293b;
313
313
  --slate-9: #0f172a;
314
314
 
315
+ /* --- Charcoal Scale (Deep cool charcoal) --- */
316
+ --charcoal-0: #f5f7f8;
317
+ --charcoal-1: #e7ebee;
318
+ --charcoal-2: #ced6dc;
319
+ --charcoal-3: #adb8c1;
320
+ --charcoal-4: #8b98a3;
321
+ --charcoal-5: #6d7c88;
322
+ --charcoal-6: #53616d;
323
+ --charcoal-7: #394754;
324
+ --charcoal-8: #202c38;
325
+ --charcoal-9: #0d1117;
326
+
315
327
  /* --- Zinc Scale (Slightly warm gray) --- */
316
328
  --zinc-0: #fafafa;
317
329
  --zinc-1: #f4f4f5;
@@ -422,7 +434,7 @@
422
434
  * ═══════════════════════════════════════════════════════════════════════ */
423
435
 
424
436
  /* Background Colors */
425
- --bg-primary: var(--color-white);
437
+ --bg-primary: var(--vd-color-white);
426
438
  --bg-secondary: var(--gray-0);
427
439
  --bg-tertiary: var(--gray-1);
428
440
  --bg-dark: var(--gray-8);
@@ -433,7 +445,7 @@
433
445
  --text-secondary: var(--gray-7);
434
446
  --text-muted: var(--gray-5);
435
447
  --text-light: var(--gray-4);
436
- --text-inverse: var(--color-white);
448
+ --text-inverse: var(--vd-color-white);
437
449
 
438
450
  /* Border Colors */
439
451
  --border-color: var(--gray-3);
@@ -461,57 +473,57 @@
461
473
 
462
474
  .vd-bg-primary,
463
475
  .bg-primary {
464
- background-color: var(--color-primary);
476
+ background-color: var(--vd-color-primary);
465
477
  }
466
478
 
467
479
  .vd-bg-secondary,
468
480
  .bg-secondary {
469
- background-color: var(--color-secondary);
481
+ background-color: var(--vd-color-secondary);
470
482
  }
471
483
 
472
484
  .vd-bg-accent,
473
485
  .bg-accent {
474
- background-color: var(--color-accent);
486
+ background-color: var(--vd-color-accent);
475
487
  }
476
488
 
477
489
  .vd-bg-success,
478
490
  .bg-success {
479
- background-color: var(--color-success);
491
+ background-color: var(--vd-color-success);
480
492
  }
481
493
 
482
494
  .vd-bg-warning,
483
495
  .bg-warning {
484
- background-color: var(--color-warning);
496
+ background-color: var(--vd-color-warning);
485
497
  }
486
498
 
487
499
  .vd-bg-error,
488
500
  .bg-error {
489
- background-color: var(--color-error);
501
+ background-color: var(--vd-color-error);
490
502
  }
491
503
 
492
504
  .vd-bg-info,
493
505
  .bg-info {
494
- background-color: var(--color-info);
506
+ background-color: var(--vd-color-info);
495
507
  }
496
508
 
497
509
  .vd-bg-white,
498
510
  .bg-white {
499
- background-color: var(--color-white);
511
+ background-color: var(--vd-color-white);
500
512
  }
501
513
 
502
514
  .vd-bg-black,
503
515
  .bg-black {
504
- background-color: var(--color-black);
516
+ background-color: var(--vd-color-black);
505
517
  }
506
518
 
507
519
  .vd-bg-dark,
508
520
  .bg-dark {
509
- background-color: var(--bg-dark);
521
+ background-color: var(--vd-bg-dark);
510
522
  }
511
523
 
512
524
  .vd-bg-light,
513
525
  .bg-light {
514
- background-color: var(--bg-secondary);
526
+ background-color: var(--vd-bg-secondary);
515
527
  }
516
528
 
517
529
  /* ═════════════════════════════════════════════════════════════════════════
@@ -519,47 +531,47 @@
519
531
  * ═════════════════════════════════════════════════════════════════════════ */
520
532
 
521
533
  .vd-text-primary {
522
- color: var(--color-primary);
534
+ color: var(--vd-color-primary);
523
535
  }
524
536
 
525
537
  .vd-text-secondary {
526
- color: var(--text-secondary);
538
+ color: var(--vd-text-secondary);
527
539
  }
528
540
 
529
541
  .vd-text-success {
530
- color: var(--color-success);
542
+ color: var(--vd-color-success);
531
543
  }
532
544
 
533
545
  .vd-text-warning {
534
- color: var(--color-warning);
546
+ color: var(--vd-color-warning);
535
547
  }
536
548
 
537
549
  .vd-text-error {
538
- color: var(--color-error);
550
+ color: var(--vd-color-error);
539
551
  }
540
552
 
541
553
  .vd-text-info {
542
- color: var(--color-info);
554
+ color: var(--vd-color-info);
543
555
  }
544
556
 
545
557
  .vd-text-white {
546
- color: var(--color-white);
558
+ color: var(--vd-color-white);
547
559
  }
548
560
 
549
561
  .vd-text-black {
550
- color: var(--color-black);
562
+ color: var(--vd-color-black);
551
563
  }
552
564
 
553
565
  .vd-text-muted {
554
- color: var(--text-muted);
566
+ color: var(--vd-text-muted);
555
567
  }
556
568
 
557
569
  .vd-text-light {
558
- color: var(--text-light);
570
+ color: var(--vd-text-light);
559
571
  }
560
572
 
561
573
  .vd-text-inverse {
562
- color: var(--text-inverse);
574
+ color: var(--vd-text-inverse);
563
575
  }
564
576
 
565
577
  /* ═════════════════════════════════════════════════════════════════════════
@@ -568,42 +580,42 @@
568
580
 
569
581
  .vd-border-primary,
570
582
  .border-primary {
571
- border-color: var(--color-primary);
583
+ border-color: var(--vd-color-primary);
572
584
  }
573
585
 
574
586
  .vd-border-secondary,
575
587
  .border-secondary {
576
- border-color: var(--color-secondary);
588
+ border-color: var(--vd-color-secondary);
577
589
  }
578
590
 
579
591
  .vd-border-success,
580
592
  .border-success {
581
- border-color: var(--color-success);
593
+ border-color: var(--vd-color-success);
582
594
  }
583
595
 
584
596
  .vd-border-warning,
585
597
  .border-warning {
586
- border-color: var(--color-warning);
598
+ border-color: var(--vd-color-warning);
587
599
  }
588
600
 
589
601
  .vd-border-error,
590
602
  .border-error {
591
- border-color: var(--color-error);
603
+ border-color: var(--vd-color-error);
592
604
  }
593
605
 
594
606
  .vd-border-info,
595
607
  .border-info {
596
- border-color: var(--color-info);
608
+ border-color: var(--vd-color-info);
597
609
  }
598
610
 
599
611
  .vd-border-light,
600
612
  .border-light {
601
- border-color: var(--border-color-light);
613
+ border-color: var(--vd-border-color-light);
602
614
  }
603
615
 
604
616
  .vd-border-dark,
605
617
  .border-dark {
606
- border-color: var(--border-color-dark);
618
+ border-color: var(--vd-border-color-dark);
607
619
  }
608
620
 
609
621
  /* ═════════════════════════════════════════════════════════════════════════
@@ -615,7 +627,7 @@
615
627
  --bg-primary: var(--gray-9);
616
628
  --bg-secondary: var(--gray-8);
617
629
  --bg-tertiary: var(--gray-7);
618
- --bg-dark: var(--color-black);
630
+ --bg-dark: var(--vd-color-black);
619
631
  --bg-darker: #000000;
620
632
 
621
633
  /* Text Colors */
@@ -652,7 +664,7 @@
652
664
  --bg-primary: var(--gray-9);
653
665
  --bg-secondary: var(--gray-8);
654
666
  --bg-tertiary: var(--gray-7);
655
- --bg-dark: var(--color-black);
667
+ --bg-dark: var(--vd-color-black);
656
668
  --bg-darker: #000000;
657
669
 
658
670
  /* Text Colors */
@@ -946,7 +958,21 @@
946
958
  * These rules remap --gray-* variables based on [data-neutral] attribute
947
959
  * ═════════════════════════════════════════════════════════════════════════ */
948
960
 
949
- /* Gray Neutral (default - no override needed) */
961
+ /* Charcoal Neutral (default) */
962
+ [data-neutral="charcoal"] {
963
+ --gray-0: var(--charcoal-0);
964
+ --gray-1: var(--charcoal-1);
965
+ --gray-2: var(--charcoal-2);
966
+ --gray-3: var(--charcoal-3);
967
+ --gray-4: var(--charcoal-4);
968
+ --gray-5: var(--charcoal-5);
969
+ --gray-6: var(--charcoal-6);
970
+ --gray-7: var(--charcoal-7);
971
+ --gray-8: var(--charcoal-8);
972
+ --gray-9: var(--charcoal-9);
973
+ }
974
+
975
+ /* Gray Neutral */
950
976
  [data-neutral="gray"] {
951
977
  --gray-0: #f8f9fa;
952
978
  --gray-1: #f1f3f5;
package/css/core/grid.css CHANGED
@@ -79,7 +79,7 @@
79
79
  /* Container Wide - Full Fibonacci wide (1597px) */
80
80
  .vd-container-wide {
81
81
  width: 100%;
82
- max-width: var(--container-2xl);
82
+ max-width: var(--container-max-width-wide);
83
83
  margin-left: auto;
84
84
  margin-right: auto;
85
85
  padding-left: var(--container-padding);
@@ -1219,11 +1219,6 @@
1219
1219
  * Fibonacci column ratios: 2:3:5, 3:5:8, 5:8
1220
1220
  * =================================================== */
1221
1221
 
1222
- /* Wide container variant (Fibonacci: 1597px) */
1223
- .vd-container-wide {
1224
- max-width: var(--container-max-width-wide);
1225
- }
1226
-
1227
1222
  /* Fibonacci-number container widths */
1228
1223
  .vd-container-fib-610 {
1229
1224
  max-width: 610px;
@@ -1379,7 +1379,7 @@
1379
1379
  /* Border Utilities */
1380
1380
  .vd-border,
1381
1381
  .border {
1382
- border: 1px solid var(--border-color);
1382
+ border: 1px solid var(--vd-border-color);
1383
1383
  }
1384
1384
 
1385
1385
  .vd-border-0,
@@ -1389,22 +1389,22 @@
1389
1389
 
1390
1390
  .vd-border-top,
1391
1391
  .border-top {
1392
- border-top: 1px solid var(--border-color);
1392
+ border-top: 1px solid var(--vd-border-color);
1393
1393
  }
1394
1394
 
1395
1395
  .vd-border-right,
1396
1396
  .border-right {
1397
- border-right: 1px solid var(--border-color);
1397
+ border-right: 1px solid var(--vd-border-color);
1398
1398
  }
1399
1399
 
1400
1400
  .vd-border-bottom,
1401
1401
  .border-bottom {
1402
- border-bottom: 1px solid var(--border-color);
1402
+ border-bottom: 1px solid var(--vd-border-color);
1403
1403
  }
1404
1404
 
1405
1405
  .vd-border-left,
1406
1406
  .border-left {
1407
- border-left: 1px solid var(--border-color);
1407
+ border-left: 1px solid var(--vd-border-color);
1408
1408
  }
1409
1409
 
1410
1410
  .vd-border-2,
@@ -1831,8 +1831,8 @@
1831
1831
  z-index: 9999;
1832
1832
  padding: 0.8125rem;
1833
1833
  /* 13px - fib */
1834
- background-color: var(--bg-primary);
1835
- color: var(--text-primary);
1834
+ background-color: var(--vd-bg-primary);
1835
+ color: var(--vd-text-primary);
1836
1836
  text-decoration: none;
1837
1837
  font-weight: var(--font-weight-medium);
1838
1838
  }
@@ -1840,7 +1840,7 @@
1840
1840
  .skip-link:focus {
1841
1841
  left: 0;
1842
1842
  top: 0;
1843
- outline: 2px solid var(--color-primary);
1843
+ outline: 2px solid var(--vd-color-primary);
1844
1844
  outline-offset: 2px;
1845
1845
  }
1846
1846
 
@@ -1871,18 +1871,18 @@
1871
1871
 
1872
1872
  /* Focus Visible Utilities */
1873
1873
  .focus-ring:focus-visible {
1874
- outline: 2px solid var(--color-primary);
1874
+ outline: 2px solid var(--vd-color-primary);
1875
1875
  outline-offset: 2px;
1876
1876
  }
1877
1877
 
1878
1878
  .focus-ring-inset:focus-visible {
1879
- outline: 2px solid var(--color-primary);
1879
+ outline: 2px solid var(--vd-color-primary);
1880
1880
  outline-offset: -2px;
1881
1881
  }
1882
1882
 
1883
1883
  .focus-ring-shadow:focus-visible {
1884
1884
  outline: none;
1885
- box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb, 0, 123, 255), 0.25);
1885
+ box-shadow: 0 0 0 3px rgba(var(--vd-color-primary-rgb, 0, 123, 255), 0.25);
1886
1886
  }
1887
1887
 
1888
1888
  /* Text Alignment Utilities */