@duetds/components 6.11.1 → 7.0.0

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 (674) hide show
  1. package/hydrate/index.js +479 -289
  2. package/lib/cjs/duet-action-button.cjs.entry.js +3 -3
  3. package/lib/cjs/duet-alert.cjs.entry.js +14 -2
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-banner.cjs.entry.js +3 -3
  6. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  7. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-button_2.cjs.entry.js +4 -4
  9. package/lib/cjs/duet-callout.cjs.entry.js +1 -1
  10. package/lib/cjs/duet-caption_4.cjs.entry.js +3 -3
  11. package/lib/cjs/duet-card.cjs.entry.js +3 -3
  12. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  13. package/lib/cjs/duet-checkmark.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-chip.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-collapsible.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-combobox.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-contact-card.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  21. package/lib/cjs/duet-divider_2.cjs.entry.js +3 -3
  22. package/lib/cjs/duet-editable-table_3.cjs.entry.js +75 -22
  23. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  24. package/lib/cjs/duet-fieldset.cjs.entry.js +3 -2
  25. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-header_2.cjs.entry.js +14 -9
  28. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-icon.cjs.entry.js +3 -3
  30. package/lib/cjs/duet-input_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  32. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +1 -1
  36. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-menu-bar.cjs.entry.js +3 -2
  38. package/lib/cjs/duet-modal.cjs.entry.js +6 -2
  39. package/lib/cjs/duet-multiselect.cjs.entry.js +23 -4
  40. package/lib/cjs/duet-nav.cjs.entry.js +1 -1
  41. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  42. package/lib/cjs/duet-number-input.cjs.entry.js +4 -1
  43. package/lib/cjs/duet-page-heading.cjs.entry.js +1 -1
  44. package/lib/cjs/duet-pagination_2.cjs.entry.js +1 -1
  45. package/lib/cjs/duet-popup-menu-item.cjs.entry.js +1 -1
  46. package/lib/cjs/duet-popup-menu.cjs.entry.js +4 -31
  47. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  48. package/lib/cjs/duet-promo-card.cjs.entry.js +3 -3
  49. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  50. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  51. package/lib/cjs/duet-scrollable_3.cjs.entry.js +1 -1
  52. package/lib/cjs/duet-section-layout.cjs.entry.js +1 -1
  53. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  54. package/lib/cjs/duet-shaped-image.cjs.entry.js +1 -1
  55. package/lib/cjs/duet-show-more.cjs.entry.js +1 -1
  56. package/lib/cjs/duet-slideout-lang.cjs.entry.js +1 -1
  57. package/lib/cjs/duet-slideout-link.cjs.entry.js +1 -1
  58. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +1 -1
  59. package/lib/cjs/duet-slideout-panel.cjs.entry.js +4 -4
  60. package/lib/cjs/duet-slideout.cjs.entry.js +4 -4
  61. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  62. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +1 -1
  63. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +1 -1
  64. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +1 -1
  65. package/lib/cjs/duet-submenu-bar.cjs.entry.js +1 -1
  66. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  67. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  68. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +1 -1
  69. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +1 -1
  70. package/lib/cjs/duet-toolbar-link.cjs.entry.js +1 -1
  71. package/lib/cjs/duet-toolbar.cjs.entry.js +1 -1
  72. package/lib/cjs/duet-tooltip-button_2.cjs.entry.js +92 -0
  73. package/lib/cjs/duet-tooltip.cjs.entry.js +33 -48
  74. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  75. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  76. package/lib/cjs/duet-upload-item.cjs.entry.js +5 -4
  77. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  78. package/lib/cjs/duet.cjs.js +2 -2
  79. package/lib/cjs/{floating-ui.dom.esm-3801794e.js → floating-ui.dom.esm-d537b048.js} +154 -159
  80. package/lib/cjs/{focus-utils-832cb087.js → focus-utils-6d4f01d9.js} +1 -1
  81. package/lib/cjs/{index-f9a10385.js → index-b7f668db.js} +1 -1
  82. package/lib/cjs/loader.cjs.js +2 -2
  83. package/lib/cjs/teleport-04ad16c2.js +88 -0
  84. package/lib/cjs/{token-utils-18a05118.js → token-utils-c1864408.js} +1 -1
  85. package/lib/cjs/{tokens.module-d30fb52a.js → tokens.module-5fe478ed.js} +0 -1
  86. package/lib/collection/collection-manifest.json +2 -1
  87. package/lib/collection/components/duet-action-button/duet-action-button.js +2 -2
  88. package/lib/collection/components/duet-alert/duet-alert.js +54 -2
  89. package/lib/collection/components/duet-button/duet-button.css +22 -1
  90. package/lib/collection/components/duet-button/duet-button.js +5 -5
  91. package/lib/collection/components/duet-caption/duet-caption.js +1 -1
  92. package/lib/collection/components/duet-card/duet-card.js +3 -3
  93. package/lib/collection/components/duet-checkbox/duet-checkbox.js +3 -3
  94. package/lib/collection/components/duet-chip/duet-chip.js +4 -4
  95. package/lib/collection/components/duet-choice/duet-choice.js +3 -3
  96. package/lib/collection/components/duet-collapsible/duet-collapsible.js +3 -3
  97. package/lib/collection/components/duet-combobox/duet-combobox.js +3 -3
  98. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +1 -1
  99. package/lib/collection/components/duet-date-picker/duet-date-picker.js +4 -4
  100. package/lib/collection/components/duet-divider/duet-divider.js +1 -1
  101. package/lib/collection/components/duet-editable-table/duet-editable-table.js +5 -5
  102. package/lib/collection/components/duet-empty-state/duet-empty-state.js +1 -1
  103. package/lib/collection/components/duet-fieldset/duet-fieldset.js +25 -1
  104. package/lib/collection/components/duet-footer/duet-footer.js +7 -7
  105. package/lib/collection/components/duet-grid/duet-grid.js +3 -3
  106. package/lib/collection/components/duet-header/duet-header.js +28 -23
  107. package/lib/collection/components/duet-heading/duet-heading.js +1 -1
  108. package/lib/collection/components/duet-hero/duet-hero.js +5 -5
  109. package/lib/collection/components/duet-icon/duet-icon.js +1 -1
  110. package/lib/collection/components/duet-input/duet-input.css +1 -1
  111. package/lib/collection/components/duet-input/duet-input.js +8 -8
  112. package/lib/collection/components/duet-label/duet-label.js +2 -2
  113. package/lib/collection/components/duet-layout/duet-layout.js +1 -1
  114. package/lib/collection/components/duet-list/duet-list.js +3 -3
  115. package/lib/collection/components/duet-logo/duet-logo.js +1 -1
  116. package/lib/collection/components/duet-menu-bar/duet-menu-bar.js +3 -2
  117. package/lib/collection/components/duet-modal/duet-modal.js +7 -3
  118. package/lib/collection/components/duet-multiselect/duet-multiselect.css +36 -0
  119. package/lib/collection/components/duet-multiselect/duet-multiselect.js +44 -7
  120. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +1 -1
  121. package/lib/collection/components/duet-number-input/duet-number-input.js +4 -4
  122. package/lib/collection/components/duet-pagination/duet-pagination.js +2 -2
  123. package/lib/collection/components/duet-paragraph/duet-paragraph.js +3 -3
  124. package/lib/collection/components/duet-popup-menu/duet-popup-menu.js +1 -1
  125. package/lib/collection/components/duet-popup-menu-item/duet-popup-menu-item.js +2 -2
  126. package/lib/collection/components/duet-radio/duet-radio.js +3 -3
  127. package/lib/collection/components/duet-range-slider/duet-range-slider.js +2 -2
  128. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +1 -1
  129. package/lib/collection/components/duet-select/duet-select.js +5 -5
  130. package/lib/collection/components/duet-show-more/duet-show-more.js +1 -1
  131. package/lib/collection/components/duet-slideout/duet-slideout.js +1 -1
  132. package/lib/collection/components/duet-spacer/duet-spacer.js +2 -2
  133. package/lib/collection/components/duet-spinner/duet-spinner.js +1 -1
  134. package/lib/collection/components/duet-step/duet-step.js +2 -2
  135. package/lib/collection/components/duet-stepper/duet-stepper.js +1 -1
  136. package/lib/collection/components/duet-tab-group/duet-tab-group.js +5 -5
  137. package/lib/collection/components/duet-table/duet-table.css +13 -11
  138. package/lib/collection/components/duet-table/duet-table.js +10 -1
  139. package/lib/collection/components/duet-textarea/duet-textarea.js +4 -4
  140. package/lib/collection/components/duet-toggle/duet-toggle.js +1 -1
  141. package/lib/collection/components/duet-tooltip/duet-tooltip-button.css +87 -0
  142. package/lib/collection/components/duet-tooltip/duet-tooltip-button.js +175 -0
  143. package/lib/collection/components/duet-tooltip/duet-tooltip-popup.css +2 -0
  144. package/lib/collection/components/duet-tooltip/duet-tooltip-popup.js +9 -12
  145. package/lib/collection/components/duet-tooltip/duet-tooltip.css +4 -61
  146. package/lib/collection/components/duet-tooltip/duet-tooltip.js +39 -48
  147. package/lib/collection/components/duet-upload/duet-upload.js +66 -32
  148. package/lib/collection/components/duet-upload/upload-item-header.js +6 -1
  149. package/lib/collection/components/duet-upload/upload-validators.js +19 -0
  150. package/lib/collection/components/duet-upload-item/duet-upload-item.js +5 -4
  151. package/lib/collection/utils/math.utils.js +3 -0
  152. package/lib/collection/utils/teleport.js +64 -10
  153. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  154. package/lib/dist-custom-elements/duet-alert.js +1 -1
  155. package/lib/dist-custom-elements/duet-badge.js +1 -1
  156. package/lib/dist-custom-elements/duet-banner.js +5 -5
  157. package/lib/dist-custom-elements/duet-breadcrumb.js +2 -2
  158. package/lib/dist-custom-elements/duet-breadcrumbs.js +2 -2
  159. package/lib/dist-custom-elements/duet-button.js +1 -1
  160. package/lib/dist-custom-elements/duet-callout.js +3 -3
  161. package/lib/dist-custom-elements/duet-caption.js +1 -1
  162. package/lib/dist-custom-elements/duet-card.js +4 -4
  163. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  164. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  165. package/lib/dist-custom-elements/duet-chip.js +2 -2
  166. package/lib/dist-custom-elements/duet-choice-group.js +17 -11
  167. package/lib/dist-custom-elements/duet-choice.js +5 -5
  168. package/lib/dist-custom-elements/duet-collapsible.js +2 -2
  169. package/lib/dist-custom-elements/duet-combobox.js +2 -2
  170. package/lib/dist-custom-elements/duet-contact-card.js +8 -8
  171. package/lib/dist-custom-elements/duet-cookie-consent.js +6 -6
  172. package/lib/dist-custom-elements/duet-date-picker.js +25 -19
  173. package/lib/dist-custom-elements/duet-divider.js +1 -1
  174. package/lib/dist-custom-elements/duet-editable-table.js +7 -7
  175. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  176. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  177. package/lib/dist-custom-elements/duet-footer.js +4 -4
  178. package/lib/dist-custom-elements/duet-grid-item.js +1 -1
  179. package/lib/dist-custom-elements/duet-grid.js +1 -1
  180. package/lib/dist-custom-elements/duet-header.js +20 -15
  181. package/lib/dist-custom-elements/duet-heading.js +1 -1
  182. package/lib/dist-custom-elements/duet-hero.js +9 -9
  183. package/lib/dist-custom-elements/duet-icon.js +1 -1
  184. package/lib/dist-custom-elements/duet-input.js +1 -1
  185. package/lib/dist-custom-elements/duet-label.js +1 -1
  186. package/lib/dist-custom-elements/duet-layout.js +1 -1
  187. package/lib/dist-custom-elements/duet-link.js +1 -1
  188. package/lib/dist-custom-elements/duet-list-item.js +1 -1
  189. package/lib/dist-custom-elements/duet-list.js +1 -1
  190. package/lib/dist-custom-elements/duet-logo.js +1 -1
  191. package/lib/dist-custom-elements/duet-menu-bar-button.js +2 -2
  192. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +2 -2
  193. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +2 -2
  194. package/lib/dist-custom-elements/duet-menu-bar-link.js +2 -2
  195. package/lib/dist-custom-elements/duet-menu-bar.js +4 -3
  196. package/lib/dist-custom-elements/duet-modal.js +11 -7
  197. package/lib/dist-custom-elements/duet-multiselect.js +44 -18
  198. package/lib/dist-custom-elements/duet-nav.js +1 -1
  199. package/lib/dist-custom-elements/duet-notification-drawer.js +4 -4
  200. package/lib/dist-custom-elements/duet-notification.js +2 -2
  201. package/lib/dist-custom-elements/duet-number-input.js +26 -17
  202. package/lib/dist-custom-elements/duet-page-heading.js +2 -2
  203. package/lib/dist-custom-elements/duet-pagination.js +7 -7
  204. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  205. package/lib/dist-custom-elements/duet-popup-menu-item.js +2 -2
  206. package/lib/dist-custom-elements/duet-popup-menu.js +3 -30
  207. package/lib/dist-custom-elements/duet-progress.js +1 -1
  208. package/lib/dist-custom-elements/duet-promo-card.js +4 -4
  209. package/lib/dist-custom-elements/duet-radio-group.js +17 -11
  210. package/lib/dist-custom-elements/duet-radio.js +1 -1
  211. package/lib/dist-custom-elements/duet-range-slider.js +3 -3
  212. package/lib/dist-custom-elements/duet-range-stepper.js +4 -4
  213. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  214. package/lib/dist-custom-elements/duet-section-layout.js +1 -1
  215. package/lib/dist-custom-elements/duet-select.js +1 -1
  216. package/lib/dist-custom-elements/duet-shaped-image.js +1 -1
  217. package/lib/dist-custom-elements/duet-show-more.js +5 -5
  218. package/lib/dist-custom-elements/duet-slideout-lang.js +2 -2
  219. package/lib/dist-custom-elements/duet-slideout-link.js +2 -2
  220. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +2 -2
  221. package/lib/dist-custom-elements/duet-slideout-panel.js +3 -3
  222. package/lib/dist-custom-elements/duet-slideout.js +3 -3
  223. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  224. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  225. package/lib/dist-custom-elements/duet-step.js +4 -4
  226. package/lib/dist-custom-elements/duet-stepper.js +2 -2
  227. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +2 -2
  228. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +2 -2
  229. package/lib/dist-custom-elements/duet-submenu-bar-link.js +2 -2
  230. package/lib/dist-custom-elements/duet-submenu-bar.js +2 -2
  231. package/lib/dist-custom-elements/duet-tab-group.js +27 -21
  232. package/lib/dist-custom-elements/duet-tab.js +1 -1
  233. package/lib/dist-custom-elements/duet-table.js +1 -1
  234. package/lib/dist-custom-elements/duet-textarea.js +21 -15
  235. package/lib/dist-custom-elements/duet-toggle.js +2 -2
  236. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +2 -2
  237. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +2 -2
  238. package/lib/dist-custom-elements/duet-toolbar-link.js +2 -2
  239. package/lib/dist-custom-elements/duet-toolbar.js +1 -1
  240. package/lib/dist-custom-elements/duet-tooltip-button.d.ts +11 -0
  241. package/lib/dist-custom-elements/duet-tooltip-button.js +9 -0
  242. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  243. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  244. package/lib/dist-custom-elements/duet-tray.js +4 -4
  245. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  246. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  247. package/lib/dist-custom-elements/duet-upload.js +80 -35
  248. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  249. package/lib/dist-custom-elements/index.js +1 -1
  250. package/lib/dist-custom-elements/{p-98bca605.js → p-19b04293.js} +1 -1
  251. package/lib/dist-custom-elements/{p-fc2fdeba.js → p-1fef65c4.js} +1 -1
  252. package/lib/dist-custom-elements/{p-b5568c37.js → p-20d8a7ab.js} +14 -13
  253. package/lib/dist-custom-elements/{p-b1c2af98.js → p-28facbdc.js} +2 -2
  254. package/lib/dist-custom-elements/{p-fa37a369.js → p-32a42529.js} +4 -4
  255. package/lib/dist-custom-elements/{p-95d44d0f.js → p-34d193a7.js} +1 -1
  256. package/lib/dist-custom-elements/p-371290d2.js +145 -0
  257. package/lib/dist-custom-elements/{p-09ac696c.js → p-47bc3fc6.js} +1 -1
  258. package/lib/dist-custom-elements/{p-74b72454.js → p-4fa0d10e.js} +3 -3
  259. package/lib/dist-custom-elements/{p-8badaab4.js → p-507ae246.js} +2 -2
  260. package/lib/dist-custom-elements/{p-4fb34519.js → p-591040e5.js} +1 -1
  261. package/lib/dist-custom-elements/p-63c149ab.js +86 -0
  262. package/lib/dist-custom-elements/{p-215e9694.js → p-66206ea5.js} +1 -1
  263. package/lib/dist-custom-elements/{p-48b731bc.js → p-80bd412e.js} +22 -16
  264. package/lib/dist-custom-elements/{p-5db7fd87.js → p-84003069.js} +5 -3
  265. package/lib/dist-custom-elements/{p-a8b46969.js → p-86f35893.js} +1 -1
  266. package/lib/{esm/floating-ui.dom.esm-37dc174a.js → dist-custom-elements/p-8adb9463.js} +154 -159
  267. package/lib/dist-custom-elements/{p-67064f22.js → p-8dbc5e4b.js} +1 -1
  268. package/lib/dist-custom-elements/{p-8319ca94.js → p-8e9d78b5.js} +1 -1
  269. package/lib/dist-custom-elements/{p-cb811b5c.js → p-91f98ca2.js} +5 -5
  270. package/lib/dist-custom-elements/{p-0d04d137.js → p-93609c40.js} +2 -2
  271. package/lib/dist-custom-elements/{p-841186f0.js → p-960b00e1.js} +2 -2
  272. package/lib/dist-custom-elements/{p-e41a8579.js → p-9fb22951.js} +2 -2
  273. package/lib/dist-custom-elements/{p-184261b3.js → p-a7cc7bd9.js} +2 -2
  274. package/lib/dist-custom-elements/p-b1fa6ee7.js +72 -0
  275. package/lib/dist-custom-elements/{p-7be4444a.js → p-b95006a5.js} +2 -2
  276. package/lib/dist-custom-elements/{p-217bb82f.js → p-c2a056b1.js} +2 -2
  277. package/lib/dist-custom-elements/{p-0c3282a0.js → p-c85f0028.js} +17 -11
  278. package/lib/dist-custom-elements/{p-05ab48bf.js → p-cbc43bac.js} +21 -7
  279. package/lib/dist-custom-elements/{p-1888263b.js → p-da75f5d9.js} +1 -1
  280. package/lib/dist-custom-elements/p-dd112690.js +273 -0
  281. package/lib/dist-custom-elements/{p-37f86174.js → p-de10f837.js} +45 -55
  282. package/lib/dist-custom-elements/{p-661e7864.js → p-de68431d.js} +1 -1
  283. package/lib/dist-custom-elements/p-e78bd379.js +87 -0
  284. package/lib/dist-custom-elements/{p-cd9b5f96.js → p-e8475b3c.js} +1 -1
  285. package/lib/dist-custom-elements/{p-3366d1ff.js → p-eb0475d3.js} +1 -1
  286. package/lib/dist-custom-elements/{p-841f9d02.js → p-f3ffb5b4.js} +2 -2
  287. package/lib/dist-custom-elements/{p-b7cc653b.js → p-f933f857.js} +1 -1
  288. package/lib/duet/duet.esm.js +1 -1
  289. package/lib/duet/duet.js +1 -1
  290. package/lib/duet/{p-d9886ef0.system.entry.js → p-01aaac6a.system.entry.js} +1 -1
  291. package/lib/duet/{p-a306b058.system.entry.js → p-01f3e23e.system.entry.js} +1 -1
  292. package/lib/duet/{p-c7f097e8.entry.js → p-02ce139d.entry.js} +1 -1
  293. package/lib/duet/p-02fa277e.system.entry.js +4 -0
  294. package/lib/duet/{p-2a14f9c7.system.entry.js → p-04dd24ca.system.entry.js} +1 -1
  295. package/lib/duet/p-05545e81.entry.js +4 -0
  296. package/lib/duet/{p-1ebe62cb.entry.js → p-07871336.entry.js} +1 -1
  297. package/lib/duet/{p-54589f3a.entry.js → p-090b0eb4.entry.js} +1 -1
  298. package/lib/duet/{p-5cc44de5.system.entry.js → p-0c3cfb88.system.entry.js} +1 -1
  299. package/lib/duet/{p-f3a4805a.entry.js → p-0ec7bc0d.entry.js} +1 -1
  300. package/lib/duet/{p-ff28d71a.entry.js → p-104758cf.entry.js} +1 -1
  301. package/lib/duet/{p-65bef373.entry.js → p-10b014f5.entry.js} +1 -1
  302. package/lib/duet/{p-1830770c.entry.js → p-1137a234.entry.js} +1 -1
  303. package/lib/duet/{p-3cfd5322.system.entry.js → p-11a22107.system.entry.js} +1 -1
  304. package/lib/duet/{p-933417e6.system.entry.js → p-125fff3c.system.entry.js} +1 -1
  305. package/lib/duet/{p-50180a44.system.entry.js → p-15c364ef.system.entry.js} +1 -1
  306. package/lib/duet/p-180b9ef7.entry.js +4 -0
  307. package/lib/duet/{p-09f48cb9.entry.js → p-1e2689a2.entry.js} +1 -1
  308. package/lib/duet/p-231e217b.entry.js +4 -0
  309. package/lib/duet/{p-fda4e4a4.system.entry.js → p-2362c81c.system.entry.js} +1 -1
  310. package/lib/duet/{p-05bfc8ff.system.entry.js → p-236348a6.system.entry.js} +1 -1
  311. package/lib/duet/{p-77cbe175.entry.js → p-26082482.entry.js} +1 -1
  312. package/lib/duet/{p-6910113f.entry.js → p-27831ad1.entry.js} +1 -1
  313. package/lib/duet/p-27cbcb00.system.entry.js +4 -0
  314. package/lib/duet/{p-9c464273.entry.js → p-28cbcde9.entry.js} +1 -1
  315. package/lib/duet/{p-f23c11c2.system.entry.js → p-2b90e0bf.system.entry.js} +1 -1
  316. package/lib/duet/{p-31562410.entry.js → p-2f8baf13.entry.js} +1 -1
  317. package/lib/duet/{p-34293dad.entry.js → p-2f8ff010.entry.js} +1 -1
  318. package/lib/duet/{p-305f20a0.system.entry.js → p-31f51b63.system.entry.js} +1 -1
  319. package/lib/duet/{p-8d288b4f.entry.js → p-3351f110.entry.js} +1 -1
  320. package/lib/duet/p-33620d03.js +4 -0
  321. package/lib/duet/p-3493bd62.entry.js +4 -0
  322. package/lib/duet/{p-59dde679.system.entry.js → p-361a40a6.system.entry.js} +1 -1
  323. package/lib/duet/{p-bea6e5e0.entry.js → p-399ae33f.entry.js} +1 -1
  324. package/lib/duet/{p-9bbda8a9.system.entry.js → p-3a48878a.system.entry.js} +1 -1
  325. package/lib/duet/{p-25aa9da5.entry.js → p-3addfa0b.entry.js} +1 -1
  326. package/lib/duet/{p-34e93067.system.entry.js → p-3bd38a60.system.entry.js} +1 -1
  327. package/lib/duet/{p-9b5f71df.entry.js → p-3bdaca53.entry.js} +1 -1
  328. package/lib/duet/{p-95dbb7e9.system.entry.js → p-3bf13db2.system.entry.js} +1 -1
  329. package/lib/duet/{p-daf609a8.entry.js → p-3ddc61bc.entry.js} +1 -1
  330. package/lib/duet/p-3e3f76cc.entry.js +4 -0
  331. package/lib/duet/{p-11090514.entry.js → p-407bc2e8.entry.js} +1 -1
  332. package/lib/duet/{p-58491286.entry.js → p-4525bb7b.entry.js} +1 -1
  333. package/lib/duet/p-45d92a24.system.js +4 -0
  334. package/lib/duet/{p-f9625065.system.entry.js → p-46ae0197.system.entry.js} +1 -1
  335. package/lib/duet/{p-15e3eca0.system.entry.js → p-4908aa39.system.entry.js} +1 -1
  336. package/lib/duet/p-491006e1.system.js +4 -0
  337. package/lib/duet/{p-617c03dc.system.entry.js → p-494e7691.system.entry.js} +1 -1
  338. package/lib/duet/{p-212651b5.system.entry.js → p-49e39bc1.system.entry.js} +1 -1
  339. package/lib/duet/p-4b3bef47.entry.js +4 -0
  340. package/lib/duet/{p-9180e7f5.system.entry.js → p-4b57b898.system.entry.js} +1 -1
  341. package/lib/duet/{p-4e6ad0aa.entry.js → p-4d272de8.entry.js} +1 -1
  342. package/lib/duet/{p-47ec0bce.system.entry.js → p-4ee4938c.system.entry.js} +1 -1
  343. package/lib/duet/{p-5b4e316c.system.entry.js → p-4f99c879.system.entry.js} +1 -1
  344. package/lib/duet/{p-cc70ab4a.entry.js → p-5003f2f7.entry.js} +1 -1
  345. package/lib/duet/p-501d76ac.system.entry.js +4 -0
  346. package/lib/duet/{p-be7a7b77.entry.js → p-51ea8a1e.entry.js} +1 -1
  347. package/lib/duet/{p-130d0e42.entry.js → p-56e8e51e.entry.js} +1 -1
  348. package/lib/duet/{p-e2c354ef.system.entry.js → p-5700d7df.system.entry.js} +1 -1
  349. package/lib/duet/{p-3dc8596c.system.entry.js → p-5726b0c6.system.entry.js} +1 -1
  350. package/lib/duet/{p-c405af98.system.entry.js → p-57c81cdf.system.entry.js} +1 -1
  351. package/lib/duet/{p-57708d82.entry.js → p-58d191e0.entry.js} +1 -1
  352. package/lib/duet/{p-86991900.system.entry.js → p-5bb44d21.system.entry.js} +1 -1
  353. package/lib/duet/{p-c37c86ef.entry.js → p-5be89661.entry.js} +1 -1
  354. package/lib/duet/{p-a05fa71c.entry.js → p-5c682b2c.entry.js} +1 -1
  355. package/lib/duet/{p-732d4693.system.entry.js → p-5d06caee.system.entry.js} +1 -1
  356. package/lib/duet/{p-88501e6a.entry.js → p-5d1f9c44.entry.js} +1 -1
  357. package/lib/duet/{p-6d9e809f.system.entry.js → p-61c551d2.system.entry.js} +1 -1
  358. package/lib/duet/{p-f0173106.system.entry.js → p-63330f08.system.entry.js} +1 -1
  359. package/lib/duet/{p-0c72528c.system.entry.js → p-63566970.system.entry.js} +1 -1
  360. package/lib/duet/p-63c149ab.js +4 -0
  361. package/lib/duet/{p-bb64f25d.system.entry.js → p-66ab3c0e.system.entry.js} +2 -2
  362. package/lib/duet/{p-5e965627.system.entry.js → p-6c1482e6.system.entry.js} +1 -1
  363. package/lib/duet/{p-fe3dbb59.entry.js → p-715db5f9.entry.js} +1 -1
  364. package/lib/duet/{p-277d9e45.system.js → p-71a46879.system.js} +1 -1
  365. package/lib/duet/{p-3db4b9e1.entry.js → p-720ffaf8.entry.js} +1 -1
  366. package/lib/duet/{p-a727e03a.entry.js → p-74bee1d0.entry.js} +1 -1
  367. package/lib/duet/p-7709b117.entry.js +4 -0
  368. package/lib/duet/{p-5e2c8e38.entry.js → p-7a3c5568.entry.js} +1 -1
  369. package/lib/duet/{p-3117f16c.system.entry.js → p-7d1b0468.system.entry.js} +1 -1
  370. package/lib/duet/{p-66cc34da.entry.js → p-7d5e5659.entry.js} +1 -1
  371. package/lib/duet/{p-312656b2.entry.js → p-7e43823e.entry.js} +1 -1
  372. package/lib/duet/p-8894b5f8.system.entry.js +4 -0
  373. package/lib/duet/p-892b0784.system.js +5 -0
  374. package/lib/duet/p-8ace7a8f.entry.js +4 -0
  375. package/lib/duet/{p-d2cbaed2.entry.js → p-8adadd0e.entry.js} +1 -1
  376. package/lib/duet/p-8adb9463.js +4 -0
  377. package/lib/duet/{p-b959ac63.system.entry.js → p-8aee7f16.system.entry.js} +1 -1
  378. package/lib/duet/{p-fe5705fe.system.entry.js → p-8b01d5ae.system.entry.js} +1 -1
  379. package/lib/duet/p-8be782cb.system.entry.js +4 -0
  380. package/lib/duet/{p-f2b11d36.system.entry.js → p-8bfe774e.system.entry.js} +1 -1
  381. package/lib/duet/{p-10695d55.system.js → p-8c6e3c4f.system.js} +1 -1
  382. package/lib/duet/{p-00fc5376.system.entry.js → p-8e64876c.system.entry.js} +1 -1
  383. package/lib/duet/p-90b90630.system.entry.js +4 -0
  384. package/lib/duet/p-90d5fb9a.entry.js +4 -0
  385. package/lib/duet/{p-8548fc3a.system.entry.js → p-9116810a.system.entry.js} +1 -1
  386. package/lib/duet/{p-b66706de.entry.js → p-91e92ff0.entry.js} +1 -1
  387. package/lib/duet/p-92a26eb7.system.entry.js +4 -0
  388. package/lib/duet/{p-36fafe5f.entry.js → p-939bceb1.entry.js} +1 -1
  389. package/lib/duet/{p-52fdd651.system.entry.js → p-968c8724.system.entry.js} +1 -1
  390. package/lib/duet/p-9837720e.system.entry.js +4 -0
  391. package/lib/duet/{p-22a436ef.entry.js → p-99a6c65d.entry.js} +1 -1
  392. package/lib/duet/{p-9d3deabb.system.entry.js → p-9a9f4f83.system.entry.js} +1 -1
  393. package/lib/duet/{p-66ce877b.entry.js → p-9ad54264.entry.js} +1 -1
  394. package/lib/duet/{p-42242eb4.entry.js → p-9bad6410.entry.js} +1 -1
  395. package/lib/duet/{p-df03f394.entry.js → p-9ef41dff.entry.js} +1 -1
  396. package/lib/duet/{p-97162b31.system.entry.js → p-a04538da.system.entry.js} +1 -1
  397. package/lib/duet/{p-f75b8801.system.entry.js → p-a4dc39b7.system.entry.js} +1 -1
  398. package/lib/duet/{p-e3d40270.entry.js → p-a61f629f.entry.js} +1 -1
  399. package/lib/duet/p-a659351d.system.js +4 -0
  400. package/lib/duet/{p-c1ec3ad4.entry.js → p-a6a78989.entry.js} +1 -1
  401. package/lib/duet/{p-75f7a572.js → p-a76ceaf6.js} +1 -1
  402. package/lib/duet/{p-293d6a2b.entry.js → p-acfd55b1.entry.js} +1 -1
  403. package/lib/duet/{p-896fff8f.entry.js → p-afd647b4.entry.js} +1 -1
  404. package/lib/duet/{p-daa1595d.entry.js → p-b150413c.entry.js} +1 -1
  405. package/lib/duet/{p-4ca5d008.system.entry.js → p-b4548652.system.entry.js} +1 -1
  406. package/lib/duet/{p-419b1bec.system.entry.js → p-b50fe6a3.system.entry.js} +1 -1
  407. package/lib/duet/p-b63e9d32.system.entry.js +4 -0
  408. package/lib/duet/p-b63fdf97.entry.js +4 -0
  409. package/lib/duet/{p-ced4679a.entry.js → p-b70632f4.entry.js} +1 -1
  410. package/lib/duet/{p-930c8f3c.system.entry.js → p-b8f45b9b.system.entry.js} +1 -1
  411. package/lib/duet/{p-5847fbcf.system.entry.js → p-ba8d654e.system.entry.js} +1 -1
  412. package/lib/duet/{p-6fcc9de8.entry.js → p-c047dce3.entry.js} +1 -1
  413. package/lib/duet/{p-fde10739.system.entry.js → p-c06dd7ff.system.entry.js} +1 -1
  414. package/lib/duet/{p-45043c9d.system.entry.js → p-c1aa415d.system.entry.js} +1 -1
  415. package/lib/duet/p-c6265d54.system.entry.js +4 -0
  416. package/lib/duet/{p-615a393c.system.entry.js → p-c7f078b4.system.entry.js} +1 -1
  417. package/lib/duet/{p-7f9909ed.entry.js → p-ca587193.entry.js} +1 -1
  418. package/lib/duet/{p-9fb4f41a.system.entry.js → p-cc2c3bda.system.entry.js} +1 -1
  419. package/lib/duet/{p-5c37dda9.system.entry.js → p-ccbd26f8.system.entry.js} +1 -1
  420. package/lib/duet/{p-a6d18e87.system.entry.js → p-cd494ec0.system.entry.js} +1 -1
  421. package/lib/duet/{p-655275ec.entry.js → p-d0517764.entry.js} +1 -1
  422. package/lib/duet/{p-c905c010.entry.js → p-d1ada824.entry.js} +1 -1
  423. package/lib/duet/{p-d1ee4298.system.entry.js → p-d23f5574.system.entry.js} +1 -1
  424. package/lib/duet/{p-1e161672.entry.js → p-d38f4401.entry.js} +1 -1
  425. package/lib/duet/{p-d649d264.system.entry.js → p-d5a72abd.system.entry.js} +1 -1
  426. package/lib/duet/{p-41c64229.system.entry.js → p-d976e355.system.entry.js} +1 -1
  427. package/lib/duet/p-dafb7efd.js +5 -0
  428. package/lib/duet/{p-1eada326.system.entry.js → p-dc00285e.system.entry.js} +1 -1
  429. package/lib/duet/{p-d6e7f2d1.entry.js → p-ddec1906.entry.js} +1 -1
  430. package/lib/duet/{p-27b9e751.system.entry.js → p-dfecd542.system.entry.js} +1 -1
  431. package/lib/duet/{p-c65b31df.entry.js → p-e1a2ad9b.entry.js} +1 -1
  432. package/lib/duet/{p-222548cd.entry.js → p-e26224c8.entry.js} +1 -1
  433. package/lib/duet/{p-17f95bce.entry.js → p-e2674cbd.entry.js} +1 -1
  434. package/lib/duet/{p-889fc0c6.entry.js → p-e464c127.entry.js} +1 -1
  435. package/lib/duet/{p-f31b839f.system.entry.js → p-e62bcf02.system.entry.js} +1 -1
  436. package/lib/duet/{p-78eb3378.system.entry.js → p-e73904ab.system.entry.js} +1 -1
  437. package/lib/duet/{p-a7d43918.entry.js → p-e775f206.entry.js} +1 -1
  438. package/lib/duet/{p-08945ef7.entry.js → p-e8496052.entry.js} +1 -1
  439. package/lib/duet/{p-e591257f.entry.js → p-e8e50fdb.entry.js} +1 -1
  440. package/lib/duet/{p-653fd5d0.system.entry.js → p-ecfdc7d9.system.entry.js} +1 -1
  441. package/lib/duet/p-edddef22.entry.js +4 -0
  442. package/lib/duet/{p-a7f9f585.system.entry.js → p-ee2dc527.system.entry.js} +1 -1
  443. package/lib/duet/{p-4bae7f7e.entry.js → p-ee3d6a73.entry.js} +1 -1
  444. package/lib/duet/{p-26f8a5e3.entry.js → p-ef194759.entry.js} +1 -1
  445. package/lib/duet/{p-2ba628cc.system.entry.js → p-f06b4b03.system.entry.js} +1 -1
  446. package/lib/duet/{p-ab07e9c2.entry.js → p-f29123b4.entry.js} +1 -1
  447. package/lib/duet/{p-f22404fe.system.js → p-f36c856d.system.js} +1 -1
  448. package/lib/duet/{p-81ef610a.system.entry.js → p-f36ee41c.system.entry.js} +1 -1
  449. package/lib/duet/p-fa56fe59.entry.js +4 -0
  450. package/lib/duet/{p-c2a407e8.system.entry.js → p-fa7cdc28.system.entry.js} +1 -1
  451. package/lib/duet/{p-69abe752.system.entry.js → p-fc3275ba.system.entry.js} +1 -1
  452. package/lib/duet/p-fd4785ab.js +4 -0
  453. package/lib/duet/{p-d00f7632.system.entry.js → p-fd54a219.system.entry.js} +1 -1
  454. package/lib/duet/p-fe4cd626.entry.js +4 -0
  455. package/lib/esm/duet-action-button.entry.js +3 -3
  456. package/lib/esm/duet-alert.entry.js +14 -2
  457. package/lib/esm/duet-badge.entry.js +1 -1
  458. package/lib/esm/duet-banner.entry.js +3 -3
  459. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  460. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  461. package/lib/esm/duet-button_2.entry.js +4 -4
  462. package/lib/esm/duet-callout.entry.js +1 -1
  463. package/lib/esm/duet-caption_4.entry.js +3 -3
  464. package/lib/esm/duet-card.entry.js +3 -3
  465. package/lib/esm/duet-checkbox.entry.js +1 -1
  466. package/lib/esm/duet-checkmark.entry.js +1 -1
  467. package/lib/esm/duet-chip.entry.js +1 -1
  468. package/lib/esm/duet-choice_2.entry.js +2 -2
  469. package/lib/esm/duet-collapsible.entry.js +1 -1
  470. package/lib/esm/duet-combobox.entry.js +1 -1
  471. package/lib/esm/duet-contact-card.entry.js +1 -1
  472. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  473. package/lib/esm/duet-date-picker.entry.js +2 -2
  474. package/lib/esm/duet-divider_2.entry.js +3 -3
  475. package/lib/esm/duet-editable-table_3.entry.js +75 -22
  476. package/lib/esm/duet-empty-state.entry.js +1 -1
  477. package/lib/esm/duet-fieldset.entry.js +3 -2
  478. package/lib/esm/duet-footer.entry.js +1 -1
  479. package/lib/esm/duet-grid_2.entry.js +1 -1
  480. package/lib/esm/duet-header_2.entry.js +14 -9
  481. package/lib/esm/duet-hero.entry.js +1 -1
  482. package/lib/esm/duet-icon.entry.js +3 -3
  483. package/lib/esm/duet-input_2.entry.js +2 -2
  484. package/lib/esm/duet-layout.entry.js +1 -1
  485. package/lib/esm/duet-list_2.entry.js +1 -1
  486. package/lib/esm/duet-menu-bar-button.entry.js +1 -1
  487. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +1 -1
  488. package/lib/esm/duet-menu-bar-dropdown.entry.js +1 -1
  489. package/lib/esm/duet-menu-bar-link.entry.js +1 -1
  490. package/lib/esm/duet-menu-bar.entry.js +3 -2
  491. package/lib/esm/duet-modal.entry.js +6 -2
  492. package/lib/esm/duet-multiselect.entry.js +23 -4
  493. package/lib/esm/duet-nav.entry.js +1 -1
  494. package/lib/esm/duet-notification_2.entry.js +1 -1
  495. package/lib/esm/duet-number-input.entry.js +4 -1
  496. package/lib/esm/duet-page-heading.entry.js +1 -1
  497. package/lib/esm/duet-pagination_2.entry.js +1 -1
  498. package/lib/esm/duet-popup-menu-item.entry.js +1 -1
  499. package/lib/esm/duet-popup-menu.entry.js +3 -30
  500. package/lib/esm/duet-progress.entry.js +1 -1
  501. package/lib/esm/duet-promo-card.entry.js +3 -3
  502. package/lib/esm/duet-radio_2.entry.js +1 -1
  503. package/lib/esm/duet-range-slider.entry.js +2 -2
  504. package/lib/esm/duet-scrollable_3.entry.js +1 -1
  505. package/lib/esm/duet-section-layout.entry.js +1 -1
  506. package/lib/esm/duet-select.entry.js +1 -1
  507. package/lib/esm/duet-shaped-image.entry.js +1 -1
  508. package/lib/esm/duet-show-more.entry.js +1 -1
  509. package/lib/esm/duet-slideout-lang.entry.js +1 -1
  510. package/lib/esm/duet-slideout-link.entry.js +1 -1
  511. package/lib/esm/duet-slideout-panel-dropdown.entry.js +1 -1
  512. package/lib/esm/duet-slideout-panel.entry.js +4 -4
  513. package/lib/esm/duet-slideout.entry.js +4 -4
  514. package/lib/esm/duet-step_2.entry.js +1 -1
  515. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +1 -1
  516. package/lib/esm/duet-submenu-bar-dropdown.entry.js +1 -1
  517. package/lib/esm/duet-submenu-bar-link.entry.js +1 -1
  518. package/lib/esm/duet-submenu-bar.entry.js +1 -1
  519. package/lib/esm/duet-textarea.entry.js +1 -1
  520. package/lib/esm/duet-toggle.entry.js +1 -1
  521. package/lib/esm/duet-toolbar-dropdown-link.entry.js +1 -1
  522. package/lib/esm/duet-toolbar-dropdown.entry.js +1 -1
  523. package/lib/esm/duet-toolbar-link.entry.js +1 -1
  524. package/lib/esm/duet-toolbar.entry.js +1 -1
  525. package/lib/esm/duet-tooltip-button_2.entry.js +87 -0
  526. package/lib/esm/duet-tooltip.entry.js +33 -48
  527. package/lib/esm/duet-tray.entry.js +2 -2
  528. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  529. package/lib/esm/duet-upload-item.entry.js +5 -4
  530. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  531. package/lib/esm/duet.js +3 -3
  532. package/lib/{dist-custom-elements/p-df10a767.js → esm/floating-ui.dom.esm-6025c98f.js} +154 -159
  533. package/lib/esm/{focus-utils-08d27c67.js → focus-utils-8a8cfffd.js} +1 -1
  534. package/lib/esm/{index-729ef6e7.js → index-d48e2c74.js} +1 -1
  535. package/lib/esm/loader.js +3 -3
  536. package/lib/esm/teleport-4ede216d.js +86 -0
  537. package/lib/esm/{token-utils-058d6220.js → token-utils-a1dcaa4b.js} +1 -1
  538. package/lib/esm/{tokens.module-f436c2cd.js → tokens.module-ed773027.js} +1 -1
  539. package/lib/esm-es5/duet-action-button.entry.js +1 -1
  540. package/lib/esm-es5/duet-alert.entry.js +2 -2
  541. package/lib/esm-es5/duet-badge.entry.js +1 -1
  542. package/lib/esm-es5/duet-banner.entry.js +1 -1
  543. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  544. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  545. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  546. package/lib/esm-es5/duet-callout.entry.js +1 -1
  547. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  548. package/lib/esm-es5/duet-card.entry.js +1 -1
  549. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  550. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  551. package/lib/esm-es5/duet-chip.entry.js +1 -1
  552. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  553. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  554. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  555. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  556. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  557. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  558. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  559. package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
  560. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  561. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  562. package/lib/esm-es5/duet-footer.entry.js +1 -1
  563. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  564. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  565. package/lib/esm-es5/duet-hero.entry.js +1 -1
  566. package/lib/esm-es5/duet-icon.entry.js +1 -1
  567. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  568. package/lib/esm-es5/duet-layout.entry.js +1 -1
  569. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  570. package/lib/esm-es5/duet-menu-bar-button.entry.js +1 -1
  571. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  572. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +1 -1
  573. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  574. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  575. package/lib/esm-es5/duet-modal.entry.js +1 -1
  576. package/lib/esm-es5/duet-multiselect.entry.js +2 -2
  577. package/lib/esm-es5/duet-nav.entry.js +1 -1
  578. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  579. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  580. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  581. package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
  582. package/lib/esm-es5/duet-popup-menu-item.entry.js +1 -1
  583. package/lib/esm-es5/duet-popup-menu.entry.js +1 -1
  584. package/lib/esm-es5/duet-progress.entry.js +1 -1
  585. package/lib/esm-es5/duet-promo-card.entry.js +1 -1
  586. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  587. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  588. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  589. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  590. package/lib/esm-es5/duet-select.entry.js +1 -1
  591. package/lib/esm-es5/duet-shaped-image.entry.js +1 -1
  592. package/lib/esm-es5/duet-show-more.entry.js +1 -1
  593. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  594. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  595. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +1 -1
  596. package/lib/esm-es5/duet-slideout-panel.entry.js +1 -1
  597. package/lib/esm-es5/duet-slideout.entry.js +1 -1
  598. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  599. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  600. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  601. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  602. package/lib/esm-es5/duet-submenu-bar.entry.js +1 -1
  603. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  604. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  605. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  606. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +2 -2
  607. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  608. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  609. package/lib/esm-es5/duet-tooltip-button_2.entry.js +4 -0
  610. package/lib/esm-es5/duet-tooltip.entry.js +2 -2
  611. package/lib/esm-es5/duet-tray.entry.js +1 -1
  612. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  613. package/lib/esm-es5/duet-upload-item.entry.js +1 -1
  614. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  615. package/lib/esm-es5/duet.js +1 -1
  616. package/lib/esm-es5/floating-ui.dom.esm-6025c98f.js +4 -0
  617. package/lib/esm-es5/focus-utils-8a8cfffd.js +4 -0
  618. package/lib/esm-es5/index-d48e2c74.js +5 -0
  619. package/lib/esm-es5/loader.js +1 -1
  620. package/lib/esm-es5/teleport-4ede216d.js +4 -0
  621. package/lib/esm-es5/{token-utils-058d6220.js → token-utils-a1dcaa4b.js} +1 -1
  622. package/lib/esm-es5/{tokens.module-f436c2cd.js → tokens.module-ed773027.js} +1 -1
  623. package/lib/types/components/duet-alert/duet-alert.d.ts +12 -0
  624. package/lib/types/components/duet-fieldset/duet-fieldset.d.ts +6 -1
  625. package/lib/types/components/duet-header/duet-header.d.ts +3 -0
  626. package/lib/types/components/duet-modal/duet-modal.d.ts +1 -0
  627. package/lib/types/components/duet-multiselect/duet-multiselect.d.ts +9 -0
  628. package/lib/types/components/duet-tooltip/duet-tooltip-button.d.ts +29 -0
  629. package/lib/types/components/duet-tooltip/duet-tooltip-popup.d.ts +4 -7
  630. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +3 -2
  631. package/lib/types/components/duet-upload/duet-upload.d.ts +21 -16
  632. package/lib/types/components/duet-upload/upload-validators.d.ts +1 -0
  633. package/lib/types/components.d.ts +71 -7
  634. package/lib/types/utils/teleport.d.ts +15 -2
  635. package/package.json +5 -5
  636. package/lib/cjs/duet-tooltip-popup.cjs.entry.js +0 -56
  637. package/lib/dist-custom-elements/p-95109364.js +0 -136
  638. package/lib/dist-custom-elements/p-d6238b66.js +0 -88
  639. package/lib/dist-custom-elements/p-f3b91052.js +0 -273
  640. package/lib/duet/p-00215a97.entry.js +0 -4
  641. package/lib/duet/p-106940dd.js +0 -5
  642. package/lib/duet/p-1700211f.system.js +0 -5
  643. package/lib/duet/p-1760b8d4.system.entry.js +0 -4
  644. package/lib/duet/p-1ea89299.entry.js +0 -4
  645. package/lib/duet/p-2a64f169.system.entry.js +0 -4
  646. package/lib/duet/p-2d68f259.entry.js +0 -4
  647. package/lib/duet/p-340e36a8.system.js +0 -4
  648. package/lib/duet/p-3a417fd2.entry.js +0 -4
  649. package/lib/duet/p-61fb382d.entry.js +0 -4
  650. package/lib/duet/p-6494c48e.entry.js +0 -4
  651. package/lib/duet/p-6c24d8b4.entry.js +0 -4
  652. package/lib/duet/p-7084c7fa.system.entry.js +0 -4
  653. package/lib/duet/p-7649b95e.js +0 -4
  654. package/lib/duet/p-7e64358b.entry.js +0 -4
  655. package/lib/duet/p-8040b3f3.system.entry.js +0 -4
  656. package/lib/duet/p-82b5380b.system.js +0 -4
  657. package/lib/duet/p-86dc2ebb.entry.js +0 -4
  658. package/lib/duet/p-90ad5759.system.entry.js +0 -4
  659. package/lib/duet/p-a1057e50.js +0 -4
  660. package/lib/duet/p-a8af0ea4.entry.js +0 -4
  661. package/lib/duet/p-bd751ea4.system.entry.js +0 -4
  662. package/lib/duet/p-d3910688.entry.js +0 -4
  663. package/lib/duet/p-d759b718.system.entry.js +0 -4
  664. package/lib/duet/p-d7fa5f72.system.entry.js +0 -4
  665. package/lib/duet/p-df10a767.js +0 -4
  666. package/lib/duet/p-e0cfe3d5.entry.js +0 -4
  667. package/lib/duet/p-e73a1930.entry.js +0 -4
  668. package/lib/duet/p-ebbb398a.system.entry.js +0 -4
  669. package/lib/duet/p-f3c3932d.system.entry.js +0 -4
  670. package/lib/esm/duet-tooltip-popup.entry.js +0 -52
  671. package/lib/esm-es5/duet-tooltip-popup.entry.js +0 -4
  672. package/lib/esm-es5/floating-ui.dom.esm-37dc174a.js +0 -4
  673. package/lib/esm-es5/focus-utils-08d27c67.js +0 -4
  674. package/lib/esm-es5/index-729ef6e7.js +0 -5
