@vanduo-oss/framework 1.4.0 → 1.4.2

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 (89) hide show
  1. package/README.md +11 -9
  2. package/css/components/affix.css +11 -11
  3. package/css/components/alerts.css +55 -55
  4. package/css/components/avatar.css +62 -62
  5. package/css/components/badges.css +25 -25
  6. package/css/components/breadcrumbs.css +31 -31
  7. package/css/components/bubble.css +40 -40
  8. package/css/components/button-group.css +2 -2
  9. package/css/components/buttons.css +33 -33
  10. package/css/components/cards.css +76 -76
  11. package/css/components/chips.css +27 -27
  12. package/css/components/code-snippet.css +132 -132
  13. package/css/components/collapsible.css +60 -60
  14. package/css/components/collections.css +58 -58
  15. package/css/components/datepicker.css +55 -53
  16. package/css/components/doc-search.css +63 -63
  17. package/css/components/doc-tabs.css +1 -1
  18. package/css/components/draggable.css +69 -69
  19. package/css/components/dropdown.css +48 -48
  20. package/css/components/fab.css +60 -60
  21. package/css/components/flow.css +55 -55
  22. package/css/components/footer.css +52 -52
  23. package/css/components/forms.css +373 -373
  24. package/css/components/image-box.css +39 -39
  25. package/css/components/modals.css +53 -49
  26. package/css/components/music-player.css +150 -150
  27. package/css/components/navbar.css +71 -71
  28. package/css/components/pagination.css +50 -50
  29. package/css/components/preloader.css +18 -18
  30. package/css/components/progress.css +16 -16
  31. package/css/components/rating.css +18 -18
  32. package/css/components/ripple.css +10 -10
  33. package/css/components/sidenav.css +67 -67
  34. package/css/components/skeleton.css +13 -13
  35. package/css/components/spinner.css +30 -30
  36. package/css/components/spotlight.css +27 -27
  37. package/css/components/stepper.css +36 -36
  38. package/css/components/suggest.css +35 -35
  39. package/css/components/tabs.css +46 -46
  40. package/css/components/theme-customizer.css +73 -73
  41. package/css/components/timeline.css +43 -43
  42. package/css/components/timepicker.css +32 -30
  43. package/css/components/toast.css +27 -27
  44. package/css/components/tooltips.css +77 -77
  45. package/css/components/transfer.css +35 -35
  46. package/css/components/tree.css +25 -25
  47. package/css/components/waypoint.css +12 -12
  48. package/css/core/colors.css +610 -610
  49. package/css/core/grid.css +127 -127
  50. package/css/core/helpers.css +338 -338
  51. package/css/core/tokens.css +69 -81
  52. package/css/core/typography.css +91 -91
  53. package/css/effects/morph.css +17 -17
  54. package/css/effects/parallax.css +6 -6
  55. package/css/utilities/color-utilities.css +273 -273
  56. package/css/utilities/media.css +2 -2
  57. package/css/utilities/shadow.css +75 -75
  58. package/css/utilities/table.css +40 -40
  59. package/css/utilities/transitions.css +38 -38
  60. package/css/vanduo.css +1 -2
  61. package/dist/build-info.json +3 -3
  62. package/dist/vanduo.cjs.js +104 -29
  63. package/dist/vanduo.cjs.js.map +2 -2
  64. package/dist/vanduo.cjs.min.js +5 -5
  65. package/dist/vanduo.cjs.min.js.map +3 -3
  66. package/dist/vanduo.css +4042 -4133
  67. package/dist/vanduo.css.map +1 -1
  68. package/dist/vanduo.esm.js +104 -29
  69. package/dist/vanduo.esm.js.map +2 -2
  70. package/dist/vanduo.esm.min.js +5 -5
  71. package/dist/vanduo.esm.min.js.map +3 -3
  72. package/dist/vanduo.js +104 -29
  73. package/dist/vanduo.js.map +2 -2
  74. package/dist/vanduo.min.css +2 -2
  75. package/dist/vanduo.min.css.map +1 -1
  76. package/dist/vanduo.min.js +5 -5
  77. package/dist/vanduo.min.js.map +3 -3
  78. package/js/components/affix.js +2 -2
  79. package/js/components/datepicker.js +51 -4
  80. package/js/components/image-box.js +2 -2
  81. package/js/components/morph.js +1 -1
  82. package/js/components/music-player.js +11 -11
  83. package/js/components/navbar.js +1 -1
  84. package/js/components/preloader.js +1 -1
  85. package/js/components/theme-customizer.js +4 -4
  86. package/js/components/timepicker.js +48 -6
  87. package/js/components/vd-hex.js +8 -10
  88. package/package.json +1 -1
  89. package/css/core/vd-aliases.css +0 -108
