@duetds/components 4.30.0 → 4.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/hydrate/index.js +1481 -434
  2. package/lib/cjs/{dom-e89ebf90.js → dom-c850c8d7.js} +1 -1
  3. package/lib/cjs/duet-alert.cjs.entry.js +4 -2
  4. package/lib/cjs/duet-badge.cjs.entry.js +2 -2
  5. package/lib/cjs/duet-button_2.cjs.entry.js +6 -5
  6. package/lib/cjs/duet-caption_4.cjs.entry.js +21 -15
  7. package/lib/cjs/duet-card.cjs.entry.js +6 -6
  8. package/lib/cjs/duet-checkbox.cjs.entry.js +2 -2
  9. package/lib/cjs/duet-choice_2.cjs.entry.js +56 -25
  10. package/lib/cjs/duet-collapsible.cjs.entry.js +5 -2
  11. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-date-picker.cjs.entry.js +23 -13
  13. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-editable-table-button_3.cjs.entry.js +232 -0
  15. package/lib/cjs/{duet-table.cjs.entry.js → duet-editable-table_3.cjs.entry.js} +206 -2
  16. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-footer.cjs.entry.js +4 -4
  18. package/lib/cjs/duet-grid_2.cjs.entry.js +52 -4
  19. package/lib/cjs/duet-header_2.cjs.entry.js +26 -10
  20. package/lib/cjs/duet-hero.cjs.entry.js +6 -6
  21. package/lib/cjs/duet-icon.cjs.entry.js +6 -14
  22. package/lib/cjs/duet-input_2.cjs.entry.js +7 -7
  23. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  24. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  25. package/lib/cjs/duet-modal.cjs.entry.js +8 -7
  26. package/lib/cjs/duet-notification_2.cjs.entry.js +6 -5
  27. package/lib/cjs/duet-number-input.cjs.entry.js +36 -15
  28. package/lib/cjs/duet-progress.cjs.entry.js +75 -0
  29. package/lib/cjs/duet-radio_2.cjs.entry.js +2 -2
  30. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-select.cjs.entry.js +6 -6
  32. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-tab_2.cjs.entry.js +12 -6
  34. package/lib/cjs/duet-textarea.cjs.entry.js +5 -5
  35. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  36. package/lib/cjs/duet-tooltip.cjs.entry.js +21 -10
  37. package/lib/cjs/duet-tray.cjs.entry.js +21 -10
  38. package/lib/cjs/duet-upload.cjs.entry.js +403 -180
  39. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  40. package/lib/cjs/duet.cjs.js +4 -4
  41. package/lib/cjs/{focus-utils-7605778f.js → focus-utils-a7a1fb8b.js} +1 -1
  42. package/lib/cjs/{index-0c949193.js → index-b724d698.js} +88 -77
  43. package/lib/cjs/js-utils-33a9dbe3.js +16 -0
  44. package/lib/cjs/{language-utils-70d6a9a4.js → language-utils-aa282901.js} +28 -9
  45. package/lib/cjs/loader.cjs.js +3 -3
  46. package/lib/cjs/{shadow-css-0c8c175b.js → shadow-css-e3edeed1.js} +9 -10
  47. package/lib/cjs/{string-utils-a6de43d8.js → string-utils-267e3dbb.js} +7 -0
  48. package/lib/cjs/{token-utils-13e5d13e.js → token-utils-63a9c8dc.js} +1 -1
  49. package/lib/cjs/{tokens.module-53b3bd92.js → tokens.module-6b2df1c2.js} +2 -0
  50. package/lib/cjs/{watch-options-3877c082.js → watch-options-d88afac0.js} +29 -6
  51. package/lib/collection/collection-manifest.json +15 -8
  52. package/lib/collection/components/duet-alert/duet-alert.js +12 -6
  53. package/lib/collection/components/duet-badge/duet-badge.css +1 -0
  54. package/lib/collection/components/duet-button/duet-button.js +17 -15
  55. package/lib/collection/components/duet-card/duet-card.css +30 -7
  56. package/lib/collection/components/duet-card/duet-card.js +4 -3
  57. package/lib/collection/components/duet-checkbox/duet-checkbox.css +1 -1
  58. package/lib/collection/components/duet-choice/duet-choice.css +16 -3
  59. package/lib/collection/components/duet-choice/duet-choice.js +123 -36
  60. package/lib/collection/components/duet-choice-group/duet-choice-group.css +1 -0
  61. package/lib/collection/components/duet-choice-group/duet-choice-group.js +4 -4
  62. package/lib/collection/components/duet-date-picker/duet-date-picker.css +1 -1
  63. package/lib/collection/components/duet-date-picker/duet-date-picker.js +78 -43
  64. package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +32 -0
  65. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +218 -0
  66. package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +36 -0
  67. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +203 -0
  68. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +13 -0
  69. package/lib/collection/components/duet-editable-table/duet-editable-table.css +16 -0
  70. package/lib/collection/components/duet-editable-table/duet-editable-table.js +348 -0
  71. package/lib/collection/components/duet-footer/duet-footer.js +17 -15
  72. package/lib/collection/components/duet-grid/duet-grid.js +57 -6
  73. package/lib/collection/components/duet-grid-item/duet-grid-item.js +4 -4
  74. package/lib/collection/components/duet-header/duet-header.js +60 -35
  75. package/lib/collection/components/duet-heading/duet-heading.css +4 -0
  76. package/lib/collection/components/duet-heading/duet-heading.js +7 -6
  77. package/lib/collection/components/duet-hero/duet-hero.js +20 -15
  78. package/lib/collection/components/duet-icon/duet-icon.js +2 -6
  79. package/lib/collection/components/duet-icon/icon-utils.js +5 -8
  80. package/lib/collection/components/duet-input/duet-input.css +15 -0
  81. package/lib/collection/components/duet-input/duet-input.js +4 -4
  82. package/lib/collection/components/duet-label/duet-label.css +2 -0
  83. package/lib/collection/components/duet-link/duet-link.js +18 -19
  84. package/lib/collection/components/duet-logo/duet-logo.js +4 -4
  85. package/lib/collection/components/duet-modal/duet-modal.js +22 -17
  86. package/lib/collection/components/duet-notification/duet-notification.js +8 -8
  87. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +20 -15
  88. package/lib/collection/components/duet-number-input/duet-number-input.js +153 -29
  89. package/lib/collection/components/duet-paragraph/duet-paragraph.css +6 -0
  90. package/lib/collection/components/duet-paragraph/duet-paragraph.js +34 -3
  91. package/lib/collection/components/duet-progress/duet-progress.css +103 -0
  92. package/lib/collection/components/duet-progress/duet-progress.js +240 -0
  93. package/lib/collection/components/duet-radio/duet-radio.js +6 -6
  94. package/lib/collection/components/duet-select/duet-select.css +15 -0
  95. package/lib/collection/components/duet-select/duet-select.js +3 -3
  96. package/lib/collection/components/duet-step/duet-step.js +8 -8
  97. package/lib/collection/components/duet-tab-group/duet-tab-group.css +2 -2
  98. package/lib/collection/components/duet-tab-group/duet-tab-group.js +43 -12
  99. package/lib/collection/components/duet-textarea/duet-textarea.css +19 -0
  100. package/lib/collection/components/duet-textarea/duet-textarea.js +5 -4
  101. package/lib/collection/components/duet-tooltip/duet-tooltip.js +82 -20
  102. package/lib/collection/components/duet-tray/duet-tray.js +79 -17
  103. package/lib/collection/components/duet-upload/duet-upload-aria-status.js +217 -0
  104. package/lib/collection/components/duet-upload/duet-upload-editable-item-error.js +16 -0
  105. package/lib/collection/components/duet-upload/duet-upload-editable-item-inprogres.js +8 -0
  106. package/lib/collection/components/duet-upload/duet-upload-editable-item-success.js +30 -0
  107. package/lib/collection/components/duet-upload/duet-upload.css +17 -86
  108. package/lib/collection/components/duet-upload/duet-upload.js +551 -153
  109. package/lib/collection/components/duet-upload/errorcodes.utils.js +16 -4
  110. package/lib/collection/components/duet-upload/xhr.helpers.js +2 -6
  111. package/lib/collection/utils/fixture-utils.js +7 -5
  112. package/lib/collection/utils/js-utils.js +12 -0
  113. package/lib/collection/utils/language-utils.js +26 -9
  114. package/lib/collection/utils/string-utils.js +6 -0
  115. package/lib/collection/utils/watch-options.js +35 -6
  116. package/lib/custom-elements-bundle/index.d.ts +30 -0
  117. package/lib/custom-elements-bundle/index.js +1603 -721
  118. package/lib/duet/duet.esm.js +1 -1
  119. package/lib/duet/duet.js +1 -1
  120. package/lib/duet/{p-4a7911fd.entry.js → p-00735436.entry.js} +1 -1
  121. package/lib/duet/p-060d79be.entry.js +4 -0
  122. package/lib/duet/p-0d22396e.system.js +16 -0
  123. package/lib/duet/p-10deead0.system.js +4 -0
  124. package/lib/duet/p-1208c84f.entry.js +4 -0
  125. package/lib/duet/p-12721178.js +4 -0
  126. package/lib/duet/p-155ef581.system.entry.js +4 -0
  127. package/lib/duet/p-16c48c5d.entry.js +4 -0
  128. package/lib/duet/p-1797df7b.system.entry.js +4 -0
  129. package/lib/duet/p-1a08fc22.system.entry.js +4 -0
  130. package/lib/duet/{p-d1817efe.system.entry.js → p-237e47b4.system.entry.js} +1 -1
  131. package/lib/duet/p-2443bdca.system.entry.js +4 -0
  132. package/lib/duet/p-263bc9cd.system.entry.js +4 -0
  133. package/lib/duet/p-2764f081.js +4 -0
  134. package/lib/duet/p-27d80cef.system.entry.js +4 -0
  135. package/lib/duet/p-28e02c08.entry.js +4 -0
  136. package/lib/duet/{p-f81d8534.entry.js → p-2bb1460c.entry.js} +1 -1
  137. package/lib/duet/p-33c58756.entry.js +4 -0
  138. package/lib/duet/{p-bd9a7d8f.js → p-35a3794e.js} +0 -0
  139. package/lib/duet/{p-bbc229d8.system.entry.js → p-374fb7e6.system.entry.js} +1 -1
  140. package/lib/duet/p-387823af.system.entry.js +4 -0
  141. package/lib/duet/p-3af5d66f.entry.js +4 -0
  142. package/lib/duet/{p-322d1c38.js → p-3c1971d8.js} +1 -1
  143. package/lib/duet/{p-7e108b7e.entry.js → p-4607af59.entry.js} +1 -1
  144. package/lib/duet/p-48d1eb1f.system.entry.js +4 -0
  145. package/lib/duet/p-4a87e9ab.system.entry.js +4 -0
  146. package/lib/duet/{p-031c2cd8.system.entry.js → p-4b6ebe40.system.entry.js} +1 -1
  147. package/lib/duet/p-4e28da18.system.entry.js +4 -0
  148. package/lib/duet/p-548d484e.js +4 -0
  149. package/lib/duet/p-5826523b.entry.js +4 -0
  150. package/lib/duet/{p-ce1374a4.system.entry.js → p-58750bae.system.entry.js} +1 -1
  151. package/lib/duet/p-597d99c7.entry.js +4 -0
  152. package/lib/duet/p-5ea0cd19.entry.js +4 -0
  153. package/lib/duet/p-63d5bf73.system.entry.js +4 -0
  154. package/lib/duet/p-67d9a9a9.system.entry.js +4 -0
  155. package/lib/duet/p-6a19b5ec.entry.js +4 -0
  156. package/lib/duet/p-6cc3be76.system.entry.js +4 -0
  157. package/lib/duet/p-6e363557.system.js +4 -0
  158. package/lib/duet/p-6e6e76db.system.entry.js +4 -0
  159. package/lib/duet/p-70fafc98.system.js +4 -0
  160. package/lib/duet/p-7368b14e.system.entry.js +4 -0
  161. package/lib/duet/p-751542a0.system.entry.js +4 -0
  162. package/lib/duet/p-794659ac.entry.js +4 -0
  163. package/lib/duet/p-7e8d5bb9.system.entry.js +4 -0
  164. package/lib/duet/p-7fee0d23.system.entry.js +4 -0
  165. package/lib/duet/p-81867417.system.js +4 -0
  166. package/lib/duet/p-86daec1c.entry.js +4 -0
  167. package/lib/duet/{p-4265de16.system.entry.js → p-8b5ca0e7.system.entry.js} +1 -1
  168. package/lib/duet/{p-66dde4d2.entry.js → p-8cb7416d.entry.js} +1 -1
  169. package/lib/duet/p-8f826843.system.entry.js +4 -0
  170. package/lib/duet/p-94169303.entry.js +4 -0
  171. package/lib/duet/{p-36007600.entry.js → p-9481e312.entry.js} +1 -1
  172. package/lib/duet/{p-f82709ba.entry.js → p-984576c9.entry.js} +1 -1
  173. package/lib/duet/p-986779fb.js +4 -0
  174. package/lib/duet/p-987edcd0.js +15 -0
  175. package/lib/duet/{p-35e45c19.system.js → p-9a945278.system.js} +1 -1
  176. package/lib/duet/p-9d73343a.entry.js +4 -0
  177. package/lib/duet/{p-e26116e0.system.entry.js → p-9dca5c22.system.entry.js} +1 -1
  178. package/lib/duet/p-a207b008.entry.js +4 -0
  179. package/lib/duet/p-a5b9c192.system.entry.js +4 -0
  180. package/lib/duet/p-a6a84ec6.entry.js +4 -0
  181. package/lib/duet/{p-2d2c45f9.entry.js → p-a890da72.entry.js} +1 -1
  182. package/lib/duet/p-a9859a82.entry.js +4 -0
  183. package/lib/duet/p-aba68b7b.entry.js +4 -0
  184. package/lib/duet/p-acc57c77.entry.js +4 -0
  185. package/lib/duet/{p-2826f987.js → p-ad07f399.js} +1 -1
  186. package/lib/duet/p-aee24388.system.entry.js +4 -0
  187. package/lib/duet/p-aef1b720.system.entry.js +4 -0
  188. package/lib/duet/{p-62806bb6.system.entry.js → p-af41d894.system.entry.js} +1 -1
  189. package/lib/duet/p-b25d3769.js +4 -0
  190. package/lib/duet/{p-dee41056.system.entry.js → p-b32224fe.system.entry.js} +1 -1
  191. package/lib/duet/p-b3744481.entry.js +4 -0
  192. package/lib/duet/{p-de2be65b.system.js → p-b42d81c3.system.js} +1 -1
  193. package/lib/duet/{p-27d538f7.system.entry.js → p-b4e87f02.system.entry.js} +1 -1
  194. package/lib/duet/{p-f71f12ed.entry.js → p-bf93a991.entry.js} +1 -1
  195. package/lib/duet/{p-fd98468a.system.js → p-c18a599e.system.js} +0 -0
  196. package/lib/duet/p-c2e77278.entry.js +4 -0
  197. package/lib/duet/p-c34329f3.entry.js +4 -0
  198. package/lib/duet/{p-59a07cf9.entry.js → p-c36b4da0.entry.js} +1 -1
  199. package/lib/duet/{p-a321a98c.entry.js → p-cdd70b93.entry.js} +1 -1
  200. package/lib/duet/p-d1c19f04.system.entry.js +4 -0
  201. package/lib/duet/{p-f71e337e.system.entry.js → p-d3a3c3c7.system.entry.js} +1 -1
  202. package/lib/duet/{p-345ea4f2.system.entry.js → p-d4118b6e.system.entry.js} +1 -1
  203. package/lib/duet/{p-3dc9d15d.system.entry.js → p-d744d188.system.entry.js} +1 -1
  204. package/lib/duet/p-ddb6344c.system.js +4 -0
  205. package/lib/duet/p-de07c7d7.entry.js +4 -0
  206. package/lib/duet/p-dfe79666.system.entry.js +4 -0
  207. package/lib/duet/p-e12f2b8b.system.js +4 -0
  208. package/lib/duet/p-e2a44156.js +4 -0
  209. package/lib/duet/p-e76b722f.entry.js +4 -0
  210. package/lib/duet/p-e964d062.entry.js +4 -0
  211. package/lib/duet/p-eb55ccd2.system.js +4 -0
  212. package/lib/duet/p-f0a4b68d.system.entry.js +4 -0
  213. package/lib/duet/p-f364eb96.entry.js +4 -0
  214. package/lib/duet/{p-a88df408.entry.js → p-f8ce39fb.entry.js} +1 -1
  215. package/lib/esm/{dom-21034390.js → dom-58cd15f6.js} +1 -1
  216. package/lib/esm/duet-alert.entry.js +4 -2
  217. package/lib/esm/duet-badge.entry.js +2 -2
  218. package/lib/esm/duet-button_2.entry.js +6 -5
  219. package/lib/esm/duet-caption_4.entry.js +21 -15
  220. package/lib/esm/duet-card.entry.js +6 -6
  221. package/lib/esm/duet-checkbox.entry.js +2 -2
  222. package/lib/esm/duet-choice_2.entry.js +57 -26
  223. package/lib/esm/duet-collapsible.entry.js +5 -2
  224. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  225. package/lib/esm/duet-date-picker.entry.js +23 -13
  226. package/lib/esm/duet-divider_2.entry.js +1 -1
  227. package/lib/esm/duet-editable-table-button_3.entry.js +226 -0
  228. package/lib/esm/{duet-table.entry.js → duet-editable-table_3.entry.js} +205 -3
  229. package/lib/esm/duet-empty-state.entry.js +1 -1
  230. package/lib/esm/duet-footer.entry.js +4 -4
  231. package/lib/esm/duet-grid_2.entry.js +52 -4
  232. package/lib/esm/duet-header_2.entry.js +26 -10
  233. package/lib/esm/duet-hero.entry.js +6 -6
  234. package/lib/esm/duet-icon.entry.js +6 -14
  235. package/lib/esm/duet-input_2.entry.js +7 -7
  236. package/lib/esm/duet-layout.entry.js +1 -1
  237. package/lib/esm/duet-list_2.entry.js +2 -2
  238. package/lib/esm/duet-modal.entry.js +8 -7
  239. package/lib/esm/duet-notification_2.entry.js +6 -5
  240. package/lib/esm/duet-number-input.entry.js +36 -15
  241. package/lib/esm/duet-progress.entry.js +71 -0
  242. package/lib/esm/duet-radio_2.entry.js +2 -2
  243. package/lib/esm/duet-range-slider.entry.js +2 -2
  244. package/lib/esm/duet-select.entry.js +6 -6
  245. package/lib/esm/duet-step_2.entry.js +1 -1
  246. package/lib/esm/duet-tab_2.entry.js +12 -6
  247. package/lib/esm/duet-textarea.entry.js +5 -5
  248. package/lib/esm/duet-toggle.entry.js +1 -1
  249. package/lib/esm/duet-tooltip.entry.js +21 -10
  250. package/lib/esm/duet-tray.entry.js +21 -10
  251. package/lib/esm/duet-upload.entry.js +403 -180
  252. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  253. package/lib/esm/duet.js +4 -4
  254. package/lib/esm/{focus-utils-0b12f0df.js → focus-utils-1fe0dcd0.js} +1 -1
  255. package/lib/esm/{index-f70ddc7f.js → index-84d97bd1.js} +88 -78
  256. package/lib/esm/js-utils-b69f17df.js +14 -0
  257. package/lib/esm/{language-utils-ab9c3afc.js → language-utils-344d894c.js} +28 -10
  258. package/lib/esm/loader.js +3 -3
  259. package/lib/esm/{shadow-css-31e2d504.js → shadow-css-7c726abb.js} +9 -10
  260. package/lib/esm/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +7 -1
  261. package/lib/esm/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  262. package/lib/esm/{tokens.module-edb66c04.js → tokens.module-49cbf963.js} +3 -1
  263. package/lib/esm/watch-options-dd55bce8.js +57 -0
  264. package/lib/esm-es5/{dom-21034390.js → dom-58cd15f6.js} +0 -0
  265. package/lib/esm-es5/duet-alert.entry.js +1 -1
  266. package/lib/esm-es5/duet-badge.entry.js +1 -1
  267. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  268. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  269. package/lib/esm-es5/duet-card.entry.js +1 -1
  270. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  271. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  272. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  273. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  274. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  275. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  276. package/lib/esm-es5/duet-editable-table-button_3.entry.js +4 -0
  277. package/lib/esm-es5/duet-editable-table_3.entry.js +4 -0
  278. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  279. package/lib/esm-es5/duet-footer.entry.js +1 -1
  280. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  281. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  282. package/lib/esm-es5/duet-hero.entry.js +1 -1
  283. package/lib/esm-es5/duet-icon.entry.js +2 -2
  284. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  285. package/lib/esm-es5/duet-layout.entry.js +1 -1
  286. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  287. package/lib/esm-es5/duet-modal.entry.js +1 -1
  288. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  289. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  290. package/lib/esm-es5/duet-progress.entry.js +4 -0
  291. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  292. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  293. package/lib/esm-es5/duet-select.entry.js +1 -1
  294. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  295. package/lib/esm-es5/duet-tab_2.entry.js +2 -2
  296. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  297. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  298. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  299. package/lib/esm-es5/duet-tray.entry.js +1 -1
  300. package/lib/esm-es5/duet-upload.entry.js +2 -2
  301. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  302. package/lib/esm-es5/duet.js +1 -1
  303. package/lib/esm-es5/{focus-utils-0b12f0df.js → focus-utils-1fe0dcd0.js} +1 -1
  304. package/lib/esm-es5/index-84d97bd1.js +4 -0
  305. package/lib/esm-es5/js-utils-b69f17df.js +4 -0
  306. package/lib/esm-es5/language-utils-344d894c.js +4 -0
  307. package/lib/esm-es5/loader.js +1 -1
  308. package/lib/esm-es5/shadow-css-7c726abb.js +15 -0
  309. package/lib/esm-es5/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +1 -1
  310. package/lib/esm-es5/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  311. package/lib/esm-es5/tokens.module-49cbf963.js +4 -0
  312. package/lib/esm-es5/watch-options-dd55bce8.js +4 -0
  313. package/lib/types/components/duet-alert/duet-alert.d.ts +2 -1
  314. package/lib/types/components/duet-button/duet-button.d.ts +1 -1
  315. package/lib/types/components/duet-choice/duet-choice.d.ts +24 -5
  316. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +15 -9
  317. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +72 -0
  318. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +72 -0
  319. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +7 -0
  320. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +84 -0
  321. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  322. package/lib/types/components/duet-grid/duet-grid.d.ts +16 -2
  323. package/lib/types/components/duet-header/duet-header.d.ts +21 -5
  324. package/lib/types/components/duet-heading/duet-heading.d.ts +2 -2
  325. package/lib/types/components/duet-hero/duet-hero.d.ts +3 -3
  326. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  327. package/lib/types/components/duet-link/duet-link.d.ts +2 -3
  328. package/lib/types/components/duet-modal/duet-modal.d.ts +3 -3
  329. package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +3 -3
  330. package/lib/types/components/duet-number-input/duet-number-input.d.ts +21 -0
  331. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +9 -1
  332. package/lib/types/components/duet-progress/duet-progress.d.ts +64 -0
  333. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +6 -0
  334. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +11 -0
  335. package/lib/types/components/duet-tray/duet-tray.d.ts +11 -0
  336. package/lib/types/components/duet-upload/duet-upload-aria-status.d.ts +49 -0
  337. package/lib/types/components/duet-upload/duet-upload-editable-item-error.d.ts +7 -0
  338. package/lib/types/components/duet-upload/duet-upload-editable-item-inprogres.d.ts +7 -0
  339. package/lib/types/components/duet-upload/duet-upload-editable-item-success.d.ts +8 -0
  340. package/lib/types/components/duet-upload/duet-upload.d.ts +94 -25
  341. package/lib/types/components/duet-upload/errorcodes.utils.d.ts +1 -0
  342. package/lib/types/components/duet-upload/xhr.helpers.d.ts +7 -1
  343. package/lib/types/components.d.ts +611 -79
  344. package/lib/types/utils/js-utils.d.ts +1 -0
  345. package/lib/types/utils/language-utils.d.ts +8 -3
  346. package/lib/types/utils/string-utils.d.ts +1 -0
  347. package/lib/types/utils/watch-options.d.ts +2 -0
  348. package/package.json +19 -15
  349. package/hydrate/package.json +0 -6
  350. package/lib/cjs/duet-fieldset.cjs.entry.js +0 -62
  351. package/lib/collection/components/duet-upload/duet-upload-file-list.js +0 -49
  352. package/lib/duet/p-0733c303.system.entry.js +0 -4
  353. package/lib/duet/p-095060cc.js +0 -4
  354. package/lib/duet/p-156864a1.system.entry.js +0 -4
  355. package/lib/duet/p-15c15c6a.js +0 -15
  356. package/lib/duet/p-1911dfe7.system.entry.js +0 -4
  357. package/lib/duet/p-1c41525a.entry.js +0 -4
  358. package/lib/duet/p-1cfe38b1.system.entry.js +0 -4
  359. package/lib/duet/p-2834a302.entry.js +0 -4
  360. package/lib/duet/p-28a3d38f.system.entry.js +0 -4
  361. package/lib/duet/p-2a1a9f9f.entry.js +0 -4
  362. package/lib/duet/p-2a4d7c5b.system.entry.js +0 -4
  363. package/lib/duet/p-3eb36e3d.entry.js +0 -4
  364. package/lib/duet/p-4095dba5.entry.js +0 -4
  365. package/lib/duet/p-418b2ce7.system.js +0 -4
  366. package/lib/duet/p-4289b543.entry.js +0 -4
  367. package/lib/duet/p-43e39d98.system.js +0 -4
  368. package/lib/duet/p-46a3ae43.system.js +0 -4
  369. package/lib/duet/p-4a38cf9d.entry.js +0 -4
  370. package/lib/duet/p-4be8e814.entry.js +0 -4
  371. package/lib/duet/p-4dcea8fb.system.entry.js +0 -4
  372. package/lib/duet/p-591b2137.entry.js +0 -4
  373. package/lib/duet/p-5c5bdb06.system.entry.js +0 -4
  374. package/lib/duet/p-5f70e318.entry.js +0 -4
  375. package/lib/duet/p-62c294d6.system.entry.js +0 -4
  376. package/lib/duet/p-6a356ab1.system.js +0 -4
  377. package/lib/duet/p-6c2729da.js +0 -4
  378. package/lib/duet/p-6f107847.system.entry.js +0 -4
  379. package/lib/duet/p-77a5fe4c.system.js +0 -4
  380. package/lib/duet/p-7809e78b.system.entry.js +0 -4
  381. package/lib/duet/p-7a36d76f.system.entry.js +0 -4
  382. package/lib/duet/p-7ee52f58.entry.js +0 -4
  383. package/lib/duet/p-884693f1.entry.js +0 -4
  384. package/lib/duet/p-89db3b94.entry.js +0 -4
  385. package/lib/duet/p-8cfce39e.system.entry.js +0 -4
  386. package/lib/duet/p-8ffe1461.system.entry.js +0 -4
  387. package/lib/duet/p-9381c2d4.entry.js +0 -4
  388. package/lib/duet/p-9a450c9a.entry.js +0 -4
  389. package/lib/duet/p-9a89ec39.js +0 -4
  390. package/lib/duet/p-9bbfe606.system.entry.js +0 -4
  391. package/lib/duet/p-a6096b05.system.entry.js +0 -4
  392. package/lib/duet/p-a89d5d7c.entry.js +0 -4
  393. package/lib/duet/p-b07055fd.system.entry.js +0 -4
  394. package/lib/duet/p-b4374f0e.entry.js +0 -4
  395. package/lib/duet/p-b456d684.system.entry.js +0 -4
  396. package/lib/duet/p-bd18c93f.js +0 -4
  397. package/lib/duet/p-bddb1c15.system.entry.js +0 -4
  398. package/lib/duet/p-c0b95b58.entry.js +0 -4
  399. package/lib/duet/p-c3688975.entry.js +0 -4
  400. package/lib/duet/p-c4d183e6.entry.js +0 -4
  401. package/lib/duet/p-c9303f9a.entry.js +0 -4
  402. package/lib/duet/p-cd4e8ccf.js +0 -4
  403. package/lib/duet/p-ceb75b35.system.entry.js +0 -4
  404. package/lib/duet/p-cf243bcb.system.entry.js +0 -4
  405. package/lib/duet/p-d37c8a05.system.js +0 -4
  406. package/lib/duet/p-d989af11.entry.js +0 -4
  407. package/lib/duet/p-e58ca7af.system.js +0 -16
  408. package/lib/duet/p-e6128d82.system.entry.js +0 -4
  409. package/lib/duet/p-e86cdc17.entry.js +0 -4
  410. package/lib/duet/p-eadb29c7.entry.js +0 -4
  411. package/lib/duet/p-f30b14d6.system.entry.js +0 -4
  412. package/lib/duet/p-f79f8da1.entry.js +0 -4
  413. package/lib/duet/p-fc397e03.system.entry.js +0 -4
  414. package/lib/esm/duet-fieldset.entry.js +0 -58
  415. package/lib/esm/watch-options-de55ea78.js +0 -35
  416. package/lib/esm-es5/duet-fieldset.entry.js +0 -4
  417. package/lib/esm-es5/duet-table.entry.js +0 -4
  418. package/lib/esm-es5/index-f70ddc7f.js +0 -4
  419. package/lib/esm-es5/language-utils-ab9c3afc.js +0 -4
  420. package/lib/esm-es5/shadow-css-31e2d504.js +0 -15
  421. package/lib/esm-es5/tokens.module-edb66c04.js +0 -4
  422. package/lib/esm-es5/watch-options-de55ea78.js +0 -4
  423. package/lib/html.html-data.json +0 -4556
  424. package/lib/types/components/duet-upload/duet-upload-file-list.d.ts +0 -9