package/hydrate/index.js CHANGED
@@ -6678,6 +6678,7 @@ class DuetAlert {
6678
6678
  this.padding = "auto";
6679
6679
  this.variation = "default";
6680
6680
  this.dismissible = false;
6681
+ this.focusable = false;
6681
6682
  }
6682
6683
  watchLanguageStateHandler(newValue, oldValue) {
6683
6684
  if (newValue !== oldValue && this.accessibleLabel === this.accessibleLabelDefaults[oldValue]) {
@@ -6716,6 +6717,15 @@ class DuetAlert {
6716
6717
  async hide() {
6717
6718
  this.handleHide();
6718
6719
  }
6720
+ /**
6721
+ * Sets focus on the specified `duet-alert`.
6722
+ * Works only when focusable property is set to true.
6723
+ * Use this method instead of the global
6724
+ * `button.focus()`.
6725
+ */
6726
+ async setFocus(options) {
6727
+ this.alertContainer.focus(options);
6728
+ }
6719
6729
  /**
6720
6730
  * There is bug in NVDA screen reader
6721
6731
  * that is causing multiple alert readings
@@ -6739,7 +6749,9 @@ class DuetAlert {
6739
6749
  "duet-m-0": this.margin === "none",
6740
6750
  [this.variation]: true,
6741
6751
  "duet-theme-turva": this.theme === "turva",
6742
- } }, hAsync("div", { class: "duet-alert-container" }, this.icon && (hAsync("div", { class: "duet-alert-icon" }, hAsync("duet-icon", { size: "auto", name: this.icon, color: "currentColor" }))), hAsync("span", { id: this.descriptiveId }, hAsync("slot", null))), this.dismissible && (hAsync("div", { class: "duet-alert-dismiss" }, hAsync("duet-button", { variation: "plain", accessibleLabel: this.accessibleLabel, accessibleDescribedBy: this.descriptiveId, color: closeColor, iconSize: "medium", icon: "navigation-close", iconOnly: true, margin: "none", theme: this.theme, onClick: this.handleDismiss, fixed: true }))))));
6752
+ } }, hAsync("div", { class: "duet-alert-container", ref: element => {
6753
+ this.alertContainer = element;
6754
+ }, tabindex: this.focusable ? "0" : undefined }, this.icon && (hAsync("div", { class: "duet-alert-icon" }, hAsync("duet-icon", { size: "auto", name: this.icon, color: "currentColor" }))), hAsync("span", { id: this.descriptiveId }, hAsync("slot", null))), this.dismissible && (hAsync("div", { class: "duet-alert-dismiss" }, hAsync("duet-button", { variation: "plain", accessibleLabel: this.accessibleLabel, accessibleDescribedBy: this.descriptiveId, color: closeColor, iconSize: "medium", icon: "navigation-close", iconOnly: true, margin: "none", theme: this.theme, onClick: this.handleDismiss, fixed: true }))))));
6743
6755
  }
6744
6756
  static get watchers() { return {
6745
6757
  "language": ["watchLanguageStateHandler"]
@@ -6759,11 +6771,13 @@ class DuetAlert {
6759
6771
  "padding": [1],
6760
6772
  "variation": [1],
6761
6773
  "dismissible": [4],
6774
+ "focusable": [4],
6762
6775
  "isDismissed": [32],
6763
6776
  "timeoutID": [32],
6764
6777
  "language": [32],
6765
6778
  "show": [64],
6766
- "hide": [64]
6779
+ "hide": [64],
6780
+ "setFocus": [64]
6767
6781
  },
6768
6782
  "$listeners$": undefined,
6769
6783
  "$lazyBundleId$": "-",
@@ -6989,7 +7003,7 @@ const DuetStringsExternalDefaults = {
6989
7003
  en: "Opens in a new window",
6990
7004
  };
6991
7005
 
6992
- const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.input-button)*/.input-button.sc-duet-button-h{z-index:250}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:rgb(0, 119, 179) !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button:not(.input-button-primary, .input-button-secondary, .input-button-embedded)*/.duet-button.sc-duet-button:not(.input-button-primary,.input-button-secondary.sc-duet-button,.input-button-embedded).sc-duet-button{font-variant-numeric:tabular-nums}/*!@.duet-button.duet-button-text-center*/.duet-button.duet-button-text-center.sc-duet-button{text-align:center !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only)*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only){padding:9px 19px 10px !important;min-width:5.3333333333rem;font-size:0.875rem}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon{padding-left:48px !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon-right*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon-right{padding-right:48px !important;padding-left:20px !important}/*!@.duet-theme-turva .duet-button*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(198, 12, 48) !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}/*!@.duet-button:active:not([disabled])*/.duet-button.sc-duet-button:active:not([disabled]){opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:rgb(225, 227, 230)}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:rgb(198, 12, 48) !important;border-color:rgb(228, 228, 230)}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:rgb(198, 12, 48)}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:rgb(228, 228, 230) !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.primary, .duet-button.input-button-primary*/.duet-button.primary.sc-duet-button,.duet-button.input-button-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(0, 119, 179);border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.primary, .duet-theme-turva .duet-button.input-button-primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(198, 12, 48);border-color:rgb(198, 12, 48)}/*!@.duet-button.primary:hover, .duet-button.input-button-primary:hover*/.duet-button.primary.sc-duet-button:hover,.duet-button.input-button-primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover, .duet-theme-turva .duet-button.input-button-primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button:hover{background:rgb(148, 9, 37);border-color:rgb(148, 9, 37)}/*!@.duet-button.primary:focus, .duet-button.input-button-primary:focus*/.duet-button.primary.sc-duet-button:focus,.duet-button.input-button-primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px rgb(255, 255, 255), 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus, .duet-theme-turva .duet-button.input-button-primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button:focus{box-shadow:0 0 0 1px rgb(255, 255, 255), 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary, .duet-button.input-button-secondary, .duet-button.input-button-embedded*/.duet-button.secondary.sc-duet-button,.duet-button.input-button-secondary.sc-duet-button,.duet-button.input-button-embedded.sc-duet-button{color:rgb(0, 41, 77) !important;background:transparent;border-color:rgb(0, 41, 77)}/*!@.duet-theme-turva .duet-button.secondary, .duet-theme-turva .duet-button.input-button-secondary, .duet-theme-turva .duet-button.input-button-embedded*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.sc-duet-button{color:rgb(23, 28, 58) !important;border-color:rgb(23, 28, 58)}/*!@.duet-button.secondary:hover, .duet-button.input-button-secondary:hover, .duet-button.input-button-embedded:hover*/.duet-button.secondary.sc-duet-button:hover,.duet-button.input-button-secondary.sc-duet-button:hover,.duet-button.input-button-embedded.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.secondary:hover, .duet-theme-turva .duet-button.input-button-secondary:hover, .duet-theme-turva .duet-button.input-button-embedded:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.secondary.duet-button-negative, .duet-button.input-button-secondary.duet-button-negative, .duet-button.input-button-embedded.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button,.duet-button.input-button-secondary.duet-button-negative.sc-duet-button,.duet-button.input-button-embedded.duet-button-negative.sc-duet-button{color:rgb(225, 227, 230) !important;border-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative, .duet-theme-turva .duet-button.input-button-secondary.duet-button-negative, .duet-theme-turva .duet-button.input-button-embedded.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.duet-button-negative.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.duet-button-negative.sc-duet-button{color:rgb(228, 228, 230) !important}/*!@.duet-button.secondary.duet-button-negative:hover, .duet-button.input-button-secondary.duet-button-negative:hover, .duet-button.input-button-embedded.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover,.duet-button.input-button-secondary.duet-button-negative.sc-duet-button:hover,.duet-button.input-button-embedded.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover, .duet-theme-turva .duet-button.input-button-secondary.duet-button-negative:hover, .duet-theme-turva .duet-button.input-button-embedded.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.duet-button-negative.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.input-button-embedded*/.duet-button.input-button-embedded.sc-duet-button{width:40px;min-width:40px !important;min-height:40px !important;margin:4px !important;border-width:0 !important;border-radius:4px !important}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:rgb(0, 41, 77) !important;background:rgb(255, 255, 255);border-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:rgb(23, 28, 58) !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:transparent;border-color:rgb(255, 255, 255)}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px rgb(0, 41, 77), 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px rgb(23, 28, 58), 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive-primary*/.duet-button.destructive-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(222, 35, 98);border-color:rgb(222, 35, 98)}/*!@.duet-theme-turva .duet-button.destructive-primary*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(224, 42, 13);border-color:rgb(224, 42, 13)}/*!@.duet-button.destructive-primary:hover*/.duet-button.destructive-primary.sc-duet-button:hover{background:#b21c4e;border-color:#b21c4e;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.destructive-primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button:hover{background:#b3220a}/*!@.duet-button.destructive, .duet-button.destructive-secondary*/.duet-button.destructive.sc-duet-button,.duet-button.destructive-secondary.sc-duet-button{color:rgb(222, 35, 98) !important;background:rgb(255, 255, 255);border-color:rgb(222, 35, 98)}/*!@.duet-theme-turva .duet-button.destructive, .duet-theme-turva .duet-button.destructive-secondary*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button{color:rgb(224, 42, 13) !important;background:rgb(255, 255, 255);border-color:rgb(224, 42, 13)}/*!@.duet-button.destructive:hover, .duet-button.destructive-secondary:hover*/.duet-button.destructive.sc-duet-button:hover,.duet-button.destructive-secondary.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:#b21c4e;border-color:#b21c4e}/*!@.duet-theme-turva .duet-button.destructive:hover, .duet-theme-turva .duet-button.destructive-secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:rgb(198, 12, 48) !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:rgb(101, 119, 135) !important;cursor:not-allowed;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;cursor:not-allowed;background:transparent !important;border-color:rgb(228, 228, 230) !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:rgb(0, 77, 128) !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:rgb(148, 9, 37) !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:rgb(228, 228, 230) !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button.duet-button.input-button-primary, .duet-button.duet-button.input-button-secondary, .duet-button.duet-button.input-button-embedded*/.duet-button.duet-button.input-button-primary.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button{box-sizing:content-box;min-width:48px;min-height:48px;padding:0 !important;border-width:1px;border-top-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0}/*!@.duet-button.duet-button.input-button-primary .duet-button-contents, .duet-button.duet-button.input-button-secondary .duet-button-contents, .duet-button.duet-button.input-button-embedded .duet-button-contents*/.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-contents.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-contents.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button.input-button-primary .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-primary .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-primary .duet-button-icon.left.small, .duet-button.duet-button.input-button-secondary .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-secondary .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-secondary .duet-button-icon.left.small, .duet-button.duet-button.input-button-embedded .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-embedded .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-embedded .duet-button-icon.left.small*/.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.small.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.small.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button.duet-button.input-button-embedded*/.duet-button.duet-button.input-button-embedded.sc-duet-button{border-left-width:0}/*!@.duet-button.square*/.duet-button.square.sc-duet-button{width:48px !important;min-width:auto !important;height:48px !important;padding:0 !important;font-size:1.25rem;border-color:rgb(225, 227, 230);border-width:1px;border-radius:8px}/*!@.duet-button.square.duet-button-is-small*/.duet-button.square.duet-button-is-small.sc-duet-button{width:28px !important;height:28px !important;padding:0 !important;font-size:1rem}/*!@.duet-button.square.duet-button-negative*/.duet-button.square.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(0, 119, 179);border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.square.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.square.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(198, 12, 48);border-color:rgb(198, 12, 48)}/*!@.duet-theme-turva .duet-button.square*/.duet-theme-turva.sc-duet-button .duet-button.square.sc-duet-button{border-color:rgb(228, 228, 230)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:rgb(101, 119, 135) !important;cursor:not-allowed;background:rgb(225, 227, 230) !important;border-color:rgb(225, 227, 230) !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:rgb(116, 116, 117) !important;cursor:not-allowed;background:rgb(228, 228, 230) !important;border-color:rgb(228, 228, 230) !important}/*!@.duet-button-is-loading.primary, .duet-button-is-loading.input-button-primary*/.duet-button-is-loading.primary.sc-duet-button,.duet-button-is-loading.input-button-primary.sc-duet-button{color:rgb(255, 255, 255)}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:rgb(0, 119, 179)}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:rgb(198, 12, 48)}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
7006
+ const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.input-button)*/.input-button.sc-duet-button-h{z-index:250}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:rgb(0, 119, 179) !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button:not(.input-button-primary, .input-button-secondary, .input-button-embedded)*/.duet-button.sc-duet-button:not(.input-button-primary,.input-button-secondary.sc-duet-button,.input-button-embedded).sc-duet-button{font-variant-numeric:tabular-nums}/*!@.duet-button.duet-button-text-center*/.duet-button.duet-button-text-center.sc-duet-button{text-align:center !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only)*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only){padding:9px 19px 10px !important;min-width:48px;font-size:0.875rem}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).plain*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).plain{padding-right:0 !important;padding-left:0 !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).duet-p-0*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).duet-p-0{padding:0 !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon{padding-left:48px !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon-right*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon-right{padding-right:48px !important;padding-left:20px !important}/*!@.duet-theme-turva .duet-button*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(198, 12, 48) !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}/*!@.duet-button:active:not([disabled])*/.duet-button.sc-duet-button:active:not([disabled]){opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:rgb(225, 227, 230)}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:rgb(198, 12, 48) !important;border-color:rgb(228, 228, 230)}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:rgb(198, 12, 48)}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:rgb(228, 228, 230) !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.primary, .duet-button.input-button-primary*/.duet-button.primary.sc-duet-button,.duet-button.input-button-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(0, 119, 179);border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.primary, .duet-theme-turva .duet-button.input-button-primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(198, 12, 48);border-color:rgb(198, 12, 48)}/*!@.duet-button.primary:hover, .duet-button.input-button-primary:hover*/.duet-button.primary.sc-duet-button:hover,.duet-button.input-button-primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover, .duet-theme-turva .duet-button.input-button-primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button:hover{background:rgb(148, 9, 37);border-color:rgb(148, 9, 37)}/*!@.duet-button.primary:focus, .duet-button.input-button-primary:focus*/.duet-button.primary.sc-duet-button:focus,.duet-button.input-button-primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px rgb(255, 255, 255), 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus, .duet-theme-turva .duet-button.input-button-primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus,.duet-theme-turva.sc-duet-button .duet-button.input-button-primary.sc-duet-button:focus{box-shadow:0 0 0 1px rgb(255, 255, 255), 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary, .duet-button.input-button-secondary, .duet-button.input-button-embedded*/.duet-button.secondary.sc-duet-button,.duet-button.input-button-secondary.sc-duet-button,.duet-button.input-button-embedded.sc-duet-button{color:rgb(0, 41, 77) !important;background:transparent;border-color:rgb(0, 41, 77)}/*!@.duet-theme-turva .duet-button.secondary, .duet-theme-turva .duet-button.input-button-secondary, .duet-theme-turva .duet-button.input-button-embedded*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.sc-duet-button{color:rgb(23, 28, 58) !important;border-color:rgb(23, 28, 58)}/*!@.duet-button.secondary:hover, .duet-button.input-button-secondary:hover, .duet-button.input-button-embedded:hover*/.duet-button.secondary.sc-duet-button:hover,.duet-button.input-button-secondary.sc-duet-button:hover,.duet-button.input-button-embedded.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.secondary:hover, .duet-theme-turva .duet-button.input-button-secondary:hover, .duet-theme-turva .duet-button.input-button-embedded:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.secondary.duet-button-negative, .duet-button.input-button-secondary.duet-button-negative, .duet-button.input-button-embedded.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button,.duet-button.input-button-secondary.duet-button-negative.sc-duet-button,.duet-button.input-button-embedded.duet-button-negative.sc-duet-button{color:rgb(225, 227, 230) !important;border-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative, .duet-theme-turva .duet-button.input-button-secondary.duet-button-negative, .duet-theme-turva .duet-button.input-button-embedded.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.duet-button-negative.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.duet-button-negative.sc-duet-button{color:rgb(228, 228, 230) !important}/*!@.duet-button.secondary.duet-button-negative:hover, .duet-button.input-button-secondary.duet-button-negative:hover, .duet-button.input-button-embedded.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover,.duet-button.input-button-secondary.duet-button-negative.sc-duet-button:hover,.duet-button.input-button-embedded.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important;border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover, .duet-theme-turva .duet-button.input-button-secondary.duet-button-negative:hover, .duet-theme-turva .duet-button.input-button-embedded.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-secondary.duet-button-negative.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.input-button-embedded.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important;border-color:rgb(198, 12, 48)}/*!@.duet-button.input-button-embedded*/.duet-button.input-button-embedded.sc-duet-button{width:40px;min-width:40px !important;min-height:40px !important;margin:4px !important;border-width:0 !important;border-radius:4px !important}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:rgb(0, 41, 77) !important;background:rgb(255, 255, 255);border-color:rgb(255, 255, 255)}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:rgb(23, 28, 58) !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:transparent;border-color:rgb(255, 255, 255)}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px rgb(0, 41, 77), 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px rgb(23, 28, 58), 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive-primary*/.duet-button.destructive-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(222, 35, 98);border-color:rgb(222, 35, 98)}/*!@.duet-theme-turva .duet-button.destructive-primary*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(224, 42, 13);border-color:rgb(224, 42, 13)}/*!@.duet-button.destructive-primary:hover*/.duet-button.destructive-primary.sc-duet-button:hover{background:#b21c4e;border-color:#b21c4e;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.destructive-primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button:hover{background:#b3220a}/*!@.duet-button.destructive, .duet-button.destructive-secondary*/.duet-button.destructive.sc-duet-button,.duet-button.destructive-secondary.sc-duet-button{color:rgb(222, 35, 98) !important;background:rgb(255, 255, 255);border-color:rgb(222, 35, 98)}/*!@.duet-theme-turva .duet-button.destructive, .duet-theme-turva .duet-button.destructive-secondary*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button{color:rgb(224, 42, 13) !important;background:rgb(255, 255, 255);border-color:rgb(224, 42, 13)}/*!@.duet-button.destructive:hover, .duet-button.destructive-secondary:hover*/.duet-button.destructive.sc-duet-button:hover,.duet-button.destructive-secondary.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:#b21c4e;border-color:#b21c4e}/*!@.duet-theme-turva .duet-button.destructive:hover, .duet-theme-turva .duet-button.destructive-secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button:hover{color:rgb(255, 255, 255) !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:rgb(198, 12, 48) !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.small*/.duet-button.plain.icon.small.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.small.icon-right*/.duet-button.plain.icon.small.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium-small*/.duet-button.plain.icon.medium-small.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.medium-small.icon-right*/.duet-button.plain.icon.medium-small.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:rgb(101, 119, 135) !important;cursor:not-allowed;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;cursor:not-allowed;background:transparent !important;border-color:rgb(228, 228, 230) !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:rgb(0, 77, 128) !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:rgb(148, 9, 37) !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:rgb(228, 228, 230) !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:rgb(0, 119, 179) !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:rgb(198, 12, 48) !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button.duet-button.input-button-primary, .duet-button.duet-button.input-button-secondary, .duet-button.duet-button.input-button-embedded*/.duet-button.duet-button.input-button-primary.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button{box-sizing:content-box;min-width:48px;min-height:48px;padding:0 !important;border-width:1px;border-top-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0}/*!@.duet-button.duet-button.input-button-primary .duet-button-contents, .duet-button.duet-button.input-button-secondary .duet-button-contents, .duet-button.duet-button.input-button-embedded .duet-button-contents*/.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-contents.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-contents.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button.input-button-primary .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-primary .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-primary .duet-button-icon.left.small, .duet-button.duet-button.input-button-secondary .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-secondary .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-secondary .duet-button-icon.left.small, .duet-button.duet-button.input-button-embedded .duet-button-icon.left.large,\n.duet-button.duet-button.input-button-embedded .duet-button-icon.left.medium,\n.duet-button.duet-button.input-button-embedded .duet-button-icon.left.small*/.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-primary.sc-duet-button .duet-button-icon.left.small.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-secondary.sc-duet-button .duet-button-icon.left.small.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button.input-button-embedded.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button.duet-button.input-button-embedded*/.duet-button.duet-button.input-button-embedded.sc-duet-button{border-left-width:0}/*!@.duet-button.square*/.duet-button.square.sc-duet-button{width:48px !important;min-width:auto !important;height:48px !important;padding:0 !important;font-size:1.25rem;border-color:rgb(225, 227, 230);border-width:1px;border-radius:8px}/*!@.duet-button.square.duet-button-is-small*/.duet-button.square.duet-button-is-small.sc-duet-button{width:28px !important;height:28px !important;padding:0 !important;font-size:1rem}/*!@.duet-button.square.duet-button-negative*/.duet-button.square.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(0, 119, 179);border-color:rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-button.square.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.square.duet-button-negative.sc-duet-button{color:rgb(255, 255, 255) !important;background:rgb(198, 12, 48);border-color:rgb(198, 12, 48)}/*!@.duet-theme-turva .duet-button.square*/.duet-theme-turva.sc-duet-button .duet-button.square.sc-duet-button{border-color:rgb(228, 228, 230)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:rgb(101, 119, 135) !important;cursor:not-allowed;background:rgb(225, 227, 230) !important;border-color:rgb(225, 227, 230) !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:rgb(116, 116, 117) !important;cursor:not-allowed;background:rgb(228, 228, 230) !important;border-color:rgb(228, 228, 230) !important}/*!@.duet-button-is-loading.primary, .duet-button-is-loading.input-button-primary*/.duet-button-is-loading.primary.sc-duet-button,.duet-button-is-loading.input-button-primary.sc-duet-button{color:rgb(255, 255, 255)}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:rgb(0, 119, 179)}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:rgb(198, 12, 48)}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
6993
7007
 
6994
7008
  class DuetButton {
6995
7009
  constructor(hostRef) {
@@ -9688,12 +9702,12 @@ function setYear(date, year) {
9688
9702
  * Check if date is within a min and max
9689
9703
  */
9690
9704
  function inRange(date, min, max) {
9691
- return clamp$1(date, min, max) === date;
9705
+ return clamp$2(date, min, max) === date;
9692
9706
  }
9693
9707
  /**
9694
9708
  * Ensures date is within range, returns min or max if out of bounds
9695
9709
  */
9696
- function clamp$1(date, min, max) {
9710
+ function clamp$2(date, min, max) {
9697
9711
  const time = date.getTime();
9698
9712
  if (min && min instanceof Date && time < min.getTime()) {
9699
9713
  return min;
@@ -10073,16 +10087,16 @@ class DuetDatePicker {
10073
10087
  const min = setMonth(startOfMonth(this.focusedDay), month);
10074
10088
  const max = endOfMonth(min);
10075
10089
  const date = setMonth(this.focusedDay, month);
10076
- this.setFocusedDay(clamp$1(date, min, max));
10090
+ this.setFocusedDay(clamp$2(date, min, max));
10077
10091
  }
10078
10092
  setYear(year) {
10079
10093
  const min = setYear(startOfMonth(this.focusedDay), year);
10080
10094
  const max = endOfMonth(min);
10081
10095
  const date = setYear(this.focusedDay, year);
10082
- this.setFocusedDay(clamp$1(date, min, max));
10096
+ this.setFocusedDay(clamp$2(date, min, max));
10083
10097
  }
10084
10098
  setFocusedDay(day) {
10085
- this.focusedDay = clamp$1(day, parseISODate(this.min), parseISODate(this.max));
10099
+ this.focusedDay = clamp$2(day, parseISODate(this.min), parseISODate(this.max));
10086
10100
  }
10087
10101
  determineValidity(date) {
10088
10102
  var _a, _b;
@@ -10529,6 +10543,7 @@ class DuetFieldset {
10529
10543
  this.label = undefined;
10530
10544
  this.error = undefined;
10531
10545
  this.accessibleLiveError = "polite";
10546
+ this.labelHeadingLevel = "h3";
10532
10547
  this.labelHidden = false;
10533
10548
  }
10534
10549
  /**
@@ -10550,7 +10565,7 @@ class DuetFieldset {
10550
10565
  class: {
10551
10566
  "duet-fieldset": true,
10552
10567
  "duet-theme-turva": this.theme === "turva",
10553
- } }, hAsync("legend", { id: this.labelId }, hAsync("span", null, this.label), this.caption && hAsync("span", null, this.caption)), hAsync("div", { class: {
10568
+ } }, hAsync("legend", { id: this.labelId }, hAsync(this.labelHeadingLevel, null, this.label), this.caption && hAsync("span", null, this.caption)), hAsync("div", { class: {
10554
10569
  "duet-legend-wrapper": true,
10555
10570
  "duet-legend-has-caption": !!this.caption,
10556
10571
  "duet-legend-has-tooltip": this.hasTooltip,
@@ -10569,6 +10584,7 @@ class DuetFieldset {
10569
10584
  "label": [1],
10570
10585
  "error": [1],
10571
10586
  "accessibleLiveError": [1, "accessible-live-error"],
10587
+ "labelHeadingLevel": [1, "label-heading-level"],
10572
10588
  "labelHidden": [4, "label-hidden"],
10573
10589
  "hasTooltip": [32]
10574
10590
  },
@@ -11240,7 +11256,7 @@ class DuetHeader {
11240
11256
  this.hasLanguageChanged = false;
11241
11257
  this.mql = [window.matchMedia(media_query_large.replace(/'/g, ""))];
11242
11258
  this.boundMqlFunctions = [];
11243
- this.handleClick = (event) => {
11259
+ this.handleClick = (event, moveFocusToButton = false) => {
11244
11260
  if (event.data.analyticsId) {
11245
11261
  this.duetAnalytics.emit({
11246
11262
  component: "duet-header",
@@ -11248,8 +11264,8 @@ class DuetHeader {
11248
11264
  });
11249
11265
  }
11250
11266
  this.duetChange.emit(event);
11251
- this.closeMenus();
11252
- this.closeMobileNavigation();
11267
+ this.closeMenus(moveFocusToButton);
11268
+ this.closeMobileNavigation(moveFocusToButton);
11253
11269
  };
11254
11270
  this.handleSessionClick = (ev) => {
11255
11271
  const e = createEvent(ev, this.processedSession);
@@ -11501,7 +11517,7 @@ class DuetHeader {
11501
11517
  // When Esc is pressed
11502
11518
  if (isEscapeKey(ev)) {
11503
11519
  this.closeMenus(true);
11504
- this.closeMobileNavigation();
11520
+ this.closeMobileNavigation(true);
11505
11521
  }
11506
11522
  }
11507
11523
  handleKeyDown(ev) {
@@ -11535,7 +11551,7 @@ class DuetHeader {
11535
11551
  this.language = data.country;
11536
11552
  this.hasLanguageChanged = true;
11537
11553
  const e = createEvent(ev, data);
11538
- this.handleClick(e);
11554
+ this.handleClick(e, true);
11539
11555
  this.duetLanguageSelect.emit(e);
11540
11556
  }
11541
11557
  handleContactClick(ev, data) {
@@ -11571,10 +11587,15 @@ class DuetHeader {
11571
11587
  /**
11572
11588
  * Closes mobile menu in header when called.
11573
11589
  */
11574
- async closeMobileNavigation() {
11590
+ async closeMobileNavigation(moveFocusToButton = false) {
11575
11591
  if (this.isSlideOutOpen) {
11576
11592
  this.isSlideOutOpen = false;
11577
11593
  enableBodyScroll(this.navigationEl);
11594
+ if (moveFocusToButton) {
11595
+ this.navigationElButton.focus({
11596
+ preventScroll: true,
11597
+ });
11598
+ }
11578
11599
  }
11579
11600
  }
11580
11601
  /**
@@ -11666,7 +11687,7 @@ class DuetHeader {
11666
11687
  languageDropdown() ||
11667
11688
  contactDropdown() ||
11668
11689
  this.processedSession ||
11669
- this.processedUser) && (hAsync("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" }, hAsync("duet-visually-hidden", null, this.accessibleLabel), hAsync(DuetHeaderHamburger, null)))), hAsync("div", { ref: el => (this.navigationEl = el), class: {
11690
+ this.processedUser) && (hAsync("button", { ref: el => (this.navigationElButton = el), class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button", "aria-controls": "duet-header-bottom", "aria-expanded": this.isSlideOutOpen ? "true" : "false" }, hAsync("duet-visually-hidden", null, this.accessibleLabel), hAsync(DuetHeaderHamburger, null)))), hAsync("div", { ref: el => (this.navigationEl = el), id: "duet-header-bottom", class: {
11670
11691
  "duet-header-bottom": true,
11671
11692
  active: this.isSlideOutOpen,
11672
11693
  inactive: !this.processedItems,
@@ -12238,7 +12259,7 @@ function cleanValue(input, regex) {
12238
12259
  return newValue;
12239
12260
  }
12240
12261
 
12241
- const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}input[type=search].sc-duet-input::-webkit-search-cancel-button{-webkit-appearance:none}duet-tooltip.sc-duet-input{top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{position:relative;right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:rgb(0, 41, 77);pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input{position:relative;z-index:250}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{position:absolute;top:-24px;right:-24px;min-width:48px;min-height:48px;color:rgb(0, 77, 128)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:active{opacity:0.75;transition:none}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-single.sc-duet-input button.sc-duet-input{top:-48px;right:0}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-double.sc-duet-input button.sc-duet-input{top:-24px;right:12px}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-button.sc-duet-input button.sc-duet-input{top:-24px;right:0}.duet-input-container.has-clear.has-icon.sc-duet-input .duet-input-clear-icon.sc-duet-input{top:-24px;right:24px}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{color:rgb(0, 41, 77)}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}.duet-input-label-container.sc-duet-input{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}@media (min-width: 48em){.duet-input-label-container.sc-duet-input{justify-content:flex-start}}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:rgb(0, 41, 77) !important;cursor:initial !important;background:rgb(255, 255, 255) !important;background-clip:initial !important;border:1px solid rgb(144, 149, 153) !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(222, 35, 98) !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(222, 35, 98) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(224, 42, 13) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(224, 42, 13) !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58) !important;border-color:rgb(116, 116, 117) !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(101, 119, 135);opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input::-moz-placeholder{color:rgb(101, 119, 135);opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(101, 119, 135)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 207, 209)}.duet-input[disabled].sc-duet-input{color:rgb(0, 41, 77) !important;cursor:text !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}.duet-theme-turva.sc-duet-input .duet-input[disabled].sc-duet-input{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(144, 149, 153) !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(116, 116, 117) !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(224, 42, 13)}.duet-input.sc-duet-input:focus{border-color:rgb(0, 119, 179) !important;outline:0;box-shadow:0 0 0 1px rgb(0, 119, 179) !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:rgb(23, 28, 58) !important;box-shadow:0 0 0 1px rgb(23, 28, 58) !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px rgb(224, 42, 13)}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(0, 119, 179)}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(224, 42, 13)}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-right-width:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.duet-input-variation-revealable.sc-duet-input{position:relative;width:100%}.duet-input-variation-revealable.sc-duet-input .sc-duet-input::-ms-reveal{display:none}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto;border:1px solid rgb(144, 149, 153);border-radius:4px;box-shadow:initial;transition:box-shadow 150ms ease, border 150ms ease}.duet-theme-turva.sc-duet-input .duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(116, 116, 117)}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-width:0 !important}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:focus,.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:hover{border-width:0 !important;box-shadow:none !important}.duet-input-variation-revealable.disabled.sc-duet-input .duet-input-relative.sc-duet-input{background:rgb(245, 248, 250);border-color:rgb(225, 227, 230);box-shadow:none}.duet-input-variation-revealable.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(224, 42, 13)}.duet-input-variation-revealable.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(0, 119, 179);box-shadow:0 0 0 1px rgb(0, 119, 179)}.duet-input-variation-revealable.duet-theme-turva.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px rgb(23, 28, 58)}.duet-input-variation-revealable.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(144, 149, 153)}.duet-input-variation-revealable.duet-theme-turva.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(116, 116, 117)}.duet-input-variation-revealable.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(224, 42, 13)}";
12262
+ const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}input[type=search].sc-duet-input::-webkit-search-cancel-button{-webkit-appearance:none}duet-tooltip.sc-duet-input{position:relative;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:rgb(0, 41, 77);pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input{position:relative;z-index:250}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{position:absolute;top:-24px;right:-24px;min-width:48px;min-height:48px;color:rgb(0, 77, 128)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:active{opacity:0.75;transition:none}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-single.sc-duet-input button.sc-duet-input{top:-48px;right:0}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-double.sc-duet-input button.sc-duet-input{top:-24px;right:12px}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-button.sc-duet-input button.sc-duet-input{top:-24px;right:0}.duet-input-container.has-clear.has-icon.sc-duet-input .duet-input-clear-icon.sc-duet-input{top:-24px;right:24px}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{color:rgb(0, 41, 77)}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}.duet-input-label-container.sc-duet-input{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}@media (min-width: 48em){.duet-input-label-container.sc-duet-input{justify-content:flex-start}}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:rgb(0, 41, 77) !important;cursor:initial !important;background:rgb(255, 255, 255) !important;background-clip:initial !important;border:1px solid rgb(144, 149, 153) !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(222, 35, 98) !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(222, 35, 98) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(224, 42, 13) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(224, 42, 13) !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58) !important;border-color:rgb(116, 116, 117) !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(101, 119, 135);opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input::-moz-placeholder{color:rgb(101, 119, 135);opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(101, 119, 135)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 207, 209)}.duet-input[disabled].sc-duet-input{color:rgb(0, 41, 77) !important;cursor:text !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}.duet-theme-turva.sc-duet-input .duet-input[disabled].sc-duet-input{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(144, 149, 153) !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(116, 116, 117) !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px rgb(224, 42, 13)}.duet-input.sc-duet-input:focus{border-color:rgb(0, 119, 179) !important;outline:0;box-shadow:0 0 0 1px rgb(0, 119, 179) !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:rgb(23, 28, 58) !important;box-shadow:0 0 0 1px rgb(23, 28, 58) !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px rgb(224, 42, 13)}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(0, 119, 179)}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(224, 42, 13)}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-right-width:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.duet-input-variation-revealable.sc-duet-input{position:relative;width:100%}.duet-input-variation-revealable.sc-duet-input .sc-duet-input::-ms-reveal{display:none}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto;border:1px solid rgb(144, 149, 153);border-radius:4px;box-shadow:initial;transition:box-shadow 150ms ease, border 150ms ease}.duet-theme-turva.sc-duet-input .duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(116, 116, 117)}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-width:0 !important}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:focus,.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:hover{border-width:0 !important;box-shadow:none !important}.duet-input-variation-revealable.disabled.sc-duet-input .duet-input-relative.sc-duet-input{background:rgb(245, 248, 250);border-color:rgb(225, 227, 230);box-shadow:none}.duet-input-variation-revealable.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(224, 42, 13)}.duet-input-variation-revealable.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(0, 119, 179);box-shadow:0 0 0 1px rgb(0, 119, 179)}.duet-input-variation-revealable.duet-theme-turva.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px rgb(23, 28, 58)}.duet-input-variation-revealable.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(144, 149, 153)}.duet-input-variation-revealable.duet-theme-turva.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(116, 116, 117)}.duet-input-variation-revealable.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px rgb(224, 42, 13)}";
12242
12263
 
12243
12264
  const icons = {
12244
12265
  search: formSearch,
@@ -13144,7 +13165,8 @@ class DuetMenuBar {
13144
13165
  });
13145
13166
  if (active && active.offsetLeft) {
13146
13167
  if (active.offsetLeft > 50) {
13147
- this.container.scrollLeft = active.offsetLeft - this.element.offsetWidth / 2 + active.offsetWidth / 2;
13168
+ this.container.scrollLeft =
13169
+ active.offsetLeft - this.element.getBoundingClientRect().width / 2 + active.offsetWidth / 2;
13148
13170
  }
13149
13171
  }
13150
13172
  };
@@ -13622,6 +13644,88 @@ class DuetMenuBarLink {
13622
13644
  }; }
13623
13645
  }
13624
13646
 
13647
+ /**
13648
+ * Teleport helps resolving z-index issues of overlapping popup elements.
13649
+ * Initiate it in your component's willLoad or didLoad lifecycle hook.
13650
+ * When you open the popup, call teleport.go() and move focus to the popup.
13651
+ * When you close the popup, call teleport.resume() and move focus to the element that opened the popup.
13652
+ * If your popup has closing animation, use the timeout parameter.
13653
+ */
13654
+ class Teleport {
13655
+ constructor(element, target) {
13656
+ this.element = element;
13657
+ this.target = target || document.body;
13658
+ this.teleportId = `${Math.random()}-${Date.now()}`.substring(2);
13659
+ }
13660
+ /**
13661
+ * @param makeSiblingsInert - make all siblings of the element inert, use only with modals
13662
+ */
13663
+ go(makeSiblingsInert = false) {
13664
+ this.stub = document.createElement("div");
13665
+ this.element.insertAdjacentElement("afterend", this.stub);
13666
+ this.target.appendChild(this.element);
13667
+ if (makeSiblingsInert) {
13668
+ this._makeSiblingsInert();
13669
+ }
13670
+ this.deletionObserver = new MutationObserver(this._deletionObserverCallback.bind(this));
13671
+ this.deletionObserver.observe(document.documentElement, { childList: true, subtree: true });
13672
+ }
13673
+ resume(delay = 0) {
13674
+ if (delay) {
13675
+ setTimeout(this._resume.bind(this), delay);
13676
+ }
13677
+ else {
13678
+ this._resume();
13679
+ }
13680
+ }
13681
+ _resume() {
13682
+ this.stub.insertAdjacentElement("beforebegin", this.element);
13683
+ this.stub.remove();
13684
+ this._removeInertFromSiblings();
13685
+ this.deletionObserver.disconnect();
13686
+ }
13687
+ _remove() {
13688
+ var _a, _b;
13689
+ (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();
13690
+ (_b = this.stub) === null || _b === void 0 ? void 0 : _b.remove();
13691
+ this._removeInertFromSiblings();
13692
+ this.deletionObserver.disconnect();
13693
+ }
13694
+ _makeSiblingsInert() {
13695
+ const siblings = Array.from(this.target.children);
13696
+ siblings.forEach(sibling => {
13697
+ if (sibling !== this.element) {
13698
+ sibling.dataset.duetTeleportId = (sibling.dataset.duetTeleportId || "") + this.teleportId;
13699
+ sibling.inert = true;
13700
+ }
13701
+ });
13702
+ }
13703
+ _removeInertFromSiblings() {
13704
+ const siblings = Array.from(this.target.children);
13705
+ siblings.forEach(sibling => {
13706
+ var _a;
13707
+ if ((_a = sibling.dataset.duetTeleportId) === null || _a === void 0 ? void 0 : _a.includes(this.teleportId)) {
13708
+ sibling.dataset.duetTeleportId = sibling.dataset.duetTeleportId.replace(this.teleportId, "");
13709
+ if (sibling.dataset.duetTeleportId === "") {
13710
+ delete sibling.dataset.duetTeleportId;
13711
+ sibling.inert = false;
13712
+ }
13713
+ }
13714
+ });
13715
+ }
13716
+ /**
13717
+ * If the teleported element or its component (observed via stub) is removed from DOM, clean up the teleport.
13718
+ */
13719
+ _deletionObserverCallback(mutationList) {
13720
+ mutationList.forEach(mutation => {
13721
+ if (Array.from(mutation.removedNodes).includes(this.element) ||
13722
+ Array.from(mutation.removedNodes).some(n => n.contains(this.stub))) {
13723
+ this._remove();
13724
+ }
13725
+ });
13726
+ }
13727
+ }
13728
+
13625
13729
  const duetModalCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-modal,*.sc-duet-modal::after,*.sc-duet-modal::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-modal-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-modal-overlay*/.duet-modal-overlay.sc-duet-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;max-height:100vh;overflow-y:auto;visibility:hidden;background:rgba(0, 41, 77, 0.85);opacity:0;transition:300ms ease;transition-delay:200ms}/*!@.duet-modal-overlay.duet-theme-turva*/.duet-modal-overlay.duet-theme-turva.sc-duet-modal{background:rgba(23, 28, 58, 0.85)}/*!@.duet-modal-overlay.duet-modal-active*/.duet-modal-overlay.duet-modal-active.sc-duet-modal{visibility:visible;opacity:1;transition:300ms ease;transition-delay:0s}/*!@.duet-modal-overlay.duet-disable-transitions*/.duet-modal-overlay.duet-disable-transitions.sc-duet-modal{transition:none}/*!@::slotted(img)*/.sc-duet-modal-s>img{width:100%}/*!@.duet-modal-inner*/.duet-modal-inner.sc-duet-modal{display:flex;align-items:center;width:100%;min-height:100%;padding:20px 16px}@media (min-width: 36em){/*!@.duet-modal-inner*/.duet-modal-inner.sc-duet-modal{padding:48px 16px}}@media (max-width: 35.9375em){/*!@.duet-modal-inner.duet-modal-large*/.duet-modal-inner.duet-modal-large.sc-duet-modal{padding-right:0;padding-left:0}}/*!@.duet-modal*/.duet-modal.sc-duet-modal{position:relative;width:100%;max-width:686px;margin:auto;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:rgb(0, 41, 77);background:rgb(255, 255, 255);border-radius:4px;opacity:0;transition:300ms ease;transition-delay:0ms;transform:scale(0.96)}/*!@.duet-theme-turva .duet-modal*/.duet-theme-turva.sc-duet-modal .duet-modal.sc-duet-modal{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58)}/*!@.duet-modal-active .duet-modal*/.duet-modal-active.sc-duet-modal .duet-modal.sc-duet-modal{opacity:1;transition:300ms ease;transition-delay:200ms;transform:none}/*!@.duet-disable-transitions .duet-modal*/.duet-disable-transitions.sc-duet-modal .duet-modal.sc-duet-modal{transition:none}/*!@.duet-modal.small*/.duet-modal.small.sc-duet-modal{max-width:545px}/*!@.duet-modal.large*/.duet-modal.large.sc-duet-modal{max-width:100%}@media (min-width: 36em){/*!@.duet-modal.large*/.duet-modal.large.sc-duet-modal{max-width:1110px}}/*!@.duet-modal:focus*/.duet-modal.sc-duet-modal:focus{outline:0}/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{width:100%;padding:36px 28px}/*!@.duet-modal-body.duet-modal-gutter-none*/.duet-modal-body.duet-modal-gutter-none.sc-duet-modal{padding:0 !important}/*!@.duet-modal-body.duet-modal-gutter-small*/.duet-modal-body.duet-modal-gutter-small.sc-duet-modal{padding:36px 20px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:48px 36px}@media (max-width: 22.5em){/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{padding:36px 20px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:48px 28px}}@media (max-width: 35.9375em){/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{padding:36px 20px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:48px 36px}}@media (min-width: 36em){/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{padding:36px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:28px 72px}}@media (min-width: 48em){/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{padding:36px 72px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:36px 72px}}@media (min-width: 76.25em){/*!@.duet-modal-body*/.duet-modal-body.sc-duet-modal{padding:36px 48px 48px}/*!@.duet-modal-body.duet-modal-gutter-large*/.duet-modal-body.duet-modal-gutter-large.sc-duet-modal{padding:48px 94px}/*!@.small .duet-modal-body*/.small.sc-duet-modal .duet-modal-body.sc-duet-modal{padding:36px 48px}}/*!@.duet-modal-header*/.duet-modal-header.sc-duet-modal{text-align:center}/*!@.duet-modal-close*/.duet-modal-close.sc-duet-modal{position:absolute;top:12px;right:12px}/*!@.duet-modal-heading*/.duet-modal-heading.sc-duet-modal{width:100%;padding-right:60px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1.25rem;font-style:normal;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25;color:rgb(0, 41, 77);text-decoration:none;text-overflow:ellipsis;letter-spacing:-0.01rem;white-space:nowrap}/*!@.duet-modal-heading.duet-p-0*/.duet-modal-heading.duet-p-0.sc-duet-modal{padding:0 !important}/*!@.duet-modal-heading.duet-m-0*/.duet-modal-heading.duet-m-0.sc-duet-modal{margin:0 !important}";
13626
13730
 
13627
13731
  // The transition below is slightly higher than the actual CSS transition as VoiceOver on
@@ -13690,6 +13794,7 @@ class DuetModal {
13690
13794
  }
13691
13795
  this.focusedElBeforeOpen = document.activeElement;
13692
13796
  disableBodyScroll(this.modalEl, { reserveScrollBarGap: true });
13797
+ this.teleport.go(true);
13693
13798
  setTimeout(() => {
13694
13799
  this.buttonEl.setFocus();
13695
13800
  }, TRANSITION_MS);
@@ -13707,6 +13812,7 @@ class DuetModal {
13707
13812
  this.modalEl.classList.remove("duet-disable-transitions");
13708
13813
  enableBodyScroll(this.modalEl);
13709
13814
  this.duetClose.emit();
13815
+ this.teleport.resume(TRANSITION_MS);
13710
13816
  setTimeout(() => {
13711
13817
  focusElement(this.focusedElBeforeOpen);
13712
13818
  }, TRANSITION_MS);
@@ -13730,6 +13836,7 @@ class DuetModal {
13730
13836
  inheritGlobalTheme(this);
13731
13837
  }
13732
13838
  componentDidLoad() {
13839
+ this.teleport = new Teleport(this.element);
13733
13840
  if (this.active) {
13734
13841
  // This specific line below can’t be moved to componentWillLoad()
13735
13842
  // as it breaks body scroll enabling.
@@ -13858,7 +13965,7 @@ class DuetModal {
13858
13965
  }; }
13859
13966
  }
13860
13967
 
13861
- const duetMultiselectCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-multiselect,*.sc-duet-multiselect::after,*.sc-duet-multiselect::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-multiselect-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;max-width:100%;vertical-align:bottom}/*!@:host:last-child, :host:last-of-type*/.sc-duet-multiselect-h:last-child,.sc-duet-multiselect-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){/*!@:host*/.sc-duet-multiselect-h{width:calc(50% - 16px - 3px)}/*!@:host.duet-expand*/.duet-expand.sc-duet-multiselect-h{width:100% !important}}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-multiselect-h{margin:0 !important}/*!@.duet-multiselect-tooltip*/.duet-multiselect-tooltip.sc-duet-multiselect{position:absolute;top:12px;right:0}@media (min-width: 48em){/*!@.duet-multiselect-tooltip*/.duet-multiselect-tooltip.sc-duet-multiselect{position:relative;top:4px;right:auto}}/*!@.duet-multiselect-placeholder*/.duet-multiselect-placeholder.sc-duet-multiselect{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}/*!@.duet-multiselect-container*/.duet-multiselect-container.sc-duet-multiselect{position:relative;width:100%}/*!@.duet-multiselect-wrapper*/.duet-multiselect-wrapper.sc-duet-multiselect{position:relative;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;font-weight:400;line-height:1.25}/*!@.duet-theme-turva .duet-multiselect-wrapper*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-wrapper.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-multiselect*/.duet-multiselect.sc-duet-multiselect{display:flex;gap:12px;align-items:center;justify-content:flex-start;width:100%;min-width:8rem;padding:12px 14px !important;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:rgb(0, 41, 77);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:rgb(255, 255, 255);border:1px solid rgb(144, 149, 153);border-radius:4px;transition:150ms ease}/*!@.duet-multiselect:hover*/.duet-multiselect.sc-duet-multiselect:hover{border-color:rgb(144, 149, 153);box-shadow:0 0 0 1px rgb(144, 149, 153)}/*!@.duet-theme-turva .duet-multiselect:hover*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{border-color:rgb(116, 116, 117);box-shadow:0 0 0 1px rgb(116, 116, 117)}/*!@.has-error .duet-multiselect:hover*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{box-shadow:0 0 0 1px rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect:hover*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{box-shadow:0 0 0 1px rgb(224, 42, 13)}/*!@.duet-multiselect:focus, .duet-multiselect.duet-multiselect-active*/.duet-multiselect.sc-duet-multiselect:focus,.duet-multiselect.duet-multiselect-active.sc-duet-multiselect{border-color:rgb(0, 119, 179);outline:0;box-shadow:0 0 0 1px rgb(0, 119, 179);transition:none}/*!@.duet-theme-turva .duet-multiselect:focus, .duet-theme-turva .duet-multiselect.duet-multiselect-active*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.duet-theme-turva.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px rgb(23, 28, 58)}/*!@.has-error .duet-multiselect:focus, .has-error .duet-multiselect.duet-multiselect-active*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.has-error.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{box-shadow:0 0 0 1px rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect:focus, .duet-theme-turva.has-error .duet-multiselect.duet-multiselect-active*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{box-shadow:0 0 0 1px rgb(224, 42, 13)}/*!@.duet-multiselect[disabled]*/.duet-multiselect[disabled].sc-duet-multiselect{color:rgb(0, 41, 77) !important;cursor:default !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}/*!@.duet-theme-turva .duet-multiselect[disabled]*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect[disabled].sc-duet-multiselect{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}/*!@.duet-multiselect > :first-child*/.duet-multiselect.sc-duet-multiselect>.sc-duet-multiselect:first-child{flex:1;min-height:24px}/*!@.duet-multiselect .duet-multiselect-badge*/.duet-multiselect.sc-duet-multiselect .duet-multiselect-badge.sc-duet-multiselect{position:absolute;right:3rem}/*!@.has-error .duet-multiselect*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{border-color:rgb(222, 35, 98) !important}/*!@.has-error .duet-multiselect .duet-multiselect-icon*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect .duet-multiselect-icon.sc-duet-multiselect{color:rgb(222, 35, 98) !important}/*!@.duet-theme-turva.has-error .duet-multiselect*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{border-color:rgb(224, 42, 13) !important}/*!@.duet-theme-turva.has-error .duet-multiselect .duet-multiselect-icon*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect .duet-multiselect-icon.sc-duet-multiselect{color:rgb(224, 42, 13) !important}/*!@.duet-theme-turva .duet-multiselect*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58);border-color:rgb(116, 116, 117)}/*!@.duet-multiselect svg*/.duet-multiselect.sc-duet-multiselect svg.sc-duet-multiselect{width:20px;height:20px;color:rgb(0, 41, 77);pointer-events:none}/*!@.duet-theme-turva .duet-multiselect svg*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect svg.sc-duet-multiselect{color:rgb(23, 28, 58)}/*!@.duet-multiselect svg.duet-multiselect-icon--rotate*/.duet-multiselect.sc-duet-multiselect svg.duet-multiselect-icon--rotate.sc-duet-multiselect{transform:rotate(180deg)}/*!@.duet-multiselect-checkboxes*/.duet-multiselect-checkboxes.sc-duet-multiselect{position:absolute;z-index:700;width:100%;padding:16px;margin:8px 0 0;visibility:hidden;background:rgb(255, 255, 255);border:1px solid rgb(225, 227, 230);border-radius:4px;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:transform 300ms ease, opacity 300ms ease, visibility 300ms ease;transform:scale(0.96) translateZ(0) translateY(-20px);transform-origin:top right}/*!@.duet-theme-turva .duet-multiselect-checkboxes*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-checkboxes.sc-duet-multiselect{background:rgb(255, 255, 255);border-color:rgb(228, 228, 230);box-shadow:0 4px 10px 0 rgba(23, 28, 58, 0.15)}/*!@.duet-multiselect-checkboxes.duet-multiselect-checkboxes-active*/.duet-multiselect-checkboxes.duet-multiselect-checkboxes-active.sc-duet-multiselect{visibility:visible;opacity:1;transition-property:transform, opacity;transform:scale(1.0001) translateZ(0) translateY(0)}/*!@.duet-multiselect-help*/.duet-multiselect-help.sc-duet-multiselect{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}/*!@.duet-multiselect-help span*/.duet-multiselect-help.sc-duet-multiselect span.sc-duet-multiselect{display:block;margin-top:8px}/*!@.duet-theme-turva .duet-multiselect-help*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}/*!@.has-error .duet-multiselect-help*/.has-error.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{color:rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect-help*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{color:rgb(224, 42, 13)}/*!@.duet-label-hidden duet-label*/.duet-label-hidden.sc-duet-multiselect duet-label.sc-duet-multiselect{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
13968
+ const duetMultiselectCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-multiselect,*.sc-duet-multiselect::after,*.sc-duet-multiselect::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-multiselect-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;max-width:100%;vertical-align:bottom}/*!@:host:last-child, :host:last-of-type*/.sc-duet-multiselect-h:last-child,.sc-duet-multiselect-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){/*!@:host*/.sc-duet-multiselect-h{width:calc(50% - 16px - 3px)}/*!@:host.duet-expand*/.duet-expand.sc-duet-multiselect-h{width:100% !important}}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-multiselect-h{margin:0 !important}/*!@.duet-multiselect-tooltip*/.duet-multiselect-tooltip.sc-duet-multiselect{position:absolute;top:12px;right:0}@media (min-width: 48em){/*!@.duet-multiselect-tooltip*/.duet-multiselect-tooltip.sc-duet-multiselect{position:relative;top:4px;right:auto}}/*!@.duet-multiselect-placeholder*/.duet-multiselect-placeholder.sc-duet-multiselect{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}/*!@.duet-multiselect-container*/.duet-multiselect-container.sc-duet-multiselect{position:relative;width:100%}/*!@.duet-multiselect-wrapper*/.duet-multiselect-wrapper.sc-duet-multiselect{position:relative;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;font-weight:400;line-height:1.25}/*!@.duet-theme-turva .duet-multiselect-wrapper*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-wrapper.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-multiselect*/.duet-multiselect.sc-duet-multiselect{display:flex;gap:12px;align-items:center;justify-content:flex-start;width:100%;min-width:8rem;padding:12px 14px !important;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:rgb(0, 41, 77);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:rgb(255, 255, 255);border:1px solid rgb(144, 149, 153);border-radius:4px;transition:150ms ease}/*!@.duet-multiselect:hover*/.duet-multiselect.sc-duet-multiselect:hover{border-color:rgb(144, 149, 153);box-shadow:0 0 0 1px rgb(144, 149, 153)}/*!@.duet-theme-turva .duet-multiselect:hover*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{border-color:rgb(116, 116, 117);box-shadow:0 0 0 1px rgb(116, 116, 117)}/*!@.has-error .duet-multiselect:hover*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{box-shadow:0 0 0 1px rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect:hover*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:hover{box-shadow:0 0 0 1px rgb(224, 42, 13)}/*!@.duet-multiselect:focus, .duet-multiselect.duet-multiselect-active*/.duet-multiselect.sc-duet-multiselect:focus,.duet-multiselect.duet-multiselect-active.sc-duet-multiselect{border-color:rgb(0, 119, 179);outline:0;box-shadow:0 0 0 1px rgb(0, 119, 179);transition:none}/*!@.duet-theme-turva .duet-multiselect:focus, .duet-theme-turva .duet-multiselect.duet-multiselect-active*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.duet-theme-turva.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px rgb(23, 28, 58)}/*!@.has-error .duet-multiselect:focus, .has-error .duet-multiselect.duet-multiselect-active*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.has-error.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{box-shadow:0 0 0 1px rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect:focus, .duet-theme-turva.has-error .duet-multiselect.duet-multiselect-active*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect:focus,.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.duet-multiselect-active.sc-duet-multiselect{box-shadow:0 0 0 1px rgb(224, 42, 13)}/*!@.duet-multiselect[disabled]*/.duet-multiselect[disabled].sc-duet-multiselect{color:rgb(0, 41, 77) !important;cursor:default !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}/*!@.duet-theme-turva .duet-multiselect[disabled]*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect[disabled].sc-duet-multiselect{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}/*!@.duet-multiselect > :first-child*/.duet-multiselect.sc-duet-multiselect>.sc-duet-multiselect:first-child{flex:1;min-height:24px}/*!@.duet-multiselect .duet-multiselect-badge*/.duet-multiselect.sc-duet-multiselect .duet-multiselect-badge.sc-duet-multiselect{position:absolute;right:3rem}/*!@.has-error .duet-multiselect*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{border-color:rgb(222, 35, 98) !important}/*!@.has-error .duet-multiselect .duet-multiselect-icon*/.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect .duet-multiselect-icon.sc-duet-multiselect{color:rgb(222, 35, 98) !important}/*!@.duet-theme-turva.has-error .duet-multiselect*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{border-color:rgb(224, 42, 13) !important}/*!@.duet-theme-turva.has-error .duet-multiselect .duet-multiselect-icon*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect .duet-multiselect-icon.sc-duet-multiselect{color:rgb(224, 42, 13) !important}/*!@.duet-theme-turva .duet-multiselect*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58);border-color:rgb(116, 116, 117)}/*!@.duet-multiselect svg*/.duet-multiselect.sc-duet-multiselect svg.sc-duet-multiselect{width:20px;height:20px;color:rgb(0, 41, 77);pointer-events:none}/*!@.duet-theme-turva .duet-multiselect svg*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect.sc-duet-multiselect svg.sc-duet-multiselect{color:rgb(23, 28, 58)}/*!@.duet-multiselect svg.duet-multiselect-icon--rotate*/.duet-multiselect.sc-duet-multiselect svg.duet-multiselect-icon--rotate.sc-duet-multiselect{transform:rotate(180deg)}/*!@.duet-multiselect-checkboxes*/.duet-multiselect-checkboxes.sc-duet-multiselect{position:absolute;z-index:700;width:100%;padding:16px;margin:8px 0 0;visibility:hidden;background:rgb(255, 255, 255);border:1px solid rgb(225, 227, 230);border-radius:4px;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:transform 300ms ease, opacity 300ms ease, visibility 300ms ease;transform:scale(0.96) translateZ(0) translateY(-20px);transform-origin:top right}/*!@.duet-theme-turva .duet-multiselect-checkboxes*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-checkboxes.sc-duet-multiselect{background:rgb(255, 255, 255);border-color:rgb(228, 228, 230);box-shadow:0 4px 10px 0 rgba(23, 28, 58, 0.15)}/*!@.duet-multiselect-checkboxes.duet-multiselect-checkboxes-active*/.duet-multiselect-checkboxes.duet-multiselect-checkboxes-active.sc-duet-multiselect{visibility:visible;opacity:1;transition-property:transform, opacity;transform:scale(1.0001) translateZ(0) translateY(0)}/*!@.duet-multiselect-checkboxes .duet-multiselect-all-control-buttons*/.duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect{padding:8px 0;margin:-16px;margin-bottom:16px;border-bottom:1px solid rgb(225, 227, 230)}/*!@.duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button*/.duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect{padding:6px 16px;margin:-4px 0;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:600;color:rgb(0, 119, 179);cursor:pointer;border-radius:4px}/*!@.duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button:first-child*/.duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect:first-child{border-right:1px solid rgb(225, 227, 230)}/*!@.duet-theme-turva .duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(198, 12, 48)}/*!@.duet-theme-turva .duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button:focus*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}/*!@.duet-theme-turva .duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button:hover*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect:hover{color:rgb(23, 28, 58)}/*!@.duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button:focus*/.duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}/*!@.duet-multiselect-checkboxes .duet-multiselect-all-control-buttons button:hover*/.duet-multiselect-checkboxes.sc-duet-multiselect .duet-multiselect-all-control-buttons.sc-duet-multiselect button.sc-duet-multiselect:hover{color:rgb(0, 41, 77)}/*!@.duet-multiselect-help*/.duet-multiselect-help.sc-duet-multiselect{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}/*!@.duet-multiselect-help span*/.duet-multiselect-help.sc-duet-multiselect span.sc-duet-multiselect{display:block;margin-top:8px}/*!@.duet-theme-turva .duet-multiselect-help*/.duet-theme-turva.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}/*!@.has-error .duet-multiselect-help*/.has-error.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{color:rgb(222, 35, 98)}/*!@.duet-theme-turva.has-error .duet-multiselect-help*/.duet-theme-turva.has-error.sc-duet-multiselect .duet-multiselect-help.sc-duet-multiselect{color:rgb(224, 42, 13)}/*!@.duet-label-hidden duet-label*/.duet-label-hidden.sc-duet-multiselect duet-label.sc-duet-multiselect{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
13862
13969
 
13863
13970
  function toggleInArray(arr, item) {
13864
13971
  return arr.includes(item) ? arr.filter(i => i !== item) : [...arr, item];
@@ -13880,6 +13987,16 @@ class DuetMultiselect {
13880
13987
  fi: "valittu",
13881
13988
  sv: "vald",
13882
13989
  };
13990
+ this.selectAllLabel = {
13991
+ en: "Select all",
13992
+ fi: "Valitse kaikki",
13993
+ sv: "Välj alla",
13994
+ };
13995
+ this.clearAllLabel = {
13996
+ en: "Clear all",
13997
+ fi: "Tyhjennä kaikki",
13998
+ sv: "Rensa alla",
13999
+ };
13883
14000
  /**
13884
14001
  * Component event handling.
13885
14002
  */
@@ -13919,7 +14036,7 @@ class DuetMultiselect {
13919
14036
  this.toggleCheckboxes();
13920
14037
  setTimeout(() => {
13921
14038
  if (this.checkboxesVisible) {
13922
- const firstOption = this.element.shadowRoot.querySelector(`#${this.getOptionIdentifier(0)}`);
14039
+ const firstOption = this.element.shadowRoot.querySelector(`#${this.getOptionIdentifier(this.allControls ? -2 : 0)}`);
13923
14040
  if (firstOption) {
13924
14041
  firstOption.focus();
13925
14042
  }
@@ -13948,6 +14065,14 @@ class DuetMultiselect {
13948
14065
  this.value = toggleInArray(this.value, item);
13949
14066
  this.onChange(e);
13950
14067
  };
14068
+ this.handleSelectAllClick = (e) => {
14069
+ this.value = this.processedItems;
14070
+ this.onChange(e);
14071
+ };
14072
+ this.handleClearAllClick = (e) => {
14073
+ this.value = [];
14074
+ this.onChange(e);
14075
+ };
13951
14076
  this.getOptionIdentifier = (key) => {
13952
14077
  return `${this.identifier}-option-${key}`;
13953
14078
  };
@@ -13976,6 +14101,7 @@ class DuetMultiselect {
13976
14101
  this.theme = "";
13977
14102
  this.labelHidden = false;
13978
14103
  this.identifier = createID("DuetMultiselect");
14104
+ this.allControls = false;
13979
14105
  this.placeholder = "";
13980
14106
  this.caption = undefined;
13981
14107
  this.items = undefined;
@@ -14037,7 +14163,7 @@ class DuetMultiselect {
14037
14163
  }, onKeyDown: (e) => this.onMultiselectKeyDown(e) }, hAsync("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: this.identifier }, this.label), this.tooltip && (hAsync("duet-tooltip", { class: "duet-multiselect-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-multiselect-wrapper" }, hAsync("button", { id: this.identifier, ref: el => (this.multiselectElement = el), class: { "duet-multiselect": true, "duet-multiselect-active": this.checkboxesVisible }, tabindex: "0", onClick: () => this.toggleCheckboxes(), onFocus: e => this.onFocus(e), onBlur: e => this.onBlur(e), role: "combobox", "aria-expanded": this.checkboxesVisible ? "true" : "false", "aria-haspopup": "listbox", "aria-labelledby": this.labelId, "aria-describedby": this.getDescribedBy(), "aria-owns": `${this.identifier}-checkboxes`, onKeyDown: (e) => this.onMultiselectInputKeyDown(e), disabled: this.disabled }, hAsync("span", { role: "textbox", "aria-readonly": "true", "aria-multiline": "false", "aria-autocomplete": "none", "aria-controls": `${this.identifier}-checkboxes` }, this.placeholder), this.value && this.value.length > 0 && (hAsync("duet-badge", { class: "duet-multiselect-badge", margin: "none", theme: this.theme }, this.value.length, " ", this.selectedLangObject[this.language], hAsync("duet-visually-hidden", null, ", ", this.value.map(item => item.label).join(", ")))), hAsync("svg", { role: "img", class: { "duet-multiselect-icon": true, "duet-multiselect-icon--rotate": this.checkboxesVisible }, fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, hAsync("path", { d: "m12 18.999c-.4 0-.776-.156-1.059-.438l-10.721-10.72c-.142-.142-.22-.33-.22-.531 0-.2.078-.389.22-.53.142-.142.33-.22.53-.22s.389.078.53.22l10.72 10.719 10.72-10.719c.142-.142.33-.22.53-.22s.389.078.53.22c.142.142.22.33.22.53s-.078.389-.22.53l-10.72 10.72c-.282.283-.659.439-1.06.439z" }))), hAsync("div", { id: `${this.identifier}-checkboxes`, role: "listbox", class: {
14038
14164
  "duet-multiselect-checkboxes": true,
14039
14165
  "duet-multiselect-checkboxes-active": this.checkboxesVisible,
14040
- }, "aria-activedescendant": this.activeDescendant, "aria-multiselectable": "true" }, this.processedItems &&
14166
+ }, "aria-activedescendant": this.activeDescendant, "aria-multiselectable": "true" }, this.processedItems && this.allControls && (hAsync("div", { class: "duet-multiselect-all-control-buttons" }, hAsync("button", { class: "duet-multiselect-select-all", onClick: this.handleSelectAllClick, id: this.getOptionIdentifier(-2), onKeyDown: (e) => this.onCheckboxKeyDown(e, -2) }, this.selectAllLabel[this.language]), hAsync("button", { class: "duet-multiselect-clear-all", onClick: this.handleClearAllClick, id: this.getOptionIdentifier(-1), onKeyDown: (e) => this.onCheckboxKeyDown(e, -1) }, this.clearAllLabel[this.language]))), this.processedItems &&
14041
14167
  this.processedItems.map((item, key) => {
14042
14168
  var _a, _b;
14043
14169
  return (hAsync("duet-checkbox", { identifier: this.getOptionIdentifier(key), role: "option", label: item.label, value: item.value, key: item.value, checked: (_a = this.value) === null || _a === void 0 ? void 0 : _a.includes(item), "accessible-selected": ((_b = this.value) === null || _b === void 0 ? void 0 : _b.includes(item)) ? "true" : undefined, disabled: !this.checkboxesVisible || item.disabled, onDuetChange: e => this.toggleCheckbox(e, item), onKeyDown: (e) => this.onCheckboxKeyDown(e, key), theme: this.theme }));
@@ -14060,6 +14186,7 @@ class DuetMultiselect {
14060
14186
  "theme": [1025],
14061
14187
  "labelHidden": [4, "label-hidden"],
14062
14188
  "identifier": [1],
14189
+ "allControls": [4, "all-controls"],
14063
14190
  "placeholder": [1],
14064
14191
  "caption": [1],
14065
14192
  "items": [1],
@@ -14335,6 +14462,9 @@ var actionSubtract={"title":"action-subtract","tags":"action subtract minus remo
14335
14462
  function SafeParseFloat(value, locale) {
14336
14463
  let results;
14337
14464
  if (typeof value === "string") {
14465
+ if (value === "") {
14466
+ return null;
14467
+ }
14338
14468
  //the minuses are NOT the same characters, they differ in unicode for some languages
14339
14469
  // "‐", "−", "–", and "—"
14340
14470
  let convertedMinus = value.replace("−", "-").replace("‐", "-").replace("−", "-").replace("–", "-").replace("—", "-");
@@ -14397,7 +14527,7 @@ function ConvertToEnUS(value, locale, replaceThousands = false) {
14397
14527
  return replacedValue;
14398
14528
  }
14399
14529
  const roundTo = (val, multiple) => Math.round(val / multiple) * multiple;
14400
- const clamp = (val, min, max) => Math.min(Math.max(val, min), max);
14530
+ const clamp$1 = (val, min, max) => Math.min(Math.max(val, min), max);
14401
14531
 
14402
14532
  const duetNumberInputCss = "*.sc-duet-number-input,*.sc-duet-number-input::after,*.sc-duet-number-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-number-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;line-height:1.25;text-align:left;vertical-align:bottom}.sc-duet-number-input-h:last-child,.sc-duet-number-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-number-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-number-input-h{width:100% !important}.duet-m-0.sc-duet-number-input-h{margin:0 !important}.duet-number-container.sc-duet-number-input{position:relative;width:100%}.duet-number-buttons.sc-duet-number-input{-webkit-user-select:none;user-select:none;position:absolute;top:1px;right:1px;z-index:200;width:96px;height:calc(100% - 2px)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input{position:relative;display:inline-flex;align-items:center;justify-content:center;width:50%;height:100%;text-align:center;cursor:pointer;background:transparent;-webkit-appearance:none;appearance:none}.duet-number-buttons.sc-duet-number-input .duet-number-button[aria-disabled=true].sc-duet-number-input,.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:disabled{pointer-events:none}.duet-number-buttons.sc-duet-number-input .duet-number-button[aria-disabled=true].sc-duet-number-input duet-icon.sc-duet-number-input,.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:disabled duet-icon.sc-duet-number-input{opacity:0.4}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:active duet-icon.sc-duet-number-input{transform:translateY(1px)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{outline:0}.user-is-tabbing.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{z-index:2;box-shadow:0 0 0 2px rgb(0, 119, 179)}.duet-theme-turva .user-is-tabbing.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{box-shadow:0 0 0 2px rgb(23, 28, 58)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type{border-left:1px solid rgb(207, 210, 212)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type::before{position:absolute;top:0;left:-6px;width:6px;height:100%;content:\"\";background:linear-gradient(to left, rgba(207, 210, 212, 0.2) 0%, rgba(207, 210, 212, 0.2) 1px, rgba(207, 210, 212, 0.1) 1px, rgba(207, 210, 212, 0) 100%)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type{border-top-right-radius:4px;border-bottom-right-radius:4px}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type::before{position:absolute;top:20%;left:0;width:1px;height:60%;content:\"\";background:rgb(225, 227, 230)}.duet-theme-turva.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type::before{background:linear-gradient(to left, rgba(207, 207, 209, 0.2) 0%, rgba(207, 207, 209, 0.2) 1px, rgba(207, 207, 209, 0.1) 1px, rgba(207, 207, 209, 0) 100%)}.duet-theme-turva.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type::before{background:rgb(228, 228, 230)}";
14403
14533
 
@@ -14476,7 +14606,7 @@ class DuetNumberInput {
14476
14606
  if (this.rounding) {
14477
14607
  value = roundTo(value, this.step);
14478
14608
  }
14479
- value = clamp(value, this.min, this.max);
14609
+ value = clamp$1(value, this.min, this.max);
14480
14610
  if (value !== SafeParseFloat(this.value, this.locale) ||
14481
14611
  value !== SafeParseFloat(this.focusedValue, this.locale)) {
14482
14612
  this.setValue(value);
@@ -14541,7 +14671,7 @@ class DuetNumberInput {
14541
14671
  const adjustment = newValue % this.step;
14542
14672
  newValue -= adjustment;
14543
14673
  }
14544
- const clampedValue = clamp(newValue, this.min, this.max);
14674
+ const clampedValue = clamp$1(newValue, this.min, this.max);
14545
14675
  this.value = this.localizeValue(clampedValue);
14546
14676
  this.emitChange(ev);
14547
14677
  };
@@ -14564,7 +14694,7 @@ class DuetNumberInput {
14564
14694
  const adjustment = this.step - (newValue % this.step);
14565
14695
  newValue += adjustment;
14566
14696
  }
14567
- newValue = clamp(newValue, this.min, this.max);
14697
+ newValue = clamp$1(newValue, this.min, this.max);
14568
14698
  this.value = this.localizeValue(newValue);
14569
14699
  this.emitChange(ev);
14570
14700
  };
@@ -15140,20 +15270,118 @@ class DuetParagraph {
15140
15270
  }; }
15141
15271
  }
15142
15272
 
15273
+ const min$1 = Math.min;
15274
+ const max$1 = Math.max;
15275
+ const oppositeSideMap = {
15276
+ left: 'right',
15277
+ right: 'left',
15278
+ bottom: 'top',
15279
+ top: 'bottom'
15280
+ };
15281
+ const oppositeAlignmentMap = {
15282
+ start: 'end',
15283
+ end: 'start'
15284
+ };
15285
+ function clamp(start, value, end) {
15286
+ return max$1(start, min$1(value, end));
15287
+ }
15288
+ function evaluate(value, param) {
15289
+ return typeof value === 'function' ? value(param) : value;
15290
+ }
15291
+ function getSide(placement) {
15292
+ return placement.split('-')[0];
15293
+ }
15143
15294
  function getAlignment(placement) {
15144
15295
  return placement.split('-')[1];
15145
15296
  }
15146
-
15147
- function getLengthFromAxis(axis) {
15297
+ function getOppositeAxis(axis) {
15298
+ return axis === 'x' ? 'y' : 'x';
15299
+ }
15300
+ function getAxisLength(axis) {
15148
15301
  return axis === 'y' ? 'height' : 'width';
15149
15302
  }
15150
-
15151
- function getSide(placement) {
15152
- return placement.split('-')[0];
15303
+ function getSideAxis(placement) {
15304
+ return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';
15153
15305
  }
15154
-
15155
- function getMainAxisFromPlacement(placement) {
15156
- return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';
15306
+ function getAlignmentAxis(placement) {
15307
+ return getOppositeAxis(getSideAxis(placement));
15308
+ }
15309
+ function getAlignmentSides(placement, rects, rtl) {
15310
+ if (rtl === void 0) {
15311
+ rtl = false;
15312
+ }
15313
+ const alignment = getAlignment(placement);
15314
+ const alignmentAxis = getAlignmentAxis(placement);
15315
+ const length = getAxisLength(alignmentAxis);
15316
+ let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
15317
+ if (rects.reference[length] > rects.floating[length]) {
15318
+ mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
15319
+ }
15320
+ return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
15321
+ }
15322
+ function getExpandedPlacements(placement) {
15323
+ const oppositePlacement = getOppositePlacement(placement);
15324
+ return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
15325
+ }
15326
+ function getOppositeAlignmentPlacement(placement) {
15327
+ return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
15328
+ }
15329
+ function getSideList(side, isStart, rtl) {
15330
+ const lr = ['left', 'right'];
15331
+ const rl = ['right', 'left'];
15332
+ const tb = ['top', 'bottom'];
15333
+ const bt = ['bottom', 'top'];
15334
+ switch (side) {
15335
+ case 'top':
15336
+ case 'bottom':
15337
+ if (rtl) return isStart ? rl : lr;
15338
+ return isStart ? lr : rl;
15339
+ case 'left':
15340
+ case 'right':
15341
+ return isStart ? tb : bt;
15342
+ default:
15343
+ return [];
15344
+ }
15345
+ }
15346
+ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
15347
+ const alignment = getAlignment(placement);
15348
+ let list = getSideList(getSide(placement), direction === 'start', rtl);
15349
+ if (alignment) {
15350
+ list = list.map(side => side + "-" + alignment);
15351
+ if (flipAlignment) {
15352
+ list = list.concat(list.map(getOppositeAlignmentPlacement));
15353
+ }
15354
+ }
15355
+ return list;
15356
+ }
15357
+ function getOppositePlacement(placement) {
15358
+ return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
15359
+ }
15360
+ function expandPaddingObject(padding) {
15361
+ return {
15362
+ top: 0,
15363
+ right: 0,
15364
+ bottom: 0,
15365
+ left: 0,
15366
+ ...padding
15367
+ };
15368
+ }
15369
+ function getPaddingObject(padding) {
15370
+ return typeof padding !== 'number' ? expandPaddingObject(padding) : {
15371
+ top: padding,
15372
+ right: padding,
15373
+ bottom: padding,
15374
+ left: padding
15375
+ };
15376
+ }
15377
+ function rectToClientRect(rect) {
15378
+ return {
15379
+ ...rect,
15380
+ top: rect.y,
15381
+ left: rect.x,
15382
+ right: rect.x + rect.width,
15383
+ bottom: rect.y + rect.height
15384
+ };
15157
15385
  }
15158
15386
 
15159
15387
  function computeCoordsFromPlacement(_ref, placement, rtl) {
@@ -15161,13 +15389,14 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
15161
15389
  reference,
15162
15390
  floating
15163
15391
  } = _ref;
15392
+ const sideAxis = getSideAxis(placement);
15393
+ const alignmentAxis = getAlignmentAxis(placement);
15394
+ const alignLength = getAxisLength(alignmentAxis);
15395
+ const side = getSide(placement);
15396
+ const isVertical = sideAxis === 'y';
15164
15397
  const commonX = reference.x + reference.width / 2 - floating.width / 2;
15165
15398
  const commonY = reference.y + reference.height / 2 - floating.height / 2;
15166
- const mainAxis = getMainAxisFromPlacement(placement);
15167
- const length = getLengthFromAxis(mainAxis);
15168
- const commonAlign = reference[length] / 2 - floating[length] / 2;
15169
- const side = getSide(placement);
15170
- const isVertical = mainAxis === 'x';
15399
+ const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
15171
15400
  let coords;
15172
15401
  switch (side) {
15173
15402
  case 'top':
@@ -15202,10 +15431,10 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
15202
15431
  }
15203
15432
  switch (getAlignment(placement)) {
15204
15433
  case 'start':
15205
- coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
15434
+ coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
15206
15435
  break;
15207
15436
  case 'end':
15208
- coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
15437
+ coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
15209
15438
  break;
15210
15439
  }
15211
15440
  return coords;
@@ -15303,35 +15532,6 @@ const computePosition$1 = async (reference, floating, config) => {
15303
15532
  };
15304
15533
  };
15305
15534
 
15306
- function expandPaddingObject(padding) {
15307
- return {
15308
- top: 0,
15309
- right: 0,
15310
- bottom: 0,
15311
- left: 0,
15312
- ...padding
15313
- };
15314
- }
15315
-
15316
- function getSideObjectFromPadding(padding) {
15317
- return typeof padding !== 'number' ? expandPaddingObject(padding) : {
15318
- top: padding,
15319
- right: padding,
15320
- bottom: padding,
15321
- left: padding
15322
- };
15323
- }
15324
-
15325
- function rectToClientRect(rect) {
15326
- return {
15327
- ...rect,
15328
- top: rect.y,
15329
- left: rect.x,
15330
- right: rect.x + rect.width,
15331
- bottom: rect.y + rect.height
15332
- };
15333
- }
15334
-
15335
15535
  /**
15336
15536
  * Resolves with an object of overflow side offsets that determine how much the
15337
15537
  * element is overflowing a given clipping boundary on each side.
@@ -15359,8 +15559,8 @@ async function detectOverflow(state, options) {
15359
15559
  elementContext = 'floating',
15360
15560
  altBoundary = false,
15361
15561
  padding = 0
15362
- } = options;
15363
- const paddingObject = getSideObjectFromPadding(padding);
15562
+ } = evaluate(options, state);
15563
+ const paddingObject = getPaddingObject(padding);
15364
15564
  const altContext = elementContext === 'floating' ? 'reference' : 'floating';
15365
15565
  const element = elements[altBoundary ? altContext : elementContext];
15366
15566
  const clippingClientRect = rectToClientRect(await platform.getClippingRect({
@@ -15395,13 +15595,6 @@ async function detectOverflow(state, options) {
15395
15595
  };
15396
15596
  }
15397
15597
 
15398
- const min$1 = Math.min;
15399
- const max$1 = Math.max;
15400
-
15401
- function within(min$1$1, value, max$1$1) {
15402
- return max$1(min$1$1, min$1(value, max$1$1));
15403
- }
15404
-
15405
15598
  /**
15406
15599
  * Provides data to position an inner element of the floating element so that it
15407
15600
  * appears centered to the reference element.
@@ -15411,11 +15604,6 @@ const arrow = options => ({
15411
15604
  name: 'arrow',
15412
15605
  options,
15413
15606
  async fn(state) {
15414
- // Since `element` is required, we don't Partial<> the type.
15415
- const {
15416
- element,
15417
- padding = 0
15418
- } = options || {};
15419
15607
  const {
15420
15608
  x,
15421
15609
  y,
@@ -15424,16 +15612,21 @@ const arrow = options => ({
15424
15612
  platform,
15425
15613
  elements
15426
15614
  } = state;
15615
+ // Since `element` is required, we don't Partial<> the type.
15616
+ const {
15617
+ element,
15618
+ padding = 0
15619
+ } = evaluate(options, state) || {};
15427
15620
  if (element == null) {
15428
15621
  return {};
15429
15622
  }
15430
- const paddingObject = getSideObjectFromPadding(padding);
15623
+ const paddingObject = getPaddingObject(padding);
15431
15624
  const coords = {
15432
15625
  x,
15433
15626
  y
15434
15627
  };
15435
- const axis = getMainAxisFromPlacement(placement);
15436
- const length = getLengthFromAxis(axis);
15628
+ const axis = getAlignmentAxis(placement);
15629
+ const length = getAxisLength(axis);
15437
15630
  const arrowDimensions = await platform.getDimensions(element);
15438
15631
  const isYAxis = axis === 'y';
15439
15632
  const minProp = isYAxis ? 'top' : 'left';
@@ -15450,98 +15643,35 @@ const arrow = options => ({
15450
15643
  }
15451
15644
  const centerToReference = endDiff / 2 - startDiff / 2;
15452
15645
 
15646
+ // If the padding is large enough that it causes the arrow to no longer be
15647
+ // centered, modify the padding so that it is centered.
15648
+ const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
15649
+ const minPadding = min$1(paddingObject[minProp], largestPossiblePadding);
15650
+ const maxPadding = min$1(paddingObject[maxProp], largestPossiblePadding);
15651
+
15453
15652
  // Make sure the arrow doesn't overflow the floating element if the center
15454
15653
  // point is outside the floating element's bounds.
15455
- const min = paddingObject[minProp];
15456
- const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
15654
+ const min$1$1 = minPadding;
15655
+ const max = clientSize - arrowDimensions[length] - maxPadding;
15457
15656
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
15458
- const offset = within(min, center, max);
15657
+ const offset = clamp(min$1$1, center, max);
15459
15658
 
15460
15659
  // If the reference is small enough that the arrow's padding causes it to
15461
15660
  // to point to nothing for an aligned placement, adjust the offset of the
15462
15661
  // floating element itself. This stops `shift()` from taking action, but can
15463
15662
  // be worked around by calling it again after the `arrow()` if desired.
15464
- const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;
15465
- const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;
15663
+ const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
15664
+ const alignmentOffset = shouldAddOffset ? center < min$1$1 ? min$1$1 - center : max - center : 0;
15466
15665
  return {
15467
15666
  [axis]: coords[axis] - alignmentOffset,
15468
15667
  data: {
15469
15668
  [axis]: offset,
15470
- centerOffset: center - offset
15669
+ centerOffset: center - offset + alignmentOffset
15471
15670
  }
15472
15671
  };
15473
15672
  }
15474
15673
  });
15475
15674
 
15476
- const oppositeSideMap = {
15477
- left: 'right',
15478
- right: 'left',
15479
- bottom: 'top',
15480
- top: 'bottom'
15481
- };
15482
- function getOppositePlacement(placement) {
15483
- return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
15484
- }
15485
-
15486
- function getAlignmentSides(placement, rects, rtl) {
15487
- if (rtl === void 0) {
15488
- rtl = false;
15489
- }
15490
- const alignment = getAlignment(placement);
15491
- const mainAxis = getMainAxisFromPlacement(placement);
15492
- const length = getLengthFromAxis(mainAxis);
15493
- let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
15494
- if (rects.reference[length] > rects.floating[length]) {
15495
- mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
15496
- }
15497
- return {
15498
- main: mainAlignmentSide,
15499
- cross: getOppositePlacement(mainAlignmentSide)
15500
- };
15501
- }
15502
-
15503
- const oppositeAlignmentMap = {
15504
- start: 'end',
15505
- end: 'start'
15506
- };
15507
- function getOppositeAlignmentPlacement(placement) {
15508
- return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
15509
- }
15510
-
15511
- function getExpandedPlacements(placement) {
15512
- const oppositePlacement = getOppositePlacement(placement);
15513
- return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
15514
- }
15515
-
15516
- function getSideList(side, isStart, rtl) {
15517
- const lr = ['left', 'right'];
15518
- const rl = ['right', 'left'];
15519
- const tb = ['top', 'bottom'];
15520
- const bt = ['bottom', 'top'];
15521
- switch (side) {
15522
- case 'top':
15523
- case 'bottom':
15524
- if (rtl) return isStart ? rl : lr;
15525
- return isStart ? lr : rl;
15526
- case 'left':
15527
- case 'right':
15528
- return isStart ? tb : bt;
15529
- default:
15530
- return [];
15531
- }
15532
- }
15533
- function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
15534
- const alignment = getAlignment(placement);
15535
- let list = getSideList(getSide(placement), direction === 'start', rtl);
15536
- if (alignment) {
15537
- list = list.map(side => side + "-" + alignment);
15538
- if (flipAlignment) {
15539
- list = list.concat(list.map(getOppositeAlignmentPlacement));
15540
- }
15541
- }
15542
- return list;
15543
- }
15544
-
15545
15675
  /**
15546
15676
  * Optimizes the visibility of the floating element by flipping the `placement`
15547
15677
  * in order to keep it in view when the preferred placement(s) will overflow the
@@ -15573,7 +15703,7 @@ const flip = function (options) {
15573
15703
  fallbackAxisSideDirection = 'none',
15574
15704
  flipAlignment = true,
15575
15705
  ...detectOverflowOptions
15576
- } = options;
15706
+ } = evaluate(options, state);
15577
15707
  const side = getSide(placement);
15578
15708
  const isBasePlacement = getSide(initialPlacement) === initialPlacement;
15579
15709
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
@@ -15589,11 +15719,8 @@ const flip = function (options) {
15589
15719
  overflows.push(overflow[side]);
15590
15720
  }
15591
15721
  if (checkCrossAxis) {
15592
- const {
15593
- main,
15594
- cross
15595
- } = getAlignmentSides(placement, rects, rtl);
15596
- overflows.push(overflow[main], overflow[cross]);
15722
+ const sides = getAlignmentSides(placement, rects, rtl);
15723
+ overflows.push(overflow[sides[0]], overflow[sides[1]]);
15597
15724
  }
15598
15725
  overflowsData = [...overflowsData, {
15599
15726
  placement,
@@ -15652,7 +15779,9 @@ const flip = function (options) {
15652
15779
  };
15653
15780
  };
15654
15781
 
15655
- async function convertValueToCoords(state, value) {
15782
+ // For type backwards-compatibility, the `OffsetOptions` type was also
15783
+ // Derivable.
15784
+ async function convertValueToCoords(state, options) {
15656
15785
  const {
15657
15786
  placement,
15658
15787
  platform,
@@ -15661,10 +15790,10 @@ async function convertValueToCoords(state, value) {
15661
15790
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
15662
15791
  const side = getSide(placement);
15663
15792
  const alignment = getAlignment(placement);
15664
- const isVertical = getMainAxisFromPlacement(placement) === 'x';
15793
+ const isVertical = getSideAxis(placement) === 'y';
15665
15794
  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
15666
15795
  const crossAxisMulti = rtl && isVertical ? -1 : 1;
15667
- const rawValue = typeof value === 'function' ? value(state) : value;
15796
+ const rawValue = evaluate(options, state);
15668
15797
 
15669
15798
  // eslint-disable-next-line prefer-const
15670
15799
  let {
@@ -15700,19 +15829,19 @@ async function convertValueToCoords(state, value) {
15700
15829
  * object may be passed.
15701
15830
  * @see https://floating-ui.com/docs/offset
15702
15831
  */
15703
- const offset = function (value) {
15704
- if (value === void 0) {
15705
- value = 0;
15832
+ const offset = function (options) {
15833
+ if (options === void 0) {
15834
+ options = 0;
15706
15835
  }
15707
15836
  return {
15708
15837
  name: 'offset',
15709
- options: value,
15838
+ options,
15710
15839
  async fn(state) {
15711
15840
  const {
15712
15841
  x,
15713
15842
  y
15714
15843
  } = state;
15715
- const diffCoords = await convertValueToCoords(state, value);
15844
+ const diffCoords = await convertValueToCoords(state, options);
15716
15845
  return {
15717
15846
  x: x + diffCoords.x,
15718
15847
  y: y + diffCoords.y,
@@ -15722,10 +15851,6 @@ const offset = function (value) {
15722
15851
  };
15723
15852
  };
15724
15853
 
15725
- function getCrossAxis(axis) {
15726
- return axis === 'x' ? 'y' : 'x';
15727
- }
15728
-
15729
15854
  /**
15730
15855
  * Optimizes the visibility of the floating element by shifting it in order to
15731
15856
  * keep it in view when it will overflow the clipping boundary.
@@ -15760,14 +15885,14 @@ const shift = function (options) {
15760
15885
  }
15761
15886
  },
15762
15887
  ...detectOverflowOptions
15763
- } = options;
15888
+ } = evaluate(options, state);
15764
15889
  const coords = {
15765
15890
  x,
15766
15891
  y
15767
15892
  };
15768
15893
  const overflow = await detectOverflow(state, detectOverflowOptions);
15769
- const mainAxis = getMainAxisFromPlacement(getSide(placement));
15770
- const crossAxis = getCrossAxis(mainAxis);
15894
+ const crossAxis = getSideAxis(getSide(placement));
15895
+ const mainAxis = getOppositeAxis(crossAxis);
15771
15896
  let mainAxisCoord = coords[mainAxis];
15772
15897
  let crossAxisCoord = coords[crossAxis];
15773
15898
  if (checkMainAxis) {
@@ -15775,14 +15900,14 @@ const shift = function (options) {
15775
15900
  const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
15776
15901
  const min = mainAxisCoord + overflow[minSide];
15777
15902
  const max = mainAxisCoord - overflow[maxSide];
15778
- mainAxisCoord = within(min, mainAxisCoord, max);
15903
+ mainAxisCoord = clamp(min, mainAxisCoord, max);
15779
15904
  }
15780
15905
  if (checkCrossAxis) {
15781
15906
  const minSide = crossAxis === 'y' ? 'top' : 'left';
15782
15907
  const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
15783
15908
  const min = crossAxisCoord + overflow[minSide];
15784
15909
  const max = crossAxisCoord - overflow[maxSide];
15785
- crossAxisCoord = within(min, crossAxisCoord, max);
15910
+ crossAxisCoord = clamp(min, crossAxisCoord, max);
15786
15911
  }
15787
15912
  const limitedCoords = limiter.fn({
15788
15913
  ...state,
@@ -16381,33 +16506,6 @@ const computePosition = (reference, floating, options) => {
16381
16506
  });
16382
16507
  };
16383
16508
 
16384
- /**
16385
- * Teleport helps resolving z-index issues of overlapping popup elements.
16386
- * Initiate it in your component's willLoad or didLoad lifecycle hook.
16387
- * When you open the popup, call teleport.go() and move focus to the popup.
16388
- * When you close the popup, call teleport.resume() and move focus to the element that opened the popup.
16389
- * If your popup has closing animation, use the timeout parameter.
16390
- */
16391
- class Teleport {
16392
- constructor(element, target) {
16393
- this.element = element;
16394
- this.target = target || document.body;
16395
- }
16396
- go() {
16397
- this.stub = document.createElement("div");
16398
- this.element.insertAdjacentElement("afterend", this.stub);
16399
- this.target.appendChild(this.element);
16400
- this.element.style.zIndex = zIndexPopup;
16401
- }
16402
- resume(timeout = 0) {
16403
- setTimeout(() => {
16404
- this.element.style.zIndex = "";
16405
- this.stub.insertAdjacentElement("beforebegin", this.element);
16406
- this.stub.remove();
16407
- }, timeout);
16408
- }
16409
- }
16410
-
16411
16509
  const duetPopupMenuCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-popup-menu,*.sc-duet-popup-menu::after,*.sc-duet-popup-menu::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-popup-menu-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-popup-menu-list*/.duet-popup-menu-list.sc-duet-popup-menu{position:absolute;top:0;left:0;z-index:950;width:max-content;min-width:175px;padding:0;padding:1rem 0;margin:0;color:rgb(0, 41, 77);list-style:none;visibility:hidden !important;background:rgb(243, 249, 252);border-radius:0 0 8px 8px;box-shadow:0 6px 6px 0 rgba(0, 41, 77, 0.1);opacity:0;transition:transform 300ms ease, visibility 300ms ease, opacity 300ms ease;transform:scaleY(0);transform-origin:top center}/*!@.duet-popup-menu-list.open*/.duet-popup-menu-list.open.sc-duet-popup-menu{visibility:visible !important;opacity:1;transform:scaleY(1)}/*!@.duet-popup-menu-list.fixed*/.duet-popup-menu-list.fixed.sc-duet-popup-menu{position:fixed}/*!@.duet-popup-menu-list.duet-theme-turva*/.duet-popup-menu-list.duet-theme-turva.sc-duet-popup-menu{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247)}";
16412
16510
 
16413
16511
  class DuetPopupMenu {
@@ -19437,7 +19535,7 @@ class DuetTabGroup {
19437
19535
  }; }
19438
19536
  }
19439
19537
 
19440
- 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-table-hide-head-visually.duet-table-hide-head-visually thead,duet-table.duet-table-hide-head-visually.duet-table-hide-head-visually thead *{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.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:rgb(0, 41, 77)}duet-table.duet-theme-turva td{color:rgb(23, 28, 58)}duet-table th{font-weight:600;line-height:1.25;color:rgb(101, 119, 135);text-align:left}duet-table.duet-theme-turva th{color:rgb(116, 116, 117)}duet-table tbody th{font-weight:600;color:rgb(0, 41, 77)}duet-table.duet-theme-turva tbody th{color:rgb(23, 28, 58)}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:rgb(101, 119, 135);text-align:left}.duet-table-flattened td[data-heading]::before{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:rgb(0, 41, 77);content:attr(data-heading)}.duet-table-flattened.duet-theme-turva td[data-heading]::before{color:rgb(23, 28, 58)}.duet-table-sticky thead th{position:sticky;top:0;background:rgb(255, 255, 255)}.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:rgb(255, 255, 255)}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid rgb(225, 227, 230)}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:rgb(228, 228, 230)}.duet-table-fixed th,.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid rgb(101, 119, 135)}.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:rgb(68, 68, 69)}.duet-table-fixed tbody th,.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:rgb(225, 227, 230)}.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:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.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:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.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 rgb(225, 227, 230)}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-fixed:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-sortable:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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}";
19538
+ 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-table-hide-head-visually.duet-table-hide-head-visually thead,duet-table.duet-table-hide-head-visually.duet-table-hide-head-visually thead *{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.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:rgb(0, 41, 77)}duet-table.duet-theme-turva td{color:rgb(23, 28, 58)}duet-table th{font-weight:600;line-height:1.25;color:rgb(101, 119, 135);text-align:left}duet-table.duet-theme-turva th{color:rgb(116, 116, 117)}duet-table tbody th{font-weight:600;color:rgb(0, 41, 77)}duet-table.duet-theme-turva tbody th{color:rgb(23, 28, 58)}duet-table .duet-table-action-row td:last-child{justify-self:end;padding-right:20px !important;white-space:nowrap}duet-table span.duet-table-cell-heading{display:none}.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 td span.duet-table-cell-heading{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:rgb(0, 41, 77)}.duet-table-flattened.duet-theme-turva td span.duet-table-cell-heading{color:rgb(23, 28, 58)}.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:rgb(101, 119, 135);text-align:left}.duet-table-sticky thead th{position:sticky;top:0;background:rgb(255, 255, 255)}.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:rgb(255, 255, 255)}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid rgb(225, 227, 230)}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:rgb(228, 228, 230)}.duet-table-fixed th,.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid rgb(101, 119, 135)}.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:rgb(68, 68, 69)}.duet-table-fixed tbody th,.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:rgb(225, 227, 230)}.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:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.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:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.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 rgb(225, 227, 230)}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-fixed:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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 rgb(225, 227, 230)}.duet-table-sortable:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:rgb(228, 228, 230)}.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}";
19441
19539
 
