vanduo-framework 1.1.8

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 +205 -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,304 @@
1
+ /**
2
+ * Vanduo Framework - Cards
3
+ * Card component for content containers
4
+ */
5
+
6
+ :root {
7
+ /* Card Padding (Fibonacci: 13, 21, 34) */
8
+ --card-padding: 1.3125rem;
9
+ /* 21px - fib */
10
+ --card-padding-sm: 0.8125rem;
11
+ /* 13px - fib */
12
+ --card-padding-lg: 2.125rem;
13
+ /* 34px - fib */
14
+
15
+ /* Card Border */
16
+ --card-border-width: 1px;
17
+ --card-border-color: var(--border-color);
18
+ --card-border-radius: var(--btn-border-radius-lg);
19
+
20
+ /* Card Background */
21
+ --card-bg: var(--color-white);
22
+ --card-bg-filled: var(--bg-secondary);
23
+
24
+ /* Card Shadow */
25
+ --card-shadow: var(--shadow-sm);
26
+ --card-shadow-elevated: var(--shadow-sm);
27
+
28
+ /* Card Glow Effect - uses primary color scale */
29
+ --card-glow-color: var(--primary-2);
30
+ --card-glow-border-color: var(--primary-3);
31
+ }
32
+
33
+ /* Dark Theme Overrides */
34
+ [data-theme="dark"] {
35
+ --card-bg: var(--bg-secondary);
36
+ --card-bg-filled: var(--bg-primary);
37
+ /* Glow uses lighter primary shades for dark mode visibility */
38
+ --card-glow-color: var(--primary-3);
39
+ --card-glow-border-color: var(--primary-4);
40
+ }
41
+
42
+ @media (prefers-color-scheme: dark) {
43
+ :root:not([data-theme]) {
44
+ --card-bg: var(--bg-secondary);
45
+ --card-bg-filled: var(--bg-primary);
46
+ /* Glow uses lighter primary shades for dark mode visibility */
47
+ --card-glow-color: var(--primary-3);
48
+ --card-glow-border-color: var(--primary-4);
49
+ }
50
+ }
51
+
52
+ /* Base Card */
53
+ .vd-card {
54
+ position: relative;
55
+ display: flex;
56
+ flex-direction: column;
57
+ min-width: 0;
58
+ word-wrap: break-word;
59
+ background-color: var(--card-bg);
60
+ background-clip: border-box;
61
+ border: var(--card-border-width) solid var(--card-border-color);
62
+ border-radius: var(--card-border-radius);
63
+ box-shadow: var(--card-shadow);
64
+ }
65
+
66
+ /* Card Variants - Elevated (default) */
67
+ .vd-card-elevated,
68
+ .vd-card {
69
+ box-shadow: var(--card-shadow-elevated);
70
+ }
71
+
72
+ /* Card Variants - Outlined */
73
+ .vd-card-outlined {
74
+ box-shadow: none;
75
+ border: var(--card-border-width) solid var(--card-border-color);
76
+ }
77
+
78
+ /* Card Variants - Filled */
79
+ .vd-card-filled {
80
+ background-color: var(--card-bg-filled);
81
+ box-shadow: none;
82
+ border: none;
83
+ }
84
+
85
+ /* Card Header */
86
+ .vd-card-header {
87
+ padding: var(--card-padding);
88
+ margin-bottom: 0;
89
+ background-color: transparent;
90
+ border-bottom: var(--card-border-width) solid var(--card-border-color);
91
+ border-top-left-radius: calc(var(--card-border-radius) - var(--card-border-width));
92
+ border-top-right-radius: calc(var(--card-border-radius) - var(--card-border-width));
93
+ }
94
+
95
+ .vd-card-header:first-child {
96
+ border-top-left-radius: var(--card-border-radius);
97
+ border-top-right-radius: var(--card-border-radius);
98
+ }
99
+
100
+ .vd-card-header-sm {
101
+ padding: var(--card-padding-sm);
102
+ }
103
+
104
+ .vd-card-header-lg {
105
+ padding: var(--card-padding-lg);
106
+ }
107
+
108
+ /* Card Body */
109
+ .vd-card-body {
110
+ flex: 1 1 auto;
111
+ padding: var(--card-padding);
112
+ }
113
+
114
+ .vd-card-body-sm {
115
+ padding: var(--card-padding-sm);
116
+ }
117
+
118
+ .vd-card-body-lg {
119
+ padding: var(--card-padding-lg);
120
+ }
121
+
122
+ /* Card Footer */
123
+ .vd-card-footer {
124
+ padding: var(--card-padding);
125
+ margin-top: 0;
126
+ background-color: transparent;
127
+ border-top: var(--card-border-width) solid var(--card-border-color);
128
+ border-bottom-left-radius: calc(var(--card-border-radius) - var(--card-border-width));
129
+ border-bottom-right-radius: calc(var(--card-border-radius) - var(--card-border-width));
130
+ }
131
+
132
+ .vd-card-footer:last-child {
133
+ border-bottom-left-radius: var(--card-border-radius);
134
+ border-bottom-right-radius: var(--card-border-radius);
135
+ }
136
+
137
+ .vd-card-footer-sm {
138
+ padding: var(--card-padding-sm);
139
+ }
140
+
141
+ .vd-card-footer-lg {
142
+ padding: var(--card-padding-lg);
143
+ }
144
+
145
+ /* Card Image */
146
+ .vd-card-image {
147
+ width: 100%;
148
+ height: auto;
149
+ border-top-left-radius: calc(var(--card-border-radius) - var(--card-border-width));
150
+ border-top-right-radius: calc(var(--card-border-radius) - var(--card-border-width));
151
+ }
152
+
153
+ .vd-card-image:first-child {
154
+ border-top-left-radius: var(--card-border-radius);
155
+ border-top-right-radius: var(--card-border-radius);
156
+ }
157
+
158
+ .vd-card-image:last-child {
159
+ border-bottom-left-radius: var(--card-border-radius);
160
+ border-bottom-right-radius: var(--card-border-radius);
161
+ }
162
+
163
+ /* Card Image Container */
164
+ .vd-card-image-container {
165
+ position: relative;
166
+ overflow: hidden;
167
+ border-top-left-radius: calc(var(--card-border-radius) - var(--card-border-width));
168
+ border-top-right-radius: calc(var(--card-border-radius) - var(--card-border-width));
169
+ }
170
+
171
+ .vd-card-image-container:first-child {
172
+ border-top-left-radius: var(--card-border-radius);
173
+ border-top-right-radius: var(--card-border-radius);
174
+ }
175
+
176
+ .vd-card-image-container img {
177
+ width: 100%;
178
+ height: auto;
179
+ display: block;
180
+ }
181
+
182
+ /* Card Title */
183
+ .vd-card-title {
184
+ margin-bottom: 0.5rem;
185
+ font-size: var(--font-size-xl);
186
+ font-weight: var(--font-weight-semibold);
187
+ color: var(--text-primary);
188
+ }
189
+
190
+ .vd-card-title:last-child {
191
+ margin-bottom: 0;
192
+ }
193
+
194
+ /* Card Subtitle */
195
+ .vd-card-subtitle {
196
+ margin-top: -0.25rem;
197
+ margin-bottom: 0.5rem;
198
+ font-size: var(--font-size-sm);
199
+ color: var(--text-secondary);
200
+ }
201
+
202
+ /* Card Text */
203
+ .vd-card-text {
204
+ margin-bottom: 1rem;
205
+ color: var(--text-primary);
206
+ }
207
+
208
+ .vd-card-text:last-child {
209
+ margin-bottom: 0;
210
+ }
211
+
212
+ /* Card Actions */
213
+ .vd-card-actions {
214
+ display: flex;
215
+ gap: 0.5rem;
216
+ padding: var(--card-padding);
217
+ border-top: var(--card-border-width) solid var(--card-border-color);
218
+ }
219
+
220
+ .vd-card-actions-sm {
221
+ padding: var(--card-padding-sm);
222
+ }
223
+
224
+ .vd-card-actions-lg {
225
+ padding: var(--card-padding-lg);
226
+ }
227
+
228
+ /* Card with No Padding */
229
+ .vd-card-no-padding .vd-card-body {
230
+ padding: 0;
231
+ }
232
+
233
+ .vd-card-no-padding .vd-card-header {
234
+ padding: var(--card-padding);
235
+ }
236
+
237
+ .vd-card-no-padding .vd-card-footer {
238
+ padding: var(--card-padding);
239
+ }
240
+
241
+ /* Card Sizes - Compact */
242
+ .vd-card-compact .vd-card-header,
243
+ .vd-card-compact .vd-card-body,
244
+ .vd-card-compact .vd-card-footer {
245
+ padding: var(--card-padding-sm);
246
+ }
247
+
248
+ /* Card Sizes - Spacious */
249
+ .vd-card-spacious .vd-card-header,
250
+ .vd-card-spacious .vd-card-body,
251
+ .vd-card-spacious .vd-card-footer {
252
+ padding: var(--card-padding-lg);
253
+ }
254
+
255
+ /* Card Glow Effect */
256
+ .vd-card-glow {
257
+ transition: box-shadow 0.3s ease, border-color 0.3s ease;
258
+ border-color: var(--card-border-color);
259
+ }
260
+
261
+ .vd-card-glow:hover {
262
+ box-shadow: 0 0 15px 0 var(--card-glow-color), var(--card-shadow);
263
+ border-color: var(--card-glow-border-color);
264
+ }
265
+
266
+ /* Card Link */
267
+ a.vd-card {
268
+ text-decoration: none;
269
+ color: inherit;
270
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
271
+ }
272
+
273
+ a.vd-card:hover {
274
+ text-decoration: none;
275
+ transform: translateY(-2px);
276
+ box-shadow: var(--shadow-xl);
277
+ }
278
+
279
+ a.vd-card.vd-card-glow:hover {
280
+ box-shadow: 0 0 15px 0 var(--card-glow-color), var(--shadow-xl);
281
+ border-color: var(--card-glow-border-color);
282
+ }
283
+
284
+ a.vd-card:active {
285
+ transform: translateY(0);
286
+ }
287
+
288
+ /* Card Groups (for multiple cards) */
289
+ .vd-card-group {
290
+ display: flex;
291
+ flex-direction: column;
292
+ gap: 1rem;
293
+ /* Fibonacci-inspired spacing */
294
+ }
295
+
296
+ @media (min-width: 768px) {
297
+ .vd-card-group {
298
+ flex-direction: row;
299
+ }
300
+
301
+ .vd-card-group>.vd-card {
302
+ flex: 1 1 0%;
303
+ }
304
+ }
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Vanduo Framework - Chips/Tags
3
+ * Small interactive elements for tags, filters, and selections
4
+ */
5
+
6
+ :root {
7
+ /* Chip Sizing (Fibonacci) */
8
+ --chip-padding-x: 0.8125rem; /* 13px - fib */
9
+ --chip-padding-y: 0.3125rem; /* 5px - fib */
10
+ --chip-padding-x-sm: 0.5rem; /* 8px - fib */
11
+ --chip-padding-y-sm: 0.1875rem; /* 3px - fib */
12
+ --chip-padding-x-lg: 1.3125rem; /* 21px - fib */
13
+ --chip-padding-y-lg: 0.5rem; /* 8px - fib */
14
+ --chip-border-radius: 9999px;
15
+ --chip-font-size: var(--font-size-sm);
16
+ --chip-font-size-sm: var(--font-size-xs);
17
+ --chip-font-size-lg: var(--font-size-base);
18
+
19
+ /* Chip Colors */
20
+ --chip-bg: var(--bg-secondary);
21
+ --chip-text: var(--text-primary);
22
+ --chip-border: var(--border-color);
23
+ }
24
+
25
+ /* Dark Theme Overrides */
26
+ [data-theme="dark"] {
27
+ --chip-bg: var(--color-gray-700);
28
+ }
29
+
30
+ @media (prefers-color-scheme: dark) {
31
+ :root:not([data-theme]) {
32
+ --chip-bg: var(--color-gray-700);
33
+ }
34
+ }
35
+
36
+ /* Base Chip */
37
+ .vd-chip,
38
+ .tag {
39
+ display: inline-flex;
40
+ align-items: center;
41
+ gap: 0.375rem;
42
+ padding: var(--chip-padding-y) var(--chip-padding-x);
43
+ font-size: var(--chip-font-size);
44
+ font-weight: var(--font-weight-medium);
45
+ line-height: 1.2;
46
+ color: var(--chip-text);
47
+ background-color: var(--chip-bg);
48
+ border-radius: var(--chip-border-radius);
49
+ white-space: nowrap;
50
+ vertical-align: middle;
51
+ transition: var(--transition-base);
52
+ }
53
+
54
+ /* Chip Sizes */
55
+ .vd-chip-sm,
56
+ .tag-sm {
57
+ padding: var(--chip-padding-y-sm) var(--chip-padding-x-sm);
58
+ font-size: var(--chip-font-size-sm);
59
+ }
60
+
61
+ .vd-chip-lg,
62
+ .tag-lg {
63
+ padding: var(--chip-padding-y-lg) var(--chip-padding-x-lg);
64
+ font-size: var(--chip-font-size-lg);
65
+ }
66
+
67
+ /* Chip Color Variants */
68
+ .vd-chip-primary,
69
+ .tag-primary {
70
+ background-color: var(--color-primary);
71
+ color: var(--color-white);
72
+ }
73
+
74
+ .vd-chip-secondary,
75
+ .tag-secondary {
76
+ background-color: var(--color-secondary);
77
+ color: var(--color-white);
78
+ }
79
+
80
+ .vd-chip-success,
81
+ .tag-success {
82
+ background-color: var(--color-success);
83
+ color: var(--color-white);
84
+ }
85
+
86
+ .vd-chip-warning,
87
+ .tag-warning {
88
+ background-color: var(--color-warning);
89
+ color: var(--color-gray-900);
90
+ }
91
+
92
+ .vd-chip-error,
93
+ .tag-error,
94
+ .vd-chip-danger,
95
+ .tag-danger {
96
+ background-color: var(--color-error);
97
+ color: var(--color-white);
98
+ }
99
+
100
+ .vd-chip-info,
101
+ .tag-info {
102
+ background-color: var(--color-info);
103
+ color: var(--color-white);
104
+ }
105
+
106
+ /* Outline Variants */
107
+ .vd-chip-outline,
108
+ .tag-outline {
109
+ background-color: transparent;
110
+ border: 1px solid var(--chip-border);
111
+ }
112
+
113
+ .vd-chip-outline.vd-chip-primary,
114
+ .tag-outline.tag-primary {
115
+ border-color: var(--color-primary);
116
+ color: var(--color-primary);
117
+ background-color: transparent;
118
+ }
119
+
120
+ .vd-chip-outline.vd-chip-success,
121
+ .tag-outline.tag-success {
122
+ border-color: var(--color-success);
123
+ color: var(--color-success);
124
+ background-color: transparent;
125
+ }
126
+
127
+ .vd-chip-outline.vd-chip-warning,
128
+ .tag-outline.tag-warning {
129
+ border-color: var(--color-warning);
130
+ color: var(--color-warning);
131
+ background-color: transparent;
132
+ }
133
+
134
+ .vd-chip-outline.vd-chip-error,
135
+ .tag-outline.tag-error {
136
+ border-color: var(--color-error);
137
+ color: var(--color-error);
138
+ background-color: transparent;
139
+ }
140
+
141
+ .vd-chip-outline.vd-chip-info,
142
+ .tag-outline.tag-info {
143
+ border-color: var(--color-info);
144
+ color: var(--color-info);
145
+ background-color: transparent;
146
+ }
147
+
148
+ /* Clickable/Interactive Chip */
149
+ .vd-chip-clickable,
150
+ .tag-clickable,
151
+ a.vd-chip,
152
+ a.tag,
153
+ button.vd-chip,
154
+ button.tag {
155
+ cursor: pointer;
156
+ text-decoration: none;
157
+ border: none;
158
+ }
159
+
160
+ .vd-chip-clickable:hover,
161
+ .tag-clickable:hover,
162
+ a.vd-chip:hover,
163
+ a.tag:hover,
164
+ button.vd-chip:hover,
165
+ button.tag:hover {
166
+ filter: brightness(0.9);
167
+ }
168
+
169
+ .vd-chip-clickable:focus-visible,
170
+ .tag-clickable:focus-visible,
171
+ a.vd-chip:focus-visible,
172
+ a.tag:focus-visible,
173
+ button.vd-chip:focus-visible,
174
+ button.tag:focus-visible {
175
+ outline: 2px solid var(--color-primary);
176
+ outline-offset: 2px;
177
+ }
178
+
179
+ /* Dismissible Chip */
180
+ .vd-chip-dismissible,
181
+ .tag-dismissible {
182
+ padding-right: 0.375rem;
183
+ }
184
+
185
+ .vd-chip-close,
186
+ .tag-close {
187
+ display: inline-flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ width: 1rem;
191
+ height: 1rem;
192
+ padding: 0;
193
+ margin-left: 0.125rem;
194
+ font-size: 0.75rem;
195
+ line-height: 1;
196
+ color: inherit;
197
+ background: transparent;
198
+ border: none;
199
+ border-radius: 50%;
200
+ cursor: pointer;
201
+ opacity: 0.7;
202
+ transition: opacity 0.15s ease;
203
+ }
204
+
205
+ .vd-chip-close:hover,
206
+ .tag-close:hover {
207
+ opacity: 1;
208
+ }
209
+
210
+ .vd-chip-close::before,
211
+ .tag-close::before {
212
+ content: '\00D7';
213
+ font-size: 1rem;
214
+ font-weight: bold;
215
+ }
216
+
217
+ /* Chip with Avatar/Image */
218
+ .vd-chip-avatar,
219
+ .tag-avatar {
220
+ padding-left: 0.25rem;
221
+ }
222
+
223
+ .vd-chip-avatar img,
224
+ .tag-avatar img {
225
+ width: 1.5rem;
226
+ height: 1.5rem;
227
+ border-radius: 50%;
228
+ object-fit: cover;
229
+ }
230
+
231
+ .vd-chip-sm.vd-chip-avatar img,
232
+ .tag-sm.tag-avatar img {
233
+ width: 1.25rem;
234
+ height: 1.25rem;
235
+ }
236
+
237
+ .vd-chip-lg.vd-chip-avatar img,
238
+ .tag-lg.tag-avatar img {
239
+ width: 1.75rem;
240
+ height: 1.75rem;
241
+ }
242
+
243
+ /* Chip Group */
244
+ .vd-chip-group,
245
+ .tag-group {
246
+ display: flex;
247
+ flex-wrap: wrap;
248
+ gap: 0.5rem;
249
+ }
250
+
251
+ /* Reduced Motion */
252
+ @media (prefers-reduced-motion: reduce) {
253
+ .vd-chip,
254
+ .tag,
255
+ .vd-chip-close,
256
+ .tag-close {
257
+ transition: none;
258
+ }
259
+ }