@duetds/components 4.33.0 → 4.34.1

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 (326) hide show
  1. package/hydrate/index.js +487 -198
  2. package/lib/cjs/{dom-c850c8d7.js → dom-52a4f07a.js} +1 -1
  3. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-button_2.cjs.entry.js +2 -2
  6. package/lib/cjs/duet-caption_4.cjs.entry.js +3 -3
  7. package/lib/cjs/duet-card.cjs.entry.js +2 -2
  8. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  9. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -3
  10. package/lib/cjs/duet-collapsible.cjs.entry.js +5 -453
  11. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  13. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-editable-table-button.cjs.entry.js +96 -0
  15. package/lib/cjs/{duet-upload.cjs.entry.js → duet-editable-table_4.cjs.entry.js} +463 -32
  16. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-fieldset.cjs.entry.js +62 -0
  18. package/lib/cjs/duet-footer.cjs.entry.js +2 -2
  19. package/lib/cjs/duet-grid_2.cjs.entry.js +26 -3
  20. package/lib/cjs/duet-header_2.cjs.entry.js +220 -47
  21. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  22. package/lib/cjs/duet-icon.cjs.entry.js +8 -6
  23. package/lib/cjs/duet-input_2.cjs.entry.js +3 -4
  24. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  26. package/lib/cjs/duet-modal.cjs.entry.js +2 -2
  27. package/lib/cjs/duet-notification_2.cjs.entry.js +2 -2
  28. package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  30. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  31. package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
  32. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-tab_2.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  36. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-tray.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +100 -0
  40. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  41. package/lib/cjs/duet.cjs.js +4 -4
  42. package/lib/cjs/{focus-utils-a7a1fb8b.js → focus-utils-30f5dc06.js} +1 -1
  43. package/lib/cjs/form-search-d61b2843.js +8 -0
  44. package/lib/cjs/{index-b724d698.js → index-1c10bbfb.js} +2 -2
  45. package/lib/cjs/loader.cjs.js +3 -3
  46. package/lib/cjs/{shadow-css-e3edeed1.js → shadow-css-e1b62a99.js} +1 -1
  47. package/lib/cjs/token-utils-05bd23b4.js +77 -0
  48. package/lib/cjs/tokens-8596cece.js +459 -0
  49. package/lib/collection/collection-manifest.json +11 -10
  50. package/lib/collection/components/duet-choice/duet-choice.js +0 -1
  51. package/lib/collection/components/duet-collapsible/duet-collapsible.js +4 -1
  52. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +13 -6
  53. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +25 -3
  54. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +3 -3
  55. package/lib/collection/components/duet-editable-table/duet-editable-table.js +58 -2
  56. package/lib/collection/components/duet-footer/duet-footer.css +1 -0
  57. package/lib/collection/components/duet-grid/duet-grid.js +25 -2
  58. package/lib/collection/components/duet-header/duet-header-dropdown.js +27 -0
  59. package/lib/collection/components/duet-header/duet-header-hamburger.js +9 -0
  60. package/lib/collection/components/duet-header/duet-header-icon.js +9 -0
  61. package/lib/collection/components/duet-header/duet-header.css +272 -39
  62. package/lib/collection/components/duet-header/duet-header.js +316 -122
  63. package/lib/collection/components/duet-icon/duet-icon.js +11 -5
  64. package/lib/collection/components/duet-link/duet-link.js +4 -1
  65. package/lib/collection/components/duet-list-item/duet-list-item.css +1 -1
  66. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.css +4 -3
  67. package/lib/collection/components/duet-table/duet-table.css +42 -17
  68. package/lib/collection/components/duet-table/duet-table.js +2 -2
  69. package/lib/collection/components/duet-upload/duet-upload.js +98 -51
  70. package/lib/collection/components/duet-upload/{duet-upload-editable-item-error.js → upload-editable-item-error.js} +0 -0
  71. package/lib/collection/components/duet-upload/{duet-upload-editable-item-inprogres.js → upload-editable-item-inprogres.js} +0 -0
  72. package/lib/collection/components/duet-upload/{duet-upload-editable-item-success.js → upload-editable-item-success.js} +0 -0
  73. package/lib/collection/components/duet-upload/{duet-upload-validators.js → upload-validators.js} +0 -0
  74. package/lib/collection/components/{duet-upload → duet-upload-aria-status}/duet-upload-aria-status.js +3 -3
  75. package/lib/collection/utils/template-utils.js +33 -0
  76. package/lib/collection/utils/token-utils.js +67 -14
  77. package/lib/custom-elements-bundle/index.js +468 -121
  78. package/lib/duet/duet.esm.js +1 -1
  79. package/lib/duet/duet.js +1 -1
  80. package/lib/duet/{p-060d79be.entry.js → p-08498e46.entry.js} +1 -1
  81. package/lib/duet/p-0bb75f62.system.entry.js +4 -0
  82. package/lib/duet/p-0d546cd6.system.entry.js +4 -0
  83. package/lib/duet/{p-263bc9cd.system.entry.js → p-1164a119.system.entry.js} +1 -1
  84. package/lib/duet/{p-a890da72.entry.js → p-13f72df0.entry.js} +1 -1
  85. package/lib/duet/{p-387823af.system.entry.js → p-15945ba7.system.entry.js} +1 -1
  86. package/lib/duet/{p-35a3794e.js → p-183726f7.js} +0 -0
  87. package/lib/duet/{p-7fee0d23.system.entry.js → p-1842a4db.system.entry.js} +1 -1
  88. package/lib/duet/{p-4607af59.entry.js → p-1a4204b7.entry.js} +1 -1
  89. package/lib/duet/{p-b4e87f02.system.entry.js → p-1d8d319c.system.entry.js} +1 -1
  90. package/lib/duet/{p-9dca5c22.system.entry.js → p-2b1707bd.system.entry.js} +1 -1
  91. package/lib/duet/{p-8b5ca0e7.system.entry.js → p-2c89e016.system.entry.js} +1 -1
  92. package/lib/duet/p-309f9094.entry.js +4 -0
  93. package/lib/duet/{p-67d9a9a9.system.entry.js → p-30f15c84.system.entry.js} +1 -1
  94. package/lib/duet/p-39cd816e.entry.js +4 -0
  95. package/lib/duet/{p-86daec1c.entry.js → p-3d47d6d4.entry.js} +1 -1
  96. package/lib/duet/{p-d744d188.system.entry.js → p-3e9fe1c7.system.entry.js} +1 -1
  97. package/lib/duet/{p-a9859a82.entry.js → p-3ff50cee.entry.js} +1 -1
  98. package/lib/duet/{p-b42d81c3.system.js → p-41938e76.system.js} +1 -1
  99. package/lib/duet/p-420c000b.entry.js +4 -0
  100. package/lib/duet/{p-cdd70b93.entry.js → p-477c6c71.entry.js} +1 -1
  101. package/lib/duet/p-478d2995.entry.js +4 -0
  102. package/lib/duet/p-4b400f7d.system.entry.js +4 -0
  103. package/lib/duet/p-4b480fdc.entry.js +4 -0
  104. package/lib/duet/p-50b4fb2c.js +4 -0
  105. package/lib/duet/{p-987edcd0.js → p-52621211.js} +0 -0
  106. package/lib/duet/{p-94169303.entry.js → p-545dcb04.entry.js} +1 -1
  107. package/lib/duet/{p-8f826843.system.entry.js → p-571015b8.system.entry.js} +1 -1
  108. package/lib/duet/{p-9481e312.entry.js → p-580c57ea.entry.js} +1 -1
  109. package/lib/duet/{p-2bb1460c.entry.js → p-5cf1d847.entry.js} +1 -1
  110. package/lib/duet/{p-c2e77278.entry.js → p-5d2ddf99.entry.js} +1 -1
  111. package/lib/duet/{p-af41d894.system.entry.js → p-5db0676e.system.entry.js} +1 -1
  112. package/lib/duet/p-603a61dc.system.entry.js +4 -0
  113. package/lib/duet/{p-aba68b7b.entry.js → p-6b1b2655.entry.js} +1 -1
  114. package/lib/duet/{p-597d99c7.entry.js → p-6bb9a991.entry.js} +1 -1
  115. package/lib/duet/p-6dc026cf.system.entry.js +4 -0
  116. package/lib/duet/{p-c18a599e.system.js → p-6e4fd6ba.system.js} +0 -0
  117. package/lib/duet/p-71261eb7.entry.js +4 -0
  118. package/lib/duet/{p-751542a0.system.entry.js → p-71a94fb9.system.entry.js} +1 -1
  119. package/lib/duet/{p-e12f2b8b.system.js → p-76b98e4d.system.js} +1 -1
  120. package/lib/duet/{p-f8ce39fb.entry.js → p-80d40375.entry.js} +1 -1
  121. package/lib/duet/{p-548d484e.js → p-80f90fef.js} +1 -1
  122. package/lib/duet/p-8143f3de.js +4 -0
  123. package/lib/duet/{p-bf93a991.entry.js → p-87703af9.entry.js} +1 -1
  124. package/lib/duet/p-8ad673ef.entry.js +4 -0
  125. package/lib/duet/{p-d4118b6e.system.entry.js → p-8adcc2f9.system.entry.js} +1 -1
  126. package/lib/duet/{p-4a87e9ab.system.entry.js → p-8e478364.system.entry.js} +1 -1
  127. package/lib/duet/p-8f477bd6.system.js +4 -0
  128. package/lib/duet/{p-00735436.entry.js → p-8fcaeb1b.entry.js} +1 -1
  129. package/lib/duet/p-93a51797.entry.js +4 -0
  130. package/lib/duet/{p-a5b9c192.system.entry.js → p-95edfcb8.system.entry.js} +1 -1
  131. package/lib/duet/p-97dc72c2.system.entry.js +4 -0
  132. package/lib/duet/p-99cd16d8.system.entry.js +4 -0
  133. package/lib/duet/{p-e964d062.entry.js → p-9c3b48fc.entry.js} +1 -1
  134. package/lib/duet/{p-5826523b.entry.js → p-9dad09a8.entry.js} +1 -1
  135. package/lib/duet/{p-8cb7416d.entry.js → p-9db71699.entry.js} +1 -1
  136. package/lib/duet/{p-b32224fe.system.entry.js → p-a0129887.system.entry.js} +1 -1
  137. package/lib/duet/p-a16a58c1.system.js +4 -0
  138. package/lib/duet/{p-2443bdca.system.entry.js → p-a4c0ce83.system.entry.js} +1 -1
  139. package/lib/duet/{p-48d1eb1f.system.entry.js → p-a9dc4dd9.system.entry.js} +1 -1
  140. package/lib/duet/p-aa5ba0fd.entry.js +4 -0
  141. package/lib/duet/{p-d3a3c3c7.system.entry.js → p-af7685aa.system.entry.js} +1 -1
  142. package/lib/duet/{p-6e6e76db.system.entry.js → p-b061516e.system.entry.js} +1 -1
  143. package/lib/duet/{p-58750bae.system.entry.js → p-b1401fd8.system.entry.js} +1 -1
  144. package/lib/duet/{p-b3744481.entry.js → p-b71cbe4b.entry.js} +1 -1
  145. package/lib/duet/p-c0472744.system.entry.js +4 -0
  146. package/lib/duet/{p-27d80cef.system.entry.js → p-c04ca724.system.entry.js} +1 -1
  147. package/lib/duet/{p-e2a44156.js → p-c33d1202.js} +1 -1
  148. package/lib/duet/{p-374fb7e6.system.entry.js → p-c85583d4.system.entry.js} +1 -1
  149. package/lib/duet/{p-aef1b720.system.entry.js → p-ca2b3f6a.system.entry.js} +1 -1
  150. package/lib/duet/{p-3af5d66f.entry.js → p-ca68c8f0.entry.js} +1 -1
  151. package/lib/duet/{p-acc57c77.entry.js → p-cecdebf3.entry.js} +1 -1
  152. package/lib/duet/p-d004da5f.js +4 -0
  153. package/lib/duet/{p-984576c9.entry.js → p-d1d6dc7a.entry.js} +1 -1
  154. package/lib/duet/{p-794659ac.entry.js → p-d9a93e45.entry.js} +1 -1
  155. package/lib/duet/{p-d1c19f04.system.entry.js → p-dc27e127.system.entry.js} +1 -1
  156. package/lib/duet/p-df37c5cd.entry.js +4 -0
  157. package/lib/duet/{p-6a19b5ec.entry.js → p-e10f1828.entry.js} +1 -1
  158. package/lib/duet/{p-a207b008.entry.js → p-e5120c30.entry.js} +1 -1
  159. package/lib/duet/p-e54705b2.system.js +4 -0
  160. package/lib/duet/{p-0d22396e.system.js → p-e5c1751e.system.js} +0 -0
  161. package/lib/duet/{p-dfe79666.system.entry.js → p-f1c7f166.system.entry.js} +2 -2
  162. package/lib/duet/p-f1dbb4ec.entry.js +4 -0
  163. package/lib/duet/{p-aee24388.system.entry.js → p-f3cd9499.system.entry.js} +1 -1
  164. package/lib/duet/{p-4b6ebe40.system.entry.js → p-f55ea1cc.system.entry.js} +1 -1
  165. package/lib/duet/{p-e76b722f.entry.js → p-f7700f25.entry.js} +1 -1
  166. package/lib/duet/p-fa99eaa4.system.js +4 -0
  167. package/lib/duet/{p-c36b4da0.entry.js → p-fd009368.entry.js} +1 -1
  168. package/lib/duet/{p-237e47b4.system.entry.js → p-fe1a2f0d.system.entry.js} +1 -1
  169. package/lib/duet/p-fe3806e2.system.entry.js +4 -0
  170. package/lib/duet/{p-4e28da18.system.entry.js → p-ffcfbd7a.system.entry.js} +1 -1
  171. package/lib/esm/{dom-58cd15f6.js → dom-5d060ace.js} +1 -1
  172. package/lib/esm/duet-alert.entry.js +1 -1
  173. package/lib/esm/duet-badge.entry.js +1 -1
  174. package/lib/esm/duet-button_2.entry.js +2 -2
  175. package/lib/esm/duet-caption_4.entry.js +3 -3
  176. package/lib/esm/duet-card.entry.js +2 -2
  177. package/lib/esm/duet-checkbox.entry.js +1 -1
  178. package/lib/esm/duet-choice_2.entry.js +2 -3
  179. package/lib/esm/duet-collapsible.entry.js +4 -452
  180. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  181. package/lib/esm/duet-date-picker.entry.js +2 -2
  182. package/lib/esm/duet-divider_2.entry.js +1 -1
  183. package/lib/esm/duet-editable-table-button.entry.js +92 -0
  184. package/lib/esm/{duet-upload.entry.js → duet-editable-table_4.entry.js} +461 -33
  185. package/lib/esm/duet-empty-state.entry.js +1 -1
  186. package/lib/esm/duet-fieldset.entry.js +58 -0
  187. package/lib/esm/duet-footer.entry.js +2 -2
  188. package/lib/esm/duet-grid_2.entry.js +26 -3
  189. package/lib/esm/duet-header_2.entry.js +220 -47
  190. package/lib/esm/duet-hero.entry.js +1 -1
  191. package/lib/esm/duet-icon.entry.js +8 -6
  192. package/lib/esm/duet-input_2.entry.js +2 -3
  193. package/lib/esm/duet-layout.entry.js +1 -1
  194. package/lib/esm/duet-list_2.entry.js +2 -2
  195. package/lib/esm/duet-modal.entry.js +2 -2
  196. package/lib/esm/duet-notification_2.entry.js +2 -2
  197. package/lib/esm/duet-number-input.entry.js +1 -1
  198. package/lib/esm/duet-progress.entry.js +1 -1
  199. package/lib/esm/duet-radio_2.entry.js +1 -1
  200. package/lib/esm/duet-range-slider.entry.js +1 -1
  201. package/lib/esm/duet-select.entry.js +1 -1
  202. package/lib/esm/duet-step_2.entry.js +1 -1
  203. package/lib/esm/duet-tab_2.entry.js +1 -1
  204. package/lib/esm/duet-textarea.entry.js +1 -1
  205. package/lib/esm/duet-toggle.entry.js +1 -1
  206. package/lib/esm/duet-tooltip.entry.js +1 -1
  207. package/lib/esm/duet-tray.entry.js +1 -1
  208. package/lib/esm/duet-upload-aria-status.entry.js +96 -0
  209. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  210. package/lib/esm/duet.js +4 -4
  211. package/lib/esm/{focus-utils-1fe0dcd0.js → focus-utils-bf7d1e80.js} +1 -1
  212. package/lib/esm/form-search-ea8e19ae.js +6 -0
  213. package/lib/esm/{index-84d97bd1.js → index-f813a624.js} +2 -2
  214. package/lib/esm/loader.js +3 -3
  215. package/lib/esm/{shadow-css-7c726abb.js → shadow-css-13d024f4.js} +1 -1
  216. package/lib/esm/token-utils-75f78ca4.js +75 -0
  217. package/lib/esm/tokens-e110dc89.js +453 -0
  218. package/lib/esm-es5/{dom-58cd15f6.js → dom-5d060ace.js} +0 -0
  219. package/lib/esm-es5/duet-alert.entry.js +1 -1
  220. package/lib/esm-es5/duet-badge.entry.js +1 -1
  221. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  222. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  223. package/lib/esm-es5/duet-card.entry.js +1 -1
  224. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  225. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  226. package/lib/esm-es5/duet-collapsible.entry.js +2 -2
  227. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  228. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  229. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  230. package/lib/esm-es5/duet-editable-table-button.entry.js +4 -0
  231. package/lib/esm-es5/duet-editable-table_4.entry.js +4 -0
  232. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  233. package/lib/esm-es5/duet-fieldset.entry.js +4 -0
  234. package/lib/esm-es5/duet-footer.entry.js +1 -1
  235. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  236. package/lib/esm-es5/duet-header_2.entry.js +2 -2
  237. package/lib/esm-es5/duet-hero.entry.js +1 -1
  238. package/lib/esm-es5/duet-icon.entry.js +1 -1
  239. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  240. package/lib/esm-es5/duet-layout.entry.js +1 -1
  241. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  242. package/lib/esm-es5/duet-modal.entry.js +1 -1
  243. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  244. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  245. package/lib/esm-es5/duet-progress.entry.js +1 -1
  246. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  247. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  248. package/lib/esm-es5/duet-select.entry.js +1 -1
  249. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  250. package/lib/esm-es5/duet-tab_2.entry.js +1 -1
  251. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  252. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  253. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  254. package/lib/esm-es5/duet-tray.entry.js +1 -1
  255. package/lib/esm-es5/duet-upload-aria-status.entry.js +4 -0
  256. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  257. package/lib/esm-es5/duet.js +1 -1
  258. package/lib/esm-es5/{focus-utils-1fe0dcd0.js → focus-utils-bf7d1e80.js} +1 -1
  259. package/lib/esm-es5/form-search-ea8e19ae.js +4 -0
  260. package/lib/esm-es5/{index-84d97bd1.js → index-f813a624.js} +1 -1
  261. package/lib/esm-es5/loader.js +1 -1
  262. package/lib/esm-es5/{shadow-css-7c726abb.js → shadow-css-13d024f4.js} +0 -0
  263. package/lib/esm-es5/token-utils-75f78ca4.js +4 -0
  264. package/lib/esm-es5/tokens-e110dc89.js +4 -0
  265. package/lib/html.html-data.json +4925 -0
  266. package/lib/types/common-types.d.ts +0 -1
  267. package/lib/types/components/duet-collapsible/duet-collapsible.d.ts +3 -0
  268. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +1 -0
  269. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +5 -1
  270. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +1 -0
  271. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +10 -0
  272. package/lib/types/components/duet-grid/duet-grid.d.ts +1 -0
  273. package/lib/types/components/duet-header/duet-header-dropdown.d.ts +16 -0
  274. package/lib/types/components/duet-header/duet-header-hamburger.d.ts +2 -0
  275. package/lib/types/components/duet-header/duet-header-icon.d.ts +8 -0
  276. package/lib/types/components/duet-header/duet-header.d.ts +41 -4
  277. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  278. package/lib/types/components/duet-link/duet-link.d.ts +3 -0
  279. package/lib/types/components/duet-table/duet-table.d.ts +1 -1
  280. package/lib/types/components/duet-upload/duet-upload.d.ts +46 -18
  281. package/lib/types/components/duet-upload/{duet-upload-editable-item-error.d.ts → upload-editable-item-error.d.ts} +0 -0
  282. package/lib/types/components/duet-upload/{duet-upload-editable-item-inprogres.d.ts → upload-editable-item-inprogres.d.ts} +0 -0
  283. package/lib/types/components/duet-upload/{duet-upload-editable-item-success.d.ts → upload-editable-item-success.d.ts} +0 -0
  284. package/lib/types/components/duet-upload/{duet-upload-validators.d.ts → upload-validators.d.ts} +0 -0
  285. package/lib/types/components/{duet-upload → duet-upload-aria-status}/duet-upload-aria-status.d.ts +2 -2
  286. package/lib/types/components.d.ts +71 -35
  287. package/lib/types/stencil-public-runtime.d.ts +6 -4
  288. package/lib/types/utils/template-utils.d.ts +13 -0
  289. package/lib/types/utils/token-utils.d.ts +8 -2
  290. package/package.json +13 -13
  291. package/lib/cjs/duet-editable-table-button_3.cjs.entry.js +0 -232
  292. package/lib/cjs/duet-editable-table_3.cjs.entry.js +0 -336
  293. package/lib/cjs/js-utils-33a9dbe3.js +0 -16
  294. package/lib/cjs/token-utils-63a9c8dc.js +0 -30
  295. package/lib/duet/p-10deead0.system.js +0 -4
  296. package/lib/duet/p-1208c84f.entry.js +0 -4
  297. package/lib/duet/p-155ef581.system.entry.js +0 -4
  298. package/lib/duet/p-16c48c5d.entry.js +0 -4
  299. package/lib/duet/p-1797df7b.system.entry.js +0 -4
  300. package/lib/duet/p-1a08fc22.system.entry.js +0 -4
  301. package/lib/duet/p-28e02c08.entry.js +0 -4
  302. package/lib/duet/p-33c58756.entry.js +0 -4
  303. package/lib/duet/p-3c1971d8.js +0 -4
  304. package/lib/duet/p-5ea0cd19.entry.js +0 -4
  305. package/lib/duet/p-63d5bf73.system.entry.js +0 -4
  306. package/lib/duet/p-6cc3be76.system.entry.js +0 -4
  307. package/lib/duet/p-6e363557.system.js +0 -4
  308. package/lib/duet/p-7368b14e.system.entry.js +0 -4
  309. package/lib/duet/p-7e8d5bb9.system.entry.js +0 -4
  310. package/lib/duet/p-81867417.system.js +0 -4
  311. package/lib/duet/p-9d73343a.entry.js +0 -4
  312. package/lib/duet/p-a6a84ec6.entry.js +0 -4
  313. package/lib/duet/p-b25d3769.js +0 -4
  314. package/lib/duet/p-c34329f3.entry.js +0 -4
  315. package/lib/duet/p-de07c7d7.entry.js +0 -4
  316. package/lib/duet/p-f0a4b68d.system.entry.js +0 -4
  317. package/lib/duet/p-f364eb96.entry.js +0 -4
  318. package/lib/esm/duet-editable-table-button_3.entry.js +0 -226
  319. package/lib/esm/duet-editable-table_3.entry.js +0 -330
  320. package/lib/esm/js-utils-b69f17df.js +0 -14
  321. package/lib/esm/token-utils-590d9413.js +0 -28
  322. package/lib/esm-es5/duet-editable-table-button_3.entry.js +0 -4
  323. package/lib/esm-es5/duet-editable-table_3.entry.js +0 -4
  324. package/lib/esm-es5/duet-upload.entry.js +0 -4
  325. package/lib/esm-es5/js-utils-b69f17df.js +0 -4
  326. package/lib/esm-es5/token-utils-590d9413.js +0 -4
package/hydrate/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  /*!
9
- Stencil Mock Doc v2.11.0 | MIT Licensed | https://stenciljs.com
9
+ Stencil Mock Doc v2.12.1 | MIT Licensed | https://stenciljs.com
10
10
  */
11
11
  const CONTENT_REF_ID = 'r';
12
12
  const ORG_LOCATION_ID = 'o';