19442
19540
  const stickyTopValues = {
19443
19541
  none: 0,
@@ -19508,7 +19606,16 @@ class DuetTable {
19508
19606
  rowElements.forEach(tr => {
19509
19607
  tr.querySelectorAll("td").forEach((td, i) => {
19510
19608
  if (headings[i]) {
19511
- td.dataset.heading = headings[i];
19609
+ const previousSpan = td.querySelector(".duet-table-cell-heading");
19610
+ if (!previousSpan || previousSpan.textContent !== headings[i]) {
19611
+ previousSpan === null || previousSpan === void 0 ? void 0 : previousSpan.remove();
19612
+ const span = document.createElement("span");
19613
+ span.textContent = headings[i];
19614
+ span.classList.add("duet-table-cell-heading");
19615
+ span.setAttribute("aria-hidden", "true");
19616
+ span.inert = true;
19617
+ td.prepend(span);
19618
+ }
19512
19619
  }
19513
19620
  });
19514
19621
  });
@@ -20097,7 +20204,7 @@ class DuetToolbarLink {
20097
20204
  }; }
20098
20205
  }
20099
20206
 
20100
- const duetTooltipCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-tooltip,*.sc-duet-tooltip::after,*.sc-duet-tooltip::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-tooltip-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:relative;z-index:200;display:inline-flex;width:auto;margin-top:-16px !important;margin-left:-3px !important;-webkit-tap-highlight-color:transparent}/*!@.duet-tooltip-button*/.duet-tooltip-button.sc-duet-tooltip{z-index:100;display:inline-block;align-items:center;justify-content:center;min-width:48px;height:48px;padding:0 !important;margin-right:-12px;line-height:normal !important;color:rgb(0, 119, 179);white-space:nowrap;cursor:pointer;background:transparent !important;border-radius:4px}/*!@.duet-tooltip-button.duet-theme-turva*/.duet-tooltip-button.duet-theme-turva.sc-duet-tooltip{color:rgb(198, 12, 48)}/*!@.duet-tooltip-button:hover*/.duet-tooltip-button.sc-duet-tooltip:hover{color:rgb(0, 77, 128)}/*!@.duet-tooltip-button:hover.duet-theme-turva*/.duet-tooltip-button.sc-duet-tooltip:hover.duet-theme-turva{color:rgb(148, 9, 37)}/*!@.duet-tooltip-button:focus*/.duet-tooltip-button.sc-duet-tooltip:focus{background:transparent !important;outline:0}/*!@:host(.user-is-tabbing) .duet-tooltip-button:focus*/.user-is-tabbing.sc-duet-tooltip-h .duet-tooltip-button.sc-duet-tooltip:focus{background:transparent !important;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179) !important}/*!@:host(.user-is-tabbing) .duet-tooltip-button.duet-theme-turva:focus*/.user-is-tabbing.sc-duet-tooltip-h .duet-tooltip-button.duet-theme-turva.sc-duet-tooltip:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58) !important}/*!@.duet-tooltip-button svg*/.duet-tooltip-button.sc-duet-tooltip svg.sc-duet-tooltip{width:20px;height:20px;pointer-events:none}/*!@.duet-tooltip-button-has-label*/.duet-tooltip-button-has-label.sc-duet-tooltip{margin-right:0}/*!@.duet-tooltip-label*/.duet-tooltip-label.sc-duet-tooltip{position:relative;z-index:100;display:inline-block;max-width:calc(100% - 30px);margin-left:12px !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;line-height:1.25;text-align:left;white-space:normal;vertical-align:top}/*!@.duet-theme-turva .duet-tooltip-label*/.duet-theme-turva.sc-duet-tooltip .duet-tooltip-label.sc-duet-tooltip{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}";
20207
+ const duetTooltipCss = "*.sc-duet-tooltip,*.sc-duet-tooltip::after,*.sc-duet-tooltip::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-tooltip-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;z-index:200;display:inline-flex;width:auto;margin-top:-16px !important;margin-left:-3px !important;-webkit-tap-highlight-color:transparent}duet-tooltip-button.sc-duet-tooltip{position:relative}duet-tooltip-popup.sc-duet-tooltip{position:absolute}";
20101
20208
 