@@ -5,27 +5,27 @@
5
5
 
6
6
  :root {
7
7
  /* Image Box Colors */
8
- --image-box-backdrop-bg: rgba(0, 0, 0, 0.9);
9
- --image-box-backdrop-blur: 8px;
8
+ --vd-image-box-backdrop-bg: rgba(0, 0, 0, 0.9);
9
+ --vd-image-box-backdrop-blur: 8px;
10
10
 
11
11
  /* Image Box Transitions (Fibonacci-inspired timing) */
12
- --image-box-transition-duration: 0.3s;
13
- --image-box-transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
12
+ --vd-image-box-transition-duration: 0.3s;
13
+ --vd-image-box-transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
14
14
 
15
15
  /* Image Box Z-index */
16
- --image-box-z-index: 2000;
16
+ --vd-image-box-z-index: 2000;
17
17
 
18
18
  /* Image Box Padding */
19
- --image-box-padding: 21px;
19
+ --vd-image-box-padding: 21px;
20
20
  /* Fibonacci number */
21
21
 
22
22
  /* Image Box Scale */
23
- --image-box-scale-start: 0.9;
24
- --image-box-scale-end: 1;
23
+ --vd-image-box-scale-start: 0.9;
24
+ --vd-image-box-scale-end: 1;
25
25
 
26
26
  /* Image Box Max Size */
27
- --image-box-max-width: 50vw;
28
- --image-box-max-height: 50vh;
27
+ --vd-image-box-max-width: 50vw;
28
+ --vd-image-box-max-height: 50vh;
29
29
  }
30
30
 
31
31
  /* Broken Image Handling for Triggers */
@@ -34,8 +34,8 @@
34
34
  min-height: 60px;
35
35
  min-width: 60px;
36
36
  cursor: zoom-in;
37
- transition: transform var(--image-box-transition-duration) var(--image-box-transition-easing),
38
- box-shadow var(--image-box-transition-duration) var(--image-box-transition-easing);
37
+ transition: transform var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing),
38
+ box-shadow var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing);
39
39
  }
40
40
 
41
41
  /* Hide broken image alt text and show styled placeholder */
@@ -59,7 +59,7 @@
59
59
 
60
60
  .vd-image-box-trigger:hover {
61
61
  transform: scale(1.02);
62
- box-shadow: var(--shadow-lg);
62
+ box-shadow: var(--vd-shadow-lg);
63
63
  }
64
64
 
65
65
  /* Image Box Backdrop */
@@ -69,18 +69,18 @@
69
69
  left: 0;
70
70
  width: 100vw;
71
71
  height: 100vh;
72
- z-index: var(--image-box-z-index);
73
- background-color: var(--image-box-backdrop-bg);
74
- backdrop-filter: blur(var(--image-box-backdrop-blur));
75
- -webkit-backdrop-filter: blur(var(--image-box-backdrop-blur));
72
+ z-index: var(--vd-image-box-z-index);
73
+ background-color: var(--vd-image-box-backdrop-bg);
74
+ backdrop-filter: blur(var(--vd-image-box-backdrop-blur));
75
+ -webkit-backdrop-filter: blur(var(--vd-image-box-backdrop-blur));
76
76
  opacity: 0;