@@ -1,15 +1,15 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent$1, h, F as Fragment, g as getElement, H as Host } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent$1, h, F as Fragment, g as getElement, H as Host } from './index-84d97bd1.js';
5
5
  import { a as actionArrowDownSmall } from './action-arrow-down-small-82273dc8.js';
6
6
  import { d as disableBodyScroll, e as enableBodyScroll } from './bodyScrollLock.es6-61b5e9a4.js';
7
7
  import { D as DuetStringsExternalDefaults } from './common-strings-97e04e4b.js';
8
8
  import { f as isEscapeKey, g as isSpaceKey, d as isArrowLeftKey, b as isArrowUpKey, a as isArrowRightKey, c as isArrowDownKey } from './keyboard-utils-584cedd7.js';
9
- import { a as getLanguage, g as getLocaleString } from './language-utils-ab9c3afc.js';
10
- import { p as parsePossibleJSON } from './string-utils-69cf0d09.js';
9
+ import { a as getLanguage, g as getLocaleString } from './language-utils-344d894c.js';
10
+ import { p as parsePossibleJSON } from './string-utils-2f1793b8.js';
11
11
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
12
- import { k as colorGrayLightest, l as colorBrandGrayTurva, c as colorPrimaryTurva, n as colorBrandBlue } from './tokens.module-edb66c04.js';
12
+ import { e as colorGrayLightest, f as colorBrandGrayTurva, c as colorPrimaryTurva, g as colorBrandBlue } from './tokens.module-49cbf963.js';
13
13
  import { c as createID } from './create-id-981107da.js';