20102
20209
  class DuetTooltip {
20103
20210
  constructor(hostRef) {
@@ -20114,42 +20221,23 @@ class DuetTooltip {
20114
20221
  * Local methods
20115
20222
  */
20116
20223
  this.openTooltip = () => {
20117
- this.focusTarget = "tooltip";
20118
20224
  this.active = true;
20225
+ this.focusTarget = "tooltip";
20226
+ this.teleport.go();
20119
20227
  };
20120
20228
  this.closeTooltip = (moveFocusToButton = false) => {
20229
+ this.active = false;
20121
20230
  if (moveFocusToButton) {
20122
20231
  this.focusTarget = "trigger";
20123
20232
  }
20124
- this.active = false;
20233
+ setTimeout(() => {
20234
+ this.teleport.resume();
20235
+ this.updatePlacement();
20236
+ }, 200);
20125
20237
  };
20126
20238
  this.toggleOpen = () => {
20127
20239
  this.active ? this.closeTooltip() : this.openTooltip();
20128
20240
  };
20129
- this.handleFocusOut = (e) => {
20130
- if (!this.active) {
20131
- return;
20132
- }
20133
- const relatedTarget = e.relatedTarget;
20134
- if (
20135
- // if we don't know where focus went
20136
- relatedTarget == null ||
20137
- // if focus is within the tooltip itself
20138
- this.element.shadowRoot.contains(relatedTarget) ||
20139
- // if focus is within the tooltip light DOM
20140
- this.element.contains(relatedTarget)) {
20141
- // then we can skip closing
20142
- return;
20143
- }
20144
- this.closeTooltip();
20145
- };
20146
- this.handleKeyDown = (e) => {
20147
- const isEscapeKey = e.keyCode === 27;
20148
- const isTabbingOut = e.target === this.popupElement && e.shiftKey && e.keyCode === 9;
20149
- if (isEscapeKey || isTabbingOut) {
20150
- this.closeTooltip(true);
20151
- }
20152
- };
20153
20241
  this.updatePlacement = async () => {
20154
20242
  var _a, _b;
20155
20243
  let preferRight = true;
@@ -20170,7 +20258,6 @@ class DuetTooltip {
20170
20258
  placement,
20171
20259
  middleware: [flip(), shift({ padding: 5 }), arrow({ element: this.arrowEl })],
20172
20260
  });
20173
- // magic number adjustment for the tooltip position to cater for the arrow
20174
20261
  this.tooltipY = position.y;
20175
20262
  this.tooltipX = position.x;
20176
20263
  this.placement = position.placement;
@@ -20221,21 +20308,22 @@ class DuetTooltip {
20221
20308
  async componentDidLoad() {
20222
20309
  this.arrowEl = await this.popupElement.getArrowElement();
20223
20310
  this.contentEl = await this.popupElement.getContentElement();
20311
+ this.teleport = new Teleport(this.popupElement);
20312
+ if (this.active) {
20313
+ this.openTooltip();
20314
+ }
20315
+ this.intersectionObserver = new IntersectionObserver(this.updatePlacement, { root: document.body });
20316
+ this.intersectionObserver.observe(this.element);
20224
20317
  }
20225
20318
  componentDidUpdate() {
20226
20319
  switch (this.focusTarget) {
20227
20320
  case "tooltip":
20228
- this.contentEl.focus({ preventScroll: true });
20229
- // workaround for "user-is-tabbing" class not being applied inside shadow DOM
20230
- if (this.element.classList.contains("user-is-tabbing")) {
20231
- this.popupElement.classList.add("user-is-tabbing");
20232
- }
20233
- else {
20234
- this.popupElement.classList.remove("user-is-tabbing");
20235
- }
20321
+ // delay focus so button is correctly announced as "expanded"
20322
+ setTimeout(() => this.contentEl.focus({ preventScroll: true }));
20236
20323
  break;
20237
20324
  case "trigger":
20238
- this.buttonEl.focus({ preventScroll: true });
20325
+ // delay focus so button is correctly announced as "collapsed"
20326
+ setTimeout(() => this.buttonEl.setFocus({ preventScroll: true }));
20239
20327
  break;
20240
20328
  }
20241
20329
  this.focusTarget = null;
@@ -20268,13 +20356,20 @@ class DuetTooltip {
20268
20356
  return;
20269
20357
  }
20270
20358
  const path = e.composedPath();
20271
- const isClickOutside = path.every(el => el !== this.element);
20359
+ const isClickOutside = path.every(el => el !== this.element && el !== this.contentEl);
20272
20360
  if (isClickOutside) {
20273
20361
  this.closeTooltip();
20274
20362
  }
20275
20363
  }
20364
+ handleKeyDown(e) {
20365
+ if (this.active && isEscapeKey(e)) {
20366
+ this.closeTooltip(true);
20367
+ }
20368
+ }
20276
20369
  handlePopupClose() {
20277
- this.closeTooltip(true);
20370
+ if (this.active) {
20371
+ this.closeTooltip(true);
20372
+ }
20278
20373
  }
20279
20374
  async handleActiveChange(newActiveValue) {
20280
20375
  if (newActiveValue) {
@@ -20299,18 +20394,13 @@ class DuetTooltip {
20299
20394
  top: `${this.tooltipY}px`,
20300
20395
  left: `${this.tooltipX}px`,
20301
20396
  display: "block",
20397
+ "pointer-events": this.active ? "auto" : "none",
20302
20398
  };
20303
20399
  const arrowStyles = {
20304
20400
  top: this.arrowY ? `${this.arrowY}px` : undefined,
20305
20401
  left: this.arrowX ? `${this.arrowX}px` : undefined,
20306
20402
  };
20307
- return (hAsync(Host, { style: tooltipStyles }, hAsync("button", { ref: element => (this.buttonEl = element), "aria-controls": this.tooltipId, "aria-expanded": this.active ? "true" : "false", onClick: this.toggleOpen, type: "button", class: {
20308
- "duet-tooltip-button": true,
20309
- "duet-tooltip-button-has-label": !!this.label,
20310
- "duet-theme-turva": this.theme === "turva",
20311
- } }, hAsync("svg", { "aria-hidden": "true", role: "img", fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, hAsync("path", { d: "m13.5 17.25c-1.241 0-2.25-1.009-2.25-2.25v-3.75h-.75c-.414 0-.75-.336-.75-.75s.336-.75.75-.75h.75c.827 0 1.5.673 1.5 1.5v3.75c0 .414.336.75.75.75h.75c.414 0 .75.336.75.75s-.336.75-.75.75z" }), hAsync("circle", { cx: "11.625", cy: "7.125", r: "1.125" }), hAsync("path", { d: "m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-22.5c-5.79 0-10.5 4.71-10.5 10.5s4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5-4.71-10.5-10.5-10.5z" })), this.label ? (hAsync("span", { class: "duet-tooltip-label" }, this.label)) : (hAsync("duet-visually-hidden", null, this.accessibleInputLabel
20312
- ? `${this.accessibleInputLabel}, ${this.accessibleLabel}`
20313
- : this.accessibleLabel))), hAsync("duet-tooltip-popup", { ref: element => (this.popupElement = element), active: this.active, tooltipId: this.tooltipId, arrowStyles: arrowStyles, style: positionStyles, placement: this.placement, accessibleCloseLabel: this.accessibleCloseLabel, onKeyDown: this.handleKeyDown, onFocusout: this.handleFocusOut }, hAsync("slot", null))));
20403
+ return (hAsync(Host, { style: tooltipStyles }, hAsync("duet-tooltip-button", { ref: element => (this.buttonEl = element), active: this.active, tooltipId: this.tooltipId, label: this.label, accessibleLabel: this.accessibleInputLabel ? `${this.accessibleInputLabel}, ${this.accessibleLabel}` : this.accessibleLabel, onClick: this.toggleOpen }), hAsync("duet-tooltip-popup", { ref: element => (this.popupElement = element), active: this.active, tooltipId: this.tooltipId, arrowStyles: arrowStyles, style: positionStyles, placement: this.placement, accessibleCloseLabel: this.accessibleCloseLabel }, hAsync("slot", null))));
20314
20404
  }
20315
20405
  get element() { return getElement(this); }
20316
20406
  static get watchers() { return {
@@ -20319,7 +20409,7 @@ class DuetTooltip {
20319
20409
  }; }
20320
20410
  static get style() { return duetTooltipCss; }
20321
20411
  static get cmpMeta() { return {
20322
- "$flags$": 9,
20412
+ "$flags$": 6,
20323
20413
  "$tagName$": "duet-tooltip",
20324
20414
  "$members$": {
20325
20415
  "theme": [1025],
@@ -20341,13 +20431,69 @@ class DuetTooltip {
20341
20431
  "arrowX": [32],
20342
20432
  "arrowY": [32]
20343
20433
  },
20344
- "$listeners$": [[9, "scroll", "onScroll"], [9, "resize", "handleWindowResize"], [4, "click", "handleDocumentClick"], [0, "tooltipPopupClosed", "handlePopupClose"]],
20434
+ "$listeners$": [[9, "scroll", "onScroll"], [9, "resize", "handleWindowResize"], [4, "click", "handleDocumentClick"], [4, "keydown", "handleKeyDown"], [4, "tooltipPopupClosed", "handlePopupClose"]],
20345
20435
  "$lazyBundleId$": "-",
20346
20436
  "$attrsToReflect$": [["positionVertical", "position-vertical"], ["positionHorizontal", "position-horizontal"], ["active", "active"]]
20347
20437
  }; }
20348
20438
  }
20349
20439
 
20350
- const duetTooltipPopupCss = "*.sc-duet-tooltip-popup,*.sc-duet-tooltip-popup::after,*.sc-duet-tooltip-popup::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-tooltip-popup-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:absolute;z-index:950}.duet-tooltip.sc-duet-tooltip-popup{width:282px;min-height:48px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(0, 41, 77);visibility:hidden;background:rgb(255, 255, 255);border:1px solid rgb(225, 227, 230);border-radius:4px;box-shadow:0 2px 10px 0 rgba(0, 41, 77, 0.07);opacity:0;transition:300ms ease;transform-origin:100% 100%}.duet-tooltip.duet-theme-turva.sc-duet-tooltip-popup{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58);border-color:rgb(228, 228, 230);box-shadow:0 2px 10px 0 rgba(117, 117, 117, 0.13)}.duet-tooltip.sc-duet-tooltip-popup .arrow.sc-duet-tooltip-popup{position:absolute;width:22px;height:22px;pointer-events:none}.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom.sc-duet-tooltip-popup,.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom-start.sc-duet-tooltip-popup,.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom-end.sc-duet-tooltip-popup{top:-20px}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup{position:relative;width:100%;height:100%;pointer-events:none}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup::after{position:absolute;z-index:200;width:0;height:0;pointer-events:none;content:\"\"}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup::before{position:absolute;z-index:100;width:0;height:0;pointer-events:none;content:\"\"}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::after{bottom:2px;left:2px;border:10px solid transparent;border-top:10px solid rgb(255, 255, 255)}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::before{bottom:-1px;left:1px;border:11px solid transparent;border-top:11px solid rgb(225, 227, 230)}.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::before{border-top:11px solid rgb(228, 228, 230)}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::after{bottom:1px;left:2px;border:10px solid transparent;border-bottom:10px solid rgb(255, 255, 255)}.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::before{bottom:1px;left:1px;border:11px solid transparent;border-bottom:11px solid rgb(225, 227, 230)}.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::before{border-top:11px solid rgb(228, 228, 230)}.duet-tooltip.duet-tooltip-has-label.sc-duet-tooltip-popup{right:auto !important;left:0;width:282px !important;transform-origin:0 0 !important}.duet-tooltip.duet-tooltip-active.sc-duet-tooltip-popup{visibility:visible;opacity:1;transition-property:transform, opacity}.duet-tooltip-content-area.sc-duet-tooltip-popup{padding:20px !important;width:100%;padding-right:25px !important;overflow-y:auto;-webkit-hyphens:auto;hyphens:auto;border-radius:4px;-webkit-overflow-scrolling:touch}.duet-tooltip-content-area.sc-duet-tooltip-popup:focus{outline:none}.user-is-tabbing.sc-duet-tooltip-popup-h .duet-tooltip-content-area.sc-duet-tooltip-popup:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}.user-is-tabbing.sc-duet-tooltip-popup-h .duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-content-area.sc-duet-tooltip-popup:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar{width:4px}.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-track{border-radius:4px}.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-thumb{background:rgb(225, 227, 230);border-radius:4px}.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-thumb{background:rgb(228, 228, 230)}.duet-tooltip-close.sc-duet-tooltip-popup{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:17px;height:17px;min-height:0 !important;padding:0 !important;margin:0 !important;line-height:normal;color:rgb(0, 41, 77);cursor:pointer;background:rgb(245, 248, 250);border-radius:50%;-webkit-appearance:none;appearance:none}.duet-tooltip-close.sc-duet-tooltip-popup:focus{outline:none;box-shadow:0 0 0 2px rgb(0, 119, 179)}.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-close.sc-duet-tooltip-popup:focus{color:rgb(23, 28, 58);box-shadow:0 0 0 2px rgb(23, 28, 58)}";
20440
+ const duetTooltipButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-tooltip-button,*.sc-duet-tooltip-button::after,*.sc-duet-tooltip-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-tooltip-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-tooltip-button*/.duet-tooltip-button.sc-duet-tooltip-button{z-index:100;display:inline-block;align-items:center;justify-content:center;min-width:48px;height:48px;padding:0 !important;margin-right:-12px;line-height:normal !important;color:rgb(0, 119, 179);white-space:nowrap;cursor:pointer;background:transparent !important;border-radius:4px}/*!@.duet-tooltip-button.duet-theme-turva*/.duet-tooltip-button.duet-theme-turva.sc-duet-tooltip-button{color:rgb(198, 12, 48)}/*!@.duet-tooltip-button:hover*/.duet-tooltip-button.sc-duet-tooltip-button:hover{color:rgb(0, 77, 128)}/*!@.duet-tooltip-button:hover.duet-theme-turva*/.duet-tooltip-button.sc-duet-tooltip-button:hover.duet-theme-turva{color:rgb(148, 9, 37)}/*!@.duet-tooltip-button:focus*/.duet-tooltip-button.sc-duet-tooltip-button:focus{background:transparent !important;outline:0}/*!@:host(.user-is-tabbing) .duet-tooltip-button:focus*/.user-is-tabbing.sc-duet-tooltip-button-h .duet-tooltip-button.sc-duet-tooltip-button:focus{background:transparent !important;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179) !important}/*!@:host(.user-is-tabbing) .duet-tooltip-button.duet-theme-turva:focus*/.user-is-tabbing.sc-duet-tooltip-button-h .duet-tooltip-button.duet-theme-turva.sc-duet-tooltip-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58) !important}/*!@.duet-tooltip-button svg*/.duet-tooltip-button.sc-duet-tooltip-button svg.sc-duet-tooltip-button{width:20px;height:20px;pointer-events:none}/*!@.duet-tooltip-button-has-label*/.duet-tooltip-button-has-label.sc-duet-tooltip-button{margin-right:0}/*!@.duet-tooltip-label*/.duet-tooltip-label.sc-duet-tooltip-button{position:relative;z-index:100;display:inline-block;max-width:calc(100% - 30px);margin-left:12px !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;line-height:1.25;text-align:left;white-space:normal;vertical-align:top}/*!@.duet-theme-turva .duet-tooltip-label*/.duet-theme-turva.sc-duet-tooltip-button .duet-tooltip-label.sc-duet-tooltip-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}";
20441
+
20442
+ /**
20443
+ * @internal
20444
+ * This component is solely for internal use by duet-tooltip.
20445
+ */
20446
+ class DuetTooltipButton {
20447
+ constructor(hostRef) {
20448
+ registerInstance(this, hostRef);
20449
+ this.label = "";
20450
+ this.accessibleLabel = undefined;
20451
+ this.theme = "";
20452
+ this.active = undefined;
20453
+ this.tooltipId = undefined;
20454
+ }
20455
+ /**
20456
+ * Component lifecycle events.
20457
+ */
20458
+ componentWillLoad() {
20459
+ inheritGlobalTheme(this);
20460
+ }
20461
+ async setFocus(options) {
20462
+ if (this.buttonElement) {
20463
+ this.buttonElement.focus(options);
20464
+ }
20465
+ }
20466
+ /**
20467
+ * render() function.
20468
+ * Always the last one in the class.
20469
+ */
20470
+ render() {
20471
+ return (hAsync(Host, null, hAsync("button", { ref: el => (this.buttonElement = el), "aria-controls": this.tooltipId, "aria-expanded": this.active ? "true" : "false", type: "button", class: {
20472
+ "duet-tooltip-button": true,
20473
+ "duet-tooltip-button-has-label": !!this.label,
20474
+ "duet-theme-turva": this.theme === "turva",
20475
+ } }, hAsync("svg", { "aria-hidden": "true", role: "img", fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, hAsync("path", { d: "m13.5 17.25c-1.241 0-2.25-1.009-2.25-2.25v-3.75h-.75c-.414 0-.75-.336-.75-.75s.336-.75.75-.75h.75c.827 0 1.5.673 1.5 1.5v3.75c0 .414.336.75.75.75h.75c.414 0 .75.336.75.75s-.336.75-.75.75z" }), hAsync("circle", { cx: "11.625", cy: "7.125", r: "1.125" }), hAsync("path", { d: "m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-22.5c-5.79 0-10.5 4.71-10.5 10.5s4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5-4.71-10.5-10.5-10.5z" })), this.label ? (hAsync("span", { class: "duet-tooltip-label" }, this.label)) : (hAsync("duet-visually-hidden", null, this.accessibleLabel)))));
20476
+ }
20477
+ get element() { return getElement(this); }
20478
+ static get style() { return duetTooltipButtonCss; }
20479
+ static get cmpMeta() { return {
20480
+ "$flags$": 9,
20481
+ "$tagName$": "duet-tooltip-button",
20482
+ "$members$": {
20483
+ "label": [1],
20484
+ "accessibleLabel": [1, "accessible-label"],
20485
+ "theme": [1025],
20486
+ "active": [4],
20487
+ "tooltipId": [1, "tooltip-id"],
20488
+ "setFocus": [64]
20489
+ },
20490
+ "$listeners$": undefined,
20491
+ "$lazyBundleId$": "-",
20492
+ "$attrsToReflect$": []
20493
+ }; }
20494
+ }
20495
+
20496
+ const duetTooltipPopupCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-tooltip-popup,*.sc-duet-tooltip-popup::after,*.sc-duet-tooltip-popup::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-tooltip-popup-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:absolute;z-index:950}/*!@.duet-tooltip*/.duet-tooltip.sc-duet-tooltip-popup{position:relative;width:282px;min-height:48px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(0, 41, 77);visibility:hidden;background:rgb(255, 255, 255);border:1px solid rgb(225, 227, 230);border-radius:4px;box-shadow:0 2px 10px 0 rgba(0, 41, 77, 0.07);opacity:0;transition:300ms ease;transform-origin:100% 100%}/*!@.duet-tooltip.duet-theme-turva*/.duet-tooltip.duet-theme-turva.sc-duet-tooltip-popup{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58);border-color:rgb(228, 228, 230);box-shadow:0 2px 10px 0 rgba(117, 117, 117, 0.13)}/*!@.duet-tooltip .arrow*/.duet-tooltip.sc-duet-tooltip-popup .arrow.sc-duet-tooltip-popup{position:absolute;width:22px;height:22px;pointer-events:none}/*!@.duet-tooltip .arrow.bottom, .duet-tooltip .arrow.bottom-start, .duet-tooltip .arrow.bottom-end*/.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom.sc-duet-tooltip-popup,.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom-start.sc-duet-tooltip-popup,.duet-tooltip.sc-duet-tooltip-popup .arrow.bottom-end.sc-duet-tooltip-popup{top:-20px}/*!@.duet-tooltip .arrow-container*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup{position:relative;left:4px;width:100%;height:100%;pointer-events:none}/*!@.duet-tooltip .arrow-container::after*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup::after{position:absolute;z-index:200;width:0;height:0;pointer-events:none;content:\"\"}/*!@.duet-tooltip .arrow-container::before*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.sc-duet-tooltip-popup::before{position:absolute;z-index:100;width:0;height:0;pointer-events:none;content:\"\"}/*!@.duet-tooltip .arrow-container.top::after, .duet-tooltip .arrow-container.top-start::after, .duet-tooltip .arrow-container.top-end::after*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::after{bottom:2px;left:2px;border:10px solid transparent;border-top:10px solid rgb(255, 255, 255)}/*!@.duet-tooltip .arrow-container.top::before, .duet-tooltip .arrow-container.top-start::before, .duet-tooltip .arrow-container.top-end::before*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::before{bottom:-1px;left:1px;border:11px solid transparent;border-top:11px solid rgb(225, 227, 230)}/*!@.duet-theme-turva .duet-tooltip .arrow-container.top::before, .duet-theme-turva .duet-tooltip .arrow-container.top-start::before, .duet-theme-turva .duet-tooltip .arrow-container.top-end::before*/.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-start.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.top-end.sc-duet-tooltip-popup::before{border-top:11px solid rgb(228, 228, 230)}/*!@.duet-tooltip .arrow-container.bottom::after, .duet-tooltip .arrow-container.bottom-start::after, .duet-tooltip .arrow-container.bottom-end::after*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::after,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::after{bottom:1px;left:2px;border:10px solid transparent;border-bottom:10px solid rgb(255, 255, 255)}/*!@.duet-tooltip .arrow-container.bottom::before, .duet-tooltip .arrow-container.bottom-start::before, .duet-tooltip .arrow-container.bottom-end::before*/.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::before,.duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::before{bottom:1px;left:1px;border:11px solid transparent;border-bottom:11px solid rgb(225, 227, 230)}/*!@.duet-theme-turva .duet-tooltip .arrow-container.bottom::before, .duet-theme-turva .duet-tooltip .arrow-container.bottom-start::before, .duet-theme-turva .duet-tooltip .arrow-container.bottom-end::before*/.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-start.sc-duet-tooltip-popup::before,.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip.sc-duet-tooltip-popup .arrow-container.bottom-end.sc-duet-tooltip-popup::before{border-top:11px solid rgb(228, 228, 230)}/*!@.duet-tooltip.duet-tooltip-has-label*/.duet-tooltip.duet-tooltip-has-label.sc-duet-tooltip-popup{right:auto !important;left:0;width:282px !important;transform-origin:0 0 !important}/*!@.duet-tooltip.duet-tooltip-active*/.duet-tooltip.duet-tooltip-active.sc-duet-tooltip-popup{visibility:visible;opacity:1;transition-property:transform, opacity}/*!@.duet-tooltip-content-area*/.duet-tooltip-content-area.sc-duet-tooltip-popup{padding:20px !important;width:100%;padding-right:25px !important;overflow-y:auto;-webkit-hyphens:auto;hyphens:auto;border-radius:4px;-webkit-overflow-scrolling:touch}/*!@.duet-tooltip-content-area:focus*/.duet-tooltip-content-area.sc-duet-tooltip-popup:focus{outline:none}/*!@:host(.user-is-tabbing) .duet-tooltip-content-area:focus*/.user-is-tabbing.sc-duet-tooltip-popup-h .duet-tooltip-content-area.sc-duet-tooltip-popup:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px rgb(0, 119, 179)}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-tooltip-content-area:focus*/.user-is-tabbing.sc-duet-tooltip-popup-h .duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-content-area.sc-duet-tooltip-popup:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px rgb(23, 28, 58)}/*!@.duet-tooltip-content-area::-webkit-scrollbar*/.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar{width:4px}/*!@.duet-tooltip-content-area::-webkit-scrollbar-track*/.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-track{border-radius:4px}/*!@.duet-tooltip-content-area::-webkit-scrollbar-thumb*/.duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-thumb{background:rgb(225, 227, 230);border-radius:4px}/*!@.duet-theme-turva .duet-tooltip-content-area::-webkit-scrollbar-thumb*/.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-content-area.sc-duet-tooltip-popup::-webkit-scrollbar-thumb{background:rgb(228, 228, 230)}/*!@.duet-tooltip-close*/.duet-tooltip-close.sc-duet-tooltip-popup{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:17px;height:17px;min-height:0 !important;padding:0 !important;margin:0 !important;line-height:normal;color:rgb(0, 41, 77);cursor:pointer;background:rgb(245, 248, 250);border-radius:50%;-webkit-appearance:none;appearance:none}/*!@.duet-tooltip-close:focus*/.duet-tooltip-close.sc-duet-tooltip-popup:focus{outline:none;box-shadow:0 0 0 2px rgb(0, 119, 179)}/*!@.duet-theme-turva .duet-tooltip-close:focus*/.duet-theme-turva.sc-duet-tooltip-popup .duet-tooltip-close.sc-duet-tooltip-popup:focus{color:rgb(23, 28, 58);box-shadow:0 0 0 2px rgb(23, 28, 58)}";
20351
20497
 
