@vanduo-oss/framework 1.3.9 → 1.4.1

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 (124) hide show
  1. package/README.md +89 -42
  2. package/css/components/affix.css +12 -12
  3. package/css/components/alerts.css +70 -70
  4. package/css/components/avatar.css +78 -78
  5. package/css/components/badges.css +67 -67
  6. package/css/components/breadcrumbs.css +32 -32
  7. package/css/components/bubble.css +40 -40
  8. package/css/components/button-group.css +2 -2
  9. package/css/components/buttons.css +157 -157
  10. package/css/components/cards.css +79 -79
  11. package/css/components/chips.css +50 -50
  12. package/css/components/code-snippet.css +132 -132
  13. package/css/components/collapsible.css +67 -67
  14. package/css/components/collections.css +68 -68
  15. package/css/components/datepicker.css +54 -54
  16. package/css/components/doc-search.css +96 -103
  17. package/css/components/doc-tabs.css +11 -11
  18. package/css/components/draggable.css +77 -77
  19. package/css/components/dropdown.css +50 -50
  20. package/css/components/expanding-cards.css +1 -1
  21. package/css/components/fab.css +61 -61
  22. package/css/components/flow.css +55 -55
  23. package/css/components/footer.css +62 -62
  24. package/css/components/forms.css +437 -425
  25. package/css/components/image-box.css +50 -54
  26. package/css/components/modals.css +51 -51
  27. package/css/components/music-player.css +150 -150
  28. package/css/components/navbar.css +80 -80
  29. package/css/components/pagination.css +51 -51
  30. package/css/components/preloader.css +19 -19
  31. package/css/components/progress.css +20 -20
  32. package/css/components/rating.css +19 -19
  33. package/css/components/ripple.css +10 -10
  34. package/css/components/sidenav.css +72 -72
  35. package/css/components/skeleton.css +17 -16
  36. package/css/components/spinner.css +33 -33
  37. package/css/components/spotlight.css +33 -33
  38. package/css/components/stepper.css +39 -39
  39. package/css/components/suggest.css +37 -37
  40. package/css/components/tabs.css +60 -60
  41. package/css/components/theme-customizer.css +154 -154
  42. package/css/components/timeline.css +50 -50
  43. package/css/components/timepicker.css +29 -29
  44. package/css/components/toast.css +53 -53
  45. package/css/components/tooltips.css +78 -78
  46. package/css/components/transfer.css +37 -37
  47. package/css/components/tree.css +28 -28
  48. package/css/components/waypoint.css +12 -12
  49. package/css/core/colors.css +640 -640
  50. package/css/core/grid.css +127 -132
  51. package/css/core/helpers.css +349 -349
  52. package/css/core/tokens.css +133 -67
  53. package/css/core/typography.css +105 -103
  54. package/css/effects/morph.css +21 -21
  55. package/css/effects/parallax.css +6 -6
  56. package/css/utilities/color-utilities.css +273 -273
  57. package/css/utilities/media.css +4 -4
  58. package/css/utilities/shadow.css +75 -75
  59. package/css/utilities/table.css +64 -64
  60. package/css/utilities/transitions.css +53 -41
  61. package/css/vanduo.css +14 -35
  62. package/dist/build-info.json +3 -3
  63. package/dist/vanduo.cjs.js +947 -307
  64. package/dist/vanduo.cjs.js.map +3 -3
  65. package/dist/vanduo.cjs.min.js +7 -7
  66. package/dist/vanduo.cjs.min.js.map +3 -3
  67. package/dist/vanduo.css +9650 -9656
  68. package/dist/vanduo.css.map +1 -1
  69. package/dist/vanduo.esm.js +947 -307
  70. package/dist/vanduo.esm.js.map +3 -3
  71. package/dist/vanduo.esm.min.js +7 -7
  72. package/dist/vanduo.esm.min.js.map +3 -3
  73. package/dist/vanduo.js +947 -307
  74. package/dist/vanduo.js.map +3 -3
  75. package/dist/vanduo.min.css +2 -2
  76. package/dist/vanduo.min.css.map +1 -1
  77. package/dist/vanduo.min.js +7 -7
  78. package/dist/vanduo.min.js.map +3 -3
  79. package/js/components/affix.js +4 -4
  80. package/js/components/bubble.js +3 -3
  81. package/js/components/code-snippet.js +129 -5
  82. package/js/components/collapsible.js +2 -3
  83. package/js/components/datepicker.js +2 -2
  84. package/js/components/doc-search.js +69 -11
  85. package/js/components/draggable.js +4 -4
  86. package/js/components/dropdown.js +2 -3
  87. package/js/components/expanding-cards.js +2 -2
  88. package/js/components/flow.js +2 -2
  89. package/js/components/font-switcher.js +23 -13
  90. package/js/components/glass.js +2 -2
  91. package/js/components/grid.js +19 -8
  92. package/js/components/image-box.js +51 -12
  93. package/js/components/lazy-load.js +81 -9
  94. package/js/components/modals.js +28 -12
  95. package/js/components/morph.js +3 -3
  96. package/js/components/music-player.js +13 -13
  97. package/js/components/navbar.js +3 -3
  98. package/js/components/pagination.js +2 -3
  99. package/js/components/parallax.js +9 -10
  100. package/js/components/preloader.js +15 -6
  101. package/js/components/rating.js +2 -2
  102. package/js/components/ripple.js +2 -2
  103. package/js/components/select.js +2 -3
  104. package/js/components/sidenav.js +43 -14
  105. package/js/components/spotlight.js +2 -2
  106. package/js/components/stepper.js +2 -2
  107. package/js/components/suggest.js +9 -3
  108. package/js/components/tabs.js +2 -2
  109. package/js/components/theme-customizer.js +155 -25
  110. package/js/components/theme-switcher.js +27 -16
  111. package/js/components/timeline.js +41 -12
  112. package/js/components/timepicker.js +2 -2
  113. package/js/components/toast.js +1 -1
  114. package/js/components/tooltips.js +4 -4
  115. package/js/components/transfer.js +2 -2
  116. package/js/components/tree.js +2 -2
  117. package/js/components/validate.js +2 -2
  118. package/js/components/vd-hex.js +10 -6
  119. package/js/components/waypoint.js +2 -2
  120. package/js/utils/helpers.js +7 -4
  121. package/js/utils/lifecycle.js +158 -83
  122. package/js/vanduo.js +203 -34
  123. package/package.json +2 -1
  124. package/css/core/vd-aliases.css +0 -60