77
77
  visibility: hidden;
78
- transition: opacity var(--image-box-transition-duration) var(--image-box-transition-easing),
79
- visibility var(--image-box-transition-duration) var(--image-box-transition-easing);
78
+ transition: opacity var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing),
79
+ visibility var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing);
80
80
  display: flex;
81
81
  align-items: center;
82
82
  justify-content: center;
83
- padding: var(--image-box-padding);
83
+ padding: var(--vd-image-box-padding);
84
84
  }
85
85
 
86
86
  .vd-image-box-backdrop.is-visible {
@@ -91,19 +91,19 @@
91
91
  /* Image Box Container */
92
92
  .vd-image-box-container {
93
93
  position: relative;
94
- max-width: var(--image-box-max-width);
95
- max-height: var(--image-box-max-height);
94
+ max-width: var(--vd-image-box-max-width);
95
+ max-height: var(--vd-image-box-max-height);
96
96
  display: flex;
97
97
  align-items: center;
98
98
  justify-content: center;
99
- transform: scale(var(--image-box-scale-start));
99
+ transform: scale(var(--vd-image-box-scale-start));
100
100
  opacity: 0;
101
- transition: transform var(--image-box-transition-duration) var(--image-box-transition-easing),
102
- opacity var(--image-box-transition-duration) var(--image-box-transition-easing);
101
+ transition: transform var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing),
102
+ opacity var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing);
103
103
  }
104
104
 
105
105
  .vd-image-box-backdrop.is-visible .vd-image-box-container {
106
- transform: scale(var(--image-box-scale-end));
106
+ transform: scale(var(--vd-image-box-scale-end));
107
107
  opacity: 1;
108
108
  }
109
109
 
@@ -112,8 +112,8 @@
112
112
  max-width: 100%;
113
113
  max-height: 100%;
114
114
  object-fit: contain;
115
- border-radius: var(--btn-border-radius);
116
- box-shadow: var(--shadow-2xl);
115
+ border-radius: var(--vd-btn-border-radius);
116
+ box-shadow: var(--vd-shadow-2xl);
117
117
  cursor: zoom-out;
118
118
  user-select: none;
119
119
  -webkit-user-drag: none;
@@ -136,9 +136,9 @@
136
136
  display: flex;
137
137
  align-items: center;
138
138
  justify-content: center;
139
- transition: background-color var(--transition-duration-fast) var(--transition-ease),
140
- transform var(--transition-duration-fast) var(--transition-ease);
141
- z-index: calc(var(--image-box-z-index) + 1);
139
+ transition: background-color var(--vd-transition-duration-fast) var(--vd-transition-ease),
140
+ transform var(--vd-transition-duration-fast) var(--vd-transition-ease);
141
+ z-index: calc(var(--vd-image-box-z-index) + 1);
142
142
  opacity: 0;
143
143
  transform: translateY(-10px);
144
144
  }
@@ -168,12 +168,12 @@
168
168
  background: rgba(0, 0, 0, 0.7);
169
169
  color: var(--vd-color-white);
170
170
  padding: 8px 16px;
171
- border-radius: var(--btn-border-radius);
172
- font-size: var(--font-size-sm);
171
+ border-radius: var(--vd-btn-border-radius);
172
+ font-size: var(--vd-font-size-sm);
173
173
  text-align: center;
174
174
  max-width: 80%;
175
175
  opacity: 0;
176
- transition: opacity var(--image-box-transition-duration) var(--image-box-transition-easing);
176
+ transition: opacity var(--vd-image-box-transition-duration) var(--vd-image-box-transition-easing);
177
177
  }
178
178
 
