vanduo-framework 1.1.8-docs-update

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 (196) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +216 -0
  3. package/css/components/alerts.css +224 -0
  4. package/css/components/avatar.css +275 -0
  5. package/css/components/badges.css +230 -0
  6. package/css/components/breadcrumbs.css +146 -0
  7. package/css/components/button-group.css +82 -0
  8. package/css/components/buttons.css +530 -0
  9. package/css/components/cards.css +304 -0
  10. package/css/components/chips.css +259 -0
  11. package/css/components/code-snippet.css +555 -0
  12. package/css/components/collapsible.css +267 -0
  13. package/css/components/collections.css +253 -0
  14. package/css/components/doc-search.css +464 -0
  15. package/css/components/doc-tabs.css +38 -0
  16. package/css/components/draggable.css +317 -0
  17. package/css/components/dropdown.css +266 -0
  18. package/css/components/footer.css +375 -0
  19. package/css/components/forms.css +1774 -0
  20. package/css/components/image-box.css +279 -0
  21. package/css/components/modals.css +285 -0
  22. package/css/components/navbar.css +530 -0
  23. package/css/components/pagination.css +186 -0
  24. package/css/components/preloader.css +340 -0
  25. package/css/components/progress.css +107 -0
  26. package/css/components/sidenav.css +301 -0
  27. package/css/components/skeleton.css +241 -0
  28. package/css/components/spinner.css +144 -0
  29. package/css/components/tabs.css +327 -0
  30. package/css/components/theme-customizer.css +835 -0
  31. package/css/components/toast.css +357 -0
  32. package/css/components/tooltips.css +270 -0
  33. package/css/core/colors.css +1017 -0
  34. package/css/core/fonts.css +266 -0
  35. package/css/core/grid.css +1699 -0
  36. package/css/core/helpers.css +2202 -0
  37. package/css/core/reset.css +128 -0
  38. package/css/core/tokens.css +213 -0
  39. package/css/core/typography.css +405 -0
  40. package/css/core/vd-aliases.css +47 -0
  41. package/css/effects/parallax.css +113 -0
  42. package/css/icons/icons-all.css +23 -0
  43. package/css/icons/icons.css +25 -0
  44. package/css/utilities/media.css +167 -0
  45. package/css/utilities/print.css +111 -0
  46. package/css/utilities/shadow.css +243 -0
  47. package/css/utilities/table.css +381 -0
  48. package/css/utilities/transforms.css +71 -0
  49. package/css/utilities/transitions.css +87 -0
  50. package/css/vanduo.css +80 -0
  51. package/dist/build-info.json +6 -0
  52. package/dist/fonts/fira-sans/fira-sans-bold.woff2 +0 -0
  53. package/dist/fonts/fira-sans/fira-sans-medium.woff2 +0 -0
  54. package/dist/fonts/fira-sans/fira-sans-regular.woff2 +0 -0
  55. package/dist/fonts/ibm-plex/ibm-plex-sans-bold.woff2 +0 -0
  56. package/dist/fonts/ibm-plex/ibm-plex-sans-medium.woff2 +0 -0
  57. package/dist/fonts/ibm-plex/ibm-plex-sans-regular.woff2 +0 -0
  58. package/dist/fonts/inter/inter-bold.woff2 +0 -0
  59. package/dist/fonts/inter/inter-medium.woff2 +0 -0
  60. package/dist/fonts/inter/inter-regular.woff2 +0 -0
  61. package/dist/fonts/inter/inter-semibold.woff2 +0 -0
  62. package/dist/fonts/jetbrains-mono/jetbrains-mono-bold.woff2 +0 -0
  63. package/dist/fonts/jetbrains-mono/jetbrains-mono-regular.woff2 +0 -0
  64. package/dist/fonts/open-sans/open-sans-bold.woff2 +0 -0
  65. package/dist/fonts/open-sans/open-sans-medium.woff2 +0 -0
  66. package/dist/fonts/open-sans/open-sans-regular.woff2 +0 -0
  67. package/dist/fonts/rubik/rubik-bold.woff2 +0 -0
  68. package/dist/fonts/rubik/rubik-medium.woff2 +0 -0
  69. package/dist/fonts/rubik/rubik-regular.woff2 +0 -0
  70. package/dist/fonts/source-sans/source-sans-bold.woff2 +0 -0
  71. package/dist/fonts/source-sans/source-sans-regular.woff2 +0 -0
  72. package/dist/fonts/source-sans/source-sans-semibold.woff2 +0 -0
  73. package/dist/fonts/titillium-web/titillium-web-bold.woff2 +0 -0
  74. package/dist/fonts/titillium-web/titillium-web-regular.woff2 +0 -0
  75. package/dist/fonts/titillium-web/titillium-web-semibold.woff2 +0 -0
  76. package/dist/fonts/ubuntu/ubuntu-bold.woff2 +0 -0
  77. package/dist/fonts/ubuntu/ubuntu-medium.woff2 +0 -0
  78. package/dist/fonts/ubuntu/ubuntu-regular.woff2 +0 -0
  79. package/dist/icons/phosphor/LICENSE +21 -0
  80. package/dist/icons/phosphor/bold/Phosphor-Bold.ttf +0 -0
  81. package/dist/icons/phosphor/bold/Phosphor-Bold.woff +0 -0
  82. package/dist/icons/phosphor/bold/Phosphor-Bold.woff2 +0 -0
  83. package/dist/icons/phosphor/bold/style.css +4627 -0
  84. package/dist/icons/phosphor/duotone/Phosphor-Duotone.ttf +0 -0
  85. package/dist/icons/phosphor/duotone/Phosphor-Duotone.woff +0 -0
  86. package/dist/icons/phosphor/duotone/Phosphor-Duotone.woff2 +0 -0
  87. package/dist/icons/phosphor/duotone/style.css +12115 -0
  88. package/dist/icons/phosphor/fill/Phosphor-Fill.ttf +0 -0
  89. package/dist/icons/phosphor/fill/Phosphor-Fill.woff +0 -0
  90. package/dist/icons/phosphor/fill/Phosphor-Fill.woff2 +0 -0
  91. package/dist/icons/phosphor/fill/style.css +4627 -0
  92. package/dist/icons/phosphor/light/Phosphor-Light.ttf +0 -0
  93. package/dist/icons/phosphor/light/Phosphor-Light.woff +0 -0
  94. package/dist/icons/phosphor/light/Phosphor-Light.woff2 +0 -0
  95. package/dist/icons/phosphor/light/style.css +4627 -0
  96. package/dist/icons/phosphor/regular/Phosphor.ttf +0 -0
  97. package/dist/icons/phosphor/regular/Phosphor.woff +0 -0
  98. package/dist/icons/phosphor/regular/Phosphor.woff2 +0 -0
  99. package/dist/icons/phosphor/regular/style.css +4627 -0
  100. package/dist/icons/phosphor/thin/Phosphor-Thin.ttf +0 -0
  101. package/dist/icons/phosphor/thin/Phosphor-Thin.woff +0 -0
  102. package/dist/icons/phosphor/thin/Phosphor-Thin.woff2 +0 -0
  103. package/dist/icons/phosphor/thin/style.css +4627 -0
  104. package/dist/vanduo.cjs.js +5569 -0
  105. package/dist/vanduo.cjs.js.map +7 -0
  106. package/dist/vanduo.cjs.min.js +48 -0
  107. package/dist/vanduo.cjs.min.js.map +7 -0
  108. package/dist/vanduo.css +60666 -0
  109. package/dist/vanduo.css.map +1 -0
  110. package/dist/vanduo.esm.js +5548 -0
  111. package/dist/vanduo.esm.js.map +7 -0
  112. package/dist/vanduo.esm.min.js +48 -0
  113. package/dist/vanduo.esm.min.js.map +7 -0
  114. package/dist/vanduo.js +5545 -0
  115. package/dist/vanduo.js.map +7 -0
  116. package/dist/vanduo.min.css +2 -0
  117. package/dist/vanduo.min.css.map +1 -0
  118. package/dist/vanduo.min.js +48 -0
  119. package/dist/vanduo.min.js.map +7 -0
  120. package/fonts/fira-sans/fira-sans-bold.woff2 +0 -0
  121. package/fonts/fira-sans/fira-sans-medium.woff2 +0 -0
  122. package/fonts/fira-sans/fira-sans-regular.woff2 +0 -0
  123. package/fonts/ibm-plex/ibm-plex-sans-bold.woff2 +0 -0
  124. package/fonts/ibm-plex/ibm-plex-sans-medium.woff2 +0 -0
  125. package/fonts/ibm-plex/ibm-plex-sans-regular.woff2 +0 -0
  126. package/fonts/inter/inter-bold.woff2 +0 -0
  127. package/fonts/inter/inter-medium.woff2 +0 -0
  128. package/fonts/inter/inter-regular.woff2 +0 -0
  129. package/fonts/inter/inter-semibold.woff2 +0 -0
  130. package/fonts/jetbrains-mono/jetbrains-mono-bold.woff2 +0 -0
  131. package/fonts/jetbrains-mono/jetbrains-mono-regular.woff2 +0 -0
  132. package/fonts/open-sans/open-sans-bold.woff2 +0 -0
  133. package/fonts/open-sans/open-sans-medium.woff2 +0 -0
  134. package/fonts/open-sans/open-sans-regular.woff2 +0 -0
  135. package/fonts/rubik/rubik-bold.woff2 +0 -0
  136. package/fonts/rubik/rubik-medium.woff2 +0 -0
  137. package/fonts/rubik/rubik-regular.woff2 +0 -0
  138. package/fonts/source-sans/source-sans-bold.woff2 +0 -0
  139. package/fonts/source-sans/source-sans-regular.woff2 +0 -0
  140. package/fonts/source-sans/source-sans-semibold.woff2 +0 -0
  141. package/fonts/titillium-web/titillium-web-bold.woff2 +0 -0
  142. package/fonts/titillium-web/titillium-web-regular.woff2 +0 -0
  143. package/fonts/titillium-web/titillium-web-semibold.woff2 +0 -0
  144. package/fonts/ubuntu/ubuntu-bold.woff2 +0 -0
  145. package/fonts/ubuntu/ubuntu-medium.woff2 +0 -0
  146. package/fonts/ubuntu/ubuntu-regular.woff2 +0 -0
  147. package/icons/phosphor/LICENSE +21 -0
  148. package/icons/phosphor/bold/Phosphor-Bold.ttf +0 -0
  149. package/icons/phosphor/bold/Phosphor-Bold.woff +0 -0
  150. package/icons/phosphor/bold/Phosphor-Bold.woff2 +0 -0
  151. package/icons/phosphor/bold/style.css +4627 -0
  152. package/icons/phosphor/duotone/Phosphor-Duotone.ttf +0 -0
  153. package/icons/phosphor/duotone/Phosphor-Duotone.woff +0 -0
  154. package/icons/phosphor/duotone/Phosphor-Duotone.woff2 +0 -0
  155. package/icons/phosphor/duotone/style.css +12115 -0
  156. package/icons/phosphor/fill/Phosphor-Fill.ttf +0 -0
  157. package/icons/phosphor/fill/Phosphor-Fill.woff +0 -0
  158. package/icons/phosphor/fill/Phosphor-Fill.woff2 +0 -0
  159. package/icons/phosphor/fill/style.css +4627 -0
  160. package/icons/phosphor/light/Phosphor-Light.ttf +0 -0
  161. package/icons/phosphor/light/Phosphor-Light.woff +0 -0
  162. package/icons/phosphor/light/Phosphor-Light.woff2 +0 -0
  163. package/icons/phosphor/light/style.css +4627 -0
  164. package/icons/phosphor/regular/Phosphor.ttf +0 -0
  165. package/icons/phosphor/regular/Phosphor.woff +0 -0
  166. package/icons/phosphor/regular/Phosphor.woff2 +0 -0
  167. package/icons/phosphor/regular/style.css +4627 -0
  168. package/icons/phosphor/thin/Phosphor-Thin.ttf +0 -0
  169. package/icons/phosphor/thin/Phosphor-Thin.woff +0 -0
  170. package/icons/phosphor/thin/Phosphor-Thin.woff2 +0 -0
  171. package/icons/phosphor/thin/style.css +4627 -0
  172. package/js/components/code-snippet.js +639 -0
  173. package/js/components/collapsible.js +226 -0
  174. package/js/components/doc-search.js +936 -0
  175. package/js/components/draggable.js +725 -0
  176. package/js/components/dropdown.js +362 -0
  177. package/js/components/font-switcher.js +253 -0
  178. package/js/components/grid.js +279 -0
  179. package/js/components/image-box.js +372 -0
  180. package/js/components/modals.js +367 -0
  181. package/js/components/navbar.js +264 -0
  182. package/js/components/pagination.js +286 -0
  183. package/js/components/parallax.js +216 -0
  184. package/js/components/preloader.js +183 -0
  185. package/js/components/select.js +444 -0
  186. package/js/components/sidenav.js +303 -0
  187. package/js/components/tabs.js +303 -0
  188. package/js/components/theme-customizer.js +784 -0
  189. package/js/components/theme-switcher.js +183 -0
  190. package/js/components/toast.js +343 -0
  191. package/js/components/tooltips.js +306 -0
  192. package/js/index.js +52 -0
  193. package/js/utils/helpers.js +306 -0
  194. package/js/utils/lifecycle.js +135 -0
  195. package/js/vanduo.js +120 -0
  196. package/package.json +78 -0
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Vanduo Framework - Toast Notifications
3
+ * Popup notifications for user feedback
4
+ */
5
+
6
+ :root {
7
+ /* Toast Sizing (Fibonacci) */
8
+ --toast-width: 377px; /* fib */
9
+ --toast-max-width: 90vw;
10
+ --toast-padding-x: 1.3125rem; /* 21px - fib */
11
+ --toast-padding-y: 0.8125rem; /* 13px - fib */
12
+ --toast-border-radius: var(--radius-fib-5);
13
+ --toast-gap: 0.8125rem; /* 13px - fib */
14
+
15
+ /* Toast Colors */
16
+ --toast-bg: var(--color-white);
17
+ --toast-text: var(--text-primary);
18
+ --toast-border: var(--border-color);
19
+ --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
20
+ }
21
+
22
+ /* Dark Theme Overrides */
23
+ [data-theme="dark"] {
24
+ --toast-bg: var(--color-gray-800);
25
+ --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
26
+ }
27
+
28
+ @media (prefers-color-scheme: dark) {
29
+ :root:not([data-theme]) {
30
+ --toast-bg: var(--color-gray-800);
31
+ --toast-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
32
+ }
33
+ }
34
+
35
+ /* Toast Container - Positions toasts on screen */
36
+ .vd-toast-container {
37
+ position: fixed;
38
+ z-index: 9999;
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: var(--toast-gap);
42
+ pointer-events: none;
43
+ padding: 1rem;
44
+ }
45
+
46
+ /* Container Positions */
47
+ .vd-toast-container-top-right {
48
+ top: 0;
49
+ right: 0;
50
+ align-items: flex-end;
51
+ }
52
+
53
+ .vd-toast-container-top-left {
54
+ top: 0;
55
+ left: 0;
56
+ align-items: flex-start;
57
+ }
58
+
59
+ .vd-toast-container-top-center {
60
+ top: 0;
61
+ left: 50%;
62
+ transform: translateX(-50%);
63
+ align-items: center;
64
+ }
65
+
66
+ .vd-toast-container-bottom-right {
67
+ bottom: 0;
68
+ right: 0;
69
+ align-items: flex-end;
70
+ }
71
+
72
+ .vd-toast-container-bottom-left {
73
+ bottom: 0;
74
+ left: 0;
75
+ align-items: flex-start;
76
+ }
77
+
78
+ .vd-toast-container-bottom-center {
79
+ bottom: 0;
80
+ left: 50%;
81
+ transform: translateX(-50%);
82
+ align-items: center;
83
+ }
84
+
85
+ /* Base Toast */
86
+ .vd-toast {
87
+ display: flex;
88
+ align-items: flex-start;
89
+ gap: 0.75rem;
90
+ width: var(--toast-width);
91
+ max-width: var(--toast-max-width);
92
+ padding: var(--toast-padding-y) var(--toast-padding-x);
93
+ background-color: var(--toast-bg);
94
+ color: var(--toast-text);
95
+ border: 1px solid var(--toast-border);
96
+ border-radius: var(--toast-border-radius);
97
+ box-shadow: var(--toast-shadow);
98
+ pointer-events: auto;
99
+ opacity: 0;
100
+ transform: translateX(100%);
101
+ transition: opacity 0.3s ease, transform 0.3s ease;
102
+ }
103
+
104
+ /* Toast Visible State */
105
+ .vd-toast.is-visible {
106
+ opacity: 1;
107
+ transform: translateX(0);
108
+ }
109
+
110
+ /* Toast Exiting State */
111
+ .vd-toast.is-exiting {
112
+ opacity: 0;
113
+ transform: translateX(100%);
114
+ }
115
+
116
+ /* Left-side containers animate from left */
117
+ .vd-toast-container-top-left .vd-toast,
118
+ .vd-toast-container-bottom-left .vd-toast {
119
+ transform: translateX(-100%);
120
+ }
121
+
122
+ .vd-toast-container-top-left .vd-toast.is-visible,
123
+ .vd-toast-container-bottom-left .vd-toast.is-visible {
124
+ transform: translateX(0);
125
+ }
126
+
127
+ .vd-toast-container-top-left .vd-toast.is-exiting,
128
+ .vd-toast-container-bottom-left .vd-toast.is-exiting {
129
+ transform: translateX(-100%);
130
+ }
131
+
132
+ /* Center containers animate from top/bottom */
133
+ .vd-toast-container-top-center .vd-toast {
134
+ transform: translateY(-100%);
135
+ }
136
+
137
+ .vd-toast-container-top-center .vd-toast.is-visible {
138
+ transform: translateY(0);
139
+ }
140
+
141
+ .vd-toast-container-top-center .vd-toast.is-exiting {
142
+ transform: translateY(-100%);
143
+ }
144
+
145
+ .vd-toast-container-bottom-center .vd-toast {
146
+ transform: translateY(100%);
147
+ }
148
+
149
+ .vd-toast-container-bottom-center .vd-toast.is-visible {
150
+ transform: translateY(0);
151
+ }
152
+
153
+ .vd-toast-container-bottom-center .vd-toast.is-exiting {
154
+ transform: translateY(100%);
155
+ }
156
+
157
+ /* Toast Icon */
158
+ .vd-toast-icon {
159
+ flex-shrink: 0;
160
+ width: 1.25rem;
161
+ height: 1.25rem;
162
+ margin-top: 0.125rem;
163
+ }
164
+
165
+ /* Toast Content */
166
+ .vd-toast-content {
167
+ flex: 1;
168
+ min-width: 0;
169
+ }
170
+
171
+ /* Toast Title */
172
+ .vd-toast-title {
173
+ font-weight: var(--font-weight-semibold);
174
+ margin-bottom: 0.25rem;
175
+ }
176
+
177
+ /* Toast Message */
178
+ .vd-toast-message {
179
+ font-size: var(--font-size-sm);
180
+ color: var(--text-secondary);
181
+ }
182
+
183
+ /* Toast Close Button */
184
+ .vd-toast-close {
185
+ flex-shrink: 0;
186
+ display: flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ width: 1.5rem;
190
+ height: 1.5rem;
191
+ padding: 0;
192
+ margin: -0.25rem -0.25rem -0.25rem 0;
193
+ background: transparent;
194
+ border: none;
195
+ border-radius: var(--btn-border-radius);
196
+ color: var(--text-tertiary);
197
+ cursor: pointer;
198
+ opacity: 0.6;
199
+ transition: opacity 0.15s ease, background-color 0.15s ease;
200
+ }
201
+
202
+ .vd-toast-close:hover {
203
+ opacity: 1;
204
+ background-color: rgba(0, 0, 0, 0.05);
205
+ }
206
+
207
+ [data-theme="dark"] .vd-toast-close:hover {
208
+ background-color: rgba(255, 255, 255, 0.1);
209
+ }
210
+
211
+ .vd-toast-close::before {
212
+ content: '\00D7';
213
+ font-size: 1.25rem;
214
+ line-height: 1;
215
+ }
216
+
217
+ /* Toast Color Variants */
218
+ .vd-toast-success {
219
+ border-left: 4px solid var(--color-success);
220
+ }
221
+
222
+ .vd-toast-success .vd-toast-icon {
223
+ color: var(--color-success);
224
+ }
225
+
226
+ .vd-toast-warning {
227
+ border-left: 4px solid var(--color-warning);
228
+ }
229
+
230
+ .vd-toast-warning .vd-toast-icon {
231
+ color: var(--color-warning);
232
+ }
233
+
234
+ .vd-toast-error {
235
+ border-left: 4px solid var(--color-error);
236
+ }
237
+
238
+ .vd-toast-error .vd-toast-icon {
239
+ color: var(--color-error);
240
+ }
241
+
242
+ .vd-toast-info {
243
+ border-left: 4px solid var(--color-info);
244
+ }
245
+
246
+ .vd-toast-info .vd-toast-icon {
247
+ color: var(--color-info);
248
+ }
249
+
250
+ /* Solid Variants */
251
+ .vd-toast-solid.vd-toast-success {
252
+ background-color: var(--color-success);
253
+ border-color: var(--color-success);
254
+ color: var(--color-white);
255
+ }
256
+
257
+ .vd-toast-solid.vd-toast-success .vd-toast-message {
258
+ color: rgba(255, 255, 255, 0.85);
259
+ }
260
+
261
+ .vd-toast-solid.vd-toast-success .vd-toast-icon {
262
+ color: var(--color-white);
263
+ }
264
+
265
+ .vd-toast-solid.vd-toast-warning {
266
+ background-color: var(--color-warning);
267
+ border-color: var(--color-warning);
268
+ color: var(--color-gray-900);
269
+ }
270
+
271
+ .vd-toast-solid.vd-toast-warning .vd-toast-message {
272
+ color: rgba(0, 0, 0, 0.7);
273
+ }
274
+
275
+ .vd-toast-solid.vd-toast-warning .vd-toast-icon {
276
+ color: var(--color-gray-900);
277
+ }
278
+
279
+ .vd-toast-solid.vd-toast-error {
280
+ background-color: var(--color-error);
281
+ border-color: var(--color-error);
282
+ color: var(--color-white);
283
+ }
284
+
285
+ .vd-toast-solid.vd-toast-error .vd-toast-message {
286
+ color: rgba(255, 255, 255, 0.85);
287
+ }
288
+
289
+ .vd-toast-solid.vd-toast-error .vd-toast-icon {
290
+ color: var(--color-white);
291
+ }
292
+
293
+ .vd-toast-solid.vd-toast-info {
294
+ background-color: var(--color-info);
295
+ border-color: var(--color-info);
296
+ color: var(--color-white);
297
+ }
298
+
299
+ .vd-toast-solid.vd-toast-info .vd-toast-message {
300
+ color: rgba(255, 255, 255, 0.85);
301
+ }
302
+
303
+ .vd-toast-solid.vd-toast-info .vd-toast-icon {
304
+ color: var(--color-white);
305
+ }
306
+
307
+ /* Toast Progress Bar (auto-dismiss indicator) */
308
+ .vd-toast-progress {
309
+ position: absolute;
310
+ bottom: 0;
311
+ left: 0;
312
+ height: 3px;
313
+ background-color: currentColor;
314
+ opacity: 0.3;
315
+ border-radius: 0 0 var(--toast-border-radius) var(--toast-border-radius);
316
+ animation: toast-progress linear forwards;
317
+ }
318
+
319
+ @keyframes toast-progress {
320
+ from {
321
+ width: 100%;
322
+ }
323
+ to {
324
+ width: 0%;
325
+ }
326
+ }
327
+
328
+ /* Toast with Progress */
329
+ .vd-toast-with-progress {
330
+ position: relative;
331
+ overflow: hidden;
332
+ }
333
+
334
+ /* Stacked Toasts Animation */
335
+ .vd-toast-container .vd-toast:not(:first-child) {
336
+ margin-top: 0;
337
+ }
338
+
339
+ /* Reduced Motion */
340
+ @media (prefers-reduced-motion: reduce) {
341
+ .vd-toast {
342
+ transition: opacity 0.15s ease;
343
+ transform: none !important;
344
+ }
345
+
346
+ .vd-toast.is-visible {
347
+ transform: none !important;
348
+ }
349
+
350
+ .vd-toast.is-exiting {
351
+ transform: none !important;
352
+ }
353
+
354
+ .vd-toast-progress {
355
+ animation: none;
356
+ }
357
+ }
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Vanduo Framework - Tooltips
3
+ * Tooltip component for contextual information
4
+ */
5
+
6
+ :root {
7
+ /* Tooltip Colors */
8
+ --tooltip-bg: var(--color-gray-900);
9
+ --tooltip-bg-light: var(--color-white);
10
+ --tooltip-bg-dark: var(--color-gray-900);
11
+ --tooltip-text-color: var(--color-white);
12
+ --tooltip-text-color-light: var(--color-gray-900);
13
+ --tooltip-text-color-dark: var(--color-white);
14
+
15
+ /* Tooltip Spacing (Fibonacci pairs: x/y ratio ~ phi) */
16
+ --tooltip-padding-y: 0.5rem; /* 8px - fib */
17
+ --tooltip-padding-x: 0.8125rem; /* 13px - fib (13/8 ~ phi) */
18
+ --tooltip-padding-y-sm: 0.3125rem; /* 5px - fib */
19
+ --tooltip-padding-x-sm: 0.5rem; /* 8px - fib (8/5 = 1.6 ~ phi) */
20
+ --tooltip-padding-y-lg: 0.8125rem; /* 13px - fib */
21
+ --tooltip-padding-x-lg: 1.3125rem; /* 21px - fib (21/13 ~ phi) */
22
+
23
+ /* Tooltip Font */
24
+ --tooltip-font-size: var(--font-size-sm);
25
+ --tooltip-font-size-sm: var(--font-size-xs);
26
+ --tooltip-font-size-lg: var(--font-size-base);
27
+
28
+ /* Tooltip Arrow (Fibonacci) */
29
+ --tooltip-arrow-size: 5px; /* fib */
30
+ --tooltip-arrow-size-sm: 3px; /* fib */
31
+ --tooltip-arrow-size-lg: 8px; /* fib */
32
+
33
+ /* Tooltip Z-index */
34
+ --tooltip-z-index: 1070;
35
+
36
+ /* Tooltip Max Width */
37
+ --tooltip-max-width: 233px; /* fib */
38
+ }
39
+
40
+ /* Dark Theme Overrides */
41
+ [data-theme="dark"] {
42
+ --tooltip-bg: var(--color-gray-100);
43
+ --tooltip-text-color: var(--color-gray-900);
44
+ --tooltip-bg-light: var(--color-gray-800);
45
+ --tooltip-text-color-light: var(--color-gray-100);
46
+ }
47
+
48
+ @media (prefers-color-scheme: dark) {
49
+ :root:not([data-theme]) {
50
+ --tooltip-bg: var(--color-gray-100);
51
+ --tooltip-text-color: var(--color-gray-900);
52
+ --tooltip-bg-light: var(--color-gray-800);
53
+ --tooltip-text-color-light: var(--color-gray-100);
54
+ }
55
+ }
56
+
57
+ /* Base Tooltip */
58
+ .vd-tooltip {
59
+ position: absolute;
60
+ z-index: var(--tooltip-z-index);
61
+ display: block;
62
+ padding: var(--tooltip-padding-y) var(--tooltip-padding-x);
63
+ margin: 0;
64
+ font-family: var(--font-family-sans);
65
+ font-size: var(--tooltip-font-size);
66
+ font-weight: var(--font-weight-normal);
67
+ line-height: var(--line-height-normal);
68
+ color: var(--tooltip-text-color);
69
+ text-align: center;
70
+ white-space: normal;
71
+ word-wrap: break-word;
72
+ background-color: var(--tooltip-bg);
73
+ border-radius: var(--btn-border-radius);
74
+ box-shadow: var(--shadow-lg);
75
+ opacity: 0;
76
+ pointer-events: none;
77
+ max-width: var(--tooltip-max-width);
78
+ transition: opacity var(--transition-duration-base) var(--transition-ease);
79
+ }
80
+
81
+ .vd-tooltip.is-visible {
82
+ opacity: 1;
83
+ }
84
+
85
+ /* Tooltip Arrow */
86
+ .vd-tooltip::before {
87
+ content: '';
88
+ position: absolute;
89
+ width: 0;
90
+ height: 0;
91
+ border-style: solid;
92
+ }
93
+
94
+ /* Tooltip Positioning - Top */
95
+ .vd-tooltip-top,
96
+ .vd-tooltip[data-placement="top"] {
97
+ margin-bottom: var(--tooltip-arrow-size);
98
+ }
99
+
100
+ .vd-tooltip-top::before,
101
+ .vd-tooltip[data-placement="top"]::before {
102
+ bottom: calc(var(--tooltip-arrow-size) * -1);
103
+ left: 50%;
104
+ transform: translateX(-50%);
105
+ border-width: var(--tooltip-arrow-size) var(--tooltip-arrow-size) 0;
106
+ border-color: var(--tooltip-bg) transparent transparent;
107
+ }
108
+
109
+ /* Tooltip Positioning - Bottom */
110
+ .vd-tooltip-bottom,
111
+ .vd-tooltip[data-placement="bottom"] {
112
+ margin-top: var(--tooltip-arrow-size);
113
+ }
114
+
115
+ .vd-tooltip-bottom::before,
116
+ .vd-tooltip[data-placement="bottom"]::before {
117
+ top: calc(var(--tooltip-arrow-size) * -1);
118
+ left: 50%;
119
+ transform: translateX(-50%);
120
+ border-width: 0 var(--tooltip-arrow-size) var(--tooltip-arrow-size);
121
+ border-color: transparent transparent var(--tooltip-bg);
122
+ }
123
+
124
+ /* Tooltip Positioning - Left */
125
+ .vd-tooltip-left,
126
+ .vd-tooltip[data-placement="left"] {
127
+ margin-right: var(--tooltip-arrow-size);
128
+ }
129
+
130
+ .vd-tooltip-left::before,
131
+ .vd-tooltip[data-placement="left"]::before {
132
+ right: calc(var(--tooltip-arrow-size) * -1);
133
+ top: 50%;
134
+ transform: translateY(-50%);
135
+ border-width: var(--tooltip-arrow-size) 0 var(--tooltip-arrow-size) var(--tooltip-arrow-size);
136
+ border-color: transparent transparent transparent var(--tooltip-bg);
137
+ }
138
+
139
+ /* Tooltip Positioning - Right */
140
+ .vd-tooltip-right,
141
+ .vd-tooltip[data-placement="right"] {
142
+ margin-left: var(--tooltip-arrow-size);
143
+ }
144
+
145
+ .vd-tooltip-right::before,
146
+ .vd-tooltip[data-placement="right"]::before {
147
+ left: calc(var(--tooltip-arrow-size) * -1);
148
+ top: 50%;
149
+ transform: translateY(-50%);
150
+ border-width: var(--tooltip-arrow-size) var(--tooltip-arrow-size) var(--tooltip-arrow-size) 0;
151
+ border-color: transparent var(--tooltip-bg) transparent transparent;
152
+ }
153
+
154
+ /* Tooltip Variants - Light */
155
+ .vd-tooltip-light {
156
+ background-color: var(--tooltip-bg-light);
157
+ color: var(--tooltip-text-color-light);
158
+ box-shadow: var(--shadow-md);
159
+ }
160
+
161
+ .vd-tooltip-light.vd-tooltip-top::before,
162
+ .vd-tooltip-light[data-placement="top"]::before {
163
+ border-color: var(--tooltip-bg-light) transparent transparent;
164
+ }
165
+
166
+ .vd-tooltip-light.vd-tooltip-bottom::before,
167
+ .vd-tooltip-light[data-placement="bottom"]::before {
168
+ border-color: transparent transparent var(--tooltip-bg-light);
169
+ }
170
+
171
+ .vd-tooltip-light.vd-tooltip-left::before,
172
+ .vd-tooltip-light[data-placement="left"]::before {
173
+ border-color: transparent transparent transparent var(--tooltip-bg-light);
174
+ }
175
+
176
+ .vd-tooltip-light.vd-tooltip-right::before,
177
+ .vd-tooltip-light[data-placement="right"]::before {
178
+ border-color: transparent var(--tooltip-bg-light) transparent transparent;
179
+ }
180
+
181
+ /* Tooltip Variants - Dark */
182
+ .vd-tooltip-dark {
183
+ background-color: var(--tooltip-bg-dark);
184
+ color: var(--tooltip-text-color-dark);
185
+ }
186
+
187
+ .vd-tooltip-dark.vd-tooltip-top::before,
188
+ .vd-tooltip-dark[data-placement="top"]::before {
189
+ border-color: var(--tooltip-bg-dark) transparent transparent;
190
+ }
191
+
192
+ .vd-tooltip-dark.vd-tooltip-bottom::before,
193
+ .vd-tooltip-dark[data-placement="bottom"]::before {
194
+ border-color: transparent transparent var(--tooltip-bg-dark);
195
+ }
196
+
197
+ .vd-tooltip-dark.vd-tooltip-left::before,
198
+ .vd-tooltip-dark[data-placement="left"]::before {
199
+ border-color: transparent transparent transparent var(--tooltip-bg-dark);
200
+ }
201
+
202
+ .vd-tooltip-dark.vd-tooltip-right::before,
203
+ .vd-tooltip-dark[data-placement="right"]::before {
204
+ border-color: transparent var(--tooltip-bg-dark) transparent transparent;
205
+ }
206
+
207
+ /* Tooltip Sizes */
208
+ .vd-tooltip-sm {
209
+ padding: var(--tooltip-padding-y-sm) var(--tooltip-padding-x-sm);
210
+ font-size: var(--tooltip-font-size-sm);
211
+ max-width: 150px;
212
+ }
213
+
214
+ .vd-tooltip-sm.vd-tooltip-top::before,
215
+ .vd-tooltip-sm[data-placement="top"]::before {
216
+ border-width: var(--tooltip-arrow-size-sm) var(--tooltip-arrow-size-sm) 0;
217
+ }
218
+
219
+ .vd-tooltip-sm.vd-tooltip-bottom::before,
220
+ .vd-tooltip-sm[data-placement="bottom"]::before {
221
+ border-width: 0 var(--tooltip-arrow-size-sm) var(--tooltip-arrow-size-sm);
222
+ }
223
+
224
+ .vd-tooltip-sm.vd-tooltip-left::before,
225
+ .vd-tooltip-sm[data-placement="left"]::before {
226
+ border-width: var(--tooltip-arrow-size-sm) 0 var(--tooltip-arrow-size-sm) var(--tooltip-arrow-size-sm);
227
+ }
228
+
229
+ .vd-tooltip-sm.vd-tooltip-right::before,
230
+ .vd-tooltip-sm[data-placement="right"]::before {
231
+ border-width: var(--tooltip-arrow-size-sm) var(--tooltip-arrow-size-sm) var(--tooltip-arrow-size-sm) 0;
232
+ }
233
+
234
+ .vd-tooltip-lg {
235
+ padding: var(--tooltip-padding-y-lg) var(--tooltip-padding-x-lg);
236
+ font-size: var(--tooltip-font-size-lg);
237
+ max-width: 300px;
238
+ }
239
+
240
+ .vd-tooltip-lg.vd-tooltip-top::before,
241
+ .vd-tooltip-lg[data-placement="top"]::before {
242
+ border-width: var(--tooltip-arrow-size-lg) var(--tooltip-arrow-size-lg) 0;
243
+ }
244
+
245
+ .vd-tooltip-lg.vd-tooltip-bottom::before,
246
+ .vd-tooltip-lg[data-placement="bottom"]::before {
247
+ border-width: 0 var(--tooltip-arrow-size-lg) var(--tooltip-arrow-size-lg);
248
+ }
249
+
250
+ .vd-tooltip-lg.vd-tooltip-left::before,
251
+ .vd-tooltip-lg[data-placement="left"]::before {
252
+ border-width: var(--tooltip-arrow-size-lg) 0 var(--tooltip-arrow-size-lg) var(--tooltip-arrow-size-lg);
253
+ }
254
+
255
+ .vd-tooltip-lg.vd-tooltip-right::before,
256
+ .vd-tooltip-lg[data-placement="right"]::before {
257
+ border-width: var(--tooltip-arrow-size-lg) var(--tooltip-arrow-size-lg) var(--tooltip-arrow-size-lg) 0;
258
+ }
259
+
260
+ /* Tooltip with HTML Content */
261
+ .vd-tooltip-html {
262
+ text-align: left;
263
+ }
264
+
265
+ /* Tooltip Wrapper (for positioning) */
266
+ .vd-tooltip-wrapper {
267
+ position: relative;
268
+ display: inline-block;
269
+ }
270
+