@@ -5,35 +5,35 @@
5
5
 
6
6
  :root {
7
7
  /* FAB Dimensions (Fibonacci) */
8
- --fab-size: 3.5rem; /* 56px */
9
- --fab-size-sm: 2.5rem; /* 40px */
10
- --fab-size-lg: 4.5rem; /* 72px */
11
- --fab-icon-size: 1.5rem;
8
+ --vd-fab-size: 3.5rem; /* 56px */
9
+ --vd-fab-size-sm: 2.5rem; /* 40px */
10
+ --vd-fab-size-lg: 4.5rem; /* 72px */
11
+ --vd-fab-icon-size: 1.5rem;
12
12
 
13
13
  /* FAB Colors */
14
- --fab-bg: var(--color-primary, #0d6efd);
15
- --fab-color: #fff;
16
- --fab-hover-bg: var(--color-primary-dark, #0b5ed7);
17
- --fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.25), 0 1px 3px rgba(0, 0, 0, 0.15);
18
- --fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.3), 0 2px 5px rgba(0, 0, 0, 0.2);
14
+ --vd-fab-bg: var(--vd-color-primary, #0d6efd);
15
+ --vd-fab-color: #fff;
16
+ --vd-fab-hover-bg: var(--vd-color-primary-dark, #0b5ed7);
17
+ --vd-fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.25), 0 1px 3px rgba(0, 0, 0, 0.15);
18
+ --vd-fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.3), 0 2px 5px rgba(0, 0, 0, 0.2);
19
19
 
20
20
  /* FAB Position */
21
- --fab-offset: 1.3125rem; /* 21px - fib */
22
- --fab-z-index: 1030;
21
+ --vd-fab-offset: 1.3125rem; /* 21px - fib */
22
+ --vd-fab-z-index: 1030;
23
23
 
24
24
  /* FAB Menu */
25
- --fab-menu-gap: 0.8125rem; /* 13px - fib */
25
+ --vd-fab-menu-gap: 0.8125rem; /* 13px - fib */
26
26
  }