14
14
 
15
15
  var navigationContactDropdown={"title":"navigation-contact-dropdown","tags":"navigation contact dropdown speech bubbles","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M20.247 24a.743.743 0 0 1-.53-.22l-4.28-4.28h-.439c-3.308 0-6-2.692-6-6s2.692-6 6-6h3c3.309.001 6 2.692 6 6a5.974 5.974 0 0 1-3 5.179v4.571a.75.75 0 0 1-.751.75zm-5.25-15c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5h.75c.198 0 .391.08.53.22l3.22 3.22v-3.213c0-.289.169-.555.429-.678a4.51 4.51 0 0 0 2.571-4.049 4.504 4.504 0 0 0-4.498-4.499h-3.002z\"/><path d=\"M3.747 16.5a.747.747 0 0 1-.75-.75v-4.57a5.967 5.967 0 0 1-2.65-3.171A5.948 5.948 0 0 1 .57 3.431 6.014 6.014 0 0 1 5.985 0h3.012a6.04 6.04 0 0 1 5.752 4.286.751.751 0 0 1-.718.964.755.755 0 0 1-.719-.536A4.531 4.531 0 0 0 8.997 1.5h-3a4.511 4.511 0 0 0-4.071 2.572c-.512 1.084-.571 2.302-.167 3.431s1.224 2.032 2.308 2.545c.261.123.43.39.43.678v3.214l1.72-1.72a.744.744 0 0 1 1.06 0 .752.752 0 0 1 0 1.061l-3 3a.744.744 0 0 1-.53.219z\"/></svg>"};
