@duetds/components 4.35.3 → 4.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/hydrate/index.js +517 -15
  2. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  3. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-button_2.cjs.entry.js +8 -3
  7. package/lib/cjs/duet-caption_4.cjs.entry.js +2 -2
  8. package/lib/cjs/duet-card.cjs.entry.js +3 -3
  9. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  10. package/lib/cjs/duet-choice_2.cjs.entry.js +3 -3
  11. package/lib/cjs/duet-collapsible.cjs.entry.js +3 -3
  12. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  13. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  14. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-editable-table-button.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-editable-table_4.cjs.entry.js +4 -13
  17. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-header_2.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  23. package/lib/cjs/duet-icon.cjs.entry.js +2 -2
  24. package/lib/cjs/duet-input_2.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-modal.cjs.entry.js +3 -3
  28. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-number-input.cjs.entry.js +2 -2
  30. package/lib/cjs/duet-pagination_2.cjs.entry.js +448 -0
  31. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  32. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-scrollable_3.cjs.entry.js +3 -3
  35. package/lib/cjs/duet-select.cjs.entry.js +16 -4
  36. package/lib/cjs/duet-step_2.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
  40. package/lib/cjs/duet-tray.cjs.entry.js +1 -1
  41. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  42. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  43. package/lib/cjs/duet.cjs.js +2 -2
  44. package/lib/cjs/{focus-utils-5cc92935.js → focus-utils-dfd718e8.js} +1 -1
  45. package/lib/cjs/{index-f863de47.js → index-4f342f1c.js} +4 -1
  46. package/lib/cjs/js-utils-33a9dbe3.js +16 -0
  47. package/lib/cjs/{keyboard-utils-b4e3d1d3.js → keyboard-utils-898cfe14.js} +8 -0
  48. package/lib/cjs/loader.cjs.js +2 -2
  49. package/lib/cjs/{token-utils-05bd23b4.js → token-utils-f402e205.js} +9 -6
  50. package/lib/collection/collection-manifest.json +8 -0
  51. package/lib/collection/components/duet-button/duet-button.css +3 -0
  52. package/lib/collection/components/duet-button/duet-button.js +27 -0
  53. package/lib/collection/components/duet-card/duet-card.js +1 -1
  54. package/lib/collection/components/duet-collapsible/duet-collapsible.js +2 -1
  55. package/lib/collection/components/duet-pagination/duet-pagination-utils.js +9 -0
  56. package/lib/collection/components/duet-pagination/duet-pagination.css +120 -0
  57. package/lib/collection/components/duet-pagination/duet-pagination.js +511 -0
  58. package/lib/collection/components/duet-range-stepper/duet-range-stepper.css +100 -0
  59. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +342 -0
  60. package/lib/collection/components/duet-select/duet-select.css +26 -0
  61. package/lib/collection/components/duet-select/duet-select.js +39 -4
  62. package/lib/collection/components/duet-tab-group/duet-tab-group.js +5 -1
  63. package/lib/collection/utils/fixture-utils.js +0 -4
  64. package/lib/collection/utils/keyboard-utils.js +4 -0
  65. package/lib/collection/utils/test-utils.js +2 -1
  66. package/lib/collection/utils/token-utils.js +33 -6
  67. package/lib/custom-elements-bundle/index.d.ts +12 -0
  68. package/lib/custom-elements-bundle/index.js +482 -16
  69. package/lib/duet/duet.esm.js +1 -1
  70. package/lib/duet/duet.js +1 -1
  71. package/lib/duet/{p-4dee11c0.system.entry.js → p-0366552b.system.entry.js} +1 -1
  72. package/lib/duet/{p-c999b0a0.entry.js → p-03cf3ebf.entry.js} +1 -1
  73. package/lib/duet/{p-89b641c1.system.entry.js → p-05e2c680.system.entry.js} +1 -1
  74. package/lib/duet/{p-20770074.system.entry.js → p-061835f3.system.entry.js} +1 -1
  75. package/lib/duet/p-063fe96d.entry.js +4 -0
  76. package/lib/duet/{p-04db8923.system.entry.js → p-12941aef.system.entry.js} +2 -2
  77. package/lib/duet/{p-112ae31f.system.entry.js → p-164a7037.system.entry.js} +1 -1
  78. package/lib/duet/{p-5a5c0f82.entry.js → p-1a95aeb6.entry.js} +1 -1
  79. package/lib/duet/{p-719aa1cf.entry.js → p-1c4721a1.entry.js} +1 -1
  80. package/lib/duet/{p-999bd008.entry.js → p-1db7a35b.entry.js} +1 -1
  81. package/lib/duet/{p-a31b1d0c.entry.js → p-20cdb787.entry.js} +1 -1
  82. package/lib/duet/{p-e228c0a0.system.entry.js → p-210d739c.system.entry.js} +1 -1
  83. package/lib/duet/{p-4429cdb2.system.entry.js → p-211b4485.system.entry.js} +1 -1
  84. package/lib/duet/{p-e80b0c03.system.entry.js → p-22baf1f8.system.entry.js} +1 -1
  85. package/lib/duet/{p-3ae153aa.entry.js → p-2361986e.entry.js} +1 -1
  86. package/lib/duet/{p-4ca7a496.entry.js → p-24b9e806.entry.js} +1 -1
  87. package/lib/duet/{p-fc1e77a4.system.entry.js → p-286d2ad2.system.entry.js} +1 -1
  88. package/lib/duet/{p-f0732de0.entry.js → p-29255af8.entry.js} +1 -1
  89. package/lib/duet/p-2eeacf1a.entry.js +4 -0
  90. package/lib/duet/p-3547d108.entry.js +4 -0
  91. package/lib/duet/{p-264d0b24.system.entry.js → p-3900577d.system.entry.js} +1 -1
  92. package/lib/duet/p-396f1bdc.entry.js +4 -0
  93. package/lib/duet/{p-9bc2e0b8.system.entry.js → p-3bb702e3.system.entry.js} +2 -2
  94. package/lib/duet/{p-706eeb09.entry.js → p-3c3536be.entry.js} +1 -1
  95. package/lib/duet/{p-c5eddafe.entry.js → p-3d1b0105.entry.js} +1 -1
  96. package/lib/duet/{p-7582675a.entry.js → p-46ae601a.entry.js} +1 -1
  97. package/lib/duet/{p-b4869f24.system.entry.js → p-493c6d2f.system.entry.js} +1 -1
  98. package/lib/duet/p-4e2532c7.system.js +4 -0
  99. package/lib/duet/{p-756b56a6.system.entry.js → p-4fdbc6ff.system.entry.js} +1 -1
  100. package/lib/duet/{p-4da5cb97.entry.js → p-5376a9db.entry.js} +1 -1
  101. package/lib/duet/{p-9170b4c4.entry.js → p-562ae946.entry.js} +1 -1
  102. package/lib/duet/{p-d7daa7ef.entry.js → p-5b546064.entry.js} +1 -1
  103. package/lib/duet/{p-a4503985.entry.js → p-5d9affcd.entry.js} +1 -1
  104. package/lib/duet/{p-a0b7cb61.system.entry.js → p-615bfc61.system.entry.js} +1 -1
  105. package/lib/duet/{p-ef895424.system.entry.js → p-635dacce.system.entry.js} +1 -1
  106. package/lib/duet/{p-07e793a6.system.entry.js → p-65c418f7.system.entry.js} +2 -2
  107. package/lib/duet/{p-1d3f88a6.entry.js → p-740b5609.entry.js} +1 -1
  108. package/lib/duet/p-74780bca.system.js +4 -0
  109. package/lib/duet/{p-c8c7bc80.system.entry.js → p-79b9e7ef.system.entry.js} +1 -1
  110. package/lib/duet/{p-90f4de78.system.entry.js → p-7a32ceb3.system.entry.js} +1 -1
  111. package/lib/duet/{p-a04f385f.entry.js → p-7b55f33e.entry.js} +1 -1
  112. package/lib/duet/p-7e0e2209.system.entry.js +4 -0
  113. package/lib/duet/{p-d7c1efc6.entry.js → p-7f0e360d.entry.js} +1 -1
  114. package/lib/duet/p-81867417.system.js +4 -0
  115. package/lib/duet/p-83452e8f.entry.js +4 -0
  116. package/lib/duet/{p-02ab802f.entry.js → p-85100e09.entry.js} +1 -1
  117. package/lib/duet/p-898f30a5.js +4 -0
  118. package/lib/duet/p-89e42127.system.entry.js +4 -0
  119. package/lib/duet/{p-02eab9d4.system.entry.js → p-8c53bc24.system.entry.js} +1 -1
  120. package/lib/duet/{p-7f9cbd19.system.entry.js → p-946f34b4.system.entry.js} +1 -1
  121. package/lib/duet/{p-c43d44b5.entry.js → p-9ce0e625.entry.js} +1 -1
  122. package/lib/duet/{p-ec90489b.system.entry.js → p-9df321b3.system.entry.js} +1 -1
  123. package/lib/duet/{p-09f9d630.system.entry.js → p-a3d7951c.system.entry.js} +1 -1
  124. package/lib/duet/p-a619dff3.system.js +4 -0
  125. package/lib/duet/{p-b17db623.system.js → p-ad3dad04.system.js} +1 -1
  126. package/lib/duet/{p-31f570f2.entry.js → p-ae14591e.entry.js} +1 -1
  127. package/lib/duet/p-b25d3769.js +4 -0
  128. package/lib/duet/{p-b15511a2.entry.js → p-b6dd0933.entry.js} +1 -1
  129. package/lib/duet/{p-3c29aa52.entry.js → p-bf192d9f.entry.js} +1 -1
  130. package/lib/duet/{p-a644a5f9.entry.js → p-c18080ad.entry.js} +1 -1
  131. package/lib/duet/{p-8a682c91.entry.js → p-c2d32103.entry.js} +1 -1
  132. package/lib/duet/p-c514010b.system.entry.js +4 -0
  133. package/lib/duet/{p-b095e76c.system.entry.js → p-c52f4de0.system.entry.js} +1 -1
  134. package/lib/duet/{p-32385f42.system.entry.js → p-c6df2ea8.system.entry.js} +1 -1
  135. package/lib/duet/{p-9fc5f201.system.entry.js → p-c76a68aa.system.entry.js} +1 -1
  136. package/lib/duet/{p-6486519a.system.entry.js → p-c7fa7dcc.system.entry.js} +1 -1
  137. package/lib/duet/{p-3f1bfd32.entry.js → p-c8ec3b99.entry.js} +1 -1
  138. package/lib/duet/{p-5451cadc.system.entry.js → p-ca0ee655.system.entry.js} +1 -1
  139. package/lib/duet/p-cb445018.js +4 -0
  140. package/lib/duet/p-d12b3d21.system.entry.js +4 -0
  141. package/lib/duet/{p-4d7840ac.system.js → p-d21f19cc.system.js} +1 -1
  142. package/lib/duet/{p-da11a633.entry.js → p-d24c6bc1.entry.js} +1 -1
  143. package/lib/duet/{p-587a09a9.system.entry.js → p-d945a4b0.system.entry.js} +1 -1
  144. package/lib/duet/{p-eda12bb9.system.entry.js → p-d9716aec.system.entry.js} +1 -1
  145. package/lib/duet/p-dcaecb5e.js +4 -0
  146. package/lib/duet/{p-5c785f54.system.entry.js → p-ded33218.system.entry.js} +1 -1
  147. package/lib/duet/{p-1a3ae51a.entry.js → p-e35d8543.entry.js} +1 -1
  148. package/lib/duet/{p-bb79460f.system.entry.js → p-e47daca7.system.entry.js} +1 -1
  149. package/lib/duet/{p-d054d313.system.entry.js → p-e5ce7aad.system.entry.js} +1 -1
  150. package/lib/duet/p-e6a69eb8.js +4 -0
  151. package/lib/duet/{p-5af7b3cb.system.entry.js → p-e7b53f4f.system.entry.js} +1 -1
  152. package/lib/duet/{p-3629c104.system.entry.js → p-e7dd8a15.system.entry.js} +1 -1
  153. package/lib/duet/{p-54c57aed.system.entry.js → p-e8303364.system.entry.js} +1 -1
  154. package/lib/duet/{p-856e0c17.entry.js → p-e8e35258.entry.js} +1 -1
  155. package/lib/duet/{p-fcb1e479.system.entry.js → p-eb892975.system.entry.js} +1 -1
  156. package/lib/duet/{p-6ef7cbec.entry.js → p-ebc56043.entry.js} +1 -1
  157. package/lib/duet/{p-618cb809.entry.js → p-ef275410.entry.js} +1 -1
  158. package/lib/duet/p-ef4962e8.entry.js +4 -0
  159. package/lib/duet/{p-46e93e09.entry.js → p-f6da56c8.entry.js} +1 -1
  160. package/lib/duet/{p-01450526.entry.js → p-fae71c1f.entry.js} +1 -1
  161. package/lib/duet/{p-c0c14e42.entry.js → p-fd2211ab.entry.js} +1 -1
  162. package/lib/duet/{p-ff759fb3.entry.js → p-ff21f3c2.entry.js} +1 -1
  163. package/lib/duet/{p-b60ec55f.system.entry.js → p-ffb5fb75.system.entry.js} +1 -1
  164. package/lib/esm/duet-alert.entry.js +1 -1
  165. package/lib/esm/duet-badge.entry.js +1 -1
  166. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  167. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  168. package/lib/esm/duet-button_2.entry.js +8 -3
  169. package/lib/esm/duet-caption_4.entry.js +2 -2
  170. package/lib/esm/duet-card.entry.js +3 -3
  171. package/lib/esm/duet-checkbox.entry.js +1 -1
  172. package/lib/esm/duet-choice_2.entry.js +3 -3
  173. package/lib/esm/duet-collapsible.entry.js +3 -3
  174. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  175. package/lib/esm/duet-date-picker.entry.js +2 -2
  176. package/lib/esm/duet-divider_2.entry.js +1 -1
  177. package/lib/esm/duet-editable-table-button.entry.js +2 -2
  178. package/lib/esm/duet-editable-table_4.entry.js +2 -11
  179. package/lib/esm/duet-empty-state.entry.js +1 -1
  180. package/lib/esm/duet-fieldset.entry.js +1 -1
  181. package/lib/esm/duet-footer.entry.js +1 -1
  182. package/lib/esm/duet-grid_2.entry.js +1 -1
  183. package/lib/esm/duet-header_2.entry.js +2 -2
  184. package/lib/esm/duet-hero.entry.js +1 -1
  185. package/lib/esm/duet-icon.entry.js +2 -2
  186. package/lib/esm/duet-input_2.entry.js +1 -1
  187. package/lib/esm/duet-layout.entry.js +1 -1
  188. package/lib/esm/duet-list_2.entry.js +1 -1
  189. package/lib/esm/duet-modal.entry.js +3 -3
  190. package/lib/esm/duet-notification_2.entry.js +1 -1
  191. package/lib/esm/duet-number-input.entry.js +2 -2
  192. package/lib/esm/duet-pagination_2.entry.js +443 -0
  193. package/lib/esm/duet-progress.entry.js +1 -1
  194. package/lib/esm/duet-radio_2.entry.js +1 -1
  195. package/lib/esm/duet-range-slider.entry.js +1 -1
  196. package/lib/esm/duet-scrollable_3.entry.js +3 -3
  197. package/lib/esm/duet-select.entry.js +16 -4
  198. package/lib/esm/duet-step_2.entry.js +2 -2
  199. package/lib/esm/duet-textarea.entry.js +1 -1
  200. package/lib/esm/duet-toggle.entry.js +1 -1
  201. package/lib/esm/duet-tooltip.entry.js +1 -1
  202. package/lib/esm/duet-tray.entry.js +1 -1
  203. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  204. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  205. package/lib/esm/duet.js +2 -2
  206. package/lib/esm/{focus-utils-386eaef9.js → focus-utils-d4e80e1e.js} +1 -1
  207. package/lib/esm/{index-a22a5200.js → index-4a5e7664.js} +4 -1
  208. package/lib/esm/js-utils-b69f17df.js +14 -0
  209. package/lib/esm/{keyboard-utils-584cedd7.js → keyboard-utils-6eb55cd5.js} +5 -1
  210. package/lib/esm/loader.js +2 -2
  211. package/lib/esm/{token-utils-75f78ca4.js → token-utils-e9a69acf.js} +9 -6
  212. package/lib/esm-es5/duet-alert.entry.js +1 -1
  213. package/lib/esm-es5/duet-badge.entry.js +1 -1
  214. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  215. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  216. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  217. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  218. package/lib/esm-es5/duet-card.entry.js +1 -1
  219. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  220. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  221. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  222. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  223. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  224. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  225. package/lib/esm-es5/duet-editable-table-button.entry.js +1 -1
  226. package/lib/esm-es5/duet-editable-table_4.entry.js +2 -2
  227. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  228. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  229. package/lib/esm-es5/duet-footer.entry.js +1 -1
  230. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  231. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  232. package/lib/esm-es5/duet-hero.entry.js +1 -1
  233. package/lib/esm-es5/duet-icon.entry.js +1 -1
  234. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  235. package/lib/esm-es5/duet-layout.entry.js +1 -1
  236. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  237. package/lib/esm-es5/duet-modal.entry.js +1 -1
  238. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  239. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  240. package/lib/esm-es5/duet-pagination_2.entry.js +4 -0
  241. package/lib/esm-es5/duet-progress.entry.js +1 -1
  242. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  243. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  244. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  245. package/lib/esm-es5/duet-select.entry.js +2 -2
  246. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  247. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  248. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  249. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  250. package/lib/esm-es5/duet-tray.entry.js +1 -1
  251. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  252. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  253. package/lib/esm-es5/duet.js +1 -1
  254. package/lib/esm-es5/focus-utils-d4e80e1e.js +4 -0
  255. package/lib/esm-es5/{index-a22a5200.js → index-4a5e7664.js} +1 -1
  256. package/lib/esm-es5/js-utils-b69f17df.js +4 -0
  257. package/lib/esm-es5/keyboard-utils-6eb55cd5.js +4 -0
  258. package/lib/esm-es5/loader.js +1 -1
  259. package/lib/esm-es5/token-utils-e9a69acf.js +4 -0
  260. package/lib/html.html-data.json +5166 -0
  261. package/lib/types/components/duet-button/duet-button.d.ts +5 -0
  262. package/lib/types/components/duet-card/duet-card.d.ts +1 -1
  263. package/lib/types/components/duet-collapsible/duet-collapsible.d.ts +1 -0
  264. package/lib/types/components/duet-pagination/duet-pagination-utils.d.ts +1 -0
  265. package/lib/types/components/duet-pagination/duet-pagination.d.ts +100 -0
  266. package/lib/types/components/duet-range-stepper/duet-range-stepper.d.ts +70 -0
  267. package/lib/types/components/duet-select/duet-select.d.ts +5 -0
  268. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +4 -0
  269. package/lib/types/components.d.ts +188 -2
  270. package/lib/types/utils/keyboard-utils.d.ts +4 -0
  271. package/lib/types/utils/token-utils.d.ts +2 -0
  272. package/package.json +5 -5
  273. package/lib/duet/p-04f9f1bf.js +0 -4
  274. package/lib/duet/p-2a8c607e.entry.js +0 -4
  275. package/lib/duet/p-3c2ab6eb.js +0 -4
  276. package/lib/duet/p-4ce0bc2c.entry.js +0 -4
  277. package/lib/duet/p-50b4fb2c.js +0 -4
  278. package/lib/duet/p-52d7ffa5.entry.js +0 -4
  279. package/lib/duet/p-5846949a.system.entry.js +0 -4
  280. package/lib/duet/p-5c73e005.entry.js +0 -4
  281. package/lib/duet/p-7464e383.system.entry.js +0 -4
  282. package/lib/duet/p-89cc645f.entry.js +0 -4
  283. package/lib/duet/p-9fa468bc.system.entry.js +0 -4
  284. package/lib/duet/p-a16a58c1.system.js +0 -4
  285. package/lib/duet/p-ad3a1685.system.js +0 -4
  286. package/lib/duet/p-bb12b972.system.js +0 -4
  287. package/lib/duet/p-c1731f1a.js +0 -4
  288. package/lib/esm-es5/focus-utils-386eaef9.js +0 -4
  289. package/lib/esm-es5/keyboard-utils-584cedd7.js +0 -4
  290. package/lib/esm-es5/token-utils-75f78ca4.js +0 -4