27
27
 
28
28
  [data-theme="dark"] {
29
- --fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.3);
30
- --fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.35);
29
+ --vd-fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.3);
30
+ --vd-fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.35);
31
31
  }
32
32
 
33
33
  @media (prefers-color-scheme: dark) {
34
34
  :root:not([data-theme]) {
35
- --fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.3);
36
- --fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.35);
35
+ --vd-fab-shadow: 0 3px 8px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.3);
36
+ --vd-fab-hover-shadow: 0 5px 13px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.35);
37
37
  }
38
38
  }
39
39
 
@@ -43,22 +43,22 @@
43
43
  display: inline-flex;
44
44
  align-items: center;
45
45
  justify-content: center;
46
- width: var(--fab-size);
47
- height: var(--fab-size);
46
+ width: var(--vd-fab-size);
47
+ height: var(--vd-fab-size);
48
48
  padding: 0;
49
49
  border: none;
50
50
  border-radius: 50%;
51
- background: var(--fab-bg);
52
- color: var(--fab-color);
53
- font-size: var(--fab-icon-size);
54
- box-shadow: var(--fab-shadow);
51
+ background: var(--vd-fab-bg);
52
+ color: var(--vd-fab-color);
53
+ font-size: var(--vd-fab-icon-size);
54
+ box-shadow: var(--vd-fab-shadow);
55
55
  cursor: pointer;
56
56
  transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
57
57
  }
58
58
 
59
59
  .vd-fab-glass {
60
60
  background: var(--vd-glass-bg-light);
61
- color: var(--text-primary);
61
+ color: var(--vd-text-primary);
62
62
  border: 1px solid var(--vd-glass-border-light);
63
63
  box-shadow: var(--vd-glass-shadow);
64
64
  backdrop-filter: blur(var(--vd-glass-blur)) saturate(var(--vd-glass-saturate));
@@ -66,8 +66,8 @@
66
66
  }
67
67
 
68
68
  .vd-fab:hover {
69
- background: var(--fab-hover-bg);
70
- box-shadow: var(--fab-hover-shadow);
69
+ background: var(--vd-fab-hover-bg);
70
+ box-shadow: var(--vd-fab-hover-shadow);
71
71
  transform: scale(1.05);
72
72
  }
73
73
 
@@ -81,21 +81,21 @@
81
81
  }
82
82
 
83
83
  .vd-fab:focus-visible {
84
- outline: 2px solid var(--fab-bg);
84
+ outline: 2px solid var(--vd-fab-bg);
85
85
  outline-offset: 3px;
86
86
  }
87
87
 
88
88
  /* ========== Sizes ========== */
89
89
 
90
90
  .vd-fab-sm {
91
- width: var(--fab-size-sm);
92
- height: var(--fab-size-sm);
91
+ width: var(--vd-fab-size-sm);
92
+ height: var(--vd-fab-size-sm);
93
93
  font-size: 1.125rem;
94
94
  }
95
95
 
96
96
  .vd-fab-lg {
97
- width: var(--fab-size-lg);
98
- height: var(--fab-size-lg);
97
+ width: var(--vd-fab-size-lg);
98
+ height: var(--vd-fab-size-lg);
99
99
  font-size: 2rem;
100
100
  }
101
101
 
@@ -112,42 +112,42 @@
112
112
 
113
113
  .vd-fab-fixed {
114
114
  position: fixed;
115
- bottom: var(--fab-offset);
116
- right: var(--fab-offset);
117
- z-index: var(--fab-z-index);
115
+ bottom: var(--vd-fab-offset);
116
+ right: var(--vd-fab-offset);
117
+ z-index: var(--vd-fab-z-index);
118
118
  }
