@duetds/components 5.1.9 → 5.2.2

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 (405) hide show
  1. package/hydrate/index.js +392 -125
  2. package/lib/cjs/{dom-66424ef2.js → dom-96576bce.js} +1 -1
  3. package/lib/cjs/duet-action-button.cjs.entry.js +16 -8
  4. package/lib/cjs/duet-alert.cjs.entry.js +2 -2
  5. package/lib/cjs/duet-badge.cjs.entry.js +2 -2
  6. package/lib/cjs/duet-breadcrumb.cjs.entry.js +2 -2
  7. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +2 -2
  8. package/lib/cjs/duet-button_2.cjs.entry.js +17 -2
  9. package/lib/cjs/duet-caption_4.cjs.entry.js +2 -2
  10. package/lib/cjs/duet-card.cjs.entry.js +2 -2
  11. package/lib/cjs/duet-checkbox.cjs.entry.js +15 -3
  12. package/lib/cjs/duet-choice_2.cjs.entry.js +16 -4
  13. package/lib/cjs/duet-collapsible.cjs.entry.js +2 -2
  14. package/lib/cjs/duet-combobox.cjs.entry.js +2 -2
  15. package/lib/cjs/duet-cookie-consent.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-date-picker.cjs.entry.js +3 -4
  17. package/lib/cjs/duet-divider_2.cjs.entry.js +2 -2
  18. package/lib/cjs/duet-editable-table_3.cjs.entry.js +5 -4
  19. package/lib/cjs/duet-empty-state.cjs.entry.js +2 -2
  20. package/lib/cjs/duet-fieldset.cjs.entry.js +2 -2
  21. package/lib/cjs/duet-footer.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-grid_2.cjs.entry.js +2 -2
  23. package/lib/cjs/duet-header_2.cjs.entry.js +3 -3
  24. package/lib/cjs/duet-hero.cjs.entry.js +2 -2
  25. package/lib/cjs/duet-icon.cjs.entry.js +2 -2
  26. package/lib/cjs/duet-input_2.cjs.entry.js +18 -4
  27. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  28. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-modal.cjs.entry.js +12 -4
  30. package/lib/cjs/duet-notification_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-number-input.cjs.entry.js +106 -49
  32. package/lib/cjs/duet-pagination_2.cjs.entry.js +50 -14
  33. package/lib/cjs/duet-progress.cjs.entry.js +15 -3
  34. package/lib/cjs/duet-radio_2.cjs.entry.js +15 -3
  35. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  36. package/lib/cjs/duet-scrollable_3.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-select.cjs.entry.js +2 -2
  38. package/lib/cjs/duet-step_2.cjs.entry.js +2 -2
  39. package/lib/cjs/duet-textarea.cjs.entry.js +17 -3
  40. package/lib/cjs/duet-toggle.cjs.entry.js +15 -3
  41. package/lib/cjs/duet-tooltip.cjs.entry.js +2 -2
  42. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  43. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  44. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  45. package/lib/cjs/duet.cjs.js +4 -4
  46. package/lib/cjs/{focus-utils-3ef68d4c.js → focus-utils-4648b81b.js} +1 -1
  47. package/lib/cjs/{index-e1907091.js → index-d690ab34.js} +11 -9
  48. package/lib/cjs/loader.cjs.js +3 -3
  49. package/lib/cjs/{shadow-css-1ff2f74f.js → shadow-css-38b9e725.js} +2 -3
  50. package/lib/cjs/{themeable-component-940d3b50.js → themeable-component-fdeaef9f.js} +0 -0
  51. package/lib/collection/collection-manifest.json +1 -1
  52. package/lib/collection/{utils/form-components.js → common/a11y-component.js} +0 -0
  53. package/lib/collection/common/form-components.js +4 -0
  54. package/lib/collection/common/index.js +4 -0
  55. package/lib/collection/{utils → common}/themeable-component.js +0 -0
  56. package/lib/collection/components/duet-action-button/duet-action-button.js +57 -13
  57. package/lib/collection/components/duet-alert/duet-alert.js +1 -1
  58. package/lib/collection/components/duet-badge/duet-badge.js +1 -1
  59. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumb.js +1 -1
  60. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.js +1 -1
  61. package/lib/collection/components/duet-button/duet-button.js +70 -1
  62. package/lib/collection/components/duet-caption/duet-caption.js +1 -1
  63. package/lib/collection/components/duet-card/duet-card.js +1 -1
  64. package/lib/collection/components/duet-checkbox/duet-checkbox.js +68 -2
  65. package/lib/collection/components/duet-choice/duet-choice.js +68 -2
  66. package/lib/collection/components/duet-choice-group/duet-choice-group.js +1 -1
  67. package/lib/collection/components/duet-collapsible/duet-collapsible.js +1 -1
  68. package/lib/collection/components/duet-combobox/duet-combobox.js +1 -1
  69. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +1 -1
  70. package/lib/collection/components/duet-date-picker/duet-date-picker.js +1 -1
  71. package/lib/collection/components/duet-date-picker/utils.js +0 -1
  72. package/lib/collection/components/duet-divider/duet-divider.js +1 -1
  73. package/lib/collection/components/duet-editable-table/duet-editable-table.js +3 -2
  74. package/lib/collection/components/duet-empty-state/duet-empty-state.js +1 -1
  75. package/lib/collection/components/duet-fieldset/duet-fieldset.js +1 -1
  76. package/lib/collection/components/duet-footer/duet-footer.js +1 -1
  77. package/lib/collection/components/duet-grid-item/duet-grid-item.js +1 -1
  78. package/lib/collection/components/duet-header/duet-header.css +1 -1
  79. package/lib/collection/components/duet-header/duet-header.js +1 -1
  80. package/lib/collection/components/duet-heading/duet-heading.js +1 -1
  81. package/lib/collection/components/duet-hero/duet-hero.js +1 -1
  82. package/lib/collection/components/duet-icon/duet-icon.js +1 -1
  83. package/lib/collection/components/duet-input/duet-input.js +72 -4
  84. package/lib/collection/components/duet-label/duet-label.js +1 -1
  85. package/lib/collection/components/duet-link/duet-link.js +1 -1
  86. package/lib/collection/components/duet-list/duet-list.js +1 -1
  87. package/lib/collection/components/duet-logo/duet-logo.js +1 -1
  88. package/lib/collection/components/duet-modal/duet-modal.js +80 -2
  89. package/lib/collection/components/duet-notification/duet-notification.js +1 -1
  90. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +1 -1
  91. package/lib/collection/components/duet-number-input/duet-number-input.js +90 -29
  92. package/lib/collection/components/duet-pagination/duet-pagination.js +94 -3
  93. package/lib/collection/components/duet-paragraph/duet-paragraph.js +1 -1
  94. package/lib/collection/components/duet-progress/duet-progress.js +68 -2
  95. package/lib/collection/components/duet-radio/duet-radio.js +68 -2
  96. package/lib/collection/components/duet-radio-group/duet-radio-group.js +1 -1
  97. package/lib/collection/components/duet-range-slider/duet-range-slider.js +1 -1
  98. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +29 -12
  99. package/lib/collection/components/duet-scrollable/duet-scrollable.js +1 -1
  100. package/lib/collection/components/duet-select/duet-select.js +1 -1
  101. package/lib/collection/components/duet-spinner/duet-spinner.js +1 -1
  102. package/lib/collection/components/duet-step/duet-step.js +1 -1
  103. package/lib/collection/components/duet-stepper/duet-stepper.js +1 -1
  104. package/lib/collection/components/duet-tab-group/duet-tab-group.js +1 -1
  105. package/lib/collection/components/duet-table/duet-table.css +30 -18
  106. package/lib/collection/components/duet-table/duet-table.js +1 -1
  107. package/lib/collection/components/duet-textarea/duet-textarea.js +70 -2
  108. package/lib/collection/components/duet-toggle/duet-toggle.js +68 -2
  109. package/lib/collection/components/duet-tooltip/duet-tooltip.js +1 -1
  110. package/lib/collection/components/duet-tray/duet-tray.js +1 -1
  111. package/lib/collection/components/duet-upload/duet-upload.js +1 -1
  112. package/lib/collection/utils/math.utils.js +76 -0
  113. package/lib/custom-elements-bundle/index.js +323 -112
  114. package/lib/duet/duet.esm.js +1 -1
  115. package/lib/duet/duet.js +1 -1
  116. package/lib/duet/{p-d92b2eac.system.entry.js → p-057e3337.system.entry.js} +1 -1
  117. package/lib/duet/{p-7f705e70.entry.js → p-08829649.entry.js} +1 -1
  118. package/lib/duet/{p-cd158ec2.system.entry.js → p-0a62f171.system.entry.js} +1 -1
  119. package/lib/duet/{p-7772d2f3.system.entry.js → p-0da92109.system.entry.js} +1 -1
  120. package/lib/duet/p-10b144b0.system.entry.js +4 -0
  121. package/lib/duet/p-113531de.entry.js +4 -0
  122. package/lib/duet/{p-1c315e22.system.entry.js → p-1164c8a6.system.entry.js} +1 -1
  123. package/lib/duet/{p-6b87a943.system.entry.js → p-14a98f4b.system.entry.js} +1 -1
  124. package/lib/duet/{p-8c372ef6.system.entry.js → p-1527b7e3.system.entry.js} +2 -2
  125. package/lib/duet/{p-d2c9bb5f.system.entry.js → p-188d7eb5.system.entry.js} +1 -1
  126. package/lib/duet/{p-41ed75d0.system.entry.js → p-1c6a3c81.system.entry.js} +1 -1
  127. package/lib/duet/{p-ae5872e3.system.entry.js → p-1d6d8314.system.entry.js} +1 -1
  128. package/lib/duet/{p-b953aedb.system.entry.js → p-1fdc5601.system.entry.js} +1 -1
  129. package/lib/duet/p-2135afa1.system.entry.js +4 -0
  130. package/lib/duet/p-216d4da8.entry.js +4 -0
  131. package/lib/duet/{p-1d87a095.system.js → p-2260d4d2.system.js} +1 -1
  132. package/lib/duet/{p-fbc61588.system.entry.js → p-24201d53.system.entry.js} +1 -1
  133. package/lib/duet/{p-b67edf51.system.entry.js → p-31f7ef10.system.entry.js} +1 -1
  134. package/lib/duet/p-336ddadc.js +4 -0
  135. package/lib/duet/{p-6b03322b.system.js → p-33b3aba4.system.js} +0 -0
  136. package/lib/duet/p-355f9884.entry.js +4 -0
  137. package/lib/duet/{p-851b469e.system.entry.js → p-35611d73.system.entry.js} +2 -2
  138. package/lib/duet/{p-b5ef3764.entry.js → p-3735b874.entry.js} +1 -1
  139. package/lib/duet/p-38c52a73.entry.js +4 -0
  140. package/lib/duet/{p-3ed22b96.system.entry.js → p-3a529853.system.entry.js} +1 -1
  141. package/lib/duet/{p-fa59ebf4.js → p-3b31184e.js} +0 -0
  142. package/lib/duet/{p-2d244cbb.system.entry.js → p-3b871ee9.system.entry.js} +1 -1
  143. package/lib/duet/{p-d7e383e1.system.entry.js → p-3c0d7470.system.entry.js} +2 -2
  144. package/lib/duet/p-3cf51bd3.entry.js +4 -0
  145. package/lib/duet/p-3dadaaf9.entry.js +4 -0
  146. package/lib/duet/p-3e510a51.entry.js +4 -0
  147. package/lib/duet/{p-fcf30d60.system.entry.js → p-43c0c459.system.entry.js} +1 -1
  148. package/lib/duet/p-479657e4.entry.js +4 -0
  149. package/lib/duet/p-4804b9d8.system.entry.js +4 -0
  150. package/lib/duet/{p-d50a26ce.system.entry.js → p-4a000e12.system.entry.js} +2 -2
  151. package/lib/duet/p-4be66230.js +5 -0
  152. package/lib/duet/{p-abf8eaf7.js → p-4ebf1618.js} +0 -0
  153. package/lib/duet/{p-43a54146.system.entry.js → p-54eadbb6.system.entry.js} +1 -1
  154. package/lib/duet/{p-b32178af.entry.js → p-55fbbafb.entry.js} +1 -1
  155. package/lib/duet/{p-0a8cb1f2.system.entry.js → p-56a92e4b.system.entry.js} +1 -1
  156. package/lib/duet/{p-eda1280f.entry.js → p-57934454.entry.js} +1 -1
  157. package/lib/duet/{p-6fd465b3.entry.js → p-5a4a83ce.entry.js} +1 -1
  158. package/lib/duet/{p-2e68b854.system.entry.js → p-5aec2bd7.system.entry.js} +1 -1
  159. package/lib/duet/p-5da3ec79.entry.js +4 -0
  160. package/lib/duet/{p-5b0f15e4.entry.js → p-6009349f.entry.js} +1 -1
  161. package/lib/duet/{p-f4b909bd.system.entry.js → p-636c9c24.system.entry.js} +1 -1
  162. package/lib/duet/{p-ca10ad5f.system.entry.js → p-65b4903d.system.entry.js} +1 -1
  163. package/lib/duet/{p-5d2204fc.entry.js → p-6ecb8b94.entry.js} +1 -1
  164. package/lib/duet/{p-906e53f9.entry.js → p-7bad44b0.entry.js} +1 -1
  165. package/lib/duet/{p-0da0c06d.system.entry.js → p-7ccefcc3.system.entry.js} +2 -2
  166. package/lib/duet/p-7e3eec66.system.entry.js +4 -0
  167. package/lib/duet/{p-ef5c2a47.system.entry.js → p-7fbb09c1.system.entry.js} +1 -1
  168. package/lib/duet/{p-d5b3feeb.system.entry.js → p-804eb7eb.system.entry.js} +1 -1
  169. package/lib/duet/p-808d661f.system.entry.js +4 -0
  170. package/lib/duet/{p-5b609e18.entry.js → p-834242e9.entry.js} +1 -1
  171. package/lib/duet/{p-8fa561be.system.entry.js → p-84a95f49.system.entry.js} +1 -1
  172. package/lib/duet/{p-0e3fad96.entry.js → p-879ab923.entry.js} +1 -1
  173. package/lib/duet/p-89368497.system.js +4 -0
  174. package/lib/duet/p-8d7c2cf4.entry.js +4 -0
  175. package/lib/duet/{p-1ce6c0c0.entry.js → p-928e0b63.entry.js} +1 -1
  176. package/lib/duet/{p-c5b1e054.system.entry.js → p-95dc8004.system.entry.js} +1 -1
  177. package/lib/duet/{p-36455aba.entry.js → p-96e03d88.entry.js} +1 -1
  178. package/lib/duet/{p-95be8318.system.entry.js → p-974143b1.system.entry.js} +1 -1
  179. package/lib/duet/{p-2911128f.entry.js → p-999dec9f.entry.js} +1 -1
  180. package/lib/duet/p-9e3cd6b5.entry.js +4 -0
  181. package/lib/duet/p-9ed30f80.entry.js +4 -0
  182. package/lib/duet/p-a1980c81.entry.js +4 -0
  183. package/lib/duet/{p-007518fb.entry.js → p-a7e5cd45.entry.js} +1 -1
  184. package/lib/duet/p-aae30188.system.js +5 -0
  185. package/lib/duet/{p-7f26e522.entry.js → p-ab66df54.entry.js} +1 -1
  186. package/lib/duet/p-af5f34fb.entry.js +4 -0
  187. package/lib/duet/p-afc7cc44.entry.js +4 -0
  188. package/lib/duet/{p-542af014.system.js → p-b668b67c.system.js} +0 -0
  189. package/lib/duet/p-b6cea2fb.entry.js +4 -0
  190. package/lib/duet/p-be1a1ee5.entry.js +4 -0
  191. package/lib/duet/{p-c23ef060.entry.js → p-bf306f77.entry.js} +1 -1
  192. package/lib/duet/{p-76dc3268.entry.js → p-c0cb67d7.entry.js} +1 -1
  193. package/lib/duet/p-c858aedd.entry.js +4 -0
  194. package/lib/duet/{p-00f69be4.entry.js → p-cbb59840.entry.js} +1 -1
  195. package/lib/duet/{p-27d238c5.js → p-d4c234ed.js} +1 -1
  196. package/lib/duet/{p-4fb88265.entry.js → p-d511ca66.entry.js} +1 -1
  197. package/lib/duet/{p-fcb0ac03.system.entry.js → p-db48e77a.system.entry.js} +2 -2
  198. package/lib/duet/{p-6d148390.system.entry.js → p-dc429d5d.system.entry.js} +2 -2
  199. package/lib/duet/p-e0ba5d9e.system.entry.js +4 -0
  200. package/lib/duet/{p-70f5c86d.entry.js → p-e3010ea3.entry.js} +1 -1
  201. package/lib/duet/{p-43bdb5df.system.entry.js → p-e3e092e1.system.entry.js} +2 -2
  202. package/lib/duet/p-e406a3b7.entry.js +4 -0
  203. package/lib/duet/{p-080ce662.entry.js → p-e4133a47.entry.js} +1 -1
  204. package/lib/duet/{p-86395c08.entry.js → p-e5992e2a.entry.js} +1 -1
  205. package/lib/duet/{p-eeeadb94.entry.js → p-e67563e7.entry.js} +1 -1
  206. package/lib/duet/{p-f4bba24d.system.entry.js → p-e6ff063e.system.entry.js} +1 -1
  207. package/lib/duet/{p-4fcde9bd.system.entry.js → p-e7eb9f7a.system.entry.js} +1 -1
  208. package/lib/duet/{p-f1f59897.system.entry.js → p-e8658390.system.entry.js} +1 -1
  209. package/lib/duet/p-ea59bb06.system.entry.js +4 -0
  210. package/lib/duet/p-ff46ec81.system.js +16 -0
  211. package/lib/esm/{dom-3c479050.js → dom-3dbcb0d8.js} +1 -1
  212. package/lib/esm/duet-action-button.entry.js +16 -8
  213. package/lib/esm/duet-alert.entry.js +2 -2
  214. package/lib/esm/duet-badge.entry.js +2 -2
  215. package/lib/esm/duet-breadcrumb.entry.js +2 -2
  216. package/lib/esm/duet-breadcrumbs.entry.js +2 -2
  217. package/lib/esm/duet-button_2.entry.js +17 -2
  218. package/lib/esm/duet-caption_4.entry.js +2 -2
  219. package/lib/esm/duet-card.entry.js +2 -2
  220. package/lib/esm/duet-checkbox.entry.js +15 -3
  221. package/lib/esm/duet-choice_2.entry.js +16 -4
  222. package/lib/esm/duet-collapsible.entry.js +2 -2
  223. package/lib/esm/duet-combobox.entry.js +2 -2
  224. package/lib/esm/duet-cookie-consent.entry.js +2 -2
  225. package/lib/esm/duet-date-picker.entry.js +3 -4
  226. package/lib/esm/duet-divider_2.entry.js +2 -2
  227. package/lib/esm/duet-editable-table_3.entry.js +5 -4
  228. package/lib/esm/duet-empty-state.entry.js +2 -2
  229. package/lib/esm/duet-fieldset.entry.js +2 -2
  230. package/lib/esm/duet-footer.entry.js +2 -2
  231. package/lib/esm/duet-grid_2.entry.js +2 -2
  232. package/lib/esm/duet-header_2.entry.js +3 -3
  233. package/lib/esm/duet-hero.entry.js +2 -2
  234. package/lib/esm/duet-icon.entry.js +2 -2
  235. package/lib/esm/duet-input_2.entry.js +18 -4
  236. package/lib/esm/duet-layout.entry.js +1 -1
  237. package/lib/esm/duet-list_2.entry.js +2 -2
  238. package/lib/esm/duet-modal.entry.js +12 -4
  239. package/lib/esm/duet-notification_2.entry.js +2 -2
  240. package/lib/esm/duet-number-input.entry.js +106 -49
  241. package/lib/esm/duet-pagination_2.entry.js +50 -14
  242. package/lib/esm/duet-progress.entry.js +15 -3
  243. package/lib/esm/duet-radio_2.entry.js +15 -3
  244. package/lib/esm/duet-range-slider.entry.js +2 -2
  245. package/lib/esm/duet-scrollable_3.entry.js +2 -2
  246. package/lib/esm/duet-select.entry.js +2 -2
  247. package/lib/esm/duet-step_2.entry.js +2 -2
  248. package/lib/esm/duet-textarea.entry.js +17 -3
  249. package/lib/esm/duet-toggle.entry.js +15 -3
  250. package/lib/esm/duet-tooltip.entry.js +2 -2
  251. package/lib/esm/duet-tray.entry.js +2 -2
  252. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  253. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  254. package/lib/esm/duet.js +4 -4
  255. package/lib/esm/{focus-utils-dbdd6235.js → focus-utils-6313db97.js} +1 -1
  256. package/lib/esm/{index-33a07cd5.js → index-9e6ac831.js} +11 -9
  257. package/lib/esm/loader.js +3 -3
  258. package/lib/esm/polyfills/css-shim.js +1 -1
  259. package/lib/esm/{shadow-css-fbe49d20.js → shadow-css-501eda9a.js} +2 -3
  260. package/lib/esm/{themeable-component-e8fc98bf.js → themeable-component-cb76be7c.js} +0 -0
  261. package/lib/esm-es5/{dom-3c479050.js → dom-3dbcb0d8.js} +0 -0
  262. package/lib/esm-es5/duet-action-button.entry.js +2 -2
  263. package/lib/esm-es5/duet-alert.entry.js +1 -1
  264. package/lib/esm-es5/duet-badge.entry.js +1 -1
  265. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  266. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  267. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  268. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  269. package/lib/esm-es5/duet-card.entry.js +1 -1
  270. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  271. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  272. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  273. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  274. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  275. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  276. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  277. package/lib/esm-es5/duet-editable-table_3.entry.js +2 -2
  278. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  279. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  280. package/lib/esm-es5/duet-footer.entry.js +1 -1
  281. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  282. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  283. package/lib/esm-es5/duet-hero.entry.js +1 -1
  284. package/lib/esm-es5/duet-icon.entry.js +1 -1
  285. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  286. package/lib/esm-es5/duet-layout.entry.js +1 -1
  287. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  288. package/lib/esm-es5/duet-modal.entry.js +2 -2
  289. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  290. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  291. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  292. package/lib/esm-es5/duet-progress.entry.js +1 -1
  293. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  294. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  295. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  296. package/lib/esm-es5/duet-select.entry.js +1 -1
  297. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  298. package/lib/esm-es5/duet-textarea.entry.js +2 -2
  299. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  300. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  301. package/lib/esm-es5/duet-tray.entry.js +1 -1
  302. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  303. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  304. package/lib/esm-es5/duet.js +1 -1
  305. package/lib/esm-es5/focus-utils-6313db97.js +4 -0
  306. package/lib/esm-es5/index-9e6ac831.js +5 -0
  307. package/lib/esm-es5/loader.js +1 -1
  308. package/lib/esm-es5/shadow-css-501eda9a.js +15 -0
  309. package/lib/esm-es5/{themeable-component-e8fc98bf.js → themeable-component-cb76be7c.js} +0 -0
  310. package/lib/types/common/a11y-component.d.ts +13 -0
  311. package/lib/types/{utils → common}/form-components.d.ts +0 -1
  312. package/lib/types/common/index.d.ts +3 -0
  313. package/lib/types/{utils → common}/themeable-component.d.ts +0 -0
  314. package/lib/types/components/duet-action-button/duet-action-button.d.ts +15 -7
  315. package/lib/types/components/duet-alert/duet-alert.d.ts +1 -1
  316. package/lib/types/components/duet-badge/duet-badge.d.ts +1 -1
  317. package/lib/types/components/duet-breadcrumbs/duet-breadcrumb.d.ts +1 -1
  318. package/lib/types/components/duet-breadcrumbs/duet-breadcrumbs.d.ts +1 -1
  319. package/lib/types/components/duet-button/duet-button.d.ts +14 -3
  320. package/lib/types/components/duet-caption/duet-caption.d.ts +1 -1
  321. package/lib/types/components/duet-card/duet-card.d.ts +1 -1
  322. package/lib/types/components/duet-checkbox/duet-checkbox.d.ts +14 -3
  323. package/lib/types/components/duet-choice/duet-choice.d.ts +14 -3
  324. package/lib/types/components/duet-choice-group/duet-choice-group.d.ts +1 -1
  325. package/lib/types/components/duet-collapsible/duet-collapsible.d.ts +1 -1
  326. package/lib/types/components/duet-combobox/duet-combobox.d.ts +1 -1
  327. package/lib/types/components/duet-cookie-consent/duet-cookie-consent.d.ts +1 -1
  328. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +2 -2
  329. package/lib/types/components/duet-divider/duet-divider.d.ts +1 -1
  330. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +1 -1
  331. package/lib/types/components/duet-empty-state/duet-empty-state.d.ts +1 -1
  332. package/lib/types/components/duet-fieldset/duet-fieldset.d.ts +1 -1
  333. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  334. package/lib/types/components/duet-grid-item/duet-grid-item.d.ts +1 -1
  335. package/lib/types/components/duet-header/duet-header.d.ts +1 -1
  336. package/lib/types/components/duet-heading/duet-heading.d.ts +1 -1
  337. package/lib/types/components/duet-hero/duet-hero.d.ts +1 -1
  338. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  339. package/lib/types/components/duet-input/duet-input.d.ts +15 -4
  340. package/lib/types/components/duet-label/duet-label.d.ts +1 -1
  341. package/lib/types/components/duet-link/duet-link.d.ts +1 -1
  342. package/lib/types/components/duet-list/duet-list.d.ts +1 -1
  343. package/lib/types/components/duet-logo/duet-logo.d.ts +1 -1
  344. package/lib/types/components/duet-modal/duet-modal.d.ts +18 -2
  345. package/lib/types/components/duet-notification/duet-notification.d.ts +1 -1
  346. package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +1 -1
  347. package/lib/types/components/duet-number-input/duet-number-input.d.ts +14 -4
  348. package/lib/types/components/duet-pagination/duet-pagination.d.ts +18 -2
  349. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +1 -1
  350. package/lib/types/components/duet-progress/duet-progress.d.ts +14 -2
  351. package/lib/types/components/duet-radio/duet-radio.d.ts +14 -3
  352. package/lib/types/components/duet-radio-group/duet-radio-group.d.ts +1 -1
  353. package/lib/types/components/duet-range-slider/duet-range-slider.d.ts +2 -2
  354. package/lib/types/components/duet-range-stepper/duet-range-stepper.d.ts +4 -2
  355. package/lib/types/components/duet-scrollable/duet-scrollable.d.ts +1 -1
  356. package/lib/types/components/duet-select/duet-select.d.ts +2 -2
  357. package/lib/types/components/duet-spinner/duet-spinner.d.ts +1 -1
  358. package/lib/types/components/duet-step/duet-step.d.ts +1 -1
  359. package/lib/types/components/duet-stepper/duet-stepper.d.ts +1 -1
  360. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +1 -1
  361. package/lib/types/components/duet-table/duet-table.d.ts +1 -1
  362. package/lib/types/components/duet-textarea/duet-textarea.d.ts +14 -3
  363. package/lib/types/components/duet-toggle/duet-toggle.d.ts +14 -3
  364. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +1 -1
  365. package/lib/types/components/duet-tray/duet-tray.d.ts +1 -1
  366. package/lib/types/components/duet-upload/duet-upload.d.ts +2 -2
  367. package/lib/types/components.d.ts +520 -112
  368. package/lib/types/utils/math.utils.d.ts +11 -0
  369. package/package.json +6 -6
  370. package/lib/collection/components/duet-number-input/number-input-utils.js +0 -26
  371. package/lib/duet/p-0fce5ee0.entry.js +0 -4
  372. package/lib/duet/p-112c7cf4.entry.js +0 -4
  373. package/lib/duet/p-14940019.entry.js +0 -4
  374. package/lib/duet/p-1a39ba08.entry.js +0 -4
  375. package/lib/duet/p-2c66423c.system.entry.js +0 -4
  376. package/lib/duet/p-3504f285.system.entry.js +0 -4
  377. package/lib/duet/p-356c2c34.entry.js +0 -4
  378. package/lib/duet/p-41e0b7a6.entry.js +0 -4
  379. package/lib/duet/p-46aab89e.entry.js +0 -4
  380. package/lib/duet/p-539f2a06.system.js +0 -4
  381. package/lib/duet/p-55376e66.system.entry.js +0 -4
  382. package/lib/duet/p-56212fca.js +0 -4
  383. package/lib/duet/p-60931fe2.entry.js +0 -4
  384. package/lib/duet/p-65256911.entry.js +0 -4
  385. package/lib/duet/p-6d4f68c7.entry.js +0 -4
  386. package/lib/duet/p-80d48e3c.entry.js +0 -4
  387. package/lib/duet/p-92a25fb5.system.js +0 -16
  388. package/lib/duet/p-934b6e46.entry.js +0 -4
  389. package/lib/duet/p-aa3a10db.system.entry.js +0 -4
  390. package/lib/duet/p-b97e1c6e.entry.js +0 -4
  391. package/lib/duet/p-c94d980f.system.entry.js +0 -4
  392. package/lib/duet/p-c953e685.entry.js +0 -4
  393. package/lib/duet/p-cce3f6c1.system.js +0 -4
  394. package/lib/duet/p-ce973d95.entry.js +0 -4
  395. package/lib/duet/p-da4808e6.entry.js +0 -4
  396. package/lib/duet/p-da6ec22c.js +0 -4
  397. package/lib/duet/p-e70200b0.entry.js +0 -4
  398. package/lib/duet/p-e93e4714.system.entry.js +0 -4
  399. package/lib/duet/p-fb9b713b.entry.js +0 -4
  400. package/lib/duet/p-fec90322.entry.js +0 -4
  401. package/lib/duet/p-ff54acdd.system.entry.js +0 -4
  402. package/lib/esm-es5/focus-utils-dbdd6235.js +0 -4
  403. package/lib/esm-es5/index-33a07cd5.js +0 -4
  404. package/lib/esm-es5/shadow-css-fbe49d20.js +0 -15
  405. package/lib/types/components/duet-number-input/number-input-utils.d.ts +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.15.0 | MIT Licensed | https://stenciljs.com
