scb-wc 0.1.3 → 0.1.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 (339) hide show
  1. package/README.md +194 -164
  2. package/all.js +91 -5
  3. package/blazor/CustomEvents.cs +83 -0
  4. package/blazor/ScbBlazorInteropBase.cs +4460 -1674
  5. package/blazor/scb-blazor-bridge.js +6827 -2805
  6. package/blazor/wrappers/ScbAccordion.razor +50 -0
  7. package/blazor/wrappers/ScbAppBar.razor +95 -0
  8. package/blazor/wrappers/ScbBreadcrumb.razor +59 -0
  9. package/blazor/wrappers/ScbCalendar.razor +100 -0
  10. package/blazor/wrappers/ScbCalendarCard.razor +189 -0
  11. package/blazor/wrappers/ScbCheckbox.razor +92 -0
  12. package/blazor/wrappers/ScbCollapse.razor +76 -0
  13. package/blazor/wrappers/ScbCookiesConsent.razor +106 -0
  14. package/blazor/wrappers/ScbDatepicker.razor +77 -0
  15. package/blazor/wrappers/ScbDialog.razor +72 -0
  16. package/blazor/wrappers/ScbDrawer.razor +64 -0
  17. package/blazor/wrappers/ScbDropZone.razor +168 -0
  18. package/blazor/wrappers/ScbDropdown.razor +76 -0
  19. package/blazor/wrappers/ScbHorizontalScroller.razor +137 -0
  20. package/blazor/wrappers/ScbList.razor +77 -0
  21. package/blazor/wrappers/ScbMenu.razor +71 -0
  22. package/blazor/wrappers/ScbNav.razor +92 -0
  23. package/blazor/wrappers/ScbNotificationCard.razor +122 -0
  24. package/blazor/wrappers/ScbOptionsMenu.razor +88 -0
  25. package/blazor/wrappers/ScbPagination.razor +80 -0
  26. package/blazor/wrappers/ScbRadioGroup.razor +94 -0
  27. package/blazor/wrappers/ScbSearch.razor +83 -0
  28. package/blazor/wrappers/ScbSegmentedButton.razor +85 -0
  29. package/blazor/wrappers/ScbSelect.razor +79 -0
  30. package/blazor/wrappers/ScbSlider.razor +96 -0
  31. package/blazor/wrappers/ScbSnackbar.razor +93 -0
  32. package/blazor/wrappers/ScbSwitch.razor +92 -0
  33. package/blazor/wrappers/ScbTable.razor +67 -0
  34. package/blazor/wrappers/ScbTableAdvanced.razor +78 -0
  35. package/blazor/wrappers/ScbTabs.razor +55 -0
  36. package/blazor/wrappers/ScbTextfield.razor +104 -0
  37. package/blazor/wrappers/ScbTooltip.razor +88 -0
  38. package/blazor/wrappers/ScbViz.razor +142 -0
  39. package/demo-data-preview.svg +12 -0
  40. package/dummy.png +0 -0
  41. package/fonts/inter/files/inter-latin-wght-italic.woff2 +0 -0
  42. package/fonts/inter/files/inter-latin-wght-normal.woff2 +0 -0
  43. package/fonts/material-symbols-outlined/files/material-symbols-outlined-latin-wght-normal.woff2 +0 -0
  44. package/index.js +91 -1
  45. package/mvc/components/all.js +90 -1
  46. package/mvc/components/scb-accordion/scb-accordion-item.js +211 -0
  47. package/mvc/components/scb-accordion/scb-accordion.js +44 -0
  48. package/mvc/components/scb-app-bar/scb-app-bar.js +166 -0
  49. package/mvc/components/scb-avatar/scb-avatar.js +111 -0
  50. package/mvc/components/scb-badge/scb-badge.js +80 -0
  51. package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +14 -0
  52. package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +96 -0
  53. package/mvc/components/scb-button/scb-button.js +268 -0
  54. package/mvc/components/scb-calendar/scb-calendar-event.js +6 -0
  55. package/mvc/components/scb-calendar/scb-calendar.js +168 -0
  56. package/mvc/components/scb-calendar-card/scb-calendar-card.js +346 -0
  57. package/mvc/components/scb-card/scb-card.js +761 -0
  58. package/mvc/components/scb-checkbox/scb-checkbox-group.js +33 -0
  59. package/mvc/components/scb-checkbox/scb-checkbox.js +140 -0
  60. package/mvc/components/scb-chevron/scb-chevron.js +121 -0
  61. package/mvc/components/scb-chip/scb-chip.js +66 -0
  62. package/mvc/components/scb-collapse/scb-collapse.js +89 -0
  63. package/mvc/components/scb-cookies-consent/scb-cookies-consent.js +78 -0
  64. package/mvc/components/scb-datepicker/scb-datepicker.js +296 -0
  65. package/mvc/components/scb-dialog/scb-dialog.js +265 -0
  66. package/mvc/components/scb-divider/scb-divider.js +69 -0
  67. package/mvc/components/scb-drawer/scb-drawer.js +128 -0
  68. package/mvc/components/scb-drop-zone/scb-drop-zone.js +555 -0
  69. package/mvc/components/scb-dropdown/scb-dropdown.js +306 -0
  70. package/mvc/components/scb-fab/scb-fab.js +108 -0
  71. package/mvc/components/scb-fact-card/scb-fact-card-content.js +46 -0
  72. package/mvc/components/scb-fact-card/scb-fact-card.js +226 -0
  73. package/mvc/components/scb-footer/scb-footer-section.js +3 -0
  74. package/mvc/components/scb-footer/scb-footer.js +210 -0
  75. package/mvc/components/scb-gallery-grid/scb-gallery-grid.js +131 -0
  76. package/mvc/components/scb-grid/scb-grid-item.js +11 -0
  77. package/mvc/components/scb-grid/scb-grid.js +98 -0
  78. package/mvc/components/scb-grid/scb-stack.js +33 -0
  79. package/mvc/components/scb-header/scb-header-menu-group.js +1 -0
  80. package/mvc/components/scb-header/scb-header-menu-item.js +5 -0
  81. package/mvc/components/scb-header/scb-header-tab.js +5 -0
  82. package/mvc/components/scb-header/scb-header-utility.js +1 -0
  83. package/mvc/components/scb-header/scb-header.js +681 -0
  84. package/mvc/components/scb-horizontal-scroller/scb-horizontal-scroller.js +196 -0
  85. package/mvc/components/scb-icon-button/scb-icon-button.js +171 -0
  86. package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +212 -0
  87. package/mvc/components/scb-link/scb-link.js +61 -0
  88. package/mvc/components/scb-list/scb-list-item.js +153 -0
  89. package/mvc/components/scb-list/scb-list.js +26 -0
  90. package/mvc/components/scb-menu/scb-menu-item.js +205 -0
  91. package/mvc/components/scb-menu/scb-menu-section.js +42 -0
  92. package/mvc/components/scb-menu/scb-menu.js +81 -0
  93. package/mvc/components/scb-menu/scb-sub-menu.js +10 -0
  94. package/mvc/components/scb-nav/scb-nav-item.js +28 -0
  95. package/mvc/components/scb-nav/scb-nav.js +104 -0
  96. package/mvc/components/scb-notification-card/scb-notification-card.js +358 -0
  97. package/mvc/components/scb-options-menu/scb-options-menu-item.js +66 -0
  98. package/mvc/components/scb-options-menu/scb-options-menu.js +88 -0
  99. package/mvc/components/scb-options-menu/scb-options-sub-menu.js +34 -0
  100. package/mvc/components/scb-overlay/scb-overlay.js +49 -0
  101. package/mvc/components/scb-pagination/scb-pagination.js +312 -0
  102. package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +87 -0
  103. package/mvc/components/scb-progress-stepper/scb-progress-step.js +147 -0
  104. package/mvc/components/scb-progress-stepper/scb-progress-stepper.js +62 -0
  105. package/mvc/components/scb-radio-button/scb-radio-button.js +132 -0
  106. package/mvc/components/scb-radio-button/scb-radio-group.js +43 -0
  107. package/mvc/components/scb-scrollspy/scb-scrollspy.js +79 -0
  108. package/mvc/components/scb-search/scb-search.js +292 -0
  109. package/mvc/components/scb-segmented-button/scb-segmented-button.js +32 -0
  110. package/mvc/components/scb-segmented-button/scb-segmented-item.js +74 -0
  111. package/mvc/components/scb-select/scb-select-option.js +61 -0
  112. package/mvc/components/scb-select/scb-select.js +284 -0
  113. package/mvc/components/scb-skeleton/scb-skeleton.js +38 -0
  114. package/mvc/components/scb-slider/scb-slider.js +27 -0
  115. package/mvc/components/scb-snackbar/scb-snackbar.js +128 -0
  116. package/mvc/components/scb-status-pill/scb-status-pill.js +45 -0
  117. package/mvc/components/scb-stepper/scb-step.js +239 -0
  118. package/mvc/components/scb-stepper/scb-stepper.js +139 -0
  119. package/mvc/components/scb-switch/scb-switch.js +59 -0
  120. package/mvc/components/scb-table/scb-table.js +51 -0
  121. package/mvc/components/scb-table-advanced/scb-table-advanced.js +76 -0
  122. package/mvc/components/scb-tabs/scb-primary-tab.js +6 -0
  123. package/mvc/components/scb-tabs/scb-secondary-tab.js +6 -0
  124. package/mvc/components/scb-tabs/scb-tabs.js +28 -0
  125. package/mvc/components/scb-textfield/scb-textfield.js +595 -0
  126. package/mvc/components/scb-toc/scb-toc-item.js +303 -0
  127. package/mvc/components/scb-toc/scb-toc.js +19 -0
  128. package/mvc/components/scb-tooltip/scb-tooltip.js +196 -0
  129. package/mvc/components/scb-vignette/scb-vignette.js +37 -0
  130. package/mvc/components/scb-viz/scb-viz-actions-runtime.js +2 -0
  131. package/mvc/components/scb-viz/scb-viz-print-runtime.js +98 -0
  132. package/mvc/components/scb-viz/scb-viz-series-differentiation-registry.js +1 -0
  133. package/mvc/components/scb-viz/scb-viz-series-differentiation-runtime.js +1 -0
  134. package/mvc/components/scb-viz/scb-viz-table-runtime.js +1 -0
  135. package/mvc/components/scb-viz/scb-viz.js +1140 -0
  136. package/mvc/fonts/inter/files/inter-latin-wght-italic.woff2 +0 -0
  137. package/mvc/fonts/inter/files/inter-latin-wght-normal.woff2 +0 -0
  138. package/mvc/fonts/material-symbols-outlined/files/material-symbols-outlined-latin-wght-normal.woff2 +0 -0
  139. package/mvc/scb-blazor-bridge.js +6827 -2805
  140. package/mvc/scb-logo.svg +20 -20
  141. package/mvc/scb-typography.css +1 -1
  142. package/mvc/scb-wc.css +3 -2
  143. package/mvc/scb.svg +13 -13
  144. package/mvc/vendor/assertClassBrand.js +1 -0
  145. package/mvc/vendor/classPrivateFieldGet2.js +1 -0
  146. package/mvc/vendor/decorate.js +1 -0
  147. package/mvc/vendor/preload-helper.js +1 -0
  148. package/mvc/vendor/vendor-lit.js +1 -0
  149. package/mvc/vendor/vendor-material.js +364 -0
  150. package/mvc/vendor/vendor.js +4 -0
  151. package/package.json +420 -77
  152. package/scb-accordion/scb-accordion-item.js +340 -0
  153. package/scb-accordion/scb-accordion.js +151 -0
  154. package/scb-app-bar/scb-app-bar.js +317 -0
  155. package/scb-avatar/scb-avatar.js +197 -0
  156. package/scb-badge/scb-badge.js +165 -0
  157. package/scb-breadcrumb/scb-breadcrumb-item.js +62 -0
  158. package/scb-breadcrumb/scb-breadcrumb.js +255 -0
  159. package/scb-button/scb-button.js +398 -0
  160. package/scb-calendar/scb-calendar-event.js +48 -0
  161. package/scb-calendar/scb-calendar.js +700 -0
  162. package/scb-calendar-card/scb-calendar-card.js +505 -0
  163. package/scb-card/scb-card.js +1231 -0
  164. package/scb-checkbox/scb-checkbox-group.js +104 -0
  165. package/scb-checkbox/scb-checkbox.js +316 -0
  166. package/scb-chevron/scb-chevron.js +144 -0
  167. package/scb-chip/scb-chip.js +234 -0
  168. package/scb-collapse/scb-collapse.js +231 -0
  169. package/scb-cookies-consent/scb-cookies-consent.js +164 -0
  170. package/scb-datepicker/scb-datepicker.js +470 -0
  171. package/scb-dialog/scb-dialog.js +574 -0
  172. package/scb-divider/scb-divider.js +119 -0
  173. package/scb-drawer/scb-drawer.js +297 -0
  174. package/scb-drop-zone/scb-drop-zone.js +965 -0
  175. package/scb-dropdown/scb-dropdown.js +598 -0
  176. package/scb-fab/scb-fab.js +190 -0
  177. package/scb-fact-card/scb-fact-card-content.js +82 -0
  178. package/scb-fact-card/scb-fact-card.js +376 -0
  179. package/scb-footer/scb-footer-section.js +23 -0
  180. package/scb-footer/scb-footer.js +343 -0
  181. package/scb-gallery-grid/scb-gallery-grid.js +242 -0
  182. package/scb-grid/scb-grid-item.js +81 -0
  183. package/scb-grid/scb-grid.js +200 -0
  184. package/scb-grid/scb-stack.js +120 -0
  185. package/scb-header/scb-header-menu-group.js +21 -0
  186. package/scb-header/scb-header-menu-item.js +22 -0
  187. package/scb-header/scb-header-tab.js +25 -0
  188. package/scb-header/scb-header-utility.js +27 -0
  189. package/scb-header/scb-header.js +1358 -0
  190. package/scb-horizontal-scroller/scb-horizontal-scroller.js +353 -0
  191. package/scb-icon-button/scb-icon-button.js +335 -0
  192. package/scb-keyfigure-card/scb-keyfigure-card.js +340 -0
  193. package/scb-link/scb-link.js +136 -0
  194. package/scb-list/scb-list-item.js +297 -0
  195. package/scb-list/scb-list.js +119 -0
  196. package/scb-menu/scb-menu-item.js +330 -0
  197. package/scb-menu/scb-menu-section.js +60 -0
  198. package/scb-menu/scb-menu.js +154 -0
  199. package/scb-menu/scb-sub-menu.js +36 -0
  200. package/scb-nav/scb-nav-item.js +96 -0
  201. package/scb-nav/scb-nav.js +263 -0
  202. package/scb-notification-card/scb-notification-card.js +479 -0
  203. package/scb-options-menu/scb-options-menu-item.js +218 -0
  204. package/scb-options-menu/scb-options-menu.js +237 -0
  205. package/scb-options-menu/scb-options-sub-menu.js +69 -0
  206. package/scb-overlay/scb-overlay.js +144 -0
  207. package/scb-pagination/scb-pagination.js +438 -0
  208. package/scb-progress-indicator/scb-progress-indicator.js +199 -0
  209. package/scb-progress-stepper/scb-progress-step.js +213 -0
  210. package/scb-progress-stepper/scb-progress-stepper.js +132 -0
  211. package/scb-radio-button/scb-radio-button.js +249 -0
  212. package/scb-radio-button/scb-radio-group.js +216 -0
  213. package/scb-scrollspy/scb-scrollspy.js +670 -0
  214. package/scb-search/scb-search.js +643 -0
  215. package/scb-segmented-button/scb-segmented-button.js +215 -0
  216. package/scb-segmented-button/scb-segmented-item.js +133 -0
  217. package/scb-select/scb-select-option.js +88 -0
  218. package/scb-select/scb-select.js +517 -0
  219. package/scb-skeleton/scb-skeleton.js +92 -0
  220. package/scb-slider/scb-slider.js +98 -0
  221. package/scb-snackbar/scb-snackbar.js +223 -0
  222. package/scb-status-pill/scb-status-pill.js +100 -0
  223. package/scb-stepper/scb-step.js +311 -0
  224. package/scb-stepper/scb-stepper.js +325 -0
  225. package/scb-switch/scb-switch.js +182 -0
  226. package/scb-table/scb-table.js +202 -0
  227. package/scb-table-advanced/scb-table-advanced.js +327 -0
  228. package/scb-tabs/scb-primary-tab.js +68 -0
  229. package/scb-tabs/scb-secondary-tab.js +68 -0
  230. package/scb-tabs/scb-tabs.js +100 -0
  231. package/scb-test-components/index.d.ts +90 -0
  232. package/scb-test-components/scb-accordion/scb-accordion-item.d.ts +39 -0
  233. package/scb-test-components/scb-accordion/scb-accordion.d.ts +27 -0
  234. package/scb-test-components/scb-app-bar/scb-app-bar.d.ts +25 -0
  235. package/scb-test-components/scb-avatar/scb-avatar.d.ts +37 -0
  236. package/scb-test-components/scb-badge/scb-badge.d.ts +28 -0
  237. package/scb-test-components/scb-breadcrumb/scb-breadcrumb-item.d.ts +15 -0
  238. package/scb-test-components/scb-breadcrumb/scb-breadcrumb.d.ts +27 -0
  239. package/scb-test-components/scb-button/scb-button.d.ts +40 -0
  240. package/scb-test-components/scb-calendar/scb-calendar-event.d.ts +15 -0
  241. package/scb-test-components/scb-calendar/scb-calendar.d.ts +77 -0
  242. package/scb-test-components/scb-calendar-card/scb-calendar-card.d.ts +45 -0
  243. package/scb-test-components/scb-card/scb-card.d.ts +101 -0
  244. package/scb-test-components/scb-checkbox/scb-checkbox-group.d.ts +23 -0
  245. package/scb-test-components/scb-checkbox/scb-checkbox.d.ts +52 -0
  246. package/scb-test-components/scb-chevron/scb-chevron.d.ts +13 -0
  247. package/scb-test-components/scb-chip/scb-chip.d.ts +61 -0
  248. package/scb-test-components/scb-collapse/scb-collapse.d.ts +29 -0
  249. package/scb-test-components/scb-cookies-consent/scb-cookies-consent.d.ts +23 -0
  250. package/scb-test-components/scb-datepicker/scb-datepicker.d.ts +39 -0
  251. package/scb-test-components/scb-dialog/scb-dialog.d.ts +72 -0
  252. package/scb-test-components/scb-divider/scb-divider.d.ts +34 -0
  253. package/scb-test-components/scb-drawer/scb-drawer.d.ts +72 -0
  254. package/scb-test-components/scb-drop-zone/scb-drop-zone.d.ts +143 -0
  255. package/scb-test-components/scb-dropdown/scb-dropdown.d.ts +70 -0
  256. package/scb-test-components/scb-fab/scb-fab.d.ts +42 -0
  257. package/scb-test-components/scb-fact-card/scb-fact-card-content.d.ts +15 -0
  258. package/scb-test-components/scb-fact-card/scb-fact-card.d.ts +49 -0
  259. package/scb-test-components/scb-footer/scb-footer-section.d.ts +20 -0
  260. package/scb-test-components/scb-footer/scb-footer.d.ts +31 -0
  261. package/scb-test-components/scb-gallery-grid/scb-gallery-grid.d.ts +20 -0
  262. package/scb-test-components/scb-grid/scb-grid-item.d.ts +32 -0
  263. package/scb-test-components/scb-grid/scb-grid.d.ts +36 -0
  264. package/scb-test-components/scb-grid/scb-stack.d.ts +32 -0
  265. package/scb-test-components/scb-header/scb-header-menu-group.d.ts +12 -0
  266. package/scb-test-components/scb-header/scb-header-menu-item.d.ts +13 -0
  267. package/scb-test-components/scb-header/scb-header-tab.d.ts +13 -0
  268. package/scb-test-components/scb-header/scb-header-utility.d.ts +14 -0
  269. package/scb-test-components/scb-header/scb-header.d.ts +132 -0
  270. package/scb-test-components/scb-horizontal-scroller/scb-horizontal-scroller.d.ts +47 -0
  271. package/scb-test-components/scb-icon-button/scb-icon-button.d.ts +76 -0
  272. package/scb-test-components/scb-keyfigure-card/scb-keyfigure-card.d.ts +46 -0
  273. package/scb-test-components/scb-link/scb-link.d.ts +25 -0
  274. package/scb-test-components/scb-list/scb-list-item.d.ts +38 -0
  275. package/scb-test-components/scb-list/scb-list.d.ts +26 -0
  276. package/scb-test-components/scb-menu/scb-menu-item.d.ts +52 -0
  277. package/scb-test-components/scb-menu/scb-menu-section.d.ts +11 -0
  278. package/scb-test-components/scb-menu/scb-menu.d.ts +25 -0
  279. package/scb-test-components/scb-menu/scb-sub-menu.d.ts +14 -0
  280. package/scb-test-components/scb-nav/scb-nav-item.d.ts +20 -0
  281. package/scb-test-components/scb-nav/scb-nav.d.ts +50 -0
  282. package/scb-test-components/scb-notification-card/scb-notification-card.d.ts +46 -0
  283. package/scb-test-components/scb-options-menu/scb-options-menu-item.d.ts +29 -0
  284. package/scb-test-components/scb-options-menu/scb-options-menu.d.ts +35 -0
  285. package/scb-test-components/scb-options-menu/scb-options-sub-menu.d.ts +11 -0
  286. package/scb-test-components/scb-overlay/scb-overlay.d.ts +24 -0
  287. package/scb-test-components/scb-pagination/scb-pagination.d.ts +36 -0
  288. package/scb-test-components/scb-progress-indicator/scb-progress-indicator.d.ts +28 -0
  289. package/scb-test-components/scb-progress-stepper/scb-progress-step.d.ts +21 -0
  290. package/scb-test-components/scb-progress-stepper/scb-progress-stepper.d.ts +22 -0
  291. package/scb-test-components/scb-radio-button/scb-radio-button.d.ts +26 -0
  292. package/scb-test-components/scb-radio-button/scb-radio-group.d.ts +49 -0
  293. package/scb-test-components/scb-scrollspy/scb-scrollspy.d.ts +217 -0
  294. package/scb-test-components/scb-search/scb-search.d.ts +96 -0
  295. package/scb-test-components/scb-segmented-button/scb-segmented-button.d.ts +80 -0
  296. package/scb-test-components/scb-segmented-button/scb-segmented-item.d.ts +21 -0
  297. package/scb-test-components/scb-select/scb-select-option.d.ts +16 -0
  298. package/scb-test-components/scb-select/scb-select.d.ts +62 -0
  299. package/scb-test-components/scb-skeleton/scb-skeleton.d.ts +25 -0
  300. package/scb-test-components/scb-slider/scb-slider.d.ts +28 -0
  301. package/scb-test-components/scb-snackbar/scb-snackbar.d.ts +24 -0
  302. package/scb-test-components/scb-status-pill/scb-status-pill.d.ts +22 -0
  303. package/scb-test-components/scb-stepper/scb-step.d.ts +22 -0
  304. package/scb-test-components/scb-stepper/scb-stepper.d.ts +47 -0
  305. package/scb-test-components/scb-switch/scb-switch.d.ts +52 -0
  306. package/scb-test-components/scb-table/scb-table.d.ts +24 -0
  307. package/scb-test-components/scb-table-advanced/scb-table-advanced.d.ts +39 -0
  308. package/scb-test-components/scb-tabs/scb-primary-tab.d.ts +15 -0
  309. package/scb-test-components/scb-tabs/scb-secondary-tab.d.ts +15 -0
  310. package/scb-test-components/scb-tabs/scb-tabs.d.ts +21 -0
  311. package/scb-test-components/scb-textfield/scb-textfield.d.ts +75 -0
  312. package/scb-test-components/scb-toc/scb-toc-item.d.ts +38 -0
  313. package/scb-test-components/scb-toc/scb-toc.d.ts +27 -0
  314. package/scb-test-components/scb-tooltip/scb-tooltip.d.ts +51 -0
  315. package/scb-test-components/scb-vignette/scb-vignette.d.ts +20 -0
  316. package/scb-test-components/scb-viz/scb-viz-actions-runtime.d.ts +26 -0
  317. package/scb-test-components/scb-viz/scb-viz-print-runtime.d.ts +27 -0
  318. package/scb-test-components/scb-viz/scb-viz-series-differentiation-registry.d.ts +21 -0
  319. package/scb-test-components/scb-viz/scb-viz-series-differentiation-runtime.d.ts +42 -0
  320. package/scb-test-components/scb-viz/scb-viz-table-runtime.d.ts +28 -0
  321. package/scb-test-components/scb-viz/scb-viz.d.ts +207 -0
  322. package/scb-textfield/scb-textfield.js +827 -0
  323. package/scb-toc/scb-toc-item.js +477 -0
  324. package/scb-toc/scb-toc.js +101 -0
  325. package/scb-tooltip/scb-tooltip.js +402 -0
  326. package/scb-typography.css +1 -1
  327. package/scb-vignette/scb-vignette.js +88 -0
  328. package/scb-viz/scb-viz-actions-runtime.js +143 -0
  329. package/scb-viz/scb-viz-print-runtime.js +121 -0
  330. package/scb-viz/scb-viz-series-differentiation-registry.js +117 -0
  331. package/scb-viz/scb-viz-series-differentiation-runtime.js +126 -0
  332. package/scb-viz/scb-viz-table-runtime.js +86 -0
  333. package/scb-viz/scb-viz.js +2195 -0
  334. package/scb-wc-selfhost.css +29 -0
  335. package/scb-wc.bundle.js +12893 -1099
  336. package/scb-wc.css +3 -2
  337. package/scb-wc.d.ts +180 -0
  338. package/index.d.ts +0 -0
  339. package/mvc/components/index.js +0 -1