20352
20498
  /**
20353
20499
  * @internal
@@ -20357,11 +20503,8 @@ class DuetTooltipPopup {
20357
20503
  constructor(hostRef) {
20358
20504
  registerInstance(this, hostRef);
20359
20505
  this.tooltipPopupClosed = createEvent$2(this, "tooltipPopupClosed", 7);
20360
- this.handleCloseClick = (evt) => {
20361
- this.tooltipPopupClosed.emit({
20362
- originalEvent: evt,
20363
- component: "duet-tooltip-popup",
20364
- });
20506
+ this.handleCloseClick = () => {
20507
+ this.tooltipPopupClosed.emit();
20365
20508
  };
20366
20509
  this.theme = "";
20367
20510
  this.active = undefined;
@@ -20390,12 +20533,12 @@ class DuetTooltipPopup {
20390
20533
  "duet-tooltip": true,
20391
20534
  "duet-theme-turva": this.theme === "turva",
20392
20535
  "duet-tooltip-active": this.active === true,
20393
- }, onClick: e => e.stopPropagation() }, hAsync("div", { ref: element => (this.contentEl = element), class: "duet-tooltip-content-area", tabindex: 0, id: this.tooltipId }, hAsync("slot", null)), hAsync("div", { ref: element => (this.arrowEl = element), class: { arrow: true, [this.placement]: true }, style: this.arrowStyles }, hAsync("div", { class: { "arrow-container": true, [this.placement]: true } })), hAsync("button", { type: "button", class: "duet-tooltip-close", onClick: this.handleCloseClick }, hAsync("duet-icon", { name: "navigation-close-small", margin: "none", color: "currentColor", size: "xxx-small" }), hAsync("duet-visually-hidden", null, this.accessibleCloseLabel)))));
20536
+ } }, hAsync(FocusGuard, { moveFocusTo: this.buttonEl }), hAsync("div", { ref: element => (this.contentEl = element), class: "duet-tooltip-content-area", tabindex: 0, id: this.tooltipId }, hAsync("slot", null)), hAsync("div", { ref: element => (this.arrowEl = element), class: { arrow: true, [this.placement]: true }, style: this.arrowStyles }, hAsync("div", { class: { "arrow-container": true, [this.placement]: true } })), hAsync("button", { type: "button", class: "duet-tooltip-close", onClick: this.handleCloseClick, ref: el => (this.buttonEl = el) }, hAsync("duet-icon", { name: "navigation-close-small", margin: "none", color: "currentColor", size: "xxx-small" }), hAsync("duet-visually-hidden", null, this.accessibleCloseLabel)), hAsync(FocusGuard, { moveFocusTo: this.contentEl }))));
20394
20537
  }
20395
20538
  get element() { return getElement(this); }
20396
20539
  static get style() { return duetTooltipPopupCss; }
20397
20540
  static get cmpMeta() { return {
20398
- "$flags$": 6,
20541
+ "$flags$": 9,
20399
20542
  "$tagName$": "duet-tooltip-popup",
20400
20543
  "$members$": {
20401
20544
  "theme": [1025],
@@ -20637,6 +20780,15 @@ var errorCodes = [
20637
20780
  en: "You have reached the maximum combined filesize."
20638
20781
  }
20639
20782
  },
20783
+ {
20784
+ type: "duet-upload-203",
20785
+ system_message: "Files to upload exceed total byte size limit",
20786
+ message: {
20787
+ fi: "Yritit lisätä tiedostoja, jotka ylittäisivät suurimman sallitun yhteenlasketun koon.",
20788
+ sv: "Du försökte lägga till filer som skulle överskrida den maximala kombinerade storleken.",
20789
+ en: "You tried to add files that would exceed the maximum combined size."
20790
+ }
20791
+ },
20640
20792
  {
20641
20793
  type: "duet-upload-301",
20642
20794
  system_message: "The maximum file limit has been reached",
@@ -20686,10 +20838,15 @@ const getI18nError = (errorCode, errorCodes) => {
20686
20838
  }
20687
20839
  };
20688
20840
 
20841
+ const headerAriaLabel = {
20842
+ fi: "Liiteluettelo",
20843
+ sv: "Lista över bilagor",
20844
+ en: "Attachments list",
20845
+ };
20689
20846
  const UploadItemHeader = ({ label, categoryLabel }) => {
20690
- return (hAsync("div", { class: "items-header" },
20691
- categoryLabel && (hAsync("duet-heading", { class: "category-header", border: "solid", color: "gray-darker", level: "h3", "visual-level": "h6", weight: "semibold", margin: "none" }, getLocaleString(categoryLabel))),
20692
- hAsync("duet-heading", { class: { "filename-header": true, "no-category": !categoryLabel }, border: "solid", color: "gray-darker", level: "h3", "visual-level": "h6", weight: "semibold", margin: "none" }, getLocaleString(label))));
20847
+ return (hAsync("div", { class: "items-header", tabindex: "0", "aria-label": getLocaleString(headerAriaLabel) },
20848
+ categoryLabel && (hAsync("duet-heading", { class: "category-header", border: "solid", color: "gray-darker", level: "h3", "visual-level": "h6", weight: "semibold", margin: "none", "aria-hidden": "true" }, getLocaleString(categoryLabel))),
20849
+ hAsync("duet-heading", { class: { "filename-header": true, "no-category": !categoryLabel }, border: "solid", color: "gray-darker", level: "h3", "visual-level": "h6", weight: "semibold", margin: "none", "aria-hidden": "true" }, getLocaleString(label))));
20693
20850
  };
20694
20851
 
20695
20852
  const validateFileExtension = (name, allowedExtensions) => {
@@ -20791,6 +20948,25 @@ const filesToUploadCountAboveMax = (currentFilesCount, filesToUploadCount, maxFi
20791
20948
  }
20792
20949
  return false;
20793
20950
  };
20951
+ const filesToUploadTotalSizeIsAboveMax = (currentFiles, filesToUpload, maxTotalBytes) => {
20952
+ let total = 0;
20953
+ if (maxTotalBytes) {
20954
+ currentFiles.forEach(item => {
20955
+ if (item.valid && item.size) {
20956
+ total += item.size;
20957
+ }
20958
+ });
20959
+ filesToUpload.forEach(item => {
20960
+ if (item.size) {
20961
+ total += item.size;
20962
+ }
20963
+ });
20964
+ if (total >= maxTotalBytes) {
20965
+ return true;
20966
+ }
20967
+ }
20968
+ return false;
20969
+ };
20794
20970
 
20795
20971
  const makeXhrRequest = ({ payload, options, onFailure, onSuccess, onProgress }) => {
20796
20972
  // @ts-ignore
@@ -20857,6 +21033,7 @@ class DuetUpload {
20857
21033
  this.fileMaxReached = false;
20858
21034
  this.bytesMaxReached = false;
20859
21035
  this.filesToUploadExceedsLimit = false;
21036
+ this.filesToUploadTotalSizeIsAboveMax = false;
20860
21037
  this.internalStatusMessageLabel = undefined;
20861
21038
  this.itemRefs = new Map();
20862
21039
  /**
@@ -21346,27 +21523,27 @@ class DuetUpload {
21346
21523
  this.caption = undefined;
21347
21524
  this.statusLabelDefaults = {
21348
21525
  fi: {
21349
- inProgress: "Lähetetään {filesUploaded} lähetettävästä {filesTotal} tiedostosta",
21350
- inProgressWithErrors: "Lähetetään {filesInProgress} tiedostoa, lähetetty {filesUploaded} lähetettävästä {filesTotal} tiedostosta, {filesWithErrors} tiedostossa on virheitä",
21351
- done: "Kaikki {filesTotal} tiedostoa lähetetty onnistuneesti",
21352
- doneWithErrors: "Lataus valmis, {filesUploaded} tiedostoa ladattu onnistuneesti, {filesWithErrors} tiedostossa oli virheitä",
21353
- files: "tiedostot",
21526
+ inProgress: "Lähetetään {filesUploaded}, yhteensä lähetettävänä {filesTotal}.",
21527
+ inProgressWithErrors: "Lähetetään {filesInProgress}, lähetetty {filesUploaded}, yhteensä lähetettävänä {filesTotal}, {filesWithErrors} epäonnistui",
21528
+ done: "Lähetys valmis, {filesTotal} lisätty onnistuneesti",
21529
+ doneWithErrors: "Lähetys valmis, {filesUploaded} lisätty onnistuneesti, {filesWithErrors} epäonnistui",
21530
+ files: "tiedostoa",
21354
21531
  file: "tiedosto",
21355
21532
  },
21356
21533
  sv: {
21357
- inProgress: "Adding {filesUploaded} of {filesTotal}",
21534
+ inProgress: "Laddar upp {filesUploaded} av {filesTotal}",
21358
21535
  inProgressWithErrors: "Laddar upp {filesInProgress}, {filesUploaded} uppladdad av {filesTotal}, {filesWithErrors} misslyckades",
21359
- done: "Alla {filesTotal} har lagts till",
21360
- doneWithErrors: "Handling slutförd, {filesUploaded} har lagts till, {filesWithErrors} misslyckades",
21536
+ done: "Uppladdningen slutförd, {filesTotal} har lagts till",
21537
+ doneWithErrors: "Uppladdningen slutförd, {filesUploaded} har lagts till, {filesWithErrors} misslyckades",
21361
21538
  files: "filer",
21362
21539
  file: "fil",
21363
21540
  },
21364
21541
  en: {
21365
- inProgress: "Adding {filesUploaded} of {filesTotal}",
21542
+ inProgress: "Uploading {filesUploaded} of {filesTotal}",
21366
21543
  inProgressWithErrors: "Uploading {filesInProgress}, {filesUploaded} uploaded of {filesTotal}, {filesWithErrors} failed",
21367
- done: "All {filesTotal} added successfully",
21368
- doneWithErrors: "Action completed, {filesUploaded} has been added successfully, {filesWithErrors} had errors",
21369
- files: "File",
21544
+ done: "Upload completed, {filesTotal} added successfully",
21545
+ doneWithErrors: "Upload completed, {filesUploaded} added successfully, {filesWithErrors} failed.",
21546
+ files: "files",
21370
21547
  file: "file",
21371
21548
  },
21372
21549
  };
@@ -21412,7 +21589,7 @@ class DuetUpload {
21412
21589
  this.maxBytesTotal = undefined;
21413
21590
  this.maxFiles = 99;
21414
21591
  this.allowedExtensions = "all";
21415
- this.allowedMimetypes = "*";
21592
+ this.allowedMimetypes = "";
21416
21593
  this.multiple = true;
21417
21594
  this.limitSelection = false;
21418
21595
  this.value = undefined;
@@ -21424,6 +21601,7 @@ class DuetUpload {
21424
21601
  sv: "Lägg till en bilaga",
21425
21602
  en: "Uploaded file",
21426
21603
  };
21604
+ this.headerHeadingLevel = "h3";
21427
21605
  this.hideHeader = false;
21428
21606
  this.emitEvent = false;
21429
21607
  this.groups = [
@@ -21560,7 +21738,10 @@ class DuetUpload {
21560
21738
  this.externalUploadButton.ariaLabel = caption;
21561
21739
  }
21562
21740
  // @ts-ignore
21563
- return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("duet-fieldset", { "label-hidden": this.hideHeader, label: this.label, caption: !this.captionOnBottom ? caption : undefined }, hAsync("slot", { name: "header" }), !this.files.size && (hAsync("duet-empty-state", { id: this.labelId, part: this.identifier ? `${this.identifier}-empty-state` : "duet-upload-empty-state", icon: "messaging-attachment" }, hAsync("duet-paragraph", { margin: "none" }, this.fileListEmpty))), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.internalStatusMessageLabel })), !!this.files.size && this.renderUploadedItems(), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("slot", { name: "uploadfooter" }), this.captionOnBottom && (hAsync("duet-caption", { margin: "none", size: "small" }, hAsync("div", { class: "upload-bottom-caption" }, caption))), hAsync("slot", { name: "afterfooter" }), !this.hideButton && (hAsync(Fragment, null, hAsync("duet-spacer", { size: "large" }), hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle", part: this.identifier ? `${this.identifier}-button-upload` : "duet-upload-button-upload" }, this.buttonLabel))), (this.fileMaxReached || this.bytesMaxReached || this.filesToUploadExceedsLimit) && (hAsync(Fragment, null, hAsync("duet-spacer", { size: "medium" }), hAsync("duet-alert", { part: this.identifier ? `${this.identifier}-error-notification` : "duet-upload-error-notification" }, this.fileMaxReached && getI18nError("duet-upload-301", this.errorCodes), this.bytesMaxReached && getI18nError("duet-upload-202", this.errorCodes), this.filesToUploadExceedsLimit && getI18nError("duet-upload-302", this.errorCodes)))), hAsync("duet-visually-hidden", { "aria-hidden": "true" }, hAsync("input", { ref: input => {
21741
+ return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("duet-fieldset", { "label-heading-level": this.headerHeadingLevel, "label-hidden": this.hideHeader, label: this.label, caption: !this.captionOnBottom ? caption : undefined }, hAsync("slot", { name: "header" }), !this.files.size && (hAsync("duet-empty-state", { id: this.labelId, part: this.identifier ? `${this.identifier}-empty-state` : "duet-upload-empty-state", icon: "messaging-attachment" }, hAsync("duet-paragraph", { margin: "none" }, this.fileListEmpty))), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.internalStatusMessageLabel })), !!this.files.size && this.renderUploadedItems(), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("slot", { name: "uploadfooter" }), this.captionOnBottom && (hAsync("duet-caption", { margin: "none", size: "small" }, hAsync("div", { class: "upload-bottom-caption" }, caption))), hAsync("slot", { name: "afterfooter" }), !this.hideButton && (hAsync(Fragment, null, hAsync("duet-spacer", { size: "large" }), hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle", part: this.identifier ? `${this.identifier}-button-upload` : "duet-upload-button-upload" }, this.buttonLabel))), (this.fileMaxReached ||
21742
+ this.bytesMaxReached ||
21743
+ this.filesToUploadExceedsLimit ||
21744
+ this.filesToUploadTotalSizeIsAboveMax) && (hAsync(Fragment, null, hAsync("duet-spacer", { size: "medium" }), hAsync("duet-alert", { part: this.identifier ? `${this.identifier}-error-notification` : "duet-upload-error-notification" }, this.fileMaxReached && getI18nError("duet-upload-301", this.errorCodes), this.bytesMaxReached && getI18nError("duet-upload-202", this.errorCodes), this.filesToUploadExceedsLimit && getI18nError("duet-upload-302", this.errorCodes), this.filesToUploadTotalSizeIsAboveMax && getI18nError("duet-upload-203", this.errorCodes)))), hAsync("duet-visually-hidden", { "aria-hidden": "true" }, hAsync("input", { ref: input => {
21564
21745
  this.nativeInput = input;
21565
21746
  }, accept: !this.limitSelection ? undefined : `${this.allowedMimetypes},${this.allowedExtensions}`, onBlur: this.onBlur, onFocus: this.onFocus, onChange: e => this.onChange(e), type: "file", class: {
21566
21747
  "duet-upload": true,
@@ -21637,6 +21818,12 @@ class DuetUpload {
21637
21818
  this.kick();
21638
21819
  return;
21639
21820
  }
21821
+ this.filesToUploadTotalSizeIsAboveMax = false;
21822
+ if (filesToUploadTotalSizeIsAboveMax(this.files, selectedFiles, this.maxBytesTotal)) {
21823
+ this.filesToUploadTotalSizeIsAboveMax = true;
21824
+ this.kick();
21825
+ return;
21826
+ }
21640
21827
  if (selectedFiles) {
21641
21828
  for (const item of selectedFiles) {
21642
21829
  const { valid, errorMessage, errorType, errorSystem } = validateFile(item, {
@@ -21743,6 +21930,7 @@ class DuetUpload {
21743
21930
  "captionOnBottom": [4, "caption-on-bottom"],
21744
21931
  "showUploadedItemsHeader": [4, "show-uploaded-items-header"],
21745
21932
  "uploadedItemsHeaderLabel": [16],
21933
+ "headerHeadingLevel": [1, "header-heading-level"],
21746
21934
  "hideHeader": [4, "hide-header"],
21747
21935
  "emitEvent": [4, "link-click-event"],
21748
21936
  "groups": [16],
@@ -21894,7 +22082,8 @@ class DuetUploadItem {
21894
22082
  }
21895
22083
  async focusActionButton() {
21896
22084
  if (this.actionButton) {
21897
- await this.actionButton.setFocus();
22085
+ await this.actionButton.setFocus({ preventScroll: true });
22086
+ this.actionButton.scrollIntoView({ behavior: "smooth", block: "center", inline: "nearest" });
21898
22087
  }
21899
22088
  }
21900
22089
  getFileNameLine() {
@@ -21914,9 +22103,9 @@ class DuetUploadItem {
21914
22103
  }
21915
22104
  }
21916
22105
  render() {
21917
- const { uid, meta } = this.data;
22106
+ const { uid, meta, item } = this.data;
21918
22107
  const Badges = meta && meta.badges ? (hAsync("span", null, meta.badges.map(badgeText => (hAsync("duet-badge", { color: "primary" }, badgeText))))) : undefined;
21919
- const actionDescription = `${meta && meta.badges ? meta.badges.join(",") : ""} ${name}`;
22108
+ const actionDescription = `${meta && meta.badges ? meta.badges.join(",") : ""} ${item.name}`;
21920
22109
  return (hAsync("div", { class: {
21921
22110
  "upload-item-row": true,
21922
22111
  } }, this.showCategory && (hAsync("div", { class: "item-categories" }, hAsync("duet-heading", { class: "heading", color: "color-secondary", level: "h6", weight: "semibold" }, getLocaleString(this.categoryLabel)), Badges)), hAsync("div", { class: { "item-name": true, "no-category": !this.showCategory } }, !!this.label && (hAsync("duet-heading", { class: "heading", color: "color-secondary", level: "h6", weight: "semibold" }, getLocaleString(this.label))), this.getFileNameLine()), hAsync("div", { class: "item-actions" }, this.actions.map(actionItem => {
@@ -22058,6 +22247,7 @@ registerComponents([
22058
22247
  DuetToolbarDropdownLink,
22059
22248
  DuetToolbarLink,
22060
22249
  DuetTooltip,
22250
+ DuetTooltipButton,
22061
22251
  DuetTooltipPopup,
22062
22252
  DuetTray,
22063
22253
  DuetUpload,