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,464 @@
1
+ /**
2
+ * Vanduo Framework - Documentation Search Component
3
+ * Search functionality for documentation pages
4
+ */
5
+
6
+ :root {
7
+ /* Search Input */
8
+ --doc-search-input-bg: var(--input-bg);
9
+ --doc-search-input-border: var(--input-border-color);
10
+ --doc-search-input-focus-border: var(--color-primary);
11
+ --doc-search-input-radius: var(--input-border-radius);
12
+ --doc-search-input-padding-y: 0.5rem;
13
+ --doc-search-input-padding-x: 0.75rem;
14
+ --doc-search-input-padding-left: 30px;
15
+
16
+ /* Search Results */
17
+ --doc-search-results-bg: var(--card-bg, var(--bg-primary));
18
+ --doc-search-results-border: var(--border-color);
19
+ --doc-search-results-shadow: var(--shadow-lg);
20
+ --doc-search-results-max-height: 400px;
21
+ --doc-search-results-radius: var(--input-border-radius);
22
+
23
+ /* Result Items */
24
+ --doc-search-result-padding: 0.75rem 1rem;
25
+ --doc-search-result-hover-bg: var(--color-primary-alpha-10, rgba(34, 184, 207, 0.1));
26
+ --doc-search-result-active-bg: var(--color-primary-alpha-20, rgba(34, 184, 207, 0.2));
27
+
28
+ /* Highlight */
29
+ --doc-search-highlight-bg: var(--color-warning-alpha-30, rgba(250, 176, 5, 0.3));
30
+ --doc-search-highlight-color: inherit;
31
+
32
+ /* Shortcut Badge */
33
+ --doc-search-shortcut-bg: var(--bg-secondary);
34
+ --doc-search-shortcut-border: var(--border-color);
35
+ --doc-search-shortcut-color: var(--text-muted);
36
+ }
37
+
38
+ /* Dark Theme Overrides */
39
+ [data-theme="dark"] {
40
+ --doc-search-results-bg: var(--bg-secondary);
41
+ --doc-search-shortcut-bg: var(--bg-tertiary);
42
+ }
43
+
44
+ @media (prefers-color-scheme: dark) {
45
+ :root:not([data-theme]) {
46
+ --doc-search-results-bg: var(--bg-secondary);
47
+ --doc-search-shortcut-bg: var(--bg-tertiary);
48
+ }
49
+ }
50
+
51
+ /* ============================================
52
+ Search Container
53
+ ============================================ */
54
+
55
+ .vd-doc-search {
56
+ position: relative;
57
+ margin-bottom: 1rem;
58
+ }
59
+
60
+ /* ============================================
61
+ Search Input Wrapper
62
+ ============================================ */
63
+
64
+ .vd-doc-search-input-wrapper {
65
+ position: relative;
66
+ display: flex;
67
+ align-items: center;
68
+ }
69
+
70
+ /* Search Icon */
71
+ .vd-doc-search-icon {
72
+ position: absolute;
73
+ left: 0.625rem;
74
+ top: 50%;
75
+ transform: translateY(-50%);
76
+ color: var(--text-muted);
77
+ font-size: 1.125rem;
78
+ pointer-events: none;
79
+ z-index: 1;
80
+ transition: color 0.15s ease;
81
+ }
82
+
83
+ .vd-doc-search-input:focus ~ .vd-doc-search-icon,
84
+ .vd-doc-search-input-wrapper:focus-within .vd-doc-search-icon {
85
+ color: var(--color-primary);
86
+ }
87
+
88
+ /* Search Input - input.vd-doc-search-input matches forms.css specificity so padding overrides base input[type="search"] */
89
+ input.vd-doc-search-input {
90
+ width: 100%;
91
+ padding: var(--input-padding-y) var(--input-padding-x);
92
+ padding-left: var(--doc-search-input-padding-left);
93
+ font-family: var(--font-family-sans);
94
+ font-size: var(--font-size-sm);
95
+ line-height: var(--line-height-normal);
96
+ color: var(--text-primary);
97
+ background-color: var(--doc-search-input-bg);
98
+ border: 1px solid var(--doc-search-input-border);
99
+ border-radius: var(--doc-search-input-radius);
100
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
101
+ appearance: none;
102
+ }
103
+
104
+ .vd-doc-search-input::placeholder {
105
+ color: var(--text-muted);
106
+ opacity: 1;
107
+ }
108
+
109
+ .vd-doc-search-input:focus {
110
+ outline: none;
111
+ border-color: var(--doc-search-input-focus-border);
112
+ box-shadow: 0 0 0 3px var(--color-primary-alpha-20, rgba(34, 184, 207, 0.2));
113
+ }
114
+
115
+ /* Clear the default search cancel button */
116
+ .vd-doc-search-input::-webkit-search-cancel-button {
117
+ -webkit-appearance: none;
118
+ appearance: none;
119
+ }
120
+
121
+ /* Keyboard Shortcut Badge */
122
+ .vd-doc-search-shortcut {
123
+ position: absolute;
124
+ right: var(--doc-search-input-padding-x);
125
+ top: 50%;
126
+ transform: translateY(-50%);
127
+ display: inline-flex;
128
+ align-items: center;
129
+ gap: 0.125rem;
130
+ padding: 0.125rem 0.375rem;
131
+ font-family: var(--font-family-sans);
132
+ font-size: var(--font-size-xs);
133
+ font-weight: var(--font-weight-medium);
134
+ color: var(--doc-search-shortcut-color);
135
+ background-color: var(--doc-search-shortcut-bg);
136
+ border: 1px solid var(--doc-search-shortcut-border);
137
+ border-radius: 4px;
138
+ pointer-events: none;
139
+ user-select: none;
140
+ }
141
+
142
+ /* Hide shortcut when input has value */
143
+ .vd-doc-search-input:not(:placeholder-shown) ~ .vd-doc-search-shortcut {
144
+ display: none;
145
+ }
146
+
147
+ /* ============================================
148
+ Search Results Dropdown
149
+ ============================================ */
150
+
151
+ .vd-doc-search-results {
152
+ position: absolute;
153
+ top: 100%;
154
+ left: 0;
155
+ right: 0;
156
+ z-index: 1000;
157
+ display: none;
158
+ margin-top: 0.5rem;
159
+ background-color: var(--doc-search-results-bg);
160
+ border: 1px solid var(--doc-search-results-border);
161
+ border-radius: var(--doc-search-results-radius);
162
+ box-shadow: var(--doc-search-results-shadow);
163
+ max-height: var(--doc-search-results-max-height);
164
+ overflow-y: auto;
165
+ overflow-x: hidden;
166
+ }
167
+
168
+ .vd-doc-search-results.is-open {
169
+ display: block;
170
+ }
171
+
172
+ /* Results List */
173
+ .vd-doc-search-results-list {
174
+ list-style: none;
175
+ margin: 0;
176
+ padding: 0.5rem 0;
177
+ }
178
+
179
+ /* ============================================
180
+ Search Result Item
181
+ ============================================ */
182
+
183
+ .vd-doc-search-result {
184
+ display: flex;
185
+ align-items: flex-start;
186
+ gap: 0.75rem;
187
+ padding: var(--doc-search-result-padding);
188
+ cursor: pointer;
189
+ transition: background-color 0.1s ease;
190
+ text-decoration: none;
191
+ color: inherit;
192
+ }
193
+
194
+ .vd-doc-search-result:hover {
195
+ background-color: var(--doc-search-result-hover-bg);
196
+ }
197
+
198
+ .vd-doc-search-result.is-active,
199
+ .vd-doc-search-result:focus {
200
+ background-color: var(--doc-search-result-active-bg);
201
+ outline: none;
202
+ }
203
+
204
+ /* Result Icon */
205
+ .vd-doc-search-result-icon {
206
+ flex-shrink: 0;
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ width: 2rem;
211
+ height: 2rem;
212
+ background-color: var(--color-primary-alpha-10, rgba(34, 184, 207, 0.1));
213
+ border-radius: 6px;
214
+ color: var(--color-primary);
215
+ font-size: 1rem;
216
+ }
217
+
218
+ /* Result Content */
219
+ .vd-doc-search-result-content {
220
+ flex: 1;
221
+ min-width: 0;
222
+ }
223
+
224
+ .vd-doc-search-result-title {
225
+ font-size: var(--font-size-sm);
226
+ font-weight: var(--font-weight-medium);
227
+ color: var(--text-primary);
228
+ line-height: 1.4;
229
+ margin-bottom: 0.125rem;
230
+ }
231
+
232
+ .vd-doc-search-result-category {
233
+ font-size: var(--font-size-xs);
234
+ color: var(--text-muted);
235
+ margin-bottom: 0.25rem;
236
+ }
237
+
238
+ .vd-doc-search-result-excerpt {
239
+ font-size: var(--font-size-xs);
240
+ color: var(--text-secondary);
241
+ line-height: 1.4;
242
+ display: -webkit-box;
243
+ -webkit-line-clamp: 2;
244
+ -webkit-box-orient: vertical;
245
+ overflow: hidden;
246
+ }
247
+
248
+ /* Highlight matched text */
249
+ .vd-doc-search-result mark,
250
+ .vd-doc-search-highlight {
251
+ background-color: var(--doc-search-highlight-bg);
252
+ color: var(--doc-search-highlight-color);
253
+ padding: 0 0.125rem;
254
+ border-radius: 2px;
255
+ }
256
+
257
+ /* ============================================
258
+ Empty State
259
+ ============================================ */
260
+
261
+ .vd-doc-search-empty {
262
+ padding: 2rem 1rem;
263
+ text-align: center;
264
+ color: var(--text-muted);
265
+ }
266
+
267
+ .vd-doc-search-empty-icon {
268
+ font-size: 2.5rem;
269
+ margin-bottom: 0.75rem;
270
+ opacity: 0.5;
271
+ }
272
+
273
+ .vd-doc-search-empty-title {
274
+ font-size: var(--font-size-sm);
275
+ font-weight: var(--font-weight-medium);
276
+ color: var(--text-primary);
277
+ margin-bottom: 0.25rem;
278
+ }
279
+
280
+ .vd-doc-search-empty-text {
281
+ font-size: var(--font-size-xs);
282
+ color: var(--text-muted);
283
+ }
284
+
285
+ /* ============================================
286
+ Loading State
287
+ ============================================ */
288
+
289
+ .vd-doc-search-loading {
290
+ padding: 1.5rem 1rem;
291
+ text-align: center;
292
+ color: var(--text-muted);
293
+ }
294
+
295
+ .vd-doc-search-loading-spinner {
296
+ display: inline-block;
297
+ width: 1.5rem;
298
+ height: 1.5rem;
299
+ border: 2px solid var(--border-color);
300
+ border-top-color: var(--color-primary);
301
+ border-radius: 50%;
302
+ animation: doc-search-spin 0.6s linear infinite;
303
+ }
304
+
305
+ @keyframes doc-search-spin {
306
+ to {
307
+ transform: rotate(360deg);
308
+ }
309
+ }
310
+
311
+ /* ============================================
312
+ Footer Hint
313
+ ============================================ */
314
+
315
+ .vd-doc-search-footer {
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: center;
319
+ gap: 1rem;
320
+ padding: 0.5rem 1rem;
321
+ border-top: 1px solid var(--border-color);
322
+ font-size: var(--font-size-xs);
323
+ color: var(--text-muted);
324
+ }
325
+
326
+ .vd-doc-search-footer kbd {
327
+ display: inline-flex;
328
+ align-items: center;
329
+ justify-content: center;
330
+ min-width: 1.25rem;
331
+ height: 1.25rem;
332
+ padding: 0 0.25rem;
333
+ font-family: var(--font-family-sans);
334
+ font-size: 0.625rem;
335
+ font-weight: var(--font-weight-medium);
336
+ background-color: var(--doc-search-shortcut-bg);
337
+ border: 1px solid var(--doc-search-shortcut-border);
338
+ border-radius: 3px;
339
+ }
340
+
341
+ .vd-doc-search-footer-item {
342
+ display: flex;
343
+ align-items: center;
344
+ gap: 0.25rem;
345
+ }
346
+
347
+ /* ============================================
348
+ Category Icons
349
+ ============================================ */
350
+
351
+ .vd-doc-search-result[data-category="getting-started"] .vd-doc-search-result-icon {
352
+ background-color: var(--color-success-alpha-10, rgba(64, 192, 87, 0.1));
353
+ color: var(--color-success);
354
+ }
355
+
356
+ .vd-doc-search-result[data-category="core"] .vd-doc-search-result-icon {
357
+ background-color: var(--color-info-alpha-10, rgba(34, 139, 230, 0.1));
358
+ color: var(--color-info);
359
+ }
360
+
361
+ .vd-doc-search-result[data-category="components"] .vd-doc-search-result-icon {
362
+ background-color: var(--color-primary-alpha-10, rgba(34, 184, 207, 0.1));
363
+ color: var(--color-primary);
364
+ }
365
+
366
+ .vd-doc-search-result[data-category="interactive"] .vd-doc-search-result-icon {
367
+ background-color: var(--color-warning-alpha-10, rgba(250, 176, 5, 0.1));
368
+ color: var(--color-warning);
369
+ }
370
+
371
+ .vd-doc-search-result[data-category="data-display"] .vd-doc-search-result-icon {
372
+ background-color: var(--color-secondary-alpha-10, rgba(32, 201, 151, 0.1));
373
+ color: var(--color-secondary);
374
+ }
375
+
376
+ .vd-doc-search-result[data-category="feedback"] .vd-doc-search-result-icon {
377
+ background-color: var(--color-error-alpha-10, rgba(250, 82, 82, 0.1));
378
+ color: var(--color-error);
379
+ }
380
+
381
+ /* ============================================
382
+ Sidebar context - sticky search below navbar
383
+ ============================================ */
384
+
385
+ .doc-sidebar .vd-doc-search {
386
+ flex-shrink: 0;
387
+ position: sticky;
388
+ top: 70px;
389
+ z-index: 2;
390
+ background: var(--bg-primary);
391
+ padding-top: 0.5rem;
392
+ padding-bottom: 0.5rem;
393
+ }
394
+
395
+ /* ============================================
396
+ Responsive Styles
397
+ ============================================ */
398
+
399
+ @media (max-width: 991px) {
400
+ .vd-doc-search {
401
+ margin-bottom: 1rem;
402
+ }
403
+
404
+ .vd-doc-search-results {
405
+ position: fixed;
406
+ left: 1rem;
407
+ right: 1rem;
408
+ top: auto;
409
+ max-height: 60vh;
410
+ }
411
+
412
+ .vd-doc-search-shortcut {
413
+ display: none;
414
+ }
415
+
416
+ input.vd-doc-search-input {
417
+ padding-right: var(--doc-search-input-padding-x);
418
+ min-height: 44px;
419
+ }
420
+
421
+ .vd-doc-search-result {
422
+ padding: 1rem;
423
+ }
424
+
425
+ .doc-sidebar .vd-doc-search {
426
+ flex-shrink: 0;
427
+ position: sticky;
428
+ top: 70px;
429
+ z-index: 2;
430
+ background: var(--bg-primary);
431
+ padding-top: 0.5rem;
432
+ padding-bottom: 0.5rem;
433
+ }
434
+ }
435
+
436
+ /* ============================================
437
+ Animations
438
+ ============================================ */
439
+
440
+ .vd-doc-search-results {
441
+ animation: doc-search-fade-in 0.15s ease;
442
+ }
443
+
444
+ @keyframes doc-search-fade-in {
445
+ from {
446
+ opacity: 0;
447
+ transform: translateY(-0.5rem);
448
+ }
449
+ to {
450
+ opacity: 1;
451
+ transform: translateY(0);
452
+ }
453
+ }
454
+
455
+ /* Reduced motion */
456
+ @media (prefers-reduced-motion: reduce) {
457
+ .vd-doc-search-results {
458
+ animation: none;
459
+ }
460
+
461
+ .vd-doc-search-loading-spinner {
462
+ animation-duration: 1.5s;
463
+ }
464
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Vanduo Documentation Tabs Component
3
+ * Provides styled tab navigation for documentation sections
4
+ */
5
+
6
+ .doc-tabs {
7
+ display: flex;
8
+ gap: 0.5rem;
9
+ margin: 1rem 0 1.5rem;
10
+ flex-wrap: wrap;
11
+ }
12
+
13
+ .doc-tab {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ gap: 0.4rem;
17
+ padding: 0.6rem 1rem;
18
+ border: 1px solid var(--border-color);
19
+ border-radius: var(--btn-border-radius);
20
+ background: var(--bg-secondary);
21
+ color: var(--text-primary);
22
+ text-decoration: none;
23
+ font-weight: 500;
24
+ transition: all 0.2s ease;
25
+ }
26
+
27
+ .doc-tab:hover {
28
+ border-color: var(--color-primary);
29
+ color: var(--color-primary);
30
+ background: var(--color-primary-alpha-08);
31
+ }
32
+
33
+ .doc-tab.active {
34
+ border-color: var(--color-primary);
35
+ color: var(--color-primary);
36
+ background: var(--color-primary-alpha-12);
37
+ box-shadow: 0 0 0 1px var(--color-primary-alpha-20);
38
+ }