179
179
  .vd-image-box-backdrop.is-visible .vd-image-box-caption {
@@ -184,7 +184,7 @@
184
184
  /* Body scroll lock when Image Box is open */
185
185
  .body-image-box-open {
186
186
  overflow: hidden;
187
- padding-right: var(--scrollbar-width, 0);
187
+ padding-right: var(--vd-scrollbar-width, 0);
188
188
  }
189
189
 
190
190
  /* Reduced Motion Support */
@@ -206,9 +206,9 @@
206
206
  /* Mobile Adjustments */
207
207
  @media (max-width: 767.98px) {
208
208
  :root {
209
- --image-box-padding: 13px;
210
- --image-box-max-width: 90vw;
211
- --image-box-max-height: 80vh;
209
+ --vd-image-box-padding: 13px;
210
+ --vd-image-box-max-width: 90vw;
211
+ --vd-image-box-max-height: 80vh;
212
212
  }
213
213
 
214
214
  .vd-image-box-close {
@@ -242,7 +242,7 @@
242
242
  outline: 3px solid var(--vd-color-primary);
243
243
  outline-offset: 2px;
244
244
  transform: scale(1.05);
245
- box-shadow: var(--shadow-lg);
245
+ box-shadow: var(--vd-shadow-lg);
246
246
  }
247
247
 
248
248
  /* Keyboard focus for gallery thumbnails */
@@ -5,39 +5,39 @@
5
5
 
6
6
  :root {
7
7
  /* Modal Colors */
8
- --modal-bg: var(--vd-color-white);
9
- --modal-backdrop-bg: rgba(0, 0, 0, 0.5);
10
- --modal-border-color: var(--vd-border-color);
8
+ --vd-modal-bg: var(--vd-color-white);
9
+ --vd-modal-backdrop-bg: rgba(0, 0, 0, 0.5);
10
+ --vd-modal-border-color: var(--vd-border-color);
11
11
 
12
12
  /* Modal Spacing (Fibonacci: 21px) */
13
- --modal-padding: 1.3125rem;
14
- --modal-header-padding: 1.3125rem;
15
- --modal-body-padding: 1.3125rem;
16
- --modal-footer-padding: 1.3125rem;
13
+ --vd-modal-padding: 1.3125rem;
14
+ --vd-modal-header-padding: 1.3125rem;
15
+ --vd-modal-body-padding: 1.3125rem;
16
+ --vd-modal-footer-padding: 1.3125rem;
17
17
 
18
18
  /* Modal Sizes (all Fibonacci numbers) */
19
- --modal-width-sm: 233px; /* fib(13) */
20
- --modal-width: 377px; /* fib(14) */
21
- --modal-width-lg: 610px; /* fib(15) */
22
- --modal-width-xl: 987px; /* fib(16) */
19
+ --vd-modal-width-sm: 233px; /* fib(13) */
20
+ --vd-modal-width: 377px; /* fib(14) */
21
+ --vd-modal-width-lg: 610px; /* fib(15) */
22
+ --vd-modal-width-xl: 987px; /* fib(16) */
23
23
 
24
24
  /* Modal Z-index */
25
- --modal-z-index: 1050;
26
- --modal-backdrop-z-index: 1040;
25
+ --vd-modal-z-index: 1050;
26
+ --vd-modal-backdrop-z-index: 1040;
27
27
 
28
28
  /* Modal Transitions */
29
- --modal-transition: opacity var(--transition-duration-base) var(--transition-ease);
30
- --modal-dialog-transition: transform var(--transition-duration-base) var(--transition-ease);
29
+ --vd-modal-transition: opacity var(--vd-transition-duration-base) var(--vd-transition-ease);
30
+ --vd-modal-dialog-transition: transform var(--vd-transition-duration-base) var(--vd-transition-ease);
31
31
  }
32
32
 
33
33
  /* Dark Theme Overrides */
34
34
  [data-theme="dark"] {
35
- --modal-bg: var(--vd-bg-secondary);
35
+ --vd-modal-bg: var(--vd-bg-secondary);
36
36
  }
37
37
 
38
38
  @media (prefers-color-scheme: dark) {
39
39
  :root:not([data-theme]) {
40
- --modal-bg: var(--vd-bg-secondary);
40
+ --vd-modal-bg: var(--vd-bg-secondary);
41
41
  }
42
42
  }
43
43
 
@@ -46,12 +46,12 @@
46
46
  position: fixed;
47
47
  top: 0;
48
48
  left: 0;
49
- z-index: var(--modal-backdrop-z-index);
49
+ z-index: var(--vd-modal-backdrop-z-index);
50
50
  width: 100vw;
51
51
  height: 100vh;
52
- background-color: var(--modal-backdrop-bg);
52
+ background-color: var(--vd-modal-backdrop-bg);
53
53
  opacity: 0;
54
- transition: var(--modal-transition);
54
+ transition: var(--vd-modal-transition);
55
55
  pointer-events: none;
56
56
  }
57
57
 
@@ -70,7 +70,7 @@
70
70
  position: fixed;
71
71
  top: 0;
72
72
  left: 0;
73
- z-index: var(--modal-z-index);
73
+ z-index: var(--vd-modal-z-index);
74
74
  display: none;
75
75
  width: 100%;
76
76
  height: 100%;
@@ -78,7 +78,8 @@
78
78
  overflow-y: auto;
79
79
  outline: 0;
80
80
  opacity: 0;
81
- transition: var(--modal-transition);
81
+ transition: var(--vd-modal-transition);
82
+ --vd-modal-dialog-max-width: var(--vd-modal-width);
82
83
  }