package/hydrate/index.js CHANGED
@@ -4704,7 +4704,7 @@ function hydrateFactory($stencilWindow, $stencilHydrateOpts, $stencilHydrateResu
4704
4704
 
4705
4705
 
4706
4706
  const NAMESPACE = 'duet';
4707
- const BUILD = /* duet */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: true, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, cssVarShim: false, devTools: false, disconnectedCallback: true, dynamicImportShim: false, element: false, event: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: true, hydratedAttribute: false, hydratedClass: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, safari10: false, scoped: true, scriptDataOpts: false, shadowDelegatesFocus: true, shadowDom: true, shadowDomShim: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };
4707
+ const BUILD = /* duet */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: true, cmpDidUnload: false, cmpDidUpdate: true, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, cssVarShim: false, devTools: false, disconnectedCallback: true, dynamicImportShim: false, element: false, event: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: true, hydratedAttribute: false, hydratedClass: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, safari10: false, scoped: true, scriptDataOpts: false, shadowDelegatesFocus: true, shadowDom: true, shadowDomShim: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };
4708
4708
 
4709
4709
  const TAB_KEY = 9;
4710
4710
  var appGlobalScript = () => {
@@ -5204,7 +5204,8 @@ const callRender = (e, t, o) => {
5204
5204
  return null;
5205
5205
  }, postUpdateComponent = e => {
5206
5206
  const t = e.$cmpMeta$.$tagName$, o = e.$hostElement$, n = createTime("postUpdate", t), s = e.$lazyInstance$ , l = e.$ancestorComponent$;
5207
- 64 & e.$flags$ ? ((safeCall(s, "componentDidUpdate"),
5207
+ (safeCall(s, "componentDidRender"),
5208
+ BUILD.isDev ), 64 & e.$flags$ ? ((safeCall(s, "componentDidUpdate"),
5208
5209
  BUILD.isDev ), n()) : (e.$flags$ |= 64, addHydratedFlag(o),
5209
5210
  (safeCall(s, "componentDidLoad"),
5210
5211
  BUILD.isDev ), n(), (e.$onReadyResolve$(o), l || appDidLoad())), e.$onInstanceResolve$(o), (e.$onRenderResolve$ && (e.$onRenderResolve$(),
@@ -6290,12 +6291,15 @@ function getTheme(theme = "") {
6290
6291
  }
6291
6292
  return "";
6292
6293
  }
6293
- function hasColor(str = "") {
6294
- return str.indexOf("Color") === 0 || str.indexOf("color") === 0;
6294
+ function capitalizeFirstLetter(string) {
6295
+ return string.charAt(0).toUpperCase() + string.slice(1);
6295
6296
  }
6296
- function addColor(str = "") {
6297
- if (str && !isDashCase(str) && !hasColor(str)) {
6298
- return `color${capitalize(str)}`;
6297
+ function hasType(t, str = "") {
6298
+ return str.indexOf(capitalizeFirstLetter(t)) === 0 || str.indexOf(t) === 0;
6299
+ }
6300
+ function addPrefix(prefix, str = "") {
6301
+ if (str && !isDashCase(str) && !hasType(prefix, str)) {
6302
+ return `${prefix}${capitalize(str)}`;
6299
6303
  }
6300
6304
  return str;
6301
6305
  }
@@ -6325,14 +6329,14 @@ function convertToColorName(name = "", theme = "") {
6325
6329
  if (dash) {
6326
6330
  colorResolution = camelize(colorResolution);
6327
6331
  }
6328
- colorResolution = addColor(colorResolution);
6332
+ colorResolution = addPrefix("color", colorResolution);
6329
6333
  colorResolution = addTheme(colorResolution, theme);
6330
6334
  // takes care of the case where colorPrimaryDark ends up with ColorPrimaryDark
6331
6335
  colorResolution = lowerCaseFirst(colorResolution);
6332
6336
  return colorResolution;
6333
6337
  }
6334
6338
 
6335
- const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:#0077b3 !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only)*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only){padding:9px 19px 10px !important;min-width:5.3333333333rem;font-size:0.875rem}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon{padding-left:48px !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon-right*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon-right{padding-right:48px !important;padding-left:20px !important}/*!@.duet-theme-turva .duet-button*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#c60c30 !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-button:active*/.duet-button.sc-duet-button:active{opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:#e1e3e6}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:#c60c30 !important;border-color:#e4e4e6}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:#c60c30}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:white}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:#e4e4e6 !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.primary*/.duet-button.primary.sc-duet-button{color:white !important;background:#0077b3;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button{color:white !important;background:#c60c30;border-color:#c60c30}/*!@.duet-button.primary:hover*/.duet-button.primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover{background:#940925;border-color:#940925}/*!@.duet-button.primary:focus*/.duet-button.primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px white, 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus{box-shadow:0 0 0 1px white, 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary*/.duet-button.secondary.sc-duet-button{color:#00294d !important;background:transparent;border-color:#00294d}/*!@.duet-theme-turva .duet-button.secondary*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button{color:#171c3a !important;border-color:#171c3a}/*!@.duet-button.secondary:hover*/.duet-button.secondary.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.secondary.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button{color:#e1e3e6 !important;border-color:white}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.secondary.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:#00294d !important;background:white;border-color:white}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:#171c3a !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:white !important;background:transparent;border-color:white}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px #00294d, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px #171c3a, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive-primary*/.duet-button.destructive-primary.sc-duet-button{color:white !important;background:#de2362;border-color:#de2362}/*!@.duet-theme-turva .duet-button.destructive-primary*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button{color:white !important;background:#e02a0d;border-color:#e02a0d}/*!@.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:#de2362 !important;background:white;border-color:#de2362}/*!@.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:#e02a0d !important;background:white;border-color:#e02a0d}/*!@.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:white !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:white !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:#c60c30 !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:#657787 !important;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;background:transparent !important;border-color:#e4e4e6 !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:#004d80 !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:#940925 !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:white !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:#657787 !important;background:#e1e3e6 !important;border-color:#e1e3e6 !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:#747475 !important;background:#e4e4e6 !important;border-color:#e4e4e6 !important}/*!@.duet-button-is-loading.primary*/.duet-button-is-loading.primary.sc-duet-button{color:white}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:#0077b3}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:#c60c30}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
6339
+ const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:#0077b3 !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button.duet-button-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:#c60c30 !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-button:active*/.duet-button.sc-duet-button:active{opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:#e1e3e6}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:#c60c30 !important;border-color:#e4e4e6}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:#c60c30}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:white}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:#e4e4e6 !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.primary*/.duet-button.primary.sc-duet-button{color:white !important;background:#0077b3;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button{color:white !important;background:#c60c30;border-color:#c60c30}/*!@.duet-button.primary:hover*/.duet-button.primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover{background:#940925;border-color:#940925}/*!@.duet-button.primary:focus*/.duet-button.primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px white, 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus{box-shadow:0 0 0 1px white, 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary*/.duet-button.secondary.sc-duet-button{color:#00294d !important;background:transparent;border-color:#00294d}/*!@.duet-theme-turva .duet-button.secondary*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button{color:#171c3a !important;border-color:#171c3a}/*!@.duet-button.secondary:hover*/.duet-button.secondary.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.secondary.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button{color:#e1e3e6 !important;border-color:white}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.secondary.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:#00294d !important;background:white;border-color:white}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:#171c3a !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:white !important;background:transparent;border-color:white}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px #00294d, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px #171c3a, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive-primary*/.duet-button.destructive-primary.sc-duet-button{color:white !important;background:#de2362;border-color:#de2362}/*!@.duet-theme-turva .duet-button.destructive-primary*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button{color:white !important;background:#e02a0d;border-color:#e02a0d}/*!@.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:#de2362 !important;background:white;border-color:#de2362}/*!@.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:#e02a0d !important;background:white;border-color:#e02a0d}/*!@.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:white !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:white !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:#c60c30 !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:#657787 !important;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;background:transparent !important;border-color:#e4e4e6 !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:#004d80 !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:#940925 !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:white !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:#657787 !important;background:#e1e3e6 !important;border-color:#e1e3e6 !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:#747475 !important;background:#e4e4e6 !important;border-color:#e4e4e6 !important}/*!@.duet-button-is-loading.primary*/.duet-button-is-loading.primary.sc-duet-button{color:white}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:#0077b3}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:#c60c30}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
6336
6340
 
6337
6341
  class DuetButton {
6338
6342
  constructor(hostRef) {
@@ -6365,6 +6369,10 @@ class DuetButton {
6365
6369
  * Controls the padding of the component.
6366
6370
  */
6367
6371
  this.padding = "auto";
6372
+ /**
6373
+ * Centers the text of a button
6374
+ */
6375
+ this.centerText = false;
6368
6376
  /**
6369
6377
  * Controls the text wrapping.
6370
6378
  */
@@ -6529,6 +6537,7 @@ class DuetButton {
6529
6537
  "duet-button": true,
6530
6538
  "duet-button-is-small": this.size === "small",
6531
6539
  "duet-button-icon-only": this.iconOnly,
6540
+ "duet-button-text-center": this.centerText,
6532
6541
  "duet-button-negative": this.negative || this.variation === "negative",
6533
6542
  [this.variation]: true,
6534
6543
  disabled: this.disabled,
@@ -6581,6 +6590,7 @@ class DuetButton {
6581
6590
  "theme": [1025],
6582
6591
  "margin": [1],
6583
6592
  "padding": [1],
6593
+ "centerText": [4, "center-text"],
6584
6594
  "wrapping": [1],
6585
6595
  "expand": [4],
6586
6596
  "fixed": [4],
@@ -6678,18 +6688,22 @@ const isArrowLeftKey = (e) => e.keyCode === 37;
6678
6688
  const isArrowUpKey = (e) => e.keyCode === 38;
6679
6689
  const isArrowRightKey = (e) => e.keyCode === 39;
6680
6690
  const isArrowDownKey = (e) => e.keyCode === 40;
6691
+ const isArrowKey = (e) => isArrowDownKey(e) || isArrowRightKey(e) || isArrowUpKey(e) || isArrowLeftKey(e);
6681
6692
  const isEscapeKey = (e) => e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
6682
6693
  const isBackspaceKey = (e) => e.keyCode === 8;
6683
6694
  const isSpaceKey = (e) => e.key === "Space" || e.keyCode === 32;
6695
+ const isPlusKey = (e) => e.key === "+" || e.keyCode === 43;
6696
+ const isMinusKey = (e) => e.key === "-" || e.keyCode === 45;
6684
6697
  const isQuestionKey = (e) => e.key === "?";
6685
6698
  const isEnterKey = (e) => e.key === "Enter" || e.keyCode === 13;
6686
6699
  const isKeyboardClick = (e) => isEnterKey(e) || isSpaceKey(e);
6700
+ const isNumber = (e) => (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105);
6687
6701
 
6688
6702
  const duetCardCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-card,*.sc-duet-card::after,*.sc-duet-card::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-card-h{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:flex;width:100%;vertical-align:top}/*!@:host(.duet-card-info)*/.duet-card-info.sc-duet-card-h{margin-bottom:16px !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-card-h{margin:0 !important}/*!@.duet-card*/.duet-card.sc-duet-card{padding:20px !important;position:relative;display:block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;line-height:1.5;color:#00294d;text-decoration:none;border-radius:4px;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)}/*!@.duet-card.duet-p-0*/.duet-card.duet-p-0.sc-duet-card{padding:0 !important}/*!@.duet-card.duet-m-0*/.duet-card.duet-m-0.sc-duet-card{margin:0 !important}/*!@.duet-card:focus*/.duet-card.sc-duet-card:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-card:focus, .duet-card:focus.duet-theme-turva*/.duet-theme-turva.sc-duet-card .duet-card.sc-duet-card:focus,.duet-card.sc-duet-card:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 36em){/*!@.duet-card*/.duet-card.sc-duet-card{padding:28px !important}}/*!@.duet-card.duet-theme-turva*/.duet-card.duet-theme-turva.sc-duet-card{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)}@media (min-width: 36em){/*!@.duet-card.x-small*/.duet-card.x-small.sc-duet-card{padding:20px !important}}@media (min-width: 36em){/*!@.duet-card.medium*/.duet-card.medium.sc-duet-card{padding:28px !important}}@media (min-width: 48em){/*!@.duet-card.medium*/.duet-card.medium.sc-duet-card{padding:36px !important}}@media (min-width: 36em){/*!@.duet-card.large*/.duet-card.large.sc-duet-card{padding:36px !important}}@media (min-width: 48em){/*!@.duet-card.large*/.duet-card.large.sc-duet-card{padding:48px !important}}@media (min-width: 36em){/*!@.duet-card.x-large*/.duet-card.x-large.sc-duet-card{padding:48px !important}}@media (min-width: 48em){/*!@.duet-card.x-large*/.duet-card.x-large.sc-duet-card{padding:72px !important}}/*!@.duet-card.duet-card-collapsed*/.duet-card.duet-card-collapsed.sc-duet-card{padding-bottom:0 !important}@media (min-width: 36em){/*!@.duet-card.duet-card-collapsed*/.duet-card.duet-card-collapsed.sc-duet-card{padding-bottom:0 !important}}/*!@.duet-card.info*/.duet-card.info.sc-duet-card{background:rgba(0, 80, 128, 0.04) !important;box-shadow:none}/*!@.duet-card.info.duet-theme-turva*/.duet-card.info.duet-theme-turva.sc-duet-card{background:rgba(23, 28, 58, 0.035) !important}/*!@.duet-card.plain*/.duet-card.plain.sc-duet-card{box-shadow:none}/*!@.duet-card.plain:not(.duet-card-has-bg)*/.duet-card.plain.sc-duet-card:not(.duet-card-has-bg){background:transparent !important}/*!@.duet-card-heading-grid*/.duet-card-heading-grid.sc-duet-card{display:flex;flex-direction:row}/*!@.duet-card-icon*/.duet-card-icon.sc-duet-card{align-self:center}/*!@.duet-card-heading-text*/.duet-card-heading-text.sc-duet-card{flex:1;word-break:break-word}/*!@.duet-card-secondary-heading*/.duet-card-secondary-heading.sc-duet-card{font-size:1rem;font-weight:600;word-break:break-word}/*!@.duet-card-secondary-heading--inline*/.duet-card-secondary-heading--inline.sc-duet-card{display:block;flex:1;align-self:flex-start;line-height:1.875;text-align:right}@media (max-width: 22.5em){/*!@.duet-card-secondary-heading--inline*/.duet-card-secondary-heading--inline.sc-duet-card{display:none}}/*!@.duet-card-secondary-heading--new-line*/.duet-card-secondary-heading--new-line.sc-duet-card{display:none}@media (max-width: 22.5em){/*!@.duet-card-secondary-heading--new-line*/.duet-card-secondary-heading--new-line.sc-duet-card{display:block}}/*!@.duet-card-heading*/.duet-card-heading.sc-duet-card{position:relative;display:block;padding:16px 20px;margin:-20px -20px 20px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1.25rem;font-weight:800;color:#00294d;border-bottom:1px solid #e1e3e6}@media (min-width: 36em){/*!@.duet-card-heading*/.duet-card-heading.sc-duet-card{padding:15px 28px 16px !important;margin:-28px -28px 20px}}/*!@.duet-card-heading[role=button]*/.duet-card-heading[role=button].sc-duet-card{-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:4px;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;appearance:none}/*!@.duet-card-heading[role=button]:focus*/.duet-card-heading[role=button].sc-duet-card:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-card-heading[role=button]:focus*/.user-is-tabbing.sc-duet-card-h .duet-card-heading[role=button].sc-duet-card:focus{border-radius:4px;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-card-heading[role=button]:focus*/.user-is-tabbing.sc-duet-card-h .duet-theme-turva.sc-duet-card .duet-card-heading[role=button].sc-duet-card:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-card-collapsed .duet-card-heading*/.duet-card-collapsed.sc-duet-card .duet-card-heading.sc-duet-card{margin-bottom:0 !important;border-bottom:0 !important}/*!@.duet-theme-turva .duet-card-heading*/.duet-theme-turva.sc-duet-card .duet-card-heading.sc-duet-card{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#e4e4e6}@media (min-width: 36em){/*!@.x-small .duet-card-heading*/.x-small.sc-duet-card .duet-card-heading.sc-duet-card{padding:10px 20px 11px !important;margin:-20px -20px 20px}}@media (min-width: 48em){/*!@.x-small .duet-card-heading*/.x-small.sc-duet-card .duet-card-heading.sc-duet-card{padding:10px 20px 11px !important;margin:-20px -20px 20px}}/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{padding:15px 28px 16px !important;margin:-28px -28px 20px}}@media (min-width: 48em){/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{padding:19px 36px 20px !important;margin:-36px -36px 28px}}/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{padding:19px 36px 20px !important;margin:-36px -36px 28px}}@media (min-width: 48em){/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{padding:26px 48px 27px !important;margin:-48px -48px 36px}}/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{padding:26px 48px 27px !important;margin:-48px -48px 36px}}@media (min-width: 48em){/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{padding:39px 72px 40px !important;margin:-72px -72px 48px}}/*!@.none .duet-card-heading*/.none.sc-duet-card .duet-card-heading.sc-duet-card{padding:0 0 20px !important;margin:0 0 20px}/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:20px;margin:20px -20px -20px;font-size:0.875rem;line-height:1.25;background:#f5f8fa;border-bottom-right-radius:4px;border-bottom-left-radius:4px}/*!@.duet-theme-turva .duet-card-footer*/.duet-theme-turva.sc-duet-card .duet-card-footer.sc-duet-card{background:#f5f5f7}@media (min-width: 36em){/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 48em){/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 36em){/*!@.x-small .duet-card-footer*/.x-small.sc-duet-card .duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;padding-left:20px !important;margin:20px -20px -20px}}@media (min-width: 36em){/*!@.medium .duet-card-footer*/.medium.sc-duet-card .duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 48em){/*!@.medium .duet-card-footer*/.medium.sc-duet-card .duet-card-footer.sc-duet-card{padding:19px 36px 20px !important;margin:28px -36px -36px}}@media (min-width: 36em){/*!@.large .duet-card-footer*/.large.sc-duet-card .duet-card-footer.sc-duet-card{padding:19px 36px 20px !important;margin:28px -36px -36px}}@media (min-width: 48em){/*!@.large .duet-card-footer*/.large.sc-duet-card .duet-card-footer.sc-duet-card{padding:26px 48px 27px !important;margin:36px -48px -48px}}@media (min-width: 36em){/*!@.x-large .duet-card-footer*/.x-large.sc-duet-card .duet-card-footer.sc-duet-card{padding:26px 48px 27px !important;margin:36px -48px -48px}}@media (min-width: 48em){/*!@.x-large .duet-card-footer*/.x-large.sc-duet-card .duet-card-footer.sc-duet-card{padding:39px 72px 40px !important;margin:48px -72px -72px}}/*!@.none .duet-card-footer*/.none.sc-duet-card .duet-card-footer.sc-duet-card{padding:12px 0 !important;margin:20px 0 0}/*!@.duet-card-content*/.duet-card-content.sc-duet-card{width:100%}/*!@.duet-card-collapsed .duet-card-content*/.duet-card-collapsed.sc-duet-card .duet-card-content.sc-duet-card{display:none}/*!@.duet-card-caret*/.duet-card-caret.sc-duet-card{position:relative;top:6px;align-self:flex-start;transition:300ms ease}/*!@[aria-expanded=false] .duet-card-caret*/[aria-expanded=false].sc-duet-card .duet-card-caret.sc-duet-card{transform:rotate(-180deg)}/*!@.duet-card-image-mask*/.duet-card-image-mask.sc-duet-card{position:relative;width:calc(100% + 40px);margin:-20px 0 20px -20px;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px}@media (min-width: 36em){/*!@.small .duet-card-image-mask*/.small.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 56px);margin:-28px 0 28px -28px}}@media (min-width: 36em){/*!@.medium .duet-card-image-mask*/.medium.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 56px);margin:-28px 0 28px -28px}}@media (min-width: 48em){/*!@.medium .duet-card-image-mask*/.medium.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 72px);margin:-36px 0 28px -36px}}@media (min-width: 36em){/*!@.large .duet-card-image-mask*/.large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 72px);margin:-36px 0 36px -36px}}@media (min-width: 48em){/*!@.large .duet-card-image-mask*/.large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 96px);margin:-48px 0 36px -48px}}@media (min-width: 36em){/*!@.x-large .duet-card-image-mask*/.x-large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 96px);margin:-48px 0 36px -48px}}@media (min-width: 48em){/*!@.x-large .duet-card-image-mask*/.x-large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 144px);margin:-72px 0 36px -72px}}/*!@.none .duet-card-image-mask*/.none.sc-duet-card .duet-card-image-mask.sc-duet-card{width:100%;margin:0 0 20px}/*!@.duet-card-image*/.duet-card-image.sc-duet-card{display:block;width:102%;min-width:1px;max-width:102%;height:auto;min-height:1px;margin-left:-1%;transition:transform 300ms ease;transform:scale(1.0001)}/*!@a.duet-card*/a.duet-card.sc-duet-card{transition:box-shadow 300ms ease, background-position 300ms ease}/*!@a.duet-card:hover*/a.duet-card.sc-duet-card:hover{box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07), 0 2px 10px 0 rgba(0, 41, 77, 0.1)}/*!@a.duet-card:hover .duet-card-image*/a.duet-card.sc-duet-card:hover .duet-card-image.sc-duet-card{transform:scale(1.024)}/*!@.duet-theme-turva a.duet-card:hover*/.duet-theme-turva.sc-duet-card a.duet-card.sc-duet-card:hover{box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07), 0 2px 10px 0 rgba(117, 117, 117, 0.15)}/*!@a.duet-card:active*/a.duet-card.sc-duet-card:active{transition:none;transform:translateY(1px)}";
6689
6703
 
6690
6704
  /**
6691
6705
  * @slot unnamed default slot - The component’s primary content. All child nodes that do not have a slot attribute defined are inserted into this primary slot.
6692
- * @slot below-header - Below header content.
6706
+ * @slot below-heading - Below heading content.
6693
6707
  * @slot footer - Footer content.
6694
6708
  */
6695
6709
  class DuetCard {
@@ -8001,6 +8015,7 @@ const duetCollapsibleCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-collapsible,
8001
8015
 
8002
8016
  /**
8003
8017
  * @part duet-collapsible-heading-content - piercing selector for styling the heading content
8018
+ * @part duet-collapsible-content - piercing selector for styling the content
8004
8019
  */
8005
8020
  class DuetCollapsible {
8006
8021
  constructor(hostRef) {
@@ -8120,7 +8135,7 @@ class DuetCollapsible {
8120
8135
  "duet-collapsible-heading": true,
8121
8136
  "duet-theme-turva": this.theme === "turva",
8122
8137
  "duet-collapsible-normal-weight": this.headingWeight === "normal",
8123
- }, style: { "font-size": this.getFontSizeFromTokens() }, role: "button", tabindex: "0", ref: button => (this.nativeButton = button), "aria-expanded": this.open ? "true" : "false", "aria-controls": this.id, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, hAsync("div", { class: "duet-collapsible-heading-icon" }, hAsync("duet-icon", { margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary", size: this.getEquivalentIconSize(), icon: actionArrowDownSmall.svg })), hAsync("div", { class: "duet-collapsible-heading-content", part: "duet-collapsible-heading-content" }, this.heading)), hAsync("div", { id: this.id, class: { "duet-collapsible-content": true, "duet-theme-turva": this.theme === "turva" } }, hAsync("slot", null))));
8138
+ }, style: { "font-size": this.getFontSizeFromTokens() }, role: "button", tabindex: "0", ref: button => (this.nativeButton = button), "aria-expanded": this.open ? "true" : "false", "aria-controls": this.id, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, hAsync("div", { class: "duet-collapsible-heading-icon" }, hAsync("duet-icon", { margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary", size: this.getEquivalentIconSize(), icon: actionArrowDownSmall.svg })), hAsync("div", { class: "duet-collapsible-heading-content", part: "duet-collapsible-heading-content" }, this.heading)), hAsync("div", { id: this.id, class: { "duet-collapsible-content": true, "duet-theme-turva": this.theme === "turva" }, part: "duet-collapsible-content" }, hAsync("slot", null))));
8124
8139
  }
8125
8140
  get element() { return getElement(this); }
8126
8141
  static get style() { return duetCollapsibleCss; }
@@ -13013,6 +13028,304 @@ class DuetNumberInput {
13013
13028
  }; }
13014
13029
  }
13015
13030
 
13031
+ const shouldDisplayNavigation = (visibleItems, total, take) => {
13032
+ if (visibleItems * 2 > total / take) {
13033
+ return false;
13034
+ }
13035
+ return true;
13036
+ };
13037
+
13038
+ const duetPaginationCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-pagination,*.sc-duet-pagination::after,*.sc-duet-pagination::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-pagination-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-pagination-nav*/.duet-pagination-nav.sc-duet-pagination{position:relative}/*!@.duet-pagination, .duet-pagination li*/.duet-pagination.sc-duet-pagination,.duet-pagination.sc-duet-pagination li.sc-duet-pagination{display:flex;flex-wrap:wrap;gap:0.1rem;align-items:center}/*!@.duet-pagination-item-is-active .duet-pagination-page-number*/.duet-pagination-item-is-active.sc-duet-pagination .duet-pagination-page-number.sc-duet-pagination{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:2px}/*!@.duet-pagination duet-button*/.duet-pagination.sc-duet-pagination duet-button.sc-duet-pagination{width:30px;min-width:36px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-pagination-overlay*/.duet-pagination-overlay.sc-duet-pagination{position:absolute;top:1rem;z-index:300;width:100%;text-align:center}/*!@.duet-pagination.duet-pagination-is-dimmed*/.duet-pagination.duet-pagination-is-dimmed.sc-duet-pagination{opacity:0.5}/*!@.duet-pagination-page-button*/.duet-pagination-page-button.sc-duet-pagination{white-space:nowrap}/*!@.duet-pagination-page-button button*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}/*!@.duet-theme-turva .duet-pagination-page-button button*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{color:#171c3a;background:#f5f5f7}/*!@.duet-pagination-page-button button duet-icon*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination duet-icon.sc-duet-pagination{display:block}@media (max-width: 35.9375em){/*!@.duet-pagination-page-button button*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{width:40px;height:40px}}/*!@.duet-pagination-page-button button:not(:disabled):hover*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:not(:disabled):hover{background:#e9ecee !important}/*!@.duet-theme-turva .duet-pagination-page-button button:not(:disabled):hover*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:not(:disabled):hover{background:#e9e9eb !important}/*!@.duet-pagination-page-button button:focus*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:focus{outline:0;box-shadow:0 0 0 2px #0077b3}/*!@.duet-theme-turva .duet-pagination-page-button button:focus*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:focus{box-shadow:0 0 0 2px #171c3a}/*!@.duet-pagination-page-button button:active:focus*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:active:focus{background:#dddfe1;box-shadow:none}/*!@.duet-theme-turva .duet-pagination-page-button button:active:focus*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:active:focus{background:#ddddde}/*!@.duet-pagination-page-button button:disabled*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}/*!@.duet-theme-turva .duet-pagination-page-button button:disabled*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:disabled{color:#747475;background:#f5f5f7}";
13039
+
13040
+ class DuetPagination {
13041
+ constructor(hostRef) {
13042
+ registerInstance(this, hostRef);
13043
+ this.duetPageChange = createEvent$2(this, "duetPageChange", 3);
13044
+ this.listId = createID("duet-pagination-list");
13045
+ this.numbersStore = "";
13046
+ /**
13047
+ * State() variables
13048
+ * @internal
13049
+ */
13050
+ this.totalPages = 10;
13051
+ /**
13052
+ * State() variables
13053
+ * @internal
13054
+ */
13055
+ this.internalSectionIndex = 0;
13056
+ /**
13057
+ * Theme of the pagination.
13058
+ */
13059
+ this.theme = "";
13060
+ /**
13061
+ * Characters to use for the jump buttons.
13062
+ */
13063
+ this.jumpString = "...";
13064
+ /**
13065
+ * Default pagination labels
13066
+ */
13067
+ this.ariaLabelsDefaults = {
13068
+ en: {
13069
+ next_page: "Next page",
13070
+ previous_page: "Previous page",
13071
+ first_page: "First page",
13072
+ last_page: "Last page",
13073
+ jump_to: "Jump to page",
13074
+ go_to: "Go to page",
13075
+ description: "You may use arrow keys to select page number, or enter a page number when this element is in focus to jump to a page",
13076
+ pagination_label: "Pagination, choose a number to jump to a page",
13077
+ prev_section: "Show previous {0} page numbers, screen reader user should use arrowkeys to navigate",
13078
+ next_section: "Show next {0} page numbers, screen reader user should use arrowkeys to navigate",
13079
+ },
13080
+ fi: {
13081
+ next_page: "Seuraava sivu",
13082
+ previous_page: "Edellinen sivu",
13083
+ first_page: "Ensimmäinen sivu",
13084
+ last_page: "Viimeinen sivu",
13085
+ jump_to: "Siirry sivulle",
13086
+ go_to: "Siirry sivulle",
13087
+ description: "Voit käyttää nuolinäppäimiä sivunumeron valitsemiseen, tai kirjoittaa sivunumeron, jos tämä elementti on aktiivinen, siirtymään sivulle",
13088
+ pagination_label: "Sivutus, valitse sivunumero siirtyäksesi sivulle",
13089
+ prev_section: "Näytä edelliset {0} sivunumerot, käyttäjän pitää käyttää nuolinäppäimiä navigoidaksesi",
13090
+ next_section: "Näytä seuraavat {0} sivunumerot, käyttäjän pitää käyttää nuolinäppäimiä navigoidaksesi",
13091
+ },
13092
+ sv: {
13093
+ next_page: "Nästa sida",
13094
+ previous_page: "Föregående sida",
13095
+ first_page: "Första sidan",
13096
+ last_page: "Sista sidan",
13097
+ jump_to: "Hoppa till sida",
13098
+ go_to: "Hoppa till sida",
13099
+ description: "Du kan använda piltangenterna för att välja sida, eller skriva in sida när elementet är i fokus för att hoppa till en sida",
13100
+ pagination_label: "Sidutning, välj en siffra för att hoppa till en sida",
13101
+ prev_section: "Visa föregående {0} sidnummer, skrivbordsläsare ska använda piltangenterna för att navigera",
13102
+ next_section: "Visa nästa {0} sidnummer, skrivbordsläsare ska använda piltangenterna för att navigera",
13103
+ },
13104
+ };
13105
+ /**
13106
+ * Default pagination labels
13107
+ */
13108
+ this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
13109
+ /**
13110
+ * The size of the take, when paginating.
13111
+ */
13112
+ this.take = 5;
13113
+ /**
13114
+ * Amount of visible page numbers to show
13115
+ */
13116
+ this.visibleItems = 5;
13117
+ /**
13118
+ * The total size of the paginating data
13119
+ */
13120
+ this.total = 1000;
13121
+ /**
13122
+ * Used to indicate which dom element with ID this element controls
13123
+ */
13124
+ this.ariaControls = "";
13125
+ /**
13126
+ * The current page
13127
+ */
13128
+ this.current = 1;
13129
+ /**
13130
+ * Private methods.
13131
+ */
13132
+ // called from the watcher and used to make sure any changed to current also updates the internal section index
13133
+ this.actionChain = async (after, before) => {
13134
+ if (after === 0) {
13135
+ this.current = 1;
13136
+ }
13137
+ else if (before !== after) {
13138
+ const calculatedSectionIndex = Math.ceil(after / this.visibleItems) - 1;
13139
+ if (calculatedSectionIndex !== this.internalSectionIndex) {
13140
+ this.internalSectionIndex = calculatedSectionIndex;
13141
+ await this.setFocus();
13142
+ }
13143
+ }
13144
+ };
13145
+ //helper to emit relevant page events
13146
+ this.emitPageEvent = debounce((ev, passedPage) => {
13147
+ const page = Number(passedPage || this.current);
13148
+ this.duetPageChange.emit({
13149
+ component: "duet-pagination",
13150
+ from: page * this.take,
13151
+ to: page * this.take + this.take,
13152
+ current: page,
13153
+ take: this.take,
13154
+ type: "page",
13155
+ originalEvent: ev,
13156
+ });
13157
+ }, 500);
13158
+ // this will return the entered number, or the current page if the user presses enter
13159
+ this.getEnteredNumber = debounce(ev => {
13160
+ this.emitPageEvent(ev, this.numbersStore);
13161
+ this.current = Number(this.numbersStore);
13162
+ this.numbersStore = "";
13163
+ this.duetPageChange.emit({
13164
+ component: "duet-pagination",
13165
+ from: this.current * this.take,
13166
+ to: this.current * this.take + this.take,
13167
+ current: this.current,
13168
+ take: this.take,
13169
+ type: "jump",
13170
+ originalEvent: ev,
13171
+ });
13172
+ }, 500);
13173
+ }
13174
+ watchStateHandler(newValue, oldValue) {
13175
+ this.actionChain(newValue, oldValue);
13176
+ }
13177
+ /**
13178
+ * Component lifecycle events.
13179
+ */
13180
+ componentWillLoad() {
13181
+ // we want to keep the internal current index in sync with the current prop, but take advantage of the multiple with 0 for the first iteration
13182
+ this.internalSectionIndex = Math.ceil(this.current / this.visibleItems) - 1;
13183
+ this.calculatePageTake();
13184
+ inheritGlobalTheme(this);
13185
+ }
13186
+ componentWillRender() {
13187
+ if (this.internalSectionIndex !== 0 && this.internalSectionIndex !== this.totalPages) {
13188
+ this.calculatePageTake();
13189
+ }
13190
+ }
13191
+ componentDidRender() {
13192
+ this.setFocus();
13193
+ }
13194
+ //get totalpages from visible and total
13195
+ calculatePageTake() {
13196
+ this.totalPages = Math.ceil(this.total / this.take);
13197
+ }
13198
+ //set update current when mouse click on page number
13199
+ async onMouseHandler(e, dir) {
13200
+ e.preventDefault();
13201
+ e.stopPropagation();
13202
+ this.current = this.current + dir;
13203
+ }
13204
+ //handle a11y keyboard navigation events
13205
+ async onKeyboardDown(e) {
13206
+ let next = this.current;
13207
+ // handle a11y based keyboard navigation for left/right/up/down
13208
+ if (isArrowLeftKey(e) || isArrowUpKey(e)) {
13209
+ next--;
13210
+ }
13211
+ if (isArrowRightKey(e) || isArrowDownKey(e)) {
13212
+ next++;
13213
+ }
13214
+ if (isArrowKey(e)) {
13215
+ if (next <= this.totalPages) {
13216
+ this.current = next;
13217
+ this.emitPageEvent(e);
13218
+ }
13219
+ }
13220
+ //handle the jump feature, where numbers can be entered
13221
+ if (isNumber(e) && this.shouldDisplayNavigation()) {
13222
+ this.numbersStore = this.numbersStore + e.key;
13223
+ if (Number(this.numbersStore) > this.totalPages) {
13224
+ this.numbersStore = this.totalPages + "";
13225
+ }
13226
+ this.getEnteredNumber(e);
13227
+ }
13228
+ }
13229
+ // utility to set focus on active button
13230
+ async setFocus() {
13231
+ const currentDomElement = this.nativeNav.querySelector(`li.duet-pagination-item-is-active duet-button`);
13232
+ currentDomElement && (await currentDomElement.setFocus());
13233
+ }
13234
+ //handles click on page numbers
13235
+ pageClickHandler(e) {
13236
+ e.preventDefault();
13237
+ const clickedId = Number(e.target.getAttribute("data-id"));
13238
+ this.current = clickedId;
13239
+ this.emitPageEvent({}, clickedId);
13240
+ }
13241
+ //handles click on the next section buttons
13242
+ sectionClickHandler(e, direction) {
13243
+ e.preventDefault();
13244
+ let next = this.internalSectionIndex + direction;
13245
+ if (next >= this.totalPages / this.take) {
13246
+ next = this.totalPages / this.take - 1;
13247
+ }
13248
+ const newSection = next;
13249
+ this.internalSectionIndex = newSection >= 0 ? newSection : 0;
13250
+ }
13251
+ //handles click on the jump (1)button
13252
+ jumpToStart(e) {
13253
+ e.preventDefault();
13254
+ this.internalSectionIndex = 0;
13255
+ this.current = 1;
13256
+ }
13257
+ //handles click on the jump (total) button
13258
+ jumpToEnd(e) {
13259
+ e.preventDefault();
13260
+ this.internalSectionIndex = this.totalPages / this.take - 1;
13261
+ this.current = this.totalPages;
13262
+ }
13263
+ // render the individual page numbers
13264
+ renderPageNumbers() {
13265
+ const items = [];
13266
+ let i = this.internalSectionIndex * this.visibleItems;
13267
+ do {
13268
+ i++;
13269
+ if (i > this.totalPages) {
13270
+ break;
13271
+ }
13272
+ items.push(hAsync("li", { class: {
13273
+ "duet-pagination-item": true,
13274
+ "duet-pagination-item-is-active": i === this.current,
13275
+ }, role: "menuitem" }, hAsync("duet-button", { class: {
13276
+ "duet-pagination-link": true,
13277
+ }, color: i !== this.current ? "secondary" : "primary", "data-id": i, "center-text": true, variation: "plain", margin: "none", accessibleLabel: `${this.ariaLabels.go_to} ${i}`, onClick: e => this.pageClickHandler(e) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": true }, i))));
13278
+ } while (i < this.visibleItems + this.internalSectionIndex * this.visibleItems);
13279
+ return items;
13280
+ }
13281
+ shouldDisplayNavigation() {
13282
+ return shouldDisplayNavigation(this.visibleItems, this.total, this.take);
13283
+ }
13284
+ /**
13285
+ * render() function
13286
+ * Always the last one in the class.
13287
+ */
13288
+ render() {
13289
+ return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("nav", { role: "navigation", class: "duet-pagination-nav", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls }, this.numbersStore !== "" && (hAsync("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.ariaLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" }, hAsync("duet-badge", null, "jump to page : ", this.numbersStore))), hAsync("ol", { id: this.listId, class: {
13290
+ "duet-pagination": true,
13291
+ "duet-pagination-is-dimmed": this.numbersStore !== "",
13292
+ }, role: "menubar", "aria-label": this.ariaLabels.pagination_label, "aria-description": this.ariaLabels.description }, hAsync("li", { class: {
13293
+ "duet-pagination-page-button": true,
13294
+ "duet-pagination-button-first": true,
13295
+ }, role: "menuitem", part: "navigation-arrow" }, hAsync("button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", class: "duet-date-dialog-prev", type: "button", onClick: e => this.onMouseHandler(e, -1), "aria-label": this.ariaLabels.previous_page }, hAsync("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" }))), this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", variation: "plain", color: "secondary", margin: "none", accessibleLabel: this.ariaLabels.first_page, onClick: e => this.jumpToStart(e) }, hAsync("div", { class: "duet-pagination-page-number" }, "1"))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))), this.renderPageNumbers(), this.internalSectionIndex !== this.totalPages / this.visibleItems - 1 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.last_page, onClick: e => this.jumpToEnd(e) }, hAsync("div", { class: "duet-pagination-page-number" }, this.totalPages))))), hAsync("li", { class: {
13296
+ "duet-pagination-page-button": true,
13297
+ "duet-pagination-button-last": true,
13298
+ }, role: "menuitem", part: "navigation-arrow" }, hAsync("button", { disabled: this.current === this.totalPages &&
13299
+ this.internalSectionIndex === Math.ceil(this.totalPages / this.visibleItems) - 1, class: "duet-date-dialog-next", type: "button", "aria-label": this.ariaLabels.next_page, onClick: e => this.onMouseHandler(e, 1) }, hAsync("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" })))))));
13300
+ }
13301
+ get element() { return getElement(this); }
13302
+ static get watchers() { return {
13303
+ "current": ["watchStateHandler"]
13304
+ }; }
13305
+ static get style() { return duetPaginationCss; }
13306
+ static get cmpMeta() { return {
13307
+ "$flags$": 9,
13308
+ "$tagName$": "duet-pagination",
13309
+ "$members$": {
13310
+ "theme": [1025],
13311
+ "jumpString": [1, "jump-string"],
13312
+ "ariaLabelsDefaults": [16],
13313
+ "ariaLabels": [16],
13314
+ "take": [1026],
13315
+ "visibleItems": [1026, "visible-items"],
13316
+ "total": [1026],
13317
+ "ariaControls": [1, "accessible-controls"],
13318
+ "current": [1026],
13319
+ "numbersStore": [32],
13320
+ "totalPages": [32],
13321
+ "internalSectionIndex": [32]
13322
+ },
13323
+ "$listeners$": undefined,
13324
+ "$lazyBundleId$": "-",
13325
+ "$attrsToReflect$": []
13326
+ }; }
13327
+ }
13328
+
13016
13329
  const duetParagraphCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-paragraph,*.sc-duet-paragraph::after,*.sc-duet-paragraph::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-paragraph-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:relative;display:block;width:100%}/*!@.duet-paragraph*/.duet-paragraph.sc-duet-paragraph{margin-bottom:16px !important;display:block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.5;color:#00294d}/*!@.duet-paragraph.duet-p-0*/.duet-paragraph.duet-p-0.sc-duet-paragraph{padding:0 !important}/*!@.duet-paragraph.duet-m-0*/.duet-paragraph.duet-m-0.sc-duet-paragraph{margin:0 !important}/*!@.duet-paragraph.duet-theme-turva*/.duet-paragraph.duet-theme-turva.sc-duet-paragraph{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}/*!@.duet-paragraph.duet-paragraph-small*/.duet-paragraph.duet-paragraph-small.sc-duet-paragraph{font-size:0.875rem}/*!@.duet-paragraph.duet-paragraph-semi-bold*/.duet-paragraph.duet-paragraph-semi-bold.sc-duet-paragraph{font-weight:600}/*!@.duet-paragraph.duet-paragraph-bold*/.duet-paragraph.duet-paragraph-bold.sc-duet-paragraph{font-weight:700}/*!@.duet-paragraph.duet-m-0*/.duet-paragraph.duet-m-0.sc-duet-paragraph{margin:0 !important}/*!@.duet-paragraph.intro*/.duet-paragraph.intro.sc-duet-paragraph{font-size:2.7vw;margin-bottom:28px !important;-webkit-hyphens:inherit;hyphens:inherit}@media (max-width: 37.037037037rem){/*!@.duet-paragraph.intro*/.duet-paragraph.intro.sc-duet-paragraph{font-size:1rem}}@media (min-width: 46.2962962963rem){/*!@.duet-paragraph.intro*/.duet-paragraph.intro.sc-duet-paragraph{font-size:1.25rem}}/*!@.duet-paragraph.intro.duet-m-0*/.duet-paragraph.intro.duet-m-0.sc-duet-paragraph{margin:0 !important}/*!@::slotted(a)*/.sc-duet-paragraph-s>a{font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-style:normal;font-weight:400;color:#0077b3;text-decoration:underline;transition:300ms ease}/*!@::slotted(a).duet-theme-turva*/.sc-duet-paragraph-s>a.duet-theme-turva{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#c60c30}/*!@::slotted(a):hover*/.sc-duet-paragraph-s>a:hover{color:#004d80;text-decoration:none}/*!@::slotted(a):hover.duet-theme-turva*/.sc-duet-paragraph-s>a:hover.duet-theme-turva{color:#940925}/*!@::slotted(a):active*/.sc-duet-paragraph-s>a:active{opacity:0.75;transition:none}";
13017
13330
 
13018
13331
  /**
@@ -13654,6 +13967,176 @@ class DuetRangeSlider {
13654
13967
  }; }
13655
13968
  }
13656
13969
 
13970
+ const duetRangeStepperCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-range-stepper,*.sc-duet-range-stepper::after,*.sc-duet-range-stepper::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-range-stepper-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{display:flex;flex-wrap:wrap;gap:0;align-items:baseline;justify-content:center;min-width:30px;min-height:30px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{white-space:nowrap}/*!@.duet-range-stepper button*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}/*!@.duet-theme-turva .duet-range-stepper button*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{color:#171c3a;background:#f5f5f7}/*!@.duet-range-stepper button duet-icon*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper duet-icon.sc-duet-range-stepper{display:block}@media (max-width: 35.9375em){/*!@.duet-range-stepper button*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{width:40px;height:40px}}/*!@.duet-range-stepper button:not(:disabled):hover*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:not(:disabled):hover{background:#e9ecee !important}/*!@.duet-theme-turva .duet-range-stepper button:not(:disabled):hover*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:not(:disabled):hover{background:#e9e9eb !important}/*!@.duet-range-stepper button:focus*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:focus{outline:0;box-shadow:0 0 0 2px #0077b3}/*!@.duet-theme-turva .duet-range-stepper button:focus*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:focus{box-shadow:0 0 0 2px #171c3a}/*!@.duet-range-stepper button:active:focus*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:active:focus{background:#dddfe1;box-shadow:none}/*!@.duet-theme-turva .duet-range-stepper button:active:focus*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:active:focus{background:#ddddde}/*!@.duet-range-stepper button:disabled*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}/*!@.duet-theme-turva .duet-range-stepper button:disabled*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:disabled{color:#747475;background:#f5f5f7}";
13971
+
13972
+ class DuetRangeStepper {
13973
+ constructor(hostRef) {
13974
+ registerInstance(this, hostRef);
13975
+ this.duetRangeStepUpdate = createEvent$2(this, "duetRangeStepUpdate", 7);
13976
+ this.leftBn = createID("duetRangeStepper-left");
13977
+ this.rightBn = createID("duetRangeStepper-right");
13978
+ /**
13979
+ * Theme of the component.
13980
+ */
13981
+ this.theme = "";
13982
+ /**
13983
+ * Start value
13984
+ * @default 1
13985
+ */
13986
+ this.stepIndex = 1;
13987
+ /**
13988
+ * How big is the step
13989
+ * @default 99
13990
+ */
13991
+ this.stepSize = 50;
13992
+ /**
13993
+ * Total of
13994
+ * @default undefined
13995
+ */
13996
+ this.total = 1000;
13997
+ /**
13998
+ * Default range stepper labels
13999
+ */
14000
+ this.ariaLabelsDefaults = {
14001
+ en: {
14002
+ next_increment: "Next range increment",
14003
+ previous_increment: "Previous range increment",
14004
+ x_of_y: "{0}–{1} of {2}",
14005
+ },
14006
+ fi: {
14007
+ next_increment: "Seuraava välillä",
14008
+ previous_increment: "Edellinen välillä",
14009
+ x_of_y: "{0}–{1} / {2}",
14010
+ },
14011
+ sv: {
14012
+ next_increment: "Nästa intervall",
14013
+ previous_increment: "Föregående intervall",
14014
+ x_of_y: "{0}–{1} av {2}",
14015
+ },
14016
+ };
14017
+ /**
14018
+ * Default pagination labels
14019
+ */
14020
+ this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
14021
+ /**
14022
+ * Used to indicate which dom element with ID this element controls
14023
+ */
14024
+ this.ariaControls = "";
14025
+ this.handleClick = (e, direction) => {
14026
+ e.preventDefault();
14027
+ this.increment(direction);
14028
+ this.handleStepClick(e);
14029
+ };
14030
+ }
14031
+ watchStateHandler(newValue) {
14032
+ if (newValue === 1) {
14033
+ this.leftBnRef.setAttribute("disabled", "");
14034
+ this.rightBnRef.focus();
14035
+ }
14036
+ else {
14037
+ this.leftBnRef.removeAttribute("disabled");
14038
+ }
14039
+ if (newValue === this.total / this.stepSize) {
14040
+ this.rightBnRef.setAttribute("disabled", "");
14041
+ this.leftBnRef.focus();
14042
+ }
14043
+ else {
14044
+ this.rightBnRef.removeAttribute("disabled");
14045
+ }
14046
+ }
14047
+ handleStepClick(e) {
14048
+ this.duetRangeStepUpdate.emit({
14049
+ originalEvent: e,
14050
+ component: "duet-range-stepper",
14051
+ from: this.stepIndex * this.stepSize - this.stepSize,
14052
+ to: this.stepIndex * this.stepSize,
14053
+ index: this.stepIndex,
14054
+ });
14055
+ }
14056
+ componentWillLoad() {
14057
+ inheritGlobalTheme(this);
14058
+ }
14059
+ componentDidLoad() {
14060
+ this.watchStateHandler(this.stepIndex);
14061
+ }
14062
+ increment(direction) {
14063
+ const newIndex = this.stepIndex + direction;
14064
+ if (newIndex <= 0) {
14065
+ this.stepIndex = 1;
14066
+ }
14067
+ else {
14068
+ if (newIndex * this.stepSize <= this.total) {
14069
+ this.stepIndex = newIndex;
14070
+ }
14071
+ }
14072
+ }
14073
+ generateStepSize() {
14074
+ // this function uses this.stepIndex and this.range to generate a range of number like 1-100
14075
+ // this is used to generate the step size
14076
+ let start = (this.stepIndex - 1) * this.stepSize;
14077
+ //easy fix for starting position
14078
+ if (start === 0) {
14079
+ start = 1;
14080
+ }
14081
+ const end = this.stepIndex * this.stepSize;
14082
+ return this.ariaLabels.x_of_y
14083
+ .replace("{0}", String(start))
14084
+ .replace("{1}", String(end))
14085
+ .replace("{2}", String(this.total));
14086
+ }
14087
+ //handle a11y keyboard navigation events
14088
+ async onKeyboardDown(e) {
14089
+ // handle a11y based keyboard navigation for left/right/up/down
14090
+ let next = this.stepIndex;
14091
+ let dir = 1;
14092
+ if (isArrowLeftKey(e) || isArrowUpKey(e) || isMinusKey(e)) {
14093
+ next--;
14094
+ dir = -1;
14095
+ this.leftBnRef.focus();
14096
+ }
14097
+ if (isArrowRightKey(e) || isArrowDownKey(e) || isPlusKey(e)) {
14098
+ next++;
14099
+ dir = 1;
14100
+ }
14101
+ if (isArrowKey(e)) {
14102
+ if (next > 0 && next * this.stepSize <= this.total) {
14103
+ this.handleClick(e, dir);
14104
+ }
14105
+ }
14106
+ }
14107
+ /**
14108
+ * render() function
14109
+ * Always the last one in the class.
14110
+ */
14111
+ render() {
14112
+ return (hAsync("div", { class: {
14113
+ "duet-range-stepper": true,
14114
+ "duet-theme-turva": this.theme === "turva",
14115
+ }, onKeyDown: e => this.onKeyboardDown(e), "aria-controls": this.ariaControls }, hAsync("span", { class: "duet-range-step-counter", part: "range-numbers" }, this.generateStepSize()), hAsync("button", { class: "duet-range-step-button duet-range-step-minus", type: "button", onClick: e => this.handleClick(e, -1), id: this.leftBn, "aria-label": this.ariaLabels.previous_increment, ref: el => (this.leftBnRef = el), part: "navigation-arrow" }, hAsync("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" })), hAsync("button", { class: "duet-range-step-button duet-range-step-plus", type: "button", onClick: e => this.handleClick(e, 1), "aria-label": this.ariaLabels.next_increment, id: this.rightBn, ref: el => (this.rightBnRef = el), part: "navigation-arrow" }, hAsync("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" }))));
14116
+ }
14117
+ get element() { return getElement(this); }
14118
+ static get watchers() { return {
14119
+ "stepIndex": ["watchStateHandler"]
14120
+ }; }
14121
+ static get style() { return duetRangeStepperCss; }
14122
+ static get cmpMeta() { return {
14123
+ "$flags$": 9,
14124
+ "$tagName$": "duet-range-stepper",
14125
+ "$members$": {
14126
+ "theme": [1025],
14127
+ "stepIndex": [1026, "step-index"],
14128
+ "stepSize": [2, "step-size"],
14129
+ "total": [2],
14130
+ "ariaLabelsDefaults": [16],
14131
+ "ariaLabels": [16],
14132
+ "ariaControls": [1, "accessible-controls"]
14133
+ },
14134
+ "$listeners$": undefined,
14135
+ "$lazyBundleId$": "-",
14136
+ "$attrsToReflect$": []
14137
+ }; }
14138
+ }
14139
+
13657
14140
  const duetScrollableCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-scrollable,*.sc-duet-scrollable::after,*.sc-duet-scrollable::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-scrollable-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent}/*!@:host*/.sc-duet-scrollable-h{position:relative !important}/*!@:host .duet-scrollable-items*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable{display:flex}/*!@:host .duet-scrollable-items .duet-scrollable-button*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-button.sc-duet-scrollable{position:relative;flex:0 0 auto;flex-basis:40px;padding:10px;cursor:pointer}/*!@:host .duet-scrollable-items .duet-scrollable-button:active*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-button.sc-duet-scrollable:active{transform:scale(0.8)}/*!@:host .duet-scrollable-items .duet-scrollable-button--left*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-button--left.sc-duet-scrollable{left:-12px}/*!@:host .duet-scrollable-items .duet-scrollable-button--right*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-button--right.sc-duet-scrollable{right:-12px}/*!@:host .duet-scrollable-items .duet-scrollable-button--occluded*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-button--occluded.sc-duet-scrollable{display:none}/*!@:host .duet-scrollable-items .duet-scrollable-list*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-list.sc-duet-scrollable{display:flex;flex-wrap:nowrap;gap:20px;padding-top:2px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scroll-snap-type:x mandatory;scroll-behavior:smooth;scroll-margin:0 20px;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}/*!@:host .duet-scrollable-items .duet-scrollable-list::-webkit-scrollbar*/.sc-duet-scrollable-h .duet-scrollable-items.sc-duet-scrollable .duet-scrollable-list.sc-duet-scrollable::-webkit-scrollbar{display:none}/*!@::slotted(*)*/.sc-duet-scrollable-s>*{scroll-snap-align:center;margin-left:0;-webkit-transition:-webkit-transform 0.2s ease-in-out;transition:-webkit-transform 0.2s ease-in-out;transition:transform 0.2s ease-in-out;transition:transform 0.2s ease-in-out, -webkit-transform 0.2s ease-in-out}";
13658
14141
 
13659
14142
  class DuetScrollable {
@@ -13827,7 +14310,7 @@ class DuetScrollable {
13827
14310
  }; }
13828
14311
  }
13829
14312
 
13830
- const duetSelectCss = "@charset \"UTF-8\";*.sc-duet-select,*.sc-duet-select::after,*.sc-duet-select::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-select-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}.sc-duet-select-h:last-child,.sc-duet-select-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-select-h{width:calc(50% - 16px - 3px)}.duet-expand.sc-duet-select-h{width:100% !important}}.duet-m-0.sc-duet-select-h{margin:0 !important}duet-tooltip.sc-duet-select{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-select{position:relative;top:4px;right:auto}}.duet-select-placeholder.sc-duet-select{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:white}.duet-select-container.sc-duet-select{position:relative;width:100%}.duet-select-wrapper.sc-duet-select{position:relative;width:100%;padding:15px 14px !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;line-height:1.25}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-wrapper.sc-duet-select::after{content:\"  \"}.duet-select-wrapper.sc-duet-select select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:200;width:100%;height:100%;padding:0;margin: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:1rem;cursor:pointer;border:0;outline:none;opacity:0}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#909599;box-shadow:0 0 0 1px #909599}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#747475;box-shadow:0 0 0 1px #747475}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#0077b3;outline:0;box-shadow:0 0 0 1px #0077b3;transition:none}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#171c3a;box-shadow:0 0 0 1px #171c3a}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#171c3a}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#0077b3}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select{cursor:default !important}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#00294d !important;cursor:default !important;background:#f5f8fa !important;border-color:#f5f8fa !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:#00294d !important}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:block;width:100%;min-width:8rem;padding:12px 14px !important;padding-right:48px !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:#00294d;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:white;border:1px solid #909599;border-radius:4px;transition:150ms ease}.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#de2362 !important}.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#e02a0d !important}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#747475}.duet-select.sc-duet-select svg.sc-duet-select{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select svg.sc-duet-select{color:#171c3a}.duet-select-help.sc-duet-select{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:#657787;border-radius:4px}.duet-select-help.sc-duet-select span.sc-duet-select{display:block;margin-top:8px}.duet-theme-turva.sc-duet-select .duet-select-help.sc-duet-select{color:#747475}.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#e02a0d}.duet-label-hidden.sc-duet-select duet-label.sc-duet-select{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
14313
+ const duetSelectCss = "@charset \"UTF-8\";*.sc-duet-select,*.sc-duet-select::after,*.sc-duet-select::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-select-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}.sc-duet-select-h:last-child,.sc-duet-select-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-select-h{width:calc(50% - 16px - 3px)}.duet-expand.sc-duet-select-h{width:100% !important}}.duet-select-variation-tiny.sc-duet-select-h{position:relative;top:-2px;width:72px;margin:0 !important;vertical-align:baseline}.duet-m-0.sc-duet-select-h{margin:0 !important}duet-tooltip.sc-duet-select{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-select{position:relative;top:4px;right:auto}}.duet-select-placeholder.sc-duet-select{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:white}.duet-select-container.sc-duet-select{position:relative;width:100%}.duet-select-container.duet-select-variation-tiny.sc-duet-select{width:72px}.duet-select-wrapper.sc-duet-select{position:relative;width:100%;padding:15px 14px !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;line-height:1.25}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-variation-tiny.sc-duet-select .duet-select-wrapper.sc-duet-select{width:81px;padding:0 !important}.duet-select-wrapper.sc-duet-select::after{content:\"  \"}.duet-select-wrapper.sc-duet-select select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:200;width:100%;height:100%;padding:0;margin: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:1rem;cursor:pointer;border:0;outline:none;opacity:0}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#909599;box-shadow:0 0 0 1px #909599}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#747475;box-shadow:0 0 0 1px #747475}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#0077b3;outline:0;box-shadow:0 0 0 1px #0077b3;transition:none}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#171c3a;box-shadow:0 0 0 1px #171c3a}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#171c3a}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#0077b3}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select{cursor:default !important}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#00294d !important;cursor:default !important;background:#f5f8fa !important;border-color:#f5f8fa !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:#00294d !important}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:block;width:100%;min-width:8rem;padding:12px 14px !important;padding-right:48px !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:#00294d;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:white;border:1px solid #909599;border-radius:4px;transition:150ms ease}.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#de2362 !important}.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#e02a0d !important}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#747475}.duet-select.sc-duet-select svg.sc-duet-select{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select svg.sc-duet-select{color:#171c3a}.duet-select-variation-tiny.sc-duet-select .duet-select.sc-duet-select{width:72px;min-width:inherit;padding:0 !important;margin-bottom:-4px;overflow:visible;font-weight:600;text-align:center}.duet-select-variation-tiny.sc-duet-select .duet-select.sc-duet-select duet-icon.sc-duet-select{padding-left:10px}.duet-select-help.sc-duet-select{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:#657787;border-radius:4px}.duet-select-help.sc-duet-select span.sc-duet-select{display:block;margin-top:8px}.duet-theme-turva.sc-duet-select .duet-select-help.sc-duet-select{color:#747475}.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#e02a0d}.duet-label-hidden.sc-duet-select duet-label.sc-duet-select{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
13831
14314
 
13832
14315
  function isOptionGroup(item) {
13833
14316
  return "options" in item;
@@ -13862,6 +14345,10 @@ class DuetSelect {
13862
14345
  * Inlined decorator, alphabetical order.
13863
14346
  */
13864
14347
  this.processedItems = null;
14348
+ /**
14349
+ * Variation of dropdown. -tiny is used for small numbers / tiny option ranges.
14350
+ */
14351
+ this.variation = "default";
13865
14352
  /**
13866
14353
  * Controls the margin of the component.
13867
14354
  */
@@ -13993,15 +14480,23 @@ class DuetSelect {
13993
14480
  */
13994
14481
  render() {
13995
14482
  const identifier = this.identifier || this.selectId;
13996
- return (hAsync(Host, { onClick: this.onClick, class: { "duet-m-0": this.margin === "none", "duet-expand": this.expand } }, hAsync("div", { class: {
14483
+ return (hAsync(Host, { onClick: this.onClick, class: {
14484
+ "duet-m-0": this.margin === "none",
14485
+ "duet-expand": this.expand,
14486
+ "duet-select-variation-tiny": this.variation === "tiny",
14487
+ } }, hAsync("div", { class: {
13997
14488
  "duet-select-container": true,
13998
14489
  "duet-label-hidden": this.labelHidden,
13999
14490
  "duet-theme-turva": this.theme === "turva",
14491
+ "duet-select-variation-tiny": this.variation === "tiny",
14000
14492
  "duet-input-top-caption-shown": this.isCaptionVisible,
14001
14493
  "has-error": !!this.error,
14002
14494
  } }, hAsync("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: identifier }, this.label), this.tooltip && (hAsync("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (hAsync("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), hAsync("div", { class: "duet-select-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (hAsync("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-select-placeholder", size: "small" }, this.placeholder)), hAsync("select", { ref: select => (this.nativeSelect = select), disabled: this.disabled, name: this.name, id: identifier, role: this.role, "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, required: this.required, "aria-describedby": this.accessibleDescribedBy }, this.placeholder && (hAsync("option", { disabled: true, selected: true, value: "" }, this.placeholder)), !this.processedItems ? (hAsync("option", null, "Virhe valintoja ladattaessa. P\u00E4ivit\u00E4 sivu ja kokeile uusiksi.")) : (this.processedItems.map(item => {
14003
14495
  return isOptionGroup(item) ? this.renderOptionGroup(item) : this.renderOption(item);
14004
- }))), hAsync("div", { class: "duet-select", "aria-hidden": "true" }, hAsync("span", { key: this.value }, this.getSelectedItemLabel()), hAsync("svg", { role: "img", class: "duet-select-icon", 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("span", { class: "duet-select-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && hAsync("span", null, this.error)))));
14496
+ }))), hAsync("div", { class: {
14497
+ "duet-select": true,
14498
+ "duet-select-variation-tiny": this.variation === "tiny",
14499
+ }, "aria-hidden": "true" }, hAsync("span", { key: this.value }, this.getSelectedItemLabel()), this.variation !== "tiny" && (hAsync("svg", { role: "img", class: "duet-select-icon", 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" }))), this.variation === "tiny" && (hAsync("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xx-small" })))), hAsync("span", { class: "duet-select-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && hAsync("span", null, this.error)))));
14005
14500
  }
14006
14501
  get element() { return getElement(this); }
14007
14502
  static get watchers() { return {
@@ -14013,6 +14508,7 @@ class DuetSelect {
14013
14508
  "$flags$": 2,
14014
14509
  "$tagName$": "duet-select",
14015
14510
  "$members$": {
14511
+ "variation": [1],
14016
14512
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
14017
14513
  "accessibleDescribedBy": [1, "accessible-described-by"],
14018
14514
  "margin": [1],
@@ -14448,6 +14944,10 @@ class DuetTab {
14448
14944
 
14449
14945
  const duetTabGroupCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-tab-group,*.sc-duet-tab-group::after,*.sc-duet-tab-group::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-tab-group-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;display:block;width:100%}/*!@.duet-tab-group-tabs*/.duet-tab-group-tabs.sc-duet-tab-group{margin-bottom:28px !important;display:block;width:100%;max-width:100%;padding-top:2px;list-style:none}/*!@.duet-tab-group-tabs.duet-m-0*/.duet-tab-group-tabs.duet-m-0.sc-duet-tab-group{margin:0 !important}/*!@.duet-tab-group-tabs.duet-tab-group-collapses.duet-tab-group-hidden*/.duet-tab-group-tabs.duet-tab-group-collapses.duet-tab-group-hidden.sc-duet-tab-group{display:none}@media (min-width: 36em){/*!@.duet-tab-group-tabs.duet-tab-group-collapses.duet-tab-group-hidden*/.duet-tab-group-tabs.duet-tab-group-collapses.duet-tab-group-hidden.sc-duet-tab-group{display:block}}/*!@.duet-tab-variation-plain .duet-tab-group-tabs*/.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-group-tabs.sc-duet-tab-group{border-bottom:1px solid #e1e3e6}/*!@.duet-theme-turva.duet-tab-variation-plain .duet-tab-group-tabs*/.duet-theme-turva.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-group-tabs.sc-duet-tab-group{border-bottom-color:#e4e4e6}@media (min-width: 36em){/*!@duet-select*/duet-select.sc-duet-tab-group{display:none !important}}/*!@.duet-tab-button*/.duet-tab-button.sc-duet-tab-group{-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;padding:20px;margin-top:-2px;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.1;color:#00294d;text-align:left;text-decoration:none;cursor:pointer;background:white;border:2px solid #e1e3e6;border-radius:0;transition:150ms ease}/*!@.duet-tab-button.duet-p-0*/.duet-tab-button.duet-p-0.sc-duet-tab-group{padding:0 !important}/*!@.duet-tab-button.duet-m-0*/.duet-tab-button.duet-m-0.sc-duet-tab-group{margin:0 !important}/*!@.duet-theme-turva .duet-tab-button*/.duet-theme-turva.sc-duet-tab-group .duet-tab-button.sc-duet-tab-group{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#e4e4e6}/*!@.duet-tab-button.duet-p-0*/.duet-tab-button.duet-p-0.sc-duet-tab-group{padding:0 !important}@media (min-width: 36em){/*!@.duet-tab-button*/.duet-tab-button.sc-duet-tab-group{display:inline-block;width:auto;margin-left:-2px;border-right:2px solid #e1e3e6;border-radius:0}}/*!@.duet-tab-button:hover*/.duet-tab-button.sc-duet-tab-group:hover{z-index:200;border-color:#909599}/*!@.duet-theme-turva .duet-tab-button:hover*/.duet-theme-turva.sc-duet-tab-group .duet-tab-button.sc-duet-tab-group:hover{border-color:#747475}/*!@.duet-tab-button:active*/.duet-tab-button.sc-duet-tab-group:active{opacity:0.75;transition:none}/*!@.duet-tab-button.selected*/.duet-tab-button.selected.sc-duet-tab-group{z-index:201;color:white;background:#00294d;border-color:#00294d;outline:0;box-shadow:none !important}/*!@.duet-theme-turva .duet-tab-button.selected*/.duet-theme-turva.sc-duet-tab-group .duet-tab-button.selected.sc-duet-tab-group{color:white;background-color:#171c3a;border-color:#171c3a}/*!@.duet-tab-button:focus*/.duet-tab-button.sc-duet-tab-group:focus{z-index:200;outline:0}/*!@:host(.user-is-tabbing) .duet-tab-button:focus*/.user-is-tabbing.sc-duet-tab-group-h .duet-tab-button.sc-duet-tab-group:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3 !important}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-tab-button:focus*/.user-is-tabbing.sc-duet-tab-group-h .duet-theme-turva.sc-duet-tab-group .duet-tab-button.sc-duet-tab-group:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a !important}/*!@.duet-tab-button:first-child*/.duet-tab-button.sc-duet-tab-group:first-child{border-top-left-radius:4px;border-top-right-radius:4px}@media (min-width: 36em){/*!@.duet-tab-button:first-child*/.duet-tab-button.sc-duet-tab-group:first-child{border-top-right-radius:0;border-bottom-left-radius:4px}}/*!@.duet-tab-button:last-child*/.duet-tab-button.sc-duet-tab-group:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}@media (min-width: 36em){/*!@.duet-tab-button:last-child*/.duet-tab-button.sc-duet-tab-group:last-child{border-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px}}/*!@.duet-tab-variation-plain .duet-tab-button*/.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-button.sc-duet-tab-group{display:inline-block;width:auto;padding-right:0;padding-left:0;border:0;border-radius:0;transition:none}/*!@.duet-tab-variation-plain .duet-tab-button + .duet-tab-button*/.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-button.sc-duet-tab-group+.duet-tab-button.sc-duet-tab-group{margin-left:36px}/*!@.duet-tab-variation-plain .duet-tab-button.selected*/.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-button.selected.sc-duet-tab-group{color:#0077b3;background:white;border-bottom:3px solid #0077b3}/*!@.duet-theme-turva.duet-tab-variation-plain .duet-tab-button.selected*/.duet-theme-turva.duet-tab-variation-plain.sc-duet-tab-group .duet-tab-button.selected.sc-duet-tab-group{color:#c60c30;border-bottom-color:#c60c30}/*!@.duet-tab-group-content*/.duet-tab-group-content.sc-duet-tab-group{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.5;color:#00294d;text-align:left}/*!@.duet-theme-turva .duet-tab-group-content*/.duet-theme-turva.sc-duet-tab-group .duet-tab-group-content.sc-duet-tab-group{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}";
14450
14946
 
14947
+ /**
14948
+ * @part ${identifier}-button - piercing selector for styling tab buttons
14949
+ * @part ${identifier}-button--selected - piercing selector for styling selected tab button
14950
+ */
14451
14951
  class DuetTabGroup {
14452
14952
  constructor(hostRef) {
14453
14953
  registerInstance(this, hostRef);
@@ -14533,7 +15033,7 @@ class DuetTabGroup {
14533
15033
  };
14534
15034
  this.renderTab = () => {
14535
15035
  const renderedTabs = this.tabs.map((element, index) => {
14536
- return (hAsync("button", { role: "tab", id: this.getButtonId(index), "aria-controls": this.getTabId(index), "aria-selected": element.selected ? "true" : "false", "aria-description": this.getAccessibleDescription(index), part: `${this.identifier}-button`, type: "button", class: {
15036
+ return (hAsync("button", { role: "tab", id: this.getButtonId(index), "aria-controls": this.getTabId(index), "aria-selected": element.selected ? "true" : "false", "aria-description": this.getAccessibleDescription(index), part: `${this.identifier}-button ${element.selected ? `${this.identifier}-button--selected` : ""}`, type: "button", class: {
14537
15037
  "duet-p-0": this.padding === "none",
14538
15038
  "duet-tab-button": true,
14539
15039
  selected: element.selected,
@@ -16877,11 +17377,13 @@ registerComponents([
16877
17377
  DuetNotification,
16878
17378
  DuetNotificationDrawer,
16879
17379
  DuetNumberInput,
17380
+ DuetPagination,
16880
17381
  DuetParagraph,
16881
17382
  DuetProgress,
16882
17383
  DuetRadio,
16883
17384
  DuetRadioGroup,
16884
17385
  DuetRangeSlider,
17386
+ DuetRangeStepper,
16885
17387
  DuetScrollable,
16886
17388
  DuetSelect,
16887
17389
  DuetSpacer,