119
119
 
120
120
  /* ========== Position Variants (all include position: fixed) ========== */
121
121
 
122
122
  .vd-fab-bottom-left {
123
123
  position: fixed;
124
- z-index: var(--fab-z-index);
125
- bottom: var(--fab-offset);
124
+ z-index: var(--vd-fab-z-index);
125
+ bottom: var(--vd-fab-offset);
126
126
  right: auto;
127
- left: var(--fab-offset);
127
+ left: var(--vd-fab-offset);
128
128
  }
129
129
 
130
130
  .vd-fab-top-right {
131
131
  position: fixed;
132
- z-index: var(--fab-z-index);
132
+ z-index: var(--vd-fab-z-index);
133
133
  bottom: auto;
134
- right: var(--fab-offset);
135
- top: var(--fab-offset);
134
+ right: var(--vd-fab-offset);
135
+ top: var(--vd-fab-offset);
136
136
  }
137
137
 
138
138
  .vd-fab-top-left {
139
139
  position: fixed;
140
- z-index: var(--fab-z-index);
140
+ z-index: var(--vd-fab-z-index);
141
141
  bottom: auto;
142
142
  right: auto;
143
- top: var(--fab-offset);
144
- left: var(--fab-offset);
143
+ top: var(--vd-fab-offset);
144
+ left: var(--vd-fab-offset);
145
145
  }
146
146
 
147
147
  .vd-fab-center {
148
148
  position: fixed;
149
- z-index: var(--fab-z-index);
150
- bottom: var(--fab-offset);
149
+ z-index: var(--vd-fab-z-index);
150
+ bottom: var(--vd-fab-offset);
151
151
  right: 50%;
152
152
  transform: translateX(50%);
153
153
  }
@@ -159,18 +159,18 @@
159
159
  /* ========== Color Variants ========== */
160
160
 