83
84
 
84
85
  .vd-modal.is-open {
@@ -91,12 +92,12 @@
91
92
  /* Modal Dialog */
92
93
  .vd-modal-dialog {
93
94
  position: relative;
94
- width: auto;
95
+ width: min(calc(100% - 3.5rem), var(--vd-modal-dialog-max-width));
95
96
  margin: 1.75rem auto;
96
- max-width: var(--modal-width);
97
+ max-width: var(--vd-modal-dialog-max-width);
97
98
  pointer-events: none;
98
99
  transform: scale(0.95);
99
- transition: var(--modal-dialog-transition);
100
+ transition: var(--vd-modal-dialog-transition);
100
101
  z-index: 1060;
101
102
  }
102
103
 
@@ -111,11 +112,11 @@
111
112
  flex-direction: column;
112
113
  width: 100%;
113
114
  pointer-events: auto;
114
- background-color: var(--modal-bg);
115
+ background-color: var(--vd-modal-bg);
115
116
  background-clip: padding-box;
116
- border: 1px solid var(--modal-border-color);
117
- border-radius: var(--btn-border-radius-lg);
118
- box-shadow: var(--shadow-2xl);
117
+ border: 1px solid var(--vd-modal-border-color);
118
+ border-radius: var(--vd-btn-border-radius-lg);
119
+ box-shadow: var(--vd-shadow-2xl);
119
120
  outline: 0;
120
121
  }
121
122
 
@@ -132,17 +133,17 @@
132
133
  display: flex;
133
134
  align-items: flex-start;
134
135
  justify-content: space-between;
135
- padding: var(--modal-header-padding);
136
- border-bottom: 1px solid var(--modal-border-color);
137
- border-top-left-radius: calc(var(--btn-border-radius-lg) - 1px);
138
- border-top-right-radius: calc(var(--btn-border-radius-lg) - 1px);
136
+ padding: var(--vd-modal-header-padding);
137
+ border-bottom: 1px solid var(--vd-modal-border-color);
138
+ border-top-left-radius: calc(var(--vd-btn-border-radius-lg) - 1px);
139
+ border-top-right-radius: calc(var(--vd-btn-border-radius-lg) - 1px);
139
140
  }
140
141
 
141
142
  .vd-modal-title {
142
143
  margin-bottom: 0;
143
- line-height: var(--line-height-normal);
144
- font-size: var(--font-size-xl);
145
- font-weight: var(--font-weight-semibold);
144
+ line-height: var(--vd-line-height-normal);
145
+ font-size: var(--vd-font-size-xl);
146
+ font-weight: var(--vd-font-weight-semibold);
146
147
  color: var(--vd-text-primary);
147
148
  }