@@ -551,7 +551,7 @@ class MockCSSStyleDeclaration {
551
551
  const splt = rule.split(':');
552
552
  if (splt.length > 1) {
553
553
  const prop = splt[0].trim();
554
- const value = splt[1].trim();
554
+ const value = splt.slice(1).join(':').trim();
555
555
  if (prop !== '' && value !== '') {
556
556
  this._styles.set(jsCaseToCssCase(prop), value);
557
557
  }
@@ -1514,6 +1514,9 @@ class MockNode {
1514
1514
  return null;
1515
1515
  }
1516
1516
  contains(otherNode) {
1517
+ if (otherNode === this) {
1518
+ return true;
1519
+ }
1517
1520
  return this.childNodes.includes(otherNode);
1518
1521
  }
1519
1522
  removeChild(childNode) {
@@ -4702,7 +4705,6 @@ function hydrateFactory($stencilWindow, $stencilHydrateOpts, $stencilHydrateResu
4702
4705
 
4703
4706
  const NAMESPACE = 'duet';
4704
4707
  const BUILD = /* duet */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: true, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, cssVarShim: false, devTools: false, disconnectedCallback: true, dynamicImportShim: false, element: false, event: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: true, hydratedAttribute: false, hydratedClass: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, safari10: false, scoped: true, scriptDataOpts: false, shadowDelegatesFocus: true, shadowDom: true, shadowDomShim: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };
4705
- const Env = /* duet */ {"cdnURILocal":"http://0.0.0.0:3334","cdnURIProd":"https://cdn.duetds.com/api","duetIconVersion":"2.2.3"};
4706
4708
 
4707
4709
  const TAB_KEY = 9;
4708
4710
  var appGlobalScript = () => {
@@ -6151,26 +6153,73 @@ var tokens$2 = /*#__PURE__*/Object.freeze({
6151
6153
  mediaQueryXxxLarge: mediaQueryXxxLarge
6152
6154
  });
6153
6155
 
6154
- const MATCH_DASH_CASE = /-([a-z])/g;
6155
- function replaceDashCase(g) {
6156
- return g[1].toUpperCase();
6156
+ const allowedThemes = ["turva"];
6157
+ function isDashCase(str) {
6158
+ const dash = str.includes("-");
6159
+ const barredString = str.includes(" ") || str.includes("_");
6160
+ const barredStartingString = str.charAt(0) === "-";
6161
+ return dash && !barredString && !barredStartingString;
6162
+ }
6163
+ function capitalize(str = "") {
6164
+ return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;
6157
6165
  }
6158
- function convertToCamelCase(string) {
6159
- return string.replace(MATCH_DASH_CASE, replaceDashCase);
6166
+ function lowerCaseFirst(str = "") {
6167
+ return `${str.charAt(0).toLowerCase()}${str.slice(1)}`;
6160
6168
  }
6161
- function convertToColorName(name) {
6162
- if (name.indexOf("color-") === -1 && name.indexOf("-") !== -1) {
6163
- return convertToCamelCase(`color-${name}`);
6169
+ function camelize(str = "") {
6170
+ const arr = str.split("-");
6171
+ //loop through each element of the array and capitalize the first letter.'
6172
+ arr.forEach((string, index) => {
6173
+ arr[index] = capitalize(string);
6174
+ });
6175
+ return arr.join("");
6176
+ }
6177
+ function getTheme(theme = "") {
6178
+ if (allowedThemes.includes(theme.toLowerCase())) {
6179
+ return theme.toLowerCase();
6164
6180
  }
6165
- if (name.indexOf("color") === -1) {
6166
- return convertToCamelCase(`color${name.charAt(0).toUpperCase()}${name.slice(1)}`);
6181
+ return "";
6182
+ }
6183
+ function hasColor(str = "") {
6184
+ return str.indexOf("Color") === 0 || str.indexOf("color") === 0;
6185
+ }
6186
+ function addColor(str = "") {
6187
+ if (str && !isDashCase(str) && !hasColor(str)) {
6188
+ return `color${capitalize(str)}`;
6167
6189
  }
6168
- return convertToCamelCase(name);
6190
+ return str;
6169
6191
  }
6170
- function getColorByName(name) {
6171
- if (name) {
6172
- return tokens$2[convertToColorName(name)];
6192
+ function addTheme(str, theme) {
6193
+ const hasTheme = getTheme(theme).length;
6194
+ if (hasTheme && str.indexOf(theme) === -1) {
6195
+ return `${str}${capitalize(theme)}`;
6173
6196
  }
6197
+ return str;
6198
+ }
6199
+ function getColorByName(name, theme = "") {
6200
+ if (!name) {
6201
+ return undefined;
6202
+ }
6203
+ const defaultColor = convertToColorName(name);
6204
+ const themedColor = convertToColorName(name, theme);
6205
+ // lets just try to get the color first to save some cycles
6206
+ let resolvedToken = tokens$2[themedColor];
6207
+ if (!resolvedToken) {
6208
+ resolvedToken = tokens$2[defaultColor];
6209
+ }
6210
+ return resolvedToken;
6211
+ }
6212
+ function convertToColorName(name = "", theme = "") {
6213
+ let colorResolution = name;
6214
+ const dash = isDashCase(name);
6215
+ if (dash) {
6216
+ colorResolution = camelize(colorResolution);
6217
+ }
6218
+ colorResolution = addColor(colorResolution);
6219
+ colorResolution = addTheme(colorResolution, theme);
6220
+ // takes care of the case where colorPrimaryDark ends up with ColorPrimaryDark
6221
+ colorResolution = lowerCaseFirst(colorResolution);
6222
+ return colorResolution;
6174
6223
  }
6175
6224
 
6176
6225
  const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:#0077b3 !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only)*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only){padding:9px 19px 10px !important;min-width:5.3333333333rem;font-size:0.875rem}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon{padding-left:48px !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon-right*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon-right{padding-right:48px !important;padding-left:20px !important}/*!@.duet-theme-turva .duet-button*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#c60c30 !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-button:active*/.duet-button.sc-duet-button:active{opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:#e1e3e6}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:#c60c30 !important;border-color:#e4e4e6}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:#c60c30}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:white}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:#e4e4e6 !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.primary*/.duet-button.primary.sc-duet-button{color:white !important;background:#0077b3;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button{color:white !important;background:#c60c30;border-color:#c60c30}/*!@.duet-button.primary:hover*/.duet-button.primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover{background:#940925;border-color:#940925}/*!@.duet-button.primary:focus*/.duet-button.primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px white, 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus{box-shadow:0 0 0 1px white, 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary*/.duet-button.secondary.sc-duet-button{color:#00294d !important;background:transparent;border-color:#00294d}/*!@.duet-theme-turva .duet-button.secondary*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button{color:#171c3a !important;border-color:#171c3a}/*!@.duet-button.secondary:hover*/.duet-button.secondary.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.secondary.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button{color:#e1e3e6 !important;border-color:white}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.secondary.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:#00294d !important;background:white;border-color:white}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:#171c3a !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:white !important;background:transparent;border-color:white}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px #00294d, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px #171c3a, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive*/.duet-button.destructive.sc-duet-button{color:#de2362 !important;background:white;border-color:#de2362}/*!@.duet-theme-turva .duet-button.destructive*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button{color:#e02a0d !important;background:white;border-color:#e02a0d}/*!@.duet-button.destructive:hover*/.duet-button.destructive.sc-duet-button:hover{color:white !important;background:#b21c4e;border-color:#b21c4e}/*!@.duet-theme-turva .duet-button.destructive:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button:hover{color:white !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:#c60c30 !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:#657787 !important;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;background:transparent !important;border-color:#e4e4e6 !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:#004d80 !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:#940925 !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:white !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:#657787 !important;background:#e1e3e6 !important;border-color:#e1e3e6 !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:#747475 !important;background:#e4e4e6 !important;border-color:#e4e4e6 !important}/*!@.duet-button-is-loading.primary*/.duet-button-is-loading.primary.sc-duet-button{color:white}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:#0077b3}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:#c60c30}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
@@ -7092,7 +7141,6 @@ class DuetChoice {
7092
7141
  */
7093
7142
  render() {
7094
7143
  const identifier = this.identifier || this.choiceId;
7095
- console.log(this.element);
7096
7144
  return (hAsync(Host, { class: {
7097
7145
  horizontal: this.groupDirection === "horizontal" && !this.groupResponsive,
7098
7146
  "horizontal-responsive": this.groupDirection === "horizontal" && this.groupResponsive,
@@ -7839,6 +7887,9 @@ var tokens$1 = /*#__PURE__*/Object.freeze({
7839
7887
 
7840
7888
  const duetCollapsibleCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-collapsible,*.sc-duet-collapsible::after,*.sc-duet-collapsible::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-collapsible-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:16px !important;display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;line-height:1.5;color:#00294d}/*!@:host(.duet-theme-turva)*/.duet-theme-turva.sc-duet-collapsible-h{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-collapsible-h{margin:0 !important}/*!@.duet-collapsible-content*/.duet-collapsible-content.sc-duet-collapsible{display:none;padding-left:18px;margin-top:8px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.5;color:#00294d}@media (max-width: 35.9375em){/*!@.duet-collapsible-content*/.duet-collapsible-content.sc-duet-collapsible{font-size:0.875rem}}/*!@.duet-collapsible-content.duet-theme-turva*/.duet-collapsible-content.duet-theme-turva.sc-duet-collapsible{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@:host([open]) .duet-collapsible-content*/[open].sc-duet-collapsible-h .duet-collapsible-content.sc-duet-collapsible{display:block}/*!@.duet-collapsible-heading*/.duet-collapsible-heading.sc-duet-collapsible{-webkit-user-select:none;user-select:none;display:flex;align-items:center;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;line-height:1.5;color:#00294d;cursor:pointer;border-radius:4px}/*!@.duet-collapsible-heading.duet-collapsible-normal-weight*/.duet-collapsible-heading.duet-collapsible-normal-weight.sc-duet-collapsible{font-weight:400}/*!@.duet-collapsible-heading.duet-theme-turva*/.duet-collapsible-heading.duet-theme-turva.sc-duet-collapsible{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@.duet-collapsible-heading .duet-collapsible-heading-content*/.duet-collapsible-heading.sc-duet-collapsible .duet-collapsible-heading-content.sc-duet-collapsible{flex:1}/*!@.duet-collapsible-heading:focus*/.duet-collapsible-heading.sc-duet-collapsible:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-collapsible-heading:focus*/.user-is-tabbing.sc-duet-collapsible-h .duet-collapsible-heading.sc-duet-collapsible:focus{border-radius:4px;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing.duet-theme-turva) .duet-collapsible-heading:focus*/.user-is-tabbing.duet-theme-turva.sc-duet-collapsible-h .duet-collapsible-heading.sc-duet-collapsible:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-collapsible-heading-icon*/.duet-collapsible-heading-icon.sc-duet-collapsible{margin-right:8px !important;display:flex;align-items:center;justify-content:center;color:#00294d;transition:transform 300ms ease}/*!@.duet-collapsible-heading-icon:last-child, .duet-collapsible-heading-icon:last-of-type*/.duet-collapsible-heading-icon.sc-duet-collapsible:last-child,.duet-collapsible-heading-icon.sc-duet-collapsible:last-of-type{margin-right:0 !important}/*!@[aria-expanded=true] .duet-collapsible-heading-icon*/[aria-expanded=true].sc-duet-collapsible .duet-collapsible-heading-icon.sc-duet-collapsible{transform:rotate(180deg)}";
7841
7889
 
7890
+ /**
7891
+ * @part duet-collapsible-heading-content - piercing selector for styling the heading content
7892
+ */
7842
7893
  class DuetCollapsible {
7843
7894
  constructor(hostRef) {
7844
7895
  registerInstance(this, hostRef);
@@ -7957,7 +8008,7 @@ class DuetCollapsible {
7957
8008
  "duet-collapsible-heading": true,
7958
8009
  "duet-theme-turva": this.theme === "turva",
7959
8010
  "duet-collapsible-normal-weight": this.headingWeight === "normal",
7960
- }, style: { "font-size": this.getFontSizeFromTokens() }, role: "button", tabindex: "0", ref: button => (this.nativeButton = button), "aria-expanded": this.open ? "true" : "false", "aria-controls": this.id, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, hAsync("div", { class: "duet-collapsible-heading-icon" }, hAsync("duet-icon", { margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary", size: this.getEquivalentIconSize(), icon: actionArrowDownSmall.svg })), hAsync("div", { class: "duet-collapsible-heading-content" }, this.heading)), hAsync("div", { id: this.id, class: { "duet-collapsible-content": true, "duet-theme-turva": this.theme === "turva" } }, hAsync("slot", null))));
8011
+ }, style: { "font-size": this.getFontSizeFromTokens() }, role: "button", tabindex: "0", ref: button => (this.nativeButton = button), "aria-expanded": this.open ? "true" : "false", "aria-controls": this.id, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, hAsync("div", { class: "duet-collapsible-heading-icon" }, hAsync("duet-icon", { margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary", size: this.getEquivalentIconSize(), icon: actionArrowDownSmall.svg })), hAsync("div", { class: "duet-collapsible-heading-content", part: "duet-collapsible-heading-content" }, this.heading)), hAsync("div", { id: this.id, class: { "duet-collapsible-content": true, "duet-theme-turva": this.theme === "turva" } }, hAsync("slot", null))));
7961
8012
  }
7962
8013
  get element() { return getElement(this); }
7963
8014
  static get style() { return duetCollapsibleCss; }
@@ -8923,11 +8974,43 @@ const debounce = (func, timeout = 50) => {
8923
8974
  };
8924
8975
  };
8925
8976
 
8977
+ /**
8978
+ * Produces a function which uses template strings to do simple interpolation from objects.
8979
+ *
8980
+ * Usage:
8981
+ * var makeMeKing = generateTemplateFn('${name} is now the king of ${country}!');
8982
+ *
8983
+ * console.log(makeMeKing({ name: 'Bryan', country: 'Scotland'}));
8984
+ * // Logs 'Bryan is now the king of Scotland!'
8985
+ */
8986
+ const generateTemplateFn = (function () {
8987
+ const cache = {};
8988
+ function generateTemplate(template) {
8989
+ if (typeof template !== "string") {
8990
+ template = template.outerHTML;
8991
+ }
8992
+ let fn = cache[template];
8993
+ if (!fn) {
8994
+ // Replace ${expressions} (etc) with ${map.expressions}.
8995
+ const sanitized = template
8996
+ .replace(/\$\{([\s]*[^;\s\{]+[\s]*)\}/g, function (_, match) {
8997
+ return `\$\{map.${match.trim()}\}`;
8998
+ })
8999
+ // Afterwards, replace anything that's not ${map.expressions}' (etc) with a blank string.
9000
+ .replace(/(\$\{(?!map\.)[^}]+\})/g, "");
9001
+ fn = Function("map", `return \`${sanitized}\``);
9002
+ }
9003
+ return fn;
9004
+ }
9005
+ return generateTemplate;
9006
+ })();
9007
+
8926
9008
  const duetEditableTableCss = "/*!@duet-editable-table*/duet-editable-table.sc-duet-editable-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-editable-table-header tr .duet-editable-table-header-hidden*/.duet-editable-table-header.sc-duet-editable-table tr.sc-duet-editable-table .duet-editable-table-header-hidden.sc-duet-editable-table{padding:0 !important;font-size:0;border-bottom:0}";
8927
9009
 
8928
9010
  class DuetEditableTable {
8929
9011
  constructor(hostRef) {
8930
9012
  registerInstance(this, hostRef);
9013
+ this.template = undefined;
8931
9014
  /**
8932
9015
  * State() variables
8933
9016
  * @internal
@@ -8937,6 +9020,10 @@ class DuetEditableTable {
8937
9020
  * Map of items that contain list of things.
8938
9021
  */
8939
9022
  this.items = new Map();
9023
+ /**
9024
+ * Key used to set vertical alignment of action buttons
9025
+ */
9026
+ this.alignment = "middle";
8940
9027
  /**
8941
9028
  * Array of internationalized defaults for the default groups labels.
8942
9029
  */
@@ -8985,12 +9072,40 @@ class DuetEditableTable {
8985
9072
  * Exposes the aria role for optimizing accessibility.
8986
9073
  */
8987
9074
  this.accessibleRole = undefined;
9075
+ /**
9076
+ * Theme of the table.
9077
+ */
9078
+ this.theme = "";
8988
9079
  /**
8989
9080
  * Private methods.
8990
9081
  */
8991
9082
  this.kick = debounce(() => {
8992
9083
  this.tick = Date.now();
8993
9084
  }, 100); // will trigger re-render
9085
+ /**
9086
+ * If a user defines a template section within editable table, try to read an use it.
9087
+ */
9088
+ this.getTemplate = () => {
9089
+ const templateDom = this.element.getElementsByTagName("template");
9090
+ if (templateDom === null || templateDom === void 0 ? void 0 : templateDom.length) {
9091
+ const templateString = templateDom[0].content.firstElementChild.outerHTML;
9092
+ return generateTemplateFn(templateString);
9093
+ }
9094
+ else {
9095
+ return false;
9096
+ }
9097
+ };
9098
+ this.getItemData = (data) => {
9099
+ const { item, group, uid } = data;
9100
+ if (this.template) {
9101
+ return {
9102
+ group,
9103
+ uid,
9104
+ item: this.template(item),
9105
+ };
9106
+ }
9107
+ return { item, group, uid };
9108
+ };
8994
9109
  this.filterMap = needle => {
8995
9110
  if (needle === "all") {
8996
9111
  return Array.from(this.items);
@@ -9002,6 +9117,9 @@ class DuetEditableTable {
9002
9117
  * Component lifecycle events.
9003
9118
  */
9004
9119
  componentWillLoad() {
9120
+ // look for a <template> region in the duet-editable-table
9121
+ this.template = this.getTemplate();
9122
+ // take care of the case where groups and actions are defined as html properties instead of javascript objects
9005
9123
  if (typeof this.groups === "string") {
9006
9124
  this.internalGroupArray = sanitizeString(this.groups);
9007
9125
  }
@@ -9040,7 +9158,7 @@ class DuetEditableTable {
9040
9158
  ? getLocaleString(group.actionLabel)
9041
9159
  : getLocaleString(this.actionLabelDefaults))))), hAsync("tbody", null, currentGroup.map(dataAsArray => {
9042
9160
  const [key, value] = dataAsArray;
9043
- return (hAsync("duet-editable-table-item", { keyName: key, data: Object.assign({}, value), groupId: group.id, part: group.id, actions: this.internalActionsArray }));
9161
+ return (hAsync("duet-editable-table-item", { theme: this.theme, keyName: key, data: this.getItemData(value), groupId: group.id, part: group.id, alignment: this.alignment, actions: this.internalActionsArray }));
9044
9162
  })))));
9045
9163
  })));
9046
9164
  }
@@ -9051,6 +9169,7 @@ class DuetEditableTable {
9051
9169
  "$tagName$": "duet-editable-table",
9052
9170
  "$members$": {
9053
9171
  "items": [1040],
9172
+ "alignment": [1],
9054
9173
  "groupsLabelDefaults": [16],
9055
9174
  "actionLabelDefaults": [16],
9056
9175
  "groups": [1],
@@ -9077,7 +9196,7 @@ class DuetEditableTableButton {
9077
9196
  /**
9078
9197
  * Theme of the empty state component.
9079
9198
  */
9080
- this.theme = "";
9199
+ this.theme = undefined;
9081
9200
  /**
9082
9201
  * action items passed from host component
9083
9202
  * @internal
@@ -9104,6 +9223,15 @@ class DuetEditableTableButton {
9104
9223
  this.onMouseLeave = () => {
9105
9224
  this.isHovering = false;
9106
9225
  };
9226
+ this.getColours = (byName = false) => {
9227
+ let colorHover = this.actions.color_hover;
9228
+ let colorBlur = this.actions.color;
9229
+ if (byName) {
9230
+ colorHover = getColorByName(this.actions.color_hover, this.theme);
9231
+ colorBlur = getColorByName(this.actions.color, this.theme);
9232
+ }
9233
+ return this.isHovering ? colorHover : colorBlur;
9234
+ };
9107
9235
  }
9108
9236
  /**
9109
9237
  /**
@@ -9132,10 +9260,8 @@ class DuetEditableTableButton {
9132
9260
  */
9133
9261
  render() {
9134
9262
  return (hAsync("button", { style: {
9135
- "border-color": this.isHovering
9136
- ? getColorByName(this.actions.color_hover)
9137
- : getColorByName(this.actions.color),
9138
- }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, role: "menuitem", class: "duet-editable-table-actions-items-button", "aria-label": this.actions.label ? getLocaleString(this.actions.label) : undefined, onClick: ev => this.emitActionEvent(ev) }, hAsync("duet-icon", { class: "duet-editable-table-actions-items-icon", size: "x-small", name: this.actions.icon, color: this.isHovering ? this.actions.color_hover : this.actions.color, margin: "none" })));
9263
+ "border-color": this.getColours(true),
9264
+ }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, role: "menuitem", class: "duet-editable-table-actions-items-button", "aria-label": this.actions.label ? getLocaleString(this.actions.label) : undefined, onClick: ev => this.emitActionEvent(ev) }, hAsync("duet-icon", { class: "duet-editable-table-actions-items-icon", size: "x-small", name: this.actions.icon, color: this.getColours(), margin: "none" })));
9139
9265
  }
9140
9266
  get el() { return getElement(this); }
9141
9267
  static get style() { return duetEditableTableButtonCss; }
@@ -9157,12 +9283,12 @@ class DuetEditableTableButton {
9157
9283
  }
9158
9284
 
9159
9285
  //simple functional component that renders the data in the table
9160
- const TableData = ({ data, groupId }, _children) => {
9286
+ const TableData = ({ data, groupId, alignment }, _children) => {
9161
9287
  if (typeof data === "string") {
9162
- return hAsync("td", { innerHTML: data, class: "duet-editable-table-content", part: `${groupId}content` });
9288
+ return (hAsync("td", { innerHTML: data, class: "duet-editable-table-content", part: `${groupId}content`, style: { verticalAlign: alignment } }));
9163
9289
  }
9164
9290
  else {
9165
- return (hAsync("td", { class: "duet-editable-table-content", part: `${groupId}content` }, data));
9291
+ return (hAsync("td", { class: "duet-editable-table-content", part: `${groupId}content`, style: { verticalAlign: alignment } }, data));
9166
9292
  }
9167
9293
  };
9168
9294
 
@@ -9186,6 +9312,10 @@ class DuetEditableTableItem {
9186
9312
  * @internal
9187
9313
  */
9188
9314
  this.groupId = "";
9315
+ /**
9316
+ * Key used to set vertical alignment of action buttons
9317
+ */
9318
+ this.alignment = "middle";
9189
9319
  /**
9190
9320
  * Key used to identify item, when running actions
9191
9321
  */
@@ -9214,7 +9344,7 @@ class DuetEditableTableItem {
9214
9344
  * Always the last one in the class.
9215
9345
  */
9216
9346
  render() {
9217
- return (hAsync(Host, { role: "row" }, hAsync(TableData, { data: this.data.item, groupId: this.groupId }), hAsync("td", { class: "duet-editable-table-actions" }, hAsync("div", { class: "duet-editable-table-actions-items", part: `${this.groupId}actions` }, this.actions.map(result => {
9347
+ return (hAsync(Host, { role: "row" }, hAsync(TableData, { data: this.data.item, alignment: this.alignment, groupId: this.groupId }), hAsync("td", { class: "duet-editable-table-actions", style: { verticalAlign: this.alignment } }, hAsync("div", { class: "duet-editable-table-actions-items", part: `${this.groupId}actions` }, this.actions.map(result => {
9218
9348
  const { map = undefined } = result;
9219
9349
  // if map has been specified, only show the current action if groupID matches the map array
9220
9350
  if (map && !map.includes(this.groupId)) {
@@ -9235,6 +9365,7 @@ class DuetEditableTableItem {
9235
9365
  "theme": [1025],
9236
9366
  "actions": [16],
9237
9367
  "groupId": [1, "group-id"],
9368
+ "alignment": [1],
9238
9369
  "keyName": [1, "key-name"],
9239
9370
  "data": [1040],
9240
9371
  "isHovering": [32]
@@ -9371,7 +9502,7 @@ var actionNewWindow={"title":"action-new-window","tags":"arrow open new window t
9371
9502
 
9372
9503
  var actionNewWindowSmall={"title":"action-new-window-small","tags":"arrow open new window tab external linksquare box rectangle action small","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M10.5 2a1.5 1.5 0 0 1 .14 3H3.75c-.38 0-.7.28-.74.65l-.01.1v14.5c0 .38.28.7.65.74l.1.01h14.5c.38 0 .7-.28.74-.65l.01-.1v-6.89a1.5 1.5 0 0 1 3 0v6.89A3.75 3.75 0 0 1 18.25 24H3.75A3.75 3.75 0 0 1 0 20.25V5.75A3.75 3.75 0 0 1 3.75 2zm12-2c.78 0 1.42.6 1.5 1.36V7.5a1.5 1.5 0 0 1-3 .14V5.12l-5.44 5.44a1.5 1.5 0 0 1-2.22-2l.1-.12L18.88 3H16.5A1.5 1.5 0 0 1 15 1.64V1.5c0-.78.6-1.42 1.36-1.5h.14z\"/></svg>"};
9373
9504
 
9374
- const duetFooterCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-footer,*.sc-duet-footer::after,*.sc-duet-footer::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-footer-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;flex-shrink:0;width:100%}/*!@.duet-footer*/.duet-footer.sc-duet-footer{display:block;width:100%;padding-top:20px;padding-bottom:16px;margin-top:48px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.5;color:white;text-align:left;background:#00294d}/*!@.duet-footer.duet-p-0*/.duet-footer.duet-p-0.sc-duet-footer{padding:0 !important}/*!@.duet-footer.duet-m-0*/.duet-footer.duet-m-0.sc-duet-footer{margin:0 !important}@media (min-width: 36em){/*!@.duet-footer*/.duet-footer.sc-duet-footer{padding-top:36px}}@media (min-width: 62em){/*!@.duet-footer*/.duet-footer.sc-duet-footer{padding-top:48px;padding-bottom:36px}}/*!@.duet-footer.duet-theme-turva*/.duet-footer.duet-theme-turva.sc-duet-footer{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";background:#c60c30}/*!@.duet-footer a*/.duet-footer.sc-duet-footer a.sc-duet-footer{color:white;text-decoration:none}@media (min-width: 62em){/*!@.duet-footer a*/.duet-footer.sc-duet-footer a.sc-duet-footer{border-radius:4px}}/*!@.duet-footer a:focus*/.duet-footer.sc-duet-footer a.sc-duet-footer:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-footer a:focus*/.user-is-tabbing.sc-duet-footer-h .duet-footer.sc-duet-footer a.sc-duet-footer:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva a:focus*/.user-is-tabbing.sc-duet-footer-h .duet-theme-turva.sc-duet-footer a.sc-duet-footer:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{position:relative;margin:0 auto}@media (min-width: 62em){/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{padding:0 72px 0 48px}}@media (min-width: 76.25em){/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{max-width:1110px;padding:0 20px 0 0}}/*!@.duet-footer-top*/.duet-footer-top.sc-duet-footer{width:100%}@media (min-width: 62em){/*!@.duet-footer-top*/.duet-footer-top.sc-duet-footer{display:flex;flex-direction:row;align-items:center;justify-content:space-between}}/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:16px !important}@media (min-width: 36em){/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:28px !important}}@media (min-width: 62em){/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:0 !important}}/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{padding:16px !important;display:flex;flex-direction:row;align-items:center;width:100%;font-weight:600;border-bottom:1px solid rgba(255, 255, 255, 0.2);transition:background-color 300ms ease}@media (min-width: 36em){/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{padding-right:20px !important;padding-left:28px !important}}@media (min-width: 62em){/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{width:auto;min-width:0;padding-right:0 !important;padding-left:0 !important;border:0}}/*!@.duet-footer-link:first-of-type*/.duet-footer-link.sc-duet-footer:first-of-type{margin-top:20px;border-top:1px solid rgba(255, 255, 255, 0.2)}@media (min-width: 62em){/*!@.duet-footer-link:first-of-type*/.duet-footer-link.sc-duet-footer:first-of-type{margin:0;border:0}}/*!@.duet-footer-link span*/.duet-footer-link.sc-duet-footer span.sc-duet-footer{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}/*!@.duet-footer-link:hover*/.duet-footer-link.sc-duet-footer:hover{background:rgba(0, 0, 0, 0.1)}@media (min-width: 62em){/*!@.duet-footer-link:hover*/.duet-footer-link.sc-duet-footer:hover{background:transparent}}/*!@.duet-footer-icon*/.duet-footer-icon.sc-duet-footer{display:flex;align-items:center;justify-content:center;padding:12px;margin-right:16px;background:#0077b3;border-radius:50%;transition:300ms ease}/*!@.duet-theme-turva .duet-footer-icon*/.duet-theme-turva.sc-duet-footer .duet-footer-icon.sc-duet-footer{background:transparent;box-shadow:0 0 0 1px white}/*!@a:hover .duet-footer-icon*/a.sc-duet-footer:hover .duet-footer-icon.sc-duet-footer{background:#006ba1}/*!@.duet-theme-turva a:hover .duet-footer-icon*/.duet-theme-turva.sc-duet-footer a.sc-duet-footer:hover .duet-footer-icon.sc-duet-footer{background:transparent}/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{display:flex;align-items:center;justify-content:center;width:20px;min-width:20px;max-width:20px;height:20px;max-height:20px;margin-left:auto;color:white;transition:transform 300ms ease}@media (min-width: 62em){/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{width:10px;min-width:10px;margin-top:3px;margin-left:8px}}@media (min-width: 62em){/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{margin-right:0}}/*!@a:hover .duet-footer-arrow*/a.sc-duet-footer:hover .duet-footer-arrow.sc-duet-footer{transform:translateX(4px)}/*!@.duet-footer-arrow duet-icon*/.duet-footer-arrow.sc-duet-footer duet-icon.sc-duet-footer{width:20px;height:20px}@media (min-width: 62em){/*!@.duet-footer-arrow duet-icon*/.duet-footer-arrow.sc-duet-footer duet-icon.sc-duet-footer{width:10px;height:10px}}/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding:20px !important;font-size:0.875rem}@media (min-width: 36em){/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding:28px !important}}@media (min-width: 62em){/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding-left:8px !important}}/*!@.duet-footer-menu a*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer{text-decoration:none}/*!@.duet-footer-menu a:hover, .duet-footer-menu a:focus*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:hover,.duet-footer-menu.sc-duet-footer a.sc-duet-footer:focus{text-decoration:underline}/*!@.duet-footer-menu a:hover .duet-footer-divider, .duet-footer-menu a:focus .duet-footer-divider*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:hover .duet-footer-divider.sc-duet-footer,.duet-footer-menu.sc-duet-footer a.sc-duet-footer:focus .duet-footer-divider.sc-duet-footer{text-decoration:none}/*!@.duet-footer-menu .duet-footer-divider*/.duet-footer-menu.sc-duet-footer .duet-footer-divider.sc-duet-footer{display:inline-block;margin:0 8px}/*!@.duet-footer-menu a:last-of-type .duet-footer-divider*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:last-of-type .duet-footer-divider.sc-duet-footer{display:none}/*!@.duet-footer-copyright*/.duet-footer-copyright.sc-duet-footer{color:white}/*!@.duet-footer-simple*/.duet-footer-simple.sc-duet-footer{padding:0;margin:0;margin-top:16px;color:#00294d;background:transparent !important;border-top:1px solid #e1e3e6}/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{max-width:100%;padding:0 20px;margin:0}@media (min-width: 62em){/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{padding:0 36px}}@media (min-width: 106.25em){/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{padding:0 48px}}/*!@.duet-footer-simple .duet-footer-copyright,\n.duet-footer-simple .duet-footer-menu a*/.duet-footer-simple.sc-duet-footer .duet-footer-copyright.sc-duet-footer,.duet-footer-simple.sc-duet-footer .duet-footer-menu.sc-duet-footer a.sc-duet-footer{color:#00294d}/*!@.duet-footer-simple .duet-footer-menu*/.duet-footer-simple.sc-duet-footer .duet-footer-menu.sc-duet-footer{padding:20px 0 !important}/*!@.duet-footer-simple.duet-theme-turva*/.duet-footer-simple.duet-theme-turva.sc-duet-footer{color:#171c3a;border-color:#e4e4e6}/*!@.duet-footer-simple.duet-theme-turva .duet-footer-copyright,\n.duet-footer-simple.duet-theme-turva .duet-footer-menu a*/.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-copyright.sc-duet-footer,.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-menu.sc-duet-footer a.sc-duet-footer{color:#171c3a}/*!@.duet-footer-external*/.duet-footer-external.sc-duet-footer{display:inline-block;margin-left:4px;color:#0077b3}/*!@.duet-theme-turva .duet-footer-external*/.duet-theme-turva.sc-duet-footer .duet-footer-external.sc-duet-footer{color:white}/*!@.duet-footer-simple.duet-theme-turva .duet-footer-external*/.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-external.sc-duet-footer{color:#c60c30}";
9505
+ const duetFooterCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-footer,*.sc-duet-footer::after,*.sc-duet-footer::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-footer-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;flex-shrink:0;width:100%}/*!@.duet-footer*/.duet-footer.sc-duet-footer{display:block;width:100%;padding-top:20px;padding-bottom:16px;margin-top:48px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.5;color:white;text-align:left;background:#00294d}/*!@.duet-footer.duet-p-0*/.duet-footer.duet-p-0.sc-duet-footer{padding:0 !important}/*!@.duet-footer.duet-m-0*/.duet-footer.duet-m-0.sc-duet-footer{margin:0 !important}@media (min-width: 36em){/*!@.duet-footer*/.duet-footer.sc-duet-footer{padding-top:36px}}@media (min-width: 62em){/*!@.duet-footer*/.duet-footer.sc-duet-footer{padding-top:48px;padding-bottom:36px}}/*!@.duet-footer.duet-theme-turva*/.duet-footer.duet-theme-turva.sc-duet-footer{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";background:#c60c30}/*!@.duet-footer a*/.duet-footer.sc-duet-footer a.sc-duet-footer{color:white;text-decoration:none}@media (min-width: 62em){/*!@.duet-footer a*/.duet-footer.sc-duet-footer a.sc-duet-footer{border-radius:4px}}/*!@.duet-footer a:focus*/.duet-footer.sc-duet-footer a.sc-duet-footer:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-footer a:focus*/.user-is-tabbing.sc-duet-footer-h .duet-footer.sc-duet-footer a.sc-duet-footer:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva a:focus*/.user-is-tabbing.sc-duet-footer-h .duet-theme-turva.sc-duet-footer a.sc-duet-footer:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{position:relative;margin:0 auto}@media (min-width: 62em){/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{padding:0 72px 0 48px}}@media (min-width: 76.25em){/*!@.duet-footer-wrapper*/.duet-footer-wrapper.sc-duet-footer{max-width:1110px;padding:0 20px 0 0}}/*!@.duet-footer-top*/.duet-footer-top.sc-duet-footer{width:100%}@media (min-width: 62em){/*!@.duet-footer-top*/.duet-footer-top.sc-duet-footer{display:flex;flex-direction:row;align-items:center;justify-content:space-between}}/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:16px !important}@media (min-width: 36em){/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:28px !important}}@media (min-width: 62em){/*!@duet-logo*/duet-logo.sc-duet-footer{margin-left:0 !important}}/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{padding:16px !important;display:flex;flex-direction:row;align-items:center;width:100%;font-weight:600;border-bottom:1px solid rgba(255, 255, 255, 0.2);transition:background-color 300ms ease}@media (min-width: 36em){/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{padding-right:20px !important;padding-left:28px !important}}@media (min-width: 62em){/*!@.duet-footer-link*/.duet-footer-link.sc-duet-footer{width:auto;min-width:0;padding-right:0 !important;padding-left:0 !important;border:0}}/*!@.duet-footer-link:first-of-type*/.duet-footer-link.sc-duet-footer:first-of-type{margin-top:20px;border-top:1px solid rgba(255, 255, 255, 0.2)}@media (min-width: 62em){/*!@.duet-footer-link:first-of-type*/.duet-footer-link.sc-duet-footer:first-of-type{margin:0;border:0}}/*!@.duet-footer-link span*/.duet-footer-link.sc-duet-footer span.sc-duet-footer{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}/*!@.duet-footer-link:hover*/.duet-footer-link.sc-duet-footer:hover{background:rgba(0, 0, 0, 0.1)}@media (min-width: 62em){/*!@.duet-footer-link:hover*/.duet-footer-link.sc-duet-footer:hover{background:transparent}}/*!@.duet-footer-icon*/.duet-footer-icon.sc-duet-footer{display:flex;align-items:center;justify-content:center;padding:12px;margin-right:16px;background:#0077b3;border-radius:50%;transition:300ms ease}/*!@.duet-theme-turva .duet-footer-icon*/.duet-theme-turva.sc-duet-footer .duet-footer-icon.sc-duet-footer{background:transparent;box-shadow:0 0 0 1px white}/*!@a:hover .duet-footer-icon*/a.sc-duet-footer:hover .duet-footer-icon.sc-duet-footer{background:#006ba1}/*!@.duet-theme-turva a:hover .duet-footer-icon*/.duet-theme-turva.sc-duet-footer a.sc-duet-footer:hover .duet-footer-icon.sc-duet-footer{background:transparent}/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{display:flex;align-items:center;justify-content:center;width:20px;min-width:20px;max-width:20px;height:20px;max-height:20px;margin-left:auto;color:white;transition:transform 300ms ease}@media (min-width: 62em){/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{width:10px;min-width:10px;margin-top:3px;margin-left:8px}}@media (min-width: 62em){/*!@.duet-footer-arrow*/.duet-footer-arrow.sc-duet-footer{margin-right:0}}/*!@a:hover .duet-footer-arrow*/a.sc-duet-footer:hover .duet-footer-arrow.sc-duet-footer{transform:translateX(4px)}/*!@.duet-footer-arrow duet-icon*/.duet-footer-arrow.sc-duet-footer duet-icon.sc-duet-footer{width:20px;height:20px}@media (min-width: 62em){/*!@.duet-footer-arrow duet-icon*/.duet-footer-arrow.sc-duet-footer duet-icon.sc-duet-footer{width:10px;height:10px}}/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding:20px !important;font-size:0.875rem}@media (min-width: 36em){/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding:28px !important}}@media (min-width: 62em){/*!@.duet-footer-menu*/.duet-footer-menu.sc-duet-footer{padding-left:8px !important}}/*!@.duet-footer-menu a*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer{text-decoration:none;white-space:nowrap}/*!@.duet-footer-menu a:hover, .duet-footer-menu a:focus*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:hover,.duet-footer-menu.sc-duet-footer a.sc-duet-footer:focus{text-decoration:underline}/*!@.duet-footer-menu a:hover .duet-footer-divider, .duet-footer-menu a:focus .duet-footer-divider*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:hover .duet-footer-divider.sc-duet-footer,.duet-footer-menu.sc-duet-footer a.sc-duet-footer:focus .duet-footer-divider.sc-duet-footer{text-decoration:none}/*!@.duet-footer-menu .duet-footer-divider*/.duet-footer-menu.sc-duet-footer .duet-footer-divider.sc-duet-footer{display:inline-block;margin:0 8px}/*!@.duet-footer-menu a:last-of-type .duet-footer-divider*/.duet-footer-menu.sc-duet-footer a.sc-duet-footer:last-of-type .duet-footer-divider.sc-duet-footer{display:none}/*!@.duet-footer-copyright*/.duet-footer-copyright.sc-duet-footer{color:white}/*!@.duet-footer-simple*/.duet-footer-simple.sc-duet-footer{padding:0;margin:0;margin-top:16px;color:#00294d;background:transparent !important;border-top:1px solid #e1e3e6}/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{max-width:100%;padding:0 20px;margin:0}@media (min-width: 62em){/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{padding:0 36px}}@media (min-width: 106.25em){/*!@.duet-footer-simple .duet-footer-wrapper*/.duet-footer-simple.sc-duet-footer .duet-footer-wrapper.sc-duet-footer{padding:0 48px}}/*!@.duet-footer-simple .duet-footer-copyright,\n.duet-footer-simple .duet-footer-menu a*/.duet-footer-simple.sc-duet-footer .duet-footer-copyright.sc-duet-footer,.duet-footer-simple.sc-duet-footer .duet-footer-menu.sc-duet-footer a.sc-duet-footer{color:#00294d}/*!@.duet-footer-simple .duet-footer-menu*/.duet-footer-simple.sc-duet-footer .duet-footer-menu.sc-duet-footer{padding:20px 0 !important}/*!@.duet-footer-simple.duet-theme-turva*/.duet-footer-simple.duet-theme-turva.sc-duet-footer{color:#171c3a;border-color:#e4e4e6}/*!@.duet-footer-simple.duet-theme-turva .duet-footer-copyright,\n.duet-footer-simple.duet-theme-turva .duet-footer-menu a*/.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-copyright.sc-duet-footer,.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-menu.sc-duet-footer a.sc-duet-footer{color:#171c3a}/*!@.duet-footer-external*/.duet-footer-external.sc-duet-footer{display:inline-block;margin-left:4px;color:#0077b3}/*!@.duet-theme-turva .duet-footer-external*/.duet-theme-turva.sc-duet-footer .duet-footer-external.sc-duet-footer{color:white}/*!@.duet-footer-simple.duet-theme-turva .duet-footer-external*/.duet-footer-simple.duet-theme-turva.sc-duet-footer .duet-footer-external.sc-duet-footer{color:#c60c30}";
9375
9506
 
9376
9507
  const i18n$1 = {
9377
9508
  fi: { lahi: "© LähiTapiola", turva: "© Turva" },
@@ -9525,6 +9656,11 @@ function isGridItem(element) {
9525
9656
  class DuetGrid {
9526
9657
  constructor(hostRef) {
9527
9658
  registerInstance(this, hostRef);
9659
+ this.mql = [
9660
+ window.matchMedia(media_query_large.replace(/'/g, "")),
9661
+ window.matchMedia(media_query_medium.replace(/'/g, "")),
9662
+ window.matchMedia(media_query_small.replace(/'/g, "")),
9663
+ ];
9528
9664
  this.distributeFormElement = false;
9529
9665
  /**
9530
9666
  * Enable or disable the automatic responsive behaviour of the grid component.
@@ -9579,10 +9715,18 @@ class DuetGrid {
9579
9715
  this.mutationO = watchForOptions(el, "duet-grid-item", () => {
9580
9716
  this.updateGridItems();
9581
9717
  });
9718
+ // the next two functions are used to watch for changes in the grid items, and are process intensive - so only run when needed
9582
9719
  if (this.distributeFormElement) {
9583
9720
  this.mutation1 = watchForElement(el, "duet-input", () => {
9584
9721
  this.updateGridItemsWithInputFields();
9585
9722
  });
9723
+ // listen for potential mediaquery changes and reset layout
9724
+ for (let i = 0; i < this.mql.length; i++) {
9725
+ // addEventListener is not available in Stencil hydrate
9726
+ if (this.mql[i].addEventListener) {
9727
+ this.mql[i].addEventListener("change", this.updateGridItemsWithInputFields.bind(this));
9728
+ }
9729
+ }
9586
9730
  }
9587
9731
  this.updateGridItems();
9588
9732
  }
@@ -9595,6 +9739,13 @@ class DuetGrid {
9595
9739
  this.mutation1.disconnect();
9596
9740
  this.mutation1 = undefined;
9597
9741
  }
9742
+ // listen for potential mediaquery changes and reset layout
9743
+ for (let i = 0; i < this.mql.length; i++) {
9744
+ // addEventListener is not available in Stencil hydrate
9745
+ if (this.mql[i].removeEventListener) {
9746
+ this.mql[i].removeEventListener("change", this.updateGridItemsWithInputFields.bind(this));
9747
+ }
9748
+ }
9598
9749
  }
9599
9750
  /**
9600
9751
  * Local methods
@@ -9608,6 +9759,8 @@ class DuetGrid {
9608
9759
  }
9609
9760
  async updateGridItemsWithInputFields() {
9610
9761
  const items = Array.from(this.element.children).filter(isGridItem);
9762
+ // if layout changes to columns instead of row, remove all padding
9763
+ const hasColumnLayout = window ? window.getComputedStyle(this.element).flexDirection === "column" : false;
9611
9764
  let maxHeight = 0;
9612
9765
  const sizes = [];
9613
9766
  items.forEach(item => {
@@ -9619,10 +9772,10 @@ class DuetGrid {
9619
9772
  items.forEach(item => {
9620
9773
  const inputErrorDom = item.querySelector("span.duet-input-error");
9621
9774
  const height = inputErrorDom ? this.outerHeight(inputErrorDom) : 0;
9622
- if (height < maxHeight) {
9775
+ if (height < maxHeight && !hasColumnLayout) {
9623
9776
  item.setAttribute("style", `padding-bottom: ${maxHeight - height}px;`);
9624
9777
  }
9625
- else if (height === maxHeight) {
9778
+ else if (height === maxHeight || hasColumnLayout) {
9626
9779
  item.setAttribute("style", `padding-bottom: 0px;`);
9627
9780
  }
9628
9781
  });
@@ -9753,6 +9906,8 @@ class DuetGridItem {
9753
9906
  }; }
9754
9907
  }
9755
9908
 
9909
+ var formSearch={"title":"form-search","tags":"form search magnifying glass","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M23.245 23.996a.743.743 0 0 1-.53-.22L16.2 17.26a9.824 9.824 0 0 1-2.553 1.579 9.766 9.766 0 0 1-7.51.069 9.745 9.745 0 0 1-5.359-5.262c-1.025-2.412-1.05-5.08-.069-7.51S3.558 1.802 5.97.777a9.744 9.744 0 0 1 7.51-.069c2.431.981 4.334 2.849 5.359 5.262s1.05 5.08.069 7.51a9.807 9.807 0 0 1-1.649 2.718l6.517 6.518a.75.75 0 0 1-.531 1.28zM9.807 1.49a8.259 8.259 0 0 0-3.25.667c-2.044.869-3.627 2.481-4.458 4.54s-.81 4.318.058 6.362a8.26 8.26 0 0 0 4.54 4.458 8.259 8.259 0 0 0 6.362-.059 8.285 8.285 0 0 0 2.594-1.736.365.365 0 0 1 .077-.076 8.245 8.245 0 0 0 1.786-2.728 8.255 8.255 0 0 0-.059-6.362 8.257 8.257 0 0 0-4.54-4.458 8.28 8.28 0 0 0-3.11-.608z\"/></svg>"};
9910
+
9756
9911
  var navigationContactDropdown={"title":"navigation-contact-dropdown","tags":"navigation contact dropdown speech bubbles","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M20.247 24a.743.743 0 0 1-.53-.22l-4.28-4.28h-.439c-3.308 0-6-2.692-6-6s2.692-6 6-6h3c3.309.001 6 2.692 6 6a5.974 5.974 0 0 1-3 5.179v4.571a.75.75 0 0 1-.751.75zm-5.25-15c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5h.75c.198 0 .391.08.53.22l3.22 3.22v-3.213c0-.289.169-.555.429-.678a4.51 4.51 0 0 0 2.571-4.049 4.504 4.504 0 0 0-4.498-4.499h-3.002z\"/><path d=\"M3.747 16.5a.747.747 0 0 1-.75-.75v-4.57a5.967 5.967 0 0 1-2.65-3.171A5.948 5.948 0 0 1 .57 3.431 6.014 6.014 0 0 1 5.985 0h3.012a6.04 6.04 0 0 1 5.752 4.286.751.751 0 0 1-.718.964.755.755 0 0 1-.719-.536A4.531 4.531 0 0 0 8.997 1.5h-3a4.511 4.511 0 0 0-4.071 2.572c-.512 1.084-.571 2.302-.167 3.431s1.224 2.032 2.308 2.545c.261.123.43.39.43.678v3.214l1.72-1.72a.744.744 0 0 1 1.06 0 .752.752 0 0 1 0 1.061l-3 3a.744.744 0 0 1-.53.219z\"/></svg>"};
9757
9912
 
9758
9913
  var navigationLanguage={"title":"navigation-language","tags":"navigation language earth world map","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M11.996 24c-2.732 0-5.309-.901-7.453-2.605l-.017-.012-.031-.025a12.68 12.68 0 0 1-.238-.196c-.071-.06-.142-.122-.213-.184l-.143-.126c-.13-.118-.257-.24-.381-.363l-.018-.018a11.904 11.904 0 0 1-3.445-9.695l.001-.007c.018-.174.041-.348.067-.523l.019-.125c.028-.174.058-.348.093-.521l.003-.013C1.379 4.031 6.321 0 11.996 0c6.617 0 12 5.383 12 12 0 1.083-.148 2.164-.44 3.214l-.009.032a12.172 12.172 0 0 1-.671 1.809s-.072.155-.1.212a11.896 11.896 0 0 1-.189.368A11.987 11.987 0 0 1 11.996 24zm-6.181-3.519a10.388 10.388 0 0 0 6.181 2.019c3.471 0 6.642-1.669 8.611-4.497h-.59a2.244 2.244 0 0 1-2.22-1.879L17.111 12h-.944a2.252 2.252 0 0 1-2.182-2.796l.75-3A2.245 2.245 0 0 1 16.917 4.5h2.416A10.49 10.49 0 0 0 1.934 9h4.391c1.034 0 1.932.701 2.183 1.704l.75 3a2.235 2.235 0 0 1-.592 2.137c-.425.425-.99.659-1.591.659h-.464zm-4.248-9.687-.015.116a9.092 9.092 0 0 0-.053.96l-.002.17c.001.145.005.29.011.435l.006.127c.009.154.02.308.035.461l.005.041c.071.68.209 1.354.411 2.003l.009.028a10.457 10.457 0 0 0 2.537 4.222l.75-3.751A.75.75 0 0 1 5.996 15h1.079a.75.75 0 0 0 .728-.932l-.75-3a.751.751 0 0 0-.729-.568H1.606l-.039.294zM16.917 6a.75.75 0 0 0-.728.568l-.75 3a.752.752 0 0 0 .728.932h1.579c.368 0 .679.264.74.627l.791 4.75a.748.748 0 0 0 .74.626h1.461c.171-.358.321-.727.449-1.1l.021-.062A10.486 10.486 0 0 0 20.598 6z\"/></svg>"};
@@ -9943,7 +10098,41 @@ const enableBodyScroll = targetElement => {
9943
10098
  }
9944
10099
  };
9945
10100
 
9946
- const duetHeaderCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-header,*.sc-duet-header::after,*.sc-duet-header::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-header-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}@supports (position: -webkit-sticky){/*!@:host*/.sc-duet-header-h{position:-webkit-sticky;top:-4rem;z-index:400}}@supports (position: sticky){/*!@:host*/.sc-duet-header-h{position:sticky;top:-4rem;z-index:400}}/*!@.duet-header-reserved-space*/.duet-header-reserved-space.sc-duet-header{height:4rem}@media (min-width: 62em){/*!@.duet-header-reserved-space.duet-with-links*/.duet-header-reserved-space.duet-with-links.sc-duet-header{height:7rem}}/*!@.duet-header*/.duet-header.sc-duet-header{-webkit-user-select:none;user-select:none;position:fixed;top:0;left:0;z-index:400;display:block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.5;color:#00294d;text-align:left}/*!@.duet-header.duet-theme-turva*/.duet-header.duet-theme-turva.sc-duet-header{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}@media (min-width: 62em){/*!@.duet-header.duet-theme-turva*/.duet-header.duet-theme-turva.sc-duet-header{box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13)}}@media (min-width: 62em){/*!@.duet-header*/.duet-header.sc-duet-header{position:absolute;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07)}/*!@.duet-header.duet-header-inactive*/.duet-header.duet-header-inactive.sc-duet-header{position:fixed}}/*!@.duet-header **/.duet-header.sc-duet-header *.sc-duet-header{-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}/*!@.duet-header-top*/.duet-header-top.sc-duet-header{position:relative;z-index:200;display:flex;flex-direction:row;align-items:center;width:100%;height:4rem;padding:0 16px;background:white;border-bottom:1px solid #e1e3e6;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07)}@media (min-width: 62em){/*!@.duet-header-top*/.duet-header-top.sc-duet-header{z-index:100;padding:0 28px;box-shadow:none}/*!@.duet-header-top duet-logo*/.duet-header-top.sc-duet-header duet-logo.sc-duet-header{padding-right:4px}}@media (min-width: 106.25em){/*!@.duet-header-top*/.duet-header-top.sc-duet-header{padding:0 48px}}/*!@.duet-theme-turva .duet-header-top*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header{border-color:#e4e4e6;box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13)}@media (min-width: 62em){/*!@.duet-theme-turva .duet-header-top*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header{box-shadow:none}}/*!@.duet-theme-turva .duet-header-top duet-logo*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header duet-logo.sc-duet-header{left:-80px !important;margin-top:-8px !important}/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{max-width:200px;padding-left:16px;margin-top:1px;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:1px solid #cfd2d4}/*!@.duet-theme-turva .duet-header-top .duet-header-region*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{border-color:#cfcfd1}@media (max-width: 35.9375em){/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{display:none}}@media (min-width: 62em){/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{padding-left:19px}}/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:fixed;top:4rem;bottom:0;left:0;z-index:100;display:flex;flex-direction:column;width:100%;overflow-y:auto;visibility:hidden;background:#f5f8fa;opacity:0;-webkit-overflow-scrolling:touch}/*!@.duet-theme-turva .duet-header-bottom*/.duet-theme-turva.sc-duet-header .duet-header-bottom.sc-duet-header{background:#f5f5f7}@media (min-width: 62em){/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:relative;top:auto;bottom:auto;z-index:200;flex-direction:row;overflow:visible;visibility:visible;background:white;opacity:1}/*!@.duet-header-bottom.duet-header-inactive*/.duet-header-bottom.duet-header-inactive.sc-duet-header{position:relative}}/*!@.duet-header-bottom.active*/.duet-header-bottom.active.sc-duet-header{visibility:visible;opacity:1;transition:opacity 300ms ease, visibility 300ms ease}@media (min-width: 62em){/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:relative;transition:none !important}}/*!@.duet-header-items,\n.duet-header-bottom-utils,\n.duet-header-utils*/.duet-header-items.sc-duet-header,.duet-header-bottom-utils.sc-duet-header,.duet-header-utils.sc-duet-header{opacity:0;transition:transform 600ms ease, opacity 600ms ease;transform:translateY(-28px)}@media (min-width: 62em){/*!@.duet-header-items,\n.duet-header-bottom-utils,\n.duet-header-utils*/.duet-header-items.sc-duet-header,.duet-header-bottom-utils.sc-duet-header,.duet-header-utils.sc-duet-header{opacity:1;transition:none !important;transform:none}}/*!@.active .duet-header-items,\n.active .duet-header-bottom-utils,\n.active .duet-header-utils*/.active.sc-duet-header .duet-header-items.sc-duet-header,.active.sc-duet-header .duet-header-bottom-utils.sc-duet-header,.active.sc-duet-header .duet-header-utils.sc-duet-header{opacity:1;transform:translateY(0)}/*!@.duet-header-items*/.duet-header-items.sc-duet-header{position:relative;z-index:300;display:block;width:100%;font-size:1rem;font-weight:400;line-height:1.5;background:white}@media (min-width: 62em){/*!@.duet-header-items*/.duet-header-items.sc-duet-header{z-index:100;display:flex;flex-direction:row;padding:0 21.5384615385px}}@media (min-width: 106.25em){/*!@.duet-header-items*/.duet-header-items.sc-duet-header{padding-left:43.6363636364px}}/*!@.duet-header-items a*/.duet-header-items.sc-duet-header a.sc-duet-header{position:relative;display:block;width:100%;height:48px;padding:0 20px;overflow:hidden;font-size:1rem;font-weight:600;line-height:48px;color:#00294d;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #e1e3e6;border-radius:0}@media (min-width: 62em){/*!@.duet-header-items a*/.duet-header-items.sc-duet-header a.sc-duet-header{border-radius:4px}}/*!@.duet-theme-turva .duet-header-items a*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.sc-duet-header{font-weight:600;color:#171c3a;border-color:#e1e3e6}/*!@.duet-header-items a:hover*/.duet-header-items.sc-duet-header a.sc-duet-header:hover{color:#004d80}/*!@.duet-theme-turva .duet-header-items a:hover*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.sc-duet-header:hover{color:#444445}/*!@.duet-header-items a:focus*/.duet-header-items.sc-duet-header a.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-items a:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-items.sc-duet-header a.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-items a:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 62em){/*!@.duet-header-items a*/.duet-header-items.sc-duet-header a.sc-duet-header{width:auto;max-width:300px;padding:0 12px;overflow:hidden;font-size:0.875rem;text-overflow:ellipsis;border:0}}/*!@.duet-header-items a.active*/.duet-header-items.sc-duet-header a.active.sc-duet-header{color:#0077b3;-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased}/*!@.duet-theme-turva .duet-header-items a.active*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.active.sc-duet-header{color:#c60c30}/*!@.duet-header-items a.active:hover*/.duet-header-items.sc-duet-header a.active.sc-duet-header:hover{color:#0077b3}/*!@.duet-theme-turva .duet-header-items a.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.active.sc-duet-header:hover{color:#c60c30}/*!@.duet-header-items a.active::after*/.duet-header-items.sc-duet-header a.active.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-items a.active::after*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header a.active.sc-duet-header::after{background:#c60c30}@media (min-width: 62em){/*!@.duet-header-items a.active::after*/.duet-header-items.sc-duet-header a.active.sc-duet-header::after{top:auto;left:12px;width:calc(100% - 24px);height:3px}}/*!@.duet-header-toggle*/.duet-header-toggle.sc-duet-header{display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin-right:-8px;margin-left:auto;cursor:pointer;border-radius:4px;-webkit-appearance:none;appearance:none}/*!@.duet-header-toggle:focus*/.duet-header-toggle.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 62em){/*!@.duet-header-toggle*/.duet-header-toggle.sc-duet-header{display:none}}/*!@.duet-header-hamburger*/.duet-header-hamburger.sc-duet-header{position:relative;width:24px;height:24px;margin-top:5px !important;pointer-events:none;transition:0.4s ease-in-out;backface-visibility:hidden}/*!@.duet-header-hamburger .duet-header-bar*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header{position:absolute;left:0;display:block;width:100%;height:2px;background:#00294d;border-radius:20rem;opacity:1;transition:0.25s ease-in-out;transform:rotate(0deg) scale(0.98)}/*!@.duet-theme-turva .duet-header-hamburger .duet-header-bar*/.duet-theme-turva.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header{background:#171c3a}/*!@.duet-header-hamburger .duet-header-bar:nth-child(1)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(1){top:0}/*!@.duet-header-hamburger .duet-header-bar:nth-child(2), .duet-header-hamburger .duet-header-bar:nth-child(3)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(2),.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(3){top:7px}/*!@.duet-header-hamburger .duet-header-bar:nth-child(4)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(4){top:14px}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(1)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(1){top:7px;left:50%;width:0%}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(2)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(2){transform:rotate(45deg)}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(3)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(3){transform:rotate(-45deg)}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(4)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(4){top:7px;left:50%;width:0%}/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{display:flex;flex-direction:column;width:100%}@media (min-width: 62em){/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{position:absolute;top:-4rem;right:0;z-index:999999999;flex-direction:row;align-items:center;justify-content:space-between;width:auto;margin-right:20px}}@media (min-width: 106.25em){/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{margin-right:36px}}@media (min-width: 62em){/*!@.duet-header-bottom-utils*/.duet-header-bottom-utils.sc-duet-header{position:absolute;top:0;right:0;z-index:999999999;margin-right:20px}}@media (min-width: 106.25em){/*!@.duet-header-bottom-utils*/.duet-header-bottom-utils.sc-duet-header{margin-right:36px}}/*!@button*/button.sc-duet-header{font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-theme-turva button*/.duet-theme-turva.sc-duet-header button.sc-duet-header{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-header-button*/.duet-header-button.sc-duet-header{position:relative;display:flex;align-items:center;width:100%;height:48px;padding:0 20px;overflow:hidden;font-size:1rem;font-weight:400;line-height:48px;color:#00294d;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-bottom:1px solid #e1e3e6;border-radius:4px;-webkit-appearance:none;appearance:none}/*!@.duet-theme-turva .duet-header-button*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header{color:#171c3a;border-color:#e4e4e6}/*!@.duet-header-button:hover*/.duet-header-button.sc-duet-header:hover{color:#004d80}/*!@.duet-theme-turva .duet-header-button:hover*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header:hover{color:#444445}/*!@.duet-header-button:focus*/.duet-header-button.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-button:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-button.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-button:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-button:active*/.duet-header-button.sc-duet-header:active{opacity:0.75}@media (min-width: 62em){/*!@.duet-header-button*/.duet-header-button.sc-duet-header{width:auto;max-width:200px;height:4rem;padding:0 16px;font-size:0.875rem;line-height:4rem;border:0}/*!@.duet-header-button::before*/.duet-header-button.sc-duet-header::before{position:absolute;top:50%;right:0;width:1px;height:20px;content:\"\";background:#cfd2d4;transform:translateY(-50%)}/*!@.duet-theme-turva .duet-header-button::before*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header::before{background:#cfcfd1}}/*!@.duet-header-button.active*/.duet-header-button.active.sc-duet-header{color:#0077b3;border-radius:0}/*!@.duet-theme-turva .duet-header-button.active*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header{color:#c60c30}/*!@.duet-header-button.active:hover*/.duet-header-button.active.sc-duet-header:hover{color:#0077b3}/*!@.duet-theme-turva .duet-header-button.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header:hover{color:#c60c30}/*!@.duet-header-button.active::after*/.duet-header-button.active.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:3px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-button.active::after*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header::after{color:#c60c30}/*!@.duet-header-no-action*/.duet-header-no-action.sc-duet-header{pointer-events:none}/*!@.duet-header-user-label*/.duet-header-user-label.sc-duet-header{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 62em){/*!@.duet-header-utils > *:last-child::before,\n.duet-header-utils > *:last-child button::before*/.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child::before,.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child button.sc-duet-header::before{display:none}}@media (min-width: 62em){/*!@.duet-header-utils > *:last-child .duet-header-dropdown-content*/.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child .duet-header-dropdown-content.sc-duet-header{right:0;left:auto}}/*!@.duet-header-language*/.duet-header-language.sc-duet-header{text-transform:uppercase}/*!@.duet-header-icon*/.duet-header-icon.sc-duet-header{display:inline-flex;min-width:12px;margin-right:12px;font-size:0;line-height:normal;vertical-align:baseline}@media (min-width: 62em){/*!@.duet-header-icon*/.duet-header-icon.sc-duet-header{margin-right:8px}}/*!@.duet-header-caret*/.duet-header-caret.sc-duet-header{position:absolute;top:50%;right:20px;display:flex;width:10px;height:10px;margin-left:8px;line-height:normal;pointer-events:none;transition:300ms ease;transform:translateY(-50%);transform-origin:50% 50%}@media (min-width: 62em){/*!@.duet-header-caret*/.duet-header-caret.sc-duet-header{width:7px;height:7px}}/*!@.duet-header-caret duet-icon*/.duet-header-caret.sc-duet-header duet-icon.sc-duet-header{width:10px}/*!@.duet-header-dropdown-toggle.active .duet-header-caret*/.duet-header-dropdown-toggle.active.sc-duet-header .duet-header-caret.sc-duet-header{transform:translateY(-50%) rotate(180deg)}/*!@.duet-header-dropdown-toggle:focus*/.duet-header-dropdown-toggle.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-dropdown-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-dropdown-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-dropdown-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-dropdown-toggle:active*/.duet-header-dropdown-toggle.sc-duet-header:active{outline:none}/*!@.duet-header-badge*/.duet-header-badge.sc-duet-header{display:inline-block;width:6px;height:6px;margin-top:16px;margin-left:5px;vertical-align:top;background:#f7b228;border-radius:50%;box-shadow:0 0 0 1px #c18b1f}/*!@.duet-theme-turva .duet-header-badge*/.duet-theme-turva.sc-duet-header .duet-header-badge.sc-duet-header{background:#faa40f}/*!@.duet-header-dropdown*/.duet-header-dropdown.sc-duet-header{position:relative}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header{z-index:200;padding-right:36px;overflow:hidden;transition:border 300ms ease}}/*!@.duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{display:none !important}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{background:#c60c30}}/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{color:#004d80;border-bottom:1px solid #f5f8fa}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{color:#444445;border-color:#f5f5f7}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{border:0}/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover::after{position:absolute;top:auto;bottom:0;left:0;width:100%;height:3px;transform:translateY(0)}}/*!@.duet-header-dropdown .duet-header-dropdown-content*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{display:none;padding-bottom:16px;background:#f5f8fa;border-bottom:1px solid #e1e3e6}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#f5f5f7;border-color:#e1e3e6}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{position:absolute;top:100%;left:0;z-index:600;display:block;min-width:170px;padding-top:16px;padding-left:0;visibility:hidden;border:0;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:300ms ease;transform:scale(0.85) translateZ(0) translateY(-20px)}}/*!@.duet-header-dropdown .duet-header-dropdown-content.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.active.sc-duet-header{display:block}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.active.sc-duet-header{visibility:visible;opacity:1;transform:translateZ(0) translateY(0)}}/*!@.duet-header-dropdown .duet-header-dropdown-content a*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header{padding:3px 8px 4px !important;position:relative;display:block;width:100%;padding-right:16px;padding-left:48px !important;overflow:hidden;font-size:0.875rem;font-weight:400;line-height:1.5;color:#00294d;text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;transition:300ms ease}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header{color:#171c3a}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header{padding-left:20px !important}}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a:hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:hover{background:#e6f2f8}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:hover*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:hover{background:#f9e6ea}}/*!@.duet-header-dropdown .duet-header-dropdown-content a:focus*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-dropdown .duet-header-dropdown-content a:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{padding-right:36px;font-weight:600;vertical-align:baseline;pointer-events:none}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{font-weight:700}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{color:white;background:#0077b3}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{background:#c60c30}}/*!@.duet-header-dropdown .duet-header-dropdown-content .duet-header-link-external*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header .duet-header-link-external.sc-duet-header{margin-left:4px}/*!@.duet-header-back .duet-header-top*/.duet-header-back.sc-duet-header .duet-header-top.sc-duet-header{flex-direction:row;align-items:center;justify-content:center}/*!@.duet-header-back duet-button*/.duet-header-back.sc-duet-header duet-button.sc-duet-header{position:absolute;top:50%;left:36px;transform:translateY(-50%)}@media (max-width: 35.9375em){/*!@.duet-header-back duet-button*/.duet-header-back.sc-duet-header duet-button.sc-duet-header{left:20px;max-width:40px;padding:0 12px;overflow:hidden}}/*!@.duet-header-back .duet-header-toggle*/.duet-header-back.sc-duet-header .duet-header-toggle.sc-duet-header{display:none !important}/*!@.duet-header-skip*/.duet-header-skip.sc-duet-header{padding:8px 16px 9px !important;position:absolute;top:-100%;left:-100%;z-index:200;width:1px;min-width:160px;height:1px;overflow:hidden;font-weight:600;color:#0077b3;text-align:center;text-decoration:none;background:white;border-radius:4px;opacity:0}/*!@.duet-header-skip:focus*/.duet-header-skip.sc-duet-header:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-header-skip:focus, .duet-header-skip:focus.duet-theme-turva*/.duet-theme-turva.sc-duet-header .duet-header-skip.sc-duet-header:focus,.duet-header-skip.sc-duet-header:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-theme-turva .duet-header-skip*/.duet-theme-turva.sc-duet-header .duet-header-skip.sc-duet-header{min-width:120px;color:#171c3a}@media (min-width: 106.25em){/*!@.duet-header-skip*/.duet-header-skip.sc-duet-header{margin-left:20px}}/*!@.duet-header-skip:focus*/.duet-header-skip.sc-duet-header:focus{top:12px;left:20px;width:auto;height:auto;outline:0;opacity:1}";
10101
+ const DuetHeaderIcon = (props, _children) => {
10102
+ const iconSize = props.iconSize ? props.iconSize : "x-small";
10103
+ return (hAsync("span", { class: "duet-header-icon" },
10104
+ hAsync("duet-icon", { margin: "none", size: iconSize, icon: props.icon, color: "currentColor" })));
10105
+ };
10106
+
10107
+ const DuetHeaderDropdown = (props, _children) => {
10108
+ const accessibleLabel = props.accessibleText ? props.accessibleText : props.label;
10109
+ return (hAsync("div", { class: { ["duet-header-dropdown"]: true, [props.className]: !!props.className } },
10110
+ hAsync("button", { ref: props.toggleRef, "aria-haspopup": "listbox", "aria-controls": props.id, "aria-expanded": props.isOpen ? "true" : "false", "aria-labelledby": `${props.id}-accessible-label`, id: `${props.id}-button`, type: "button", class: {
10111
+ [props.id]: true,
10112
+ "duet-header-dropdown-toggle": true,
10113
+ "duet-header-button": true,
10114
+ active: props.active,
10115
+ }, onClick: props.onToggle },
10116
+ props.icon && hAsync(DuetHeaderIcon, { icon: props.icon }),
10117
+ hAsync("span", { "aria-hidden": "true", id: `${props.id}-label`, class: "duet-header-dropdown-label" }, props.label),
10118
+ props.badge && hAsync("div", { class: "duet-header-badge" }),
10119
+ hAsync("div", { class: "duet-header-caret", "aria-hidden": "true" },
10120
+ hAsync("duet-icon", { margin: "none", size: "auto", icon: actionArrowDownSmall.svg, color: "currentColor" })),
10121
+ hAsync("duet-visually-hidden", { id: `${props.id}-accessible-label` }, accessibleLabel)),
10122
+ hAsync("div", { ref: props.itemsRef, tabindex: "-1", role: "menu", id: props.id, "aria-labelledby": `${props.id}-button`, class: {
10123
+ "duet-header-dropdown-content": true,
10124
+ [`${props.id}-items`]: true,
10125
+ active: props.isOpen,
10126
+ } }, _children)));
10127
+ };
10128
+
10129
+ const DuetHeaderHamburger = () => (hAsync("div", { class: "duet-header-hamburger" },
10130
+ hAsync("span", { class: "duet-header-bar" }),
10131
+ hAsync("span", { class: "duet-header-bar" }),
10132
+ hAsync("span", { class: "duet-header-bar" }),
10133
+ hAsync("span", { class: "duet-header-bar" })));
10134
+
10135
+ const duetHeaderCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-header,*.sc-duet-header::after,*.sc-duet-header::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-header-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}@supports (position: -webkit-sticky){/*!@:host*/.sc-duet-header-h{position:-webkit-sticky;top:-4rem;z-index:400}}@supports (position: sticky){/*!@:host*/.sc-duet-header-h{position:sticky;top:-4rem;z-index:400}}@supports (position: -webkit-sticky){/*!@:host(.duet-header-multi-level-desktop-variation)*/.duet-header-multi-level-desktop-variation.sc-duet-header-h{top:0}}@supports (position: sticky){/*!@:host(.duet-header-multi-level-desktop-variation)*/.duet-header-multi-level-desktop-variation.sc-duet-header-h{top:0}}/*!@.duet-header-reserved-space*/.duet-header-reserved-space.sc-duet-header{height:4rem}@media (min-width: 62em){/*!@.duet-header-reserved-space.duet-with-links*/.duet-header-reserved-space.duet-with-links.sc-duet-header{height:7rem}}/*!@.duet-header*/.duet-header.sc-duet-header{-webkit-user-select:none;user-select:none;position:fixed;top:0;left:0;z-index:400;display:block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.5;color:#00294d;text-align:left}/*!@.duet-header.duet-theme-turva*/.duet-header.duet-theme-turva.sc-duet-header{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}@media (min-width: 62em){/*!@.duet-header.duet-theme-turva*/.duet-header.duet-theme-turva.sc-duet-header{box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13)}}@media (min-width: 62em){/*!@.duet-header*/.duet-header.sc-duet-header{position:absolute;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07)}/*!@.duet-header.duet-header-inactive*/.duet-header.duet-header-inactive.sc-duet-header{position:fixed}}/*!@.duet-header **/.duet-header.sc-duet-header *.sc-duet-header{-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}/*!@.duet-header-top*/.duet-header-top.sc-duet-header{position:relative;z-index:200;display:flex;flex-direction:row;align-items:center;width:100%;height:4rem;padding:0 16px;background:white;border-bottom:1px solid #e1e3e6;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07)}@media (min-width: 62em){/*!@.duet-header-top*/.duet-header-top.sc-duet-header{z-index:100;padding:0 28px;box-shadow:none}/*!@.duet-header-top duet-logo*/.duet-header-top.sc-duet-header duet-logo.sc-duet-header{padding-right:4px}}@media (min-width: 106.25em){/*!@.duet-header-top*/.duet-header-top.sc-duet-header{padding:0 48px}}/*!@.duet-theme-turva .duet-header-top*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header{border-color:#e4e4e6;box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13)}@media (min-width: 62em){/*!@.duet-theme-turva .duet-header-top*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header{box-shadow:none}}/*!@.duet-theme-turva .duet-header-top duet-logo*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header duet-logo.sc-duet-header{left:-80px !important;margin-top:-8px !important}/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{max-width:200px;padding-left:16px;margin-top:1px;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:1px solid #cfd2d4}/*!@.duet-theme-turva .duet-header-top .duet-header-region*/.duet-theme-turva.sc-duet-header .duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{border-color:#cfcfd1}@media (max-width: 35.9375em){/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{display:none}}@media (min-width: 62em){/*!@.duet-header-top .duet-header-region*/.duet-header-top.sc-duet-header .duet-header-region.sc-duet-header{padding-left:19px}}/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:fixed;top:4rem;bottom:0;left:0;z-index:100;display:flex;flex-direction:column;width:100%;overflow-y:auto;visibility:hidden;background:#f3f9fc;opacity:0;-webkit-overflow-scrolling:touch}/*!@.duet-theme-turva .duet-header-bottom*/.duet-theme-turva.sc-duet-header .duet-header-bottom.sc-duet-header{background:#f5f5f7}@media (min-width: 62em){/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:relative;top:auto;bottom:auto;z-index:200;flex-direction:row;overflow:visible;visibility:visible;background:white;opacity:1}/*!@.duet-header-bottom.duet-header-inactive*/.duet-header-bottom.duet-header-inactive.sc-duet-header{position:relative}}/*!@.duet-header-bottom.active*/.duet-header-bottom.active.sc-duet-header{visibility:visible;opacity:1;transition:opacity 300ms ease, visibility 300ms ease}@media (min-width: 62em){/*!@.duet-header-bottom*/.duet-header-bottom.sc-duet-header{position:relative;transition:none !important}}/*!@.duet-header-items,\n.duet-header-bottom-utils,\n.duet-header-utils*/.duet-header-items.sc-duet-header,.duet-header-bottom-utils.sc-duet-header,.duet-header-utils.sc-duet-header{opacity:0;transition:transform 600ms ease, opacity 600ms ease;transform:translateY(-28px)}@media (min-width: 62em){/*!@.duet-header-items,\n.duet-header-bottom-utils,\n.duet-header-utils*/.duet-header-items.sc-duet-header,.duet-header-bottom-utils.sc-duet-header,.duet-header-utils.sc-duet-header{opacity:1;transition:none !important;transform:none}}/*!@.active .duet-header-items,\n.active .duet-header-bottom-utils,\n.active .duet-header-utils*/.active.sc-duet-header .duet-header-items.sc-duet-header,.active.sc-duet-header .duet-header-bottom-utils.sc-duet-header,.active.sc-duet-header .duet-header-utils.sc-duet-header{opacity:1;transform:translateY(0)}/*!@.duet-header-items*/.duet-header-items.sc-duet-header{position:relative;z-index:300;display:block;width:100%;font-size:1rem;font-weight:400;line-height:1.5;background:white}@media (min-width: 62em){/*!@.duet-header-items*/.duet-header-items.sc-duet-header{z-index:100;display:flex;flex-direction:row;padding:0 21.5384615385px}}@media (min-width: 106.25em){/*!@.duet-header-items*/.duet-header-items.sc-duet-header{padding-left:43.6363636364px}}/*!@.duet-header-items .duet-header-item-container*/.duet-header-items.sc-duet-header .duet-header-item-container.sc-duet-header{border-bottom:1px solid #e1e3e6;border-radius:0}@media (min-width: 62em){/*!@.duet-header-items .duet-header-item-container*/.duet-header-items.sc-duet-header .duet-header-item-container.sc-duet-header{border:0}}/*!@.duet-header-items .duet-header-second-level .duet-header-item*/.duet-header-items.sc-duet-header .duet-header-second-level.sc-duet-header .duet-header-item.sc-duet-header{padding:0 40px;border:0}/*!@.duet-header-items .duet-header-second-level .duet-header-button*/.duet-header-items.sc-duet-header .duet-header-second-level.sc-duet-header .duet-header-button.sc-duet-header{border:0}/*!@.duet-header-items .duet-header-second-level .duet-header-dropdown-content*/.duet-header-items.sc-duet-header .duet-header-second-level.sc-duet-header .duet-header-dropdown-content.sc-duet-header{padding:0;border:0}/*!@.duet-header-items .duet-header-third-level .duet-header-item*/.duet-header-items.sc-duet-header .duet-header-third-level.sc-duet-header .duet-header-item.sc-duet-header{padding:0 75px}/*!@.duet-header-items .duet-header-item*/.duet-header-items.sc-duet-header .duet-header-item.sc-duet-header{position:relative;display:flex;align-items:center;width:100%;padding:0 20px;overflow:hidden;font-size:1rem;line-height:48px;color:#00294d;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 62em){/*!@.duet-header-items .duet-header-item*/.duet-header-items.sc-duet-header .duet-header-item.sc-duet-header{border-radius:4px}}/*!@.duet-theme-turva .duet-header-items .duet-header-item*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.sc-duet-header{font-weight:600;color:#171c3a;border-color:#e1e3e6}/*!@.duet-header-items .duet-header-item:hover*/.duet-header-items.sc-duet-header .duet-header-item.sc-duet-header:hover{color:#004d80}/*!@.duet-theme-turva .duet-header-items .duet-header-item:hover*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.sc-duet-header:hover{color:#444445}/*!@.duet-header-items .duet-header-item:focus*/.duet-header-items.sc-duet-header .duet-header-item.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-items .duet-header-item:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-items.sc-duet-header .duet-header-item.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-items .duet-header-item:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 62em){/*!@.duet-header-items .duet-header-item*/.duet-header-items.sc-duet-header .duet-header-item.sc-duet-header{width:auto;max-width:300px;padding:0 12px;overflow:hidden;font-size:0.875rem;text-overflow:ellipsis;border:0}}/*!@.duet-header-items .duet-header-item.active*/.duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header{color:#0077b3;-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased}/*!@.duet-theme-turva .duet-header-items .duet-header-item.active*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header{color:#c60c30}/*!@.duet-header-items .duet-header-item.active:hover*/.duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header:hover{color:#0077b3}/*!@.duet-theme-turva .duet-header-items .duet-header-item.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header:hover{color:#c60c30}/*!@.duet-header-items .duet-header-item.active::after*/.duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-items .duet-header-item.active::after*/.duet-theme-turva.sc-duet-header .duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header::after{background:#c60c30}@media (min-width: 62em){/*!@.duet-header-items .duet-header-item.active::after*/.duet-header-items.sc-duet-header .duet-header-item.active.sc-duet-header::after{top:auto;left:12px;width:calc(100% - 24px);height:3px}}/*!@.duet-header-third-level-active .duet-header-items .duet-header-first-level.active*/.duet-header-third-level-active.sc-duet-header .duet-header-items.sc-duet-header .duet-header-first-level.active.sc-duet-header{color:#00294d}/*!@.duet-header-third-level-active .duet-header-items .duet-header-first-level.active::after*/.duet-header-third-level-active.sc-duet-header .duet-header-items.sc-duet-header .duet-header-first-level.active.sc-duet-header::after{display:none}/*!@.duet-header-third-level-active .duet-header-items .duet-header-second-level button*/.duet-header-third-level-active.sc-duet-header .duet-header-items.sc-duet-header .duet-header-second-level.sc-duet-header button.sc-duet-header{color:#00294d}/*!@.duet-header-toggle*/.duet-header-toggle.sc-duet-header{display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin-right:-8px;margin-left:auto;cursor:pointer;border-radius:4px;-webkit-appearance:none;appearance:none}/*!@.duet-header-toggle:focus*/.duet-header-toggle.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 62em){/*!@.duet-header-toggle*/.duet-header-toggle.sc-duet-header{display:none}}/*!@.duet-header-hamburger*/.duet-header-hamburger.sc-duet-header{position:relative;width:24px;height:24px;margin-top:5px !important;pointer-events:none;transition:0.4s ease-in-out;backface-visibility:hidden}/*!@.duet-header-hamburger .duet-header-bar*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header{position:absolute;left:0;display:block;width:100%;height:2px;background:#00294d;border-radius:20rem;opacity:1;transition:0.25s ease-in-out;transform:rotate(0deg) scale(0.98)}/*!@.duet-theme-turva .duet-header-hamburger .duet-header-bar*/.duet-theme-turva.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header{background:#171c3a}/*!@.duet-header-hamburger .duet-header-bar:nth-child(1)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(1){top:0}/*!@.duet-header-hamburger .duet-header-bar:nth-child(2), .duet-header-hamburger .duet-header-bar:nth-child(3)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(2),.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(3){top:7px}/*!@.duet-header-hamburger .duet-header-bar:nth-child(4)*/.duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(4){top:14px}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(1)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(1){top:7px;left:50%;width:0%}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(2)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(2){transform:rotate(45deg)}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(3)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(3){transform:rotate(-45deg)}/*!@button.active .duet-header-hamburger .duet-header-bar:nth-child(4)*/button.active.sc-duet-header .duet-header-hamburger.sc-duet-header .duet-header-bar.sc-duet-header:nth-child(4){top:7px;left:50%;width:0%}/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{display:flex;flex-direction:column;width:100%}@media (min-width: 62em){/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{position:absolute;top:-4rem;right:0;z-index:999999999;flex-direction:row;align-items:center;justify-content:space-between;width:auto;margin-right:20px}}@media (min-width: 106.25em){/*!@.duet-header-utils*/.duet-header-utils.sc-duet-header{margin-right:36px}}@media (min-width: 62em){/*!@.duet-header-bottom-utils*/.duet-header-bottom-utils.sc-duet-header{position:absolute;top:0;right:0;z-index:999999999;margin-right:20px}}@media (min-width: 106.25em){/*!@.duet-header-bottom-utils*/.duet-header-bottom-utils.sc-duet-header{margin-right:36px}}/*!@button*/button.sc-duet-header{font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-theme-turva button*/.duet-theme-turva.sc-duet-header button.sc-duet-header{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-header-button*/.duet-header-button.sc-duet-header{position:relative;display:flex;align-items:center;width:100%;height:48px;padding:0 20px;overflow:hidden;font-size:1rem;font-weight:400;line-height:48px;color:#00294d;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-bottom:1px solid #e1e3e6;border-radius:4px;-webkit-appearance:none;appearance:none}/*!@.duet-theme-turva .duet-header-button*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header{color:#171c3a;border-color:#e4e4e6}/*!@.duet-header-button:hover*/.duet-header-button.sc-duet-header:hover{color:#004d80}/*!@.duet-theme-turva .duet-header-button:hover*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header:hover{color:#444445}/*!@.duet-header-button:focus*/.duet-header-button.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-button:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-button.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-button:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-button:active*/.duet-header-button.sc-duet-header:active{opacity:0.75}@media (min-width: 62em){/*!@.duet-header-button*/.duet-header-button.sc-duet-header{width:auto;max-width:200px;height:4rem;padding:0 16px;font-size:0.875rem;line-height:4rem;border:0}/*!@.duet-header-button::before*/.duet-header-button.sc-duet-header::before{position:absolute;top:50%;right:0;width:1px;height:20px;content:\"\";background:#cfd2d4;transform:translateY(-50%)}/*!@.duet-theme-turva .duet-header-button::before*/.duet-theme-turva.sc-duet-header .duet-header-button.sc-duet-header::before{background:#cfcfd1}}/*!@.duet-header-button.active*/.duet-header-button.active.sc-duet-header{color:#0077b3;border-radius:0}/*!@.duet-theme-turva .duet-header-button.active*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header{color:#c60c30}/*!@.duet-header-button.active:hover*/.duet-header-button.active.sc-duet-header:hover{color:#0077b3}/*!@.duet-theme-turva .duet-header-button.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header:hover{color:#c60c30}/*!@.duet-header-button.active::after*/.duet-header-button.active.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:3px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-button.active::after*/.duet-theme-turva.sc-duet-header .duet-header-button.active.sc-duet-header::after{color:#c60c30}/*!@.duet-header-utils .duet-header-button.duet-header-logout*/.duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header{align-self:center;justify-content:center;width:auto;height:2.5rem;margin:2.25rem 0;font-weight:600;border:2px solid #00294d;border-radius:20rem}/*!@.duet-theme-turva .duet-header-utils .duet-header-button.duet-header-logout*/.duet-theme-turva.sc-duet-header .duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header{border-color:#171c3a}/*!@.duet-header-utils .duet-header-button.duet-header-logout .duet-header-icon*/.duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header .duet-header-icon.sc-duet-header{margin-right:0.5rem}/*!@.duet-header-utils .duet-header-button.duet-header-logout .duet-header-button-label*/.duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header .duet-header-button-label.sc-duet-header{font-size:0.875rem}@media (min-width: 62em){/*!@.duet-header-utils .duet-header-button.duet-header-logout*/.duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header{height:4rem;margin:0;font-weight:400;border:0}/*!@.duet-header-utils .duet-header-button.duet-header-logout .duet-header-icon*/.duet-header-utils.sc-duet-header .duet-header-button.duet-header-logout.sc-duet-header .duet-header-icon.sc-duet-header{margin-right:0.75rem}}/*!@.duet-header-no-action*/.duet-header-no-action.sc-duet-header{pointer-events:none}/*!@.duet-header-user-label*/.duet-header-user-label.sc-duet-header{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 62em){/*!@.duet-header-utils > *:last-child::before,\n.duet-header-utils > *:last-child button::before*/.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child::before,.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child button.sc-duet-header::before{display:none}}@media (min-width: 62em){/*!@.duet-header-utils > *:last-child .duet-header-dropdown-content*/.duet-header-utils.sc-duet-header>*.sc-duet-header:last-child .duet-header-dropdown-content.sc-duet-header{right:0;left:auto}}/*!@.duet-header-language*/.duet-header-language.sc-duet-header{text-transform:uppercase}/*!@.duet-header-icon*/.duet-header-icon.sc-duet-header{display:inline-flex;min-width:12px;margin-right:12px;font-size:0;line-height:normal;vertical-align:baseline}@media (min-width: 62em){/*!@.duet-header-icon*/.duet-header-icon.sc-duet-header{margin-right:8px}}/*!@.duet-header-caret*/.duet-header-caret.sc-duet-header{position:absolute;top:50%;right:20px;display:flex;width:10px;height:10px;margin-left:8px;line-height:normal;pointer-events:none;transition:300ms ease;transform:translateY(-50%);transform-origin:50% 50%}@media (min-width: 62em){/*!@.duet-header-caret*/.duet-header-caret.sc-duet-header{width:7px;height:7px}}/*!@.duet-header-caret duet-icon*/.duet-header-caret.sc-duet-header duet-icon.sc-duet-header{width:10px}/*!@.duet-header-dropdown-toggle.active .duet-header-caret*/.duet-header-dropdown-toggle.active.sc-duet-header .duet-header-caret.sc-duet-header{transform:translateY(-50%) rotate(180deg)}/*!@.duet-header-dropdown-toggle:focus*/.duet-header-dropdown-toggle.sc-duet-header:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-dropdown-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-header-dropdown-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-dropdown-toggle:focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-dropdown-toggle:active*/.duet-header-dropdown-toggle.sc-duet-header:active{outline:none}/*!@.duet-header-badge*/.duet-header-badge.sc-duet-header{display:inline-block;width:6px;height:6px;margin-top:-1rem;margin-left:5px;vertical-align:top;background:#f7b228;border-radius:50%;box-shadow:0 0 0 1px #c18b1f}/*!@.duet-theme-turva .duet-header-badge*/.duet-theme-turva.sc-duet-header .duet-header-badge.sc-duet-header{background:#faa40f}/*!@.duet-header-dropdown*/.duet-header-dropdown.sc-duet-header{position:relative}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header{z-index:200;padding-right:36px;overflow:hidden;transition:border 300ms ease}}/*!@.duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{display:none !important}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle::after*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header::after{background:#c60c30}}/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{color:#004d80;border-bottom:1px solid #f5f8fa}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{color:#444445;border-color:#f5f5f7}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover{border:0}/*!@.duet-header-dropdown .duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover::after{position:absolute;top:auto;bottom:0;left:0;width:100%;height:3px;transform:translateY(0)}}/*!@.duet-header-dropdown .duet-header-dropdown-content*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{display:none;padding-bottom:16px;background:#f3f9fc;border-bottom:1px solid #e1e3e6}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#f5f5f7;border-color:#e1e3e6}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{position:absolute;top:100%;left:0;z-index:600;display:block;min-width:150px;padding-top:16px;padding-left:0;visibility:hidden;border:0;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:300ms ease;transform:scale(0.85) translateZ(0) translateY(-20px)}}@media (min-width: 64.0625em){/*!@.duet-header-dropdown .duet-header-dropdown-content*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{min-width:170px}}/*!@.duet-header-dropdown .duet-header-dropdown-content.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.active.sc-duet-header{display:block}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content.active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.active.sc-duet-header{visibility:visible;opacity:1;transform:translateZ(0) translateY(0)}}/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item)*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item){padding:3px 8px 4px !important;position:relative;display:block;width:100%;padding-right:16px;padding-left:48px !important;overflow:hidden;font-size:0.875rem;font-weight:400;line-height:1.5;color:#00294d;text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;transition:300ms ease}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item)*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item){color:#171c3a}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item)*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item){padding-right:20px !important;padding-left:20px !important}}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item):hover*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item):hover{background:#e6f2f8}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item):hover*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item):hover{background:#f9e6ea}}/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item):focus*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item):focus{outline:0}/*!@:host(.user-is-tabbing) .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item):focus*/.user-is-tabbing.sc-duet-header-h .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item):focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item):focus*/.user-is-tabbing.sc-duet-header-h .duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item):focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item).active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item).active{padding-right:36px;font-weight:600;vertical-align:baseline;pointer-events:none}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item).active*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item).active{font-weight:700}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item).active*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item).active{color:white;background:#0077b3}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-content a:not(.duet-header-item).active*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header:not(.duet-header-item).active{background:#c60c30}}/*!@.duet-header-dropdown .duet-header-dropdown-content .duet-header-link-external*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header .duet-header-link-external.sc-duet-header{margin-left:4px}/*!@.duet-header-back .duet-header-top*/.duet-header-back.sc-duet-header .duet-header-top.sc-duet-header{flex-direction:row;align-items:center;justify-content:center}/*!@.duet-header-back duet-button*/.duet-header-back.sc-duet-header duet-button.sc-duet-header{position:absolute;top:50%;left:36px;transform:translateY(-50%)}@media (max-width: 35.9375em){/*!@.duet-header-back duet-button*/.duet-header-back.sc-duet-header duet-button.sc-duet-header{left:20px;max-width:40px;padding:0 12px;overflow:hidden}}/*!@.duet-header-back .duet-header-toggle*/.duet-header-back.sc-duet-header .duet-header-toggle.sc-duet-header{display:none !important}/*!@.duet-header-skip*/.duet-header-skip.sc-duet-header{padding:15px 28px 16px !important;position:absolute;top:-100%;left:-100%;z-index:200;width:1px;min-width:190px;height:1px;overflow:hidden;font-weight:600;color:#0077b3;text-align:center;text-decoration:none;background:white;border-radius:4px;opacity:0}/*!@.duet-header-skip:focus*/.duet-header-skip.sc-duet-header:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-header-skip:focus, .duet-header-skip:focus.duet-theme-turva*/.duet-theme-turva.sc-duet-header .duet-header-skip.sc-duet-header:focus,.duet-header-skip.sc-duet-header:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-theme-turva .duet-header-skip*/.duet-theme-turva.sc-duet-header .duet-header-skip.sc-duet-header{min-width:120px;color:#171c3a}@media (min-width: 106.25em){/*!@.duet-header-skip*/.duet-header-skip.sc-duet-header{margin-left:20px}}/*!@.duet-header-skip:focus*/.duet-header-skip.sc-duet-header:focus{top:12px;left:20px;width:auto;height:auto;outline:0;opacity:1}/*!@.duet-header-multi-level-desktop*/.duet-header-multi-level-desktop.sc-duet-header{height:6rem}/*!@.duet-header-multi-level-desktop .duet-header-top*/.duet-header-multi-level-desktop.sc-duet-header .duet-header-top.sc-duet-header{justify-content:space-between;height:6rem}/*!@.duet-header-multi-level-desktop .duet-header-button*/.duet-header-multi-level-desktop.sc-duet-header .duet-header-button.sc-duet-header{height:6rem}/*!@.duet-header-multi-level-desktop .logo-and-segment*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;padding-top:1rem}/*!@.duet-header-multi-level-desktop .logo-and-segment .duet-header-dropdown*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header .duet-header-dropdown.sc-duet-header{z-index:400;margin-left:2rem}/*!@.duet-header-multi-level-desktop .logo-and-segment .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#f3f9fc}/*!@.duet-header-multi-level-desktop .logo-and-segment button*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header button.sc-duet-header{align-items:flex-start;height:2rem;font-weight:600;line-height:1rem}/*!@.duet-header-multi-level-desktop .logo-and-segment button::before*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header button.sc-duet-header::before{display:none}/*!@.duet-header-multi-level-desktop .logo-and-segment .duet-header-caret*/.duet-header-multi-level-desktop.sc-duet-header .logo-and-segment.sc-duet-header .duet-header-caret.sc-duet-header{top:25%}/*!@.duet-header-multi-level-desktop-nav*/.duet-header-multi-level-desktop-nav.sc-duet-header{display:flex}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header{position:static}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-toggle*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.sc-duet-header{z-index:400;padding-right:1rem;font-size:1rem;font-weight:600}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-toggle.active*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header{color:#0077b3}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{z-index:399;display:flex;justify-content:center;width:100%;height:4.5rem;padding:0;background:#f3f9fc;border-top:1px solid #e1e3e6;border-bottom:1px solid #e1e3e6;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07);transition:none}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:auto;min-width:6rem;height:100%;padding:0 1rem !important;font-weight:600}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a::after*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{font-weight:600;color:#0077b3;background:none}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a.active::after*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header::after{transform:translateY(0)}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a .duet-header-icon*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header .duet-header-icon.sc-duet-header{margin:0}/*!@.duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content .duet-header-badge*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header .duet-header-badge.sc-duet-header{position:absolute;margin-top:-2rem;margin-right:-2.25rem}/*!@.duet-header-multi-level-desktop-nav button::before*/.duet-header-multi-level-desktop-nav.sc-duet-header button.sc-duet-header::before{display:none}/*!@.duet-header-multi-level-desktop-nav .duet-header-caret*/.duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-caret.sc-duet-header{display:none}/*!@.duet-header-multi-level-desktop-utils*/.duet-header-multi-level-desktop-utils.sc-duet-header{display:flex;flex-basis:0;flex-grow:1;justify-content:flex-end}/*!@.duet-header-multi-level-desktop-utils > :last-child::before*/.duet-header-multi-level-desktop-utils.sc-duet-header>.sc-duet-header:last-child::before{display:none}/*!@.duet-header-multi-level-desktop-utils .duet-header-dropdown*/.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-dropdown.sc-duet-header{z-index:400}/*!@.duet-header-multi-level-desktop-utils .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#f3f9fc}/*!@.duet-header-multi-level-desktop-utils .duet-header-button-label,\n.duet-header-multi-level-desktop-utils .duet-header-dropdown-label*/.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-button-label.sc-duet-header,.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-dropdown-label.sc-duet-header{display:none}@media (min-width: 64.0625em){/*!@.duet-header-multi-level-desktop-utils .duet-header-button-label,\n.duet-header-multi-level-desktop-utils .duet-header-dropdown-label*/.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-button-label.sc-duet-header,.duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-dropdown-label.sc-duet-header{display:initial}}/*!@.duet-header-multi-level-desktop .duet-theme-turva .logo-and-segment .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .logo-and-segment.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#fcf3f4}/*!@.duet-header-multi-level-desktop .duet-theme-turva .duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-toggle.active*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header{color:#c60c30}/*!@.duet-header-multi-level-desktop .duet-theme-turva .duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#fcf3f4;border-color:#e4e4e6}/*!@.duet-header-multi-level-desktop .duet-theme-turva .duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a::after*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.sc-duet-header::after{background:#c60c30}/*!@.duet-header-multi-level-desktop .duet-theme-turva .duet-header-multi-level-desktop-nav .duet-header-dropdown .duet-header-dropdown-content a.active*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .duet-header-multi-level-desktop-nav.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header a.active.sc-duet-header{color:#c60c30;background:none}/*!@.duet-header-multi-level-desktop .duet-theme-turva .duet-header-multi-level-desktop-utils .duet-header-dropdown .duet-header-dropdown-content*/.duet-header-multi-level-desktop.sc-duet-header .duet-theme-turva.sc-duet-header .duet-header-multi-level-desktop-utils.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.sc-duet-header{background:#fcf3f4}";
9947
10136
 
9948
10137
  const createEvent = (ev, data) => ({
9949
10138
  component: "duet-header",
@@ -9951,14 +10140,15 @@ const createEvent = (ev, data) => ({
9951
10140
  originalEvent: ev,
9952
10141
  });
9953
10142
  /**
9954
- * @slot utility - A slot for utilities, such as a notification drawer
9955
- * @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop.
10143
+ * @slot utility - A slot for utilities, such as a notification drawer or shopping basket.
10144
+ * @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop. Note: not available in desktop multilevel header.
9956
10145
  */
9957
10146
  class DuetHeader {
9958
10147
  constructor(hostRef) {
9959
10148
  registerInstance(this, hostRef);
9960
10149
  this.duetChange = createEvent$2(this, "duetChange", 3);
9961
10150
  this.duetSessionClick = createEvent$2(this, "duetSessionClick", 7);
10151
+ this.duetSearchClick = createEvent$2(this, "duetSearchClick", 7);
9962
10152
  this.duetUserClick = createEvent$2(this, "duetUserClick", 7);
9963
10153
  this.duetLanguageSelect = createEvent$2(this, "duetLanguageSelect", 7);
9964
10154
  this.duetLogoClick = createEvent$2(this, "duetLogoClick", 7);
@@ -9967,7 +10157,15 @@ class DuetHeader {
9967
10157
  this.duetItemClick = createEvent$2(this, "duetItemClick", 7);
9968
10158
  this.duetSkipClick = createEvent$2(this, "duetSkipClick", 7);
9969
10159
  this.duetAnalytics = createEvent$2(this, "duetAnalytics", 7);
10160
+ var _a;
10161
+ /**
10162
+ * Own Properties
10163
+ */
10164
+ this.subMenuItemRefs = {};
10165
+ this.subMenuButtonRefs = {};
9970
10166
  this.hasLanguageChanged = false;
10167
+ this.mql = [window.matchMedia(media_query_large.replace(/'/g, ""))];
10168
+ this.boundMqlFunctions = [];
9971
10169
  /**
9972
10170
  * State() variables
9973
10171
  * Inlined decorator, alphabetical order.
@@ -9975,12 +10173,17 @@ class DuetHeader {
9975
10173
  this.isContactOpen = false;
9976
10174
  this.isLanguageOpen = false;
9977
10175
  this.isSlideOutOpen = false;
10176
+ this.isSegmentOpen = false;
10177
+ this.openMenu = null;
10178
+ this.closedActives = null;
9978
10179
  this.processedItems = null;
9979
10180
  this.processedLanguageItems = null;
9980
10181
  this.processedContactItems = null;
9981
10182
  this.processedSession = null;
10183
+ this.processedSearch = null;
9982
10184
  this.processedUser = null;
9983
10185
  this.processedBack = null;
10186
+ this.renderDesktopNav = (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches;
9984
10187
  /**
9985
10188
  * Theme of the header.
9986
10189
  */
@@ -10086,6 +10289,7 @@ class DuetHeader {
10086
10289
  this.logoHref = "/";
10087
10290
  /**
10088
10291
  * The href of the current page item that is shown as “active”.
10292
+ * Note: not available in multilevel headers.
10089
10293
  */
10090
10294
  this.currentHref = "/";
10091
10295
  /**
@@ -10095,10 +10299,12 @@ class DuetHeader {
10095
10299
  this.skipToId = "";
10096
10300
  /**
10097
10301
  * Region that is shown next to the logo. If empty, region will be hidden.
10302
+ * Note: not available in desktop multilevel header.
10098
10303
  */
10099
10304
  this.region = "";
10100
10305
  /**
10101
10306
  * Label of the contact menu. If empty, contact menu will be hidden.
10307
+ * Note: not available in multilevel headers.
10102
10308
  */
10103
10309
  this.contact = "";
10104
10310
  this.handleClick = (event) => {
@@ -10117,6 +10323,11 @@ class DuetHeader {
10117
10323
  this.handleClick(e);
10118
10324
  this.duetSessionClick.emit(e);
10119
10325
  };
10326
+ this.handleSearchClick = (ev) => {
10327
+ const e = createEvent(ev, this.processedSearch);
10328
+ this.handleClick(e);
10329
+ this.duetSearchClick.emit(e);
10330
+ };
10120
10331
  this.handleUserClick = (ev) => {
10121
10332
  const e = createEvent(ev, this.processedUser);
10122
10333
  this.handleClick(e);
@@ -10139,40 +10350,55 @@ class DuetHeader {
10139
10350
  this.duetLogoClick.emit(e);
10140
10351
  };
10141
10352
  this.handleArrowKeys = ev => {
10142
- if (this.isContactOpen || this.isLanguageOpen) {
10143
- let button;
10144
- if (isArrowLeftKey(ev) || isArrowUpKey(ev)) {
10145
- button = ev.target.previousElementSibling;
10146
- }
10147
- else if (isArrowRightKey(ev) || isArrowDownKey(ev)) {
10148
- button = ev.target.nextElementSibling;
10149
- }
10150
- if (button) {
10151
- ev.preventDefault();
10152
- button.focus();
10153
- }
10353
+ let button;
10354
+ if (isArrowLeftKey(ev) || isArrowUpKey(ev)) {
10355
+ button = ev.target.previousElementSibling;
10356
+ }
10357
+ else if (isArrowRightKey(ev) || isArrowDownKey(ev)) {
10358
+ button = ev.target.nextElementSibling;
10359
+ }
10360
+ if (button) {
10361
+ ev.preventDefault();
10362
+ button.focus();
10154
10363
  }
10155
10364
  };
10156
- this.toggleMenu = (ev, type) => {
10365
+ this.toggleMenu = (ev, type, id, active) => {
10157
10366
  let el;
10158
10367
  ev.preventDefault();
10159
10368
  ev.stopPropagation();
10369
+ if (active === true && !this.openMenu) {
10370
+ const closedActives = this.closedActives ? [...this.closedActives] : [];
10371
+ const index = closedActives.findIndex(i => i === id);
10372
+ if (index > -1) {
10373
+ closedActives.splice(index, 1);
10374
+ this.closedActives = [...closedActives];
10375
+ }
10376
+ else {
10377
+ this.closedActives = [...closedActives, id];
10378
+ }
10379
+ }
10380
+ else {
10381
+ this.openMenu = this.openMenu === id ? null : id;
10382
+ }
10160
10383
  // For language menu
10161
10384
  if (type === "language") {
10162
10385
  this.isContactOpen = false;
10163
10386
  this.isLanguageOpen = !this.isLanguageOpen;
10387
+ this.isSegmentOpen = false;
10164
10388
  el = this.languageItemsEl;
10165
10389
  }
10166
10390
  // For contact menu
10167
10391
  else if (type === "contact") {
10168
10392
  this.isLanguageOpen = false;
10169
10393
  this.isContactOpen = !this.isContactOpen;
10394
+ this.isSegmentOpen = false;
10170
10395
  el = this.contactItemsEl;
10171
10396
  }
10172
10397
  // For mobile menu
10173
10398
  else if (type === "mobile") {
10174
10399
  this.isContactOpen = false;
10175
10400
  this.isLanguageOpen = false;
10401
+ this.isSegmentOpen = false;
10176
10402
  el = this.navigationEl;
10177
10403
  this.isSlideOutOpen = !this.isSlideOutOpen;
10178
10404
  if (this.isSlideOutOpen) {
@@ -10182,7 +10408,19 @@ class DuetHeader {
10182
10408
  enableBodyScroll(this.navigationEl);
10183
10409
  }
10184
10410
  }
10185
- if (this.isSlideOutOpen || this.isLanguageOpen || this.isContactOpen) {
10411
+ else if (type === "sub") {
10412
+ this.isContactOpen = false;
10413
+ this.isLanguageOpen = false;
10414
+ this.isSegmentOpen = false;
10415
+ el = this.subMenuItemRefs[id];
10416
+ }
10417
+ else if (type === "segment") {
10418
+ this.isContactOpen = false;
10419
+ this.isLanguageOpen = false;
10420
+ this.isSegmentOpen = !this.isSegmentOpen;
10421
+ el = this.segmentItemsEl;
10422
+ }
10423
+ if (this.isSlideOutOpen || this.isLanguageOpen || this.isContactOpen || this.isSegmentOpen || this.openMenu) {
10186
10424
  const drawer = this.element.querySelector("duet-notification-drawer");
10187
10425
  if (drawer) {
10188
10426
  drawer.close(false);
@@ -10201,10 +10439,27 @@ class DuetHeader {
10201
10439
  inheritGlobalTheme(this);
10202
10440
  this.refresh();
10203
10441
  }
10442
+ connectedCallback() {
10443
+ for (let i = 0; i < this.mql.length; i++) {
10444
+ // addEventListener is not available in Stencil hydrate
10445
+ if (this.mql[i].addEventListener) {
10446
+ const bound = this.refresh.bind(this);
10447
+ this.mql[i].addEventListener("change", bound);
10448
+ this.boundMqlFunctions[i] = bound;
10449
+ }
10450
+ }
10451
+ }
10204
10452
  disconnectedCallback() {
10205
10453
  if (this.navigationEl) {
10206
10454
  enableBodyScroll(this.navigationEl);
10207
10455
  }
10456
+ for (let i = 0; i < this.mql.length; i++) {
10457
+ // addEventListener is not available in Stencil hydrate
10458
+ if (this.mql[i].removeEventListener) {
10459
+ this.mql[i].removeEventListener("change", this.boundMqlFunctions[i]);
10460
+ }
10461
+ }
10462
+ this.boundMqlFunctions = [];
10208
10463
  }
10209
10464
  /**
10210
10465
  * Component event handling.
@@ -10217,7 +10472,7 @@ class DuetHeader {
10217
10472
  }
10218
10473
  }
10219
10474
  handleKeyDown(ev) {
10220
- if (this.isContactOpen || this.isLanguageOpen) {
10475
+ if (this.isContactOpen || this.isLanguageOpen || this.isSegmentOpen) {
10221
10476
  const activeElement = this.element.shadowRoot.activeElement;
10222
10477
  // When Space is pressed
10223
10478
  if (isSpaceKey(ev) && activeElement) {
@@ -10229,6 +10484,12 @@ class DuetHeader {
10229
10484
  else if (this.isLanguageOpen) {
10230
10485
  this.closeMenus(true);
10231
10486
  }
10487
+ else if (this.isSegmentOpen) {
10488
+ this.closeMenus();
10489
+ }
10490
+ else if (this.openMenu) {
10491
+ this.closeMenus();
10492
+ }
10232
10493
  activeElement.click();
10233
10494
  }
10234
10495
  }
@@ -10258,10 +10519,15 @@ class DuetHeader {
10258
10519
  * Local methods.
10259
10520
  */
10260
10521
  async refresh() {
10522
+ if (this.renderDesktopNav !== this.mql[0].matches) {
10523
+ this.renderDesktopNav = this.mql[0].matches;
10524
+ this.openMenu = null;
10525
+ }
10261
10526
  this.processedItems = parsePossibleJSON(this.items);
10262
10527
  this.processedLanguageItems = parsePossibleJSON(this.languageItems);
10263
10528
  this.processedContactItems = parsePossibleJSON(this.contactItems);
10264
10529
  this.processedSession = parsePossibleJSON(this.session);
10530
+ this.processedSearch = parsePossibleJSON(this.search);
10265
10531
  this.processedUser = parsePossibleJSON(this.user);
10266
10532
  this.processedBack = parsePossibleJSON(this.back);
10267
10533
  }
@@ -10278,7 +10544,7 @@ class DuetHeader {
10278
10544
  * Closes all dropdown menus in header when called.
10279
10545
  */
10280
10546
  async closeMenus(moveFocusToButton = false) {
10281
- if (this.isContactOpen || this.isLanguageOpen) {
10547
+ if (this.isContactOpen || this.isLanguageOpen || this.isSegmentOpen || this.openMenu) {
10282
10548
  if (this.isContactOpen && moveFocusToButton) {
10283
10549
  this.contactItemsButtonEl.focus({
10284
10550
  preventScroll: true,
@@ -10289,8 +10555,20 @@ class DuetHeader {
10289
10555
  preventScroll: true,
10290
10556
  });
10291
10557
  }
10558
+ if (this.isSegmentOpen && moveFocusToButton) {
10559
+ this.segmentItemsButtonEl.focus({
10560
+ preventScroll: true,
10561
+ });
10562
+ }
10563
+ if (this.openMenu && moveFocusToButton) {
10564
+ this.subMenuButtonRefs[this.openMenu].focus({
10565
+ preventScroll: true,
10566
+ });
10567
+ }
10292
10568
  this.isContactOpen = false;
10293
10569
  this.isLanguageOpen = false;
10570
+ this.isSegmentOpen = false;
10571
+ this.openMenu = null;
10294
10572
  }
10295
10573
  }
10296
10574
  /**
@@ -10306,45 +10584,93 @@ class DuetHeader {
10306
10584
  */
10307
10585
  render() {
10308
10586
  const { skipLabel, changeLanguage, activeLanguage } = this.accessibleI18nLabels;
10309
- return (hAsync("div", { class: {
10587
+ const skipToLabel = this.skipToId ? (hAsync("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)) : null;
10588
+ const logo = (hAsync("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
10589
+ const largeLogo = (hAsync("duet-logo", { href: this.logoHref, size: "large", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
10590
+ const contactDropdown = this.contact && this.processedContactItems ? (hAsync(DuetHeaderDropdown, { id: "duet-header-contact", label: this.contact, icon: navigationContactDropdown.svg, active: this.isContactOpen, isOpen: this.isContactOpen, badge: false, toggleRef: el => (this.contactItemsButtonEl = el), itemsRef: el => (this.contactItemsEl = el), onToggle: event => this.toggleMenu(event, "contact") }, this.processedContactItems.map(item => (hAsync("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" }, item.label, Build.isBrowser ))))) : null;
10591
+ const languageDropdown = this.language && this.processedLanguageItems ? (hAsync(DuetHeaderDropdown, { id: "duet-header-language", label: this.language, icon: navigationLanguage.svg, accessibleText: `${changeLanguage}${this.hasLanguageChanged ? `, ${activeLanguage}` : ""}`, active: this.isLanguageOpen, isOpen: this.isLanguageOpen, badge: false, toggleRef: el => (this.languageItemsButtonEl = el), itemsRef: el => (this.languageItemsEl = el), onToggle: event => this.toggleMenu(event, "language") }, this.processedLanguageItems.map(item => (hAsync("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))))) : null;
10592
+ const processedUserWithLink = this.processedUser && this.processedUser.href ? (hAsync("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick }, hAsync(DuetHeaderIcon, { icon: navigationUser.svg }), hAsync("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
10593
+ const processedUserWithoutLink = this.processedUser && !this.processedUser.href ? (hAsync("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" }, hAsync(DuetHeaderIcon, { icon: navigationUser.svg }), hAsync("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
10594
+ const processedSessionIconSize = this.renderDesktopNav ? "x-small" : "small";
10595
+ const processedSession = this.processedSession ? (hAsync("a", { href: this.processedSession.href || "#", id: this.processedSession.id, class: "duet-header-logout duet-header-button", onClick: this.handleSessionClick }, hAsync(DuetHeaderIcon, { icon: this.processedSession.type === "logout" ? navigationLogout.svg : navigationLogin.svg, iconSize: processedSessionIconSize }), hAsync("span", { class: "duet-header-button-label" }, this.processedSession.label))) : null;
10596
+ const processedSearch = this.processedSearch ? (hAsync("a", { href: this.processedSearch.href || "#", id: this.processedSearch.id, class: "duet-header-search duet-header-button", onClick: this.handleSearchClick }, hAsync(DuetHeaderIcon, { icon: formSearch.svg }), hAsync("span", { class: "duet-header-button-label" }, this.processedSearch.label))) : null;
10597
+ // Back variation
10598
+ if (this.processedBack) {
10599
+ return (hAsync(Host, { class: "duet-header-back-variation" }, hAsync("div", { class: "duet-header-reserved-space" }, hAsync("header", { class: {
10600
+ "duet-header": true,
10601
+ "duet-theme-turva": this.theme === "turva",
10602
+ "duet-header-back": true,
10603
+ "duet-header-inactive": true,
10604
+ } }, hAsync("div", { class: "duet-header-top" }, skipToLabel, hAsync("duet-button", { url: this.processedBack.href, id: this.processedBack.id, theme: this.theme, variation: "plain", color: this.theme === "turva" ? "secondary-turva" : "secondary", icon: "navigation-arrow-left", iconSize: "large", onClick: this.handleBackClick }, this.processedBack.label), logo, hAsync("slot", { name: "logo-utility" }))))));
10605
+ }
10606
+ // multi level desktop variation
10607
+ const itemsHaveSubItems = this.processedItems && this.processedItems.some(item => item.items && item.items.length > 0);
10608
+ if (this.renderDesktopNav && itemsHaveSubItems) {
10609
+ const activeSegment = this.processedItems.find(item => item.active);
10610
+ const isThirdLevelActive = this.processedItems &&
10611
+ this.processedItems.some(item => item.items &&
10612
+ item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
10613
+ const segmentId = "duet-header-segment";
10614
+ return (hAsync(Host, { class: "duet-header-multi-level-desktop-variation" }, hAsync("div", { class: {
10615
+ "duet-header-multi-level-desktop": true,
10616
+ "duet-header-multi-level-desktop-third-level-is-open": isThirdLevelActive,
10617
+ } }, hAsync("header", { class: {
10618
+ "duet-header": true,
10619
+ "duet-theme-turva": this.theme === "turva",
10620
+ "duet-header-inactive": !this.processedItems,
10621
+ } }, hAsync("div", { class: "duet-header-top" }, skipToLabel, hAsync("div", { class: "logo-and-segment" }, largeLogo, this.processedItems && (hAsync(DuetHeaderDropdown, { id: segmentId, label: activeSegment.label, active: this.isSegmentOpen, isOpen: this.isSegmentOpen, badge: false, toggleRef: el => (this.segmentItemsButtonEl = el), itemsRef: el => (this.segmentItemsEl = el), onToggle: event => this.toggleMenu(event, "segment") }, this.processedItems.map(item => (hAsync("a", { class: { active: activeSegment === item }, role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleItemClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" }, item.icon && (hAsync("div", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", name: item.icon, color: "currentColor" }))), hAsync("span", null, item.label), item.badge && hAsync("div", { class: "duet-header-badge" }))))))), hAsync("nav", { class: "duet-header-multi-level-desktop-nav" }, activeSegment.items &&
10622
+ activeSegment.items
10623
+ .filter(secondLevelItem => secondLevelItem.items && secondLevelItem.items.length > 0)
10624
+ .map((secondLevelItem, secondLevelItemIndex) => {
10625
+ const id = secondLevelItem.id || `segment-item-${secondLevelItemIndex}`;
10626
+ return (hAsync(DuetHeaderDropdown, { id: id, label: secondLevelItem.label, active: (!this.openMenu && secondLevelItem.active === true) || this.openMenu === id, isOpen: this.openMenu === id, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id) }, secondLevelItem.items &&
10627
+ secondLevelItem.items.map(thirdLevelItem => (hAsync("a", { class: { active: thirdLevelItem.active }, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, thirdLevelItem), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" }, thirdLevelItem.icon && (hAsync("div", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))), hAsync("span", null, thirdLevelItem.label), thirdLevelItem.badge && hAsync("div", { class: "duet-header-badge" }))))));
10628
+ })), hAsync("div", { class: "duet-header-multi-level-desktop-utils" }, processedSearch, languageDropdown, processedSession), hAsync("slot", { name: "utility" }))))));
10629
+ }
10630
+ // Default variation
10631
+ const isThirdLevelActive = this.processedItems &&
10632
+ this.processedItems.some(item => item.items &&
10633
+ item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
10634
+ return (hAsync(Host, { class: {
10635
+ "duet-header-default-variation": true,
10636
+ } }, hAsync("div", { class: {
10310
10637
  "duet-header-reserved-space": true,
10311
10638
  "duet-with-links": !!this.processedItems,
10312
- "duet-without-links": !this.processedItems,
10639
+ "duet-header-third-level-active": isThirdLevelActive,
10313
10640
  } }, hAsync("header", { class: {
10314
10641
  "duet-header": true,
10315
10642
  "duet-theme-turva": this.theme === "turva",
10316
- "duet-header-back": !!this.processedBack,
10317
10643
  "duet-header-inactive": !this.processedItems,
10318
- } }, hAsync("div", { class: "duet-header-top" }, this.skipToId && (hAsync("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)), this.processedBack && (hAsync("duet-button", { url: this.processedBack.href, id: this.processedBack.id, theme: this.theme, variation: "plain", color: this.theme === "turva" ? "secondary-turva" : "secondary", icon: "navigation-arrow-left", iconSize: "large", onClick: this.handleBackClick }, this.processedBack.label)), hAsync("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }), hAsync("slot", { name: "logo-utility" }, this.region && !this.processedBack && hAsync("div", { class: "duet-header-region" }, this.region)), (this.processedItems ||
10319
- this.processedLanguageItems ||
10320
- this.processedContactItems ||
10644
+ } }, hAsync("div", { class: "duet-header-top" }, skipToLabel, logo, hAsync("slot", { name: "logo-utility" }, this.region && hAsync("div", { class: "duet-header-region" }, this.region)), (this.processedItems ||
10645
+ languageDropdown ||
10646
+ contactDropdown ||
10321
10647
  this.processedSession ||
10322
- this.processedUser) && (hAsync("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleLabel), hAsync("div", { class: "duet-header-hamburger" }, hAsync("span", { class: "duet-header-bar" }), hAsync("span", { class: "duet-header-bar" }), hAsync("span", { class: "duet-header-bar" }), hAsync("span", { class: "duet-header-bar" }))))), !this.processedBack && (hAsync("div", { ref: el => (this.navigationEl = el), class: {
10648
+ this.processedUser) && (hAsync("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleLabel), hAsync(DuetHeaderHamburger, null)))), hAsync("div", { ref: el => (this.navigationEl = el), class: {
10323
10649
  "duet-header-bottom": true,
10324
10650
  active: this.isSlideOutOpen,
10325
10651
  inactive: !this.processedItems,
10326
10652
  } }, hAsync("nav", { class: "duet-header-items", role: "navigation" }, this.processedItems &&
10327
- this.processedItems.map(item => (hAsync("a", { class: { active: this.currentHref === item.href }, href: item.href || "#", id: item.id, onClick: event => this.handleItemClick(event, item) }, item.label, item.badge && hAsync("div", { class: "duet-header-badge" }))))), hAsync("div", { class: "duet-header-bottom-utils" }, hAsync("slot", { name: "utility" })), hAsync("div", { class: "duet-header-utils" }, this.contact && this.processedContactItems && (hAsync("div", { class: "duet-header-dropdown" }, hAsync("button", { ref: el => (this.contactItemsButtonEl = el), class: {
10328
- "duet-header-contact": true,
10329
- "duet-header-dropdown-toggle": true,
10330
- "duet-header-button": true,
10331
- active: this.isContactOpen,
10332
- }, type: "button", "aria-haspopup": "listbox", "aria-controls": "duet-header-contact", "aria-expanded": this.isContactOpen ? "true" : "false", id: "duet-header-contact-button", onClick: event => this.toggleMenu(event, "contact") }, hAsync("div", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", icon: navigationContactDropdown.svg, color: "currentColor" })), hAsync("span", { id: "duet-header-contact-label" }, this.contact), hAsync("div", { class: "duet-header-caret" }, hAsync("duet-icon", { margin: "none", size: "auto", icon: actionArrowDownSmall.svg, color: "currentColor" }))), hAsync("div", { ref: el => (this.contactItemsEl = el), tabindex: "-1", role: "menu", id: "duet-header-contact", "aria-labelledby": "duet-header-contact-button", class: {
10333
- "duet-header-dropdown-content": true,
10334
- "duet-header-contact-items": true,
10335
- active: this.isContactOpen,
10336
- } }, this.processedContactItems &&
10337
- this.processedContactItems.map(item => (hAsync("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" }, item.label, Build.isBrowser )))))), this.language && this.processedLanguageItems && (hAsync("div", { class: "duet-header-dropdown" }, hAsync("button", { ref: el => (this.languageItemsButtonEl = el), "aria-haspopup": "listbox", "aria-controls": "duet-header-language", "aria-expanded": this.isLanguageOpen ? "true" : "false", id: "duet-header-language-button", type: "button", class: {
10338
- "duet-header-language": true,
10339
- "duet-header-dropdown-toggle": true,
10340
- "duet-header-button": true,
10341
- active: this.isLanguageOpen,
10342
- }, onClick: event => this.toggleMenu(event, "language") }, hAsync("div", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", icon: navigationLanguage.svg, color: "currentColor" })), hAsync("span", { "aria-hidden": "true" }, this.language), hAsync("div", { class: "duet-header-caret" }, hAsync("duet-icon", { margin: "none", size: "auto", icon: actionArrowDownSmall.svg, color: "currentColor" })), hAsync("duet-visually-hidden", null, changeLanguage, this.hasLanguageChanged && hAsync("span", null, ", ", activeLanguage))), hAsync("div", { ref: el => (this.languageItemsEl = el), tabindex: "-1", role: "menu", id: "duet-header-language", "aria-labelledby": "duet-header-language-button", class: {
10343
- "duet-header-dropdown-content": true,
10344
- "duet-header-language-items": true,
10345
- active: this.isLanguageOpen,
10346
- } }, this.processedLanguageItems &&
10347
- this.processedLanguageItems.map(item => (hAsync("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev) }, item.label)))))), this.processedUser && this.processedUser.href && (hAsync("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick }, hAsync("span", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", icon: navigationUser.svg, color: "currentColor" })), hAsync("span", { class: "duet-header-user-label" }, this.processedUser.label))), this.processedUser && !this.processedUser.href && (hAsync("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" }, hAsync("span", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", icon: navigationUser.svg, color: "currentColor" })), hAsync("span", { class: "duet-header-user-label" }, this.processedUser.label))), this.processedSession && (hAsync("a", { href: this.processedSession.href || "#", id: this.processedSession.id, class: "duet-header-logout duet-header-button", onClick: this.handleSessionClick }, hAsync("span", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "x-small", icon: this.processedSession.type === "logout" ? navigationLogout.svg : navigationLogin.svg, color: "currentColor" })), this.processedSession.label))))))));
10653
+ this.processedItems.map((item, itemIndex) => (hAsync("div", { class: "duet-header-item-container" }, hAsync("a", { class: {
10654
+ "duet-header-first-level": true,
10655
+ "duet-header-item": true,
10656
+ active: (!itemsHaveSubItems && this.currentHref === item.href) || item.active === true,
10657
+ }, href: item.href || "#", id: item.id || `header-item-${itemIndex}`, onClick: event => this.handleItemClick(event, item) }, item.label, item.badge && hAsync("div", { class: "duet-header-badge" })), item.items &&
10658
+ item.items
10659
+ .filter(secondLevelitem => secondLevelitem.items && secondLevelitem.items.length > 0)
10660
+ .map((secondLevelItem, secondLevelItemIndex) => {
10661
+ const id = secondLevelItem.id || `header-item-${itemIndex}-${secondLevelItemIndex}`;
10662
+ return (hAsync(DuetHeaderDropdown, { id: id, className: "duet-header-second-level", label: secondLevelItem.label, icon: `${secondLevelItem.icon}.svg`, active: (!this.openMenu &&
10663
+ secondLevelItem.active === true &&
10664
+ !(this.closedActives && !!this.closedActives.find(i => i === id))) ||
10665
+ this.openMenu === id, isOpen: (!this.openMenu &&
10666
+ secondLevelItem.active === true &&
10667
+ !(this.closedActives && !!this.closedActives.find(i => i === id))) ||
10668
+ this.openMenu === id, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id, secondLevelItem.active === true) }, hAsync("div", { class: "duet-header-third-level" }, secondLevelItem.items &&
10669
+ secondLevelItem.items.map(thirdLevelItem => (hAsync("a", { class: {
10670
+ "duet-header-item": true,
10671
+ active: thirdLevelItem.active === true,
10672
+ }, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" }, thirdLevelItem.icon && (hAsync("div", { class: "duet-header-icon" }, hAsync("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))), hAsync("span", null, thirdLevelItem.label), thirdLevelItem.badge && hAsync("div", { class: "duet-header-badge" })))))));
10673
+ }))))), hAsync("div", { class: "duet-header-bottom-utils" }, hAsync("slot", { name: "utility" })), hAsync("div", { class: "duet-header-utils" }, !itemsHaveSubItems && contactDropdown, languageDropdown, !itemsHaveSubItems && (hAsync(Fragment, null, processedUserWithLink, processedUserWithoutLink)), processedSearch, processedSession))))));
10348
10674
  }
10349
10675
  get element() { return getElement(this); }
10350
10676
  static get watchers() { return {
@@ -10375,6 +10701,7 @@ class DuetHeader {
10375
10701
  "items": [8],
10376
10702
  "region": [1],
10377
10703
  "session": [8],
10704
+ "search": [8],
10378
10705
  "back": [8],
10379
10706
  "contact": [1],
10380
10707
  "contactItems": [8, "contact-items"],
@@ -10382,12 +10709,17 @@ class DuetHeader {
10382
10709
  "isContactOpen": [32],
10383
10710
  "isLanguageOpen": [32],
10384
10711
  "isSlideOutOpen": [32],
10712
+ "isSegmentOpen": [32],
10713
+ "openMenu": [32],
10714
+ "closedActives": [32],
10385
10715
  "processedItems": [32],
10386
10716
  "processedLanguageItems": [32],
10387
10717
  "processedContactItems": [32],
10388
10718
  "processedSession": [32],
10719
+ "processedSearch": [32],
10389
10720
  "processedUser": [32],
10390
10721
  "processedBack": [32],
10722
+ "renderDesktopNav": [32],
10391
10723
  "closeMenus": [64],
10392
10724
  "setFocus": [64]
10393
10725
  },
@@ -10725,76 +11057,6 @@ class DuetHero {
10725
11057
  }; }
10726
11058
  }
10727
11059
 
10728
- const cleanupSvg = (svgContent) => {
10729
- if (typeof document === "undefined" || !svgContent) {
10730
- return;
10731
- }
10732
- const div = document.createElement("div");
10733
- div.innerHTML = svgContent;
10734
- // setup this way to ensure it works on our buddy IE
10735
- for (let i = div.childNodes.length - 1; i >= 0; i--) {
10736
- const child = div.childNodes[i];
10737
- if (child.nodeName.toLowerCase() !== "svg") {
10738
- div.removeChild(div.childNodes[i]);
10739
- }
10740
- }
10741
- return div.firstElementChild;
10742
- };
10743
- const isValid = (elm) => {
10744
- if (elm.nodeName.toLowerCase() === "script") {
10745
- return false;
10746
- }
10747
- for (let i = 0; i < elm.attributes.length; i++) {
10748
- const attribute = elm.attributes[i];
10749
- if (attribute.name.toLowerCase().indexOf("on") === 0) {
10750
- return false;
10751
- }
10752
- }
10753
- if (elm.children) {
10754
- for (let i = 0; i < elm.children.length; i++) {
10755
- if (!isValid(elm.children[i])) {
10756
- return false;
10757
- }
10758
- }
10759
- }
10760
- return true;
10761
- };
10762
- const buildIconUrl = (iconName) => {
10763
- // under normal operations the Icons should always be loaded from the CDN
10764
- {
10765
- return `${Env.cdnURIProd}/icons/${Env.duetIconVersion}/lib/assets/${iconName}.svg`;
10766
- }
10767
- };
10768
- const iconCache = {};
10769
- function fetchIconByUrl(url) {
10770
- if (iconCache[url]) {
10771
- return iconCache[url];
10772
- }
10773
- // we create a function that covers all the fetching, cleanup, validation etc,
10774
- // this way we can perform that work just once, and then return the same promise in future.
10775
- async function doFetch() {
10776
- const res = await fetch(url);
10777
- if (!res.ok) {
10778
- throw new Error(`SVG request failed: ${res.status} ${res.statusText}`);
10779
- }
10780
- const responseText = await res.text();
10781
- const svgElement = cleanupSvg(responseText);
10782
- if (!isValid(svgElement)) {
10783
- throw new Error("SVG validation failed");
10784
- }
10785
- // OuterHTML does not unfortunately work here with IE11
10786
- // was previously: resolve(svgElement.outerHTML)
10787
- const div = document.createElement("div");
10788
- div.appendChild(svgElement);
10789
- return div.innerHTML;
10790
- }
10791
- // we do not `await` the fetch, as we only care about initiating the work,
10792
- // it's the responsibility of the calling code to wait for the response.
10793
- const req = doFetch();
10794
- // cache for the repeat requests
10795
- return (iconCache[url] = req);
10796
- }
10797
-
10798
11060
  const duetIconCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-icon,*.sc-duet-icon::after,*.sc-duet-icon::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-icon-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:16px !important;display:inline-block;width:auto;max-width:100%;color:inherit;-webkit-tap-highlight-color:transparent}@media (max-width: 35.9375em){/*!@:host(.duet-icon-has-outline)*/.duet-icon-has-outline.sc-duet-icon-h{margin-bottom:0 !important}}@media (max-width: 35.9375em){/*!@:host(.duet-icon-has-background)*/.duet-icon-has-background.sc-duet-icon-h{margin-bottom:0 !important}}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-icon-h{margin:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-icon-h{margin:0 !important}}/*!@.duet-icon*/.duet-icon.sc-duet-icon{-webkit-user-select:none;user-select:none;width:100%;height:100%;transform-origin:top center}/*!@.duet-icon.duet-icon-has-outline*/.duet-icon.duet-icon-has-outline.sc-duet-icon{padding:12px;border-style:solid;border-width:1px;border-radius:50%}@media (max-width: 35.9375em){/*!@.duet-icon.duet-icon-has-outline*/.duet-icon.duet-icon-has-outline.sc-duet-icon{outline:1px solid transparent;transform:scale(0.8)}}/*!@.duet-icon.duet-icon-has-background*/.duet-icon.duet-icon-has-background.sc-duet-icon{padding:16px;color:white;border-radius:50%}@media (max-width: 35.9375em){/*!@.duet-icon.duet-icon-has-background*/.duet-icon.duet-icon-has-background.sc-duet-icon{outline:1px solid transparent;transform:scale(0.8)}}/*!@.duet-icon.duet-icon-has-background.duet-theme-turva, .duet-icon.duet-icon-has-background.duet-theme-default*/.duet-icon.duet-icon-has-background.duet-theme-turva.sc-duet-icon,.duet-icon.duet-icon-has-background.duet-theme-default.sc-duet-icon{color:white}/*!@.duet-icon.duet-icon-has-background.xxx-small .duet-icon-svg, .duet-icon.duet-icon-has-outline.xxx-small .duet-icon-svg*/.duet-icon.duet-icon-has-background.xxx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon,.duet-icon.duet-icon-has-outline.xxx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:10px;height:10px}/*!@.duet-icon.duet-icon-has-background.xx-small .duet-icon-svg, .duet-icon.duet-icon-has-outline.xx-small .duet-icon-svg*/.duet-icon.duet-icon-has-background.xx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon,.duet-icon.duet-icon-has-outline.xx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:16px;height:16px}@media (max-width: 35.9375em){/*!@.duet-icon.duet-icon-not-responsive*/.duet-icon.duet-icon-not-responsive.sc-duet-icon{transform:scale(1) !important}}/*!@.duet-icon.duet-theme-default*/.duet-icon.duet-theme-default.sc-duet-icon{color:#0077b3}/*!@.duet-icon.duet-theme-turva*/.duet-icon.duet-theme-turva.sc-duet-icon{color:#c60c30}/*!@.duet-icon.auto .duet-icon-svg*/.duet-icon.auto.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:100%;height:100%}/*!@.duet-icon.xxx-small .duet-icon-svg*/.duet-icon.xxx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:7px;height:7px}/*!@.duet-icon.duet-icon-has-background.xxx-small*/.duet-icon.duet-icon-has-background.xxx-small.sc-duet-icon{padding:6px}/*!@.duet-icon.duet-icon-has-outline.xxx-small*/.duet-icon.duet-icon-has-outline.xxx-small.sc-duet-icon{padding:4px}/*!@.duet-icon.xx-small .duet-icon-svg*/.duet-icon.xx-small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:10px;height:10px}/*!@.duet-icon.duet-icon-has-background.xx-small*/.duet-icon.duet-icon-has-background.xx-small.sc-duet-icon{padding:8px}/*!@.duet-icon.duet-icon-has-outline.xx-small*/.duet-icon.duet-icon-has-outline.xx-small.sc-duet-icon{padding:7px}/*!@.duet-icon.x-small .duet-icon-svg*/.duet-icon.x-small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:16px;height:16px}/*!@.duet-icon.duet-icon-has-outline.x-small*/.duet-icon.duet-icon-has-outline.x-small.sc-duet-icon{padding:10px}/*!@.duet-icon.duet-icon-has-background.x-small*/.duet-icon.duet-icon-has-background.x-small.sc-duet-icon{padding:12px}/*!@.duet-icon.small .duet-icon-svg*/.duet-icon.small.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:20px;height:20px}/*!@.duet-icon.duet-icon-has-background.small*/.duet-icon.duet-icon-has-background.small.sc-duet-icon{padding:14px}/*!@.duet-icon.large .duet-icon-svg*/.duet-icon.large.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:30px;height:30px}/*!@.duet-icon.x-large .duet-icon-svg*/.duet-icon.x-large.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:36px;height:36px}/*!@.duet-icon.xx-large .duet-icon-svg*/.duet-icon.xx-large.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:48px;height:48px}/*!@.duet-icon.xxx-large .duet-icon-svg*/.duet-icon.xxx-large.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:48px;height:48px}@media (min-width: 48em){/*!@.duet-icon.xxx-large .duet-icon-svg*/.duet-icon.xxx-large.sc-duet-icon .duet-icon-svg.sc-duet-icon{width:72px;height:72px}}/*!@.duet-icon .duet-icon-svg*/.duet-icon.sc-duet-icon .duet-icon-svg.sc-duet-icon{display:block;width:24px;min-width:100%;height:24px;font-size:0}/*!@.duet-icon svg*/.duet-icon.sc-duet-icon svg.sc-duet-icon{width:100%;min-width:100%;fill:currentColor}";
10799
11061
 
10800
11062
  class DuetIcon {
@@ -10851,7 +11113,7 @@ class DuetIcon {
10851
11113
  if (this.src && this.icon) {
10852
11114
  console.warn("[DUET COMPONENTS]: <duet-icon> should have either have src or icon attributes, but not both. icon attribute will take precedence", "icon:", this.icon, "src:", this.src);
10853
11115
  }
10854
- return this.loadIcon();
11116
+ this.loadIcon();
10855
11117
  }
10856
11118
  async loadIcon() {
10857
11119
  // static icon known at build-time, so we can set it synchronously
@@ -10859,13 +11121,9 @@ class DuetIcon {
10859
11121
  this.svgContent = this.icon;
10860
11122
  return;
10861
11123
  }
10862
- // dynamically load icon from url
10863
- const src = this.src ? this.src : buildIconUrl(this.name);
10864
- try {
10865
- this.svgContent = await fetchIconByUrl(src);
10866
- }
10867
- catch (e) {
10868
- console.warn(`[DUET COMPONENTS]: <duet-icon> could not load SVG from URL: ${src}.`, e);
11124
+ // on server, don't make requests
11125
+ {
11126
+ return;
10869
11127
  }
10870
11128
  }
10871
11129
  /**
@@ -10873,11 +11131,13 @@ class DuetIcon {
10873
11131
  * Always the last one in the class.
10874
11132
  */
10875
11133
  render() {
10876
- const color = this.color === "currentColor" ? "currentColor" : getColorByName(this.color) || getColorByName(this.outline);
11134
+ const color = this.color === "currentColor"
11135
+ ? "currentColor"
11136
+ : getColorByName(this.color, this.theme) || getColorByName(this.outline, this.theme);
10877
11137
  const styles = {
10878
11138
  color,
10879
- background: getColorByName(this.background),
10880
- "border-color": getColorByName(this.outline),
11139
+ background: getColorByName(this.background, this.theme),
11140
+ "border-color": getColorByName(this.outline, this.theme),
10881
11141
  };
10882
11142
  return (hAsync(Host, { class: {
10883
11143
  "duet-m-0": this.margin === "none",
@@ -10924,8 +11184,6 @@ class DuetIcon {
10924
11184
 
10925
11185
  var formEmail={"title":"form-email","tags":"form email","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M12 23.999c-3.205 0-6.218-1.248-8.484-3.514S.001 15.206.001 12.001s1.248-6.218 3.514-8.485C5.782 1.25 8.795.001 12 .001s6.218 1.248 8.485 3.514A11.92 11.92 0 0 1 24 12v2.25A3.754 3.754 0 0 1 20.25 18a3.77 3.77 0 0 1-3.48-2.365A6.009 6.009 0 0 1 12 18c-3.308 0-6-2.692-6-6s2.692-6 6-6 6 2.692 6 6v2.25c0 1.241 1.009 2.25 2.25 2.25s2.25-1.009 2.25-2.25V12c0-2.804-1.092-5.441-3.075-7.424A10.433 10.433 0 0 0 12 1.501c-2.804 0-5.441 1.092-7.424 3.075S1.501 9.196 1.501 12c0 2.805 1.092 5.441 3.075 7.424s4.619 3.074 7.423 3.074c2.257 0 4.494-.746 6.299-2.1a.749.749 0 1 1 .9 1.199A12.049 12.049 0 0 1 12 23.999zM12 7.5c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5 4.5-2.019 4.5-4.5-2.019-4.5-4.5-4.5z\"/></svg>"};
10926
11186
 
10927
- var formSearch={"title":"form-search","tags":"form search magnifying glass","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M23.245 23.996a.743.743 0 0 1-.53-.22L16.2 17.26a9.824 9.824 0 0 1-2.553 1.579 9.766 9.766 0 0 1-7.51.069 9.745 9.745 0 0 1-5.359-5.262c-1.025-2.412-1.05-5.08-.069-7.51S3.558 1.802 5.97.777a9.744 9.744 0 0 1 7.51-.069c2.431.981 4.334 2.849 5.359 5.262s1.05 5.08.069 7.51a9.807 9.807 0 0 1-1.649 2.718l6.517 6.518a.75.75 0 0 1-.531 1.28zM9.807 1.49a8.259 8.259 0 0 0-3.25.667c-2.044.869-3.627 2.481-4.458 4.54s-.81 4.318.058 6.362a8.26 8.26 0 0 0 4.54 4.458 8.259 8.259 0 0 0 6.362-.059 8.285 8.285 0 0 0 2.594-1.736.365.365 0 0 1 .077-.076 8.245 8.245 0 0 0 1.786-2.728 8.255 8.255 0 0 0-.059-6.362 8.257 8.257 0 0 0-4.54-4.458 8.28 8.28 0 0 0-3.11-.608z\"/></svg>"};
10928
-
10929
11187
  /**
10930
11188
  * This function restores cursor position after changing input
10931
11189
  *
@@ -11381,6 +11639,9 @@ class DuetLayout {
11381
11639
 
11382
11640
  const duetLinkCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-link,*.sc-duet-link::after,*.sc-duet-link::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-link-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline}/*!@.duet-link*/.duet-link.sc-duet-link{display:inline;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-style:normal;font-weight:400;color:#0077b3;text-decoration:underline;border-radius:4px;transition:300ms ease}/*!@.duet-link:focus*/.duet-link.sc-duet-link:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-link:focus, .duet-link:focus.duet-theme-turva*/.duet-theme-turva.sc-duet-link .duet-link.sc-duet-link:focus,.duet-link.sc-duet-link:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-link.duet-theme-turva*/.duet-link.duet-theme-turva.sc-duet-link{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#c60c30}/*!@.duet-link:hover*/.duet-link.sc-duet-link:hover{color:#004d80;text-decoration:none}/*!@.duet-link:hover.duet-theme-turva*/.duet-link.sc-duet-link:hover.duet-theme-turva{color:#940925}/*!@.duet-link:active*/.duet-link.sc-duet-link:active{opacity:0.75;transition:none}/*!@.duet-link-external*/.duet-link-external.sc-duet-link{margin-left:4px}";
11383
11641
 
11642
+ /**
11643
+ * @part duet-link - piercing selector for styling the link
11644
+ */
11384
11645
  class DuetLink {
11385
11646
  constructor(hostRef) {
11386
11647
  registerInstance(this, hostRef);
@@ -11436,7 +11697,7 @@ class DuetLink {
11436
11697
  "duet-link": true,
11437
11698
  "duet-link-is-external": this.external,
11438
11699
  "duet-theme-turva": this.theme === "turva",
11439
- }, target: this.external ? "_blank" : "_self", "aria-label": this.accessibleLabel, id: this.identifier, ref: el => (this.nativeLink = el) }, hAsync("slot", null), Build.isBrowser )));
11700
+ }, target: this.external ? "_blank" : "_self", "aria-label": this.accessibleLabel, id: this.identifier, ref: el => (this.nativeLink = el), part: "duet-link" }, hAsync("slot", null), Build.isBrowser )));
11440
11701
  }
11441
11702
  static get delegatesFocus() { return true; }
11442
11703
  static get style() { return duetLinkCss; }
@@ -11578,7 +11839,7 @@ class DuetList {
11578
11839
  }; }
11579
11840
  }
11580
11841
 
11581
- const duetListItemCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-list-item,*.sc-duet-list-item::after,*.sc-duet-list-item::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-list-item-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:flex;flex-flow:row;width:100%;overflow:visible;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-list-item-h{flex-wrap:wrap}}/*!@:host dt,\n:host dd*/.sc-duet-list-item-h dt.sc-duet-list-item,.sc-duet-list-item-h dd.sc-duet-list-item{-webkit-hyphens:auto;hyphens:auto;text-align:left;word-break:break-all;word-break:break-word;margin-inline-start:0}@media (max-width: 35.9375em){/*!@:host dt,\n:host dd*/.sc-duet-list-item-h dt.sc-duet-list-item,.sc-duet-list-item-h dd.sc-duet-list-item{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}}/*!@:host dt*/.sc-duet-list-item-h dt.sc-duet-list-item{padding:16px !important;font-weight:600}@media (max-width: 35.9375em){/*!@:host dt*/.sc-duet-list-item-h dt.sc-duet-list-item{padding-bottom:4px !important}}/*!@.duet-theme-turva :host dt*/.duet-theme-turva .sc-duet-list-item-h dt.sc-duet-list-item{font-weight:700}/*!@:host dd*/.sc-duet-list-item-h dd.sc-duet-list-item{padding:16px !important;margin-left:auto;text-align:left}@media (max-width: 35.9375em){/*!@:host dd*/.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(:not(.duet-list-striped)) dt*/.sc-duet-list-item-h:not(.duet-list-striped) dt.sc-duet-list-item{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){/*!@:host(:not(.duet-list-striped)) dt*/.sc-duet-list-item-h:not(.duet-list-striped) dt.sc-duet-list-item{padding-bottom:4px !important}}/*!@:host(:not(.duet-list-striped)) dd*/.sc-duet-list-item-h:not(.duet-list-striped) dd.sc-duet-list-item{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){/*!@:host(:not(.duet-list-striped)) dd*/.sc-duet-list-item-h:not(.duet-list-striped) dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(.duet-theme-turva)*/.duet-theme-turva.sc-duet-list-item-h{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@:host(.duet-list-striped:nth-child(odd)) dt,\n:host(.duet-list-striped:nth-child(odd)) dd*/.duet-list-striped.sc-duet-list-item-h:nth-child(odd) dt.sc-duet-list-item,.duet-list-striped.sc-duet-list-item-h:nth-child(odd) dd.sc-duet-list-item{background:#f5f8fa}/*!@:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dt,\n:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dd*/.duet-list-striped.duet-theme-turva.sc-duet-list-item-h:nth-child(odd) dt.sc-duet-list-item,.duet-list-striped.duet-theme-turva.sc-duet-list-item-h:nth-child(odd) dd.sc-duet-list-item{background:#f5f5f7}/*!@:host(.duet-list-width-30) dt*/.duet-list-width-30.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:33%}/*!@:host(.duet-list-width-30) dd*/.duet-list-width-30.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:67%}/*!@:host(.duet-list-width-50) dt*/.duet-list-width-50.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:47%}/*!@:host(.duet-list-width-50) dd*/.duet-list-width-50.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:53%}/*!@:host(.duet-list-width-70) dt*/.duet-list-width-70.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:65%}/*!@:host(.duet-list-width-70) dd*/.duet-list-width-70.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:35%}/*!@:host(.duet-p-0) dt,\n:host(.duet-p-0) dd*/.duet-p-0.sc-duet-list-item-h dt.sc-duet-list-item,.duet-p-0.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important;padding-bottom:4px !important}@media (max-width: 35.9375em){/*!@:host(.duet-list-mobile-center) dt,\n:host(.duet-list-mobile-center) dd*/.duet-list-mobile-center.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-mobile-center.sc-duet-list-item-h dd.sc-duet-list-item{text-align:center}}@media (max-width: 61.9375em){/*!@:host(.duet-list-breakpoint-large)*/.duet-list-breakpoint-large.sc-duet-list-item-h{flex-wrap:wrap}/*!@:host(.duet-list-breakpoint-large) dt,\n:host(.duet-list-breakpoint-large) dd*/.duet-list-breakpoint-large.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-breakpoint-large.sc-duet-list-item-h dd.sc-duet-list-item{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}/*!@:host(.duet-list-breakpoint-large) dd*/.duet-list-breakpoint-large.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(.duet-list-breakpoint-large.duet-list-striped) dd*/.duet-list-breakpoint-large.duet-list-striped.sc-duet-list-item-h dd.sc-duet-list-item{padding-bottom:16px !important}@media (max-width: 61.9375em){/*!@:host(.duet-list-breakpoint-large.duet-list-mobile-center) dt,\n:host(.duet-list-breakpoint-large.duet-list-mobile-center) dd*/.duet-list-breakpoint-large.duet-list-mobile-center.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-breakpoint-large.duet-list-mobile-center.sc-duet-list-item-h dd.sc-duet-list-item{text-align:center !important}}";
11842
+ const duetListItemCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-list-item,*.sc-duet-list-item::after,*.sc-duet-list-item::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-list-item-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:flex;flex-flow:row;width:100%;overflow:visible;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-list-item-h{flex-wrap:wrap}}/*!@:host dt,\n:host dd*/.sc-duet-list-item-h dt.sc-duet-list-item,.sc-duet-list-item-h dd.sc-duet-list-item{margin-inline-start:0;-webkit-hyphens:auto;hyphens:auto;text-align:left;word-break:break-all;word-break:break-word}@media (max-width: 35.9375em){/*!@:host dt,\n:host dd*/.sc-duet-list-item-h dt.sc-duet-list-item,.sc-duet-list-item-h dd.sc-duet-list-item{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}}/*!@:host dt*/.sc-duet-list-item-h dt.sc-duet-list-item{padding:16px !important;font-weight:600}@media (max-width: 35.9375em){/*!@:host dt*/.sc-duet-list-item-h dt.sc-duet-list-item{padding-bottom:4px !important}}/*!@.duet-theme-turva :host dt*/.duet-theme-turva .sc-duet-list-item-h dt.sc-duet-list-item{font-weight:700}/*!@:host dd*/.sc-duet-list-item-h dd.sc-duet-list-item{padding:16px !important;margin-left:auto;text-align:left}@media (max-width: 35.9375em){/*!@:host dd*/.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(:not(.duet-list-striped)) dt*/.sc-duet-list-item-h:not(.duet-list-striped) dt.sc-duet-list-item{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){/*!@:host(:not(.duet-list-striped)) dt*/.sc-duet-list-item-h:not(.duet-list-striped) dt.sc-duet-list-item{padding-bottom:4px !important}}/*!@:host(:not(.duet-list-striped)) dd*/.sc-duet-list-item-h:not(.duet-list-striped) dd.sc-duet-list-item{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){/*!@:host(:not(.duet-list-striped)) dd*/.sc-duet-list-item-h:not(.duet-list-striped) dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(.duet-theme-turva)*/.duet-theme-turva.sc-duet-list-item-h{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@:host(.duet-list-striped:nth-child(odd)) dt,\n:host(.duet-list-striped:nth-child(odd)) dd*/.duet-list-striped.sc-duet-list-item-h:nth-child(odd) dt.sc-duet-list-item,.duet-list-striped.sc-duet-list-item-h:nth-child(odd) dd.sc-duet-list-item{background:#f5f8fa}/*!@:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dt,\n:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dd*/.duet-list-striped.duet-theme-turva.sc-duet-list-item-h:nth-child(odd) dt.sc-duet-list-item,.duet-list-striped.duet-theme-turva.sc-duet-list-item-h:nth-child(odd) dd.sc-duet-list-item{background:#f5f5f7}/*!@:host(.duet-list-width-30) dt*/.duet-list-width-30.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:33%}/*!@:host(.duet-list-width-30) dd*/.duet-list-width-30.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:67%}/*!@:host(.duet-list-width-50) dt*/.duet-list-width-50.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:47%}/*!@:host(.duet-list-width-50) dd*/.duet-list-width-50.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:53%}/*!@:host(.duet-list-width-70) dt*/.duet-list-width-70.sc-duet-list-item-h dt.sc-duet-list-item{flex-basis:65%}/*!@:host(.duet-list-width-70) dd*/.duet-list-width-70.sc-duet-list-item-h dd.sc-duet-list-item{flex-basis:35%}/*!@:host(.duet-p-0) dt,\n:host(.duet-p-0) dd*/.duet-p-0.sc-duet-list-item-h dt.sc-duet-list-item,.duet-p-0.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important;padding-bottom:4px !important}@media (max-width: 35.9375em){/*!@:host(.duet-list-mobile-center) dt,\n:host(.duet-list-mobile-center) dd*/.duet-list-mobile-center.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-mobile-center.sc-duet-list-item-h dd.sc-duet-list-item{text-align:center}}@media (max-width: 61.9375em){/*!@:host(.duet-list-breakpoint-large)*/.duet-list-breakpoint-large.sc-duet-list-item-h{flex-wrap:wrap}/*!@:host(.duet-list-breakpoint-large) dt,\n:host(.duet-list-breakpoint-large) dd*/.duet-list-breakpoint-large.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-breakpoint-large.sc-duet-list-item-h dd.sc-duet-list-item{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}/*!@:host(.duet-list-breakpoint-large) dd*/.duet-list-breakpoint-large.sc-duet-list-item-h dd.sc-duet-list-item{padding-top:0 !important}}/*!@:host(.duet-list-breakpoint-large.duet-list-striped) dd*/.duet-list-breakpoint-large.duet-list-striped.sc-duet-list-item-h dd.sc-duet-list-item{padding-bottom:16px !important}@media (max-width: 61.9375em){/*!@:host(.duet-list-breakpoint-large.duet-list-mobile-center) dt,\n:host(.duet-list-breakpoint-large.duet-list-mobile-center) dd*/.duet-list-breakpoint-large.duet-list-mobile-center.sc-duet-list-item-h dt.sc-duet-list-item,.duet-list-breakpoint-large.duet-list-mobile-center.sc-duet-list-item-h dd.sc-duet-list-item{text-align:center !important}}";
11582
11843
 
11583
11844
  /**
11584
11845
  * @slot label - The list item component’s label content. Use this to put content into description list’s dt element.
@@ -12059,7 +12320,7 @@ class DuetNotification {
12059
12320
  }; }
12060
12321
  }
12061
12322
 
12062
- const duetNotificationDrawerCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-notification-drawer,*.sc-duet-notification-drawer::after,*.sc-duet-notification-drawer::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-notification-drawer-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}/*!@.duet-drawer*/.duet-drawer.sc-duet-notification-drawer{position:relative}@media (min-width: 62em){/*!@.duet-drawer*/.duet-drawer.sc-duet-notification-drawer{display:inline-block}}/*!@.duet-drawer-toggle*/.duet-drawer-toggle.sc-duet-notification-drawer{position:relative;display:flex;align-items:center;width:100%;height:48px;padding:0 20px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:48px;color:#00294d;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-bottom:1px solid #e1e3e6;border-radius:0;-webkit-appearance:none;appearance:none}@media (min-width: 62em){/*!@.duet-drawer-toggle*/.duet-drawer-toggle.sc-duet-notification-drawer{z-index:200;width:auto;max-width:200px;padding:0 30px 0 12px;overflow:hidden;font-size:0.875rem;line-height:4rem;background-color:white;border:0;border-radius:4px;transition:border 300ms ease}}/*!@.duet-theme-turva .duet-drawer-toggle*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#e4e4e6}/*!@.duet-drawer-toggle:active*/.duet-drawer-toggle.sc-duet-notification-drawer:active{opacity:0.75}/*!@.duet-drawer-toggle:focus*/.duet-drawer-toggle.sc-duet-notification-drawer:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-drawer-toggle:focus*/.user-is-tabbing.sc-duet-notification-drawer-h .duet-drawer-toggle.sc-duet-notification-drawer:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-drawer-toggle:focus*/.user-is-tabbing.sc-duet-notification-drawer-h .duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-drawer-toggle:hover*/.duet-drawer-toggle.sc-duet-notification-drawer:hover{color:#004d80}/*!@.duet-theme-turva .duet-drawer-toggle:hover*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer:hover{color:#444445}/*!@.duet-drawer-toggle::after*/.duet-drawer-toggle.sc-duet-notification-drawer::after{display:none !important}@media (min-width: 62em){/*!@.duet-drawer-toggle::after*/.duet-drawer-toggle.sc-duet-notification-drawer::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}/*!@.duet-theme-turva .duet-drawer-toggle::after*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer::after{background:#c60c30}}/*!@.duet-drawer-toggle[aria-expanded=true], .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{color:#004d80;border-bottom:1px solid #f5f8fa;border-radius:0}/*!@.duet-theme-turva .duet-drawer-toggle[aria-expanded=true], .duet-theme-turva .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{color:#444445;border-color:#f5f5f7}@media (min-width: 62em){/*!@.duet-drawer-toggle[aria-expanded=true], .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{border:0}/*!@.duet-drawer-toggle[aria-expanded=true]::after, .duet-drawer-toggle[aria-expanded=true]:hover::after*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer::after,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover::after{left:0;width:100%;transform:translateY(0)}}/*!@.duet-drawer-icon*/.duet-drawer-icon.sc-duet-notification-drawer{position:relative;display:inline-flex;min-width:12px;margin-right:12px;font-size:0;line-height:normal;vertical-align:baseline}@media (min-width: 62em){/*!@.duet-drawer-icon*/.duet-drawer-icon.sc-duet-notification-drawer{margin-right:8px}}/*!@.duet-drawer-label*/.duet-drawer-label.sc-duet-notification-drawer{line-height:1}/*!@.duet-drawer-caret*/.duet-drawer-caret.sc-duet-notification-drawer{position:absolute;top:50%;right:20px;display:flex;width:10px;height:10px;margin-left:8px;line-height:normal;pointer-events:none;transition:300ms ease;transform:translateY(-50%);transform-origin:50% 50%}@media (min-width: 62em){/*!@.duet-drawer-caret*/.duet-drawer-caret.sc-duet-notification-drawer{right:16px;width:7px;height:7px}}/*!@.duet-drawer-caret duet-icon*/.duet-drawer-caret.sc-duet-notification-drawer duet-icon.sc-duet-notification-drawer{width:10px}/*!@.duet-drawer-toggle[aria-expanded=true] .duet-drawer-caret*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer .duet-drawer-caret.sc-duet-notification-drawer{transform:translateY(-50%) rotate(180deg)}/*!@.duet-drawer-badge*/.duet-drawer-badge.sc-duet-notification-drawer{position:absolute;top:0;right:0;display:inline-block;width:6px;height:6px;background:#f7b228;border-radius:50%;box-shadow:0 0 0 1px #c18b1f}/*!@.duet-theme-turva .duet-drawer-badge*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-badge.sc-duet-notification-drawer{background:#faa40f}/*!@.duet-drawer-content*/.duet-drawer-content.sc-duet-notification-drawer{display:none;background-color:#f5f8fa;border-bottom:1px solid #e1e3e6}/*!@.duet-drawer-content:focus*/.duet-drawer-content.sc-duet-notification-drawer:focus{outline:0}/*!@.duet-theme-turva .duet-drawer-content*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-content.sc-duet-notification-drawer{background-color:#f5f5f7;border-color:#e1e3e6}@media (min-width: 62em){/*!@.duet-drawer-content*/.duet-drawer-content.sc-duet-notification-drawer{position:absolute;top:100%;z-index:600;display:block;width:450px;max-height:420px;padding-left:0;overflow-y:auto;visibility:hidden;background-color:white;border:1px solid #e1e3e6;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:300ms ease;transform:scale(0.95) translateZ(0) translateY(-10px);transform-origin:50% 0;scrollbar-width:none}/*!@.duet-drawer-content::-webkit-scrollbar*/.duet-drawer-content.sc-duet-notification-drawer::-webkit-scrollbar{display:none}/*!@.duet-theme-turva .duet-drawer-content*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-content.sc-duet-notification-drawer{background-color:white}/*!@.duet-drawer-content.duet-drawer-left*/.duet-drawer-content.duet-drawer-left.sc-duet-notification-drawer{right:0}/*!@.duet-drawer-content.duet-drawer-right*/.duet-drawer-content.duet-drawer-right.sc-duet-notification-drawer{left:0}}/*!@.duet-drawer-content.duet-drawer-open*/.duet-drawer-content.duet-drawer-open.sc-duet-notification-drawer{display:block}@media (min-width: 62em){/*!@.duet-drawer-content.duet-drawer-open*/.duet-drawer-content.duet-drawer-open.sc-duet-notification-drawer{visibility:visible;opacity:1;transform:scale(1) translateZ(0) translateY(0)}}";
12323
+ const duetNotificationDrawerCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-notification-drawer,*.sc-duet-notification-drawer::after,*.sc-duet-notification-drawer::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-notification-drawer-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}/*!@.duet-drawer*/.duet-drawer.sc-duet-notification-drawer{position:relative}@media (min-width: 62em){/*!@.duet-drawer*/.duet-drawer.sc-duet-notification-drawer{display:inline-block}}/*!@.duet-drawer-toggle*/.duet-drawer-toggle.sc-duet-notification-drawer{position:relative;display:flex;align-items:center;width:100%;height:48px;padding:0 20px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:48px;color:#00294d;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background-color:white;border-bottom:1px solid #e1e3e6;border-radius:0;-webkit-appearance:none;appearance:none}@media (min-width: 62em){/*!@.duet-drawer-toggle*/.duet-drawer-toggle.sc-duet-notification-drawer{z-index:200;width:auto;max-width:200px;padding:0 30px 0 12px;overflow:hidden;font-size:0.875rem;line-height:4rem;border:0;border-radius:4px;transition:border 300ms ease}}/*!@.duet-theme-turva .duet-drawer-toggle*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;background-color:white;border-color:#e4e4e6}/*!@.duet-drawer-toggle:active*/.duet-drawer-toggle.sc-duet-notification-drawer:active{opacity:0.75}/*!@.duet-drawer-toggle:focus*/.duet-drawer-toggle.sc-duet-notification-drawer:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-drawer-toggle:focus*/.user-is-tabbing.sc-duet-notification-drawer-h .duet-drawer-toggle.sc-duet-notification-drawer:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-drawer-toggle:focus*/.user-is-tabbing.sc-duet-notification-drawer-h .duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-drawer-toggle:hover*/.duet-drawer-toggle.sc-duet-notification-drawer:hover{color:#004d80}/*!@.duet-theme-turva .duet-drawer-toggle:hover*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer:hover{color:#444445}/*!@.duet-drawer-toggle::after*/.duet-drawer-toggle.sc-duet-notification-drawer::after{display:none !important}@media (min-width: 62em){/*!@.duet-drawer-toggle::after*/.duet-drawer-toggle.sc-duet-notification-drawer::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}/*!@.duet-theme-turva .duet-drawer-toggle::after*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle.sc-duet-notification-drawer::after{background:#c60c30}}/*!@.duet-drawer-toggle[aria-expanded=true], .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{color:#004d80;border-bottom:1px solid #f5f8fa;border-radius:0}/*!@.duet-theme-turva .duet-drawer-toggle[aria-expanded=true], .duet-theme-turva .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{color:#444445;border-color:#f5f5f7}@media (min-width: 62em){/*!@.duet-drawer-toggle[aria-expanded=true], .duet-drawer-toggle[aria-expanded=true]:hover*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover{border:0}/*!@.duet-drawer-toggle[aria-expanded=true]::after, .duet-drawer-toggle[aria-expanded=true]:hover::after*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer::after,.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer:hover::after{left:0;width:100%;transform:translateY(0)}}/*!@.duet-drawer-icon*/.duet-drawer-icon.sc-duet-notification-drawer{position:relative;display:inline-flex;min-width:12px;margin-right:12px;font-size:0;line-height:normal;vertical-align:baseline}@media (min-width: 62em){/*!@.duet-drawer-icon*/.duet-drawer-icon.sc-duet-notification-drawer{margin-right:8px}}/*!@.duet-drawer-label*/.duet-drawer-label.sc-duet-notification-drawer{line-height:1}/*!@.duet-drawer-caret*/.duet-drawer-caret.sc-duet-notification-drawer{position:absolute;top:50%;right:20px;display:flex;width:10px;height:10px;margin-left:8px;line-height:normal;pointer-events:none;transition:300ms ease;transform:translateY(-50%);transform-origin:50% 50%}@media (min-width: 62em){/*!@.duet-drawer-caret*/.duet-drawer-caret.sc-duet-notification-drawer{right:16px;width:7px;height:7px}}/*!@.duet-drawer-caret duet-icon*/.duet-drawer-caret.sc-duet-notification-drawer duet-icon.sc-duet-notification-drawer{width:10px}/*!@.duet-drawer-toggle[aria-expanded=true] .duet-drawer-caret*/.duet-drawer-toggle[aria-expanded=true].sc-duet-notification-drawer .duet-drawer-caret.sc-duet-notification-drawer{transform:translateY(-50%) rotate(180deg)}/*!@.duet-drawer-badge*/.duet-drawer-badge.sc-duet-notification-drawer{position:absolute;top:0;right:0;display:inline-block;width:6px;height:6px;background:#f7b228;border-radius:50%;box-shadow:0 0 0 1px #c18b1f}/*!@.duet-theme-turva .duet-drawer-badge*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-badge.sc-duet-notification-drawer{background:#faa40f}/*!@.duet-drawer-content*/.duet-drawer-content.sc-duet-notification-drawer{display:none;background-color:white;border-bottom:1px solid #e1e3e6}/*!@.duet-drawer-content:focus*/.duet-drawer-content.sc-duet-notification-drawer:focus{outline:0}/*!@.duet-theme-turva .duet-drawer-content*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-content.sc-duet-notification-drawer{background-color:white;border-color:#e1e3e6}@media (min-width: 62em){/*!@.duet-drawer-content*/.duet-drawer-content.sc-duet-notification-drawer{position:absolute;top:100%;z-index:600;display:block;width:450px;max-height:420px;padding-left:0;overflow-y:auto;visibility:hidden;background-color:white;border:1px solid #e1e3e6;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:300ms ease;transform:scale(0.95) translateZ(0) translateY(-10px);transform-origin:50% 0;scrollbar-width:none}/*!@.duet-drawer-content::-webkit-scrollbar*/.duet-drawer-content.sc-duet-notification-drawer::-webkit-scrollbar{display:none}/*!@.duet-theme-turva .duet-drawer-content*/.duet-theme-turva.sc-duet-notification-drawer .duet-drawer-content.sc-duet-notification-drawer{background-color:white}/*!@.duet-drawer-content.duet-drawer-left*/.duet-drawer-content.duet-drawer-left.sc-duet-notification-drawer{right:0}/*!@.duet-drawer-content.duet-drawer-right*/.duet-drawer-content.duet-drawer-right.sc-duet-notification-drawer{left:0}}/*!@.duet-drawer-content.duet-drawer-open*/.duet-drawer-content.duet-drawer-open.sc-duet-notification-drawer{display:block}@media (min-width: 62em){/*!@.duet-drawer-content.duet-drawer-open*/.duet-drawer-content.duet-drawer-open.sc-duet-notification-drawer{visibility:visible;opacity:1;transform:scale(1) translateZ(0) translateY(0)}}";
12063
12324
 
12064
12325
  const ESC_KEY = 27;
12065
12326
  class DuetNotificationDrawer {
@@ -14063,7 +14324,7 @@ class DuetTabGroup {
14063
14324
  }; }
14064
14325
  }
14065
14326
 
14066
- const duetTableCss = "duet-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:20px !important;display:block;font-variant-numeric:tabular-nums}duet-table table,duet-table thead,duet-table tbody,duet-table tfoot,duet-table th,duet-table td,duet-table tr{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}duet-table.duet-m-0{margin:0 !important}duet-table table{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;text-align:left;border-spacing:0;border-collapse:separate}duet-table.duet-theme-turva table{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}duet-table td{-webkit-hyphens:auto;hyphens:auto;color:#00294d}duet-table.duet-theme-turva td{color:#171c3a}duet-table th{font-weight:600;line-height:1.25;color:#657787;text-align:left}duet-table.duet-theme-turva th{color:#747475}duet-table tbody th{font-weight:600;color:#00294d}duet-table.duet-theme-turva tbody th{color:#171c3a}.duet-table-flattened table,.duet-table-flattened thead,.duet-table-flattened tbody,.duet-table-flattened tfoot,.duet-table-flattened th,.duet-table-flattened td,.duet-table-flattened tr{display:block}.duet-table-flattened thead tr{position:absolute !important;top:0;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(1px, 1px, 1px, 1px) !important;border:0 !important}.duet-table-flattened td{line-height:1.25}.duet-table-flattened td:not(:last-child){margin-bottom:16px !important}.duet-table-flattened tbody td,.duet-table-flattened tbody th,.duet-table-flattened tfoot td{padding:0 !important;text-align:left !important}.duet-table-flattened tbody th{font-weight:600;line-height:1.25;color:#657787;text-align:left}.duet-table-flattened td[data-heading]::before{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:#00294d;content:attr(data-heading)}.duet-table-flattened.duet-theme-turva td[data-heading]::before{color:#171c3a}.duet-table-sticky thead th{position:sticky;top:0;background:white}.duet-table-striped td,.duet-table-striped th{padding:20px !important}@media (max-width: 35.9375em){.duet-table-striped td,.duet-table-striped th{padding:20px 12px !important}}.duet-table-striped tbody th{background:white}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid #e1e3e6}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:#e4e4e6}.duet-table-striped tbody:not(:first-of-type) th{padding-top:40px !important}.duet-table-striped tbody:only-of-type tr:nth-of-type(odd){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:only-of-type tr:nth-of-type(odd){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tfoot td{border-top:1px solid #e1e3e6}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:#e4e4e6}.duet-table-striped.duet-table-flattened tbody:not(:first-of-type) th{padding-top:20px !important}.duet-table-striped.duet-table-flattened tr{padding:20px !important}.duet-table-striped.duet-table-flattened tfoot td{border-top:0}.duet-table-striped.duet-table-flattened tfoot tr{border-top:1px solid #e1e3e6}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:#e4e4e6}.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid #657787}.duet-table-minimal th:first-child,.duet-table-plain th:first-child{padding-left:0 !important}.duet-table-minimal th:last-child,.duet-table-plain th:last-child{padding-right:0 !important}.duet-theme-turva.duet-table-minimal th,.duet-theme-turva.duet-table-plain th{border-bottom-color:#444445}.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:#e1e3e6}.duet-theme-turva.duet-table-minimal tbody th,.duet-theme-turva.duet-table-plain tbody th{border-bottom-color:#e4e4e6}.duet-table-minimal td,.duet-table-plain td{padding:16px !important}.duet-table-minimal td:first-child,.duet-table-plain td:first-child{padding-left:0 !important}.duet-table-minimal td:last-child,.duet-table-plain td:last-child{padding-right:0 !important}.duet-table-minimal tbody td,.duet-table-plain tbody td{border-bottom:1px solid #e1e3e6}.duet-theme-turva.duet-table-minimal tbody td,.duet-theme-turva.duet-table-plain tbody td{border-bottom-color:#e4e4e6}.duet-table-flattened.duet-table-minimal tbody:first-of-type th,.duet-table-flattened.duet-table-plain tbody:first-of-type th{padding-top:0 !important}.duet-table-flattened.duet-table-minimal td,.duet-table-flattened.duet-table-plain td,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{border-bottom:0}.duet-table-flattened.duet-table-minimal tr,.duet-table-flattened.duet-table-plain tr{padding:20px 0 !important}.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{padding-top:20px !important}.duet-table-flattened.duet-table-minimal tfoot td,.duet-table-flattened.duet-table-plain tfoot td{margin-bottom:4px !important}.duet-table-flattened.duet-table-minimal tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-plain tbody:not(:only-of-type) tr:first-child{border-bottom:0}.duet-table-plain.duet-table-flattened tbody tr{border-bottom:1px solid #e1e3e6}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:#e4e4e6}.duet-table-minimal tbody tr,.duet-table-minimal tbody tr td{vertical-align:top;border-bottom:0 none}.duet-table-minimal tbody tr:last-of-type,.duet-table-minimal tbody tr:last-of-type td{border-bottom:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened tbody tr,.duet-table-minimal.duet-table-flattened tbody tr td{border-bottom:0 none}.duet-table-minimal.duet-table-flattened tbody tr td[data-heading]::before{display:none}.duet-table-minimal.duet-table-flattened tfoot{border-top:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-scrollable{position:relative;width:100%;overflow-x:auto;background:linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0)), linear-gradient(-90deg, #fff 0%, rgba(255, 255, 255, 0)) 100% 0, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)) 100% 0%;background-repeat:no-repeat;background-attachment:local, local, scroll, scroll;background-size:100px 100%, 100px 100%, 12px 100%, 12px 100%}.duet-table-selected-column{background:rgba(0, 119, 179, 0.08)}.duet-theme-turva .duet-table-selected-column{background:rgba(68, 68, 69, 0.08)}";
14327
+ const duetTableCss = "duet-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:20px !important;display:block;font-variant-numeric:tabular-nums}duet-table table,duet-table thead,duet-table tbody,duet-table tfoot,duet-table th,duet-table td,duet-table tr{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}duet-table.duet-m-0{margin:0 !important}duet-table table{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;text-align:left;border-spacing:0;border-collapse:separate}duet-table.duet-theme-turva table{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}duet-table td{-webkit-hyphens:auto;hyphens:auto;color:#00294d}duet-table.duet-theme-turva td{color:#171c3a}duet-table th{font-weight:600;line-height:1.25;color:#657787;text-align:left}duet-table.duet-theme-turva th{color:#747475}duet-table tbody th{font-weight:600;color:#00294d}duet-table.duet-theme-turva tbody th{color:#171c3a}.duet-table-flattened table,.duet-table-flattened thead,.duet-table-flattened tbody,.duet-table-flattened tfoot,.duet-table-flattened th,.duet-table-flattened td,.duet-table-flattened tr{display:block}.duet-table-flattened thead tr{position:absolute !important;top:0;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(1px, 1px, 1px, 1px) !important;border:0 !important}.duet-table-flattened td{line-height:1.25}.duet-table-flattened td:not(:last-child){margin-bottom:16px !important}.duet-table-flattened tbody td,.duet-table-flattened tbody th,.duet-table-flattened tfoot td{padding:0 !important;text-align:left !important}.duet-table-flattened tbody th{font-weight:600;line-height:1.25;color:#657787;text-align:left}.duet-table-flattened td[data-heading]::before{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:#00294d;content:attr(data-heading)}.duet-table-flattened.duet-theme-turva td[data-heading]::before{color:#171c3a}.duet-table-sticky thead th{position:sticky;top:0;background:white}.duet-table-striped td,.duet-table-striped th{padding:20px !important}@media (max-width: 35.9375em){.duet-table-striped td,.duet-table-striped th{padding:20px 12px !important}}.duet-table-striped tbody th{background:white}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid #e1e3e6}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:#e4e4e6}.duet-table-striped tbody:not(:first-of-type) th{padding-top:40px !important}.duet-table-striped tbody:only-of-type tr:nth-of-type(odd){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:only-of-type tr:nth-of-type(odd){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tfoot td{border-top:1px solid #e1e3e6}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:#e4e4e6}.duet-table-striped.duet-table-flattened tbody:not(:first-of-type) th{padding-top:20px !important}.duet-table-striped.duet-table-flattened tr{padding:20px !important}.duet-table-striped.duet-table-flattened tfoot td{border-top:0}.duet-table-striped.duet-table-flattened tfoot tr{border-top:1px solid #e1e3e6}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:#e4e4e6}.duet-table-fixed th,.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid #657787}.duet-table-fixed th:first-child,.duet-table-minimal th:first-child,.duet-table-plain th:first-child{padding-left:0 !important}.duet-table-fixed th:last-child,.duet-table-minimal th:last-child,.duet-table-plain th:last-child{padding-right:0 !important}.duet-theme-turva.duet-table-fixed th,.duet-theme-turva.duet-table-minimal th,.duet-theme-turva.duet-table-plain th{border-bottom-color:#444445}.duet-table-fixed tbody th,.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:#e1e3e6}.duet-theme-turva.duet-table-fixed tbody th,.duet-theme-turva.duet-table-minimal tbody th,.duet-theme-turva.duet-table-plain tbody th{border-bottom-color:#e4e4e6}.duet-table-fixed td,.duet-table-minimal td,.duet-table-plain td{padding:16px !important}.duet-table-fixed td:first-child,.duet-table-minimal td:first-child,.duet-table-plain td:first-child{padding-left:0 !important}.duet-table-fixed td:last-child,.duet-table-minimal td:last-child,.duet-table-plain td:last-child{padding-right:0 !important}.duet-table-fixed tbody td,.duet-table-minimal tbody td,.duet-table-plain tbody td{border-bottom:1px solid #e1e3e6}.duet-theme-turva.duet-table-fixed tbody td,.duet-theme-turva.duet-table-minimal tbody td,.duet-theme-turva.duet-table-plain tbody td{border-bottom-color:#e4e4e6}.duet-table-flattened.duet-table-fixed tbody:first-of-type th,.duet-table-flattened.duet-table-minimal tbody:first-of-type th,.duet-table-flattened.duet-table-plain tbody:first-of-type th{padding-top:0 !important}.duet-table-flattened.duet-table-fixed td,.duet-table-flattened.duet-table-minimal td,.duet-table-flattened.duet-table-plain td,.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{border-bottom:0}.duet-table-flattened.duet-table-fixed tr,.duet-table-flattened.duet-table-minimal tr,.duet-table-flattened.duet-table-plain tr{padding:20px 0 !important}.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{padding-top:20px !important}.duet-table-flattened.duet-table-fixed tfoot td,.duet-table-flattened.duet-table-minimal tfoot td,.duet-table-flattened.duet-table-plain tfoot td{margin-bottom:4px !important}.duet-table-flattened.duet-table-fixed tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-minimal tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-plain tbody:not(:only-of-type) tr:first-child{border-bottom:0}.duet-table-plain.duet-table-flattened tbody tr{border-bottom:1px solid #e1e3e6}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:#e4e4e6}.duet-table-minimal tbody tr,.duet-table-minimal tbody tr td{vertical-align:top;border-bottom:0 none}.duet-table-minimal tbody tr:last-of-type,.duet-table-minimal tbody tr:last-of-type td{border-bottom:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened tbody tr,.duet-table-minimal.duet-table-flattened tbody tr td{border-bottom:0 none}.duet-table-minimal.duet-table-flattened tbody tr td[data-heading]::before{display:none}.duet-table-minimal.duet-table-flattened tfoot{border-top:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-fixed table{table-layout:fixed}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td,.duet-table-fixed tbody tr td:first-child{padding:4px !important;vertical-align:text-bottom;border-bottom:0 none}.duet-table-fixed thead{display:none}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td{border-bottom:0 none}.duet-table-fixed:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-fixed:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-scrollable{position:relative;width:100%;overflow-x:auto;background:linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0)), linear-gradient(-90deg, #fff 0%, rgba(255, 255, 255, 0)) 100% 0, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)) 100% 0%;background-repeat:no-repeat;background-attachment:local, local, scroll, scroll;background-size:100px 100%, 100px 100%, 12px 100%, 12px 100%}.duet-table-selected-column{background:rgba(0, 119, 179, 0.08)}.duet-theme-turva .duet-table-selected-column{background:rgba(68, 68, 69, 0.08)}";
14067
14328
 
14068
14329
  // remove wrapping speech marks.
14069
14330
  // media query tokens are wrapped in speech marks,
@@ -15250,7 +15511,6 @@ const duetUploadCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-upload,*.sc-duet-
15250
15511
  /**
15251
15512
  * @slot header - named slot - to place content after description / caption
15252
15513
  * @slot fileheader - named slot - to place content above "filelist" (only displayed when "filelist" contains items)
15253
- * @slot filelist - named slot - should always contain a configurable duet-editable-table or a component that exposes the same functionality
15254
15514
  * @slot filefooter - named slot - to place content below "filelist" (only displayed when "filelist" contains items)
15255
15515
  */
15256
15516
  class DuetUpload {
@@ -15275,7 +15535,7 @@ class DuetUpload {
15275
15535
  this.filesInProgress = new Map();
15276
15536
  this.fileMaxReached = false;
15277
15537
  this.bytesMaxReached = false;
15278
- //region Internally exposed properties
15538
+ this.internalStatusMessageLabel = undefined;
15279
15539
  /**
15280
15540
  * Properties
15281
15541
  */
@@ -15294,18 +15554,18 @@ class DuetUpload {
15294
15554
  */
15295
15555
  this.external = false;
15296
15556
  /**
15297
- * If set the upload component will not display an upload button, you will have to create on yourself
15298
- * and call the exposed methods startUpload
15557
+ * If set the upload component will not display an upload button, you will have to create one yourself
15558
+ * and call the exposed method startUpload
15299
15559
  */
15300
15560
  this.hideButton = false;
15301
15561
  /**
15302
- * Default actions added to all files
15562
+ * Default actions added to the internally used duet-editable-table
15303
15563
  */
15304
15564
  this.actions = [
15305
15565
  {
15306
15566
  icon: "action-delete",
15307
15567
  color: "color-danger",
15308
- color_hover: "category-home",
15568
+ color_hover: "primary-dark",
15309
15569
  id: "delete",
15310
15570
  map: ["success", "failure"],
15311
15571
  label: {
@@ -15317,7 +15577,7 @@ class DuetUpload {
15317
15577
  {
15318
15578
  icon: "navigation-close",
15319
15579
  color: "primary",
15320
- color_hover: "category-home",
15580
+ color_hover: "primary-dark",
15321
15581
  id: "cancel",
15322
15582
  map: ["inprogress"],
15323
15583
  label: {
@@ -15328,17 +15588,43 @@ class DuetUpload {
15328
15588
  },
15329
15589
  ];
15330
15590
  /**
15331
- * If enabled the filelist will create links on successfully uploaded items,
15591
+ * If enabled the editable-table will display links on successfully uploaded items,
15332
15592
  * this requires the server can respond with link URIs in the correct format
15593
+ * and that the files are accessible to the user
15333
15594
  */
15334
15595
  this.showLinks = false;
15335
15596
  /**
15336
15597
  * Property to change the aria upload progress text read aloud by screenreaders
15337
15598
  * @default {
15338
- fi: "Lisää liite",
15339
- sv: "Lägg till en bilaga",
15340
- en: "Choose files",
15341
- }
15599
+ * fi: {
15600
+ * inProgress: "Lähetetään {filesUploaded} lähetettävästä {filesTotal} tiedostosta",
15601
+ * inProgressWithErrors:
15602
+ * "Lähetetään {filesInProgress} tiedostoa, lähetetty {filesUploaded} lähetettävästä {filesTotal} tiedostosta, {filesWithErrors} tiedostossa on virheitä",
15603
+ * done: "Kaikki {filesTotal} tiedostoa lähetetty onnistuneesti",
15604
+ * doneWithErrors:
15605
+ * "Lähetys valmis, {filesUploaded} tiedostoa on lähetetty onnistuneesti, {filesWithErrors} tiedostossa oli virheitä",
15606
+ * files: "tiedostot",
15607
+ * file: "tiedosto",
15608
+ * },
15609
+ * sv: {
15610
+ * inProgress: "Adding {filesUploaded} of {filesTotal}",
15611
+ * inProgressWithErrors:
15612
+ * "Laddar upp {filesInProgress}, {filesUploaded} uppladdad av {filesTotal}, {filesWithErrors} misslyckades",
15613
+ * done: "Alla {filesTotal} har lagts till",
15614
+ * doneWithErrors: "Handling slutförd, {filesUploaded} har lagts till, {filesWithErrors} misslyckades",
15615
+ * files: "filer",
15616
+ * file: "fil",
15617
+ * },
15618
+ * en: {
15619
+ * inProgress: "Adding {filesUploaded} of {filesTotal}",
15620
+ * inProgressWithErrors:
15621
+ * "Uploading {filesInProgress}, {filesUploaded} uploaded of {filesTotal}, {filesWithErrors} failed",
15622
+ * done: "All {filesTotal} added successfully",
15623
+ * doneWithErrors: "Action completed, {filesUploaded} has been added successfully, {filesWithErrors} had errors",
15624
+ * files: "tiedostoa",
15625
+ * file: "tiedosto",
15626
+ * },
15627
+ * }
15342
15628
  */
15343
15629
  this.statusLabelDefaults = {
15344
15630
  fi: {
@@ -15371,8 +15657,7 @@ class DuetUpload {
15371
15657
  */
15372
15658
  this.statusMessageLabel = getLocaleString(this.statusLabelDefaults);
15373
15659
  /**
15374
- * Property to change descriptionDefaults defaults on the component.
15375
- * normally you would handle these strings on an application level and override @label when needed
15660
+ * Property to change button label defaults on the component.
15376
15661
  * @default {
15377
15662
  fi: "Lisää liite",
15378
15663
  sv: "Lägg till en bilaga",
@@ -15390,7 +15675,7 @@ class DuetUpload {
15390
15675
  */
15391
15676
  this.buttonLabel = getLocaleString(this.buttonLabelDefaults);
15392
15677
  /**
15393
- * accessible Label of button
15678
+ * accessible aria-Label of button
15394
15679
  */
15395
15680
  this.accessibleButtonLabel = undefined;
15396
15681
  /**
@@ -15413,6 +15698,10 @@ class DuetUpload {
15413
15698
  * browser from displaying its own validation errors.
15414
15699
  */
15415
15700
  this.required = false;
15701
+ /**
15702
+ * Key used to set vertical alignment of action buttons
15703
+ */
15704
+ this.alignment = "middle";
15416
15705
  /**
15417
15706
  * Visually hides the groups labels in the editable table list used to display the list of files
15418
15707
  */
@@ -15422,7 +15711,7 @@ class DuetUpload {
15422
15711
  */
15423
15712
  this.files = new Map();
15424
15713
  /**
15425
- * Property to read if filelist contains errors or not
15714
+ * Property to read if the internally used editable-table contains errors or not
15426
15715
  */
15427
15716
  this.valid = !this.required;
15428
15717
  /**
@@ -15442,7 +15731,6 @@ class DuetUpload {
15442
15731
  this.label = getLocaleString(this.labelDefaults);
15443
15732
  /**
15444
15733
  * Property to change descriptionDefaults defaults on the component.
15445
- * normally you would handle these strings on an application level and override @label when needed
15446
15734
  * @default {
15447
15735
  fi: "Voit liittää {filetypes}-muotoisia tiedostoja sekä yleisimpiä videotiedostoja. Voit lähettää {maxbytes} verran tiedostoja yhdellä kertaa, ja lisätä enintään {maxfiles} liitettä kerrallaan.",
15448
15736
  sv: "Du kan bifoga filer i flg. formater {filetypes} samt de vanligaste videofilerna. Du kan ladda upp {maxbytes} filer åt gången och lägga till upp till {maxfiles} bilagor åt gången.",
@@ -15516,7 +15804,6 @@ class DuetUpload {
15516
15804
  * by default this is off, setting this to true will limit the users choices to what has been explicitly set
15517
15805
  */
15518
15806
  this.limitSelection = false;
15519
- //region Private functions
15520
15807
  /**
15521
15808
  * Private functions
15522
15809
  */
@@ -15614,7 +15901,6 @@ class DuetUpload {
15614
15901
  }
15615
15902
  };
15616
15903
  this.updateProgress = (ev, name) => {
15617
- console.log(this.filesInProgress.size);
15618
15904
  const updateProgressHelper = percentComplete => {
15619
15905
  this.updateValueInMap(name, "progress", percentComplete);
15620
15906
  this.onProgress(name, percentComplete, ev);
@@ -15658,6 +15944,10 @@ class DuetUpload {
15658
15944
  * We reset the form fields to always be able to re-upload files
15659
15945
  * and because we handle all uploads and states internally in the component (not relying on native form elements)
15660
15946
  */
15947
+ /* TODO: it may be a good idea to just update the list so that this always matches what is in the files map,
15948
+ * TODO: this would remove the capability of Re-uploading, unless we can catch and remove the user file from the form filelist before the upload is canceled by the browser
15949
+ * TODO: but for now we'll just reset the form fields
15950
+ */
15661
15951
  this.nativeInput.value = "";
15662
15952
  };
15663
15953
  this.startUpload = async (ev, metaData = undefined) => {
@@ -15669,8 +15959,6 @@ class DuetUpload {
15669
15959
  ev.preventDefault();
15670
15960
  return;
15671
15961
  };
15672
- //endregion
15673
- //region Eventlisteners for the XHR requests
15674
15962
  /**
15675
15963
  * Eventlisteners for the XHR requests
15676
15964
  */
@@ -15799,11 +16087,16 @@ class DuetUpload {
15799
16087
  this.kick();
15800
16088
  }
15801
16089
  }
15802
- //endregion
15803
16090
  /**
15804
16091
  * Component lifecycle events.
15805
16092
  */
15806
16093
  componentWillLoad() {
16094
+ if (typeof this.statusMessageLabel === "string") {
16095
+ this.internalStatusMessageLabel = sanitizeString(this.groups);
16096
+ }
16097
+ else {
16098
+ this.internalStatusMessageLabel = this.statusMessageLabel;
16099
+ }
15807
16100
  inheritGlobalTheme(this);
15808
16101
  this.listenForActionEvents();
15809
16102
  }
@@ -15811,8 +16104,6 @@ class DuetUpload {
15811
16104
  // listen to the events from the component
15812
16105
  this.verifyValidity();
15813
16106
  }
15814
- //endregion
15815
- //region XHR requests
15816
16107
  /**
15817
16108
  * XHR request utilities
15818
16109
  */
@@ -15860,8 +16151,6 @@ class DuetUpload {
15860
16151
  onProgress: this.trackProgress,
15861
16152
  });
15862
16153
  }
15863
- //endregion
15864
- //region EventHandlers
15865
16154
  /**
15866
16155
  * Component event handling.
15867
16156
  */
@@ -15936,7 +16225,6 @@ class DuetUpload {
15936
16225
  component: "duet-upload",
15937
16226
  });
15938
16227
  }
15939
- //endregion
15940
16228
  /**
15941
16229
  * Sets focus on the specified `duet-input`. Use this method instead of the global
15942
16230
  * `input.focus()`.
@@ -15966,7 +16254,7 @@ class DuetUpload {
15966
16254
  return this.getFilesAsArray();
15967
16255
  }
15968
16256
  /**
15969
- * Convenience method for updating a of an item in the files attribute
16257
+ * Convenience method for updating the value of a key:value inside an item in the files attribute
15970
16258
  */
15971
16259
  async updateValue(item, key, value) {
15972
16260
  this.updateValueInMap(item, key, value);
@@ -15984,7 +16272,7 @@ class DuetUpload {
15984
16272
  "duet-upload-filelist-empty": !this.files.size,
15985
16273
  "duet-upload-filelist": true,
15986
16274
  "duet-upload-filelist-filled": this.files.size,
15987
- }, id: this.labelId, for: identifier }, this.fileListEmpty)), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.statusMessageLabel })), !!this.files.size && (hAsync("duet-editable-table", { "aria-live": "polite", "aria-relevant": "removals", accessibleRole: "log", id: this.editableTableId, groups: this.groups, actions: this.actions, hideGroups: this.hideGroups, items: this.convertToDuetEditableTableItems() })), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("duet-spacer", { size: "large" }), !this.hideButton && (hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle" }, this.buttonLabel)), hAsync("duet-spacer", { size: "medium" }), (this.fileMaxReached || this.bytesMaxReached) && (hAsync("duet-alert", null, this.fileMaxReached && getI18nError("duet-upload-301"), this.bytesMaxReached && getI18nError("duet-upload-202"))), hAsync("duet-spacer", { size: "medium" }), hAsync("duet-visually-hidden", null, hAsync("input", { ref: input => {
16275
+ }, id: this.labelId, for: identifier }, this.fileListEmpty)), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.internalStatusMessageLabel })), !!this.files.size && (hAsync("duet-editable-table", { "aria-live": "polite", "aria-relevant": "removals", accessibleRole: "log", id: this.editableTableId, groups: this.groups, actions: this.actions, hideGroups: this.hideGroups, alignment: this.alignment, items: this.convertToDuetEditableTableItems() })), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("duet-spacer", { size: "large" }), !this.hideButton && (hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle" }, this.buttonLabel)), hAsync("duet-spacer", { size: "medium" }), (this.fileMaxReached || this.bytesMaxReached) && (hAsync("duet-alert", null, this.fileMaxReached && getI18nError("duet-upload-301"), this.bytesMaxReached && getI18nError("duet-upload-202"))), hAsync("duet-spacer", { size: "medium" }), hAsync("duet-visually-hidden", null, hAsync("input", { ref: input => {
15988
16276
  this.nativeInput = input;
15989
16277
  }, accept: !this.limitSelection ? undefined : `${this.allowedMimetypes},${this.allowedExtensions}`, onBlur: this.onBlur, onFocus: this.onFocus, onChange: e => this.onChange(e), type: "file", class: {
15990
16278
  "duet-upload": true,
@@ -16010,7 +16298,7 @@ class DuetUpload {
16010
16298
  "showLinks": [4, "show-links"],
16011
16299
  "caption": [1],
16012
16300
  "statusLabelDefaults": [1, "status-label-default"],
16013
- "statusMessageLabel": [16],
16301
+ "statusMessageLabel": [1, "status-message-label"],
16014
16302
  "buttonLabelDefaults": [1, "button-label-default"],
16015
16303
  "buttonLabel": [1, "button-label"],
16016
16304
  "accessibleButtonLabel": [1, "accessible-button-label"],
@@ -16020,6 +16308,7 @@ class DuetUpload {
16020
16308
  "margin": [1],
16021
16309
  "required": [4],
16022
16310
  "groups": [1],
16311
+ "alignment": [1],
16023
16312
  "hideGroups": [4, "hide-table-labels"],
16024
16313
  "files": [1040],
16025
16314
  "valid": [1540],
@@ -16059,7 +16348,7 @@ class DuetUploadAriaStatus {
16059
16348
  */
16060
16349
  this.statusMessage = null;
16061
16350
  /**
16062
- * State() variables
16351
+ * Status labels used in the component
16063
16352
  */
16064
16353
  this.statusMessageLabel = null;
16065
16354
  /**
@@ -16083,7 +16372,7 @@ class DuetUploadAriaStatus {
16083
16372
  */
16084
16373
  this.inprogress = undefined;
16085
16374
  /**
16086
- * Component lifecycle events.
16375
+ * Private functions
16087
16376
  */
16088
16377
  this.replacePlaceHolders = (statusString) => {
16089
16378
  const addFiles = (amount) => {