161
161
  .vd-fab-secondary {
162
- --fab-bg: var(--color-gray-600, #6c757d);
163
- --fab-hover-bg: var(--color-gray-700, #5c636a);
162
+ --vd-fab-bg: var(--vd-color-gray-600, #6c757d);
163
+ --vd-fab-hover-bg: var(--vd-color-gray-700, #5c636a);
164
164
  }
165
165
 
166
166
  .vd-fab-success {
167
- --fab-bg: var(--color-success, #198754);
168
- --fab-hover-bg: #157347;
167
+ --vd-fab-bg: var(--vd-color-success, #198754);
168
+ --vd-fab-hover-bg: #157347;
169
169
  }
170
170
 
171
171
  .vd-fab-danger {
172
- --fab-bg: var(--color-danger, #dc3545);
173
- --fab-hover-bg: #bb2d3b;
172
+ --vd-fab-bg: var(--vd-color-danger, #dc3545);
173
+ --vd-fab-hover-bg: #bb2d3b;
174
174
  }
175
175
 
176
176
  /* ========== Speed Dial Menu ========== */
@@ -180,14 +180,14 @@
180
180
  display: inline-flex;
181
181
  flex-direction: column-reverse;
182
182
  align-items: center;
183
- gap: var(--fab-menu-gap);
183
+ gap: var(--vd-fab-menu-gap);
184
184
  }
185
185
 
186
186
  .vd-fab-menu .vd-fab-actions {
187
187
  display: flex;
188
188
  flex-direction: column;
189
189
  align-items: center;
190
- gap: var(--fab-menu-gap);
190
+ gap: var(--vd-fab-menu-gap);
191
191
  opacity: 0;
192
192
  visibility: hidden;
193
193
  transform: translateY(0.5rem);
@@ -202,30 +202,30 @@
202
202
 
203
203
  .vd-fab-menu.vd-fab-fixed {
204
204
  position: fixed;
205
- bottom: var(--fab-offset);
206
- right: var(--fab-offset);
207
- z-index: var(--fab-z-index);
205
+ bottom: var(--vd-fab-offset);
206
+ right: var(--vd-fab-offset);
207
+ z-index: var(--vd-fab-z-index);
208
208
  }
209
209
 
210
210
  .vd-fab-menu .vd-fab-action {
211
211
  display: inline-flex;
212
212
  align-items: center;
213
213
  justify-content: center;
214
- width: var(--fab-size-sm);
215
- height: var(--fab-size-sm);
214
+ width: var(--vd-fab-size-sm);
215
+ height: var(--vd-fab-size-sm);
216
216
  border: none;
217
217
  border-radius: 50%;
218
- background: var(--fab-bg);
219
- color: var(--fab-color);
218
+ background: var(--vd-fab-bg);
219
+ color: var(--vd-fab-color);
220
220
  font-size: 1rem;
221
- box-shadow: var(--fab-shadow);
221
+ box-shadow: var(--vd-fab-shadow);
222
222
  cursor: pointer;
223
223
  transition: background 0.15s ease, transform 0.15s ease;
224
224
  }
225
225
 
226
226
  .vd-fab-menu .vd-fab-action:hover {
227
227
  transform: scale(1.1);
228
- background: var(--fab-hover-bg);
228
+ background: var(--vd-fab-hover-bg);
229
229
  }
230
230
 
231
231
  /* Staggered entrance for action buttons */
@@ -6,49 +6,49 @@
6
6
 
7
7
  :root {
8
8
  /* Flow Dimensions */
9
- --flow-height: auto;
10
- --flow-min-height: 13rem; /* 208px - fib */
9
+ --vd-flow-height: auto;
10
+ --vd-flow-min-height: 13rem; /* 208px - fib */
11
11
 
12
12
  /* Flow Spacing (Fibonacci) */
13
- --flow-padding: 0;
14
- --flow-gap: 0;
15
- --flow-indicator-size: 0.5rem; /* 8px - fib */
16
- --flow-indicator-gap: 0.5rem; /* 8px - fib */
17
- --flow-control-size: 2.5rem; /* 40px */
18
- --flow-control-offset: 0.8125rem; /* 13px - fib */
13
+ --vd-flow-padding: 0;
14
+ --vd-flow-gap: 0;
15
+ --vd-flow-indicator-size: 0.5rem; /* 8px - fib */
16
+ --vd-flow-indicator-gap: 0.5rem; /* 8px - fib */
17
+ --vd-flow-control-size: 2.5rem; /* 40px */
18
+ --vd-flow-control-offset: 0.8125rem; /* 13px - fib */
19
19
 
20
20
  /* Flow Colors */
21
- --flow-bg: var(--bg-primary, #fff);
22
- --flow-indicator-bg: rgba(255, 255, 255, 0.5);
23
- --flow-indicator-active-bg: #fff;
24
- --flow-control-bg: rgba(0, 0, 0, 0.3);
25
- --flow-control-hover-bg: rgba(0, 0, 0, 0.5);
26
- --flow-control-color: #fff;
21
+ --vd-flow-bg: var(--vd-bg-primary, #fff);
22
+ --vd-flow-indicator-bg: rgba(255, 255, 255, 0.5);
23
+ --vd-flow-indicator-active-bg: #fff;
24
+ --vd-flow-control-bg: rgba(0, 0, 0, 0.3);
25
+ --vd-flow-control-hover-bg: rgba(0, 0, 0, 0.5);
26
+ --vd-flow-control-color: #fff;
27
27
 
28
28
  /* Flow Transitions */
29
- --flow-transition-duration: 0.5s;
30
- --flow-transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
29
+ --vd-flow-transition-duration: 0.5s;
30
+ --vd-flow-transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
31
31
 
32
32
  /* Flow Border */
33
- --flow-border-radius: var(--border-radius, 0.5rem);
33
+ --vd-flow-border-radius: var(--vd-border-radius, 0.5rem);
34
34
 
35
35
  /* Flow Z-index */
36
- --flow-z-controls: 10;
37
- --flow-z-indicators: 10;
36
+ --vd-flow-z-controls: 10;
37
+ --vd-flow-z-indicators: 10;
38
38
  }
39
39
 
40
40
  /* Dark Theme */
41
41
  [data-theme="dark"] {
42
- --flow-bg: var(--bg-primary, #1a1a2e);
43
- --flow-control-bg: rgba(255, 255, 255, 0.2);
44
- --flow-control-hover-bg: rgba(255, 255, 255, 0.35);
42
+ --vd-flow-bg: var(--vd-bg-primary, #1a1a2e);
43
+ --vd-flow-control-bg: rgba(255, 255, 255, 0.2);
44
+ --vd-flow-control-hover-bg: rgba(255, 255, 255, 0.35);
45
45
  }
46
46
 
47
47
  @media (prefers-color-scheme: dark) {
48
48
  :root:not([data-theme]) {
49
- --flow-bg: var(--bg-primary, #1a1a2e);
50
- --flow-control-bg: rgba(255, 255, 255, 0.2);
51
- --flow-control-hover-bg: rgba(255, 255, 255, 0.35);
49
+ --vd-flow-bg: var(--vd-bg-primary, #1a1a2e);
50
+ --vd-flow-control-bg: rgba(255, 255, 255, 0.2);
51
+ --vd-flow-control-hover-bg: rgba(255, 255, 255, 0.35);
52
52
  }
53
53
  }
54
54
 
@@ -59,10 +59,10 @@
59
59
  position: relative;
60
60
  overflow: hidden;
61
61
  width: 100%;
62
- min-height: var(--flow-min-height);
63
- height: var(--flow-height);
64
- background-color: var(--flow-bg);
65
- border-radius: var(--flow-border-radius);
62
+ min-height: var(--vd-flow-min-height);
63
+ height: var(--vd-flow-height);
64
+ background-color: var(--vd-flow-bg);
65
+ border-radius: var(--vd-flow-border-radius);
66
66
  }
67
67
 
68
68
  /* ========== Track ========== */
@@ -71,7 +71,7 @@
71
71
  display: flex;
72
72
  width: 100%;
73
73
  height: 100%;
74
- transition: transform var(--flow-transition-duration) var(--flow-transition-timing);
74
+ transition: transform var(--vd-flow-transition-duration) var(--vd-flow-transition-timing);
75
75
  will-change: transform;
76
76
  }
77
77
 
@@ -86,7 +86,7 @@
86
86
  position: relative;
87
87
  flex: 0 0 100%;
88
88
  width: 100%;
89
- min-height: var(--flow-min-height);
89
+ min-height: var(--vd-flow-min-height);
90
90
  overflow: hidden;
91
91
  }
92
92
 
@@ -106,7 +106,7 @@
106
106
  top: 0;
107
107
  left: 0;
108
108
  opacity: 0;
109
- transition: opacity var(--flow-transition-duration) var(--flow-transition-timing);
109
+ transition: opacity var(--vd-flow-transition-duration) var(--vd-flow-transition-timing);
110
110
  pointer-events: none;
111
111
  }
112
112
 
@@ -123,17 +123,17 @@
123
123
  position: absolute;
124
124
  top: 50%;
125
125
  transform: translateY(-50%);
126
- z-index: var(--flow-z-controls);
126
+ z-index: var(--vd-flow-z-controls);
127
127
  display: flex;
128
128
  align-items: center;
129
129
  justify-content: center;
130
- width: var(--flow-control-size);
131
- height: var(--flow-control-size);
130
+ width: var(--vd-flow-control-size);
131
+ height: var(--vd-flow-control-size);
132
132
  padding: 0;
133
133
  border: none;
134
134
  border-radius: 50%;
135
- background: var(--flow-control-bg);
136
- color: var(--flow-control-color);
135
+ background: var(--vd-flow-control-bg);
136
+ color: var(--vd-flow-control-color);
137
137
  font-size: 1.125rem;
138
138
  cursor: pointer;
139
139
  transition: background 0.2s ease, opacity 0.2s ease;
@@ -149,21 +149,21 @@
149
149
 
150
150
  .vd-flow-prev:hover,
151
151
  .vd-flow-next:hover {
152
- background: var(--flow-control-hover-bg);
152
+ background: var(--vd-flow-control-hover-bg);
153
153
  }
154
154
 
155
155
  .vd-flow-prev:focus-visible,
156
156
  .vd-flow-next:focus-visible {
157
- outline: 2px solid var(--flow-control-color);
157
+ outline: 2px solid var(--vd-flow-control-color);
158
158
  outline-offset: 2px;
159
159
  }
160
160
 
161
161
  .vd-flow-prev {
162
- left: var(--flow-control-offset);
162
+ left: var(--vd-flow-control-offset);
163
163
  }
164
164
 
165
165
  .vd-flow-next {
166
- right: var(--flow-control-offset);
166
+ right: var(--vd-flow-control-offset);
167
167
  }
168
168
 
169
169
  /* ========== Indicators ========== */
@@ -173,9 +173,9 @@
173
173
  bottom: 0.8125rem; /* 13px - fib */
174
174
  left: 50%;
175
175
  transform: translateX(-50%);
176
- z-index: var(--flow-z-indicators);
176
+ z-index: var(--vd-flow-z-indicators);
177
177
  display: flex;
178
- gap: var(--flow-indicator-gap);
178
+ gap: var(--vd-flow-indicator-gap);
179
179
  padding: 0.3125rem 0.5rem; /* 5px 8px - fib */
180
180
  margin: 0;
181
181
  list-style: none;
@@ -183,12 +183,12 @@
183
183
  }
184
184
 
185
185
  .vd-flow-indicator {
186
- width: var(--flow-indicator-size);
187
- height: var(--flow-indicator-size);
186
+ width: var(--vd-flow-indicator-size);
187
+ height: var(--vd-flow-indicator-size);
188
188
  padding: 0;
189
189
  border: none;
190
190
  border-radius: 50%;
191
- background: var(--flow-indicator-bg);
191
+ background: var(--vd-flow-indicator-bg);
192
192
  cursor: pointer;
193
193
  transition: background 0.2s ease, transform 0.2s ease;
194
194
  }
@@ -198,12 +198,12 @@
198
198
  }
199
199
 
200
200
  .vd-flow-indicator.is-active {
201
- background: var(--flow-indicator-active-bg);
201
+ background: var(--vd-flow-indicator-active-bg);
202
202
  transform: scale(1.3);
203
203
  }
204
204
 
205
205
  .vd-flow-indicator:focus-visible {
206
- outline: 2px solid var(--flow-indicator-active-bg);
206
+ outline: 2px solid var(--vd-flow-indicator-active-bg);
207
207
  outline-offset: 2px;
208
208
  }
209
209
 
@@ -236,18 +236,18 @@
236
236
  /* ========== Size Variants ========== */
237
237
 
238
238
  .vd-flow-compact {
239
- --flow-min-height: 8rem;
240
- --flow-control-size: 2rem;
239
+ --vd-flow-min-height: 8rem;
240
+ --vd-flow-control-size: 2rem;
241
241
  }
242
242
 
243
243
  .vd-flow-lg {
244
- --flow-min-height: 21rem; /* 336px - fib×16 */
245
- --flow-control-size: 3rem;
244
+ --vd-flow-min-height: 21rem; /* 336px - fib×16 */
245
+ --vd-flow-control-size: 3rem;
246
246
  }
247
247
 
248
248
  .vd-flow-fullscreen {
249
- --flow-min-height: 100vh;
250
- --flow-border-radius: 0;
249
+ --vd-flow-min-height: 100vh;
250
+ --vd-flow-border-radius: 0;
251
251
  }
252
252
 
253
253
  /* ========== Responsive ========== */
@@ -256,7 +256,7 @@
256
256
  .vd-flow-prev,
257
257
  .vd-flow-next {
258
258
  opacity: 1;
259
- --flow-control-size: 2rem;
259
+ --vd-flow-control-size: 2rem;
260
260
  }
261
261
 
262
262
  .vd-flow-caption {