148
149
 
@@ -152,15 +153,15 @@
152
153
  margin: -0.5rem -0.5rem -0.5rem auto;
153
154
  background: transparent;
154
155
  border: 0;
155
- border-radius: var(--btn-border-radius);
156
+ border-radius: var(--vd-btn-border-radius);
156
157
  opacity: 0.5;
157
158
  cursor: pointer;
158
159
  font-size: 1.5rem;
159
- font-weight: var(--font-weight-bold);
160
+ font-weight: var(--vd-font-weight-bold);
160
161
  line-height: 1;
161
162
  color: var(--vd-text-secondary);
162
163
  text-shadow: 0 1px 0 var(--vd-color-white);
163
- transition: var(--transition-opacity);
164
+ transition: var(--vd-transition-opacity);
164
165
  user-select: none;
165
166
  }
166
167
 
@@ -173,7 +174,7 @@
173
174
  }
174
175
 
175
176
  .vd-modal-close:focus {
176
- outline: 2px solid var(--input-focus-border-color);
177
+ outline: 2px solid var(--vd-input-focus-border-color);
177
178
  outline-offset: 2px;
178
179
  }
179
180
 
@@ -181,7 +182,7 @@
181
182
  .vd-modal-body {
182
183
  position: relative;
183
184
  flex: 1 1 auto;
184
- padding: var(--modal-body-padding);
185
+ padding: var(--vd-modal-body-padding);
185
186
  }
186
187
 
187
188
  /* Modal Footer */
@@ -190,10 +191,10 @@
190
191
  flex-wrap: wrap;
191
192
  align-items: center;
192
193
  justify-content: flex-end;
193
- padding: var(--modal-footer-padding);
194
- border-top: 1px solid var(--modal-border-color);
195
- border-bottom-left-radius: calc(var(--btn-border-radius-lg) - 1px);
196
- border-bottom-right-radius: calc(var(--btn-border-radius-lg) - 1px);
194
+ padding: var(--vd-modal-footer-padding);
195
+ border-top: 1px solid var(--vd-modal-border-color);
196
+ border-bottom-left-radius: calc(var(--vd-btn-border-radius-lg) - 1px);
197
+ border-bottom-right-radius: calc(var(--vd-btn-border-radius-lg) - 1px);
197
198
  gap: 0.5rem;
198
199
  }
199
200
 
@@ -202,16 +203,19 @@
202
203
  }
203
204
 
204
205
  /* Modal Sizes */
206
+ .vd-modal-dialog.vd-modal-sm,
205
207
  .vd-modal-sm .vd-modal-dialog {
206
- max-width: var(--modal-width-sm);
208
+ --vd-modal-dialog-max-width: var(--vd-modal-width-sm);
207
209
  }
208
210
 
211
+ .vd-modal-dialog.vd-modal-lg,
209
212
  .vd-modal-lg .vd-modal-dialog {
210
- max-width: var(--modal-width-lg);
213
+ --vd-modal-dialog-max-width: var(--vd-modal-width-lg);
211
214
  }
212
215
 
216
+ .vd-modal-dialog.vd-modal-xl,
213
217
  .vd-modal-xl .vd-modal-dialog {
214
- max-width: var(--modal-width-xl);
218
+ --vd-modal-dialog-max-width: var(--vd-modal-width-xl);
215
219
  }
216
220
 
217
221
  .vd-modal-fullscreen .vd-modal-dialog {
@@ -256,6 +260,7 @@
256
260
  @media (max-width: 575.98px) {
257
261
  .vd-modal-dialog {
258
262
  margin: 0.5rem;
263
+ width: calc(100% - 1rem);
259
264
  max-width: calc(100% - 1rem);
260
265
  }
261
266
 
@@ -295,4 +300,3 @@
295
300
  overflow: hidden;
296
301
  padding-right: 0;
297
302
  }
298
-