@@ -0,0 +1,1358 @@
1
+ import { __decorate as e } from "../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
2
+ import "../scb-button/scb-button.js";
3
+ import "../scb-search/scb-search.js";
4
+ import "../scb-link/scb-link.js";
5
+ import "../scb-drawer/scb-drawer.js";
6
+ import "../scb-dropdown/scb-dropdown.js";
7
+ import "../scb-grid/scb-grid-item.js";
8
+ import "../scb-grid/scb-grid.js";
9
+ import "../scb-menu/scb-menu.js";
10
+ import "../scb-skeleton/scb-skeleton.js";
11
+ import { LitElement as t, css as n, html as r, nothing as i } from "lit";
12
+ import { customElement as a, property as o, state as s } from "lit/decorators.js";
13
+ import "@material/web/focus/md-focus-ring.js";
14
+ //#region src/scb-test-components/scb-header/scb-header.ts
15
+ var c, l = 0;
16
+ (() => {
17
+ if (typeof window > "u" || typeof document > "u" || !("customElements" in window) || document.head.querySelector("style[data-scb-header-pre-upgrade]")) return;
18
+ let e = document.createElement("style");
19
+ e.setAttribute("data-scb-header-pre-upgrade", ""), e.textContent = "\n scb-header:not(:defined) {\n display: block;\n margin-block-start: var(--scb-header-spacing-block-start, 0);\n margin-block-end: var(--scb-header-spacing-block-end, 0);\n background: var(--scb-header-background, transparent);\n color: var(--md-sys-color-on-surface, #1b1b1f);\n\n --scb-header-pre-logo-w: var(--icon-size-extra-extra-large, 48px);\n --scb-header-pre-logo-h: var(\n --scb-header-pre-logo-img-h,\n calc(var(--scb-header-pre-logo-w) * 1.125)\n );\n\n --scb-header-pre-top-row: calc(\n (var(--spacing-7, 24px) * 2) +\n max(\n var(--scb-header-pre-logo-h),\n var(--scb-header-pre-control-size, 48px)\n ) +\n var(--spacing-2, 4px)\n );\n --scb-header-pre-divider: var(--stroke-border, 1px);\n --scb-header-pre-tabs-row: var(--spacing-10, 40px);\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) + var(--scb-header-pre-divider)\n );\n\n min-block-size: var(--scb-header-pre-block-size);\n visibility: hidden;\n }\n\n scb-header:not(:defined) > * {\n display: none;\n }\n\n @media (min-width: 840px) {\n scb-header:not(:defined)[data-pre-has-tabs] {\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) +\n var(--scb-header-pre-tabs-row) +\n var(--scb-header-pre-divider)\n );\n }\n }\n ", document.head.appendChild(e);
20
+ let t = (e) => {
21
+ let t = String(e ?? "").trim();
22
+ if (t) return /^\d+$/.test(t) ? `var(--spacing-${Math.max(0, Math.min(14, parseInt(t, 10)))})` : t;
23
+ }, n = (e) => {
24
+ let t = String(e ?? "").trim();
25
+ if (!t) return !1;
26
+ try {
27
+ let e = JSON.parse(t);
28
+ return Array.isArray(e) && e.length > 0;
29
+ } catch {
30
+ return !1;
31
+ }
32
+ }, r = (e) => {
33
+ for (let t of Array.from(e.children)) {
34
+ let e = t.tagName.toLowerCase();
35
+ if (e === "scb-header-tab" || e === "scb-dropdown") return !0;
36
+ }
37
+ return !1;
38
+ }, i = (e) => {
39
+ r(e) || n(e.getAttribute("tabs")) ? e.setAttribute("data-pre-has-tabs", "") : e.removeAttribute("data-pre-has-tabs");
40
+ let i = t(e.getAttribute("spacing")), a = t(e.getAttribute("spacing-top")) ?? i, o = t(e.getAttribute("spacing-bottom")) ?? i;
41
+ a ? e.style.setProperty("--scb-header-spacing-block-start", a) : e.style.removeProperty("--scb-header-spacing-block-start"), o ? e.style.setProperty("--scb-header-spacing-block-end", o) : e.style.removeProperty("--scb-header-spacing-block-end");
42
+ let s = (e.getAttribute("logo-width") ?? "").trim();
43
+ s ? e.style.setProperty("--scb-header-pre-logo-w", s) : e.style.removeProperty("--scb-header-pre-logo-w");
44
+ let c = (e.getAttribute("logo-height") ?? "").trim();
45
+ c ? e.style.setProperty("--scb-header-pre-logo-img-h", c) : e.style.removeProperty("--scb-header-pre-logo-img-h");
46
+ let l = (e.getAttribute("search-height") ?? "").trim();
47
+ l ? e.style.setProperty("--scb-header-pre-control-size", l) : e.style.removeProperty("--scb-header-pre-control-size");
48
+ };
49
+ document.querySelectorAll("scb-header").forEach(i);
50
+ let a = new MutationObserver((e) => {
51
+ for (let t of e) {
52
+ if (t.type === "attributes") {
53
+ let e = t.target;
54
+ e instanceof HTMLElement && e.tagName.toLowerCase() === "scb-header" && i(e);
55
+ continue;
56
+ }
57
+ if (t.type === "childList") {
58
+ let e = [...Array.from(t.addedNodes), ...Array.from(t.removedNodes)];
59
+ for (let t of e) {
60
+ if (!(t instanceof HTMLElement)) continue;
61
+ if (t.tagName.toLowerCase() === "scb-header") {
62
+ i(t);
63
+ continue;
64
+ }
65
+ let e = t.closest?.("scb-header");
66
+ e && i(e);
67
+ }
68
+ }
69
+ }
70
+ });
71
+ a.observe(document.documentElement, {
72
+ subtree: !0,
73
+ childList: !0,
74
+ attributes: !0,
75
+ attributeFilter: [
76
+ "tabs",
77
+ "spacing",
78
+ "spacing-top",
79
+ "spacing-bottom",
80
+ "logo-width",
81
+ "logo-height",
82
+ "logo-aspect-ratio",
83
+ "search-height"
84
+ ]
85
+ }), customElements.whenDefined("scb-header").then(() => {
86
+ a.disconnect();
87
+ });
88
+ })();
89
+ var u = {
90
+ fromAttribute: (e) => e == null ? !0 : !/^(false|0|off|no)$/i.test(e),
91
+ toAttribute: (e) => String(!!e)
92
+ }, d = {
93
+ fromAttribute: (e) => e == null ? !1 : !/^(false|0|off|no)$/i.test(e),
94
+ toAttribute: (e) => String(!!e)
95
+ }, f = {
96
+ fromAttribute: (e) => e === "small" || e === "large" ? e : "medium",
97
+ toAttribute: (e) => {
98
+ let t = String(e ?? "");
99
+ return t === "small" || t === "large" ? t : null;
100
+ }
101
+ }, p = class extends t {
102
+ static {
103
+ c = this;
104
+ }
105
+ constructor() {
106
+ super(), this.maxWidth = "1440px", this.spacing = void 0, this.spacingTop = void 0, this.spacingBottom = void 0, this.size = "medium", this.logoText = "", this.logoHref = "/", this.logoSrc = "", this.logoWidth = "", this.logoHeight = "", this.logoAspectRatio = "", this.logoInvertDm = !1, this.banner = !1, this.tabs = [], this.activeTab = null, this.reserveTabs = !1, this.utilityItems = [], this.showDrawer = !0, this.showSearch = !0, this.includeUtilityInMenu = !1, this.drawerOverlay = !0, this.searchText = "", this._drawerId = "main-drawer", this._menuExpanded = !1, this._searchId = "header-search", this._slotNavItems = [], this._slotUtils = [], this._slotMenu = [], this._measureScheduled = !1, this._scheduleMeasure = () => {
107
+ this._measureScheduled || (this._measureScheduled = !0, requestAnimationFrame(() => {
108
+ this._measureScheduled = !1, this._measure();
109
+ }));
110
+ }, this._onWindowResize = () => {
111
+ this._scheduleMeasure();
112
+ }, this._onMenuSelect = (e) => {
113
+ let t = e.detail;
114
+ this.dispatchEvent(new CustomEvent("scb-menu-select", {
115
+ detail: t,
116
+ bubbles: !0,
117
+ composed: !0
118
+ })), this.dispatchEvent(new CustomEvent("scbmenuselect", {
119
+ detail: t,
120
+ bubbles: !0,
121
+ composed: !0
122
+ }));
123
+ let n = t?.item, r = typeof t?.href == "string" ? t.href : typeof t?.itemHref == "string" ? t.itemHref : typeof t?.item_href == "string" ? t.item_href : "", i = n ? n.getAttribute("item-href") ?? n.getAttribute("href") ?? "" : "";
124
+ String(r || i || "").trim() && this._closeDrawerNow();
125
+ }, this._collapsed = !1, this._unlockAtWidth = 0, this._hideLogoText = !1, this._logoTextUnlockAt = 0, this._slotWatchers = [], this._harvestPending = !1, this._harvest = () => {
126
+ let e = Array.from(this.children), t = [], n = [], r = [], i = -1, a = (e) => ({
127
+ label: e.getAttribute("label") ?? "",
128
+ href: e.getAttribute("href") ?? void 0,
129
+ icon: e.getAttribute("icon") ?? void 0
130
+ });
131
+ for (let o of e) {
132
+ let e = o.tagName.toLowerCase();
133
+ if (e === "scb-header-tab") {
134
+ let e = o.getAttribute("label") ?? "", n = o.getAttribute("href"), r = n && n.trim() !== "" ? n : void 0;
135
+ (o.hasAttribute("selected") || o.getAttribute("selected") === "true" || o.getAttribute("active") === "true" || o.getAttribute("aria-current") === "page") && i === -1 && (i = t.length), t.push({
136
+ kind: "tab",
137
+ label: e,
138
+ href: r
139
+ });
140
+ continue;
141
+ }
142
+ if (e === "scb-badge") {
143
+ let e = o.querySelector("scb-dropdown");
144
+ if (e) {
145
+ let n = e.getAttribute("label") ?? "";
146
+ (e.hasAttribute("selected") || e.getAttribute("selected") === "true" || e.getAttribute("active") === "true" || e.getAttribute("aria-current") === "page") && i === -1 && (i = t.length);
147
+ let r = `scb-header-tab-${t.length}`;
148
+ o.getAttribute("slot") !== r && o.setAttribute("slot", r), e.hasAttribute("slot") && e.removeAttribute("slot"), e.hasAttribute("as-tab") || e.setAttribute("as-tab", ""), t.push({
149
+ kind: "dropdown",
150
+ slotName: r,
151
+ label: n
152
+ });
153
+ continue;
154
+ }
155
+ }
156
+ if (e === "scb-dropdown") {
157
+ let e = o.getAttribute("label") ?? "";
158
+ (o.hasAttribute("selected") || o.getAttribute("selected") === "true" || o.getAttribute("active") === "true" || o.getAttribute("aria-current") === "page") && i === -1 && (i = t.length);
159
+ let n = `scb-header-tab-${t.length}`;
160
+ o.getAttribute("slot") !== n && o.setAttribute("slot", n), o.hasAttribute("as-tab") || o.setAttribute("as-tab", ""), t.push({
161
+ kind: "dropdown",
162
+ slotName: n,
163
+ label: e
164
+ });
165
+ continue;
166
+ }
167
+ if (e === "scb-header-utility") {
168
+ n.push({
169
+ label: o.getAttribute("label") ?? "",
170
+ href: o.getAttribute("href") ?? "#",
171
+ target: o.getAttribute("target") ?? void 0
172
+ });
173
+ continue;
174
+ }
175
+ if (e === "scb-header-menu-group") {
176
+ let e = {
177
+ label: o.getAttribute("label") ?? "",
178
+ icon: o.getAttribute("icon") ?? void 0,
179
+ children: []
180
+ };
181
+ o.querySelectorAll("scb-header-menu-item").forEach((t) => e.children.push(a(t))), r.push(e);
182
+ continue;
183
+ }
184
+ e === "scb-header-menu-item" && r.push(a(o));
185
+ }
186
+ this._slotNavItems = t, this._slotUtils = n, this._slotMenu = r, !this.hasAttribute("active-tab") && i >= 0 && (this.activeTab = i), queueMicrotask(() => {
187
+ this.updateComplete.then(() => {
188
+ this._scheduleMeasure();
189
+ });
190
+ });
191
+ }, this._measure = () => {
192
+ let e = this._top, t = this._logoGroup;
193
+ if (!e || !t) return;
194
+ let n = window.innerWidth, r = e.clientWidth, i = this._overflows(this._util), a = this._tabsOverflows(), o = n < this.BP_MD || i || a;
195
+ this._collapsed ? !o && r >= this._unlockAtWidth && this._setCollapsed(!1) : o && (this._unlockAtWidth = r + this._HYST, this._setCollapsed(!0));
196
+ let s = !1;
197
+ if (this.showSearch && n >= this.BP_SM && n < this.BP_MD && this._searchWrap) {
198
+ let i = getComputedStyle(this._searchWrap), a = Math.max(this._num(i.minWidth, this._tokenPx("--scb-header-search-min", 320)), this._tokenPx("--scb-header-search-min", 320)), o = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), c = this.showDrawer && (n < this.BP_MD || this._collapsed) ? this._menuBtn?.getBoundingClientRect().width || this._tokenPx("--icon-size-extra-extra-large", 48) : 0;
199
+ s = t.getBoundingClientRect().width + o + a + o + c + 8 > r + .5;
200
+ }
201
+ this._setHideSearch(s);
202
+ let c = !1;
203
+ if (this.showDrawer && (n < this.BP_MD || this._collapsed) && !this._visible(this._util) && !this._visible(this._searchWrap)) {
204
+ let t = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), n = this._menuBtn?.getBoundingClientRect().width || this._tokenPx("--icon-size-extra-extra-large", 48), i = (this._logoGroup?.getBoundingClientRect().width || 0) + t + n;
205
+ this._hideLogoText ? c = !(r >= this._logoTextUnlockAt) : i > r + .5 && (c = !0, this._logoTextUnlockAt = r + this._HYST);
206
+ } else c = !1, this._logoTextUnlockAt = 0;
207
+ this._setHideLogoText(c);
208
+ }, this._onDrawerOpened = () => {
209
+ this._menuExpanded = !0, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-open", {
210
+ bubbles: !0,
211
+ composed: !0
212
+ })), this.dispatchEvent(new CustomEvent("draweropen", {
213
+ bubbles: !0,
214
+ composed: !0
215
+ }));
216
+ }, this._onDrawerClosed = () => {
217
+ this._menuExpanded = !1, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-close", {
218
+ bubbles: !0,
219
+ composed: !0
220
+ })), this.dispatchEvent(new CustomEvent("drawerclose", {
221
+ bubbles: !0,
222
+ composed: !0
223
+ }));
224
+ }, this._onMenuClick = (e) => {
225
+ this.showDrawer && (this.dispatchEvent(new CustomEvent("menu-click", {
226
+ bubbles: !0,
227
+ composed: !0
228
+ })), this.dispatchEvent(new CustomEvent("menuclick", {
229
+ bubbles: !0,
230
+ composed: !0
231
+ })));
232
+ }, this._onSearchClick = (e) => {
233
+ let t = this._searchEl;
234
+ if (t?.submit && typeof t.submit == "function") {
235
+ t.submit();
236
+ return;
237
+ }
238
+ let n = t?.value ?? "";
239
+ this.searchText = n, this.dispatchEvent(new CustomEvent("search-click", {
240
+ detail: { value: n },
241
+ bubbles: !0,
242
+ composed: !0
243
+ })), this.dispatchEvent(new CustomEvent("searchclick", {
244
+ detail: { value: n },
245
+ bubbles: !0,
246
+ composed: !0
247
+ })), t?.focus?.();
248
+ }, this._onTabClick = (e) => {
249
+ let t = e.currentTarget;
250
+ if (!t) return;
251
+ let n = t.tagName.toLowerCase() === "a";
252
+ if (n && (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)) return;
253
+ let r = t.getAttribute("data-index"), i = r == null ? 0 : Number(r), a = this._getNavItems()[i];
254
+ if (a?.kind === "dropdown") return;
255
+ this.activeTab = i;
256
+ let o = a?.kind === "tab" ? a.href ?? "" : "", s = new CustomEvent("tab-change", {
257
+ detail: {
258
+ index: i,
259
+ href: o
260
+ },
261
+ bubbles: !0,
262
+ composed: !0,
263
+ cancelable: !0
264
+ }), c = new CustomEvent("tabchange", {
265
+ detail: {
266
+ index: i,
267
+ href: o
268
+ },
269
+ bubbles: !0,
270
+ composed: !0,
271
+ cancelable: !0
272
+ });
273
+ !(this.dispatchEvent(s) && this.dispatchEvent(c)) && n && e.preventDefault();
274
+ }, this._onDropdownTabActivate = (e) => {
275
+ let t = e.detail?.dataIndex, n = typeof t == "number" ? t : typeof t == "string" ? Number(t) : this._readTabIndexFromEvent(e);
276
+ if (n == null || !Number.isFinite(n)) return;
277
+ let r = this._getNavItems();
278
+ n < 0 || n >= r.length || r[n]?.kind === "dropdown" && (this.activeTab = n, this.dispatchEvent(new CustomEvent("tab-change", {
279
+ detail: {
280
+ index: n,
281
+ href: ""
282
+ },
283
+ bubbles: !0,
284
+ composed: !0,
285
+ cancelable: !0
286
+ })), this.dispatchEvent(new CustomEvent("tabchange", {
287
+ detail: {
288
+ index: n,
289
+ href: ""
290
+ },
291
+ bubbles: !0,
292
+ composed: !0,
293
+ cancelable: !0
294
+ })));
295
+ }, this._onTabsKeydown = (e) => {
296
+ let t = e.key;
297
+ if (t !== "ArrowLeft" && t !== "ArrowRight" && t !== "Home" && t !== "End") return;
298
+ let n = this._getNavItems();
299
+ if (!n.length) return;
300
+ let r = this._readTabIndexFromEvent(e);
301
+ if (r == null) return;
302
+ let i = Math.max(0, Math.min(n.length - 1, r));
303
+ t === "ArrowRight" ? i = (i + 1) % n.length : t === "ArrowLeft" ? i = (i - 1 + n.length) % n.length : t === "Home" ? i = 0 : t === "End" && (i = n.length - 1), e.preventDefault(), this._focusTabAtIndex(i);
304
+ }, this._onSearchInput = (e) => {
305
+ this.searchText = e.detail?.value ?? "", this.dispatchEvent(new CustomEvent("search-input", {
306
+ detail: { value: this.searchText },
307
+ bubbles: !0,
308
+ composed: !0
309
+ })), this.dispatchEvent(new CustomEvent("searchinput", {
310
+ detail: { value: this.searchText },
311
+ bubbles: !0,
312
+ composed: !0
313
+ })), this.dispatchEvent(new CustomEvent("search-text-change", {
314
+ detail: { value: this.searchText },
315
+ bubbles: !0,
316
+ composed: !0
317
+ })), this.dispatchEvent(new CustomEvent("searchtextchange", {
318
+ detail: { value: this.searchText },
319
+ bubbles: !0,
320
+ composed: !0
321
+ }));
322
+ }, this._onSearchSubmit = (e) => {
323
+ this.searchText = e.detail?.value ?? "", this.dispatchEvent(new CustomEvent("search-change", {
324
+ detail: {
325
+ value: this.searchText,
326
+ active: e.detail?.active
327
+ },
328
+ bubbles: !0,
329
+ composed: !0
330
+ })), this.dispatchEvent(new CustomEvent("searchchange", {
331
+ detail: {
332
+ value: this.searchText,
333
+ active: e.detail?.active
334
+ },
335
+ bubbles: !0,
336
+ composed: !0
337
+ }));
338
+ }, this._onSearchClear = () => {
339
+ this.searchText = "", this.dispatchEvent(new CustomEvent("search-text-change", {
340
+ detail: { value: "" },
341
+ bubbles: !0,
342
+ composed: !0
343
+ })), this.dispatchEvent(new CustomEvent("searchtextchange", {
344
+ detail: { value: "" },
345
+ bubbles: !0,
346
+ composed: !0
347
+ }));
348
+ };
349
+ let e = ++l;
350
+ this._drawerId = `scb-header-drawer-${e}`, this._searchId = `scb-header-search-${e}`;
351
+ }
352
+ static {
353
+ this._JSON_ARRAY = {
354
+ fromAttribute: (e) => {
355
+ if (e == null || e === "") return [];
356
+ try {
357
+ let t = JSON.parse(e);
358
+ return Array.isArray(t) ? t : [];
359
+ } catch {
360
+ return [];
361
+ }
362
+ },
363
+ toAttribute: (e) => e == null ? null : JSON.stringify(e)
364
+ };
365
+ }
366
+ static {
367
+ this.BP_SM_DEFAULT = 600;
368
+ }
369
+ static {
370
+ this.BP_MD_DEFAULT = 840;
371
+ }
372
+ get _HYST() {
373
+ return this._tokenPx("--spacing-11", 64);
374
+ }
375
+ get BP_SM() {
376
+ return this._tokenPx("--bp-sm", c.BP_SM_DEFAULT);
377
+ }
378
+ get BP_MD() {
379
+ return this._tokenPx("--bp-md", c.BP_MD_DEFAULT);
380
+ }
381
+ _scheduleHarvest() {
382
+ this._harvestPending || (this._harvestPending = !0, queueMicrotask(() => {
383
+ this._harvestPending = !1, this._harvest();
384
+ }));
385
+ }
386
+ static {
387
+ this.styles = n`
388
+ :host {
389
+ display: block;
390
+ margin-block-start: var(--scb-header-spacing-block-start, 0);
391
+ margin-block-end: var(--scb-header-spacing-block-end, 0);
392
+ background: var(--scb-header-background, transparent);
393
+ color: var(--md-sys-color-on-surface, #1b1b1f);
394
+ --scb-header-search-max: 380px;
395
+ --scb-header-search-min: 250px;
396
+
397
+ --scb-header-logo-w: var(--icon-size-extra-extra-large, 48px);
398
+ --scb-header-logo-h: calc(var(--scb-header-logo-w) * 1.125);
399
+
400
+
401
+ --scb-header-logo-slot-w: var(--scb-header-logo-img-w, auto);
402
+ --scb-header-logo-slot-h: var(--scb-header-logo-img-h, var(--scb-header-logo-h));
403
+ --scb-header-logo-slot-aspect-ratio: var(--scb-header-logo-img-aspect-ratio, 48 / 54);
404
+
405
+ --scb-header-logo-text-font-size: var(
406
+ --md-sys-typescale-body-medium-size,
407
+ 1rem
408
+ );
409
+ --scb-header-logo-text-line-height: var(
410
+ --md-sys-typescale-body-medium-line-height,
411
+ 1.5rem
412
+ );
413
+
414
+ --scb-header-utility-font-size: var(
415
+ --md-sys-typescale-body-medium-size,
416
+ 1rem
417
+ );
418
+ --scb-header-utility-line-height: var(
419
+ --md-sys-typescale-body-medium-line-height,
420
+ 1.5rem
421
+ );
422
+
423
+ --scb-header-tab-font-size: var(
424
+ --md-sys-typescale-title-small-size,
425
+ 1rem
426
+ );
427
+ --scb-header-tab-line-height: var(
428
+ --md-sys-typescale-title-small-line-height,
429
+ 1.5rem
430
+ );
431
+ }
432
+
433
+ :host([size='small']) {
434
+ --scb-header-logo-text-font-size: var(
435
+ --md-sys-typescale-body-small-size,
436
+ 0.875rem
437
+ );
438
+ --scb-header-logo-text-line-height: var(
439
+ --md-sys-typescale-body-small-line-height,
440
+ 1.25rem
441
+ );
442
+
443
+ --scb-header-utility-font-size: var(
444
+ --md-sys-typescale-body-small-size,
445
+ 0.875rem
446
+ );
447
+ --scb-header-utility-line-height: var(
448
+ --md-sys-typescale-body-small-line-height,
449
+ 1.25rem
450
+ );
451
+
452
+ --scb-header-tab-font-size: var(
453
+ --md-sys-typescale-label-small-size,
454
+ 0.875rem
455
+ );
456
+ --scb-header-tab-line-height: var(
457
+ --md-sys-typescale-label-small-line-height,
458
+ 1.25rem
459
+ );
460
+ }
461
+
462
+ :host([size='large']) {
463
+ --scb-header-logo-text-font-size: var(
464
+ --md-sys-typescale-body-large-size,
465
+ 1.125rem
466
+ );
467
+ --scb-header-logo-text-line-height: var(
468
+ --md-sys-typescale-body-large-line-height,
469
+ 1.625rem
470
+ );
471
+
472
+ --scb-header-utility-font-size: var(
473
+ --md-sys-typescale-body-large-size,
474
+ 1.125rem
475
+ );
476
+ --scb-header-utility-line-height: var(
477
+ --md-sys-typescale-body-large-line-height,
478
+ 1.625rem
479
+ );
480
+
481
+ --scb-header-tab-font-size: var(
482
+ --md-sys-typescale-title-medium-size,
483
+ 1.125rem
484
+ );
485
+ --scb-header-tab-line-height: var(
486
+ --md-sys-typescale-title-medium-line-height,
487
+ 1.625rem
488
+ );
489
+ }
490
+
491
+ .top-row {
492
+ display: flex;
493
+ align-items: center;
494
+ gap: var(--spacing-7, 24px);
495
+ padding-block: var(--spacing-5, 16px);
496
+ min-width: 0;
497
+ }
498
+
499
+ .logo-wrap {
500
+ display: inline-block;
501
+ position: relative;
502
+ border-radius: var(
503
+ --scb-header-logo-focus-ring-radius,
504
+ var(--md-sys-shape-corner-small, 4px)
505
+ );
506
+ margin-top: var(--spacing-2, 4px);
507
+ }
508
+ .logo-wrap md-focus-ring {
509
+ position: absolute;
510
+ inset: var(--spacing-neg-2, -4px);
511
+ pointer-events: none;
512
+ display: none;
513
+ border-radius: inherit;
514
+ }
515
+ .logo-group:focus-visible + md-focus-ring {
516
+ display: block;
517
+ }
518
+
519
+ .logo-group {
520
+ display: inline-flex;
521
+ align-items: center;
522
+ gap: var(--spacing-5, 16px);
523
+ text-decoration: none;
524
+ color: inherit;
525
+ flex-shrink: 0;
526
+ min-width: 0;
527
+ }
528
+ .logo-group:focus,
529
+ .logo-group:focus-visible {
530
+ outline: none;
531
+ }
532
+ .logo-group svg {
533
+ width: var(--scb-header-logo-slot-w);
534
+ height: var(--scb-header-logo-slot-h);
535
+ aspect-ratio: var(--scb-header-logo-slot-aspect-ratio);
536
+ display: block;
537
+ color: var(--md-sys-color-on-surface);
538
+ }
539
+
540
+
541
+ .logo-group img {
542
+ width: var(--scb-header-logo-slot-w);
543
+ height: var(--scb-header-logo-slot-h);
544
+ aspect-ratio: var(--scb-header-logo-slot-aspect-ratio);
545
+ display: block;
546
+ object-fit: contain;
547
+ }
548
+
549
+ :host([logo-invert-dm][theme='dark']) .logo-group img,
550
+ :host([logo-invert-dm]):host-context([theme='dark']) .logo-group img {
551
+ filter: brightness(0) invert(1);
552
+ }
553
+ .logo-text {
554
+ font-family: var(--brand-font, Inter), sans-serif;
555
+ font-size: var(
556
+ --scb-header-logo-text-font-size,
557
+ var(--md-sys-typescale-body-medium-size, 1rem)
558
+ );
559
+ line-height: var(
560
+ --scb-header-logo-text-line-height,
561
+ var(--md-sys-typescale-body-medium-line-height, 1.5rem)
562
+ );
563
+ font-weight: var(--weight-regular, 400);
564
+ letter-spacing: var(
565
+ --md-sys-typescale-body-medium-tracking,
566
+ -0.009375rem
567
+ );
568
+ color: var(--md-sys-color-on-surface, var(--p-20));
569
+ white-space: nowrap;
570
+ }
571
+ @media (max-width: 360px) {
572
+ .logo-text {
573
+ margin-right: calc(var(--spacing-9, 40px) * -1);
574
+ }
575
+ }
576
+
577
+ .actions {
578
+ display: flex;
579
+ align-items: center;
580
+ gap: var(--spacing-7, 24px);
581
+ margin-left: auto;
582
+ width: 100%;
583
+ justify-content: flex-end;
584
+ min-width: 0;
585
+ }
586
+
587
+ .utility {
588
+ display: none;
589
+ flex-wrap: nowrap;
590
+ align-items: center;
591
+ gap: var(--spacing-5, 16px);
592
+ min-width: 0;
593
+ }
594
+ .utility scb-link {
595
+ font-family: var(--md-sys-typescale-body-medium-font, var(--brand-font)),
596
+ sans-serif;
597
+ font-size: var(
598
+ --scb-header-utility-font-size,
599
+ var(--md-sys-typescale-body-medium-size)
600
+ );
601
+ line-height: var(
602
+ --scb-header-utility-line-height,
603
+ var(--md-sys-typescale-body-medium-line-height)
604
+ );
605
+ font-weight: var(--md-sys-typescale-body-medium-weight);
606
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
607
+ --scb-link-color: var(--md-sys-color-primary);
608
+ --scb-link-white-space: nowrap;
609
+ }
610
+
611
+
612
+ @media (min-width: 840px) {
613
+ .utility {
614
+ display: flex;
615
+ }
616
+ }
617
+ :host([data-collapsed]) .utility {
618
+ display: none !important;
619
+ }
620
+
621
+ .menu-trigger {
622
+ display: none;
623
+ align-self: stretch;
624
+ color: var(--md-sys-color-on-surface, #1b1b1f);
625
+ --md-sys-color-primary: var(--md-sys-color-on-surface, #1b1b1f);
626
+ }
627
+ @media (max-width: 839.98px) {
628
+ .menu-trigger {
629
+ display: inline-flex;
630
+ }
631
+ }
632
+ :host([data-collapsed]) .menu-trigger {
633
+ display: inline-flex;
634
+ }
635
+
636
+ .search {
637
+ display: none;
638
+ align-items: stretch;
639
+ gap: var(--spacing-3, 8px);
640
+ flex: 0 1 var(--scb-header-search-max);
641
+ max-width: var(--scb-header-search-max);
642
+ min-width: var(--scb-header-search-min);
643
+ }
644
+ scb-search {
645
+ width: 100%;
646
+ }
647
+ .search scb-search {
648
+ flex: 1 1 auto;
649
+ width: auto;
650
+ }
651
+ .search scb-button {
652
+ flex: 0 0 auto;
653
+ }
654
+ @media (min-width: 600px) {
655
+ .search {
656
+ display: flex;
657
+ }
658
+ }
659
+ @media (min-width: 600px) and (max-width: 839.98px) {
660
+ :host([data-hide-search]) .search {
661
+ display: none !important;
662
+ }
663
+ }
664
+
665
+ :host([data-no-utility]) .actions {
666
+ gap: var(--spacing-5, 16px);
667
+ }
668
+ :host([data-no-utility]) .search {
669
+ flex: 1 1 var(--scb-header-search-max);
670
+ max-width: var(--scb-header-search-max);
671
+ min-width: var(--scb-header-search-min);
672
+ }
673
+
674
+ .tabs-inset {
675
+ display: inline-block;
676
+ width: fit-content;
677
+ max-width: 100%;
678
+ }
679
+ @media (max-width: 839.98px) {
680
+ .tabs-inset {
681
+ display: none;
682
+ }
683
+ }
684
+
685
+ .tabs-nav {
686
+ display: inline-flex;
687
+ flex-wrap: nowrap;
688
+ align-items: center;
689
+ gap: var(--spacing-6, 18px);
690
+ min-height: calc(var(--spacing-10, 40px));
691
+ position: relative;
692
+ }
693
+
694
+ .tabs-nav--skeleton {
695
+ align-items: center;
696
+ }
697
+
698
+ .tabs-nav--skeleton scb-skeleton {
699
+ flex: 0 0 auto;
700
+ }
701
+
702
+ .tab-wrap {
703
+ position: relative;
704
+ display: inline-flex;
705
+ align-items: stretch;
706
+
707
+ }
708
+
709
+ .tab-wrap md-focus-ring {
710
+ position: absolute;
711
+ inset-block: var(--spacing-1, 2px);
712
+ inset-inline: var(--spacing-neg-2, -4px);
713
+ pointer-events: none;
714
+ display: none;
715
+ border-radius: 5px;
716
+ }
717
+
718
+
719
+ .tab-link {
720
+ position: relative;
721
+ display: inline-flex;
722
+ align-items: center;
723
+ justify-content: center;
724
+ padding-block: var(--spacing-4, 12px);
725
+ padding: 0;
726
+ border: none;
727
+ background: none;
728
+ text-decoration: none;
729
+ cursor: pointer;
730
+ font-family: var(
731
+ --md-sys-typescale-title-small-font,
732
+ var(--brand-font, Inter)
733
+ );
734
+ font-size: var(
735
+ --scb-header-tab-font-size,
736
+ var(--md-sys-typescale-title-small-size, 1rem)
737
+ );
738
+ line-height: var(
739
+ --scb-header-tab-line-height,
740
+ var(--md-sys-typescale-title-small-line-height, 1.5rem)
741
+ );
742
+ font-weight: var(--md-sys-typescale-title-small-weight, 500);
743
+ letter-spacing: var(--md-sys-typescale-title-small-tracking, 0);
744
+ color: var(--md-sys-color-on-surface);
745
+ white-space: nowrap;
746
+ border-radius: 0;
747
+ outline: none;
748
+ }
749
+
750
+ .tab-link[aria-current='page'] {
751
+ color: var(--md-sys-color-primary);
752
+ }
753
+
754
+ .tab-link::after {
755
+ content: '';
756
+ position: absolute;
757
+ left: 0;
758
+ right: 0;
759
+ bottom: 0;
760
+ height: 3px;
761
+ border-radius: 999px 999px 0 0;
762
+ background-color: transparent;
763
+ }
764
+
765
+ .tab-link[aria-current='page']::after {
766
+ background-color: var(--md-sys-color-primary);
767
+ }
768
+
769
+ .tab-link:focus-visible + md-focus-ring {
770
+ display: block;
771
+ }
772
+
773
+ .divider {
774
+ border-bottom: var(--stroke-border, 1px) solid
775
+ var(--md-sys-color-outline-variant, #e0e0e0);
776
+ position: relative;
777
+ z-index: 0;
778
+ }
779
+
780
+ :host([data-hide-logo-text]) .logo-text {
781
+ display: none;
782
+ }
783
+ `;
784
+ }
785
+ get _top() {
786
+ return this.renderRoot.querySelector(".top-row");
787
+ }
788
+ get _util() {
789
+ return this.renderRoot.querySelector(".utility");
790
+ }
791
+ get _logoGroup() {
792
+ return this.renderRoot.querySelector(".logo-wrap") || this.renderRoot.querySelector(".logo-group");
793
+ }
794
+ get _searchWrap() {
795
+ return this.renderRoot.querySelector(".search");
796
+ }
797
+ get _menuBtn() {
798
+ return this.renderRoot.querySelector(".menu-trigger");
799
+ }
800
+ get _searchEl() {
801
+ return this.renderRoot.querySelector(`#${this._searchId}`);
802
+ }
803
+ get _tabsNav() {
804
+ return this.renderRoot.querySelector(".tabs-nav");
805
+ }
806
+ _attachSlotObservers() {
807
+ this._slotMo?.disconnect(), this._slotWatchers.forEach((e) => e.disconnect()), this._slotWatchers = [];
808
+ let e = [
809
+ "label",
810
+ "href",
811
+ "icon",
812
+ "target",
813
+ "selected",
814
+ "aria-current",
815
+ "active"
816
+ ], t = (t) => {
817
+ let n = new MutationObserver((e) => {
818
+ this._scheduleHarvest();
819
+ });
820
+ this._slotWatchers.push(n), n.observe(t, {
821
+ attributes: !0,
822
+ attributeFilter: e
823
+ });
824
+ }, n = () => {
825
+ this._slotWatchers.forEach((e) => e.disconnect()), this._slotWatchers = [];
826
+ let e = Array.from(this.children);
827
+ for (let r of e) {
828
+ let e = r.tagName.toLowerCase();
829
+ if ((e === "scb-header-tab" || e === "scb-dropdown" || e === "scb-header-utility" || e === "scb-header-menu-item" || e === "scb-header-menu-group" || e === "scb-badge") && t(r), e === "scb-badge") {
830
+ let e = r, i = new MutationObserver((e) => {
831
+ n(), this._scheduleHarvest();
832
+ });
833
+ this._slotWatchers.push(i), i.observe(e, { childList: !0 });
834
+ let a = e.querySelector("scb-dropdown");
835
+ a && t(a);
836
+ continue;
837
+ }
838
+ if (e === "scb-header-menu-group") {
839
+ let e = r, i = new MutationObserver((e) => {
840
+ n(), this._scheduleHarvest();
841
+ });
842
+ this._slotWatchers.push(i), i.observe(e, {
843
+ childList: !0,
844
+ subtree: !0
845
+ }), e.querySelectorAll("scb-header-menu-item").forEach((e) => t(e));
846
+ }
847
+ }
848
+ }, r = new MutationObserver((e) => {
849
+ let t = !1;
850
+ for (let n of e) if (n.type === "childList") {
851
+ t = !0;
852
+ break;
853
+ }
854
+ t && n(), this._scheduleHarvest();
855
+ });
856
+ this._slotMo = r, r.observe(this, { childList: !0 }), n();
857
+ }
858
+ _setCollapsed(e) {
859
+ this._collapsed !== e && (this._collapsed = e, e ? this.setAttribute("data-collapsed", "") : this.removeAttribute("data-collapsed"));
860
+ }
861
+ _setHideSearch(e) {
862
+ e ? this.setAttribute("data-hide-search", "") : this.removeAttribute("data-hide-search");
863
+ }
864
+ _setHideLogoText(e) {
865
+ this._hideLogoText !== e && (this._hideLogoText = e, e ? this.setAttribute("data-hide-logo-text", "") : this.removeAttribute("data-hide-logo-text"));
866
+ }
867
+ _num(e, t) {
868
+ let n = Number.parseFloat(String(e ?? "").trim());
869
+ return Number.isFinite(n) ? n : t;
870
+ }
871
+ _tokenPx(e, t) {
872
+ let n = getComputedStyle(this);
873
+ return this._num(n.getPropertyValue(e), t);
874
+ }
875
+ _visible(e) {
876
+ return e ? getComputedStyle(e).display !== "none" : !1;
877
+ }
878
+ _overflows(e) {
879
+ return !e || !this._visible(e) ? !1 : e.scrollWidth > e.clientWidth + 1;
880
+ }
881
+ _tabsOverflows() {
882
+ let e = this._tabsNav;
883
+ if (!e || !this._visible(e)) return !1;
884
+ let t = Array.from(e.querySelectorAll(".tab-wrap"));
885
+ if (t.length === 0) return !1;
886
+ let n = e.getBoundingClientRect(), r = n.left;
887
+ for (let e of t) {
888
+ let t = e.getBoundingClientRect();
889
+ t.width <= 0 || t.right > r && (r = t.right);
890
+ }
891
+ return r - n.left > n.width + 1;
892
+ }
893
+ firstUpdated() {
894
+ this.updateComplete.then(() => {
895
+ this._harvest(), this._attachSlotObservers(), this._syncDropdownTabs();
896
+ });
897
+ let e = this._top;
898
+ e && (this._ro = new ResizeObserver(() => this._scheduleMeasure()), this._ro.observe(e)), window.addEventListener("resize", this._onWindowResize, { passive: !0 });
899
+ }
900
+ updated(e) {
901
+ e.has("searchMax") && this.style.setProperty("--scb-header-search-max", this.searchMax ?? "480px"), e.has("searchMin") && this.style.setProperty("--scb-header-search-min", this.searchMin ?? "320px"), e.has("searchHeight") && (this.searchHeight && this.searchHeight.trim() ? this.style.setProperty("--scb-search-height", this.searchHeight.trim()) : this.style.removeProperty("--scb-search-height")), (e.has("logoWidth") || e.has("logoHeight") || e.has("logoAspectRatio")) && this._applyLogoSizing(), (e.has("spacing") || e.has("spacingTop") || e.has("spacingBottom")) && this._applySpacing(), (e.has("utilityItems") || e.has("tabs") || e.has("logoText") || e.has("logoSrc") || e.has("logoWidth") || e.has("logoHeight") || e.has("logoAspectRatio") || e.has("activeTab") || e.has("_slotNavItems") || e.has("_slotUtils") || e.has("_slotMenu") || e.has("showDrawer") || e.has("showSearch") || e.has("searchMax") || e.has("searchMin") || e.has("size")) && this.updateComplete.then(() => {
902
+ this._scheduleMeasure();
903
+ }), (e.has("activeTab") || e.has("_slotNavItems") || e.has("tabs") || e.has("size")) && this.updateComplete.then(() => {
904
+ this._syncDropdownTabs();
905
+ });
906
+ }
907
+ disconnectedCallback() {
908
+ this._ro?.disconnect(), this._slotMo?.disconnect(), this._slotWatchers.forEach((e) => e.disconnect()), this._slotWatchers = [], window.removeEventListener("resize", this._onWindowResize), super.disconnectedCallback();
909
+ }
910
+ _mapSpacingToken(e) {
911
+ if (!e) return;
912
+ let t = String(e).trim();
913
+ if (t) return /^\d+$/.test(t) ? `var(--spacing-${Math.max(0, Math.min(14, parseInt(t, 10)))})` : t;
914
+ }
915
+ _applySpacing() {
916
+ let e = this._mapSpacingToken(this.spacing), t = this._mapSpacingToken(this.spacingTop) ?? e, n = this._mapSpacingToken(this.spacingBottom) ?? e;
917
+ t ? this.style.setProperty("--scb-header-spacing-block-start", t) : this.style.removeProperty("--scb-header-spacing-block-start"), n ? this.style.setProperty("--scb-header-spacing-block-end", n) : this.style.removeProperty("--scb-header-spacing-block-end");
918
+ }
919
+ _applyLogoSizing() {
920
+ let e = (this.logoWidth ?? "").trim(), t = (this.logoHeight ?? "").trim(), n = (this.logoAspectRatio ?? "").trim();
921
+ e ? this.style.setProperty("--scb-header-logo-img-w", e) : this.style.removeProperty("--scb-header-logo-img-w"), t ? this.style.setProperty("--scb-header-logo-img-h", t) : e ? this.style.setProperty("--scb-header-logo-img-h", "auto") : this.style.removeProperty("--scb-header-logo-img-h"), n ? this.style.setProperty("--scb-header-logo-img-aspect-ratio", n) : this.style.removeProperty("--scb-header-logo-img-aspect-ratio");
922
+ }
923
+ _closeDrawerNow() {
924
+ let e = this.renderRoot.querySelector(`#${this._drawerId}`);
925
+ e && (e.open = !1);
926
+ }
927
+ _syncMenuBtnAria() {
928
+ let e = this.renderRoot.querySelector(".menu-trigger");
929
+ e && e.setAttribute("aria-expanded", String(this._menuExpanded));
930
+ }
931
+ _getNavItems() {
932
+ return this._slotNavItems.length ? this._slotNavItems : (this.tabs ?? []).map((e) => ({
933
+ kind: "tab",
934
+ ...e
935
+ }));
936
+ }
937
+ _getDropdownForSlot(e) {
938
+ let t = this.querySelector(`[slot="${e}"]`);
939
+ return t ? t.tagName.toLowerCase() === "scb-dropdown" ? t : t.querySelector("scb-dropdown") : null;
940
+ }
941
+ _syncDropdownTabs() {
942
+ this._getNavItems().forEach((e, t) => {
943
+ if (e.kind !== "dropdown") return;
944
+ let n = this._getDropdownForSlot(e.slotName);
945
+ if (!n) return;
946
+ let r = String(t);
947
+ n.getAttribute("data-index") !== r && n.setAttribute("data-index", r), n.hasAttribute("as-tab") || n.setAttribute("as-tab", "");
948
+ let i = this.size, a = n;
949
+ a?.size !== i && (a.size = i), t === this.activeTab ? n.getAttribute("aria-current") !== "page" && n.setAttribute("aria-current", "page") : n.hasAttribute("aria-current") && n.removeAttribute("aria-current");
950
+ });
951
+ }
952
+ _readTabIndexFromEvent(e) {
953
+ let t = e.composedPath ? e.composedPath() : [];
954
+ for (let e of t) {
955
+ if (!(e instanceof HTMLElement)) continue;
956
+ let t = e.getAttribute("data-index");
957
+ if (t == null) continue;
958
+ let n = Number(t);
959
+ if (Number.isFinite(n)) return n;
960
+ }
961
+ return null;
962
+ }
963
+ _focusTabAtIndex(e) {
964
+ let t = this._getNavItems()[e];
965
+ if (t) {
966
+ if (t.kind === "dropdown") {
967
+ this._getDropdownForSlot(t.slotName)?.focus?.();
968
+ return;
969
+ }
970
+ this.renderRoot.querySelector(`.tab-link[data-index="${e}"]`)?.focus?.();
971
+ }
972
+ }
973
+ _renderMenuNodes(e) {
974
+ return !e || e.length === 0 ? r`` : r`${e.map((e) => this._renderMenuNode(e))}`;
975
+ }
976
+ _renderMenuNode(e) {
977
+ let t = Array.isArray(e.children) && e.children.length > 0, n = (e.href ?? "").trim(), a = (e.icon ?? "").trim();
978
+ return r`
979
+ <scb-menu-item
980
+ label=${e.label}
981
+ ?selected=${!1}
982
+ leading-icon=${a || i}
983
+ item-href=${n || i}
984
+ >
985
+ ${t ? r`
986
+ <scb-sub-menu label=${e.label}>
987
+ ${e.children.map((e) => this._renderMenuNode(e))}
988
+ </scb-sub-menu>
989
+ ` : i}
990
+ </scb-menu-item>
991
+ `;
992
+ }
993
+ _syncFlags(e, t) {
994
+ this.toggleAttribute("data-no-utility", e), this.toggleAttribute("data-no-search", t);
995
+ }
996
+ render() {
997
+ let e = this._getNavItems(), t = this._slotUtils.length ? this._slotUtils : this.utilityItems, n = this._slotMenu.length ? this._slotMenu : this.menuData ?? [], a = this.querySelector("[slot=\"drawer-menu\"]") !== null;
998
+ this._syncFlags(t.length === 0, !this.showSearch);
999
+ let o = this.searchHeight && this.searchHeight.trim() ? `--scb-search-height:${this.searchHeight.trim()}` : i, s = e.length > 0 || this.reserveTabs;
1000
+ return r`
1001
+ <slot
1002
+ id="data-slot"
1003
+ @slotchange=${() => {
1004
+ this._harvest(), this._attachSlotObservers();
1005
+ }}
1006
+ hidden
1007
+ ></slot>
1008
+
1009
+ <div
1010
+ class="header-landmark"
1011
+ role=${this.banner ? "banner" : i}
1012
+ aria-label=${this.banner && this.bannerLabel ? this.bannerLabel : i}
1013
+ >
1014
+ <scb-grid
1015
+ cols-compact="4"
1016
+ cols-medium="8"
1017
+ cols-expanded="12"
1018
+ max-width=${this.maxWidth}
1019
+ gap="0"
1020
+ >
1021
+ <scb-grid-item
1022
+ col-span-compact="4"
1023
+ col-span-medium="8"
1024
+ col-span-expanded="12"
1025
+ >
1026
+ <div class="top-row">
1027
+ <div class="logo-wrap">
1028
+ <a
1029
+ class="logo-group"
1030
+ href=${this.logoHref}
1031
+ aria-label="GÃ¥ till startsidan"
1032
+ >
1033
+ ${this._renderLogo()}
1034
+ <span class="logo-text">${this.logoText}</span>
1035
+ </a>
1036
+ <md-focus-ring></md-focus-ring>
1037
+ </div>
1038
+
1039
+ <div class="actions">
1040
+ <nav class="utility" aria-label="Funktionslänkar">
1041
+ ${t.map((e) => r`
1042
+ <scb-link
1043
+ .href=${e.href}
1044
+ .target=${e.target ?? void 0}
1045
+ >${e.label}</scb-link
1046
+ >
1047
+ `)}
1048
+ </nav>
1049
+
1050
+ ${this.showSearch ? r`
1051
+ <div class="search" style=${o}>
1052
+ <scb-search
1053
+ id=${this._searchId}
1054
+ .size=${this.size}
1055
+ style=${o}
1056
+ .value=${this.searchText}
1057
+ .supportingText=${this.searchPlaceholder ?? ""}
1058
+ @scb-search-input=${this._onSearchInput}
1059
+ @scb-search-submit=${this._onSearchSubmit}
1060
+ @scb-search-clear=${this._onSearchClear}
1061
+ ></scb-search>
1062
+ <scb-button
1063
+ variant="filled-tonal"
1064
+ label="Sök"
1065
+ .size=${this.size}
1066
+ @click=${this._onSearchClick}
1067
+ ></scb-button>
1068
+ </div>
1069
+ ` : i}
1070
+ ${this.showDrawer ? r`
1071
+ <scb-button
1072
+ class="menu-trigger"
1073
+ variant="text"
1074
+ label="Meny"
1075
+ icon="menu"
1076
+ trailing-icon
1077
+ .size=${this.size}
1078
+ aria-controls=${this._drawerId}
1079
+ aria-haspopup="dialog"
1080
+ aria-expanded=${String(this._menuExpanded)}
1081
+ title="Öppna meny"
1082
+ @click=${this._onMenuClick}
1083
+ ></scb-button>
1084
+ ` : i}
1085
+ </div>
1086
+
1087
+ </div>
1088
+ </scb-grid-item>
1089
+
1090
+ <scb-grid-item
1091
+ col-span-compact="4"
1092
+ col-span-medium="8"
1093
+ col-span-expanded="12"
1094
+ >
1095
+ ${s ? e.length ? r`
1096
+ <div class="tabs-inset">
1097
+ <nav
1098
+ class="tabs-nav"
1099
+ aria-label="Huvudnavigering"
1100
+ @keydown=${this._onTabsKeydown}
1101
+ @scb-dropdown-tab-activate=${this._onDropdownTabActivate}
1102
+ >
1103
+ ${e.map((e, t) => e.kind === "dropdown" ? r`
1104
+ <div class="tab-wrap">
1105
+ <slot name=${e.slotName}></slot>
1106
+ </div>
1107
+ ` : e.href ? r`
1108
+ <div class="tab-wrap">
1109
+ <a
1110
+ class="tab-link"
1111
+ href=${e.href}
1112
+ data-index=${t}
1113
+ aria-current=${t === this.activeTab ? "page" : i}
1114
+ @click=${this._onTabClick}
1115
+ >
1116
+ ${e.label}
1117
+ </a>
1118
+ <md-focus-ring></md-focus-ring>
1119
+ </div>
1120
+ ` : r`
1121
+ <div class="tab-wrap">
1122
+ <button
1123
+ type="button"
1124
+ class="tab-link"
1125
+ data-index=${t}
1126
+ aria-current=${t === this.activeTab ? "page" : i}
1127
+ @click=${this._onTabClick}
1128
+ >
1129
+ ${e.label}
1130
+ </button>
1131
+ <md-focus-ring></md-focus-ring>
1132
+ </div>
1133
+ `)}
1134
+ </nav>
1135
+ </div>
1136
+ ` : r`
1137
+ <div class="tabs-inset">
1138
+ <div class="tabs-nav tabs-nav--skeleton" aria-hidden="true">
1139
+ ${this._renderTabSkeletons()}
1140
+ </div>
1141
+ </div>
1142
+ ` : i}
1143
+ <div class="divider" role="presentation"></div>
1144
+ </scb-grid-item>
1145
+ </scb-grid>
1146
+ </div>
1147
+
1148
+ ${this.showDrawer ? r`
1149
+ <scb-drawer
1150
+ id=${this._drawerId}
1151
+ floating
1152
+ right
1153
+ ?overlay=${this.drawerOverlay}
1154
+ ?lock-scroll=${this.drawerOverlay}
1155
+ ?modal=${this.drawerOverlay}
1156
+ style="--scb-drawer-padding: 0px;"
1157
+ @scb-drawer-opened=${this._onDrawerOpened}
1158
+ @scb-drawer-closed=${this._onDrawerClosed}
1159
+ @scb-menu-select=${this._onMenuSelect}
1160
+ >
1161
+ <slot name="drawer-menu"></slot>
1162
+
1163
+ ${a ? i : r`
1164
+ <scb-menu
1165
+ .label=${this.menuLabel ?? ""}
1166
+ .subLabel=${this.menuSubLabel ?? ""}
1167
+ >
1168
+ <scb-search
1169
+ .size=${this.size}
1170
+ .supportingText=${this.menuSearchPlaceholder ?? ""}
1171
+ ></scb-search>
1172
+
1173
+ ${this.menuSectionLabel ? r`
1174
+ <scb-menu-section
1175
+ .label=${this.menuSectionLabel}
1176
+ ></scb-menu-section>
1177
+ ` : i}
1178
+
1179
+ ${this._renderMenuNodes(n)}
1180
+
1181
+ ${this.includeUtilityInMenu && (t?.length ?? 0) > 0 ? r`
1182
+ <scb-menu-section label=''></scb-menu-section>
1183
+ ${t.map((e) => r`
1184
+ <scb-menu-item
1185
+ label=${e.label}
1186
+ item-href=${e.href}
1187
+ ></scb-menu-item>
1188
+ `)}
1189
+ ` : i}
1190
+ </scb-menu>
1191
+ `}
1192
+ </scb-drawer>
1193
+ ` : i}
1194
+ `;
1195
+ }
1196
+ _renderTabSkeletons() {
1197
+ let e = [
1198
+ "96px",
1199
+ "72px",
1200
+ "88px",
1201
+ "64px"
1202
+ ], t = (this.reserveTabsWidths ?? "").split(/[\s,]+/).map((e) => e.trim()).filter(Boolean).map((e) => /^\d+(?:\.\d+)?$/.test(e) ? `${e}px` : e), n = t.length > 0 ? t : e, i = Number(this.reserveTabsCount), a = Number.isFinite(i) && i > 0 ? Math.floor(i) : t.length > 0 ? t.length : e.length;
1203
+ return r`${Array.from({ length: a }, (e, t) => n[t % n.length]).map((e) => r`<scb-skeleton variant="rounded" width=${e} height="16px"></scb-skeleton>`)}`;
1204
+ }
1205
+ _renderLogo() {
1206
+ let e = (this.logoSrc ?? "").trim();
1207
+ return e ? r`<img class="logo" src=${e} alt="" aria-hidden="true" />` : r`
1208
+ <svg
1209
+ class="logo"
1210
+ viewBox="0 0 48 54"
1211
+ xmlns="http://www.w3.org/2000/svg"
1212
+ aria-hidden="true"
1213
+ focusable="false"
1214
+ >
1215
+ <g clip-path="url(#clip0_scb_header)">
1216
+ <path
1217
+ fill="currentColor"
1218
+ fill-rule="evenodd"
1219
+ clip-rule="evenodd"
1220
+ d="M25.6527 6.07812C25.6527 5.15909 24.9076 4.41482 23.9877 4.41482C23.0677 4.41482 22.3226 5.15909 22.3226 6.07812V48.0391C22.3226 48.9601 23.0677 49.7061 23.9877 49.7061C24.9076 49.7061 25.6527 48.9601 25.6527 48.0391V32.9153C25.6527 32.8056 25.744 32.7163 25.8527 32.7163H31.3245C31.4342 32.7163 31.5245 32.8056 31.5245 32.9153V48.1711C31.5245 51.3899 28.1496 54 23.9877 54C19.8241 54 16.4501 51.3899 16.4501 48.1711V5.82708C16.4501 2.6103 19.8241 0 23.9877 0C28.1496 0 31.5245 2.6103 31.5245 5.82708V20.8893C31.5245 21.0009 31.4342 21.0883 31.3245 21.0883H25.8527C25.744 21.0883 25.6527 21.0009 25.6527 20.8893V6.07812Z"
1221
+ />
1222
+ <path
1223
+ fill="currentColor"
1224
+ fill-rule="evenodd"
1225
+ clip-rule="evenodd"
1226
+ d="M0.198901 10.8446C-0.152687 13.293 -0.0290117 17.3078 0.49751 19.5627C1.07611 22.0203 4.41288 26.9878 5.91609 29.2948C7.42127 31.5999 9.42869 34.0073 9.39892 37.2185V44.9097C9.39892 45.8287 8.65375 46.5748 7.73382 46.5748C6.81659 46.5748 6.0715 45.8287 6.0715 44.9097V33.1217C6.0715 33.012 5.9803 32.9208 5.86868 32.9208H0.39893C0.287311 32.9208 0.198901 33.012 0.198901 33.1217V45.2613C0.198901 48.4798 3.57282 51.0901 7.73382 51.0901C11.8975 51.0901 15.2714 48.4798 15.2714 45.2613V37.2185C15.2463 31.7023 13.7412 30.8985 11.7877 27.5906C10.3886 25.2148 6.94682 20.3143 6.37003 17.8566C5.8417 15.6018 5.86491 12.9916 6.0715 10.6194C6.0715 9.70039 6.81659 8.95432 7.73382 8.95432C8.65375 8.95432 9.39892 9.70039 9.39892 10.6194V21.1032C9.39892 21.2129 9.48913 21.3022 9.60166 21.3022H15.0706C15.183 21.3022 15.2714 21.2129 15.2714 21.1032V10.8446C15.2714 7.62408 11.8975 5.01575 7.73382 5.01575C3.57282 5.01575 0.198901 7.62408 0.198901 10.8446Z"
1227
+ />
1228
+ <path
1229
+ fill="currentColor"
1230
+ fill-rule="evenodd"
1231
+ clip-rule="evenodd"
1232
+ d="M32.8911 5.46411H41.2883C44.7561 5.46411 47.5674 8.27534 47.5674 11.7414V20.547C47.5674 23.0158 45.9488 25.0995 43.7161 25.8139V25.933C45.9488 26.6456 47.5674 28.7312 47.5674 31.2018V44.6438C47.5674 47.6988 45.0873 50.1768 42.0344 50.1768L32.8911 50.1823C32.7786 50.1823 32.6892 50.0911 32.6892 49.9832V5.66324C32.6892 5.55539 32.7786 5.46411 32.8911 5.46411ZM38.7636 9.83067C38.6502 9.83067 38.5608 9.92179 38.5608 10.0316V23.9255C38.5608 24.039 38.6502 24.1284 38.7636 24.1284H39.5898C40.6948 24.1284 41.5916 23.2297 41.5916 22.1246V11.8343C41.5916 10.7293 40.6948 9.83067 39.5898 9.83067H38.7636ZM38.7636 28.5432C38.6502 28.5432 38.5608 28.6325 38.5608 28.7423V45.7971C38.5608 45.9088 38.6502 46 38.7636 46H39.7514C40.8584 46 41.7534 45.1014 41.7534 43.9962V30.5469C41.7534 29.4381 40.8584 28.5432 39.7514 28.5432H38.7636Z"
1233
+ />
1234
+ </g>
1235
+ <defs>
1236
+ <clipPath id="clip0_scb_header">
1237
+ <rect width="48" height="54" fill="white" />
1238
+ </clipPath>
1239
+ </defs>
1240
+ </svg>
1241
+ `;
1242
+ }
1243
+ };
1244
+ e([o({
1245
+ type: String,
1246
+ attribute: "max-width"
1247
+ })], p.prototype, "maxWidth", void 0), e([o({
1248
+ type: String,
1249
+ reflect: !0
1250
+ })], p.prototype, "spacing", void 0), e([o({
1251
+ type: String,
1252
+ attribute: "spacing-top",
1253
+ reflect: !0
1254
+ })], p.prototype, "spacingTop", void 0), e([o({
1255
+ type: String,
1256
+ attribute: "spacing-bottom",
1257
+ reflect: !0
1258
+ })], p.prototype, "spacingBottom", void 0), e([o({
1259
+ type: String,
1260
+ reflect: !0,
1261
+ converter: f
1262
+ })], p.prototype, "size", void 0), e([o({
1263
+ type: String,
1264
+ attribute: "logo-text"
1265
+ })], p.prototype, "logoText", void 0), e([o({
1266
+ type: String,
1267
+ attribute: "logo-href"
1268
+ })], p.prototype, "logoHref", void 0), e([o({
1269
+ type: String,
1270
+ attribute: "logo-src"
1271
+ })], p.prototype, "logoSrc", void 0), e([o({
1272
+ type: String,
1273
+ attribute: "logo-width"
1274
+ })], p.prototype, "logoWidth", void 0), e([o({
1275
+ type: String,
1276
+ attribute: "logo-height"
1277
+ })], p.prototype, "logoHeight", void 0), e([o({
1278
+ type: String,
1279
+ attribute: "logo-aspect-ratio"
1280
+ })], p.prototype, "logoAspectRatio", void 0), e([o({
1281
+ attribute: "logo-invert-dm",
1282
+ reflect: !0,
1283
+ converter: u
1284
+ })], p.prototype, "logoInvertDm", void 0), e([o({
1285
+ type: Boolean,
1286
+ reflect: !0
1287
+ })], p.prototype, "banner", void 0), e([o({
1288
+ type: String,
1289
+ attribute: "banner-label"
1290
+ })], p.prototype, "bannerLabel", void 0), e([o({
1291
+ attribute: "tabs",
1292
+ converter: p._JSON_ARRAY
1293
+ })], p.prototype, "tabs", void 0), e([o({
1294
+ type: Number,
1295
+ attribute: "active-tab"
1296
+ })], p.prototype, "activeTab", void 0), e([o({
1297
+ attribute: "reserve-tabs",
1298
+ reflect: !0,
1299
+ converter: d
1300
+ })], p.prototype, "reserveTabs", void 0), e([o({
1301
+ type: Number,
1302
+ attribute: "reserve-tabs-count"
1303
+ })], p.prototype, "reserveTabsCount", void 0), e([o({
1304
+ type: String,
1305
+ attribute: "reserve-tabs-widths"
1306
+ })], p.prototype, "reserveTabsWidths", void 0), e([o({
1307
+ attribute: "utility-items",
1308
+ converter: p._JSON_ARRAY
1309
+ })], p.prototype, "utilityItems", void 0), e([o({
1310
+ type: String,
1311
+ attribute: "search-placeholder"
1312
+ })], p.prototype, "searchPlaceholder", void 0), e([o({
1313
+ type: String,
1314
+ attribute: "menu-label"
1315
+ })], p.prototype, "menuLabel", void 0), e([o({
1316
+ type: String,
1317
+ attribute: "menu-sub-label"
1318
+ })], p.prototype, "menuSubLabel", void 0), e([o({
1319
+ type: String,
1320
+ attribute: "menu-section-label"
1321
+ })], p.prototype, "menuSectionLabel", void 0), e([o({
1322
+ type: String,
1323
+ attribute: "menu-search-placeholder"
1324
+ })], p.prototype, "menuSearchPlaceholder", void 0), e([o({
1325
+ attribute: "menu-data",
1326
+ converter: p._JSON_ARRAY
1327
+ })], p.prototype, "menuData", void 0), e([o({
1328
+ attribute: "show-drawer",
1329
+ reflect: !0,
1330
+ converter: u
1331
+ })], p.prototype, "showDrawer", void 0), e([o({
1332
+ attribute: "show-search",
1333
+ reflect: !0,
1334
+ converter: u
1335
+ })], p.prototype, "showSearch", void 0), e([o({
1336
+ attribute: "include-utility-in-menu",
1337
+ reflect: !0,
1338
+ converter: u
1339
+ })], p.prototype, "includeUtilityInMenu", void 0), e([o({
1340
+ attribute: "drawer-overlay",
1341
+ reflect: !0,
1342
+ converter: u
1343
+ })], p.prototype, "drawerOverlay", void 0), e([o({
1344
+ type: String,
1345
+ attribute: "search-max"
1346
+ })], p.prototype, "searchMax", void 0), e([o({
1347
+ type: String,
1348
+ attribute: "search-min"
1349
+ })], p.prototype, "searchMin", void 0), e([o({
1350
+ type: String,
1351
+ attribute: "search-height"
1352
+ })], p.prototype, "searchHeight", void 0), e([o({
1353
+ type: String,
1354
+ attribute: "search-text",
1355
+ reflect: !0
1356
+ })], p.prototype, "searchText", void 0), e([s()], p.prototype, "_drawerId", void 0), e([s()], p.prototype, "_menuExpanded", void 0), e([s()], p.prototype, "_searchId", void 0), e([s()], p.prototype, "_slotNavItems", void 0), e([s()], p.prototype, "_slotUtils", void 0), e([s()], p.prototype, "_slotMenu", void 0), e([s()], p.prototype, "_collapsed", void 0), e([s()], p.prototype, "_hideLogoText", void 0), p = c = e([a("scb-header")], p);
1357
+ //#endregion
1358
+ export { p as ScbHeader };