@dataengineeringformachinelearning/viking-ui 1.0.2 → 3.0.0-alpha.4

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 (366) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +217 -38
  3. package/dist/core/brand-icons.d.ts +29 -0
  4. package/dist/core/icons.d.ts +132 -0
  5. package/dist/core/integration-brand-icons.d.ts +18 -0
  6. package/dist/core/lucide-paths.generated.d.ts +90 -0
  7. package/dist/core/types.d.ts +56 -0
  8. package/dist/core/uid.d.ts +2 -0
  9. package/dist/deml-components.css +1122 -0
  10. package/dist/design-tokens.css +688 -0
  11. package/dist/elements/button/viking-button.d.ts +14 -0
  12. package/dist/elements/card/viking-card.d.ts +8 -0
  13. package/dist/elements/core/dom.d.ts +4 -0
  14. package/dist/elements/core/styles.d.ts +2 -0
  15. package/dist/elements/modal/viking-modal.d.ts +15 -0
  16. package/dist/fonts/inter/InterVariable-Italic.woff2 +0 -0
  17. package/dist/fonts/inter/InterVariable.woff2 +0 -0
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.js +4051 -0
  20. package/dist/lib/accordion/accordion.d.ts +19 -0
  21. package/dist/lib/app-header/app-header.d.ts +8 -0
  22. package/dist/lib/app-sidebar/app-sidebar.d.ts +10 -0
  23. package/dist/lib/auth-panel/auth-panel.d.ts +13 -0
  24. package/dist/lib/autocomplete/autocomplete.d.ts +25 -0
  25. package/dist/lib/avatar/avatar.d.ts +14 -0
  26. package/dist/lib/badge/badge.d.ts +16 -0
  27. package/dist/lib/bar/bar.d.ts +4 -0
  28. package/dist/lib/brand/brand.d.ts +8 -0
  29. package/dist/lib/breadcrumbs/breadcrumbs.d.ts +10 -0
  30. package/dist/lib/button/button-group.d.ts +6 -0
  31. package/dist/lib/button/button.d.ts +25 -0
  32. package/dist/lib/calendar/calendar.d.ts +22 -0
  33. package/dist/lib/callout/callout.d.ts +14 -0
  34. package/dist/lib/card/card-title.d.ts +12 -0
  35. package/dist/lib/card/card.d.ts +19 -0
  36. package/dist/lib/carousel/carousel.d.ts +13 -0
  37. package/dist/lib/chart/chart-zoom.d.ts +14 -0
  38. package/dist/lib/chart/chart.d.ts +119 -0
  39. package/dist/lib/chart-card-header/chart-card-header.d.ts +10 -0
  40. package/dist/lib/chart-empty-state/chart-empty-state.d.ts +13 -0
  41. package/dist/lib/chart-panel/chart-panel.d.ts +10 -0
  42. package/dist/lib/checkbox/checkbox.d.ts +13 -0
  43. package/dist/lib/color-picker/color-picker.d.ts +16 -0
  44. package/dist/lib/command/command.d.ts +23 -0
  45. package/dist/lib/composer/composer.d.ts +15 -0
  46. package/dist/lib/confirm-dialog/confirm-dialog.d.ts +18 -0
  47. package/dist/lib/confirm-dialog/dialog.service.d.ts +28 -0
  48. package/dist/lib/context/context.d.ts +17 -0
  49. package/dist/lib/core/brand-icons.d.ts +29 -0
  50. package/dist/lib/core/cva.d.ts +15 -0
  51. package/dist/lib/core/icons.d.ts +132 -0
  52. package/dist/lib/core/integration-brand-icons.d.ts +18 -0
  53. package/dist/lib/core/lucide-paths.generated.d.ts +90 -0
  54. package/dist/lib/date-picker/date-picker.d.ts +18 -0
  55. package/dist/lib/dropdown/dropdown.d.ts +29 -0
  56. package/dist/lib/editor/editor.d.ts +26 -0
  57. package/dist/lib/empty-state/empty-state.d.ts +9 -0
  58. package/dist/lib/fab/fab.d.ts +9 -0
  59. package/dist/lib/field/field.d.ts +14 -0
  60. package/dist/lib/file-upload/file-upload.d.ts +19 -0
  61. package/dist/lib/footer/footer.d.ts +6 -0
  62. package/dist/lib/form-section/form-section.d.ts +15 -0
  63. package/dist/lib/gauge-arc/gauge-arc.d.ts +8 -0
  64. package/dist/lib/hud-panel/hud-panel.d.ts +5 -0
  65. package/dist/lib/icon/icon.d.ts +44 -0
  66. package/dist/lib/icon-badge/icon-badge.d.ts +14 -0
  67. package/dist/lib/icon-heading/icon-heading.d.ts +9 -0
  68. package/dist/lib/icon-text/icon-text.d.ts +12 -0
  69. package/dist/lib/input/input.d.ts +23 -0
  70. package/dist/lib/kanban/kanban.d.ts +16 -0
  71. package/dist/lib/kbd/kbd.d.ts +5 -0
  72. package/dist/lib/label/label.d.ts +7 -0
  73. package/dist/lib/loading-overlay/loading-overlay.d.ts +10 -0
  74. package/dist/lib/menubar/menubar.d.ts +10 -0
  75. package/dist/lib/metric-card/metric-card.d.ts +9 -0
  76. package/dist/lib/modal/modal.d.ts +13 -0
  77. package/dist/lib/native-select/native-select.d.ts +17 -0
  78. package/dist/lib/navbar/navbar.d.ts +13 -0
  79. package/dist/lib/navigation-menu/navigation-menu.d.ts +13 -0
  80. package/dist/lib/otp-input/otp-input.d.ts +23 -0
  81. package/dist/lib/page-back-link/page-back-link.d.ts +11 -0
  82. package/dist/lib/page-header/page-header.d.ts +15 -0
  83. package/dist/lib/pagination/pagination.d.ts +10 -0
  84. package/dist/lib/pillbox/pillbox.d.ts +15 -0
  85. package/dist/lib/popover/popover.d.ts +15 -0
  86. package/dist/lib/profile/profile.d.ts +11 -0
  87. package/dist/lib/progress/progress.d.ts +12 -0
  88. package/dist/lib/radio/radio.d.ts +16 -0
  89. package/dist/lib/ring-gauge/ring-gauge.d.ts +8 -0
  90. package/dist/lib/scroll-area/scroll-area.d.ts +7 -0
  91. package/dist/lib/search-palette/search-palette.d.ts +16 -0
  92. package/dist/lib/select/select.d.ts +26 -0
  93. package/dist/lib/separator/separator.d.ts +8 -0
  94. package/dist/lib/sheet/sheet.d.ts +13 -0
  95. package/dist/lib/sidebar-nav/sidebar-nav.d.ts +46 -0
  96. package/dist/lib/site-drakkar/site-drakkar.config.d.ts +50 -0
  97. package/dist/lib/site-drakkar/site-footer.d.ts +18 -0
  98. package/dist/lib/site-drakkar/site-navbar.d.ts +25 -0
  99. package/dist/lib/site-drakkar/suite-search-items.d.ts +17 -0
  100. package/dist/lib/skeleton/skeleton.d.ts +8 -0
  101. package/dist/lib/slider/slider.d.ts +17 -0
  102. package/dist/lib/spinner/spinner.d.ts +7 -0
  103. package/dist/lib/status-metric-row/status-metric-row.d.ts +9 -0
  104. package/dist/lib/suite-search-palette/suite-search-palette.d.ts +25 -0
  105. package/dist/lib/switch/switch.d.ts +12 -0
  106. package/dist/lib/table/table.d.ts +10 -0
  107. package/dist/lib/tabs/tab-panel.d.ts +12 -0
  108. package/dist/lib/tabs/tab.d.ts +14 -0
  109. package/dist/lib/tabs/tabs.d.ts +10 -0
  110. package/dist/lib/textarea/textarea.d.ts +16 -0
  111. package/dist/lib/theme-toggle/theme-toggle.d.ts +9 -0
  112. package/dist/lib/time-picker/time-picker.d.ts +21 -0
  113. package/dist/lib/timeline/timeline.d.ts +14 -0
  114. package/dist/lib/toast/toast.d.ts +21 -0
  115. package/dist/lib/toggle/toggle-group.d.ts +9 -0
  116. package/dist/lib/toggle/toggle.d.ts +15 -0
  117. package/dist/lib/tooltip/tooltip.d.ts +20 -0
  118. package/dist/lib/typography/heading.d.ts +9 -0
  119. package/dist/lib/typography/text.d.ts +11 -0
  120. package/dist/lib/uptime-bar/uptime-bar.d.ts +6 -0
  121. package/dist/lib/verification-code-field/verification-code-field.d.ts +19 -0
  122. package/dist/lib/whitepaper-cta/whitepaper-cta.d.ts +15 -0
  123. package/dist/lib/wizard/wizard.d.ts +13 -0
  124. package/dist/public-api.d.ts +109 -0
  125. package/dist/tokens/series-presets.d.ts +4 -0
  126. package/dist/viking-components.css +1837 -0
  127. package/dist/viking-tokens.json +318 -0
  128. package/dist/viking-ui-elements.js +1750 -0
  129. package/dist/viking-ui.css +1 -0
  130. package/dist/web/badge/viking-badge-wc.d.ts +28 -0
  131. package/dist/web/button/viking-button-wc.d.ts +28 -0
  132. package/dist/web/callout/viking-callout-wc.d.ts +27 -0
  133. package/dist/web/card/viking-card-wc.d.ts +29 -0
  134. package/dist/web/core/base.d.ts +12 -0
  135. package/dist/web/core/dom.d.ts +11 -0
  136. package/dist/web/core/icons-inline.d.ts +7 -0
  137. package/dist/web/core/styles.d.ts +12 -0
  138. package/dist/web/core/types.d.ts +10 -0
  139. package/dist/web/field/viking-field-wc.d.ts +32 -0
  140. package/dist/web/index.d.ts +15 -0
  141. package/dist/web/input/viking-input-wc.d.ts +32 -0
  142. package/dist/web/modal/viking-modal-wc.d.ts +50 -0
  143. package/dist/web/search-palette/viking-search-palette-wc.d.ts +64 -0
  144. package/dist/web/select/viking-select-wc.d.ts +48 -0
  145. package/dist/web/suite-header/viking-suite-header-wc.d.ts +36 -0
  146. package/dist/web/suite-search-palette/viking-suite-search-palette-wc.d.ts +39 -0
  147. package/dist/web/theme-toggle/viking-theme-toggle-wc.d.ts +19 -0
  148. package/dist/web/types.d.ts +40 -0
  149. package/dist/web-components/index.d.ts +1 -0
  150. package/dist/web-components.js +1750 -0
  151. package/dist/widget.js +1182 -0
  152. package/package.json +89 -30
  153. package/src/assets/drakkar-favicon.svg +17 -0
  154. package/src/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  155. package/src/assets/fonts/inter/InterVariable.woff2 +0 -0
  156. package/src/core/brand/deml-lockup.svg +5 -0
  157. package/src/core/brand/deml-mark-compact.svg +4 -0
  158. package/src/core/brand/deml-mark-filled.svg +3 -0
  159. package/src/core/brand/deml-mark-outline.svg +4 -0
  160. package/src/core/brand-icons.ts +62 -0
  161. package/src/core/icons.spec.ts +52 -0
  162. package/src/core/icons.ts +206 -0
  163. package/src/core/integration-brand-icons.ts +77 -0
  164. package/src/core/lucide-paths.generated.ts +130 -0
  165. package/src/core/types.ts +85 -0
  166. package/src/core/uid.ts +7 -0
  167. package/src/elements/button/viking-button.ts +201 -0
  168. package/src/elements/card/viking-card.ts +60 -0
  169. package/src/elements/core/dom.ts +33 -0
  170. package/src/elements/core/styles.ts +28 -0
  171. package/src/elements/modal/viking-modal.ts +154 -0
  172. package/src/index.ts +1 -0
  173. package/src/lib/accordion/accordion.ts +126 -0
  174. package/src/lib/app-header/app-header.scss +274 -0
  175. package/src/lib/app-header/app-header.ts +43 -0
  176. package/src/lib/app-sidebar/app-sidebar.scss +415 -0
  177. package/src/lib/app-sidebar/app-sidebar.ts +29 -0
  178. package/src/lib/auth-panel/auth-panel.spec.ts +132 -0
  179. package/src/lib/auth-panel/auth-panel.ts +228 -0
  180. package/src/lib/autocomplete/autocomplete.ts +223 -0
  181. package/src/lib/avatar/avatar.ts +126 -0
  182. package/src/lib/badge/badge.ts +182 -0
  183. package/src/lib/bar/bar.ts +31 -0
  184. package/src/lib/brand/brand.ts +60 -0
  185. package/src/lib/breadcrumbs/breadcrumbs.ts +81 -0
  186. package/src/lib/button/button-group.ts +40 -0
  187. package/src/lib/button/button.scss +96 -0
  188. package/src/lib/button/button.ts +98 -0
  189. package/src/lib/calendar/calendar.ts +253 -0
  190. package/src/lib/callout/callout.ts +211 -0
  191. package/src/lib/card/card-title.spec.ts +27 -0
  192. package/src/lib/card/card-title.ts +50 -0
  193. package/src/lib/card/card.ts +170 -0
  194. package/src/lib/carousel/carousel.ts +206 -0
  195. package/src/lib/chart/chart-zoom.spec.ts +65 -0
  196. package/src/lib/chart/chart-zoom.ts +71 -0
  197. package/src/lib/chart/chart.ts +1257 -0
  198. package/src/lib/chart-card-header/chart-card-header.ts +80 -0
  199. package/src/lib/chart-empty-state/chart-empty-state.ts +146 -0
  200. package/src/lib/chart-panel/chart-panel.ts +133 -0
  201. package/src/lib/checkbox/checkbox.ts +139 -0
  202. package/src/lib/color-picker/color-picker.ts +148 -0
  203. package/src/lib/command/command.ts +260 -0
  204. package/src/lib/composer/composer.ts +180 -0
  205. package/src/lib/confirm-dialog/confirm-dialog.ts +163 -0
  206. package/src/lib/confirm-dialog/dialog.service.ts +79 -0
  207. package/src/lib/context/context.ts +75 -0
  208. package/src/lib/core/brand-icons.ts +62 -0
  209. package/src/lib/core/cva.ts +33 -0
  210. package/src/lib/core/icons.ts +206 -0
  211. package/src/lib/core/integration-brand-icons.ts +77 -0
  212. package/src/lib/core/lucide-paths.generated.ts +130 -0
  213. package/src/lib/date-picker/date-picker.ts +139 -0
  214. package/src/lib/dropdown/dropdown.ts +188 -0
  215. package/src/lib/editor/editor.ts +170 -0
  216. package/src/lib/empty-state/empty-state.ts +100 -0
  217. package/src/lib/fab/fab.ts +76 -0
  218. package/src/lib/field/field.ts +111 -0
  219. package/src/lib/file-upload/file-upload.ts +208 -0
  220. package/src/lib/footer/footer.scss +155 -0
  221. package/src/lib/footer/footer.ts +28 -0
  222. package/src/lib/form-section/form-section.ts +200 -0
  223. package/src/lib/forms.spec.ts +92 -0
  224. package/src/lib/gauge-arc/gauge-arc.ts +85 -0
  225. package/src/lib/hud-panel/hud-panel.ts +27 -0
  226. package/src/lib/icon/icon.ts +284 -0
  227. package/src/lib/icon-badge/icon-badge.ts +87 -0
  228. package/src/lib/icon-heading/icon-heading.spec.ts +32 -0
  229. package/src/lib/icon-heading/icon-heading.ts +38 -0
  230. package/src/lib/icon-text/icon-text.ts +120 -0
  231. package/src/lib/input/input.ts +119 -0
  232. package/src/lib/kanban/kanban.ts +211 -0
  233. package/src/lib/kbd/kbd.ts +32 -0
  234. package/src/lib/label/label.ts +39 -0
  235. package/src/lib/loading-overlay/loading-overlay.ts +80 -0
  236. package/src/lib/menubar/menubar.ts +77 -0
  237. package/src/lib/metric-card/metric-card.ts +33 -0
  238. package/src/lib/modal/modal.ts +207 -0
  239. package/src/lib/native-select/native-select.ts +124 -0
  240. package/src/lib/navbar/navbar.ts +124 -0
  241. package/src/lib/navigation-menu/navigation-menu.ts +116 -0
  242. package/src/lib/otp-input/otp-input.ts +164 -0
  243. package/src/lib/page-back-link/page-back-link.ts +74 -0
  244. package/src/lib/page-header/page-header.ts +70 -0
  245. package/src/lib/pagination/pagination.ts +157 -0
  246. package/src/lib/pillbox/pillbox.ts +157 -0
  247. package/src/lib/popover/popover.ts +92 -0
  248. package/src/lib/profile/profile.ts +73 -0
  249. package/src/lib/progress/progress.ts +123 -0
  250. package/src/lib/radio/radio.ts +132 -0
  251. package/src/lib/ring-gauge/ring-gauge.ts +75 -0
  252. package/src/lib/scroll-area/scroll-area.ts +57 -0
  253. package/src/lib/search-palette/search-palette.scss +288 -0
  254. package/src/lib/search-palette/search-palette.ts +114 -0
  255. package/src/lib/select/select.ts +292 -0
  256. package/src/lib/separator/separator.ts +59 -0
  257. package/src/lib/sheet/sheet.ts +192 -0
  258. package/src/lib/sidebar-nav/sidebar-nav.scss +218 -0
  259. package/src/lib/sidebar-nav/sidebar-nav.ts +158 -0
  260. package/src/lib/site-drakkar/site-drakkar.config.ts +295 -0
  261. package/src/lib/site-drakkar/site-footer.ts +129 -0
  262. package/src/lib/site-drakkar/site-navbar.scss +2 -0
  263. package/src/lib/site-drakkar/site-navbar.ts +267 -0
  264. package/src/lib/site-drakkar/suite-search-items.spec.ts +61 -0
  265. package/src/lib/site-drakkar/suite-search-items.ts +246 -0
  266. package/src/lib/skeleton/skeleton.ts +51 -0
  267. package/src/lib/slider/slider.ts +133 -0
  268. package/src/lib/spinner/spinner.ts +75 -0
  269. package/src/lib/status-metric-row/status-metric-row.ts +74 -0
  270. package/src/lib/suite-search-palette/suite-search-palette.ts +95 -0
  271. package/src/lib/switch/switch.ts +131 -0
  272. package/src/lib/table/table.ts +137 -0
  273. package/src/lib/tabs/tab-panel.ts +61 -0
  274. package/src/lib/tabs/tab.ts +107 -0
  275. package/src/lib/tabs/tabs.ts +109 -0
  276. package/src/lib/textarea/textarea.ts +103 -0
  277. package/src/lib/theme-toggle/theme-toggle.spec.ts +40 -0
  278. package/src/lib/theme-toggle/theme-toggle.ts +39 -0
  279. package/src/lib/time-picker/time-picker.ts +197 -0
  280. package/src/lib/timeline/timeline.ts +152 -0
  281. package/src/lib/toast/toast.ts +196 -0
  282. package/src/lib/toggle/toggle-group.ts +60 -0
  283. package/src/lib/toggle/toggle.ts +101 -0
  284. package/src/lib/tooltip/tooltip.ts +119 -0
  285. package/src/lib/typography/heading.ts +52 -0
  286. package/src/lib/typography/text.ts +51 -0
  287. package/src/lib/uptime-bar/uptime-bar.ts +55 -0
  288. package/src/lib/verification-code-field/verification-code-field.ts +149 -0
  289. package/src/lib/whitepaper-cta/whitepaper-cta.scss +130 -0
  290. package/src/lib/whitepaper-cta/whitepaper-cta.ts +78 -0
  291. package/src/lib/wizard/wizard.ts +80 -0
  292. package/src/public-api.ts +172 -0
  293. package/src/styles/_buttons.scss +301 -0
  294. package/src/styles/_component-primitives.scss +183 -0
  295. package/src/styles/_drakkar-buttons.scss +85 -0
  296. package/src/styles/_fonts.scss +22 -0
  297. package/src/styles/_forms.scss +66 -0
  298. package/src/styles/_input.scss +106 -0
  299. package/src/styles/_layout-enforcement.scss +166 -0
  300. package/src/styles/_layout-rhythm.scss +158 -0
  301. package/src/styles/_legacy-aliases.scss +212 -0
  302. package/src/styles/_series-colors.scss +24 -0
  303. package/src/styles/_static-primitives.scss +857 -0
  304. package/src/styles/_typography.scss +87 -0
  305. package/src/styles/_variables.scss +527 -0
  306. package/src/styles/components/a11y.scss +90 -0
  307. package/src/styles/components/badges.scss +102 -0
  308. package/src/styles/components/extracted-utilities.scss +459 -0
  309. package/src/styles/components/footer.scss +155 -0
  310. package/src/styles/components/icon-heading.scss +47 -0
  311. package/src/styles/components/icon-inline.scss +78 -0
  312. package/src/styles/components/layout.scss +59 -0
  313. package/src/styles/components/utilities.scss +131 -0
  314. package/src/styles/components/viking-inspired.scss +204 -0
  315. package/src/styles/components/whitepaper-cta.scss +130 -0
  316. package/src/styles/components-bundle.scss +9 -0
  317. package/src/styles/components.scss +175 -0
  318. package/src/styles/deml-components.scss +10 -0
  319. package/src/styles/index.scss +8 -0
  320. package/src/styles/layout-shell.scss +39 -11
  321. package/src/styles/page-shell.scss +663 -33
  322. package/src/styles/static-navbar.scss +862 -146
  323. package/src/styles/surfaces/backend.scss +142 -0
  324. package/src/styles/surfaces/docs-global.scss +73 -0
  325. package/src/styles/surfaces/docs-shell.scss +412 -0
  326. package/src/styles/surfaces/docs-showcase.scss +1051 -0
  327. package/src/styles/surfaces/marketing-cta.scss +62 -0
  328. package/src/styles/surfaces/marketing-docs-bento.scss +67 -0
  329. package/src/styles/surfaces/marketing-global.scss +748 -0
  330. package/src/styles/surfaces/marketing-landing.scss +1260 -0
  331. package/src/styles/surfaces/marketing-publication.scss +535 -0
  332. package/src/styles/surfaces/marketing-theme.scss +14 -0
  333. package/src/styles/surfaces/swagger-ui.scss +921 -0
  334. package/src/styles/tokens-export.scss +18 -0
  335. package/src/styles/tokens.scss +5 -0
  336. package/src/styles/viking-ui-bundle.scss +20 -2
  337. package/src/styles/viking-ui.scss +213 -51
  338. package/src/tokens/series-presets.ts +15 -0
  339. package/src/tokens/tailwind.preset.js +209 -0
  340. package/src/tokens/viking-tokens.json +318 -0
  341. package/src/viking-ui.spec.ts +416 -0
  342. package/src/web/badge/viking-badge-wc.ts +116 -0
  343. package/src/web/button/viking-button-wc.ts +165 -0
  344. package/src/web/callout/viking-callout-wc.ts +105 -0
  345. package/src/web/card/viking-card-wc.ts +66 -0
  346. package/src/web/core/base.ts +56 -0
  347. package/src/web/core/dom.ts +53 -0
  348. package/src/web/core/icons-inline.ts +44 -0
  349. package/src/web/core/styles.ts +1138 -0
  350. package/src/web/core/types.ts +19 -0
  351. package/src/web/field/viking-field-wc.ts +154 -0
  352. package/src/web/index.ts +73 -0
  353. package/src/web/input/viking-input-wc.ts +211 -0
  354. package/src/web/modal/viking-modal-wc.ts +187 -0
  355. package/src/web/search-palette/viking-search-palette-wc.ts +494 -0
  356. package/src/web/select/viking-select-wc.ts +218 -0
  357. package/src/web/suite-header/viking-suite-header-wc.ts +714 -0
  358. package/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +234 -0
  359. package/src/web/theme-toggle/viking-theme-toggle-wc.ts +139 -0
  360. package/src/web/types.ts +37 -0
  361. package/src/web/web-components.spec.ts +297 -0
  362. package/src/web-components/index.ts +1 -0
  363. package/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +0 -6114
  364. package/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +0 -1
  365. package/types/dataengineeringformachinelearning-viking-ui.d.ts +0 -1397
  366. package/viking.manifest.json +0 -238
