@dataengineeringformachinelearning/viking-ui 4.0.4 → 4.0.6

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,748 +0,0 @@
1
-
2
- // Shared tokens, navbar, footer, page shell: /assets/viking-ui.css (@deml/viking-ui)
3
-
4
- // ====================== LEAFLET ======================
5
-
6
- pre[class*='language-'] {
7
- background-color: var(--viking-charcoal-900) !important;
8
- border: 1px solid var(--border);
9
- border-radius: var(--border-radius-md);
10
- padding: var(--space-3);
11
- margin: var(--space-4) 0;
12
- box-shadow: none;
13
- tab-size: 4;
14
- }
15
-
16
- code[class*='language-'] {
17
- font-size: 1rem;
18
- line-height: 1.65;
19
- color: var(--white) !important;
20
- }
21
-
22
- // Inter variable font loaded via viking-ui.css (self-hosted woff2).
23
-
24
- // ====================== GLOBAL LAYOUT ======================
25
- *,
26
- ::before,
27
- ::after {
28
- box-sizing: border-box;
29
- }
30
-
31
- pre,
32
- pre code {
33
- white-space: pre-wrap !important;
34
- word-wrap: break-word !important;
35
- word-break: break-word !important;
36
- max-width: 100%;
37
- }
38
-
39
- html,
40
- body {
41
- height: 100%;
42
- margin: 0;
43
- padding: 0;
44
- overflow-x: hidden; /* Guarantee no horizontal overflow */
45
- max-width: 100vw;
46
- }
47
-
48
- app-root {
49
- display: flex;
50
- flex-direction: column;
51
- min-height: 100vh;
52
- }
53
-
54
- body {
55
- background-color: var(--bg-color);
56
- color: var(--text-color);
57
- font-family: var(--viking-font-family);
58
- font-size: var(--base-font-size, 16px);
59
- line-height: 1.65;
60
- -webkit-font-smoothing: antialiased;
61
- -moz-osx-font-smoothing: grayscale;
62
- transition:
63
- background-color 0.3s,
64
- color 0.3s;
65
- }
66
-
67
- html[data-theme='light'] body {
68
- background-color: var(--bg-color);
69
- }
70
-
71
- // ====================== TYPOGRAPHY & READABILITY ======================
72
- p {
73
- margin-bottom: var(--space-3);
74
- }
75
-
76
- h1,
77
- h2,
78
- h3,
79
- h4,
80
- h5,
81
- h6 {
82
- line-height: 1.25;
83
- margin-top: var(--space-4);
84
- margin-bottom: var(--space-2);
85
- font-weight: 600;
86
- letter-spacing: var(--header-letter-spacing);
87
- }
88
-
89
- h1 {
90
- font-size: clamp(1.75rem, 5vw, 2.5rem);
91
- }
92
- h2 {
93
- font-size: clamp(1.5rem, 4vw, 2rem);
94
- }
95
- h3 {
96
- font-size: 1.5rem;
97
- letter-spacing: 0.05em;
98
- text-transform: uppercase;
99
- }
100
-
101
- ul,
102
- ol {
103
- margin-bottom: var(--space-3);
104
- padding-left: var(--space-3);
105
- }
106
-
107
- li {
108
- margin-bottom: var(--space-1);
109
- }
110
-
111
- a:not(.viking-button):not(.viking-btn):not(.cta-button):not(.nav-item):not(.nav-btn):not(.auth-btn):not(.mobile-auth-btn):not(.mobile-nav-btn):not(.integration-link):not(.integration-logo-item) {
112
- color: var(--link-color);
113
- font-weight: 500;
114
- text-decoration: none;
115
- border-bottom: 1px solid transparent; /* Prevents layout shift */
116
- box-shadow: none !important;
117
- text-shadow: none !important;
118
- transition:
119
- border-bottom-color 0.2s ease,
120
- color 0.2s ease;
121
- }
122
-
123
- a:not(.viking-button):not(.viking-btn):not(.cta-button):not(.nav-item):not(.nav-btn):not(.auth-btn):not(.mobile-auth-btn):not(.mobile-nav-btn):not(.integration-link):not(.integration-logo-item):hover,
124
- a:not(.viking-button):not(.viking-btn):not(.cta-button):not(.nav-item):not(.nav-btn):not(.auth-btn):not(.mobile-auth-btn):not(.mobile-nav-btn):not(.integration-link):not(.integration-logo-item):focus-visible {
125
- color: var(--link-hover-color);
126
- text-decoration: none;
127
- border-bottom-color: var(--link-hover-color); /* WCAG requirement: non-color hover indicator */
128
- }
129
-
130
- // ====================== INLINE CODE ======================
131
- :not(pre) > code {
132
- background-color: var(--color-dark-grey-btn-bg);
133
- padding: 0.1em 0.35em;
134
- border-radius: 4px;
135
- font-size: 0.875em;
136
- line-height: inherit;
137
- color: var(--text-muted);
138
- white-space: normal;
139
- vertical-align: baseline;
140
- }
141
-
142
- // ====================== MARKDOWN COMPONENT ======================
143
- app-page {
144
- display: block;
145
- margin-top: 24px;
146
- }
147
-
148
- main.main {
149
- padding: var(--viking-space-2);
150
- }
151
-
152
- @media (min-width: 481px) {
153
- main.main {
154
- padding: var(--viking-space-8) var(--viking-space-3);
155
- }
156
- }
157
-
158
- @media (min-width: 768px) {
159
- main.main {
160
- padding: var(--viking-space-9) var(--viking-space-4);
161
- }
162
- }
163
-
164
- /* Global Layout Containers (Moved from app.scss for ViewEncapsulation) */
165
- .landing-container-global {
166
- position: relative;
167
- min-height: calc(100vh - 64px);
168
- display: flex;
169
- flex-direction: column;
170
- align-items: center;
171
- justify-content: center;
172
- padding: 16px;
173
- margin-top: -64px;
174
- padding-top: 72px;
175
- width: 100%;
176
- box-sizing: border-box;
177
-
178
- @media (min-width: 768px) {
179
- padding: 32px;
180
- padding-top: 72px;
181
- }
182
- }
183
-
184
- .dashboard-container {
185
- display: flex;
186
- flex-direction: column;
187
- flex: 1;
188
- justify-content: flex-start;
189
- padding-top: 16px;
190
- padding-bottom: 16px;
191
- width: 100%;
192
- box-sizing: border-box;
193
-
194
- @media (min-width: 768px) {
195
- padding-top: 72px;
196
- padding-bottom: 72px;
197
- }
198
- }
199
-
200
- .page-content {
201
- position: relative;
202
- z-index: 10;
203
- width: 100%;
204
- max-width: var(--container-max-width);
205
- padding: 16px;
206
- margin: 0 auto;
207
- box-sizing: border-box;
208
- background-color: var(--card-bg);
209
- border: 1px solid var(--border);
210
- border-radius: var(--border-radius-lg);
211
- box-shadow: var(--shadow-sm);
212
- }
213
-
214
- @media (min-width: 768px) {
215
- .page-content {
216
- padding: 56px;
217
- }
218
- }
219
-
220
- .dashboard-content-area {
221
- flex: 1;
222
- padding: var(--viking-space-3, 24px) 0 var(--viking-space-4, 32px);
223
- position: relative;
224
- z-index: 1;
225
- box-sizing: border-box;
226
-
227
- @media (min-width: 768px) {
228
- padding-top: var(--viking-space-4, 32px);
229
- }
230
- }
231
-
232
- .content-wrapper {
233
- max-width: var(--container-max-width, 1260px);
234
- margin: 0 auto;
235
- width: 100%;
236
- display: flex;
237
- flex-direction: column;
238
- gap: var(--grid-gap);
239
-
240
- &.full-width {
241
- max-width: 100%;
242
- }
243
- }
244
-
245
- // ====================== GLOBAL ERROR TOAST ======================
246
- #global-error-toast {
247
- position: fixed;
248
- bottom: 24px;
249
- right: 24px;
250
- z-index: 99999;
251
- font-family: var(--viking-font-family);
252
- max-width: 400px;
253
- animation: slideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
254
-
255
- /* Default Dark Theme variables */
256
- --toast-bg: var(--color-surface);
257
- --toast-border: 1px solid var(--color-error);
258
- --toast-text: var(--color-error);
259
- --toast-title: var(--color-on-surface);
260
- --toast-icon: var(--color-error);
261
- --toast-close: var(--text-muted);
262
- --toast-close-hover: var(--color-error);
263
- --toast-shadow: var(--shadow-hover);
264
- }
265
-
266
- html[data-theme='light'] #global-error-toast {
267
- /* Light Theme variables */
268
- --toast-bg: var(--color-surface);
269
- --toast-border: 1px solid var(--color-error);
270
- --toast-text: var(--color-error);
271
- --toast-title: var(--color-on-surface);
272
- --toast-icon: var(--color-error);
273
- --toast-close: var(--text-muted);
274
- --toast-close-hover: var(--color-error);
275
- --toast-shadow: var(--shadow-hover);
276
- }
277
-
278
- #global-error-toast .toast-container {
279
- background: var(--toast-bg);
280
- border: var(--toast-border);
281
- color: var(--toast-text);
282
- padding: 16px 16px;
283
- border-radius: var(--border-radius-md);
284
- box-shadow: var(--toast-shadow);
285
- display: flex;
286
- align-items: center;
287
- gap: 8px;
288
- transition: all 0.3s ease;
289
- }
290
-
291
- #global-error-toast .toast-icon {
292
- width: 16px;
293
- height: 16px;
294
- flex-shrink: 0;
295
- color: var(--toast-icon);
296
- }
297
-
298
- #global-error-toast .toast-content {
299
- flex-grow: 1;
300
- }
301
-
302
- #global-error-toast .toast-title {
303
- display: block;
304
- font-size: var(--ui-font-size, 14px);
305
- font-weight: 600;
306
- margin-bottom: 0px;
307
- color: var(--toast-title);
308
- }
309
-
310
- #global-error-toast .toast-message {
311
- font-size: var(--base-font-size, 16px);
312
- opacity: 0.9;
313
- line-height: 1.4;
314
- }
315
-
316
- #global-error-toast .toast-close {
317
- background: none;
318
- border: none;
319
- color: var(--toast-close);
320
- cursor: pointer;
321
- font-size: 20px;
322
- line-height: 1;
323
- padding: 0 8px;
324
- margin-left: 8px;
325
- opacity: 0.7;
326
- transition:
327
- opacity 0.2s,
328
- color 0.2s;
329
- }
330
-
331
- #global-error-toast .toast-close:hover {
332
- opacity: 1;
333
- color: var(--toast-close-hover);
334
- }
335
-
336
- @keyframes slideIn {
337
- from {
338
- transform: translateY(24px) scale(0.95);
339
- opacity: 0;
340
- }
341
- to {
342
- transform: translateY(0) scale(1);
343
- opacity: 1;
344
- }
345
- }
346
-
347
- /* Error/Offline State */
348
- .status-error-state {
349
- display: flex;
350
- flex-direction: column;
351
- align-items: center;
352
- justify-content: center;
353
- text-align: center;
354
- padding: 32px 24px;
355
- background: var(--viking-surface);
356
- border: 1px solid var(--border);
357
- border-radius: var(--border-radius-lg);
358
- position: relative;
359
- overflow: hidden;
360
- box-shadow: var(--shadow-sm);
361
- margin-top: 32px;
362
-
363
- @media (min-width: 601px) {
364
- padding: 72px 32px;
365
- }
366
-
367
- .error-state-icon {
368
- font-size: 72px;
369
- width: 72px;
370
- height: 72px;
371
- color: var(--text-muted);
372
- margin-bottom: 24px;
373
- opacity: 0.6;
374
- }
375
-
376
- .error-title {
377
- margin: 0 0 8px;
378
- font-size: 1.5rem;
379
- font-weight: 700;
380
- color: var(--text-color);
381
- letter-spacing: -0.01em;
382
- }
383
-
384
- .error-subtitle {
385
- margin: 0 0 32px;
386
- font-size: 1rem;
387
- line-height: 1.6;
388
- color: var(--text-muted);
389
- max-width: 416px;
390
- }
391
-
392
- .retry-btn {
393
- font-weight: 700 !important;
394
- padding: 8px 24px !important;
395
- border-radius: var(--border-radius-sm) !important;
396
- box-shadow: var(--shadow-sm) !important;
397
- transition: all 0.2s ease !important;
398
-
399
- &:hover {
400
- transform: translateY(-2px);
401
- box-shadow: var(--shadow-md) !important;
402
- opacity: 0.95;
403
- }
404
- }
405
- }
406
-
407
- .btn-spinner {
408
- display: inline-block;
409
- width: 16px;
410
- height: 16px;
411
- border: 2px solid color-mix(in srgb, var(--viking-white) 30%, transparent);
412
- border-radius: 50%;
413
- border-top-color: currentColor;
414
- animation: spin 0.8s linear infinite;
415
- vertical-align: middle;
416
- margin-right: 8px;
417
- }
418
-
419
- @keyframes spin {
420
- to {
421
- transform: rotate(360deg);
422
- }
423
- }
424
-
425
- // Eliminate border-radius on elements that only have single-sided borders (top, bottom, left, or right)
426
- // to avoid curved corners on straight dividing lines.
427
- .hud-header,
428
- .panel-header,
429
- .filter-bar,
430
- .telemetry-bar,
431
- .video-flat-info,
432
- .sidebar-brand,
433
- .sidebar-footer,
434
- .dashboard-sidebar,
435
- .vuln-profile-header,
436
- .page-content:not([style*='border']) {
437
- border-radius: 0 !important;
438
- }
439
-
440
- // ====================== HUD HEADER STYLING ======================
441
- .hud-header {
442
- display: flex;
443
- justify-content: space-between;
444
- align-items: center;
445
- padding-top: 8px;
446
- padding-bottom: 16px;
447
- border-bottom: 1px solid var(--border-layout);
448
- margin-bottom: 24px;
449
- flex-wrap: wrap;
450
- gap: 16px;
451
- }
452
-
453
- .hud-brand {
454
- display: flex;
455
- align-items: center;
456
- gap: 16px;
457
- }
458
-
459
- .hud-title {
460
- font-family: var(--viking-font-family-mono);
461
- font-size: 1.25rem;
462
- font-weight: 800;
463
- letter-spacing: 0.1em;
464
- margin: 0;
465
- color: var(--text-color);
466
- text-transform: uppercase;
467
- }
468
-
469
- .hud-subtitle {
470
- font-size: 1rem;
471
- color: var(--text-muted);
472
- margin: 8px 0 0 0;
473
- font-family: var(--viking-font-family-mono);
474
- }
475
-
476
- /* Hide floating invisible reCAPTCHA badge globally */
477
- .grecaptcha-badge {
478
- visibility: hidden !important;
479
- }
480
-
481
- /* Ensure Google reCAPTCHA challenge iframe and its parent containers are always on top of Angular Material dialogs */
482
- .grecaptcha-bubble-holder,
483
- div.grecaptcha-bubble-holder,
484
- #recaptcha-container,
485
- #firebase-recaptcha-container,
486
- iframe[src*='recaptcha'],
487
- iframe[src*='google.com/recaptcha'],
488
- body > div[style*='z-index']:has(iframe[src*='recaptcha']),
489
- body > div[style*='z-index']:has(iframe[src*='google.com/recaptcha']),
490
- body > div:has(iframe[src*='recaptcha']),
491
- body > div:has(iframe[src*='google.com/recaptcha']),
492
- body > div:has(iframe[title*='recaptcha']),
493
- body > div:has(iframe[title*='reCAPTCHA']),
494
- div[style*='z-index']:has(iframe[src*='recaptcha']),
495
- div[style*='z-index']:has(iframe[src*='google.com/recaptcha']) {
496
- z-index: 2000000000 !important;
497
- }
498
-
499
- // ====================== SECTION TAGS ======================
500
- .section-tag-row {
501
- display: flex;
502
- align-items: center;
503
- gap: 8px;
504
- margin-bottom: 8px;
505
- }
506
-
507
- .section-tag {
508
- font-family: var(--viking-font-family-mono);
509
- font-size: 1rem;
510
- font-weight: 800;
511
- color: var(--color-primary);
512
- letter-spacing: 0.15em;
513
- text-transform: uppercase;
514
- margin-bottom: 0;
515
- display: inline-block;
516
- }
517
-
518
- // ====================== SLEEK PLATFORM CONSOLE SCROLLBARS ======================
519
- ::-webkit-scrollbar {
520
- width: 8px;
521
- height: 8px;
522
- }
523
- ::-webkit-scrollbar-track {
524
- background: var(--color-background);
525
- }
526
- ::-webkit-scrollbar-thumb {
527
- background: var(--color-primary);
528
- border-radius: var(--viking-radius-pill, 999px);
529
- }
530
- ::-webkit-scrollbar-thumb:hover {
531
- background: var(--color-primary-container);
532
- }
533
-
534
- /* Machined surfaces + status pulse live in viking-ui.css (_layout-rhythm.scss) */
535
-
536
- /* ====================== SHARED DASHBOARD SHELL (marketing pages) ====================== */
537
- .dashboard-page-container {
538
- display: block;
539
- width: 100%;
540
- min-height: calc(100vh - var(--navbar-height, 64px));
541
- background-color: var(--bg-color);
542
- color: var(--text-color);
543
- overflow-x: hidden;
544
- }
545
-
546
- .dashboard-layout {
547
- position: relative;
548
- z-index: 1;
549
- display: flex;
550
- flex-direction: column;
551
- width: 100%;
552
- min-height: calc(100vh - var(--navbar-height, 64px));
553
- }
554
-
555
- .dashboard-main {
556
- flex: 1;
557
- display: flex;
558
- flex-direction: column;
559
- min-width: 0;
560
- }
561
-
562
- .mobile-chapter-select {
563
- display: block;
564
- width: 100%;
565
- margin-bottom: 16px;
566
-
567
- select {
568
- width: 100%;
569
- min-height: 44px;
570
- padding: 10px 12px;
571
- border-radius: var(--border-radius-md);
572
- border: 1px solid var(--border);
573
- background: var(--viking-surface);
574
- color: var(--text-color);
575
- font: inherit;
576
- }
577
- }
578
-
579
- .dashboard-sidebar {
580
- display: none;
581
- }
582
-
583
- @media (min-width: 901px) {
584
- .dashboard-layout {
585
- flex-direction: row;
586
- }
587
-
588
- .dashboard-sidebar {
589
- display: block;
590
- width: 280px;
591
- flex-shrink: 0;
592
- border-right: 1px solid var(--border);
593
- }
594
-
595
- .mobile-chapter-select {
596
- display: none;
597
- }
598
- }
599
-
600
- /* ====================== RESPONSIVE GRID SYSTEM ====================== */
601
- .grid-layout {
602
- display: grid;
603
- grid-template-columns: 1fr;
604
- gap: var(--grid-gap);
605
- width: 100%;
606
- }
607
-
608
- @media (min-width: 600px) {
609
- .grid-layout {
610
- grid-template-columns: repeat(2, 1fr);
611
- }
612
- }
613
-
614
- @media (min-width: 768px) {
615
- .grid-layout {
616
- grid-template-columns: repeat(12, 1fr);
617
- }
618
- }
619
-
620
- .col-span-1 {
621
- grid-column: span 1;
622
- }
623
- .col-span-2 {
624
- grid-column: span 2;
625
- }
626
- .col-span-3 {
627
- grid-column: span 3;
628
- }
629
- .col-span-4 {
630
- grid-column: span 4;
631
- }
632
-
633
- @media (min-width: 768px) {
634
- .col-span-md-1 {
635
- grid-column: span 1;
636
- }
637
- .col-span-md-2 {
638
- grid-column: span 2;
639
- }
640
- .col-span-md-3 {
641
- grid-column: span 3;
642
- }
643
- .col-span-md-4 {
644
- grid-column: span 4;
645
- }
646
- .col-span-md-5 {
647
- grid-column: span 5;
648
- }
649
- .col-span-md-6 {
650
- grid-column: span 6;
651
- }
652
- .col-span-md-7 {
653
- grid-column: span 7;
654
- }
655
- .col-span-md-8 {
656
- grid-column: span 8;
657
- }
658
- .col-span-md-9 {
659
- grid-column: span 9;
660
- }
661
- .col-span-md-10 {
662
- grid-column: span 10;
663
- }
664
- .col-span-md-11 {
665
- grid-column: span 11;
666
- }
667
- .col-span-md-12 {
668
- grid-column: span 12;
669
- }
670
- }
671
-
672
- // ====================== CUSTOM BRANDED SELECT STYLING ======================
673
- /* Enable customization for all select elements and their pickers */
674
- select,
675
- select::picker(select) {
676
- appearance: base-select;
677
- }
678
-
679
- /* Style the visible trigger button */
680
- select {
681
- font-family: var(--viking-font-family);
682
- background-color: var(--card-bg);
683
- color: var(--text-color);
684
- border: 1px solid var(--text-muted); /* WCAG 3:1 contrast for input borders */
685
- border-radius: var(--border-radius-md, 8px);
686
- padding: 16px 16px;
687
- font-size: 1rem;
688
- cursor: pointer;
689
- transition:
690
- border-color 0.2s ease,
691
- box-shadow 0.2s ease;
692
- display: flex;
693
- align-items: center;
694
- justify-content: space-between;
695
- gap: 16px;
696
- }
697
-
698
- select:hover {
699
- border-color: var(--color-primary);
700
- }
701
-
702
- /* Style the dropdown options list */
703
- select::picker(select) {
704
- font-family: var(--viking-font-family);
705
- background-color: var(--card-bg);
706
- color: var(--text-color);
707
- border: 1px solid var(--text-muted);
708
- border-radius: var(--border-radius-md, 8px);
709
- padding: 8px;
710
- box-shadow: var(--shadow-md);
711
- box-sizing: border-box;
712
- margin: 0;
713
- width: anchor-size(width);
714
- }
715
-
716
- /* Customize internal part colors to match text */
717
- select::picker-icon {
718
- color: var(--text-color); /* WCAG compliance for icon */
719
- margin-left: 16px; /* Spacing around the caret */
720
- margin-right: 0px;
721
- }
722
-
723
- select option::checkmark {
724
- color: var(--color-primary);
725
- }
726
-
727
- /* Style individual options and hover effects */
728
- select option {
729
- padding: 8px 16px;
730
- border-radius: var(--border-radius-sm, 4px);
731
- color: var(--text-color);
732
- cursor: pointer;
733
- transition: background-color 0.2s ease;
734
- }
735
-
736
- select option:hover,
737
- select option:focus {
738
- background-color: var(--hover-color);
739
- color: var(--color-on-primary); /* Ensure white text on primary hover background */
740
- }
741
-
742
- select option:checked {
743
- background-color: var(--color-primary-container);
744
- color: var(--color-on-primary-container);
745
- font-weight: 600;
746
- }
747
-
748
- // Algolia site search styles live in viking-ui static-navbar.scss (synced via viking-ui.css).