@@ -68,10 +68,26 @@ let DuetHeader = class {
68
68
  */
69
69
  this.language = getLanguage();
70
70
  /**
71
- * Property to change accessibleI18nLabels defaults on the component.
72
- * normally you would handle these strings on an application level and override @accessibleI18nLabels when needed
71
+ * Default strings for accessibleI18nLabels
72
+ * @default {
73
+ fi: {
74
+ skipLabel: "Siirry pääsisältöön",
75
+ changeLanguage: "Vaihda kieltä",
76
+ activeLanguage: "Suomi valittuna",
77
+ },
78
+ sv: {
79
+ skipLabel: "Hoppa till huvudinnehåll",
80
+ changeLanguage: "Ändra Språk",
81
+ activeLanguage: "Svenska valt",
82
+ },
83
+ en: {
84
+ skipLabel: "Skip to main content",
85
+ changeLanguage: "Change language",
86
+ activeLanguage: "English selected",
87
+ },
88
+ }
73
89
  */
74
- this.accessibleI18nLabelsDefault = {
90
+ this.accessibleI18nLabelsDefaults = {
75
91
  fi: {
76
92
  skipLabel: "Siirry pääsisältöön",
77
93
  changeLanguage: "Vaihda kieltä",
@@ -108,7 +124,7 @@ let DuetHeader = class {
108
124
  },
109
125
  }
110
126
  */
111
- this.accessibleI18nLabels = getLocaleString(this.accessibleI18nLabelsDefault, this.language);
127
+ this.accessibleI18nLabels = getLocaleString(this.accessibleI18nLabelsDefaults);
112
128
  /**
113
129
  * Property to change accessibleLabelExternal defaults on the component.
114
130
  * normally you would handle these strings on an application level and override @accessibleLabelExternal when needed
@@ -124,7 +140,7 @@ let DuetHeader = class {
124
140
  * Property to change accessibleLabel defaults on the component.
125
141
  * normally you would handle these strings on an application level and override @accessibleLabel when needed
126
142
  */
127
- this.accessibleLabelDefault = {
143
+ this.accessibleLabelDefaults = {
128
144
  fi: "Valikko",
129
145
  sv: "Meny",
130
146
  en: "Menu",
@@ -138,7 +154,7 @@ let DuetHeader = class {
138
154
  en: "Menu",
139
155
  }
140
156
  */
141
- this.accessibleLabel = getLocaleString(this.accessibleLabelDefault);
157
+ this.accessibleLabel = getLocaleString(this.accessibleLabelDefaults);
142
158
  /**
143
159
  * URL that the logo link points to.
144
160
  */
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-84d97bd1.js';
5
5
  import { a as actionNewWindowSmall } from './action-new-window-small-1945be91.js';
6
6
  import { D as DuetStringsExternalDefaults } from './common-strings-97e04e4b.js';
7
- import { a as getLanguage, g as getLocaleString } from './language-utils-ab9c3afc.js';
8
- import { p as parsePossibleJSON } from './string-utils-69cf0d09.js';
7
+ import { a as getLanguage, g as getLocaleString } from './language-utils-344d894c.js';
8
+ import { p as parsePossibleJSON } from './string-utils-2f1793b8.js';
9
9
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
10
10
 
11
11
  const duetHeroCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}.duet-hero{position:relative;display:block;width:100%;padding:48px 28px;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;text-decoration:none;text-shadow:none;text-transform:none;background:#00294d}.duet-hero.duet-p-0{padding:0 !important}.duet-hero.duet-m-0{margin:0 !important}.duet-hero.duet-hero-text-center{text-align:center !important}.duet-hero.duet-hero-light{padding-bottom:0 !important}@media (min-width: 62em){.duet-hero.duet-hero-light{padding-bottom:28px !important}}.duet-hero.duet-hero-with-image{padding-bottom:20px !important;margin-bottom:-36px}@media (min-width: 48em){.duet-hero.duet-hero-with-image{padding-bottom:28px !important}}@media (min-width: 62em){.duet-hero.duet-hero-with-image{padding-bottom:36px !important;margin-bottom:-20px}}.duet-hero.duet-hero-light,.duet-hero.duet-hero-with-image{color:#00294d;background-color:white;background-image:linear-gradient(#f3f9fc, #f9fcfe)}.duet-hero.duet-hero-light::before,.duet-hero.duet-hero-with-image::before{position:absolute;top:100%;left:0;z-index:-1;width:100%;height:400px;content:\"\";background-image:linear-gradient(#f9fcfe, white)}.duet-hero.duet-hero-light.duet-theme-turva,.duet-hero.duet-hero-with-image.duet-theme-turva{color:#171c3a;background-image:linear-gradient(#f5f5f7, #fafafb)}.duet-hero.duet-hero-light.duet-theme-turva::before,.duet-hero.duet-hero-with-image.duet-theme-turva::before{background-image:linear-gradient(#fafafb, white)}.duet-hero.duet-hero-gray{color:#00294d;background:#f5f8fa}.duet-hero.duet-hero-gray.duet-theme-turva{background:#f5f5f7}@media (min-width: 62em){.duet-hero.duet-hero-gray .duet-hero-text{display:inline-block;vertical-align:top}.duet-hero.duet-hero-gray .duet-hero-icon+.duet-hero-text{margin-left:28px}}@media (min-width: 62em){.duet-hero.duet-hero-gray-with-actions{padding-bottom:65.4545454545px}}@media (min-width: 62em){.duet-hero.duet-hero-gray-with-back{padding-top:72px}}.duet-hero.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\";background:#c60c30}@media (min-width: 62em){.duet-hero{min-height:290px;padding:111.6px 56px;overflow:visible}}.duet-hero-icon{display:inline-block;vertical-align:top}@media (min-width: 62em){.duet-hero-icon{margin-top:-8px}}@media (min-width: 62em){.duet-hero-heading{margin-top:12px}}@media (min-width: 62em){.duet-hero-heading-has-pre{margin-top:0}}.duet-hero-wrapper{position:relative;width:100%;max-width:1110px;margin:0 auto;text-align:center}.duet-hero-left-align .duet-hero-wrapper{text-align:left}.duet-hero-with-image .duet-hero-wrapper{position:static}@media (min-width: 62em){.duet-hero-wrapper{text-align:left}}.duet-hero-text{max-width:50rem;margin:0 auto}.duet-hero-text-center .duet-hero-text{text-align:center !important}@media (min-width: 48em){.duet-hero-text{width:80%}.duet-hero-left-align .duet-hero-text{margin:0}}@media (min-width: 62em){.duet-hero-text{width:52%;max-width:none;margin-top:-10px;margin-left:0}.duet-hero-text-center .duet-hero-text{margin-left:auto}}.duet-hero:not(.duet-hero-with-image) .duet-hero-image{width:100%;max-width:400px;height:0;padding-bottom:50%;margin:28px auto 0;background-repeat:no-repeat;background-position:50% 50%;background-size:contain}@media (min-width: 36em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{padding-bottom:40%}}@media (min-width: 48em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{max-width:420px;padding-bottom:34%}.duet-hero-light .duet-hero:not(.duet-hero-with-image) .duet-hero-image{max-width:540px}}@media (min-width: 62em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{position:absolute;top:50%;right:0;padding-bottom:30%;margin:0;transform:translateY(-50%)}.duet-hero-light .duet-hero:not(.duet-hero-with-image) .duet-hero-image{right:-60px;padding-bottom:26%}.duet-hero-gray .duet-hero:not(.duet-hero-with-image) .duet-hero-image{right:-34px;padding-bottom:20%}}@media (min-width: 62em){.duet-hero-gray:not(.duet-hero-with-image) .duet-hero-image{right:-34px;padding-bottom:20%}}.duet-hero-image-wrapper{position:relative;width:80%;height:0;padding-bottom:80%;margin:-30px auto 36px;overflow:hidden;border-radius:28%;box-shadow:0 0 20px rgba(255, 255, 255, 0.5);transform:rotate(10deg)}.duet-theme-turva .duet-hero-image-wrapper{padding-bottom:68%;border-radius:44% 47% 38% 54%;transform:none}@media screen and (min-width: 440px){.duet-hero-image-wrapper{width:300px;padding-bottom:300px}.duet-theme-turva .duet-hero-image-wrapper{width:80%;padding-bottom:68%}}@media (min-width: 62em){.duet-hero-image-wrapper{position:absolute;top:-60px;right:-50px;width:470px;padding-bottom:470px;margin:0}.duet-theme-turva .duet-hero-image-wrapper{top:-40px;right:-80px;width:536px;padding-bottom:470px}}@media (min-width: 76.25em){.duet-hero-image-wrapper{top:-70px;right:-60px;width:600px;padding-bottom:600px}.duet-theme-turva .duet-hero-image-wrapper{top:-70px;right:-60px;width:650px;padding-bottom:600px}}@media screen and (min-width: 1450px){.duet-hero-image-wrapper{top:-70px;right:25px}.duet-theme-turva .duet-hero-image-wrapper{right:0}}.duet-hero-image-wrapper .duet-hero-image{position:absolute;top:-5%;left:-5%;width:110%;height:110%;background-repeat:no-repeat;background-position:50% 50%;background-size:cover;transform:rotate(-10deg)}.duet-theme-turva .duet-hero-image-wrapper .duet-hero-image{top:0;left:0;width:100%;height:100%;transform:none}.duet-hero-image-mask{position:relative;margin:-48px auto 0;overflow:hidden}@media (min-width: 62em){.duet-hero-image-mask{position:absolute;top:0;right:0;width:470px;height:460px;margin:0}}@media (min-width: 76.25em){.duet-hero-image-mask{width:650px;height:580px}}@media screen and (min-width: 1450px){.duet-hero-image-mask{right:50%;transform:translateX(110%)}.duet-theme-turva .duet-hero-image-mask{transform:translateX(108%)}}duet-heading+duet-button{margin-top:12px !important}.duet-hero-links{width:calc(100% + 56px);margin-top:48px;margin-left:-28px}.duet-hero-minimal .duet-hero-links{margin-top:28px}@media (min-width: 36em){.duet-hero-links{margin-top:72px}.duet-hero-minimal .duet-hero-links{margin-top:28px}}@media (min-width: 62em){.duet-hero-links{width:auto;margin:36px 0 0}.duet-hero-minimal .duet-hero-links{margin-top:28px}}.duet-hero-link{display:flex;align-items:center;width:100%;padding:16px 16px 8px;font-weight:600;-webkit-hyphens:auto;hyphens:auto;line-height:1.25;color:#0077b3;text-align:left;text-decoration:none;border-bottom:1px solid #e1e3e6;transition:background-color 300ms ease}.duet-hero-link:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva .duet-hero-link:focus,.duet-hero-link:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-hero-link:hover,.duet-hero-link:hover .duet-hero-action-arrow{color:#004d80 !important;background:transparent !important}.duet-theme-turva .duet-hero-link:hover,.duet-theme-turva .duet-hero-link:hover .duet-hero-action-arrow{color:#940925 !important}.duet-theme-turva .duet-hero-link{color:#c60c30}@media (min-width: 36em){.duet-hero-link{padding:16px 16px 16px 28px}}@media (min-width: 62em){.duet-hero-link{display:inline-flex;width:auto;max-width:350px;padding:0;margin:0 28px 16px 0;border:0;border-radius:4px}}.duet-hero-link:hover{background:rgba(0, 0, 0, 0.02)}@media (min-width: 62em){.duet-hero-link:hover{background:transparent}}.duet-hero-link:first-of-type{border-top:1px solid #e1e3e6}@media (min-width: 62em){.duet-hero-link:first-of-type{margin-top:0;border:0}}.duet-hero-link:last-of-type{margin-bottom:-48px}@media (min-width: 62em){.duet-hero-link:last-of-type{margin-right:0;margin-bottom:0}}.duet-hero-link span{margin-top:-8px}@media (min-width: 36em){.duet-hero-link span{margin:0}}.duet-hero-action-icon{margin-right:8px}@media (min-width: 36em){.duet-hero-action-icon{margin-right:12px}}.duet-hero-action-arrow{margin:0 0 0 8px;color:#0077b3}@media (max-width: 35.9375em){.duet-hero-action-arrow{margin-top:-9px}}.duet-theme-turva .duet-hero-action-arrow{color:#c60c30}.duet-hero-back{margin-bottom:28px !important;display:flex;align-items:center;justify-content:center}.duet-hero-left-align .duet-hero-back{align-items:self-start;justify-content:flex-start}@media (min-width: 36em){.duet-hero-back{margin-bottom:36px !important}.duet-hero-minimal .duet-hero-back{margin-bottom:28px !important}}@media (min-width: 62em){.duet-hero-back{display:block}}.duet-hero-pre{display:inline-block;width:auto;margin-right:8px}.duet-hero-pre+duet-heading{margin-top:0 !important}";
@@ -77,15 +77,15 @@ let DuetHero = class {
77
77
  */
78
78
  this.language = getLanguage();
79
79
  /**
80
- * Property to change accessibleLabelExternal defaults on the component.
81
- * normally you would handle these strings on an application level and override @accessibleLabelExternal when needed
80
+ * Defaults for accessibleLabelExternal
81
+ * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
82
82
  */
83
83
  this.accessibleLabelExternalDefaults = DuetStringsExternalDefaults;
84
84
  /**
85
85
  * Adds accessible label for tooltip that is shown in external link (url & external have both been set)
86
86
  * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
87
87
  */
88
- this.accessibleLabelExternal = getLocaleString(this.accessibleLabelExternalDefaults, this.language);
88
+ this.accessibleLabelExternal = getLocaleString(this.accessibleLabelExternalDefaults);
89
89
  /**
90
90
  * URL that the button links to.
91
91
  */
@@ -1,10 +1,10 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, h, H as Host, g as getElement } from './index-f70ddc7f.js';
4
+ import { E as Env, r as registerInstance, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
5
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
6
- import { g as getColorByName } from './token-utils-5a35377f.js';
7
- import './tokens.module-edb66c04.js';
6
+ import { g as getColorByName } from './token-utils-590d9413.js';
7
+ import './tokens.module-49cbf963.js';
8
8
 
9
9
  const cleanupSvg = (svgContent) => {
10
10
  if (typeof document === "undefined" || !svgContent) {
@@ -42,16 +42,8 @@ const isValid = (elm) => {
42
42
  };
43
43
  const buildIconUrl = (iconName) => {
44
44
  // under normal operations the Icons should always be loaded from the CDN
45
- const cdnURI = `https://cdn.duetds.com/api/icons/${"2.1.12"}/lib/assets/${iconName}.svg`;
46
- // however for vizdiffing and local development / testing we need to be able to access the raw images
47
- const localURI = `http://localhost:3334/icons/lib/assets/${iconName}.svg`;
48
- const host = window.location.hostname;
49
- const re = /(localhost|loca\.lt|127\.0\.0\.1|0\.0\.0\.0)/i;
50
- if (host.match(re)) {
51
- return localURI;
52
- }
53
- else {
54
- return cdnURI;
45
+ {
46
+ return `${Env.cdnURIProd}/icons/${Env.duetIconVersion}/lib/assets/${iconName}.svg`;
55
47
  }
56
48
  };
57
49
  const iconCache = {};
@@ -140,7 +132,7 @@ let DuetIcon = class {
140
132
  if (this.src && this.icon) {
141
133
  console.warn("[DUET COMPONENTS]: <duet-icon> should have either have src or icon attributes, but not both. icon attribute will take precedence", "icon:", this.icon, "src:", this.src);
142
134
  }
143
- this.loadIcon();
135
+ return this.loadIcon();
144
136
  }
145
137
  async loadIcon() {
146
138
  // static icon known at build-time, so we can set it synchronously
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
5
  import { c as createID } from './create-id-981107da.js';
6
6
  import { c as cleanValue, r as resetCursor } from './input-utils-f4cafee1.js';
7
7
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
@@ -10,7 +10,7 @@ var formEmail={"title":"form-email","tags":"form email","svg":"<svg fill=\"curre
10
10
 
11
11
  var formSearch={"title":"form-search","tags":"form search magnifying glass","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M23.245 23.996a.743.743 0 0 1-.53-.22L16.2 17.26a9.824 9.824 0 0 1-2.553 1.579 9.766 9.766 0 0 1-7.51.069 9.745 9.745 0 0 1-5.359-5.262c-1.025-2.412-1.05-5.08-.069-7.51S3.558 1.802 5.97.777a9.744 9.744 0 0 1 7.51-.069c2.431.981 4.334 2.849 5.359 5.262s1.05 5.08.069 7.51a9.807 9.807 0 0 1-1.649 2.718l6.517 6.518a.75.75 0 0 1-.531 1.28zM9.807 1.49a8.259 8.259 0 0 0-3.25.667c-2.044.869-3.627 2.481-4.458 4.54s-.81 4.318.058 6.362a8.26 8.26 0 0 0 4.54 4.458 8.259 8.259 0 0 0 6.362-.059 8.285 8.285 0 0 0 2.594-1.736.365.365 0 0 1 .077-.076 8.245 8.245 0 0 0 1.786-2.728 8.255 8.255 0 0 0-.059-6.362 8.257 8.257 0 0 0-4.54-4.458 8.28 8.28 0 0 0-3.11-.608z\"/></svg>"};
12
12
 
13
- const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}duet-tooltip.sc-duet-input{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{position:relative;top:4px;right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:#171c3a}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:#00294d !important;cursor:initial !important;background:white !important;background-clip:initial !important;border:1px solid #909599 !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#de2362 !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#e02a0d !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a !important;border-color:#747475 !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:#657787;opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfcfd1}.duet-input.sc-duet-input::-moz-placeholder{color:#657787;opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfcfd1}.duet-input.sc-duet-input:-ms-input-placeholder{color:#657787}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfcfd1}.duet-input[disabled].sc-duet-input{color:#00294d !important;cursor:text !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-input .duet-input[disabled].sc-duet-input{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus{border-color:#0077b3 !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:#171c3a !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#171c3a}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#0077b3}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:#657787;border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#747475}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#e02a0d}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}";
13
+ const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}duet-tooltip.sc-duet-input{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{position:relative;top:4px;right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:white}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:#171c3a}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:#00294d !important;cursor:initial !important;background:white !important;background-clip:initial !important;border:1px solid #909599 !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#de2362 !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#e02a0d !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a !important;border-color:#747475 !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:#657787;opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfcfd1}.duet-input.sc-duet-input::-moz-placeholder{color:#657787;opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfcfd1}.duet-input.sc-duet-input:-ms-input-placeholder{color:#657787}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfcfd1}.duet-input[disabled].sc-duet-input{color:#00294d !important;cursor:text !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-input .duet-input[disabled].sc-duet-input{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus{border-color:#0077b3 !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:#171c3a !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#171c3a}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#0077b3}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:#657787;border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#747475}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#e02a0d}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}";
14
14
 
15
15
  const icons = {
16
16
  search: formSearch,
@@ -150,7 +150,7 @@ let DuetInput = class {
150
150
  // (in webkit based browsers settings value trigger cursor position and will set it to EndOfText)
151
151
  restoreCursor();
152
152
  }
153
- this.isCaptionVisible = !!(this.caption || (this.placeholder && this.echoPlaceholder && this.value));
153
+ this.isCaptionVisible = !!this.caption;
154
154
  const emitEvent = () => this.duetChange.emit({
155
155
  value: this.value,
156
156
  component: "duet-input",
@@ -169,7 +169,7 @@ let DuetInput = class {
169
169
  componentWillLoad() {
170
170
  inheritGlobalTheme(this);
171
171
  this.disallowedPatternChange();
172
- this.isCaptionVisible = !!(this.caption || (this.placeholder && this.echoPlaceholder && this.value));
172
+ this.isCaptionVisible = !!this.caption;
173
173
  }
174
174
  /**
175
175
  * Sets focus on the specified `duet-input`. Use this method instead of the global
@@ -204,12 +204,12 @@ let DuetInput = class {
204
204
  "duet-input-top-caption-shown": this.isCaptionVisible,
205
205
  "has-icon": !!this.icon || (this.type !== "text" && this.type !== "tel" && this.type !== "password"),
206
206
  "has-error": !!this.error,
207
- } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, size: "small" }, this.placeholder)), h("div", { class: "duet-input-relative" }, h("input", Object.assign({ ref: input => (this.nativeInput = input), onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, type: this.type, class: {
207
+ } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), h("div", { class: "duet-input-relative" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-input-placeholder", margin: "none", size: "small" }, this.placeholder)), h("input", Object.assign({ ref: input => (this.nativeInput = input), onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, type: this.type, class: {
208
208
  "duet-input": true,
209
209
  disabled: this.disabled,
210
210
  "is-number": this.component === "number",
211
211
  "is-date": this.component === "date",
212
- }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon && this.type !== "text" && this.type !== "tel" && this.type !== "password" && (h("div", { class: "duet-input-icon" }, h("duet-icon", { margin: "none", size: "small", icon: icons[this.type].svg, color: "currentColor" }))), this.icon && (h("div", { class: "duet-input-icon" }, h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), h("slot", null)), h("span", { class: "duet-input-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && h("span", null, this.error)))));
212
+ }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon && this.type !== "text" && this.type !== "tel" && this.type !== "password" && (h("div", { class: "duet-input-icon" }, h("duet-icon", { margin: "none", size: "small", icon: icons[this.type].svg, color: "currentColor" }))), this.icon && (h("div", { class: "duet-input-icon" }, h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), h("slot", null)), h("span", { class: "duet-input-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && h("span", { class: "duet-input-error" }, this.error)))));
213
213
  }
214
214
  get element() { return getElement(this); }
215
215
  static get watchers() { return {
@@ -219,7 +219,7 @@ let DuetInput = class {
219
219
  };
220
220
  DuetInput.style = duetInputCss;
221
221
 
222
- const duetLabelCss = "*.sc-duet-label,*.sc-duet-label::after,*.sc-duet-label::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-label-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:12px !important;position:relative;z-index:100;display:inline-flex;width:auto;margin-top:8px !important;line-height:1.25;cursor:default}.duet-p-0.sc-duet-label-h{padding:0 !important}.duet-m-0.sc-duet-label-h{margin:0 !important}.duet-m-0.sc-duet-label-h{margin-bottom:0 !important}.duet-small-margin.sc-duet-label-h{margin-top:8px !important;margin-bottom:4px !important}.duet-has-tooltip.sc-duet-label-h{padding-right:48px}@media (min-width: 48em){.duet-has-tooltip.sc-duet-label-h{padding-right:0}}label.sc-duet-label{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;font-weight:600 !important;line-height:1.25;color:#00294d;text-align:left}label.sc-duet-label span.sc-duet-label{font-size:1rem;font-weight:600 !important}.duet-label-small.sc-duet-label-h label.sc-duet-label{font-size:0.875rem}.duet-label-small.sc-duet-label-h label.sc-duet-label span.sc-duet-label{font-size:0.875rem}.duet-theme-turva.sc-duet-label-h label.sc-duet-label{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}";
222
+ const duetLabelCss = "*.sc-duet-label,*.sc-duet-label::after,*.sc-duet-label::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-label-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:12px !important;position:relative;z-index:100;display:inline-flex;width:auto;margin-top:8px !important;line-height:1.25;cursor:default}.duet-p-0.sc-duet-label-h{padding:0 !important}.duet-m-0.sc-duet-label-h{margin:0 !important}.duet-m-0.sc-duet-label-h{margin-bottom:0 !important}.duet-small-margin.sc-duet-label-h{margin-top:8px !important;margin-bottom:4px !important}.duet-has-tooltip.sc-duet-label-h{padding-right:48px}@media (min-width: 48em){.duet-has-tooltip.sc-duet-label-h{padding-right:0}}label.sc-duet-label{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;font-weight:600 !important;line-height:1.25;color:#00294d;text-align:left;word-break:break-word}label.sc-duet-label span.sc-duet-label{font-size:1rem;font-weight:600 !important;word-break:break-word}.duet-label-small.sc-duet-label-h label.sc-duet-label{font-size:0.875rem}.duet-label-small.sc-duet-label-h label.sc-duet-label span.sc-duet-label{font-size:0.875rem}.duet-theme-turva.sc-duet-label-h label.sc-duet-label{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}";
223
223
 
224
224
  let DuetLabel = class {
225
225
  constructor(hostRef) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, h, H as Host, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
5
  import { i as isInternetExplorer } from './is-internet-explorer-62b3bdbd.js';
6
6
 
7
7
  const duetLayoutCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;flex:1 0 auto;width:100%}:host(.duet-middle){display:flex}:host(.duet-middle) .duet-layout{padding:36px 28px !important}@media (min-width: 36em){:host(.duet-middle) .duet-layout{padding:48px 36px !important}}@media (min-width: 62em){:host(.duet-middle) .duet-layout{padding:56px !important}}:host(.duet-ie){height:100%}:host(.duet-middle.duet-ie){height:auto}.duet-layout{position:relative;padding:0 16px;margin:48px auto 36px}@media (min-width: 36em){.duet-layout{margin-top:72px}}.duet-layout.duet-layout-has-top{margin-top:0}.duet-layout.duet-m-0{margin-top:0 !important;margin-bottom:0 !important}.duet-layout.duet-center{display:flex;align-items:center;justify-content:center;width:100%;max-width:888px}@media (min-width: 36em){.duet-layout.duet-center{padding:0 48px}}@media (min-width: 48em){.duet-layout.duet-center{padding:0 72px}}@media (min-width: 62em){.duet-layout.duet-center{width:100%}}@media (min-width: 36em){.duet-layout{padding:0 28px}}@media (min-width: 62em){.duet-layout{display:flex;flex-direction:row;padding:0 56px;margin-bottom:48px}}@media (min-width: 76.25em){.duet-layout{max-width:1110px;padding:0}}.duet-main,.duet-sidebar,.duet-layout-top,.duet-layout-bottom{display:block;width:100%}.duet-layout-top{position:relative;display:block;width:100%;margin:72px auto 0}.duet-layout-top.duet-m-0{margin-top:0 !important;margin-bottom:0 !important}.duet-layout-top .duet-layout-top-wrapper{padding:0 20px;margin:0 auto}@media (min-width: 36em){.duet-layout-top .duet-layout-top-wrapper{padding:0 28px}}@media (min-width: 62em){.duet-layout-top .duet-layout-top-wrapper{padding:0 56px}}@media (min-width: 76.25em){.duet-layout-top .duet-layout-top-wrapper{max-width:1110px;padding:0}}.duet-center .duet-layout-top-wrapper{max-width:888px}@media (min-width: 36em){.duet-center .duet-layout-top-wrapper{padding:0 48px}}@media (min-width: 48em){.duet-center .duet-layout-top-wrapper{padding:0 72px}}@media (min-width: 62em){.duet-main{min-width:600px;margin:0 auto}.has-sidebar .duet-main{max-width:734px;margin-right:20px}}@media (min-width: 62em){.duet-sidebar{min-width:256px;max-width:356px}}@media (min-width: 62em){.duet-sidebar-container{width:auto;max-width:356px}}@media (min-width: 62em){.duet-sidebar-container.has-tabs{margin-top:89px}}@media (min-width: 62em){.duet-sidebar-container.sticky{position:sticky}.duet-sidebar-container.sticky.with-links{top:calc(3rem + 20px)}.duet-sidebar-container.sticky.without-links{top:calc(4rem + 20px)}}";
@@ -1,9 +1,9 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, h, g as getElement, H as Host } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, h, g as getElement, H as Host } from './index-84d97bd1.js';
5
5
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
6
- import { w as watchForOptions } from './watch-options-de55ea78.js';
6
+ import { w as watchForOptions } from './watch-options-dd55bce8.js';
7
7
 
8
8
  const duetListCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}.duet-list-component{margin-bottom:16px !important;width:100%}.duet-list-component.duet-p-0{padding:0 !important}.duet-list-component.duet-m-0{margin:0 !important}";
9
9
 
@@ -1,13 +1,14 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-84d97bd1.js';
5
5
  import { d as disableBodyScroll, e as enableBodyScroll } from './bodyScrollLock.es6-61b5e9a4.js';
6
6
  import { c as createID } from './create-id-981107da.js';
7
- import { f as focusElement, F as FocusGuard } from './focus-utils-0b12f0df.js';
7
+ import { f as focusElement, F as FocusGuard } from './focus-utils-1fe0dcd0.js';
8
8
  import { f as isEscapeKey } from './keyboard-utils-584cedd7.js';
9
- import { a as getLanguage, g as getLocaleString } from './language-utils-ab9c3afc.js';
9
+ import { a as getLanguage, g as getLocaleString } from './language-utils-344d894c.js';
10
10
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
11
+ import './string-utils-2f1793b8.js';
11
12
 
12
13
  const duetModalCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.duet-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;max-height:100vh;overflow-y:auto;visibility:hidden;background:rgba(0, 41, 77, 0.85);opacity:0;transition:300ms ease;transition-delay:200ms}.duet-modal-overlay.duet-theme-turva{background:rgba(23, 28, 58, 0.85)}.duet-modal-overlay.duet-modal-active{visibility:visible;opacity:1;transition:300ms ease;transition-delay:0s}.duet-modal-overlay.duet-disable-transitions{transition:none}::slotted(img){width:100%}.duet-modal-inner{display:flex;align-items:center;width:100%;min-height:100%;padding:20px 16px}@media (min-width: 36em){.duet-modal-inner{padding:48px 16px}}@media (max-width: 35.9375em){.duet-modal-inner.duet-modal-large{padding-right:0;padding-left:0}}.duet-modal{position:relative;width:100%;max-width:686px;margin:auto;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:#00294d;background:white;border-radius:4px;opacity:0;transition:300ms ease;transition-delay:0ms;transform:scale(0.96)}.duet-theme-turva .duet-modal{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}.duet-modal-active .duet-modal{opacity:1;transition:300ms ease;transition-delay:200ms;transform:none}.duet-disable-transitions .duet-modal{transition:none}.duet-modal.small{max-width:545px}.duet-modal.large{max-width:100%}@media (min-width: 36em){.duet-modal.large{max-width:1110px}}.duet-modal:focus{outline:0}.duet-modal-body{width:100%;padding:36px 28px}.duet-modal-body.duet-modal-gutter-small{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 36px}@media (max-width: 22.5em){.duet-modal-body{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 28px}}@media (max-width: 35.9375em){.duet-modal-body{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 36px}}@media (min-width: 36em){.duet-modal-body{padding:36px}.duet-modal-body.duet-modal-gutter-large{padding:28px 72px}}@media (min-width: 48em){.duet-modal-body{padding:36px 72px}.duet-modal-body.duet-modal-gutter-large{padding:36px 72px}}@media (min-width: 76.25em){.duet-modal-body{padding:36px 48px 48px}.duet-modal-body.duet-modal-gutter-large{padding:48px 94px}.small .duet-modal-body{padding:36px 48px}}.duet-modal-header{text-align:center}.duet-modal-close{position:absolute;top:12px;right:12px}.duet-modal-heading{width:100%;padding-right:60px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1.25rem;font-style:normal;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d;text-decoration:none;text-overflow:ellipsis;letter-spacing:-0.01rem;white-space:nowrap}.duet-modal-heading.duet-p-0{padding:0 !important}.duet-modal-heading.duet-m-0{margin:0 !important}";
13
14
 
@@ -56,10 +57,10 @@ let DuetModal = class {
56
57
  */
57
58
  this.language = getLanguage();
58
59
  /**
59
- * Property to change accessibleCloseLabel defaults on the component.
60
- * normally you would handle these strings on an application level and override @accessibleCloseLabel when needed
60
+ * Defaults for accessibleCloseLabel
61
+ * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
61
62
  */
62
- this.accessibleCloseLabelDefault = {
63
+ this.accessibleCloseLabelDefaults = {
63
64
  fi: "Sulje ikkuna",
64
65
  sv: "Stäng fönstret",
65
66
  en: "Close the dialog",
@@ -70,7 +71,7 @@ let DuetModal = class {
70
71
  * Swedish translation for this property is “Stäng fönstret”.
71
72
  * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
72
73
  */
73
- this.accessibleCloseLabel = getLocaleString(this.accessibleCloseLabelDefault);
74
+ this.accessibleCloseLabel = getLocaleString(this.accessibleCloseLabelDefaults, this.language);
74
75
  /**
75
76
  * Size of the modal window.
76
77
  */
@@ -1,10 +1,11 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, h, g as getElement } from './index-f70ddc7f.js';
5
- import { a as getLanguage, g as getLocaleString } from './language-utils-ab9c3afc.js';
4
+ import { r as registerInstance, h, g as getElement } from './index-84d97bd1.js';
5
+ import { a as getLanguage, g as getLocaleString } from './language-utils-344d894c.js';
6
6
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
7
7
  import { a as actionArrowDownSmall } from './action-arrow-down-small-82273dc8.js';
8
+ import './string-utils-2f1793b8.js';
8
9
 
9
10
  const duetNotificationCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}.duet-notification{display:block;padding:16px;color:#00294d;cursor:pointer;border-bottom:1px solid #e1e3e6;transition:300ms ease}:host(:last-of-type) .duet-notification{border-bottom:0}.duet-notification.duet-theme-turva{color:#171c3a;border-bottom-color:#e4e4e6}.duet-notification.duet-notification-highlight{font-weight:600;background:#f3f9fc}.duet-notification.duet-notification-highlight.duet-theme-turva{background:#fcf3f4}@media (min-width: 62em){.duet-notification:hover{background:#f3f9fc}.duet-notification:hover.duet-theme-turva{background:#fcf3f4}}.duet-notification a{text-decoration:none}.duet-notification a:focus{outline:0}:host(.user-is-tabbing) .duet-notification:focus-within{z-index:1;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}:host(.user-is-tabbing) .duet-notification:focus-within.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-notification-container{position:relative;display:flex}.duet-notification-badge-container{position:relative;width:16px}.duet-notification-badge{position:absolute;top:6px;left:-2px;width:8px;height:8px;background:#0077b3;border-radius:50%}.duet-theme-turva .duet-notification-badge{background:#c60c30}.duet-notification-content{flex:1}.duet-notification-date{position:absolute;top:2px;right:0;width:96px;font-size:0.75rem;font-weight:600;line-height:1.25;color:#657787;text-align:right;text-transform:uppercase}@media (max-width: 35.9375em){.duet-notification-date{width:auto}}.duet-theme-turva .duet-notification-date{color:#444445}::slotted(duet-heading){padding-right:80px !important}::slotted(duet-paragraph){margin-bottom:2px !important}";
10
11
 
@@ -103,8 +104,8 @@ let DuetNotificationDrawer = class {
103
104
  */
104
105
  this.language = getLanguage();
105
106
  /**
106
- * Property to change accessibleLabelNotifications defaults on the component.
107
- * normally you would handle these strings on an application level and override @accessibleLabelNotifications when needed
107
+ * Defaults for accessibleLabelNotifications
108
+ * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
108
109
  */
109
110
  this.accessibleLabelNotificationsDefaults = {
110
111
  en: "No notifications",
@@ -115,7 +116,7 @@ let DuetNotificationDrawer = class {
115
116
  * Adds accessible label for tooltip that is shown for notifications
116
117
  * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
117
118
  */
118
- this.accessibleLabelNotifications = getLocaleString(this.accessibleLabelNotificationsDefaults, this.language);
119
+ this.accessibleLabelNotifications = getLocaleString(this.accessibleLabelNotificationsDefaults);
119
120
  /**
120
121
  * Show a badge that indicates something has changed.
121
122
  */
@@ -1,11 +1,12 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
5
  import { c as createID } from './create-id-981107da.js';
6
6
  import { a as isArrowRightKey, b as isArrowUpKey, c as isArrowDownKey, d as isArrowLeftKey, e as isBackspaceKey } from './keyboard-utils-584cedd7.js';
7
- import { a as getLanguage, b as getLocale, g as getLocaleString } from './language-utils-ab9c3afc.js';
7
+ import { a as getLanguage, b as getLocale, g as getLocaleString } from './language-utils-344d894c.js';
8
8
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
9
+ import './string-utils-2f1793b8.js';
9
10
 
10
11
  var actionAdd={"title":"action-add","tags":"action add plus","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M12 24a.75.75 0 0 1-.75-.75v-10.5H.75a.75.75 0 0 1 0-1.5h10.5V.75a.75.75 0 0 1 1.5 0v10.5h10.5a.75.75 0 0 1 0 1.5h-10.5v10.5A.75.75 0 0 1 12 24z\"/></svg>"};
11
12
 
@@ -61,37 +62,52 @@ let DuetNumberInput = class {
61
62
  */
62
63
  this.unit = getLocale(this.language).money;
63
64
  /**
64
- * Format of message used to announce current amount when switching between amounts.
65
- * The string {current} is replaced with the current amount.
65
+ * Defaults for accessibleLive
66
66
  * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
67
67
  */
68
- this.accessibleLive = getLocaleString({
68
+ this.accessibleLiveDefaults = {
69
69
  fi: "{current} euroa valittuna",
70
70
  en: "{current} euros selected",
71
71
  sv: "{current} euro valt",
72
- }, this.language);
72
+ };
73
+ /**
74
+ * Format of message used to announce current amount when switching between amounts.
75
+ * The string {current} is replaced with the current amount.
76
+ * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
77
+ */
78
+ this.accessibleLive = getLocaleString(this.accessibleLiveDefaults, this.language);
73
79
  /**
74
80
  * Disables the aria-live messaging used internally in this component. This could be useful when you want to use custom aria-live messages instead.
75
81
  */
76
82
  this.accessibleLiveEnabled = true;
77
83
  /**
78
- * Accessible label for the add button that is read for screen reader users.
84
+ * Defaults for accessibleAdd
79
85
  * @default {fi: "Lisää summaan", en: "Add to the amount", sv: "Lägg till beloppet"}
80
86
  */
81
- this.accessibleAdd = getLocaleString({
87
+ this.accessibleAddDefaults = {
82
88
  fi: "Lisää summaan",
83
89
  en: "Add to the amount",
84
90
  sv: "Lägg till beloppet",
85
- }, this.language);
91
+ };
86
92
  /**
87
- * Accessible label for the subtract button that is read for screen reader users.
93
+ * Accessible label for the add button that is read for screen reader users.
94
+ * @default {fi: "Lisää summaan", en: "Add to the amount", sv: "Lägg till beloppet"}
95
+ */
96
+ this.accessibleAdd = getLocaleString(this.accessibleAddDefaults, this.language);
97
+ /**
98
+ * Defaults for accessibleSubtract
88
99
  * @default {fi: "Vähennä summasta", en: "Subtract from the amount", sv: "Dra från beloppet"}
89
100
  */
90
- this.accessibleSubtract = getLocaleString({
101
+ this.accessibleSubtractDefaults = {
91
102
  fi: "Vähennä summasta",
92
103
  en: "Subtract from the amount",
93
104
  sv: "Dra från beloppet",
94
- }, this.language);
105
+ };
106
+ /**
107
+ * Accessible label for the subtract button that is read for screen reader users.
108
+ * @default {fi: "Vähennä summasta", en: "Subtract from the amount", sv: "Dra från beloppet"}
109
+ */
110
+ this.accessibleSubtract = getLocaleString(this.accessibleSubtractDefaults, this.language);
95
111
  /**
96
112
  * Theme of the input.
97
113
  */
@@ -109,14 +125,19 @@ let DuetNumberInput = class {
109
125
  */
110
126
  this.min = 0;
111
127
  /**
112
- * Label for the number input.
128
+ * Defaults for Label
113
129
  * @default {fi: "Etiketti", en: "Label", sv: "Märka"}
114
130
  */
115
- this.label = getLocaleString({
131
+ this.labelDefaults = {
116
132
  fi: "Nimilappu",
117
133
  en: "Label",
118
134
  sv: "Etikett",
119
- }, this.language);
135
+ };
136
+ /**
137
+ * Label for the number input.
138
+ * @default {fi: "Etiketti", en: "Label", sv: "Märka"}
139
+ */
140
+ this.label = getLocaleString(this.labelDefaults, this.language);
120
141
  /**
121
142
  * Visually hide the label, but still show it to screen readers.
122
143
  */
@@ -0,0 +1,71 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
4
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
+ import { c as createID } from './create-id-981107da.js';
6
+ import { g as getLocaleString } from './language-utils-344d894c.js';
7
+ import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
8
+ import './string-utils-2f1793b8.js';
9
+
10
+ const duetProgressCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;width:100%;height:inherit}.duet-progress{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%;min-height:1px;}.duet-progress .progress-bar{position:relative;display:block;width:100%;height:inherit;min-height:1px;background-color:#f3f9fc;border-radius:0;box-shadow:none}.duet-theme-turva .duet-progress .progress-bar{background-color:#fcf3f4}.duet-progress .progress-bar>span{display:block;height:inherit;text-indent:-9999px;background-color:#0077b3;border-radius:0}.duet-theme-turva .duet-progress .progress-bar>span{background-color:#c60c30}.duet-progress progress[value]{display:flex;width:100%;height:inherit;min-height:1px;color:#0077b3;border:0 none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.duet-theme-turva .duet-progress progress[value]{color:#c60c30}.duet-progress progress[value]::-webkit-progress-bar{background-color:#f3f9fc;border-radius:0}.duet-theme-turva .duet-progress progress[value]::-webkit-progress-bar{background-color:#fcf3f4}.duet-progress progress[value]::-webkit-progress-value{background-color:#0077b3;background-size:35px 20px, 100% 100%, 100% 100%;border-radius:0;-webkit-animation:animate-stripes 5s linear infinite;animation:animate-stripes 5s linear infinite}.duet-theme-turva .duet-progress progress[value]::-webkit-progress-value{background-color:#c60c30}.duet-progress progress[value] ::-moz-progress-bar{background-color:#f3f9fc}.duet-theme-turva .duet-progress progress[value] ::-moz-progress-bar{background-color:#fcf3f4}";
11
+
12
+ let DuetProgress = class {
13
+ constructor(hostRef) {
14
+ registerInstance(this, hostRef);
15
+ /**
16
+ * Own Properties
17
+ */
18
+ this.progressId = createID("DuetProgress");
19
+ this.progressLabelId = createID("DuetProgressLabel");
20
+ /**
21
+ * Defaults for accessibleLabel
22
+ */
23
+ this.accessibleLabelUploadDefaults = {
24
+ fi: ["lähetys valmis", "lähetys käynnissä"],
25
+ sv: ["Uppladdningen är klar", "Uppladdning pågår"],
26
+ en: ["upload completed", "upload in progress"],
27
+ };
28
+ /**
29
+ * Adds accessible label for upload in progress and upload complete states
30
+ * @default {fi: ["lähetys valmis", "lähetys käynnissä"],sv: ["Uppladdningen är klar", "Uppladdning pågår"], en: ["completed", "in progress"]}
31
+ */
32
+ this.accessibleLabelUpload = getLocaleString(this.accessibleLabelUploadDefaults);
33
+ /**
34
+ * Progress of the bar, a value from 0-100
35
+ */
36
+ this.progress = 0;
37
+ /**
38
+ * Height of progressbar
39
+ */
40
+ this.height = "10px";
41
+ /**
42
+ * Theme of the input.
43
+ */
44
+ this.theme = "";
45
+ }
46
+ /**
47
+ * Component lifecycle events.
48
+ */
49
+ componentWillLoad() {
50
+ inheritGlobalTheme(this);
51
+ }
52
+ /**
53
+ * render() function
54
+ * Always the last one in the class.
55
+ */
56
+ render() {
57
+ return (h(Host, null, h("div", { "aria-live": this.accessibleLabel ? "polite" : "off", "aria-hidden": this.accessibleLabel ? "false" : "true", "aria-atomic": "true", style: {
58
+ height: this.height,
59
+ }, id: this.progressId, class: {
60
+ "duet-progress": true,
61
+ "duet-progress-done": this.progress === 100,
62
+ "duet-progress-start": this.progress === 0,
63
+ "duet-progress-inprogress": this.progress < 99 && this.progress !== 0,
64
+ "duet-theme-turva": this.theme === "turva",
65
+ } }, h("duet-visually-hidden", null, h("label", { htmlFor: this.progressLabelId }, this.progress !== 0 && (h("span", null, this.accessibleLabel, ", ", this.accessibleLabelUpload[this.progress < 99 ? 1 : 0])))), this.caption && (h("div", { class: "duet-progress-caption" }, h("span", null, this.caption))), h("progress", { id: this.progressLabelId, "aria-describedby": this.accessibleDescribedBy, role: "progressbar", value: this.progress, max: "100", "aria-valuemin": "0", "aria-valuemax": "100" }, h("div", { class: "progress-bar" }, h("span", { style: { width: `${this.progress}%;` } }, "Progress: ", this.progress, "%"))))));
66
+ }
67
+ get element() { return getElement(this); }
68
+ };
69
+ DuetProgress.style = duetProgressCss;
70
+
71
+ export { DuetProgress as duet_progress };
@@ -1,10 +1,10 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f70ddc7f.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
5
  import { c as createID } from './create-id-981107da.js';
6
6
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';
7
- import { f as findCheckedOption, w as watchForOptions } from './watch-options-de55ea78.js';
7
+ import { f as findCheckedOption, w as watchForOptions } from './watch-options-dd55bce8.js';
8
8
 
9
9
  const duetRadioCss = "*.sc-duet-radio,*.sc-duet-radio::after,*.sc-duet-radio::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-radio-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:28px !important;margin-bottom:12px !important;display:inline-flex;width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}.sc-duet-radio-h:last-child,.sc-duet-radio-h:last-of-type{margin-right:0 !important}.vertical.sc-duet-radio-h{margin-right:0 !important}.horizontal.sc-duet-radio-h{margin-bottom:0 !important;width:auto}.horizontal.sc-duet-radio-h .duet-label.sc-duet-radio span.sc-duet-radio{max-width:100%}@media (min-width: 48em){.horizontal-responsive.sc-duet-radio-h{margin-right:28px !important;margin-bottom:0 !important;width:auto}.horizontal-responsive.sc-duet-radio-h:last-child,.horizontal-responsive.sc-duet-radio-h:last-of-type{margin-right:0 !important}.horizontal-responsive.sc-duet-radio-h .duet-label.sc-duet-radio span.sc-duet-radio{max-width:100%}}.duet-m-0.sc-duet-radio-h{margin:0 !important}.sc-duet-radio-h:last-child:not(:only-child){margin-right:0 !important;margin-bottom:0 !important}.duet-label.sc-duet-radio{position:relative;z-index:100;display:flex;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;cursor:pointer;background:transparent}.duet-theme-turva.sc-duet-radio .duet-label.sc-duet-radio{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-label.sc-duet-radio span.sc-duet-radio{flex-grow:1;font-size:1rem}.duet-label-hidden.sc-duet-radio .duet-label.sc-duet-radio{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-radio-container.sc-duet-radio{position:relative;width:100%;height:100%}.duet-radio.sc-duet-radio{padding:14px !important;position:absolute;top:0;left:0;z-index:200;width:100%;height:100%;cursor:pointer;opacity:0}.duet-radio.sc-duet-radio+label.sc-duet-radio::before{z-index:100;flex-shrink:0;width:20px;height:20px;margin:2px 10px 1px 1px;content:\"\";background:white;border:1px solid #00294d;border-radius:50%}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio+label.sc-duet-radio::before{border-color:#171c3a}.duet-radio.sc-duet-radio:focus+label.sc-duet-radio::before{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio:focus+label.sc-duet-radio::before{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-radio.sc-duet-radio:checked+label.sc-duet-radio::after{position:absolute;top:6px;left:5px;z-index:200;flex-shrink:0;width:12px;height:12px;content:\"\";background:#00294d;border-radius:50%}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio:checked+label.sc-duet-radio::after{background:#171c3a}.duet-radio[disabled].sc-duet-radio{cursor:default}.duet-radio[disabled].sc-duet-radio+label.sc-duet-radio{color:#657787}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio+label.sc-duet-radio{color:#747475}.duet-radio[disabled].sc-duet-radio+label.sc-duet-radio::before{border-color:#cfd2d4}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio+label.sc-duet-radio::before{border-color:#cfcfd1}.duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::before{border:1px solid #657787}.duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::after{background:#657787}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::after{background:#747475;border-color:#747475}";
10
10
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f70ddc7f.js';
5
- import { c as colorPrimaryTurva, a as colorGrayTurva, b as colorPrimary, d as colorGray } from './tokens.module-edb66c04.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-84d97bd1.js';
5
+ import { c as colorPrimaryTurva, a as colorGrayTurva, b as colorPrimary, d as colorGray } from './tokens.module-49cbf963.js';
6
6
  import { c as createID } from './create-id-981107da.js';
7
7
  import { i as isInternetExplorer } from './is-internet-explorer-62b3bdbd.js';
8
8
  import { i as inheritGlobalTheme } from './themeable-component-572685dd.js';