9
+ Stencil Mock Doc v2.16.0 | MIT Licensed | https://stenciljs.com
10
10
  */
11
11
  const CONTENT_REF_ID = 'r';
12
12
  const ORG_LOCATION_ID = 'o';
@@ -385,7 +385,7 @@ function toDataAttribute(str) {
385
385
  .toLowerCase());
386
386
  }
387
387
  function dashToPascalCase(str) {
388
- str = String(str).substr(5);
388
+ str = String(str).slice(5);
389
389
  return str
390
390
  .split('-')
391
391
  .map((segment, index) => {
@@ -589,7 +589,7 @@ function cssCaseToJsCase(str) {
589
589
  .split('-')
590
590
  .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
591
591
  .join('');
592
- str = str.substr(0, 1).toLowerCase() + str.substr(1);
592
+ str = str.slice(0, 1).toLowerCase() + str.slice(1);
593
593
  }
594
594
  return str;
595
595
  }
@@ -1532,7 +1532,11 @@ class MockNode {
1532
1532
  if (otherNode === this) {
1533
1533
  return true;
1534
1534
  }
1535
- return this.childNodes.includes(otherNode);
1535
+ const childNodes = Array.from(this.childNodes);
1536
+ if (childNodes.includes(otherNode)) {
1537
+ return true;
1538
+ }
1539
+ return childNodes.some((node) => this.contains.bind(node)(otherNode));
1536
1540
  }
1537
1541
  removeChild(childNode) {
1538
1542
  const index = this.childNodes.indexOf(childNode);
@@ -3169,6 +3173,15 @@ class MockResponse {
3169
3173
  }
3170
3174
  }
3171
3175
 
3176
+ class MockDOMParser {
3177
+ parseFromString(htmlToParse, mimeType) {
3178
+ if (mimeType !== 'text/html') {
3179
+ console.error('XML parsing not implemented yet, continuing as html');
3180
+ }
3181
+ return parseHtmlToDocument(htmlToParse);
3182
+ }
3183
+ }
3184
+
3172
3185
  function setupGlobal(gbl) {
3173
3186
  if (gbl.window == null) {
3174
3187
  const win = (gbl.window = new MockWindow());
@@ -3298,6 +3311,7 @@ const GLOBAL_CONSTRUCTORS = [
3298
3311
  ['MouseEvent', MockMouseEvent],
3299
3312
  ['Request', MockRequest],
3300
3313
  ['Response', MockResponse],
3314
+ ['DOMParser', MockDOMParser],
3301
3315
  ['HTMLAnchorElement', MockAnchorElement],
3302
3316
  ['HTMLBaseElement', MockBaseElement],
3303
3317
  ['HTMLButtonElement', MockButtonElement],
@@ -4963,7 +4977,8 @@ const createTime = (e, t = "") => {
4963
4977
  let n = styles.get(e);
4964
4978
  n = t, styles.set(e, n);
4965
4979
  }, addStyle = (e, t, o, n) => {
4966
- let s = getScopeId(t), l = styles.get(s);
4980
+ let s = getScopeId(t);
4981
+ const l = styles.get(s);
4967
4982
  if (e = 11 === e.nodeType ? e : doc, l) if ("string" == typeof l) {
4968
4983
  e = e.head || e;
4969
4984
  let o, a = rootAppliedStyles.get(e);
@@ -4983,8 +4998,8 @@ const createTime = (e, t = "") => {
4983
4998
  o.classList.add(l + "-h"), 2 & n && o.classList.add(l + "-s")),
4984
4999
  s();
4985
5000
  }, getScopeId = (e, t) => "sc-" + (e.$tagName$), EMPTY_OBJ = {}, isComplexType = e => "object" == (e = typeof e) || "function" === e, isPromise = e => !!e && ("object" == typeof e || "function" == typeof e) && "function" == typeof e.then, h = (e, t, ...o) => {
4986
- let n = null, s = null, l = null, a = !1, r = !1, i = [];
4987
- const d = t => {
5001
+ let n = null, s = null, l = null, a = !1, r = !1;
5002
+ const i = [], d = t => {
4988
5003
  for (let o = 0; o < t.length; o++) n = t[o], Array.isArray(n) ? d(n) : null != n && "boolean" != typeof n && ((a = "function" != typeof e && !isComplexType(n)) ? n = String(n) : BUILD.isDev ,
4989
5004
  a && r ? i[i.length - 1].$text$ += n : i.push(a ? newVNode(null, n) : n), r = a);
4990
5005
  };
@@ -5041,7 +5056,7 @@ const createTime = (e, t = "") => {
5041
5056
  const i = isComplexType(n);
5042
5057
  if ((a || i && null !== n) && !s) try {
5043
5058
  if (e.tagName.includes("-")) e[t] = n; else {
5044
- let s = null == n ? "" : n;
5059
+ const s = null == n ? "" : n;
5045
5060
  "list" === t ? a = !1 : null != o && e[t] == s || (e[t] = s);
5046
5061
  }
5047
5062
  } catch (e) {}
@@ -5061,20 +5076,21 @@ const createTime = (e, t = "") => {
5061
5076
  let scopeId, contentRef, hostTagName, useNativeShadowDom = !1, checkSlotFallbackVisibility = !1, checkSlotRelocate = !1, isSvgMode = !1;
5062
5077
 
5063
5078
  const createElm = (e, t, o, n) => {
5064
- let s, l, a, r = t.$children$[o], i = 0;
5065
- if (!useNativeShadowDom && (checkSlotRelocate = !0, "slot" === r.$tag$ && (scopeId && n.classList.add(scopeId + "-s"),
5066
- r.$flags$ |= r.$children$ ? 2 : 1)), null !== r.$text$) s = r.$elm$ = doc.createTextNode(r.$text$); else if (1 & r.$flags$) s = r.$elm$ = slotReferenceDebugNode(r) ; else {
5067
- if (!isSvgMode && (isSvgMode = "svg" === r.$tag$), s = r.$elm$ = doc.createElementNS(isSvgMode ? "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", 2 & r.$flags$ ? "slot-fb" : r.$tag$) ,
5068
- isSvgMode && "foreignObject" === r.$tag$ && (isSvgMode = !1), updateElement(null, r, isSvgMode),
5069
- null != scopeId && s["s-si"] !== scopeId && s.classList.add(s["s-si"] = scopeId),
5070
- r.$children$) for (i = 0; i < r.$children$.length; ++i) l = createElm(e, r, i, s),
5071
- l && s.appendChild(l);
5072
- ("svg" === r.$tag$ ? isSvgMode = !1 : "foreignObject" === s.tagName && (isSvgMode = !0));
5079
+ const s = t.$children$[o];
5080
+ let l, a, r, i = 0;
5081
+ if (!useNativeShadowDom && (checkSlotRelocate = !0, "slot" === s.$tag$ && (scopeId && n.classList.add(scopeId + "-s"),
5082
+ s.$flags$ |= s.$children$ ? 2 : 1)), null !== s.$text$) l = s.$elm$ = doc.createTextNode(s.$text$); else if (1 & s.$flags$) l = s.$elm$ = slotReferenceDebugNode(s) ; else {
5083
+ if (!isSvgMode && (isSvgMode = "svg" === s.$tag$), l = s.$elm$ = doc.createElementNS(isSvgMode ? "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", 2 & s.$flags$ ? "slot-fb" : s.$tag$) ,
5084
+ isSvgMode && "foreignObject" === s.$tag$ && (isSvgMode = !1), updateElement(null, s, isSvgMode),
5085
+ null != scopeId && l["s-si"] !== scopeId && l.classList.add(l["s-si"] = scopeId),
5086
+ s.$children$) for (i = 0; i < s.$children$.length; ++i) a = createElm(e, s, i, l),
5087
+ a && l.appendChild(a);
5088
+ ("svg" === s.$tag$ ? isSvgMode = !1 : "foreignObject" === l.tagName && (isSvgMode = !0));
5073
5089
  }
5074
- return (s["s-hn"] = hostTagName, 3 & r.$flags$ && (s["s-sr"] = !0,
5075
- s["s-cr"] = contentRef, s["s-sn"] = r.$name$ || "", a = e && e.$children$ && e.$children$[o],
5076
- a && a.$tag$ === r.$tag$ && e.$elm$ && putBackInOriginalLocation(e.$elm$, !1))),
5077
- s;
5090
+ return (l["s-hn"] = hostTagName, 3 & s.$flags$ && (l["s-sr"] = !0,
5091
+ l["s-cr"] = contentRef, l["s-sn"] = s.$name$ || "", r = e && e.$children$ && e.$children$[o],
5092
+ r && r.$tag$ === s.$tag$ && e.$elm$ && putBackInOriginalLocation(e.$elm$, !1))),
5093
+ l;
5078
5094
  }, putBackInOriginalLocation = (e, t) => {
5079
5095
  plt.$flags$ |= 1;
5080
5096
  const o = e.childNodes;
@@ -5115,22 +5131,24 @@ const createElm = (e, t, o, n) => {
5115
5131
  addVnodes(o, null, t, s, 0, s.length - 1)) : null !== n && removeVnodes(n, 0, n.length - 1),
5116
5132
  isSvgMode && "svg" === l && (isSvgMode = !1));
5117
5133
  }, updateFallbackSlotVisibility = e => {
5118
- let t, o, n, s, l, a, r = e.childNodes;
5119
- for (o = 0, n = r.length; o < n; o++) if (t = r[o], 1 === t.nodeType) {
5120
- if (t["s-sr"]) for (l = t["s-sn"], t.hidden = !1, s = 0; s < n; s++) if (a = r[s].nodeType,
5121
- r[s]["s-hn"] !== t["s-hn"] || "" !== l) {
5122
- if (1 === a && l === r[s].getAttribute("slot")) {
5123
- t.hidden = !0;
5134
+ const t = e.childNodes;
5135
+ let o, n, s, l, a, r;
5136
+ for (n = 0, s = t.length; n < s; n++) if (o = t[n], 1 === o.nodeType) {
5137
+ if (o["s-sr"]) for (a = o["s-sn"], o.hidden = !1, l = 0; l < s; l++) if (r = t[l].nodeType,
5138
+ t[l]["s-hn"] !== o["s-hn"] || "" !== a) {
5139
+ if (1 === r && a === t[l].getAttribute("slot")) {
5140
+ o.hidden = !0;
5124
5141
  break;
5125
5142
  }
5126
- } else if (1 === a || 3 === a && "" !== r[s].textContent.trim()) {
5127
- t.hidden = !0;
5143
+ } else if (1 === r || 3 === r && "" !== t[l].textContent.trim()) {
5144
+ o.hidden = !0;
5128
5145
  break;
5129
5146
  }
5130
- updateFallbackSlotVisibility(t);
5147
+ updateFallbackSlotVisibility(o);
5131
5148
  }
5132
5149
  }, relocateNodes = [], relocateSlotContent = e => {
5133
- let t, o, n, s, l, a, r = 0, i = e.childNodes, d = i.length;
5150
+ let t, o, n, s, l, a, r = 0;
5151
+ const i = e.childNodes, d = i.length;
5134
5152
  for (;r < d; r++) {
5135
5153
  if (t = i[r], t["s-sr"] && (o = t["s-cr"]) && o.parentNode) for (n = o.parentNode.childNodes,
5136
5154
  s = t["s-sn"], a = n.length - 1; a >= 0; a--) o = n[a], o["s-cn"] || o["s-nr"] || o["s-hn"] === t["s-hn"] || (isNodeLocatedInSlot(o, s) ? (l = relocateNodes.find((e => e.$nodeToRelocate$ === o)),
@@ -5572,6 +5590,15 @@ const cmpModules = new Map, getModule = e => {
5572
5590
  isTesting: !1
5573
5591
  }, styles = new Map;
5574
5592
 
5593
+ const inheritGlobalTheme = (component) => {
5594
+ // this minor change enables duet-theme-XXXXX instead of just duet-theme-turva
5595
+ const classList = Array.from(document.documentElement.classList).join(" ") || "";
5596
+ const theme = /(duet-theme-)([a-z]*)/gis.exec(classList);
5597
+ if (theme && theme[1] === "duet-theme-") {
5598
+ component.theme = theme[2] === "default" ? "" : theme[2];
5599
+ }
5600
+ };
5601
+
5575
5602
  function chr4() {
5576
5603
  return Math.random().toString(16).slice(-4);
5577
5604
  }
@@ -5764,15 +5791,6 @@ const getLocaleString = (langObject, languageOverride) => {
5764
5791
  }
5765
5792
  };
5766
5793
 
5767
- const inheritGlobalTheme = (component) => {
5768
- // this minor change enables duet-theme-XXXXX instead of just duet-theme-turva
5769
- const classList = Array.from(document.documentElement.classList).join(" ") || "";
5770
- const theme = /(duet-theme-)([a-z]*)/gis.exec(classList);
5771
- if (theme && theme[1] === "duet-theme-") {
5772
- component.theme = theme[2] === "default" ? "" : theme[2];
5773
- }
5774
- };
5775
-
5776
5794
  const colorWarning = "rgb(247, 178, 40)";
5777
5795
  const colorGrayDarker = "rgb(101, 119, 135)";
5778
5796
  const colorGrayLighter = "rgb(245, 248, 250)";
@@ -6221,15 +6239,23 @@ class DuetActionButton {
6221
6239
  /**
6222
6240
  * Described By id
6223
6241
  */
6224
- this.ariaDescribedBy = undefined;
6242
+ this.accessibleDescribedBy = undefined;
6243
+ /**
6244
+ * Details of the component
6245
+ */
6246
+ this.accessibleDetails = undefined;
6247
+ /**
6248
+ * String of id's that indicate alternative labels elements
6249
+ */
6250
+ this.accessibleLabelledBy = undefined;
6225
6251
  /**
6226
6252
  * Aria description the button
6227
6253
  */
6228
- this.ariaDescription = undefined;
6254
+ this.accessibleDescription = undefined;
6229
6255
  /**
6230
6256
  * Default pagination labels
6231
6257
  */
6232
- this.ariaLabelsDefaults = {
6258
+ this.accessibleLabelsDefaults = {
6233
6259
  en: {
6234
6260
  label: "Click to activate action",
6235
6261
  },
@@ -6243,11 +6269,11 @@ class DuetActionButton {
6243
6269
  /**
6244
6270
  * Default pagination labels
6245
6271
  */
6246
- this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
6272
+ this.accessibleLabels = getLocaleString(this.accessibleLabelsDefaults);
6247
6273
  /**
6248
6274
  * Used to indicate which dom element with ID this element controls
6249
6275
  */
6250
- this.ariaControls = "";
6276
+ this.accessibleControls = "";
6251
6277
  this.listId = createID("duet-action-button");
6252
6278
  /**
6253
6279
  * Private methods.
@@ -6315,7 +6341,7 @@ class DuetActionButton {
6315
6341
  "duet-action-button": true,
6316
6342
  "duet-action-button--disabled": this.disabled,
6317
6343
  [`duet-action-button--${this.theme}`]: this.theme !== "",
6318
- }, type: "button", onClick: e => this.onMouseHandler(e), "aria-label": this.ariaLabels.label, "aria-description": this.ariaDescription, "aria-describedby": this.ariaDescribedBy, "aria-controls": this.ariaControls }, hAsync("duet-icon", { part: "icon", name: this.iconName, color: this.iconColor, margin: "none", size: this.iconSize }), hAsync("duet-visually-hidden", null, hAsync("slot", null)))));
6344
+ }, type: "button", onClick: e => this.onMouseHandler(e), "aria-label": this.accessibleLabels.label, "aria-labelledby": this.accessibleLabelledBy, "aria-description": this.accessibleDescription, "aria-describedby": this.accessibleDescribedBy, "aria-details": this.accessibleDetails, "aria-controls": this.accessibleControls }, hAsync("duet-icon", { part: "icon", name: this.iconName, color: this.iconColor, margin: "none", size: this.iconSize }), hAsync("duet-visually-hidden", null, hAsync("slot", null)))));
6319
6345
  }
6320
6346
  get element() { return getElement(this); }
6321
6347
  static get style() { return duetActionButtonCss; }
@@ -6333,11 +6359,13 @@ class DuetActionButton {
6333
6359
  "disabled": [4],
6334
6360
  "color": [513],
6335
6361
  "background": [1],
6336
- "ariaDescribedBy": [1, "accessible-described-by"],
6337
- "ariaDescription": [1, "accessible-description"],
6338
- "ariaLabelsDefaults": [16],
6339
- "ariaLabels": [16],
6340
- "ariaControls": [1, "accessible-controls"],
6362
+ "accessibleDescribedBy": [1, "accessible-described-by"],
6363
+ "accessibleDetails": [1, "accessible-details"],
6364
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
6365
+ "accessibleDescription": [1, "accessible-description"],
6366
+ "accessibleLabelsDefaults": [16],
6367
+ "accessibleLabels": [16],
6368
+ "accessibleControls": [1, "accessible-controls"],
6341
6369
  "numbersStore": [32]
6342
6370
  },
6343
6371
  "$listeners$": undefined,
@@ -6642,6 +6670,18 @@ class DuetButton {
6642
6670
  * Use this property to add an aria-haspopup attribute to a button, if you are using it as a menu button.
6643
6671
  */
6644
6672
  this.accessiblePopup = "false";
6673
+ /**
6674
+ * Details of the component
6675
+ */
6676
+ this.accessibleDetails = undefined;
6677
+ /**
6678
+ * String of id's that indicate alternative labels elements
6679
+ */
6680
+ this.accessibleLabelledBy = undefined;
6681
+ /**
6682
+ * Aria description the button
6683
+ */
6684
+ this.accessibleDescription = undefined;
6645
6685
  /**
6646
6686
  * Loading state of the button
6647
6687
  */
@@ -6850,6 +6890,9 @@ class DuetButton {
6850
6890
  "aria-activedescendant": this.accessibleActiveDescendant,
6851
6891
  "aria-owns": this.accessibleOwns,
6852
6892
  "aria-describedby": this.accessibleDescribedBy,
6893
+ "aria-labelledby": this.accessibleLabelledBy,
6894
+ "aria-details": this.accessibleDetails,
6895
+ "aria-description": this.accessibleDescription,
6853
6896
  };
6854
6897
  return (hAsync(Host, { onClick: this.handleClick, class: {
6855
6898
  "duet-m-0": this.margin === "none",
@@ -6883,6 +6926,9 @@ class DuetButton {
6883
6926
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
6884
6927
  "accessibleOwns": [1, "accessible-owns"],
6885
6928
  "accessibleDescribedBy": [1, "accessible-described-by"],
6929
+ "accessibleDetails": [1, "accessible-details"],
6930
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
6931
+ "accessibleDescription": [1, "accessible-description"],
6886
6932
  "accessibleExpanded": [4, "accessible-expanded"],
6887
6933
  "accessiblePressed": [4, "accessible-pressed"],
6888
6934
  "loading": [4],
@@ -7153,6 +7199,18 @@ class DuetCheckbox {
7153
7199
  * Controls the margin of the component.
7154
7200
  */
7155
7201
  this.margin = "auto";
7202
+ /**
7203
+ * Aria Details of the component
7204
+ */
7205
+ this.accessibleDetails = undefined;
7206
+ /**
7207
+ * String of id's that indicate alternative labels elements
7208
+ */
7209
+ this.accessibleLabelledBy = undefined;
7210
+ /**
7211
+ * Aria description the button
7212
+ */
7213
+ this.accessibleDescription = undefined;
7156
7214
  /**
7157
7215
  * Set whether the input is required or not. Please note that this is required for
7158
7216
  * accessible inputs when the user is required to fill them. When using this property
@@ -7236,7 +7294,7 @@ class DuetCheckbox {
7236
7294
  "duet-checkbox-container": true,
7237
7295
  "duet-label-hidden": this.labelHidden,
7238
7296
  "duet-theme-turva": this.theme === "turva",
7239
- } }, hAsync("input", { ref: input => (this.nativeInput = input), type: "checkbox", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, class: { "duet-checkbox": true, disabled: this.disabled }, checked: this.checked, disabled: this.disabled, tabindex: this.accessibleIndex, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, required: this.required, role: this.role, name: this.name, id: identifier }), hAsync("label", { class: "duet-label", htmlFor: identifier }, hAsync("span", null, this.label)))));
7297
+ } }, hAsync("input", { ref: input => (this.nativeInput = input), type: "checkbox", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, class: { "duet-checkbox": true, disabled: this.disabled }, checked: this.checked, disabled: this.disabled, tabindex: this.accessibleIndex, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, required: this.required, role: this.role, name: this.name, id: identifier }), hAsync("label", { class: "duet-label", htmlFor: identifier }, hAsync("span", null, this.label)))));
7240
7298
  }
7241
7299
  get element() { return getElement(this); }
7242
7300
  static get style() { return duetCheckboxCss; }
@@ -7250,6 +7308,9 @@ class DuetCheckbox {
7250
7308
  "accessibleIndex": [1, "accessible-index"],
7251
7309
  "accessibleOwns": [1, "accessible-owns"],
7252
7310
  "accessibleDescribedBy": [1, "accessible-described-by"],
7311
+ "accessibleDetails": [1, "accessible-details"],
7312
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
7313
+ "accessibleDescription": [1, "accessible-description"],
7253
7314
  "required": [4],
7254
7315
  "theme": [1025],
7255
7316
  "disabled": [516],
@@ -7327,6 +7388,18 @@ class DuetChoice {
7327
7388
  * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
7328
7389
  */
7329
7390
  this.accessibleLabelInfoButton = getLocaleString(this.accessibleLabelInfoButtonDefaults);
7391
+ /**
7392
+ * Aria Details of the component
7393
+ */
7394
+ this.accessibleDetails = undefined;
7395
+ /**
7396
+ * String of id's that indicate alternative labels elements
7397
+ */
7398
+ this.accessibleLabelledBy = undefined;
7399
+ /**
7400
+ * Aria description the button
7401
+ */
7402
+ this.accessibleDescription = undefined;
7330
7403
  /**
7331
7404
  * Additional caption to show inside the label of the choice button.
7332
7405
  */
@@ -7563,7 +7636,7 @@ class DuetChoice {
7563
7636
  info: this.isInfoOpen,
7564
7637
  collapsible: this.collapsible,
7565
7638
  "duet-p-0": this.padding === "none",
7566
- } }, hAsync("input", { class: "duet-choice-input", type: this.type, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, disabled: this.disabled || this.groupDisabled, required: this.required, id: identifier, name: this.name, value: this.value, checked: this.checked, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getAriaDescribedby(), onKeyDown: this.handleKeyDown, ref: input => (this.nativeInput = input) }), hAsync("label", { htmlFor: identifier, class: { "duet-choice-label": true, "no-hover": this.isHovering }, onClick: this.onClick }, this.icon && (hAsync("div", { class: "duet-choice-card-icon" }, hAsync("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), hAsync("div", null, hAsync("div", null, this.label), this.caption && (hAsync("div", null, hAsync("duet-spacer", { size: "xx-small" }), hAsync("duet-caption", { margin: "none", selected: this.checked }, this.caption))), this.hasAdditional && (hAsync("div", null, hAsync("duet-spacer", { size: "xx-small" }), hAsync("slot", { name: "additional" })))), hAsync("div", null, hAsync("div", { class: { "duet-checkmark-container": true, "duet-checkmark-radio": this.type === "radio" } }, this.checked && hAsync("div", { class: "duet-checkmark" }))))), this.hasInfo && !this.collapsible && (hAsync("button", { ref: button => (this.infoButtonEl = button), id: this.infoButtonId, class: {
7639
+ } }, hAsync("input", { class: "duet-choice-input", type: this.type, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, disabled: this.disabled || this.groupDisabled, required: this.required, id: identifier, name: this.name, value: this.value, checked: this.checked, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, "aria-owns": this.accessibleOwns, "aria-describedby": this.getAriaDescribedby(), onKeyDown: this.handleKeyDown, ref: input => (this.nativeInput = input) }), hAsync("label", { htmlFor: identifier, class: { "duet-choice-label": true, "no-hover": this.isHovering }, onClick: this.onClick }, this.icon && (hAsync("div", { class: "duet-choice-card-icon" }, hAsync("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), hAsync("div", null, hAsync("div", null, this.label), this.caption && (hAsync("div", null, hAsync("duet-spacer", { size: "xx-small" }), hAsync("duet-caption", { margin: "none", selected: this.checked }, this.caption))), this.hasAdditional && (hAsync("div", null, hAsync("duet-spacer", { size: "xx-small" }), hAsync("slot", { name: "additional" })))), hAsync("div", null, hAsync("div", { class: { "duet-checkmark-container": true, "duet-checkmark-radio": this.type === "radio" } }, this.checked && hAsync("div", { class: "duet-checkmark" }))))), this.hasInfo && !this.collapsible && (hAsync("button", { ref: button => (this.infoButtonEl = button), id: this.infoButtonId, class: {
7567
7640
  "duet-choice-info-toggle": true,
7568
7641
  "duet-theme-turva": this.theme === "turva",
7569
7642
  }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, onClick: this.toggleInfo, disabled: this.disabled || this.groupDisabled, "aria-expanded": this.isInfoOpen ? "true" : "false", "aria-label": `${this.infoLabel} ${this.label}`, "aria-controls": this.expandId, "aria-flowto": this.expandId, tabindex: this.type === "radio" && !this.checked ? "-1" : "0", type: "button" }, hAsync("duet-visually-hidden", { "aria-hidden": !this.isBlurred ? "true" : "false" }, this.accessibleLabelInfoButton), hAsync("div", { class: "duet-choice-info-icon" }, hAsync("duet-icon", { icon: messagingInfo.svg, margin: "none", size: "small", color: "currentColor" }))))), this.collapsible || this.hasInfo ? (hAsync("div", { class: this.getClassNames(), id: this.expandId }, hAsync("span", { class: {
@@ -7585,6 +7658,9 @@ class DuetChoice {
7585
7658
  "accessibleControls": [1, "accessible-controls"],
7586
7659
  "accessibleOwns": [1, "accessible-owns"],
7587
7660
  "accessibleDescribedBy": [1, "accessible-described-by"],
7661
+ "accessibleDetails": [1, "accessible-details"],
7662
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
7663
+ "accessibleDescription": [1, "accessible-description"],
7588
7664
  "caption": [1],
7589
7665
  "value": [1537],
7590
7666
  "type": [513],
@@ -9184,7 +9260,6 @@ const DatePickerDay = ({ focusedDay, today, day, language, onDaySelect, onKeyboa
9184
9260
  * @param to
9185
9261
  */
9186
9262
  function range(from, to) {
9187
- console.log({ from, to });
9188
9263
  var result = [];
9189
9264
  for (var i = from; i <= to; i++) {
9190
9265
  result.push(i);
@@ -9963,6 +10038,7 @@ class DuetEditableTable {
9963
10038
  render() {
9964
10039
  return (hAsync(Host, { class: {
9965
10040
  [`duet-editable-table-${this.variation}`]: true,
10041
+ "duet-editable-table": true,
9966
10042
  [`duet-editable-table-${this.theme}`]: true,
9967
10043
  // sticky only valid when in regular table layout
9968
10044
  "duet-editable-table-scrollable": this.breakpoint === "none-scrollable",
@@ -9970,7 +10046,7 @@ class DuetEditableTable {
9970
10046
  "duet-editable-table-actions": !!this.actions,
9971
10047
  "duet-m-0": this.margin === "none",
9972
10048
  "duet-theme-turva": this.theme === "turva",
9973
- } }, hAsync("duet-table", { sticky: this.sticky, stickyDistance: this.stickyDistance, margin: this.margin, theme: this.theme, variation: this.variation, breakpoint: this.breakpoint }, hAsync("table", { role: this.accessibleRole }, hAsync("caption", null, hAsync("slot", { name: "tcaption" })), hAsync("thead", null, hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-first" }))), this.renderTableHeader(), hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-last" })))), hAsync("tbody", null, this.renderTableBody()), hAsync("tfoot", null, hAsync("tr", null, hAsync("th", { class: "duet-editable-table-footer-menu", colSpan: 99 }, hAsync("slot", { name: "tfoot" }))))))));
10049
+ } }, hAsync("duet-table", { class: "duet-editable-table-table", sticky: this.sticky, stickyDistance: this.stickyDistance, margin: this.margin, theme: this.theme, variation: this.variation, breakpoint: this.breakpoint }, hAsync("table", { role: this.accessibleRole }, hAsync("caption", null, hAsync("slot", { name: "tcaption" })), hAsync("thead", null, hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-first" }))), this.renderTableHeader(), hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-last" })))), hAsync("tbody", null, this.renderTableBody()), hAsync("tfoot", null, hAsync("tr", null, hAsync("th", { class: "duet-editable-table-footer-menu", colSpan: 99 }, hAsync("slot", { name: "tfoot" }))))))));
9974
10050
  }
9975
10051
  get element() { return getElement(this); }
9976
10052
  static get style() { return duetEditableTableCss; }
@@ -10783,7 +10859,7 @@ const DuetHeaderHamburger = () => (hAsync("div", { class: "duet-header-hamburger
10783
10859
  hAsync("span", { class: "duet-header-bar" }),
10784
10860
  hAsync("span", { class: "duet-header-bar" })));
10785
10861
 
10786
- 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}/*!@.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-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}@media (min-width: 62em){/*!@.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-language.active, .duet-header-language.active:hover,\n.duet-header-contact.active,\n.duet-header-contact.active:hover*/.duet-header-language.active.sc-duet-header,.duet-header-language.active.sc-duet-header:hover,.duet-header-contact.active.sc-duet-header,.duet-header-contact.active.sc-duet-header:hover{color:inherit}/*!@.duet-theme-turva .duet-header-language.active, .duet-theme-turva .duet-header-language.active:hover,\n.duet-theme-turva .duet-header-contact.active,\n.duet-theme-turva .duet-header-contact.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-language.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-language.active.sc-duet-header:hover,.duet-theme-turva.sc-duet-header .duet-header-contact.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-contact.active.sc-duet-header:hover{color:inherit}/*!@.duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active:hover::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header:hover::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header:hover::after{width:0}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active:hover::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header:hover::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header:hover::after{width:100%}}/*!@.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}/*!@.active-bar*/.active-bar.sc-duet-header{color:#0077b3}/*!@.active-bar::after*/.active-bar.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .active-bar::after*/.duet-theme-turva.sc-duet-header .active-bar.sc-duet-header::after{background:#c60c30}/*!@.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}}@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 !important;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{border-bottom:1px solid #f5f8fa}/*!@.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:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active::after, .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active:hover::after*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover::after{background:#c60c30}/*!@.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{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{color:#004d80;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)}/*!@.duet-header-dropdown .duet-header-dropdown-content.duet-header-session-items*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header{right:0%;left:auto;min-width:225px}/*!@.duet-header-dropdown .duet-header-dropdown-content.duet-header-session-items .duet-header-session-label*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header .duet-header-session-label.sc-duet-header{padding:0 20px;font-weight:600}}@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.duet-header-session-items*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header{min-width:225px}}/*!@.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}/*!@.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 > :last-child.duet-header-dropdown .duet-header-button::before*/.duet-header-multi-level-desktop-utils.sc-duet-header>.sc-duet-header:last-child.duet-header-dropdown .duet-header-button.sc-duet-header::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}";
10862
+ 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{font-weight:600;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{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}/*!@.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-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}@media (min-width: 62em){/*!@.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-language.active, .duet-header-language.active:hover,\n.duet-header-contact.active,\n.duet-header-contact.active:hover*/.duet-header-language.active.sc-duet-header,.duet-header-language.active.sc-duet-header:hover,.duet-header-contact.active.sc-duet-header,.duet-header-contact.active.sc-duet-header:hover{color:inherit}/*!@.duet-theme-turva .duet-header-language.active, .duet-theme-turva .duet-header-language.active:hover,\n.duet-theme-turva .duet-header-contact.active,\n.duet-theme-turva .duet-header-contact.active:hover*/.duet-theme-turva.sc-duet-header .duet-header-language.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-language.active.sc-duet-header:hover,.duet-theme-turva.sc-duet-header .duet-header-contact.active.sc-duet-header,.duet-theme-turva.sc-duet-header .duet-header-contact.active.sc-duet-header:hover{color:inherit}/*!@.duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active:hover::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header:hover::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header:hover::after{width:0}@media (min-width: 62em){/*!@.duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active::after, .duet-header-dropdown .duet-header-language.duet-header-dropdown-toggle.active:hover::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active::after,\n.duet-header-dropdown .duet-header-contact.duet-header-dropdown-toggle.active:hover::after*/.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-language.duet-header-dropdown-toggle.active.sc-duet-header:hover::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-header-dropdown.sc-duet-header .duet-header-contact.duet-header-dropdown-toggle.active.sc-duet-header:hover::after{width:100%}}/*!@.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}/*!@.active-bar*/.active-bar.sc-duet-header{color:#0077b3}/*!@.active-bar::after*/.active-bar.sc-duet-header::after{position:absolute;top:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .active-bar::after*/.duet-theme-turva.sc-duet-header .active-bar.sc-duet-header::after{background:#c60c30}/*!@.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}}@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 !important;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{border-bottom:1px solid #f5f8fa}/*!@.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:0;bottom:0;left:0;width:4px;content:\"\";background:#0077b3}/*!@.duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active::after, .duet-theme-turva .duet-header-dropdown .duet-header-dropdown-toggle.active:hover::after*/.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header::after,.duet-theme-turva.sc-duet-header .duet-header-dropdown.sc-duet-header .duet-header-dropdown-toggle.active.sc-duet-header:hover::after{background:#c60c30}/*!@.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{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{color:#004d80;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)}/*!@.duet-header-dropdown .duet-header-dropdown-content.duet-header-session-items*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header{right:0%;left:auto;min-width:225px}/*!@.duet-header-dropdown .duet-header-dropdown-content.duet-header-session-items .duet-header-session-label*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header .duet-header-session-label.sc-duet-header{padding:0 20px;font-weight:600}}@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.duet-header-session-items*/.duet-header-dropdown.sc-duet-header .duet-header-dropdown-content.duet-header-session-items.sc-duet-header{min-width:225px}}/*!@.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}/*!@.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 > :last-child.duet-header-dropdown .duet-header-button::before*/.duet-header-multi-level-desktop-utils.sc-duet-header>.sc-duet-header:last-child.duet-header-dropdown .duet-header-button.sc-duet-header::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}";
10787
10863
 
10788
10864
  const createEvent = (ev, data) => ({
10789
10865
  component: "duet-header",
@@ -11963,13 +12039,25 @@ class DuetInput {
11963
12039
  sv: "Rensa",
11964
12040
  });
11965
12041
  /**
11966
- * Indicates the id of a component that describes the input.
12042
+ * Indicates the id or a string of space seperated ids of a component(s) that describes the input.
11967
12043
  */
11968
12044
  this.accessibleDescribedBy = "";
11969
12045
  /**
11970
12046
  * Indicates value of any popup element associated with the input.
11971
12047
  */
11972
12048
  this.accessibleHasPopup = undefined;
12049
+ /**
12050
+ * Aria Details of the component
12051
+ */
12052
+ this.accessibleDetails = undefined;
12053
+ /**
12054
+ * String of id's that indicate alternative labels elements
12055
+ */
12056
+ this.accessibleLabelledBy = undefined;
12057
+ /**
12058
+ * Aria description the button
12059
+ */
12060
+ this.accessibleDescription = undefined;
11973
12061
  /**
11974
12062
  * Set the amount of time, in milliseconds, to wait to trigger the duetChange
11975
12063
  * event after each keystroke.
@@ -12215,7 +12303,9 @@ class DuetInput {
12215
12303
  disabled: this.disabled,
12216
12304
  "is-number": this.component === "number",
12217
12305
  "is-date": this.component === "date",
12218
- }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-expanded": this.accessibleExpanded, "aria-haspopup": this.accessibleHasPopup, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon &&
12306
+ }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": this.accessibleLabelledBy
12307
+ ? `${this.labelId} ${this.errorId} ${this.accessibleLabelledBy}`
12308
+ : `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, "aria-expanded": this.accessibleExpanded, "aria-haspopup": this.accessibleHasPopup, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon &&
12219
12309
  this.type !== "text" &&
12220
12310
  this.type !== "tel" &&
12221
12311
  this.type !== "password" &&
@@ -12238,6 +12328,9 @@ class DuetInput {
12238
12328
  "accessibleExpanded": [1, "accessible-expanded"],
12239
12329
  "accessibleDescribedBy": [1, "accessible-described-by"],
12240
12330
  "accessibleHasPopup": [1, "accessible-has-popup"],
12331
+ "accessibleDetails": [1, "accessible-details"],
12332
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
12333
+ "accessibleDescription": [1, "accessible-description"],
12241
12334
  "debounce": [2],
12242
12335
  "clear": [4],
12243
12336
  "caption": [1],
@@ -12841,6 +12934,14 @@ class DuetModal {
12841
12934
  * Size of the modal window.
12842
12935
  */
12843
12936
  this.size = "medium";
12937
+ /**
12938
+ * Details of the component
12939
+ */
12940
+ this.accessibleDetails = undefined;
12941
+ /**
12942
+ * Aria description the button
12943
+ */
12944
+ this.accessibleDescription = undefined;
12844
12945
  /**
12845
12946
  * Size of the modal window.
12846
12947
  */
@@ -12982,7 +13083,7 @@ class DuetModal {
12982
13083
  iconColor = "primary-turva";
12983
13084
  closeColor = "secondary-turva";
12984
13085
  }
12985
- return (hAsync("div", { ref: modal => (this.modalEl = modal), "aria-labelledby": this.heading ? this.modalId : false, "aria-describedby": this.slotDefaultId, role: "dialog", "aria-modal": this.isSafariBrowser ? false : true, tabindex: "-1", "aria-flowto": this.slotDefaultId, class: {
13086
+ return (hAsync("div", { ref: modal => (this.modalEl = modal), "aria-labelledby": this.heading ? this.modalId : false, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, "aria-describedby": this.accessibleDescribedBy ? `${this.slotDefaultId} ${this.accessibleDescribedBy}` : this.slotDefaultId, role: "dialog", "aria-modal": this.isSafariBrowser ? false : true, tabindex: "-1", "aria-flowto": this.slotDefaultId, class: {
12986
13087
  "duet-modal-overlay": true,
12987
13088
  "duet-theme-turva": this.theme === "turva",
12988
13089
  "duet-modal-active": this.open,
@@ -13018,6 +13119,10 @@ class DuetModal {
13018
13119
  "accessibleCloseLabelDefaults": [1, "accessible-close-label-default"],
13019
13120
  "accessibleCloseLabel": [1, "accessible-close-label"],
13020
13121
  "size": [1],
13122
+ "accessibleDescribedBy": [1, "accessible-described-by"],
13123
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
13124
+ "accessibleDetails": [1, "accessible-details"],
13125
+ "accessibleDescription": [1, "accessible-description"],
13021
13126
  "gutterSize": [1, "gutter-size"],
13022
13127
  "theme": [1025],
13023
13128
  "heading": [1],
@@ -13287,27 +13392,77 @@ var actionAdd={"title":"action-add","tags":"action add plus","svg":"<svg fill=\"
13287
13392
 
13288
13393
  var actionSubtract={"title":"action-subtract","tags":"action subtract minus remove delete cancel","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.75 12.788a.75.75 0 0 1 0-1.5h22.5a.75.75 0 0 1 0 1.5z\"/></svg>"};
13289
13394
 
13290
- const parseLocaleFloat = (str, locale) => {
13291
- // remove spaces and non-numeric characters
13292
- // "12 345,67€" -> "12345,67"
13293
- // "12,345.67€" -> "12,345.67"
13294
- str = str.replace(/\s+/g, "").replace(/[^0-9\.,]+/g, "");
13295
- switch (locale) {
13296
- case "fi-FI":
13297
- case "sv-SE":
13298
- // "12345,67" -> "12345.67"
13299
- str = str.replace(",", ".");
13300
- break;
13301
- case "en-US":
13302
- case "en-GB":
13303
- // "12,345.67" -> "12345.67"
13304
- str = str.replace(/,/g, "");
13305
- break;
13306
- default:
13307
- throw new TypeError(`Unrecognised locale: ${locale}`);
13308
- }
13309
- return parseFloat(str);
13310
- };
13395
+ /**
13396
+ * function that takes a string value or number and looks for any character resembling a minus,
13397
+ * it will then replace it with a hypen-minus and return the parseFloat value of that string
13398
+ * it will string / number cast the value to a number and return that number
13399
+ * known issues: if a negative number is indicated with other characters than a "minus like" character, it will throw
13400
+ * - an example is that some locales use (number) as an indicator for negative values instead of -number
13401
+ */
13402
+ function SafeParseFloat(value, locale) {
13403
+ let results;
13404
+ if (typeof value === "string") {
13405
+ //the minuses are NOT the same characters, they differ in unicode for some languages
13406
+ // "", "−", "–", and "—"
13407
+ let convertedMinus = value.replace("−", "-").replace("‐", "-").replace("−", "-").replace("–", "-").replace("—", "-");
13408
+ if (locale) {
13409
+ convertedMinus = ConvertToEnUS(convertedMinus, locale, false);
13410
+ }
13411
+ // replace all possible spaces from the string
13412
+ convertedMinus = convertedMinus.replace(/\s+/g, "");
13413
+ convertedMinus = convertedMinus.replace(/(?!^-?\d*\.{0,1}\d+$)/g, "");
13414
+ /*
13415
+ example: https://regex101.com/r/np7FqS/1
13416
+ /(?!^-?\d*\.{0,1}\d+$)/g
13417
+ Negative Lookahead (?!^-?\d*\.{0,1}\d+$)
13418
+ Assert that the Regex below does not match
13419
+ ^ asserts position at start of a line
13420
+ - matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
13421
+ ? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
13422
+ \d matches a digit (equivalent to [0-9])
13423
+ * matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
13424
+ \. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
13425
+ {0,1} matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
13426
+ \d matches a digit (equivalent to [0-9])
13427
+ + matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
13428
+ $ asserts position at the end of a line
13429
+ Global pattern flags
13430
+ g modifier: global. All matches (don't return after first match)
13431
+ m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
13432
+ */
13433
+ results = parseFloat(convertedMinus);
13434
+ }
13435
+ if (typeof value === "number") {
13436
+ results = parseFloat(String(value));
13437
+ }
13438
+ if (!isNaN(Number(results))) {
13439
+ return Number(results);
13440
+ }
13441
+ if (value === null || value === undefined) {
13442
+ return null;
13443
+ }
13444
+ throw new Error("Invalid value passed to SafeParseFloat");
13445
+ }
13446
+ // string conversion function that takes a locale and coverts decimal indicator to en-US indicator
13447
+ // and takes the thousand separator for the given locale and transforms that to the en-US separator
13448
+ function ConvertToEnUS(value, locale, replaceThousands = false) {
13449
+ let replacedValue;
13450
+ const localeSeparator = new Intl.NumberFormat(locale).format(1 / 2).replace(/[0-9]/g, "");
13451
+ const enUSSeparator = new Intl.NumberFormat("en-US").format(1 / 2).replace(/[0-9]/g, "");
13452
+ const thousandSeparator = new Intl.NumberFormat(locale).format(1000).replace(/[0-9]/g, "");
13453
+ const enUSThousandSeparator = new Intl.NumberFormat("en-US").format(1000).replace(/[0-9]/g, "");
13454
+ // double conversions to avoid ,->. and .->, at the same time resulting in a double conversion
13455
+ replacedValue = value.replace(localeSeparator, "DECIMALSEPARATOR");
13456
+ if (replaceThousands) {
13457
+ replacedValue = replacedValue.replace(thousandSeparator, "THOUSANDSEPARATOR");
13458
+ }
13459
+ else {
13460
+ replacedValue = replacedValue.replace(thousandSeparator, "");
13461
+ }
13462
+ replacedValue = replacedValue.replace("DECIMALSEPARATOR", enUSSeparator);
13463
+ replacedValue = replacedValue.replace("THOUSANDSEPARATOR", enUSThousandSeparator);
13464
+ return replacedValue;
13465
+ }
13311
13466
  const roundTo = (val, multiple) => Math.round(val / multiple) * multiple;
13312
13467
  const clamp = (val, min, max) => Math.min(Math.max(val, min), max);
13313
13468
 
@@ -13336,6 +13491,18 @@ class DuetNumberInput {
13336
13491
  * Unit for the number input.
13337
13492
  */
13338
13493
  this.unit = getLocale(this.language).money;
13494
+ /**
13495
+ * Details of the component
13496
+ */
13497
+ this.accessibleDetails = undefined;
13498
+ /**
13499
+ * String of id's that indicate alternative labels elements
13500
+ */
13501
+ this.accessibleLabelledBy = undefined;
13502
+ /**
13503
+ * Aria description the button
13504
+ */
13505
+ this.accessibleDescription = undefined;
13339
13506
  /**
13340
13507
  * Defaults for accessibleLive
13341
13508
  * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
@@ -13471,7 +13638,7 @@ class DuetNumberInput {
13471
13638
  this.handleChange = (ev) => {
13472
13639
  const input = ev.target;
13473
13640
  if (input && input.value) {
13474
- let value = this.cleanValue(input.value);
13641
+ let value = SafeParseFloat(input.value, this.locale);
13475
13642
  // Make sure that everything works if the user clears the input and
13476
13643
  // starts typing non-numeric characters.
13477
13644
  if (isNaN(value) || value == null) {
@@ -13481,7 +13648,7 @@ class DuetNumberInput {
13481
13648
  this.duetInput.emit({
13482
13649
  component: "duet-number-input",
13483
13650
  originalEvent: ev,
13484
- value: this.cleanValue(this.value).toString(),
13651
+ value: SafeParseFloat(this.value, this.locale).toString(),
13485
13652
  valueAsNumber: value,
13486
13653
  });
13487
13654
  }
@@ -13502,30 +13669,29 @@ class DuetNumberInput {
13502
13669
  if (input.value) {
13503
13670
  // On blur we want to make sure that the user input is between the min and max values,
13504
13671
  // and also round it up or down to the nearest step.
13505
- let value = this.cleanValue(input.value);
13672
+ let value = SafeParseFloat(input.value, this.locale);
13506
13673
  if (this.rounding) {
13507
13674
  value = roundTo(value, this.step);
13508
13675
  }
13509
13676
  value = clamp(value, this.min, this.max);
13510
- if (value !== this.cleanValue(this.value) || value !== this.cleanValue(this.focusedValue)) {
13677
+ if (value !== SafeParseFloat(this.value, this.locale) ||
13678
+ value !== SafeParseFloat(this.focusedValue, this.locale)) {
13511
13679
  this.setValue(value);
13512
13680
  this.emitChange(ev);
13513
13681
  }
13514
13682
  }
13515
- else {
13516
- this.duetChange.emit({
13517
- originalEvent: ev,
13518
- value: null,
13519
- valueAsNumber: null,
13520
- component: "duet-number-input",
13521
- });
13522
- }
13683
+ this.duetChange.emit({
13684
+ originalEvent: ev,
13685
+ value: null,
13686
+ valueAsNumber: null,
13687
+ component: "duet-number-input",
13688
+ });
13523
13689
  };
13524
13690
  /**
13525
13691
  * Local methods.
13526
13692
  */
13527
13693
  this.emitChange = (ev) => {
13528
- const currentValue = this.cleanValue(this.value);
13694
+ const currentValue = SafeParseFloat(this.value, this.locale);
13529
13695
  this.duetChange.emit({
13530
13696
  originalEvent: ev,
13531
13697
  value: currentValue.toString(),
@@ -13533,10 +13699,6 @@ class DuetNumberInput {
13533
13699
  component: "duet-number-input",
13534
13700
  });
13535
13701
  };
13536
- this.cleanValue = (value) => {
13537
- // Returns a number that can be used in calculations.
13538
- return value ? parseLocaleFloat(value, this.locale) : null;
13539
- };
13540
13702
  this.localizeValue = (value) => {
13541
13703
  // Returns a localized string that can be used as input value.
13542
13704
  return value.toLocaleString(this.locale);
@@ -13553,13 +13715,13 @@ class DuetNumberInput {
13553
13715
  if (ev) {
13554
13716
  ev.preventDefault();
13555
13717
  }
13556
- const currentValue = this.cleanValue(this.value);
13718
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
13557
13719
  // Only fire change event when necessary
13558
- if (currentValue === this.max) {
13720
+ if (cleanedValue === this.max) {
13559
13721
  return;
13560
13722
  }
13561
13723
  // in cases where no value set, incrementing should go to min
13562
- let newValue = currentValue == null ? this.min : currentValue + this.step;
13724
+ let newValue = cleanedValue == null ? this.min : cleanedValue + this.step;
13563
13725
  // handle cases where value is not multiple of step
13564
13726
  // e.g. if someone enters 199, with a step of 100, add should go to 200
13565
13727
  // and if someone enters 101, add should also go to 200
@@ -13567,8 +13729,8 @@ class DuetNumberInput {
13567
13729
  const adjustment = newValue % this.step;
13568
13730
  newValue -= adjustment;
13569
13731
  }
13570
- newValue = clamp(newValue, this.min, this.max);
13571
- this.value = this.localizeValue(newValue);
13732
+ const clampedValue = clamp(newValue, this.min, this.max);
13733
+ this.value = this.localizeValue(clampedValue);
13572
13734
  this.emitChange(ev);
13573
13735
  };
13574
13736
  this.subtract = (ev) => {
@@ -13577,7 +13739,7 @@ class DuetNumberInput {
13577
13739
  if (ev) {
13578
13740
  ev.preventDefault();
13579
13741
  }
13580
- const currentValue = this.cleanValue(this.value);
13742
+ const currentValue = SafeParseFloat(this.value, this.locale);
13581
13743
  // Only fire change event when necessary.
13582
13744
  if (currentValue === this.min) {
13583
13745
  return;
@@ -13602,7 +13764,7 @@ class DuetNumberInput {
13602
13764
  inheritGlobalTheme(this);
13603
13765
  // Format the number value to a localeString initially.
13604
13766
  if (this.value) {
13605
- this.value = this.localizeValue(parseLocaleFloat(this.value, this.locale));
13767
+ this.value = this.localizeValue(SafeParseFloat(this.value, this.locale));
13606
13768
  }
13607
13769
  }
13608
13770
  /**
@@ -13617,7 +13779,7 @@ class DuetNumberInput {
13617
13779
  this.duetInputElement.value = "";
13618
13780
  }
13619
13781
  formatAnnouncement() {
13620
- const current = this.cleanValue(this.value);
13782
+ const current = SafeParseFloat(this.value, this.locale);
13621
13783
  if (current == null) {
13622
13784
  return "";
13623
13785
  }
@@ -13630,12 +13792,12 @@ class DuetNumberInput {
13630
13792
  render() {
13631
13793
  const identifier = this.identifier || this.inputId;
13632
13794
  const maxlength = `${this.localizeValue(this.max)} ${this.unit}`.length;
13633
- const cleanedValue = this.cleanValue(this.value);
13795
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
13634
13796
  return (hAsync(Host, { class: {
13635
13797
  "duet-theme-turva": this.theme === "turva",
13636
13798
  "duet-expand": this.expand,
13637
13799
  "duet-m-0": this.margin === "none",
13638
- } }, hAsync("div", { class: "duet-number-container" }, hAsync("duet-input", { ref: input => (this.duetInputElement = input), onDuetChange: event => this.handleChange(event), onDuetFocus: this.handleFocus, onDuetBlur: event => this.handleBlur(event), onKeyDown: event => this.handleKeyDown(event), label: this.label, value: this.value ? `${this.value} ${this.unit}` : "", error: this.error, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": cleanedValue != null ? cleanedValue : "", maxlength: maxlength, name: this.name, component: "number", required: this.required, disabled: this.disabled, role: this.role, labelHidden: this.labelHidden, tooltip: this.tooltip, identifier: identifier, theme: this.theme, margin: "none", expand: true, numericKeyboard: true, autoComplete: "off", type: "text", accessibleActiveDescendant: this.accessibleActiveDescendant, accessibleControls: this.accessibleControls, accessibleOwns: this.accessibleOwns, accessibleDescribedBy: this.accessibleDescribedBy }, hAsync("div", { class: { "duet-number-buttons": true, "duet-no-label": this.labelHidden } }, hAsync("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue == null || cleanedValue === this.min ? "true" : "false", class: "duet-number-button duet-number-button-subtract", onClick: this.subtract, type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleSubtract, " ", this.step), hAsync("duet-icon", { icon: actionSubtract.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })), hAsync("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue === this.max ? "true" : "false", class: "duet-number-button duet-number-button-add", onClick: this.add, type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleAdd, " ", this.step), hAsync("duet-icon", { icon: actionAdd.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })))), this.accessibleLiveEnabled && (hAsync("duet-visually-hidden", { "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "all" }, this.formatAnnouncement())))));
13800
+ } }, hAsync("div", { class: "duet-number-container" }, hAsync("duet-input", { ref: input => (this.duetInputElement = input), onDuetChange: event => this.handleChange(event), onDuetFocus: this.handleFocus, onDuetBlur: event => this.handleBlur(event), onKeyDown: event => this.handleKeyDown(event), label: this.label, value: this.value ? `${this.value} ${this.unit}` : "", error: this.error, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": cleanedValue != null ? cleanedValue : "", maxlength: maxlength, name: this.name, component: "number", required: this.required, disabled: this.disabled, role: this.role, labelHidden: this.labelHidden, tooltip: this.tooltip, identifier: identifier, theme: this.theme, margin: "none", expand: true, numericKeyboard: true, autoComplete: "off", type: "text", accessibleActiveDescendant: this.accessibleActiveDescendant, accessibleLabelledBy: this.accessibleLabelledBy, accessibleDescription: this.accessibleDescription, accessibleDetails: this.accessibleDetails, accessibleControls: this.accessibleControls, accessibleOwns: this.accessibleOwns, accessibleDescribedBy: this.accessibleDescribedBy }, hAsync("div", { class: { "duet-number-buttons": true, "duet-no-label": this.labelHidden } }, hAsync("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue == null || cleanedValue === this.min ? "true" : "false", class: "duet-number-button duet-number-button-subtract", onClick: this.subtract, type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleSubtract, " ", this.step), hAsync("duet-icon", { icon: actionSubtract.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })), hAsync("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue === this.max ? "true" : "false", class: "duet-number-button duet-number-button-add", onClick: this.add, type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleAdd, " ", this.step), hAsync("duet-icon", { icon: actionAdd.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })))), this.accessibleLiveEnabled && (hAsync("duet-visually-hidden", { "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "all" }, this.formatAnnouncement())))));
13639
13801
  }
13640
13802
  get element() { return getElement(this); }
13641
13803
  static get style() { return duetNumberInputCss; }
@@ -13648,6 +13810,9 @@ class DuetNumberInput {
13648
13810
  "unit": [1],
13649
13811
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
13650
13812
  "accessibleControls": [1, "accessible-controls"],
13813
+ "accessibleDetails": [1, "accessible-details"],
13814
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
13815
+ "accessibleDescription": [1, "accessible-description"],
13651
13816
  "accessibleOwns": [1, "accessible-owns"],
13652
13817
  "accessibleDescribedBy": [1, "accessible-described-by"],
13653
13818
  "accessibleLiveDefaults": [1, "accessible-live-default"],
@@ -13721,6 +13886,22 @@ class DuetPagination {
13721
13886
  * Variation of the paginator (compact and default supported)
13722
13887
  */
13723
13888
  this.variation = "default";
13889
+ /**
13890
+ * Described By id
13891
+ */
13892
+ this.accessibleDescribedBy = undefined;
13893
+ /**
13894
+ * Details of the component
13895
+ */
13896
+ this.accessibleDetails = undefined;
13897
+ /**
13898
+ * String of id's that indicate alternative labels elements
13899
+ */
13900
+ this.accessibleLabelledBy = undefined;
13901
+ /**
13902
+ * Aria description the button
13903
+ */
13904
+ this.accessibleDescription = undefined;
13724
13905
  /**
13725
13906
  * Default pagination labels
13726
13907
  */
@@ -13814,7 +13995,7 @@ class DuetPagination {
13814
13995
  type: "page",
13815
13996
  originalEvent: ev,
13816
13997
  });
13817
- }, 500);
13998
+ }, 100);
13818
13999
  // this will return the entered number, or the current page if the user presses enter
13819
14000
  this.getEnteredNumber = debounce(ev => {
13820
14001
  this.emitPageEvent(ev, this.numbersStore);
@@ -13860,6 +14041,7 @@ class DuetPagination {
13860
14041
  e.preventDefault();
13861
14042
  e.stopPropagation();
13862
14043
  this.current = this.current + dir;
14044
+ this.emitPageEvent(e);
13863
14045
  }
13864
14046
  //handle a11y keyboard navigation events
13865
14047
  async onKeyboardDown(e) {
@@ -13913,12 +14095,14 @@ class DuetPagination {
13913
14095
  e.preventDefault();
13914
14096
  this.internalSectionIndex = 0;
13915
14097
  this.current = 1;
14098
+ this.emitPageEvent(e);
13916
14099
  }
13917
14100
  //handles click on the jump (total) button
13918
14101
  jumpToEnd(e) {
13919
14102
  e.preventDefault();
13920
14103
  this.internalSectionIndex = this.totalPages / this.take - 1;
13921
14104
  this.current = this.totalPages;
14105
+ this.emitPageEvent(e);
13922
14106
  }
13923
14107
  // render the individual page numbers
13924
14108
  renderPageNumbers() {
@@ -13949,7 +14133,7 @@ class DuetPagination {
13949
14133
  * Always the last one in the class.
13950
14134
  */
13951
14135
  render() {
13952
- return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("nav", { role: "navigation", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls, class: {
14136
+ return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("nav", { role: "navigation", "aria-labelledby": this.accessibleLabelledBy ? `${this.accessibleLabelledBy} ${this.listId}` : this.listId, "aria-describedby": this.accessibleDescribedBy ? `${this.accessibleDescribedBy} ${this.listId}` : this.listId, "aria-descriptions": this.accessibleDescription, "aria-details": this.accessibleDetails, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls, class: {
13953
14137
  "duet-pagination-nav": true,
13954
14138
  [`duet-pagination-variation-${this.variation}`]: true,
13955
14139
  } }, this.numbersStore !== "" && (hAsync("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.accessibleLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" }, hAsync("duet-badge", null, "jump to page : ", this.numbersStore))), hAsync("ol", { id: this.listId, class: {
@@ -13976,6 +14160,10 @@ class DuetPagination {
13976
14160
  "theme": [1025],
13977
14161
  "jumpString": [1, "jump-string"],
13978
14162
  "variation": [1],
14163
+ "accessibleDescribedBy": [1, "accessible-described-by"],
14164
+ "accessibleDetails": [1, "accessible-details"],
14165
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
14166
+ "accessibleDescription": [1, "accessible-description"],
13979
14167
  "accessibleLabelsDefaults": [16],
13980
14168
  "accessibleLabels": [16],
13981
14169
  "take": [1026],
@@ -14078,6 +14266,18 @@ class DuetProgress {
14078
14266
  */
14079
14267
  this.progressId = createID("DuetProgress");
14080
14268
  this.progressLabelId = createID("DuetProgressLabel");
14269
+ /**
14270
+ * Aria Details of the component
14271
+ */
14272
+ this.accessibleDetails = undefined;
14273
+ /**
14274
+ * String of id's that indicate alternative labels elements
14275
+ */
14276
+ this.accessibleLabelledBy = undefined;
14277
+ /**
14278
+ * Aria description the button
14279
+ */
14280
+ this.accessibleDescription = undefined;
14081
14281
  /**
14082
14282
  * Defaults for accessibleLabel
14083
14283
  */
@@ -14123,7 +14323,7 @@ class DuetProgress {
14123
14323
  "duet-progress-start": this.progress === 0,
14124
14324
  "duet-progress-inprogress": this.progress < 99 && this.progress !== 0,
14125
14325
  "duet-theme-turva": this.theme === "turva",
14126
- } }, hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.progressLabelId }, this.progress !== 0 && (hAsync("span", null, this.accessibleLabel, ", ", this.accessibleLabelUpload[this.progress < 99 ? 1 : 0])))), this.caption && (hAsync("div", { class: "duet-progress-caption" }, hAsync("span", null, this.caption))), hAsync("progress", { id: this.progressLabelId, "aria-describedby": this.accessibleDescribedBy, role: "progressbar", value: this.progress, max: "100", "aria-valuemin": "0", "aria-valuemax": "100" }, hAsync("div", { class: "progress-bar" }, hAsync("span", { style: { width: `${this.progress}%;` } }, "Progress: ", this.progress, "%"))))));
14326
+ } }, hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.progressLabelId }, this.progress !== 0 && (hAsync("span", null, this.accessibleLabel, ", ", this.accessibleLabelUpload[this.progress < 99 ? 1 : 0])))), this.caption && (hAsync("div", { class: "duet-progress-caption" }, hAsync("span", null, this.caption))), hAsync("progress", { id: this.progressLabelId, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, role: "progressbar", value: this.progress, max: "100", "aria-valuemin": "0", "aria-valuemax": "100" }, hAsync("div", { class: "progress-bar" }, hAsync("span", { style: { width: `${this.progress}%;` } }, "Progress: ", this.progress, "%"))))));
14127
14327
  }
14128
14328
  get element() { return getElement(this); }
14129
14329
  static get style() { return duetProgressCss; }
@@ -14132,6 +14332,9 @@ class DuetProgress {
14132
14332
  "$tagName$": "duet-progress",
14133
14333
  "$members$": {
14134
14334
  "accessibleDescribedBy": [1, "accessible-described-by"],
14335
+ "accessibleDetails": [1, "accessible-details"],
14336
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
14337
+ "accessibleDescription": [1, "accessible-description"],
14135
14338
  "accessibleLabel": [1, "accessible-label"],
14136
14339
  "accessibleLabelUploadDefaults": [1, "accessible-label-upload-defaults"],
14137
14340
  "accessibleLabelUpload": [1, "accessible-label-upload"],
@@ -14158,6 +14361,18 @@ class DuetRadio {
14158
14361
  * Own Properties.
14159
14362
  */
14160
14363
  this.radioId = createID("DuetRadio");
14364
+ /**
14365
+ * Aria Details of the component
14366
+ */
14367
+ this.accessibleDetails = undefined;
14368
+ /**
14369
+ * String of id's that indicate alternative labels elements
14370
+ */
14371
+ this.accessibleLabelledBy = undefined;
14372
+ /**
14373
+ * Aria description the button
14374
+ */
14375
+ this.accessibleDescription = undefined;
14161
14376
  /**
14162
14377
  * Controls the margin of the component.
14163
14378
  */
@@ -14246,7 +14461,7 @@ class DuetRadio {
14246
14461
  horizontal: this.groupDirection === "horizontal" && !this.groupResponsive,
14247
14462
  "horizontal-responsive": this.groupDirection === "horizontal" && this.groupResponsive,
14248
14463
  "duet-m-0": this.margin === "none",
14249
- } }, hAsync("div", { class: { "duet-radio-container": true, "duet-theme-turva": this.theme === "turva" } }, hAsync("input", { type: "radio", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, tabindex: this.accessibleIndex, class: { "duet-radio": true, disabled: this.disabled || this.groupDisabled }, checked: this.checked, disabled: this.disabled || this.groupDisabled, required: this.required, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, role: this.role, name: this.name, id: identifier, ref: input => (this.nativeInput = input) }), hAsync("label", { class: "duet-label", htmlFor: identifier }, hAsync("span", null, this.label)))));
14464
+ } }, hAsync("div", { class: { "duet-radio-container": true, "duet-theme-turva": this.theme === "turva" } }, hAsync("input", { type: "radio", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, tabindex: this.accessibleIndex, class: { "duet-radio": true, disabled: this.disabled || this.groupDisabled }, checked: this.checked, disabled: this.disabled || this.groupDisabled, required: this.required, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, role: this.role, name: this.name, id: identifier, ref: input => (this.nativeInput = input) }), hAsync("label", { class: "duet-label", htmlFor: identifier }, hAsync("span", null, this.label)))));
14250
14465
  }
14251
14466
  get element() { return getElement(this); }
14252
14467
  static get style() { return duetRadioCss; }
@@ -14255,6 +14470,9 @@ class DuetRadio {
14255
14470
  "$tagName$": "duet-radio",
14256
14471
  "$members$": {
14257
14472
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
14473
+ "accessibleDetails": [1, "accessible-details"],
14474
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
14475
+ "accessibleDescription": [1, "accessible-description"],
14258
14476
  "accessibleIndex": [1, "accessible-index"],
14259
14477
  "margin": [1],
14260
14478
  "accessibleControls": [1, "accessible-controls"],
@@ -14695,15 +14913,15 @@ class DuetRangeStepper {
14695
14913
  this.handleStepClick(e);
14696
14914
  };
14697
14915
  }
14698
- watchStateHandler(newValue) {
14699
- if (newValue === 1) {
14916
+ watchStepIndexStateHandler(newValue) {
14917
+ if (newValue <= 1) {
14700
14918
  this.leftBnRef.setAttribute("disabled", "");
14701
14919
  this.rightBnRef.focus();
14702
14920
  }
14703
14921
  else {
14704
14922
  this.leftBnRef.removeAttribute("disabled");
14705
14923
  }
14706
- if (newValue === this.total / this.stepSize) {
14924
+ if (newValue >= this.total / this.stepSize) {
14707
14925
  this.rightBnRef.setAttribute("disabled", "");
14708
14926
  this.leftBnRef.focus();
14709
14927
  }
@@ -14711,12 +14929,20 @@ class DuetRangeStepper {
14711
14929
  this.rightBnRef.removeAttribute("disabled");
14712
14930
  }
14713
14931
  }
14932
+ watchStepSizeStateHandler(newValue, oldValue) {
14933
+ if (newValue !== oldValue) {
14934
+ if (this.stepIndex * newValue > this.total) {
14935
+ this.stepIndex = this.total / newValue;
14936
+ }
14937
+ }
14938
+ }
14714
14939
  handleStepClick(e) {
14940
+ const from = this.stepIndex * this.stepSize - this.stepSize;
14715
14941
  this.duetRangeStepUpdate.emit({
14716
14942
  originalEvent: e,
14717
14943
  component: "duet-range-stepper",
14718
- from: this.stepIndex * this.stepSize - this.stepSize,
14719
- to: this.stepIndex * this.stepSize,
14944
+ from: from,
14945
+ to: this.getTo(),
14720
14946
  index: this.stepIndex,
14721
14947
  });
14722
14948
  }
@@ -14724,7 +14950,7 @@ class DuetRangeStepper {
14724
14950
  inheritGlobalTheme(this);
14725
14951
  }
14726
14952
  componentDidLoad() {
14727
- this.watchStateHandler(this.stepIndex);
14953
+ this.watchStepIndexStateHandler(this.stepIndex);
14728
14954
  }
14729
14955
  increment(direction) {
14730
14956
  const newIndex = this.stepIndex + direction;
@@ -14732,20 +14958,28 @@ class DuetRangeStepper {
14732
14958
  this.stepIndex = 1;
14733
14959
  }
14734
14960
  else {
14735
- if (newIndex * this.stepSize <= this.total) {
14961
+ if (newIndex * this.stepSize < this.total + this.stepSize) {
14736
14962
  this.stepIndex = newIndex;
14737
14963
  }
14964
+ else if (newIndex * this.stepSize > this.total + this.stepSize) {
14965
+ this.stepIndex = Math.floor(this.total / this.stepSize);
14966
+ }
14738
14967
  }
14739
14968
  }
14969
+ getTo() {
14970
+ const to = this.stepIndex * this.stepSize;
14971
+ const result = to > this.total ? this.total : to;
14972
+ return result;
14973
+ }
14740
14974
  generateStepSize() {
14741
14975
  // this function uses this.stepIndex and this.range to generate a range of number like 1-100
14742
14976
  // this is used to generate the step size
14743
- let start = (this.stepIndex - 1) * this.stepSize;
14977
+ let start = Math.floor((this.stepIndex - 1) * this.stepSize);
14744
14978
  //easy fix for starting position
14745
14979
  if (start === 0) {
14746
14980
  start = 1;
14747
14981
  }
14748
- const end = this.stepIndex * this.stepSize;
14982
+ const end = Math.floor(this.stepIndex * this.stepSize);
14749
14983
  return this.ariaLabels.x_of_y
14750
14984
  .replace("{0}", String(start))
14751
14985
  .replace("{1}", String(end))
@@ -14783,7 +15017,8 @@ class DuetRangeStepper {
14783
15017
  }
14784
15018
  get element() { return getElement(this); }
14785
15019
  static get watchers() { return {
14786
- "stepIndex": ["watchStateHandler"]
15020
+ "stepIndex": ["watchStepIndexStateHandler"],
15021
+ "stepSize": ["watchStepSizeStateHandler"]
14787
15022
  }; }
14788
15023
  static get style() { return duetRangeStepperCss; }
14789
15024
  static get cmpMeta() { return {
@@ -15852,7 +16087,7 @@ class DuetTabGroup {
15852
16087
  }; }
15853
16088
  }
15854
16089
 
15855
- 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 .duet-table-action-row td:last-child{justify-self:end;padding-right:20px !important;white-space:nowrap}.duet-table-flattened tbody tr{display:grid;grid-template-columns:repeat(2, 1fr);grid-auto-rows:auto;gap:10px}.duet-table-flattened tbody tr.duet-table-action-row td:last-child::before{padding:0;content:\"\"}.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{grid-column:1/2;line-height:1.25}.duet-table-flattened td:not(:last-child){margin-bottom:16px !important}.duet-table-flattened td:first-child{grid-row:1;grid-column:1}.duet-table-flattened td:last-child{grid-row:1;grid-column:2}.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)}.duet-table-sortable tbody tr td:first-child,.duet-table-sortable thead tr th:first-child{padding:20px}.duet-table-sortable:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-sortable:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-actions table{table-layout:auto}.duet-table-actions thead th:last-child{width:1px;white-space:nowrap}";
16090
+ 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 .duet-table-action-row td:last-child{justify-self:end;padding-right:20px !important;white-space:nowrap}.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)}.duet-table-sortable tbody tr td:first-child,.duet-table-sortable thead tr th:first-child{padding:20px}.duet-table-sortable:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-sortable:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-actions table{table-layout:auto}.duet-table-actions thead th:last-child{width:1px;white-space:nowrap}.duet-editable-table-table.duet-table-flattened tr{display:grid;grid-template-columns:repeat(2, 1fr);grid-auto-rows:auto;gap:10px}.duet-editable-table-table.duet-table-flattened tr.duet-table-action-row td:last-child::before{padding:0;content:\"\"}.duet-editable-table-table.duet-table-flattened td{grid-column:1/2}.duet-editable-table-table.duet-table-flattened td:first-child{grid-row:1;grid-column:1}.duet-editable-table-table.duet-table-flattened td:last-child{grid-row:1;grid-column:2}";
15856
16091
 
15857
16092
  // remove wrapping speech marks.
15858
16093
  // media query tokens are wrapped in speech marks,
@@ -16019,6 +16254,18 @@ class DuetTextarea {
16019
16254
  * Controls the margin of the component.
16020
16255
  */
16021
16256
  this.margin = "auto";
16257
+ /**
16258
+ * Aria Details of the component
16259
+ */
16260
+ this.accessibleDetails = undefined;
16261
+ /**
16262
+ * String of id's that indicate alternative labels elements
16263
+ */
16264
+ this.accessibleLabelledBy = undefined;
16265
+ /**
16266
+ * Aria description the button
16267
+ */
16268
+ this.accessibleDescription = undefined;
16022
16269
  /**
16023
16270
  * Theme of the textarea.
16024
16271
  */
@@ -16162,7 +16409,9 @@ class DuetTextarea {
16162
16409
  "duet-label-hidden": this.labelHidden,
16163
16410
  "duet-input-top-caption-shown": this.isCaptionVisible,
16164
16411
  "has-error": !!this.error,
16165
- } }, hAsync("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (hAsync("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (hAsync("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), hAsync("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (hAsync("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), hAsync("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), hAsync("duet-grid", { alignment: "stretch" }, hAsync("duet-grid-item", { margin: "none", fill: true }, hAsync("div", { class: "duet-textarea-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && hAsync("span", null, this.error))), hAsync("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (hAsync(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))))));
16412
+ } }, hAsync("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (hAsync("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (hAsync("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), hAsync("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (hAsync("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), hAsync("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy
16413
+ ? `${this.labelId} ${this.errorId} ${this.accessibleLabelledBy}`
16414
+ : `${this.labelId} ${this.errorId} `, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), hAsync("duet-grid", { alignment: "stretch" }, hAsync("duet-grid-item", { margin: "none", fill: true }, hAsync("div", { class: "duet-textarea-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && hAsync("span", null, this.error))), hAsync("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (hAsync(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))))));
16166
16415
  }
16167
16416
  get element() { return getElement(this); }
16168
16417
  static get watchers() { return {
@@ -16177,6 +16426,9 @@ class DuetTextarea {
16177
16426
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
16178
16427
  "accessibleAutocomplete": [1, "accessible-autocomplete"],
16179
16428
  "accessibleControls": [1, "accessible-controls"],
16429
+ "accessibleDetails": [1, "accessible-details"],
16430
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
16431
+ "accessibleDescription": [1, "accessible-description"],
16180
16432
  "accessibleOwns": [1, "accessible-owns"],
16181
16433
  "accessibleDescribedBy": [1, "accessible-described-by"],
16182
16434
  "theme": [1025],
@@ -16226,6 +16478,18 @@ class DuetToggle {
16226
16478
  * Controls the margin of the component.
16227
16479
  */
16228
16480
  this.margin = "auto";
16481
+ /**
16482
+ * Aria Details of the component
16483
+ */
16484
+ this.accessibleDetails = undefined;
16485
+ /**
16486
+ * String of id's that indicate alternative labels elements
16487
+ */
16488
+ this.accessibleLabelledBy = undefined;
16489
+ /**
16490
+ * Aria description the button
16491
+ */
16492
+ this.accessibleDescription = undefined;
16229
16493
  /**
16230
16494
  * Label for the toggle.
16231
16495
  */
@@ -16287,7 +16551,7 @@ class DuetToggle {
16287
16551
  return (hAsync(Host, { onClick: this.disabled ? undefined : this.onClick, class: { "duet-m-0": this.margin === "none" } }, hAsync("div", { class: {
16288
16552
  "duet-toggle": true,
16289
16553
  "duet-theme-turva": this.theme === "turva",
16290
- } }, hAsync("duet-label", { theme: this.theme, for: identifier }, this.label), hAsync("label", { class: "duet-switch", htmlFor: identifier }, hAsync("input", { type: "checkbox", value: this.value, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, id: identifier, role: this.role, name: this.name, checked: this.checked, required: this.required, disabled: this.disabled, ref: input => (this.nativeInput = input) }), hAsync("div", { class: "duet-slider" })))));
16554
+ } }, hAsync("duet-label", { theme: this.theme, for: identifier }, this.label), hAsync("label", { class: "duet-switch", htmlFor: identifier }, hAsync("input", { type: "checkbox", value: this.value, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, id: identifier, role: this.role, name: this.name, checked: this.checked, required: this.required, disabled: this.disabled, ref: input => (this.nativeInput = input) }), hAsync("div", { class: "duet-slider" })))));
16291
16555
  }
16292
16556
  get element() { return getElement(this); }
16293
16557
  static get watchers() { return {
@@ -16304,6 +16568,9 @@ class DuetToggle {
16304
16568
  "accessibleControls": [1, "accessible-controls"],
16305
16569
  "accessibleOwns": [1, "accessible-owns"],
16306
16570
  "accessibleDescribedBy": [1, "accessible-described-by"],
16571
+ "accessibleDetails": [1, "accessible-details"],
16572
+ "accessibleLabelledBy": [1, "accessible-labelled-by"],
16573
+ "accessibleDescription": [1, "accessible-description"],
16307
16574
  "label": [1],
16308
16575
  "required": [4],
16309
16576
  "disabled": [516],
@@ -18926,7 +19193,7 @@ const templateWindows = new Map, createHydrateBuildId = () => {
18926
19193
  }, commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g, getCssSelectors = e => {
18927
19194
  SELECTORS.all.length = SELECTORS.tags.length = SELECTORS.classNames.length = SELECTORS.ids.length = SELECTORS.attrs.length = 0;
18928
19195
  const t = (e = e.replace(/\./g, " .").replace(/\#/g, " #").replace(/\[/g, " [").replace(/\>/g, " > ").replace(/\+/g, " + ").replace(/\~/g, " ~ ").replace(/\*/g, " * ").replace(/\:not\((.*?)\)/g, " ")).split(" ");
18929
- for (let e = 0, r = t.length; e < r; e++) t[e] = t[e].split(":")[0], 0 !== t[e].length && ("." === t[e].charAt(0) ? SELECTORS.classNames.push(t[e].substr(1)) : "#" === t[e].charAt(0) ? SELECTORS.ids.push(t[e].substr(1)) : "[" === t[e].charAt(0) ? (t[e] = t[e].substr(1).split("=")[0].split("]")[0].trim(),
19196
+ for (let e = 0, r = t.length; e < r; e++) t[e] = t[e].split(":")[0], 0 !== t[e].length && ("." === t[e].charAt(0) ? SELECTORS.classNames.push(t[e].slice(1)) : "#" === t[e].charAt(0) ? SELECTORS.ids.push(t[e].slice(1)) : "[" === t[e].charAt(0) ? (t[e] = t[e].slice(1).split("=")[0].split("]")[0].trim(),
18930
19197
  SELECTORS.attrs.push(t[e].toLowerCase())) : /[a-z]/g.test(t[e].charAt(0)) && SELECTORS.tags.push(t[e].toLowerCase()));
18931
19198
  return SELECTORS.classNames = SELECTORS.classNames.sort(((e, t) => e.length < t.length ? -1 : e.length > t.length ? 1 : 0)),
18932
19199
  SELECTORS;