@@ -0,0 +1,19 @@
1
+ /** Shared Web Component item types. */
2
+ export type VikingSearchPaletteItem = {
3
+ title: string;
4
+ href: string;
5
+ snippet?: string;
6
+ group?: string;
7
+ keywords?: string[];
8
+ action?: "cookie-settings" | "bug-report";
9
+ };
10
+
11
+ export type VikingWcTone =
12
+ | "accent"
13
+ | "secondary"
14
+ | "success"
15
+ | "warning"
16
+ | "danger"
17
+ | "info"
18
+ | "muted"
19
+ | "subtle";
@@ -0,0 +1,154 @@
1
+ import { attachShadowStyles, readBoolAttr } from "../core/base";
2
+ import {
3
+ defineCustomElement,
4
+ defineCustomElementAlias,
5
+ escapeHtml,
6
+ HTMLElementBase,
7
+ vikingWcUid,
8
+ } from "../core/dom";
9
+ import { VIKING_FIELD_STYLES } from "../core/styles";
10
+
11
+ /**
12
+ * Framework-agnostic Viking field stack Web Component.
13
+ * Tag: `viking-field` (legacy alias: `viking-field-wc`)
14
+ *
15
+ * @attr label - Visible field label
16
+ * @attr description - Helper text below the control
17
+ * @attr error - Validation message; sets aria-invalid on the slotted control
18
+ * @attr required - Adds a non-color-only required marker
19
+ * @attr width - full | half
20
+ *
21
+ * @slot default - Form control, usually `viking-input`, `viking-select`, or native input/select
22
+ */
23
+ export class VikingFieldWc extends HTMLElementBase {
24
+ static readonly tag = "viking-field";
25
+ static readonly legacyTag = "viking-field-wc";
26
+
27
+ static get observedAttributes(): string[] {
28
+ return ["label", "description", "error", "required", "width"];
29
+ }
30
+
31
+ private readonly shadow: ShadowRoot;
32
+ private readonly labelId = vikingWcUid("viking-field-label");
33
+ private readonly descriptionId = vikingWcUid("viking-field-description");
34
+ private readonly errorId = vikingWcUid("viking-field-error");
35
+ private slotEl: HTMLSlotElement | null = null;
36
+
37
+ constructor() {
38
+ super();
39
+ this.shadow = this.attachShadow({ mode: "open" });
40
+ attachShadowStyles(this.shadow, VIKING_FIELD_STYLES);
41
+ }
42
+
43
+ connectedCallback(): void {
44
+ this.render();
45
+ this.syncControlA11y();
46
+ }
47
+
48
+ disconnectedCallback(): void {
49
+ this.slotEl?.removeEventListener("slotchange", this.syncControlA11y);
50
+ }
51
+
52
+ attributeChangedCallback(): void {
53
+ if (this.isConnected) {
54
+ this.render();
55
+ this.syncControlA11y();
56
+ }
57
+ }
58
+
59
+ private get control(): HTMLElement | null {
60
+ const assigned = this.slotEl?.assignedElements({ flatten: true }) ?? [];
61
+ return (
62
+ assigned.find(
63
+ (node): node is HTMLElement => node instanceof HTMLElement,
64
+ ) ?? null
65
+ );
66
+ }
67
+
68
+ private readonly focusControl = (): void => {
69
+ const control = this.control as HTMLElement & { focus?: () => void };
70
+ control?.focus?.();
71
+ };
72
+
73
+ private readonly syncControlA11y = (): void => {
74
+ const control = this.control;
75
+ if (!control) {
76
+ return;
77
+ }
78
+
79
+ const description = [
80
+ this.getAttribute("description") ?? "",
81
+ this.getAttribute("error") ?? "",
82
+ ]
83
+ .filter(Boolean)
84
+ .join(" ");
85
+
86
+ const label = this.getAttribute("label") ?? "";
87
+ if (label && !control.hasAttribute("aria-label")) {
88
+ control.setAttribute("aria-label", label);
89
+ }
90
+ if (description) {
91
+ control.setAttribute("aria-description", description);
92
+ } else {
93
+ control.removeAttribute("aria-description");
94
+ }
95
+
96
+ if (this.getAttribute("error")) {
97
+ control.setAttribute("aria-invalid", "true");
98
+ control.setAttribute("error", this.getAttribute("error") ?? "");
99
+ } else {
100
+ control.removeAttribute("aria-invalid");
101
+ if (control.getAttribute("error") === "") {
102
+ control.removeAttribute("error");
103
+ }
104
+ }
105
+
106
+ if (readBoolAttr(this, "required")) {
107
+ control.setAttribute("required", "");
108
+ }
109
+ };
110
+
111
+ private render(): void {
112
+ const label = this.getAttribute("label") ?? "";
113
+ const description = this.getAttribute("description") ?? "";
114
+ const error = this.getAttribute("error") ?? "";
115
+ const required = readBoolAttr(this, "required");
116
+
117
+ this.shadow.innerHTML = `
118
+ <div class="viking-field" part="field" role="group" aria-labelledby="${this.labelId}">
119
+ ${
120
+ label
121
+ ? `<div class="viking-field-label-row" part="label-row">
122
+ <span class="viking-field-label" part="label" id="${this.labelId}">
123
+ <span>${escapeHtml(label)}</span>
124
+ ${required ? `<span class="viking-field-required" aria-label="required">*</span>` : ""}
125
+ </span>
126
+ </div>`
127
+ : `<span id="${this.labelId}" hidden>Form field</span>`
128
+ }
129
+ <div class="viking-field-control" part="control"><slot></slot></div>
130
+ ${
131
+ description
132
+ ? `<p id="${this.descriptionId}" class="viking-field-description" part="description">${escapeHtml(description)}</p>`
133
+ : ""
134
+ }
135
+ ${
136
+ error
137
+ ? `<p id="${this.errorId}" class="viking-field-error" part="error" role="alert">${escapeHtml(error)}</p>`
138
+ : ""
139
+ }
140
+ </div>
141
+ `;
142
+
143
+ this.slotEl = this.shadow.querySelector("slot");
144
+ this.slotEl?.addEventListener("slotchange", this.syncControlA11y);
145
+ this.shadow
146
+ .querySelector(".viking-field-label")
147
+ ?.addEventListener("click", this.focusControl);
148
+ }
149
+ }
150
+
151
+ export const registerVikingFieldWc = (): void => {
152
+ defineCustomElement(VikingFieldWc.tag, VikingFieldWc);
153
+ defineCustomElementAlias(VikingFieldWc.legacyTag, VikingFieldWc);
154
+ };
@@ -0,0 +1,73 @@
1
+ import { registerVikingBadgeWc } from "./badge/viking-badge-wc";
2
+ import { registerVikingButtonWc } from "./button/viking-button-wc";
3
+ import { registerVikingCalloutWc } from "./callout/viking-callout-wc";
4
+ import { registerVikingCardWc } from "./card/viking-card-wc";
5
+ import { registerVikingFieldWc } from "./field/viking-field-wc";
6
+ import { registerVikingInputWc } from "./input/viking-input-wc";
7
+ import { registerVikingModalWc } from "./modal/viking-modal-wc";
8
+ import { registerVikingSearchPaletteWc } from "./search-palette/viking-search-palette-wc";
9
+ import { registerVikingSuiteHeaderWc } from "./suite-header/viking-suite-header-wc";
10
+ import { registerVikingSuiteSearchPaletteWc } from "./suite-search-palette/viking-suite-search-palette-wc";
11
+ import { registerVikingSelectWc } from "./select/viking-select-wc";
12
+ import { registerVikingThemeToggleWc } from "./theme-toggle/viking-theme-toggle-wc";
13
+
14
+ export { VikingBadgeWc, registerVikingBadgeWc } from "./badge/viking-badge-wc";
15
+ export {
16
+ VikingButtonWc,
17
+ registerVikingButtonWc,
18
+ } from "./button/viking-button-wc";
19
+ export {
20
+ VikingCalloutWc,
21
+ registerVikingCalloutWc,
22
+ } from "./callout/viking-callout-wc";
23
+ export { VikingCardWc, registerVikingCardWc } from "./card/viking-card-wc";
24
+ export { VikingFieldWc, registerVikingFieldWc } from "./field/viking-field-wc";
25
+ export { VikingInputWc, registerVikingInputWc } from "./input/viking-input-wc";
26
+ export { VikingModalWc, registerVikingModalWc } from "./modal/viking-modal-wc";
27
+ export {
28
+ VikingSearchPaletteWc,
29
+ registerVikingSearchPaletteWc,
30
+ type VikingSearchPaletteItem,
31
+ } from "./search-palette/viking-search-palette-wc";
32
+ export {
33
+ VikingSuiteSearchPaletteWc,
34
+ registerVikingSuiteSearchPaletteWc,
35
+ } from "./suite-search-palette/viking-suite-search-palette-wc";
36
+ export {
37
+ VikingSuiteHeaderWc,
38
+ registerVikingSuiteHeaderWc,
39
+ } from "./suite-header/viking-suite-header-wc";
40
+ export {
41
+ VikingSelectWc,
42
+ registerVikingSelectWc,
43
+ } from "./select/viking-select-wc";
44
+ export {
45
+ VikingThemeToggleWc,
46
+ registerVikingThemeToggleWc,
47
+ } from "./theme-toggle/viking-theme-toggle-wc";
48
+ export type { VikingWcTone } from "./core/types";
49
+
50
+ /** Register all Viking-UI Web Components. Safe to call multiple times. */
51
+ export const registerVikingElements = (): void => {
52
+ registerVikingButtonWc();
53
+ registerVikingFieldWc();
54
+ registerVikingInputWc();
55
+ registerVikingBadgeWc();
56
+ registerVikingCalloutWc();
57
+ registerVikingCardWc();
58
+ registerVikingSelectWc();
59
+ registerVikingModalWc();
60
+ registerVikingSearchPaletteWc();
61
+ registerVikingSuiteHeaderWc();
62
+ registerVikingSuiteSearchPaletteWc();
63
+ registerVikingThemeToggleWc();
64
+ };
65
+
66
+ // Auto-register when loaded as a script bundle (Astro, Django, static HTML).
67
+ if (typeof globalThis !== "undefined" && typeof document !== "undefined") {
68
+ if (document.readyState === "loading") {
69
+ document.addEventListener("DOMContentLoaded", registerVikingElements);
70
+ } else {
71
+ registerVikingElements();
72
+ }
73
+ }
@@ -0,0 +1,211 @@
1
+ import {
2
+ attachElementInternals,
3
+ attachShadowStyles,
4
+ readBoolAttr,
5
+ setFormValue,
6
+ } from "../core/base";
7
+ import {
8
+ defineCustomElement,
9
+ defineCustomElementAlias,
10
+ escapeHtml,
11
+ HTMLElementBase,
12
+ } from "../core/dom";
13
+ import { VIKING_INPUT_STYLES } from "../core/styles";
14
+
15
+ /**
16
+ * Framework-agnostic Viking input Web Component with form association.
17
+ * Tag: `viking-input` (legacy alias: `viking-input-wc`)
18
+ *
19
+ * @example
20
+ * <viking-input placeholder="Email" name="email" type="email"></viking-input>
21
+ */
22
+ export class VikingInputWc extends HTMLElementBase {
23
+ static readonly formAssociated = true;
24
+ static readonly tag = "viking-input";
25
+ static readonly legacyTag = "viking-input-wc";
26
+
27
+ static get observedAttributes(): string[] {
28
+ return [
29
+ "type",
30
+ "placeholder",
31
+ "value",
32
+ "disabled",
33
+ "loading",
34
+ "clearable",
35
+ "name",
36
+ "autocomplete",
37
+ "required",
38
+ "readonly",
39
+ "minlength",
40
+ "maxlength",
41
+ "pattern",
42
+ "error",
43
+ "aria-label",
44
+ "aria-describedby",
45
+ "bare",
46
+ ];
47
+ }
48
+
49
+ private readonly shadow: ShadowRoot;
50
+ private readonly internals: ElementInternals | null;
51
+ private input: HTMLInputElement | null = null;
52
+
53
+ constructor() {
54
+ super();
55
+ this.shadow = this.attachShadow({ mode: "open" });
56
+ this.internals = attachElementInternals(this);
57
+ attachShadowStyles(this.shadow, VIKING_INPUT_STYLES);
58
+ }
59
+
60
+ connectedCallback(): void {
61
+ this.render();
62
+ this.syncFormValue();
63
+ }
64
+
65
+ attributeChangedCallback(name: string): void {
66
+ if (!this.isConnected) {
67
+ return;
68
+ }
69
+ if (name === "value" && this.input) {
70
+ this.input.value = this.getAttribute("value") ?? "";
71
+ this.syncFormValue();
72
+ return;
73
+ }
74
+ this.render();
75
+ }
76
+
77
+ get value(): string {
78
+ return this.input?.value ?? this.getAttribute("value") ?? "";
79
+ }
80
+
81
+ set value(next: string) {
82
+ const normalized = next ?? "";
83
+ this.setAttribute("value", normalized);
84
+ if (this.input) {
85
+ this.input.value = normalized;
86
+ }
87
+ this.syncFormValue();
88
+ }
89
+
90
+ private get disabled(): boolean {
91
+ return readBoolAttr(this, "disabled");
92
+ }
93
+
94
+ private get loading(): boolean {
95
+ return readBoolAttr(this, "loading");
96
+ }
97
+
98
+ private get clearable(): boolean {
99
+ return readBoolAttr(this, "clearable");
100
+ }
101
+
102
+ private get bare(): boolean {
103
+ return readBoolAttr(this, "bare");
104
+ }
105
+
106
+ private readonly onInput = (): void => {
107
+ const next = this.input?.value ?? "";
108
+ this.setAttribute("value", next);
109
+ this.syncFormValue();
110
+ this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
111
+ this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
112
+ };
113
+
114
+ private readonly onBlur = (): void => {
115
+ this.dispatchEvent(new Event("blur", { bubbles: true, composed: true }));
116
+ };
117
+
118
+ private readonly onClear = (): void => {
119
+ this.value = "";
120
+ this.input?.focus();
121
+ this.dispatchEvent(
122
+ new CustomEvent("viking-cleared", { bubbles: true, composed: true }),
123
+ );
124
+ this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
125
+ };
126
+
127
+ private syncFormValue(): void {
128
+ setFormValue(this.internals, this.value);
129
+ }
130
+
131
+ private render(): void {
132
+ const shellClasses = [
133
+ "viking-input-shell",
134
+ this.disabled ? "viking-disabled" : "",
135
+ this.loading ? "viking-loading" : "",
136
+ ]
137
+ .filter(Boolean)
138
+ .join(" ");
139
+
140
+ const type = escapeHtml(this.getAttribute("type") ?? "text");
141
+ const rawPlaceholder = this.getAttribute("placeholder") ?? "";
142
+ const placeholder = escapeHtml(rawPlaceholder);
143
+ const value = escapeHtml(this.getAttribute("value") ?? "");
144
+ const label =
145
+ this.getAttribute("aria-label") ?? (rawPlaceholder || "Text input");
146
+ const autocomplete = escapeHtml(this.getAttribute("autocomplete") ?? "");
147
+ const describedBy = escapeHtml(this.getAttribute("aria-describedby") ?? "");
148
+ const minLength = escapeHtml(this.getAttribute("minlength") ?? "");
149
+ const maxLength = escapeHtml(this.getAttribute("maxlength") ?? "");
150
+ const pattern = escapeHtml(this.getAttribute("pattern") ?? "");
151
+ const error = this.getAttribute("error") ?? "";
152
+ const required = readBoolAttr(this, "required");
153
+ const readonly = readBoolAttr(this, "readonly");
154
+ const showClear =
155
+ this.clearable && value.length > 0 && !this.loading && !this.bare;
156
+ const nativeAttrs = `
157
+ ${this.disabled || this.loading ? "disabled" : ""}
158
+ ${required ? "required" : ""}
159
+ ${readonly ? "readonly" : ""}
160
+ aria-label="${escapeHtml(label)}"
161
+ ${describedBy ? `aria-describedby="${describedBy}"` : ""}
162
+ ${this.loading ? 'aria-busy="true"' : ""}
163
+ ${error ? 'aria-invalid="true"' : ""}
164
+ ${autocomplete ? `autocomplete="${autocomplete}"` : ""}
165
+ ${minLength ? `minlength="${minLength}"` : ""}
166
+ ${maxLength ? `maxlength="${maxLength}"` : ""}
167
+ ${pattern ? `pattern="${pattern}"` : ""}
168
+ `;
169
+
170
+ if (this.bare) {
171
+ this.shadow.innerHTML = `
172
+ <input
173
+ part="input"
174
+ class="viking-input-native"
175
+ type="${type}"
176
+ placeholder="${placeholder}"
177
+ value="${value}"
178
+ ${nativeAttrs}
179
+ />
180
+ `;
181
+ } else {
182
+ this.shadow.innerHTML = `
183
+ <div class="${shellClasses}" part="shell">
184
+ <slot name="leading"></slot>
185
+ <input
186
+ part="input"
187
+ type="${type}"
188
+ placeholder="${placeholder}"
189
+ value="${value}"
190
+ ${nativeAttrs}
191
+ />
192
+ ${this.loading ? '<span class="viking-input-spinner" aria-hidden="true"></span>' : ""}
193
+ ${showClear ? '<button type="button" class="viking-input-clear" aria-label="Clear input" part="clear">×</button>' : ""}
194
+ <slot name="trailing"></slot>
195
+ </div>
196
+ `;
197
+ }
198
+
199
+ this.input = this.shadow.querySelector("input");
200
+ this.input?.addEventListener("input", this.onInput);
201
+ this.input?.addEventListener("blur", this.onBlur);
202
+
203
+ const clearBtn = this.shadow.querySelector(".viking-input-clear");
204
+ clearBtn?.addEventListener("click", this.onClear);
205
+ }
206
+ }
207
+
208
+ export const registerVikingInputWc = (): void => {
209
+ defineCustomElement(VikingInputWc.tag, VikingInputWc);
210
+ defineCustomElementAlias(VikingInputWc.legacyTag, VikingInputWc);
211
+ };
@@ -0,0 +1,187 @@
1
+ import {
2
+ attachShadowStyles,
3
+ closeModalDialog,
4
+ showModalDialog,
5
+ } from "../core/base";
6
+ import {
7
+ defineCustomElement,
8
+ defineCustomElementAlias,
9
+ escapeHtml,
10
+ HTMLElementBase,
11
+ } from "../core/dom";
12
+ import { renderInlineIcon } from "../core/icons-inline";
13
+ import { VIKING_MODAL_STYLES } from "../core/styles";
14
+
15
+ /**
16
+ * Framework-agnostic modal Web Component using native `<dialog>` semantics.
17
+ * Tag: `viking-modal` (legacy aliases: `viking-modal-wc`, `viking-dialog`)
18
+ *
19
+ * @attr open - When present, shows the modal
20
+ * @attr title - Dialog title for aria-label / heading
21
+ * @attr dismissible - Allow Escape and backdrop click to close (default: true)
22
+ *
23
+ * @slot default - Modal body content
24
+ * @slot actions - Footer action buttons
25
+ *
26
+ * @method openModal() - Programmatically open
27
+ * @method closeModal() - Programmatically close
28
+ *
29
+ * @event viking-close - Fired when the dialog closes
30
+ *
31
+ * @example
32
+ * <viking-modal title="Confirm deploy">
33
+ * <p>Push v2.0.0 to production?</p>
34
+ * <viking-button slot="actions" variant="primary">Deploy</viking-button>
35
+ * </viking-modal>
36
+ */
37
+ export class VikingModalWc extends HTMLElementBase {
38
+ static readonly tag = "viking-modal";
39
+ static readonly legacyTag = "viking-modal-wc";
40
+ static readonly dialogTag = "viking-dialog";
41
+
42
+ static get observedAttributes(): string[] {
43
+ return ["open", "title", "dismissible"];
44
+ }
45
+
46
+ private readonly shadow: ShadowRoot;
47
+ private dialogEl: HTMLDialogElement | null = null;
48
+
49
+ constructor() {
50
+ super();
51
+ this.shadow = this.attachShadow({ mode: "open" });
52
+ attachShadowStyles(this.shadow, VIKING_MODAL_STYLES);
53
+ }
54
+
55
+ connectedCallback(): void {
56
+ this.render();
57
+ this.syncOpen();
58
+ this.dialogEl?.addEventListener("close", this.onClose);
59
+ this.dialogEl?.addEventListener("click", this.onBackdropClick);
60
+ }
61
+
62
+ disconnectedCallback(): void {
63
+ this.dialogEl?.removeEventListener("close", this.onClose);
64
+ this.dialogEl?.removeEventListener("click", this.onBackdropClick);
65
+ }
66
+
67
+ attributeChangedCallback(name: string): void {
68
+ if (!this.isConnected) {
69
+ return;
70
+ }
71
+ if (name === "open") {
72
+ this.syncOpen();
73
+ return;
74
+ }
75
+ if (name === "title") {
76
+ this.updateTitle();
77
+ return;
78
+ }
79
+ if (name === "dismissible") {
80
+ this.render();
81
+ this.syncOpen();
82
+ }
83
+ }
84
+
85
+ /** Opens the modal dialog. */
86
+ openModal(): void {
87
+ this.setAttribute("open", "");
88
+ this.syncOpen();
89
+ }
90
+
91
+ /** Closes the modal dialog. */
92
+ closeModal(): void {
93
+ this.removeAttribute("open");
94
+ closeModalDialog(this.dialogEl);
95
+ }
96
+
97
+ /** @deprecated Use openModal() */
98
+ open(): void {
99
+ this.openModal();
100
+ }
101
+
102
+ /** @deprecated Use closeModal() */
103
+ close(): void {
104
+ this.closeModal();
105
+ }
106
+
107
+ private get dismissible(): boolean {
108
+ return this.getAttribute("dismissible") !== "false";
109
+ }
110
+
111
+ private readonly onClose = (): void => {
112
+ this.removeAttribute("open");
113
+ this.dispatchEvent(
114
+ new CustomEvent("viking-close", { bubbles: true, composed: true }),
115
+ );
116
+ };
117
+
118
+ private readonly onBackdropClick = (event: MouseEvent): void => {
119
+ if (!this.dismissible) {
120
+ return;
121
+ }
122
+ if (event.target === this.dialogEl) {
123
+ this.closeModal();
124
+ }
125
+ };
126
+
127
+ private syncOpen(): void {
128
+ if (!this.dialogEl) {
129
+ return;
130
+ }
131
+ const shouldOpen = this.hasAttribute("open");
132
+ if (shouldOpen && !this.dialogEl.open) {
133
+ showModalDialog(this.dialogEl);
134
+ queueMicrotask(() => {
135
+ const closeBtn = this.shadow.querySelector<HTMLButtonElement>(
136
+ ".viking-modal-close",
137
+ );
138
+ (closeBtn ?? this.dialogEl)?.focus();
139
+ });
140
+ } else if (!shouldOpen && this.dialogEl.open) {
141
+ closeModalDialog(this.dialogEl);
142
+ }
143
+ }
144
+
145
+ private updateTitle(): void {
146
+ const title = this.getAttribute("title") ?? "Dialog";
147
+ const heading = this.shadow.querySelector(".viking-modal-heading");
148
+ if (heading) {
149
+ heading.textContent = title;
150
+ }
151
+ this.dialogEl?.setAttribute("aria-label", title);
152
+ }
153
+
154
+ private render(): void {
155
+ const title = this.getAttribute("title") ?? "Dialog";
156
+
157
+ this.shadow.innerHTML = `
158
+ <dialog class="viking-modal-backdrop" aria-label="${escapeHtml(title)}" aria-modal="true">
159
+ <div class="viking-modal-panel" part="panel" role="document">
160
+ <header class="viking-modal-header" part="header">
161
+ <h2 class="viking-modal-heading" part="title">${escapeHtml(title)}</h2>
162
+ ${this.dismissible ? `<button type="button" class="viking-modal-close" part="close" aria-label="Close dialog">${renderInlineIcon("x", 20)}</button>` : ""}
163
+ </header>
164
+ <div class="viking-modal-body" part="body"><slot></slot></div>
165
+ <footer class="viking-modal-footer" part="footer"><slot name="actions"></slot></footer>
166
+ </div>
167
+ </dialog>
168
+ `;
169
+
170
+ this.dialogEl = this.shadow.querySelector("dialog");
171
+ this.shadow
172
+ .querySelector(".viking-modal-close")
173
+ ?.addEventListener("click", () => this.closeModal());
174
+ this.dialogEl?.addEventListener("keydown", (event) => {
175
+ if (event.key === "Escape" && this.dismissible) {
176
+ event.preventDefault();
177
+ this.closeModal();
178
+ }
179
+ });
180
+ }
181
+ }
182
+
183
+ export const registerVikingModalWc = (): void => {
184
+ defineCustomElement(VikingModalWc.tag, VikingModalWc);
185
+ defineCustomElementAlias(VikingModalWc.legacyTag, VikingModalWc);
186
+ defineCustomElementAlias(VikingModalWc.dialogTag, VikingModalWc);
187
+ };