@dataengineeringformachinelearning/viking-ui 4.0.4 → 4.0.5

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 (246) hide show
  1. package/README.md +35 -11
  2. package/dist/README.md +35 -11
  3. package/dist/design-tokens.css +300 -85
  4. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +100 -64
  5. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +1 -1
  6. package/dist/icons.js +306 -0
  7. package/dist/package.json +24 -5
  8. package/{src/lib/site-drakkar/site-drakkar.config.ts → dist/site-drakkar.js} +64 -130
  9. package/dist/src/tokens/viking-tokens.json +9 -7
  10. package/dist/types/dataengineeringformachinelearning-viking-ui.d.ts +97 -3
  11. package/dist/viking-components.css +161 -70
  12. package/dist/viking-tokens.json +9 -7
  13. package/dist/viking-ui-elements.js +44 -32
  14. package/dist/viking-ui.css +1 -1
  15. package/dist/web-components.js +44 -32
  16. package/package.json +30 -8
  17. package/dist/scripts/build-web-components.mjs +0 -37
  18. package/dist/src/web/badge/viking-badge-wc.ts +0 -116
  19. package/dist/src/web/button/viking-button-wc.ts +0 -165
  20. package/dist/src/web/callout/viking-callout-wc.ts +0 -105
  21. package/dist/src/web/card/viking-card-wc.ts +0 -67
  22. package/dist/src/web/core/base.ts +0 -56
  23. package/dist/src/web/core/dom.ts +0 -53
  24. package/dist/src/web/core/icons-inline.ts +0 -44
  25. package/dist/src/web/core/styles.ts +0 -1261
  26. package/dist/src/web/core/types.ts +0 -19
  27. package/dist/src/web/field/viking-field-wc.ts +0 -154
  28. package/dist/src/web/index.ts +0 -73
  29. package/dist/src/web/input/viking-input-wc.ts +0 -211
  30. package/dist/src/web/modal/viking-modal-wc.ts +0 -187
  31. package/dist/src/web/search-palette/viking-search-palette-wc.ts +0 -495
  32. package/dist/src/web/select/viking-select-wc.ts +0 -218
  33. package/dist/src/web/suite-header/viking-suite-header-wc.ts +0 -729
  34. package/dist/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +0 -234
  35. package/dist/src/web/theme-toggle/viking-theme-toggle-wc.ts +0 -139
  36. package/dist/src/web/types.ts +0 -37
  37. package/dist/src/web/web-components.spec.ts +0 -297
  38. package/src/assets/drakkar-favicon.svg +0 -17
  39. package/src/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  40. package/src/assets/fonts/inter/InterVariable.woff2 +0 -0
  41. package/src/core/brand/deml-lockup.svg +0 -5
  42. package/src/core/brand/deml-mark-compact.svg +0 -4
  43. package/src/core/brand/deml-mark-filled.svg +0 -3
  44. package/src/core/brand/deml-mark-outline.svg +0 -4
  45. package/src/core/brand-icons.ts +0 -62
  46. package/src/core/icons.spec.ts +0 -52
  47. package/src/core/icons.ts +0 -206
  48. package/src/core/integration-brand-icons.ts +0 -77
  49. package/src/core/lucide-paths.generated.ts +0 -130
  50. package/src/core/types.ts +0 -85
  51. package/src/core/uid.ts +0 -7
  52. package/src/elements/button/viking-button.ts +0 -201
  53. package/src/elements/card/viking-card.ts +0 -60
  54. package/src/elements/core/dom.ts +0 -33
  55. package/src/elements/core/styles.ts +0 -28
  56. package/src/elements/modal/viking-modal.ts +0 -154
  57. package/src/index.ts +0 -1
  58. package/src/lib/accordion/accordion.ts +0 -126
  59. package/src/lib/app-header/app-header.scss +0 -274
  60. package/src/lib/app-header/app-header.ts +0 -43
  61. package/src/lib/app-sidebar/app-sidebar.scss +0 -415
  62. package/src/lib/app-sidebar/app-sidebar.ts +0 -29
  63. package/src/lib/auth-panel/auth-panel.spec.ts +0 -132
  64. package/src/lib/auth-panel/auth-panel.ts +0 -228
  65. package/src/lib/autocomplete/autocomplete.ts +0 -223
  66. package/src/lib/avatar/avatar.ts +0 -126
  67. package/src/lib/badge/badge.ts +0 -182
  68. package/src/lib/bar/bar.ts +0 -31
  69. package/src/lib/brand/brand.ts +0 -60
  70. package/src/lib/breadcrumbs/breadcrumbs.ts +0 -81
  71. package/src/lib/button/button-group.ts +0 -40
  72. package/src/lib/button/button.scss +0 -119
  73. package/src/lib/button/button.ts +0 -98
  74. package/src/lib/calendar/calendar.ts +0 -253
  75. package/src/lib/callout/callout.ts +0 -211
  76. package/src/lib/card/card-title.spec.ts +0 -27
  77. package/src/lib/card/card-title.ts +0 -50
  78. package/src/lib/card/card.ts +0 -200
  79. package/src/lib/carousel/carousel.ts +0 -206
  80. package/src/lib/chart/chart-zoom.spec.ts +0 -65
  81. package/src/lib/chart/chart-zoom.ts +0 -71
  82. package/src/lib/chart/chart.ts +0 -1257
  83. package/src/lib/chart-card-header/chart-card-header.ts +0 -80
  84. package/src/lib/chart-empty-state/chart-empty-state.ts +0 -146
  85. package/src/lib/chart-panel/chart-panel.ts +0 -133
  86. package/src/lib/checkbox/checkbox.ts +0 -139
  87. package/src/lib/color-picker/color-picker.ts +0 -148
  88. package/src/lib/command/command.ts +0 -260
  89. package/src/lib/composer/composer.ts +0 -180
  90. package/src/lib/confirm-dialog/confirm-dialog.ts +0 -163
  91. package/src/lib/confirm-dialog/dialog.service.ts +0 -79
  92. package/src/lib/context/context.ts +0 -75
  93. package/src/lib/core/brand-icons.ts +0 -62
  94. package/src/lib/core/cva.ts +0 -33
  95. package/src/lib/core/icons.ts +0 -206
  96. package/src/lib/core/integration-brand-icons.ts +0 -77
  97. package/src/lib/core/lucide-paths.generated.ts +0 -130
  98. package/src/lib/date-picker/date-picker.ts +0 -139
  99. package/src/lib/dropdown/dropdown.ts +0 -188
  100. package/src/lib/editor/editor.ts +0 -170
  101. package/src/lib/empty-state/empty-state.ts +0 -100
  102. package/src/lib/fab/fab.ts +0 -76
  103. package/src/lib/field/field.ts +0 -111
  104. package/src/lib/file-upload/file-upload.ts +0 -208
  105. package/src/lib/footer/footer.scss +0 -162
  106. package/src/lib/footer/footer.ts +0 -28
  107. package/src/lib/form-section/form-section.ts +0 -200
  108. package/src/lib/forms.spec.ts +0 -92
  109. package/src/lib/gauge-arc/gauge-arc.ts +0 -85
  110. package/src/lib/hud-panel/hud-panel.ts +0 -27
  111. package/src/lib/icon/icon.ts +0 -284
  112. package/src/lib/icon-badge/icon-badge.ts +0 -87
  113. package/src/lib/icon-heading/icon-heading.spec.ts +0 -32
  114. package/src/lib/icon-heading/icon-heading.ts +0 -38
  115. package/src/lib/icon-text/icon-text.ts +0 -120
  116. package/src/lib/input/input.ts +0 -119
  117. package/src/lib/kanban/kanban.ts +0 -211
  118. package/src/lib/kbd/kbd.ts +0 -32
  119. package/src/lib/label/label.ts +0 -39
  120. package/src/lib/loading-overlay/loading-overlay.ts +0 -80
  121. package/src/lib/menubar/menubar.ts +0 -77
  122. package/src/lib/metric-card/metric-card.ts +0 -33
  123. package/src/lib/modal/modal.ts +0 -207
  124. package/src/lib/native-select/native-select.ts +0 -124
  125. package/src/lib/navbar/navbar.ts +0 -124
  126. package/src/lib/navigation-menu/navigation-menu.ts +0 -116
  127. package/src/lib/otp-input/otp-input.ts +0 -164
  128. package/src/lib/page-back-link/page-back-link.ts +0 -74
  129. package/src/lib/page-header/page-header.ts +0 -70
  130. package/src/lib/pagination/pagination.ts +0 -157
  131. package/src/lib/pillbox/pillbox.ts +0 -157
  132. package/src/lib/popover/popover.ts +0 -92
  133. package/src/lib/profile/profile.ts +0 -73
  134. package/src/lib/progress/progress.ts +0 -123
  135. package/src/lib/radio/radio.ts +0 -132
  136. package/src/lib/ring-gauge/ring-gauge.ts +0 -75
  137. package/src/lib/scroll-area/scroll-area.ts +0 -57
  138. package/src/lib/search-palette/search-palette.scss +0 -288
  139. package/src/lib/search-palette/search-palette.ts +0 -114
  140. package/src/lib/select/select.ts +0 -292
  141. package/src/lib/separator/separator.ts +0 -59
  142. package/src/lib/sheet/sheet.ts +0 -192
  143. package/src/lib/sidebar-nav/sidebar-nav.scss +0 -218
  144. package/src/lib/sidebar-nav/sidebar-nav.ts +0 -158
  145. package/src/lib/site-drakkar/site-footer.ts +0 -133
  146. package/src/lib/site-drakkar/site-navbar.scss +0 -2
  147. package/src/lib/site-drakkar/site-navbar.ts +0 -286
  148. package/src/lib/site-drakkar/suite-search-items.spec.ts +0 -61
  149. package/src/lib/site-drakkar/suite-search-items.ts +0 -246
  150. package/src/lib/skeleton/skeleton.ts +0 -51
  151. package/src/lib/slider/slider.ts +0 -133
  152. package/src/lib/spinner/spinner.ts +0 -75
  153. package/src/lib/status-metric-row/status-metric-row.ts +0 -74
  154. package/src/lib/suite-search-palette/suite-search-palette.ts +0 -95
  155. package/src/lib/switch/switch.ts +0 -131
  156. package/src/lib/table/table.ts +0 -137
  157. package/src/lib/tabs/tab-panel.ts +0 -61
  158. package/src/lib/tabs/tab.ts +0 -107
  159. package/src/lib/tabs/tabs.ts +0 -109
  160. package/src/lib/textarea/textarea.ts +0 -103
  161. package/src/lib/theme-toggle/theme-toggle.spec.ts +0 -40
  162. package/src/lib/theme-toggle/theme-toggle.ts +0 -40
  163. package/src/lib/time-picker/time-picker.ts +0 -197
  164. package/src/lib/timeline/timeline.ts +0 -152
  165. package/src/lib/toast/toast.ts +0 -196
  166. package/src/lib/toggle/toggle-group.ts +0 -60
  167. package/src/lib/toggle/toggle.ts +0 -101
  168. package/src/lib/tooltip/tooltip.ts +0 -119
  169. package/src/lib/typography/heading.ts +0 -52
  170. package/src/lib/typography/text.ts +0 -51
  171. package/src/lib/uptime-bar/uptime-bar.ts +0 -55
  172. package/src/lib/verification-code-field/verification-code-field.ts +0 -149
  173. package/src/lib/whitepaper-cta/whitepaper-cta.scss +0 -130
  174. package/src/lib/whitepaper-cta/whitepaper-cta.ts +0 -78
  175. package/src/lib/wizard/wizard.ts +0 -80
  176. package/src/public-api.ts +0 -172
  177. package/src/styles/_buttons.scss +0 -386
  178. package/src/styles/_component-primitives.scss +0 -183
  179. package/src/styles/_drakkar-buttons.scss +0 -85
  180. package/src/styles/_fonts.scss +0 -22
  181. package/src/styles/_forms.scss +0 -66
  182. package/src/styles/_input.scss +0 -106
  183. package/src/styles/_layout-enforcement.scss +0 -229
  184. package/src/styles/_layout-rhythm.scss +0 -158
  185. package/src/styles/_legacy-aliases.scss +0 -212
  186. package/src/styles/_series-colors.scss +0 -24
  187. package/src/styles/_static-primitives.scss +0 -857
  188. package/src/styles/_typography.scss +0 -87
  189. package/src/styles/_variables.scss +0 -527
  190. package/src/styles/components/a11y.scss +0 -90
  191. package/src/styles/components/badges.scss +0 -102
  192. package/src/styles/components/extracted-utilities.scss +0 -459
  193. package/src/styles/components/footer.scss +0 -168
  194. package/src/styles/components/icon-heading.scss +0 -47
  195. package/src/styles/components/icon-inline.scss +0 -101
  196. package/src/styles/components/layout.scss +0 -59
  197. package/src/styles/components/utilities.scss +0 -131
  198. package/src/styles/components/viking-inspired.scss +0 -204
  199. package/src/styles/components/whitepaper-cta.scss +0 -130
  200. package/src/styles/components-bundle.scss +0 -9
  201. package/src/styles/components.scss +0 -442
  202. package/src/styles/deml-components.scss +0 -10
  203. package/src/styles/index.scss +0 -8
  204. package/src/styles/layout-shell.scss +0 -111
  205. package/src/styles/page-shell.scss +0 -859
  206. package/src/styles/static-navbar.scss +0 -1250
  207. package/src/styles/surfaces/backend.scss +0 -154
  208. package/src/styles/surfaces/docs-global.scss +0 -73
  209. package/src/styles/surfaces/docs-shell.scss +0 -437
  210. package/src/styles/surfaces/docs-showcase.scss +0 -1153
  211. package/src/styles/surfaces/marketing-cta.scss +0 -62
  212. package/src/styles/surfaces/marketing-docs-bento.scss +0 -67
  213. package/src/styles/surfaces/marketing-global.scss +0 -748
  214. package/src/styles/surfaces/marketing-landing.scss +0 -1526
  215. package/src/styles/surfaces/marketing-publication.scss +0 -535
  216. package/src/styles/surfaces/marketing-theme.scss +0 -14
  217. package/src/styles/surfaces/swagger-ui.scss +0 -1013
  218. package/src/styles/tokens-export.scss +0 -18
  219. package/src/styles/tokens.scss +0 -5
  220. package/src/styles/viking-ui-bundle.scss +0 -23
  221. package/src/styles/viking-ui.scss +0 -272
  222. package/src/tokens/series-presets.ts +0 -15
  223. package/src/tokens/tailwind.preset.js +0 -209
  224. package/src/tokens/viking-tokens.json +0 -318
  225. package/src/viking-ui.spec.ts +0 -416
  226. package/src/web/badge/viking-badge-wc.ts +0 -116
  227. package/src/web/button/viking-button-wc.ts +0 -165
  228. package/src/web/callout/viking-callout-wc.ts +0 -105
  229. package/src/web/card/viking-card-wc.ts +0 -67
  230. package/src/web/core/base.ts +0 -56
  231. package/src/web/core/dom.ts +0 -53
  232. package/src/web/core/icons-inline.ts +0 -44
  233. package/src/web/core/styles.ts +0 -1261
  234. package/src/web/core/types.ts +0 -19
  235. package/src/web/field/viking-field-wc.ts +0 -154
  236. package/src/web/index.ts +0 -73
  237. package/src/web/input/viking-input-wc.ts +0 -211
  238. package/src/web/modal/viking-modal-wc.ts +0 -187
  239. package/src/web/search-palette/viking-search-palette-wc.ts +0 -495
  240. package/src/web/select/viking-select-wc.ts +0 -218
  241. package/src/web/suite-header/viking-suite-header-wc.ts +0 -729
  242. package/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +0 -234
  243. package/src/web/theme-toggle/viking-theme-toggle-wc.ts +0 -139
  244. package/src/web/types.ts +0 -37
  245. package/src/web/web-components.spec.ts +0 -297
  246. package/src/web-components/index.ts +0 -1
@@ -1,857 +0,0 @@
1
- // ============================================================================
2
- // Viking-UI Static Primitives — framework-agnostic CSS classes
3
- // Use in Astro, Django, Swagger, and static HTML alongside design tokens.
4
- // Angular apps should prefer viking-* components; these classes mirror their visuals.
5
- // ============================================================================
6
-
7
- // Typography
8
- .viking-heading {
9
- margin: 0;
10
- font-weight: var(--viking-font-weight-bold);
11
- letter-spacing: var(--viking-letter-spacing-tight);
12
- line-height: var(--viking-line-height-tight);
13
- color: var(--viking-text);
14
- }
15
-
16
- .viking-heading-xl {
17
- font-size: clamp(var(--viking-font-size-2xl), 4vw, var(--viking-font-size-4xl));
18
- }
19
-
20
- .viking-heading-lg {
21
- font-size: var(--viking-font-size-xl);
22
- }
23
-
24
- .viking-heading-sm {
25
- font-size: var(--viking-font-size-lg);
26
- }
27
-
28
- .viking-text {
29
- margin: 0;
30
- line-height: var(--viking-line-height-relaxed);
31
- color: var(--viking-text);
32
- }
33
-
34
- .viking-text-muted {
35
- margin: 0;
36
- line-height: var(--viking-line-height-relaxed);
37
- color: var(--viking-text-muted);
38
- max-width: var(--viking-content-readable-max-width, 48rem);
39
- }
40
-
41
- .viking-label {
42
- display: block;
43
- font-size: var(--viking-font-size-xs);
44
- font-weight: var(--viking-font-weight-semibold);
45
- letter-spacing: var(--viking-letter-spacing-caps);
46
- text-transform: uppercase;
47
- color: var(--viking-text-muted);
48
- }
49
-
50
- .viking-metric {
51
- display: block;
52
- font-size: var(--viking-font-size-2xl);
53
- font-weight: var(--viking-font-weight-bold);
54
- font-variant-numeric: tabular-nums;
55
- color: var(--viking-text);
56
- }
57
-
58
- // Badge
59
- .viking-badge {
60
- display: inline-flex;
61
- align-items: center;
62
- gap: var(--viking-space-half);
63
- padding: var(--viking-space-half) var(--viking-space-1);
64
- font-size: var(--viking-font-size-xs);
65
- font-weight: var(--viking-font-weight-semibold);
66
- letter-spacing: var(--viking-letter-spacing-wide);
67
- border-radius: var(--viking-radius-pill);
68
- border: 1px solid var(--viking-border);
69
- background: var(--viking-surface-alt);
70
- color: var(--viking-text);
71
- white-space: nowrap;
72
- }
73
-
74
- .viking-badge-accent {
75
- background: var(--viking-accent);
76
- border-color: color-mix(in srgb, var(--viking-accent) 80%, var(--viking-black));
77
- color: var(--viking-accent-content);
78
- }
79
-
80
- .viking-badge-success {
81
- background: color-mix(in srgb, var(--viking-success) 18%, var(--viking-surface));
82
- border-color: color-mix(in srgb, var(--viking-success) 40%, transparent);
83
- color: var(--viking-success);
84
- }
85
-
86
- .viking-badge-warning {
87
- background: color-mix(in srgb, var(--viking-warning) 18%, var(--viking-surface));
88
- border-color: color-mix(in srgb, var(--viking-warning) 40%, transparent);
89
- color: var(--viking-warning);
90
- }
91
-
92
- .viking-badge-danger {
93
- background: color-mix(in srgb, var(--viking-danger) 18%, var(--viking-surface));
94
- border-color: color-mix(in srgb, var(--viking-danger) 40%, transparent);
95
- color: var(--viking-danger);
96
- }
97
-
98
- .viking-badge-subtle {
99
- background: var(--viking-surface-alt);
100
- color: var(--viking-text-muted);
101
- font-size: var(--viking-font-size-2xs);
102
- }
103
-
104
- // Callout
105
- .viking-callout-static {
106
- padding: var(--viking-space-2);
107
- border-radius: var(--viking-radius);
108
- border: 1px solid var(--viking-border);
109
- background: var(--viking-surface-alt);
110
- }
111
-
112
- .viking-callout-static strong {
113
- display: block;
114
- margin-bottom: var(--viking-space-half);
115
- }
116
-
117
- .viking-callout-static p {
118
- margin: 0;
119
- font-size: var(--viking-font-size-sm);
120
- color: var(--viking-text-muted);
121
- }
122
-
123
- .viking-callout-info {
124
- border-color: color-mix(in srgb, var(--viking-accent) 35%, var(--viking-border));
125
- background: color-mix(in srgb, var(--viking-accent) 8%, var(--viking-surface));
126
- }
127
-
128
- .viking-callout-warning {
129
- border-color: color-mix(in srgb, var(--viking-warning) 35%, var(--viking-border));
130
- background: color-mix(in srgb, var(--viking-warning) 8%, var(--viking-surface));
131
- }
132
-
133
- .viking-callout-success {
134
- border-color: color-mix(in srgb, var(--viking-success) 35%, var(--viking-border));
135
- background: color-mix(in srgb, var(--viking-success) 8%, var(--viking-surface));
136
- }
137
-
138
- .viking-callout-danger {
139
- border-color: color-mix(in srgb, var(--viking-danger) 35%, var(--viking-border));
140
- background: color-mix(in srgb, var(--viking-danger) 8%, var(--viking-surface));
141
- }
142
-
143
- // Progress
144
- .viking-progress {
145
- width: 100%;
146
- height: var(--viking-space-1);
147
- border-radius: var(--viking-radius-pill);
148
- background: var(--viking-surface-alt);
149
- overflow: hidden;
150
- }
151
-
152
- .viking-progress-bar {
153
- height: 100%;
154
- background: var(--viking-accent);
155
- border-radius: inherit;
156
- transition: width var(--viking-duration) var(--viking-ease-out);
157
- }
158
-
159
- .viking-progress-indeterminate .viking-progress-bar {
160
- width: 40%;
161
- animation: viking-progress-slide 1.2s ease-in-out infinite;
162
- }
163
-
164
- @keyframes viking-progress-slide {
165
- 0% {
166
- transform: translateX(-100%);
167
- }
168
- 100% {
169
- transform: translateX(350%);
170
- }
171
- }
172
-
173
- // Skeleton
174
- .viking-skeleton-row {
175
- display: flex;
176
- align-items: center;
177
- gap: var(--viking-space-2);
178
- }
179
-
180
- .viking-skeleton-lines {
181
- flex: 1;
182
- display: flex;
183
- flex-direction: column;
184
- gap: var(--viking-space-1);
185
- }
186
-
187
- .viking-skeleton {
188
- background: linear-gradient(
189
- 90deg,
190
- var(--viking-surface-alt) 25%,
191
- var(--viking-surface-raised) 50%,
192
- var(--viking-surface-alt) 75%
193
- );
194
- background-size: 200% 100%;
195
- animation: viking-shimmer 1.5s ease-in-out infinite;
196
- border-radius: var(--viking-radius-sm);
197
- }
198
-
199
- .viking-skeleton-circle {
200
- width: 3rem;
201
- height: 3rem;
202
- border-radius: 50%;
203
- flex-shrink: 0;
204
- }
205
-
206
- .viking-skeleton-line {
207
- height: 0.75rem;
208
- }
209
-
210
- .viking-skeleton-line-short {
211
- width: 60%;
212
- }
213
-
214
- @keyframes viking-shimmer {
215
- 0% {
216
- background-position: 200% 0;
217
- }
218
- 100% {
219
- background-position: -200% 0;
220
- }
221
- }
222
-
223
- // Forms (static)
224
- .viking-checkbox-label {
225
- display: inline-flex;
226
- align-items: center;
227
- gap: var(--viking-space-1);
228
- cursor: pointer;
229
- font-size: var(--viking-font-size-sm);
230
- min-height: var(--viking-touch-target-min, 44px);
231
- }
232
-
233
- .viking-checkbox-label input {
234
- width: 1.125rem;
235
- height: 1.125rem;
236
- accent-color: var(--viking-accent);
237
- }
238
-
239
- .viking-select-native {
240
- width: 100%;
241
- min-height: var(--viking-control-height, 40px);
242
- padding: 0 var(--viking-space-2);
243
- border: 1px solid var(--viking-border);
244
- border-radius: var(--viking-radius);
245
- background: var(--viking-surface);
246
- color: var(--viking-text);
247
- font-family: inherit;
248
- font-size: var(--viking-font-size-sm);
249
- }
250
-
251
- .viking-select-native:focus-visible {
252
- outline: var(--viking-ring-width, 2px) solid var(--viking-ring);
253
- outline-offset: var(--viking-ring-offset, 2px);
254
- }
255
-
256
- // Table
257
- .viking-table-wrap {
258
- overflow-x: auto;
259
- width: 100%;
260
- }
261
-
262
- .viking-table {
263
- width: 100%;
264
- border-collapse: collapse;
265
- font-size: var(--viking-font-size-sm);
266
- }
267
-
268
- .viking-table th,
269
- .viking-table td {
270
- padding: var(--viking-space-1) var(--viking-space-2);
271
- text-align: left;
272
- border-bottom: 1px solid var(--viking-border);
273
- }
274
-
275
- .viking-table th {
276
- color: var(--viking-text-muted);
277
- font-weight: var(--viking-font-weight-semibold);
278
- }
279
-
280
- // Tabs
281
- .viking-tabs {
282
- display: inline-flex;
283
- gap: var(--viking-space-half);
284
- padding: var(--viking-space-half);
285
- border: 1px solid var(--viking-border);
286
- border-radius: var(--viking-radius);
287
- background: var(--viking-surface-alt);
288
- }
289
-
290
- .viking-tab {
291
- padding: var(--viking-space-1) var(--viking-space-2);
292
- border: none;
293
- border-radius: var(--viking-radius-sm);
294
- background: transparent;
295
- color: var(--viking-text-muted);
296
- font-size: var(--viking-font-size-sm);
297
- font-weight: var(--viking-font-weight-medium);
298
- cursor: pointer;
299
- min-height: var(--viking-touch-target-min, 44px);
300
- }
301
-
302
- .viking-tab-active {
303
- background: var(--viking-surface);
304
- color: var(--viking-text);
305
- box-shadow: var(--viking-shadow-xs);
306
- }
307
-
308
- .viking-tab:focus-visible {
309
- outline: var(--viking-ring-width, 2px) solid var(--viking-ring);
310
- outline-offset: var(--viking-ring-offset, 2px);
311
- }
312
-
313
- // Page header (static HUD)
314
- .viking-page-header-static {
315
- display: flex;
316
- flex-direction: column;
317
- gap: var(--viking-space-2);
318
- padding: var(--viking-space-4);
319
- border: 1px solid var(--viking-border);
320
- border-radius: var(--viking-radius-lg);
321
- background: var(--viking-surface-recipe, var(--viking-surface));
322
- box-shadow: var(--viking-shadow-md);
323
- }
324
-
325
- // Kbd
326
- .viking-kbd-static {
327
- display: inline-block;
328
- font-family: inherit;
329
- font-size: calc(var(--viking-font-size) * 0.75);
330
- padding: 2px 6px;
331
- border-radius: calc(var(--viking-radius) / 2);
332
- border: 1px solid var(--viking-border);
333
- background: var(--viking-surface-alt);
334
- }
335
-
336
- // Divider
337
- .viking-divider {
338
- display: flex;
339
- align-items: center;
340
- gap: var(--viking-space-2);
341
- color: var(--viking-text-muted);
342
- font-size: var(--viking-font-size-xs);
343
- }
344
-
345
- .viking-divider::before,
346
- .viking-divider::after {
347
- content: '';
348
- flex: 1;
349
- height: 1px;
350
- background: var(--viking-border);
351
- }
352
-
353
- // Demo layout helpers (showcase/docs only — safe on any surface)
354
- .viking-demo-row {
355
- display: flex;
356
- flex-wrap: wrap;
357
- align-items: center;
358
- gap: var(--viking-space-2);
359
- }
360
-
361
- .viking-demo-row-stack {
362
- flex-direction: column;
363
- align-items: stretch;
364
- }
365
-
366
- // Breadcrumbs
367
- .viking-breadcrumbs-static {
368
- font-size: var(--viking-font-size-sm);
369
- }
370
-
371
- .viking-breadcrumbs-list {
372
- display: flex;
373
- flex-wrap: wrap;
374
- align-items: center;
375
- gap: var(--viking-space-1);
376
- margin: 0;
377
- padding: 0;
378
- list-style: none;
379
- }
380
-
381
- .viking-breadcrumbs-list li:not(:last-child)::after {
382
- content: '/';
383
- margin-left: var(--viking-space-1);
384
- color: var(--viking-text-muted);
385
- }
386
-
387
- .viking-breadcrumbs-list a {
388
- color: var(--viking-accent);
389
- text-decoration: none;
390
- }
391
-
392
- .viking-breadcrumbs-list a:hover {
393
- text-decoration: underline;
394
- }
395
-
396
- // Pagination
397
- .viking-pagination-static {
398
- display: flex;
399
- flex-wrap: wrap;
400
- align-items: center;
401
- gap: var(--viking-space-2);
402
- }
403
-
404
- // Switch (static)
405
- .viking-switch-static {
406
- display: inline-flex;
407
- align-items: center;
408
- gap: var(--viking-space-1);
409
- cursor: pointer;
410
- font-size: var(--viking-font-size-sm);
411
- min-height: var(--viking-touch-target-min, 44px);
412
- }
413
-
414
- .viking-switch-static input {
415
- width: 2.5rem;
416
- height: 1.375rem;
417
- accent-color: var(--viking-accent);
418
- }
419
-
420
- // Kanban demo
421
- .viking-kanban-demo {
422
- display: flex;
423
- flex-wrap: wrap;
424
- gap: var(--viking-space-2);
425
- }
426
-
427
- .viking-kanban-col {
428
- flex: 1;
429
- min-width: 10rem;
430
- padding: var(--viking-space-2);
431
- display: flex;
432
- flex-direction: column;
433
- gap: var(--viking-space-1);
434
- }
435
-
436
- .viking-kanban-card {
437
- padding: var(--viking-space-1) var(--viking-space-2);
438
- border: 1px solid var(--viking-border);
439
- border-radius: var(--viking-radius-sm);
440
- background: var(--viking-surface-alt);
441
- font-size: var(--viking-font-size-sm);
442
- }
443
-
444
- // Uptime bar demo
445
- .viking-uptime-demo {
446
- display: flex;
447
- flex-direction: column;
448
- gap: var(--viking-space-1);
449
- max-width: 20rem;
450
- }
451
-
452
- .viking-uptime-segments {
453
- display: flex;
454
- gap: 2px;
455
- height: var(--viking-space-2);
456
- }
457
-
458
- .viking-uptime-seg {
459
- flex: 1;
460
- border-radius: 1px;
461
- min-width: 4px;
462
- }
463
-
464
- .viking-uptime-up {
465
- background: var(--viking-success);
466
- }
467
-
468
- .viking-uptime-degraded {
469
- background: var(--viking-warning);
470
- }
471
-
472
- .viking-uptime-down {
473
- background: var(--viking-danger);
474
- }
475
-
476
- // Sheet demo
477
- .viking-sheet-demo {
478
- max-width: 20rem;
479
- padding: var(--viking-space-2);
480
- }
481
-
482
- // Wizard demo
483
- .viking-wizard-demo {
484
- max-width: 24rem;
485
- padding: var(--viking-space-2);
486
- display: flex;
487
- flex-direction: column;
488
- gap: var(--viking-space-2);
489
- }
490
-
491
- @media (prefers-reduced-motion: reduce) {
492
- .viking-skeleton,
493
- .viking-progress-indeterminate .viking-progress-bar {
494
- animation: none;
495
- }
496
- }
497
-
498
- // ── Parity static primitives (showcase demos) ─────────────────────────────
499
-
500
- .viking-hud-panel {
501
- display: flex;
502
- flex-direction: column;
503
- gap: var(--viking-space-1);
504
- padding: var(--viking-card-padding);
505
- border: 1px solid var(--viking-border-strong);
506
- border-radius: var(--viking-radius-lg);
507
- background: var(--viking-surface-recipe, var(--viking-surface));
508
- box-shadow: var(--viking-shadow-md);
509
- max-width: 20rem;
510
- }
511
-
512
- .viking-avatar-static {
513
- display: inline-flex;
514
- align-items: center;
515
- justify-content: center;
516
- width: 2.5rem;
517
- height: 2.5rem;
518
- border-radius: 50%;
519
- border: 1px solid var(--viking-border);
520
- background: var(--viking-surface-alt);
521
- font-size: var(--viking-font-size-xs);
522
- font-weight: var(--viking-font-weight-bold);
523
- color: var(--viking-text);
524
- }
525
-
526
- .viking-avatar-accent {
527
- background: var(--viking-accent-soft);
528
- border-color: var(--viking-accent);
529
- color: var(--viking-accent);
530
- }
531
-
532
- .viking-empty-state-static {
533
- display: flex;
534
- flex-direction: column;
535
- align-items: center;
536
- gap: var(--viking-space-2);
537
- padding: var(--viking-space-4);
538
- text-align: center;
539
- border: 1px dashed var(--viking-border);
540
- border-radius: var(--viking-radius-lg);
541
- max-width: 24rem;
542
- }
543
-
544
- .viking-spinner-static {
545
- display: inline-block;
546
- width: 1.25rem;
547
- height: 1.25rem;
548
- border: 2px solid var(--viking-border);
549
- border-top-color: var(--viking-accent);
550
- border-radius: 50%;
551
- animation: viking-spinner-spin 0.8s linear infinite;
552
- }
553
-
554
- @keyframes viking-spinner-spin {
555
- to {
556
- transform: rotate(360deg);
557
- }
558
- }
559
-
560
- .viking-loading-overlay-demo {
561
- display: flex;
562
- flex-direction: column;
563
- align-items: center;
564
- gap: var(--viking-space-2);
565
- padding: var(--viking-space-3);
566
- max-width: 20rem;
567
- }
568
-
569
- .viking-separator-static {
570
- border: 0;
571
- border-top: 1px solid var(--viking-border);
572
- margin: var(--viking-space-1) 0;
573
- }
574
-
575
- .viking-icon-badge-static {
576
- display: inline-flex;
577
- align-items: center;
578
- justify-content: center;
579
- width: var(--viking-icon-badge-size, var(--viking-space-6));
580
- height: var(--viking-icon-badge-size, var(--viking-space-6));
581
- padding: var(--viking-icon-badge-padding, var(--viking-space-half));
582
- box-sizing: border-box;
583
- border-radius: var(--viking-radius-lg);
584
- border: none;
585
- background: var(--viking-accent-soft);
586
- color: var(--viking-accent-strong);
587
- box-shadow: var(--viking-shadow-sm);
588
- font-size: var(--viking-font-size-sm);
589
- }
590
-
591
- .viking-textarea-static {
592
- width: 100%;
593
- min-height: 5rem;
594
- padding: var(--viking-space-2);
595
- border: 1px solid var(--viking-border);
596
- border-radius: var(--viking-radius);
597
- background: var(--viking-surface);
598
- color: var(--viking-text);
599
- font-family: inherit;
600
- font-size: var(--viking-font-size-sm);
601
- resize: vertical;
602
- }
603
-
604
- .viking-textarea-static:focus-visible {
605
- outline: var(--viking-ring-width) solid var(--viking-ring);
606
- outline-offset: var(--viking-ring-offset);
607
- }
608
-
609
- .viking-radio-static {
610
- border: none;
611
- padding: 0;
612
- margin: 0;
613
- display: flex;
614
- flex-direction: column;
615
- gap: var(--viking-space-1);
616
- }
617
-
618
- .viking-radio-static label {
619
- display: inline-flex;
620
- align-items: center;
621
- gap: var(--viking-space-1);
622
- font-size: var(--viking-font-size-sm);
623
- min-height: var(--viking-touch-target-min, 44px);
624
- }
625
-
626
- .viking-slider-static {
627
- width: 100%;
628
- accent-color: var(--viking-accent);
629
- }
630
-
631
- .viking-otp-static {
632
- display: flex;
633
- gap: var(--viking-space-1);
634
- }
635
-
636
- .viking-otp-static input {
637
- width: 2.5rem;
638
- height: 2.5rem;
639
- text-align: center;
640
- border: 1px solid var(--viking-border);
641
- border-radius: var(--viking-radius);
642
- background: var(--viking-surface);
643
- color: var(--viking-text);
644
- font-size: var(--viking-font-size-lg);
645
- }
646
-
647
- .viking-file-upload-static {
648
- display: flex;
649
- flex-direction: column;
650
- align-items: center;
651
- gap: var(--viking-space-2);
652
- text-align: center;
653
- }
654
-
655
- .viking-pillbox-static {
656
- display: flex;
657
- flex-wrap: wrap;
658
- align-items: center;
659
- gap: var(--viking-space-1);
660
- padding: var(--viking-space-1);
661
- border: 1px solid var(--viking-border);
662
- border-radius: var(--viking-radius);
663
- background: var(--viking-surface-alt);
664
- }
665
-
666
- .viking-gauge-demo,
667
- .viking-ring-gauge-demo {
668
- display: flex;
669
- flex-direction: column;
670
- align-items: center;
671
- gap: var(--viking-space-1);
672
- }
673
-
674
- .viking-chart-empty-static {
675
- text-align: center;
676
- }
677
-
678
- .viking-status-metric-row {
679
- display: flex;
680
- flex-wrap: wrap;
681
- align-items: center;
682
- gap: var(--viking-space-2);
683
- padding: var(--viking-space-2);
684
- border: 1px solid var(--viking-border);
685
- border-radius: var(--viking-radius);
686
- background: var(--viking-surface-alt);
687
- }
688
-
689
- .viking-bar-static {
690
- display: flex;
691
- flex-direction: column;
692
- gap: var(--viking-space-half);
693
- max-width: 16rem;
694
- }
695
-
696
- .viking-bar-track {
697
- width: 100%;
698
- height: var(--viking-space-1);
699
- border-radius: var(--viking-radius-pill);
700
- background: var(--viking-surface-alt);
701
- overflow: hidden;
702
- }
703
-
704
- .viking-bar-fill {
705
- height: 100%;
706
- background: var(--viking-accent);
707
- border-radius: inherit;
708
- }
709
-
710
- .viking-nav-menu-static,
711
- .viking-sidebar-nav-static {
712
- display: flex;
713
- flex-direction: column;
714
- gap: var(--viking-space-half);
715
- max-width: 14rem;
716
- }
717
-
718
- .viking-nav-item-static,
719
- .viking-sidebar-nav-item {
720
- display: block;
721
- padding: var(--viking-space-1) var(--viking-space-2);
722
- border-radius: var(--viking-radius-sm);
723
- color: var(--viking-text-muted);
724
- text-decoration: none;
725
- font-size: var(--viking-font-size-sm);
726
- }
727
-
728
- .viking-nav-item-static.is-active,
729
- .viking-sidebar-nav-item.is-active {
730
- background: var(--viking-accent-soft);
731
- color: var(--viking-accent);
732
- font-weight: var(--viking-font-weight-semibold);
733
- }
734
-
735
- .viking-menubar-static {
736
- display: inline-flex;
737
- gap: var(--viking-space-half);
738
- padding: var(--viking-space-half);
739
- border: 1px solid var(--viking-border);
740
- border-radius: var(--viking-radius);
741
- background: var(--viking-surface-alt);
742
- }
743
-
744
- .viking-command-static {
745
- display: flex;
746
- flex-direction: column;
747
- gap: var(--viking-space-1);
748
- }
749
-
750
- .viking-accordion-static {
751
- padding: var(--viking-space-2);
752
- border: 1px solid var(--viking-border);
753
- border-radius: var(--viking-radius);
754
- background: var(--viking-surface-alt);
755
- }
756
-
757
- .viking-accordion-static summary {
758
- cursor: pointer;
759
- list-style: none;
760
- }
761
-
762
- .viking-accordion-static summary::-webkit-details-marker {
763
- display: none;
764
- }
765
-
766
- .viking-timeline-static {
767
- margin: 0;
768
- padding: 0 0 0 var(--viking-space-3);
769
- border-left: 2px solid var(--viking-border);
770
- list-style: none;
771
- display: flex;
772
- flex-direction: column;
773
- gap: var(--viking-space-2);
774
- }
775
-
776
- .viking-toggle-group-static {
777
- display: inline-flex;
778
- gap: var(--viking-space-half);
779
- padding: var(--viking-space-half);
780
- border: 1px solid var(--viking-border);
781
- border-radius: var(--viking-radius);
782
- background: var(--viking-surface-alt);
783
- }
784
-
785
- .viking-fab-static {
786
- position: absolute;
787
- right: var(--viking-space-2);
788
- bottom: var(--viking-space-2);
789
- display: inline-flex;
790
- align-items: center;
791
- justify-content: center;
792
- width: 3rem;
793
- height: 3rem;
794
- border: 1px solid var(--viking-border-strong);
795
- border-radius: 50%;
796
- background: var(--viking-accent);
797
- color: var(--viking-accent-content);
798
- font-size: var(--viking-font-size-xl);
799
- cursor: pointer;
800
- box-shadow: var(--viking-shadow-md);
801
- }
802
-
803
- .viking-scroll-area-static {
804
- max-height: 8rem;
805
- overflow-y: auto;
806
- padding: var(--viking-space-2);
807
- border: 1px solid var(--viking-border);
808
- border-radius: var(--viking-radius);
809
- background: var(--viking-surface-alt);
810
- }
811
-
812
- .viking-button-group-static {
813
- display: inline-flex;
814
- flex-wrap: wrap;
815
- gap: var(--viking-space-half);
816
- }
817
-
818
- .viking-whitepaper-cta-static {
819
- display: flex;
820
- flex-direction: column;
821
- gap: var(--viking-space-2);
822
- max-width: 24rem;
823
- }
824
-
825
- .viking-search-result-static {
826
- display: flex;
827
- flex-direction: column;
828
- gap: var(--viking-space-half);
829
- padding: var(--viking-space-1) var(--viking-space-2);
830
- border-radius: var(--viking-radius);
831
- border: 1px solid transparent;
832
- text-decoration: none;
833
- color: inherit;
834
- transition: var(--viking-transition-interactive);
835
- }
836
-
837
- .viking-search-result-static:hover {
838
- background: color-mix(in srgb, var(--viking-accent) 5%, transparent);
839
- border-color: color-mix(in srgb, var(--viking-accent) 30%, transparent);
840
- }
841
-
842
- .viking-search-result-title {
843
- font-size: var(--viking-font-size-sm);
844
- font-weight: var(--viking-font-weight-semibold);
845
- color: var(--viking-text);
846
- }
847
-
848
- .viking-search-result-snippet {
849
- font-size: var(--viking-font-size-xs);
850
- color: var(--viking-text-muted);
851
- }
852
-
853
- @media (prefers-reduced-motion: reduce) {
854
- .viking-spinner-static {
855
- animation: none;
856
- }
857
- }