@duetds/components 4.28.0 → 4.31.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 (502) hide show
  1. package/README.md +4 -4
  2. package/hydrate/index.js +914 -168
  3. package/lib/cjs/{action-arrow-down-small-ce4eddbc.js → action-arrow-down-small-ef77a2d1.js} +3 -0
  4. package/lib/cjs/{action-new-window-small-764927c8.js → action-new-window-small-fa51dfb9.js} +3 -0
  5. package/lib/cjs/{app-globals-10f3c9d9.js → app-globals-a032b236.js} +3 -0
  6. package/lib/cjs/{bodyScrollLock.es6-ec4c4a5c.js → bodyScrollLock.es6-6ef1142a.js} +3 -0
  7. package/lib/cjs/{common-strings-210be249.js → common-strings-de17f887.js} +3 -0
  8. package/lib/cjs/{create-id-d0d6cd15.js → create-id-c3b984b1.js} +3 -0
  9. package/lib/cjs/{dom-3e7d9c3b.js → dom-e89ebf90.js} +4 -1
  10. package/lib/cjs/duet-alert.cjs.entry.js +10 -4
  11. package/lib/cjs/duet-badge.cjs.entry.js +7 -4
  12. package/lib/cjs/duet-button_2.cjs.entry.js +17 -10
  13. package/lib/cjs/duet-caption_4.cjs.entry.js +23 -17
  14. package/lib/cjs/duet-card.cjs.entry.js +13 -10
  15. package/lib/cjs/duet-checkbox.cjs.entry.js +7 -4
  16. package/lib/cjs/duet-choice_2.cjs.entry.js +16 -11
  17. package/lib/cjs/duet-collapsible.cjs.entry.js +512 -8
  18. package/lib/cjs/duet-cookie-consent.cjs.entry.js +6 -3
  19. package/lib/cjs/duet-date-picker.cjs.entry.js +31 -15
  20. package/lib/cjs/duet-divider_2.cjs.entry.js +7 -4
  21. package/lib/cjs/duet-empty-state.cjs.entry.js +6 -3
  22. package/lib/cjs/duet-fieldset.cjs.entry.js +7 -4
  23. package/lib/cjs/duet-footer.cjs.entry.js +15 -8
  24. package/lib/cjs/duet-grid_2.cjs.entry.js +8 -5
  25. package/lib/cjs/duet-header_2.cjs.entry.js +68 -21
  26. package/lib/cjs/duet-hero.cjs.entry.js +16 -10
  27. package/lib/cjs/duet-icon.cjs.entry.js +22 -6
  28. package/lib/cjs/duet-input_2.cjs.entry.js +16 -8
  29. package/lib/cjs/duet-layout.cjs.entry.js +6 -3
  30. package/lib/cjs/duet-list_2.cjs.entry.js +8 -5
  31. package/lib/cjs/duet-modal.cjs.entry.js +19 -12
  32. package/lib/cjs/duet-notification_2.cjs.entry.js +17 -9
  33. package/lib/cjs/duet-number-input.cjs.entry.js +54 -24
  34. package/lib/cjs/duet-radio_2.cjs.entry.js +9 -6
  35. package/lib/cjs/duet-range-slider.cjs.entry.js +9 -6
  36. package/lib/cjs/duet-select.cjs.entry.js +8 -5
  37. package/lib/cjs/duet-step_2.cjs.entry.js +9 -6
  38. package/lib/cjs/duet-tab_2.cjs.entry.js +23 -11
  39. package/lib/cjs/duet-table.cjs.entry.js +7 -4
  40. package/lib/cjs/duet-textarea.cjs.entry.js +8 -5
  41. package/lib/cjs/duet-toggle.cjs.entry.js +7 -4
  42. package/lib/cjs/duet-tooltip.cjs.entry.js +33 -15
  43. package/lib/cjs/duet-tray.cjs.entry.js +33 -15
  44. package/lib/cjs/duet-visually-hidden.cjs.entry.js +5 -2
  45. package/lib/cjs/duet.cjs.js +8 -5
  46. package/lib/cjs/{focus-utils-162d8238.js → focus-utils-bd331feb.js} +4 -1
  47. package/lib/cjs/{index-69f4451b.js → index-113c2add.js} +11 -1
  48. package/lib/cjs/index.cjs.js +3 -0
  49. package/lib/cjs/{input-utils-712b8b32.js → input-utils-f3e3854c.js} +28 -0
  50. package/lib/cjs/{is-internet-explorer-cd4610fc.js → is-internet-explorer-91361c56.js} +3 -0
  51. package/lib/cjs/{keyboard-utils-a0b0a23c.js → keyboard-utils-b4e3d1d3.js} +3 -0
  52. package/lib/cjs/language-utils-48b8860b.js +93 -0
  53. package/lib/cjs/loader.cjs.js +7 -4
  54. package/lib/cjs/{shadow-css-09555044.js → shadow-css-0c8c175b.js} +4 -1
  55. package/lib/cjs/string-utils-267e3dbb.js +53 -0
  56. package/lib/cjs/{themeable-component-c462e6fd.js → themeable-component-0c1be552.js} +3 -0
  57. package/lib/cjs/{token-utils-4e9d1b6c.js → token-utils-13e5d13e.js} +4 -1
  58. package/lib/cjs/{tokens.module-6f0eaf7f.js → tokens.module-53b3bd92.js} +3 -0
  59. package/lib/cjs/{watch-options-edeeafd0.js → watch-options-3877c082.js} +3 -0
  60. package/lib/collection/collection-manifest.json +1 -1
  61. package/lib/collection/common-strings.js +3 -0
  62. package/lib/collection/components/duet-alert/duet-alert.js +19 -6
  63. package/lib/collection/components/duet-badge/duet-badge.css +1 -0
  64. package/lib/collection/components/duet-badge/duet-badge.js +4 -1
  65. package/lib/collection/components/duet-button/duet-button.css +3 -3
  66. package/lib/collection/components/duet-button/duet-button.js +28 -11
  67. package/lib/collection/components/duet-caption/duet-caption.js +4 -1
  68. package/lib/collection/components/duet-card/duet-card.css +10 -7
  69. package/lib/collection/components/duet-card/duet-card.js +9 -8
  70. package/lib/collection/components/duet-checkbox/duet-checkbox.js +4 -1
  71. package/lib/collection/components/duet-choice/duet-choice.css +0 -1
  72. package/lib/collection/components/duet-choice/duet-choice.js +17 -8
  73. package/lib/collection/components/duet-choice-group/duet-choice-group.css +3 -1
  74. package/lib/collection/components/duet-choice-group/duet-choice-group.js +5 -2
  75. package/lib/collection/components/duet-collapsible/duet-collapsible.js +110 -6
  76. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +4 -1
  77. package/lib/collection/components/duet-date-picker/date-i18n.js +3 -0
  78. package/lib/collection/components/duet-date-picker/date-picker-day.js +4 -1
  79. package/lib/collection/components/duet-date-picker/date-picker-input.js +4 -1
  80. package/lib/collection/components/duet-date-picker/date-picker-month.js +4 -1
  81. package/lib/collection/components/duet-date-picker/date-utils.js +3 -0
  82. package/lib/collection/components/duet-date-picker/duet-date-picker.css +1 -1
  83. package/lib/collection/components/duet-date-picker/duet-date-picker.js +85 -35
  84. package/lib/collection/components/duet-date-picker/utils.js +3 -0
  85. package/lib/collection/components/duet-divider/duet-divider.js +4 -1
  86. package/lib/collection/components/duet-empty-state/duet-empty-state.js +4 -1
  87. package/lib/collection/components/duet-fieldset/duet-fieldset.js +5 -2
  88. package/lib/collection/components/duet-footer/duet-footer.js +33 -12
  89. package/lib/collection/components/duet-grid/duet-grid.js +4 -1
  90. package/lib/collection/components/duet-grid-item/duet-grid-item.js +4 -1
  91. package/lib/collection/components/duet-header/duet-header.js +108 -36
  92. package/lib/collection/components/duet-heading/duet-heading.css +1 -0
  93. package/lib/collection/components/duet-heading/duet-heading.js +5 -2
  94. package/lib/collection/components/duet-hero/duet-hero.js +35 -15
  95. package/lib/collection/components/duet-icon/duet-icon.js +6 -3
  96. package/lib/collection/components/duet-icon/icon-utils.js +17 -1
  97. package/lib/collection/components/duet-input/duet-input.js +12 -4
  98. package/lib/collection/components/duet-label/duet-label.css +2 -0
  99. package/lib/collection/components/duet-label/duet-label.js +4 -1
  100. package/lib/collection/components/duet-layout/duet-layout.js +4 -1
  101. package/lib/collection/components/duet-link/duet-link.js +35 -17
  102. package/lib/collection/components/duet-list/duet-list.js +5 -2
  103. package/lib/collection/components/duet-list-item/duet-list-item.js +4 -1
  104. package/lib/collection/components/duet-logo/duet-logo.js +15 -4
  105. package/lib/collection/components/duet-modal/duet-modal.js +40 -17
  106. package/lib/collection/components/duet-notification/duet-notification.js +19 -4
  107. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +24 -12
  108. package/lib/collection/components/duet-number-input/duet-number-input.js +182 -31
  109. package/lib/collection/components/duet-number-input/number-input-utils.js +3 -0
  110. package/lib/collection/components/duet-paragraph/duet-paragraph.js +5 -2
  111. package/lib/collection/components/duet-radio/duet-radio.js +4 -1
  112. package/lib/collection/components/duet-radio-group/duet-radio-group.js +5 -2
  113. package/lib/collection/components/duet-range-slider/duet-range-slider.js +6 -3
  114. package/lib/collection/components/duet-select/duet-select.js +4 -1
  115. package/lib/collection/components/duet-spacer/duet-spacer.js +4 -1
  116. package/lib/collection/components/duet-spinner/duet-spinner.js +5 -2
  117. package/lib/collection/components/duet-step/duet-step.js +6 -3
  118. package/lib/collection/components/duet-stepper/duet-stepper.js +4 -1
  119. package/lib/collection/components/duet-tab/duet-tab.js +4 -1
  120. package/lib/collection/components/duet-tab-group/duet-tab-group.js +56 -10
  121. package/lib/collection/components/duet-table/duet-table.js +5 -2
  122. package/lib/collection/components/duet-textarea/duet-textarea.js +5 -2
  123. package/lib/collection/components/duet-toggle/duet-toggle.js +4 -1
  124. package/lib/collection/components/duet-tooltip/duet-tooltip.js +98 -17
  125. package/lib/collection/components/duet-tray/duet-tray.js +97 -16
  126. package/lib/collection/components/duet-visually-hidden/duet-visually-hidden.js +4 -1
  127. package/lib/collection/global/duet-global.js +3 -0
  128. package/lib/collection/utils/create-id.js +3 -0
  129. package/lib/collection/utils/fixture-utils.js +15 -5
  130. package/lib/collection/utils/focus-utils.js +3 -0
  131. package/lib/collection/utils/form-components.js +3 -0
  132. package/lib/collection/utils/group-by.js +3 -0
  133. package/lib/collection/utils/input-utils.js +27 -0
  134. package/lib/collection/utils/is-internet-explorer.js +3 -0
  135. package/lib/collection/utils/keyboard-utils.js +3 -0
  136. package/lib/collection/utils/language-utils.js +46 -8
  137. package/lib/collection/utils/string-utils.js +24 -0
  138. package/lib/collection/utils/test-utils.js +3 -0
  139. package/lib/collection/utils/themeable-component.js +3 -0
  140. package/lib/collection/utils/token-utils.js +3 -0
  141. package/lib/collection/utils/watch-options.js +3 -0
  142. package/lib/custom-elements-bundle/index.js +970 -222
  143. package/lib/duet/duet.esm.js +4 -1
  144. package/lib/duet/duet.js +1 -1
  145. package/lib/duet/index.esm.js +3 -0
  146. package/lib/duet/p-0058512b.js +4 -0
  147. package/lib/duet/p-0224db45.entry.js +4 -0
  148. package/lib/duet/{p-c261a84b.system.entry.js → p-02ad46a0.system.entry.js} +4 -1
  149. package/lib/duet/{p-ae82ab86.js → p-04f9f1bf.js} +3 -0
  150. package/lib/duet/{p-62b75c80.system.js → p-053b71e6.system.js} +3 -0
  151. package/lib/duet/{p-f5e7899b.system.entry.js → p-07263910.system.entry.js} +4 -1
  152. package/lib/duet/{p-6242ef49.system.js → p-0c4bbd65.system.js} +3 -0
  153. package/lib/duet/{p-8b9ee5b0.js → p-115c79b6.js} +3 -0
  154. package/lib/duet/{p-a69855b7.js → p-15c15c6a.js} +3 -0
  155. package/lib/duet/{p-e780bfa0.js → p-18d801be.js} +3 -0
  156. package/lib/duet/p-1bfbc988.entry.js +4 -0
  157. package/lib/duet/p-1cd7177f.entry.js +4 -0
  158. package/lib/duet/p-1cec5a70.system.entry.js +4 -0
  159. package/lib/duet/p-1e7222c2.entry.js +4 -0
  160. package/lib/duet/p-202bbd70.entry.js +4 -0
  161. package/lib/duet/{p-44d3eb2f.system.entry.js → p-22f56356.system.entry.js} +4 -1
  162. package/lib/duet/{p-551d38f9.js → p-2826f987.js} +3 -0
  163. package/lib/duet/p-28b67b94.entry.js +4 -0
  164. package/lib/duet/{p-01dad2d3.js → p-322d1c38.js} +4 -1
  165. package/lib/duet/p-33426ddc.entry.js +4 -0
  166. package/lib/duet/p-33cf6ed1.entry.js +4 -0
  167. package/lib/duet/p-3d3f773d.system.entry.js +4 -0
  168. package/lib/duet/p-3e1ef509.system.entry.js +4 -0
  169. package/lib/duet/p-3f78a826.system.js +4 -0
  170. package/lib/duet/{p-50e14ff9.system.js → p-418b2ce7.system.js} +3 -0
  171. package/lib/duet/{p-9d4322ba.system.js → p-43e39d98.system.js} +3 -0
  172. package/lib/duet/p-44ffb960.entry.js +4 -0
  173. package/lib/duet/p-453955cc.system.entry.js +4 -0
  174. package/lib/duet/p-4670a654.entry.js +4 -0
  175. package/lib/duet/p-47645ea8.system.entry.js +4 -0
  176. package/lib/duet/p-504dbf8f.system.entry.js +4 -0
  177. package/lib/duet/p-5230ee3c.system.entry.js +4 -0
  178. package/lib/duet/p-56e172f5.system.entry.js +4 -0
  179. package/lib/duet/{p-7d7a595e.system.js → p-57ea2576.system.js} +4 -1
  180. package/lib/duet/p-5aa0d34d.entry.js +4 -0
  181. package/lib/duet/{p-63b13a5f.system.js → p-5f6bd5db.system.js} +3 -0
  182. package/lib/duet/p-5fc7e1f7.system.entry.js +4 -0
  183. package/lib/duet/p-605bc214.system.entry.js +4 -0
  184. package/lib/duet/p-60ab57d4.entry.js +4 -0
  185. package/lib/duet/p-64109493.entry.js +4 -0
  186. package/lib/duet/p-69a5dc6b.entry.js +4 -0
  187. package/lib/duet/p-6a230911.system.entry.js +4 -0
  188. package/lib/duet/p-6a356ab1.system.js +4 -0
  189. package/lib/duet/p-6a760b8a.entry.js +4 -0
  190. package/lib/duet/p-6d2da245.entry.js +4 -0
  191. package/lib/duet/p-704245ef.js +4 -0
  192. package/lib/duet/p-712e7dde.system.entry.js +4 -0
  193. package/lib/duet/p-746655ba.entry.js +4 -0
  194. package/lib/duet/p-76f00bd5.js +4 -0
  195. package/lib/duet/p-7b6db837.system.entry.js +4 -0
  196. package/lib/duet/p-7d080785.system.entry.js +4 -0
  197. package/lib/duet/p-82dc2e0b.entry.js +4 -0
  198. package/lib/duet/p-8c8e82aa.system.js +4 -0
  199. package/lib/duet/{p-5fe386d7.system.entry.js → p-8c980350.system.entry.js} +4 -1
  200. package/lib/duet/{p-1fcc25b6.system.entry.js → p-8cb47a70.system.entry.js} +4 -1
  201. package/lib/duet/p-8f03c3eb.entry.js +4 -0
  202. package/lib/duet/{p-50ea2036.system.js → p-8faaaf5f.system.js} +3 -0
  203. package/lib/duet/p-91fa68a5.js +4 -0
  204. package/lib/duet/p-92d38668.system.entry.js +4 -0
  205. package/lib/duet/p-95626e7e.system.entry.js +4 -0
  206. package/lib/duet/p-96808a2e.system.entry.js +4 -0
  207. package/lib/duet/p-96c103b2.system.entry.js +4 -0
  208. package/lib/duet/p-986779fb.js +4 -0
  209. package/lib/duet/{p-a0c363a1.js → p-9a89ec39.js} +3 -0
  210. package/lib/duet/p-9a8d5b11.system.js +4 -0
  211. package/lib/duet/p-9a945278.system.js +4 -0
  212. package/lib/duet/p-9c94be45.entry.js +4 -0
  213. package/lib/duet/p-9ce1baab.system.entry.js +4 -0
  214. package/lib/duet/p-9dfcd29a.js +4 -0
  215. package/lib/duet/p-9ff25646.entry.js +4 -0
  216. package/lib/duet/p-a1d12e94.system.entry.js +4 -0
  217. package/lib/duet/{p-a78af9f5.js → p-a28cf57b.js} +3 -0
  218. package/lib/duet/p-b03a46b6.entry.js +4 -0
  219. package/lib/duet/p-b1b8e510.entry.js +4 -0
  220. package/lib/duet/p-b694cbf5.system.js +4 -0
  221. package/lib/duet/p-b7e50cfa.entry.js +4 -0
  222. package/lib/duet/p-b82927b0.system.entry.js +4 -0
  223. package/lib/duet/p-ba205dca.entry.js +4 -0
  224. package/lib/duet/{p-2dd28142.system.js → p-bb12b972.system.js} +3 -0
  225. package/lib/duet/p-bcae23fc.system.entry.js +4 -0
  226. package/lib/duet/{p-a0e09a50.js → p-bd779757.js} +3 -0
  227. package/lib/duet/{p-69599f4e.js → p-bd9a7d8f.js} +3 -0
  228. package/lib/duet/p-be19c57b.system.entry.js +4 -0
  229. package/lib/duet/{p-6e296e99.js → p-c1325e35.js} +3 -0
  230. package/lib/duet/p-c4737f88.entry.js +4 -0
  231. package/lib/duet/{p-c3058688.js → p-c5beceed.js} +4 -1
  232. package/lib/duet/p-c5f10483.system.entry.js +4 -0
  233. package/lib/duet/{p-d95998b4.system.js → p-c7ae95bd.system.js} +3 -0
  234. package/lib/duet/{p-31c3b93f.system.js → p-ce0892e6.system.js} +3 -0
  235. package/lib/duet/p-d35fd913.system.entry.js +4 -0
  236. package/lib/duet/p-d4b4bfa6.entry.js +4 -0
  237. package/lib/duet/p-d7623eb8.system.entry.js +4 -0
  238. package/lib/duet/p-d863e150.system.js +4 -0
  239. package/lib/duet/p-dc85d2a4.entry.js +4 -0
  240. package/lib/duet/p-de093c16.entry.js +4 -0
  241. package/lib/duet/p-de842863.entry.js +4 -0
  242. package/lib/duet/p-e08b8909.entry.js +4 -0
  243. package/lib/duet/p-e39471b6.entry.js +4 -0
  244. package/lib/duet/{p-f180f2f2.system.js → p-e566ff11.system.js} +3 -0
  245. package/lib/duet/{p-cd603d87.system.js → p-e58ca7af.system.js} +4 -1
  246. package/lib/duet/p-e834c8d5.system.entry.js +4 -0
  247. package/lib/duet/{p-a8a8954e.system.entry.js → p-ef45cfe9.system.entry.js} +4 -1
  248. package/lib/duet/{p-73baca13.system.js → p-efaa0c04.system.js} +3 -0
  249. package/lib/duet/{p-fd305188.system.entry.js → p-f0b1850a.system.entry.js} +4 -1
  250. package/lib/duet/{p-871f3440.js → p-f11208c3.js} +3 -0
  251. package/lib/duet/p-f53c8019.entry.js +4 -0
  252. package/lib/duet/{p-95253d0a.entry.js → p-f96c4093.system.entry.js} +4 -1
  253. package/lib/duet/p-fbd83d67.entry.js +4 -0
  254. package/lib/duet/{p-dbe056ce.system.js → p-fd98468a.system.js} +3 -0
  255. package/lib/duet/p-fdecaf46.entry.js +4 -0
  256. package/lib/esm/{action-arrow-down-small-c24d2c7f.js → action-arrow-down-small-82273dc8.js} +3 -0
  257. package/lib/esm/{action-new-window-small-d592feb6.js → action-new-window-small-1945be91.js} +3 -0
  258. package/lib/esm/{app-globals-2796679e.js → app-globals-6641e444.js} +3 -0
  259. package/lib/esm/{bodyScrollLock.es6-cf1e49b2.js → bodyScrollLock.es6-61b5e9a4.js} +3 -0
  260. package/lib/esm/{common-strings-d5205fd4.js → common-strings-97e04e4b.js} +3 -0
  261. package/lib/esm/{create-id-124e0fc4.js → create-id-981107da.js} +3 -0
  262. package/lib/esm/{dom-1f98a75f.js → dom-21034390.js} +4 -1
  263. package/lib/esm/duet-alert.entry.js +10 -4
  264. package/lib/esm/duet-badge.entry.js +7 -4
  265. package/lib/esm/duet-button_2.entry.js +17 -10
  266. package/lib/esm/duet-caption_4.entry.js +23 -17
  267. package/lib/esm/duet-card.entry.js +13 -10
  268. package/lib/esm/duet-checkbox.entry.js +7 -4
  269. package/lib/esm/duet-choice_2.entry.js +16 -11
  270. package/lib/esm/duet-collapsible.entry.js +512 -8
  271. package/lib/esm/duet-cookie-consent.entry.js +6 -3
  272. package/lib/esm/duet-date-picker.entry.js +31 -15
  273. package/lib/esm/duet-divider_2.entry.js +7 -4
  274. package/lib/esm/duet-empty-state.entry.js +6 -3
  275. package/lib/esm/duet-fieldset.entry.js +7 -4
  276. package/lib/esm/duet-footer.entry.js +15 -8
  277. package/lib/esm/duet-grid_2.entry.js +8 -5
  278. package/lib/esm/duet-header_2.entry.js +68 -21
  279. package/lib/esm/duet-hero.entry.js +16 -10
  280. package/lib/esm/duet-icon.entry.js +22 -6
  281. package/lib/esm/duet-input_2.entry.js +16 -8
  282. package/lib/esm/duet-layout.entry.js +6 -3
  283. package/lib/esm/duet-list_2.entry.js +8 -5
  284. package/lib/esm/duet-modal.entry.js +19 -12
  285. package/lib/esm/duet-notification_2.entry.js +17 -9
  286. package/lib/esm/duet-number-input.entry.js +54 -24
  287. package/lib/esm/duet-radio_2.entry.js +9 -6
  288. package/lib/esm/duet-range-slider.entry.js +9 -6
  289. package/lib/esm/duet-select.entry.js +8 -5
  290. package/lib/esm/duet-step_2.entry.js +9 -6
  291. package/lib/esm/duet-tab_2.entry.js +23 -11
  292. package/lib/esm/duet-table.entry.js +7 -4
  293. package/lib/esm/duet-textarea.entry.js +8 -5
  294. package/lib/esm/duet-toggle.entry.js +7 -4
  295. package/lib/esm/duet-tooltip.entry.js +33 -15
  296. package/lib/esm/duet-tray.entry.js +33 -15
  297. package/lib/esm/duet-visually-hidden.entry.js +5 -2
  298. package/lib/esm/duet.js +8 -5
  299. package/lib/esm/{focus-utils-e76191e8.js → focus-utils-1995e5a9.js} +4 -1
  300. package/lib/esm/{index-aaa7610e.js → index-6e246691.js} +11 -1
  301. package/lib/esm/index.js +3 -1
  302. package/lib/esm/{input-utils-8a4c03a1.js → input-utils-f4cafee1.js} +28 -1
  303. package/lib/esm/{is-internet-explorer-0b40c5fe.js → is-internet-explorer-62b3bdbd.js} +3 -0
  304. package/lib/esm/{keyboard-utils-956f0d36.js → keyboard-utils-584cedd7.js} +3 -0
  305. package/lib/esm/language-utils-d5c38f65.js +89 -0
  306. package/lib/esm/loader.js +7 -4
  307. package/lib/esm/{shadow-css-67b66845.js → shadow-css-31e2d504.js} +4 -1
  308. package/lib/esm/string-utils-2f1793b8.js +49 -0
  309. package/lib/esm/{themeable-component-2a857b64.js → themeable-component-572685dd.js} +3 -0
  310. package/lib/esm/{token-utils-56e2be37.js → token-utils-5a35377f.js} +4 -1
  311. package/lib/esm/{tokens.module-17f6088f.js → tokens.module-edb66c04.js} +3 -0
  312. package/lib/esm/{watch-options-8f61a365.js → watch-options-de55ea78.js} +3 -0
  313. package/lib/esm-es5/{action-arrow-down-small-c24d2c7f.js → action-arrow-down-small-82273dc8.js} +3 -0
  314. package/lib/esm-es5/{action-new-window-small-d592feb6.js → action-new-window-small-1945be91.js} +3 -0
  315. package/lib/esm-es5/{app-globals-2796679e.js → app-globals-6641e444.js} +3 -0
  316. package/lib/esm-es5/{bodyScrollLock.es6-cf1e49b2.js → bodyScrollLock.es6-61b5e9a4.js} +3 -0
  317. package/lib/esm-es5/{common-strings-d5205fd4.js → common-strings-97e04e4b.js} +3 -0
  318. package/lib/esm-es5/{create-id-124e0fc4.js → create-id-981107da.js} +3 -0
  319. package/lib/esm-es5/{dom-1f98a75f.js → dom-21034390.js} +3 -0
  320. package/lib/esm-es5/duet-alert.entry.js +4 -1
  321. package/lib/esm-es5/duet-badge.entry.js +4 -1
  322. package/lib/esm-es5/duet-button_2.entry.js +4 -1
  323. package/lib/esm-es5/duet-caption_4.entry.js +4 -1
  324. package/lib/esm-es5/duet-card.entry.js +4 -1
  325. package/lib/esm-es5/duet-checkbox.entry.js +4 -1
  326. package/lib/esm-es5/duet-choice_2.entry.js +4 -1
  327. package/lib/esm-es5/duet-collapsible.entry.js +4 -1
  328. package/lib/esm-es5/duet-cookie-consent.entry.js +4 -1
  329. package/lib/esm-es5/duet-date-picker.entry.js +4 -1
  330. package/lib/esm-es5/duet-divider_2.entry.js +4 -1
  331. package/lib/esm-es5/duet-empty-state.entry.js +4 -1
  332. package/lib/esm-es5/duet-fieldset.entry.js +4 -1
  333. package/lib/esm-es5/duet-footer.entry.js +4 -1
  334. package/lib/esm-es5/duet-grid_2.entry.js +4 -1
  335. package/lib/esm-es5/duet-header_2.entry.js +4 -1
  336. package/lib/esm-es5/duet-hero.entry.js +4 -1
  337. package/lib/esm-es5/duet-icon.entry.js +4 -1
  338. package/lib/esm-es5/duet-input_2.entry.js +4 -1
  339. package/lib/esm-es5/duet-layout.entry.js +4 -1
  340. package/lib/esm-es5/duet-list_2.entry.js +4 -1
  341. package/lib/esm-es5/duet-modal.entry.js +4 -1
  342. package/lib/esm-es5/duet-notification_2.entry.js +4 -1
  343. package/lib/esm-es5/duet-number-input.entry.js +4 -1
  344. package/lib/esm-es5/duet-radio_2.entry.js +4 -1
  345. package/lib/esm-es5/duet-range-slider.entry.js +4 -1
  346. package/lib/esm-es5/duet-select.entry.js +4 -1
  347. package/lib/esm-es5/duet-step_2.entry.js +4 -1
  348. package/lib/esm-es5/duet-tab_2.entry.js +4 -1
  349. package/lib/esm-es5/duet-table.entry.js +4 -1
  350. package/lib/esm-es5/duet-textarea.entry.js +4 -1
  351. package/lib/esm-es5/duet-toggle.entry.js +4 -1
  352. package/lib/esm-es5/duet-tooltip.entry.js +4 -1
  353. package/lib/esm-es5/duet-tray.entry.js +4 -1
  354. package/lib/esm-es5/duet-visually-hidden.entry.js +4 -1
  355. package/lib/esm-es5/duet.js +4 -1
  356. package/lib/esm-es5/{focus-utils-e76191e8.js → focus-utils-1995e5a9.js} +4 -1
  357. package/lib/esm-es5/index-6e246691.js +4 -0
  358. package/lib/esm-es5/index.js +3 -0
  359. package/lib/esm-es5/input-utils-f4cafee1.js +4 -0
  360. package/lib/esm-es5/{is-internet-explorer-0b40c5fe.js → is-internet-explorer-62b3bdbd.js} +3 -0
  361. package/lib/esm-es5/{keyboard-utils-956f0d36.js → keyboard-utils-584cedd7.js} +3 -0
  362. package/lib/esm-es5/language-utils-d5c38f65.js +4 -0
  363. package/lib/esm-es5/loader.js +4 -1
  364. package/lib/esm-es5/{shadow-css-67b66845.js → shadow-css-31e2d504.js} +3 -0
  365. package/lib/esm-es5/string-utils-2f1793b8.js +4 -0
  366. package/lib/esm-es5/{themeable-component-2a857b64.js → themeable-component-572685dd.js} +3 -0
  367. package/lib/esm-es5/{token-utils-56e2be37.js → token-utils-5a35377f.js} +4 -1
  368. package/lib/esm-es5/{tokens.module-17f6088f.js → tokens.module-edb66c04.js} +3 -0
  369. package/lib/esm-es5/{watch-options-8f61a365.js → watch-options-de55ea78.js} +3 -0
  370. package/lib/html.html-data.json +140 -2
  371. package/lib/loader/cdn.js +3 -1
  372. package/lib/loader/index.cjs.js +3 -1
  373. package/lib/loader/index.d.ts +0 -1
  374. package/lib/loader/index.es2017.js +3 -1
  375. package/lib/loader/index.js +3 -1
  376. package/lib/types/components/duet-alert/duet-alert.d.ts +4 -2
  377. package/lib/types/components/duet-badge/duet-badge.d.ts +1 -1
  378. package/lib/types/components/duet-button/duet-button.d.ts +6 -3
  379. package/lib/types/components/duet-caption/duet-caption.d.ts +1 -1
  380. package/lib/types/components/duet-card/duet-card.d.ts +1 -1
  381. package/lib/types/components/duet-checkbox/duet-checkbox.d.ts +1 -1
  382. package/lib/types/components/duet-choice/duet-choice.d.ts +5 -4
  383. package/lib/types/components/duet-collapsible/duet-collapsible.d.ts +24 -1
  384. package/lib/types/components/duet-date-picker/date-picker-month.d.ts +1 -1
  385. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +16 -7
  386. package/lib/types/components/duet-divider/duet-divider.d.ts +1 -1
  387. package/lib/types/components/duet-empty-state/duet-empty-state.d.ts +1 -1
  388. package/lib/types/components/duet-fieldset/duet-fieldset.d.ts +1 -1
  389. package/lib/types/components/duet-footer/duet-footer.d.ts +7 -3
  390. package/lib/types/components/duet-grid-item/duet-grid-item.d.ts +1 -1
  391. package/lib/types/components/duet-header/duet-header.d.ts +50 -8
  392. package/lib/types/components/duet-heading/duet-heading.d.ts +1 -1
  393. package/lib/types/components/duet-hero/duet-hero.d.ts +8 -5
  394. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  395. package/lib/types/components/duet-input/duet-input.d.ts +2 -2
  396. package/lib/types/components/duet-link/duet-link.d.ts +8 -5
  397. package/lib/types/components/duet-list/duet-list.d.ts +1 -1
  398. package/lib/types/components/duet-logo/duet-logo.d.ts +3 -1
  399. package/lib/types/components/duet-modal/duet-modal.d.ts +11 -5
  400. package/lib/types/components/duet-notification/duet-notification.d.ts +4 -1
  401. package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +6 -5
  402. package/lib/types/components/duet-number-input/duet-number-input.d.ts +29 -2
  403. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +1 -1
  404. package/lib/types/components/duet-radio/duet-radio.d.ts +2 -2
  405. package/lib/types/components/duet-range-slider/duet-range-slider.d.ts +2 -2
  406. package/lib/types/components/duet-select/duet-select.d.ts +1 -1
  407. package/lib/types/components/duet-step/duet-step.d.ts +1 -1
  408. package/lib/types/components/duet-stepper/duet-stepper.d.ts +1 -1
  409. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +10 -1
  410. package/lib/types/components/duet-textarea/duet-textarea.d.ts +2 -2
  411. package/lib/types/components/duet-toggle/duet-toggle.d.ts +2 -2
  412. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +16 -1
  413. package/lib/types/components/duet-tray/duet-tray.d.ts +15 -0
  414. package/lib/types/components.d.ts +265 -33
  415. package/lib/types/utils/input-utils.d.ts +9 -0
  416. package/lib/types/utils/language-utils.d.ts +26 -3
  417. package/lib/types/utils/string-utils.d.ts +1 -0
  418. package/lib/types/utils/test-utils.d.ts +1 -1
  419. package/package.json +39 -23
  420. package/lib/cjs/language-utils-0f4f60f1.js +0 -54
  421. package/lib/cjs/string-utils-0336d6da.js +0 -28
  422. package/lib/duet/p-00914fa8.entry.js +0 -1
  423. package/lib/duet/p-08b10b1b.entry.js +0 -1
  424. package/lib/duet/p-0a5bdffc.entry.js +0 -1
  425. package/lib/duet/p-117e6a2d.system.entry.js +0 -1
  426. package/lib/duet/p-11f650f9.system.entry.js +0 -1
  427. package/lib/duet/p-120f15f9.entry.js +0 -1
  428. package/lib/duet/p-1270fad1.entry.js +0 -1
  429. package/lib/duet/p-15c4ae87.system.entry.js +0 -1
  430. package/lib/duet/p-19d86321.system.js +0 -1
  431. package/lib/duet/p-1a544f89.js +0 -1
  432. package/lib/duet/p-1a773ea3.system.entry.js +0 -1
  433. package/lib/duet/p-1f18716e.entry.js +0 -1
  434. package/lib/duet/p-2141f564.system.js +0 -1
  435. package/lib/duet/p-23f2a281.entry.js +0 -1
  436. package/lib/duet/p-28072b15.entry.js +0 -1
  437. package/lib/duet/p-2ce3a1bc.entry.js +0 -1
  438. package/lib/duet/p-2f56c5d0.entry.js +0 -1
  439. package/lib/duet/p-330725c5.js +0 -1
  440. package/lib/duet/p-378186a8.entry.js +0 -1
  441. package/lib/duet/p-393dc5f0.system.entry.js +0 -1
  442. package/lib/duet/p-4486ae28.system.entry.js +0 -1
  443. package/lib/duet/p-45713f8a.system.entry.js +0 -1
  444. package/lib/duet/p-4e4d8137.system.entry.js +0 -1
  445. package/lib/duet/p-4f4895e0.entry.js +0 -1
  446. package/lib/duet/p-51f89eec.entry.js +0 -1
  447. package/lib/duet/p-545f6a97.entry.js +0 -1
  448. package/lib/duet/p-568ab60b.system.entry.js +0 -1
  449. package/lib/duet/p-598ba79a.js +0 -1
  450. package/lib/duet/p-598edf9e.system.entry.js +0 -1
  451. package/lib/duet/p-5e6a5340.entry.js +0 -1
  452. package/lib/duet/p-64fd394a.entry.js +0 -1
  453. package/lib/duet/p-66c75914.system.entry.js +0 -1
  454. package/lib/duet/p-6dc51621.system.entry.js +0 -1
  455. package/lib/duet/p-6f41124b.system.js +0 -1
  456. package/lib/duet/p-6f6b2cc5.system.entry.js +0 -1
  457. package/lib/duet/p-700243af.entry.js +0 -1
  458. package/lib/duet/p-770d46e6.entry.js +0 -1
  459. package/lib/duet/p-8498e753.system.entry.js +0 -1
  460. package/lib/duet/p-852e96c1.system.js +0 -1
  461. package/lib/duet/p-86de511c.system.entry.js +0 -1
  462. package/lib/duet/p-8db7a844.system.entry.js +0 -1
  463. package/lib/duet/p-91255671.js +0 -1
  464. package/lib/duet/p-921afc00.entry.js +0 -1
  465. package/lib/duet/p-9ac41fbc.system.entry.js +0 -1
  466. package/lib/duet/p-9b6adcb3.system.entry.js +0 -1
  467. package/lib/duet/p-9b9cb411.system.entry.js +0 -1
  468. package/lib/duet/p-9ff8c7c4.entry.js +0 -1
  469. package/lib/duet/p-a4d8b2c4.entry.js +0 -1
  470. package/lib/duet/p-a92bdc1c.system.entry.js +0 -1
  471. package/lib/duet/p-b6e261ef.js +0 -1
  472. package/lib/duet/p-b761ef2d.entry.js +0 -1
  473. package/lib/duet/p-b87ce8c9.system.entry.js +0 -1
  474. package/lib/duet/p-bdf5fe15.entry.js +0 -1
  475. package/lib/duet/p-c0c1bcba.system.js +0 -1
  476. package/lib/duet/p-c5fe3120.system.entry.js +0 -1
  477. package/lib/duet/p-c6d19c6c.system.entry.js +0 -1
  478. package/lib/duet/p-c8068a31.entry.js +0 -1
  479. package/lib/duet/p-cb073c9b.entry.js +0 -1
  480. package/lib/duet/p-cb49c05a.system.js +0 -1
  481. package/lib/duet/p-cb62f051.entry.js +0 -1
  482. package/lib/duet/p-ce55045f.js +0 -1
  483. package/lib/duet/p-d20651ba.entry.js +0 -1
  484. package/lib/duet/p-d7c57e6c.entry.js +0 -1
  485. package/lib/duet/p-da0df691.system.entry.js +0 -1
  486. package/lib/duet/p-dc2d2635.system.entry.js +0 -1
  487. package/lib/duet/p-dcd0f562.system.entry.js +0 -1
  488. package/lib/duet/p-dd4281d5.entry.js +0 -1
  489. package/lib/duet/p-e374aba6.entry.js +0 -1
  490. package/lib/duet/p-e693d73a.system.entry.js +0 -1
  491. package/lib/duet/p-e7bef783.entry.js +0 -1
  492. package/lib/duet/p-ec326c4c.system.entry.js +0 -1
  493. package/lib/duet/p-efa3e05d.entry.js +0 -1
  494. package/lib/duet/p-f2cca5cc.system.js +0 -1
  495. package/lib/duet/p-f3d07b69.entry.js +0 -1
  496. package/lib/duet/p-fbeb43e8.entry.js +0 -1
  497. package/lib/esm/language-utils-c7ce7c0e.js +0 -50
  498. package/lib/esm/string-utils-9ef35d2a.js +0 -25
  499. package/lib/esm-es5/index-aaa7610e.js +0 -1
  500. package/lib/esm-es5/input-utils-8a4c03a1.js +0 -1
  501. package/lib/esm-es5/language-utils-c7ce7c0e.js +0 -1
  502. package/lib/esm-es5/string-utils-9ef35d2a.js +0 -1
@@ -1,17 +1,20 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const themeableComponent = require('./themeable-component-c462e6fd.js');
7
- const actionNewWindowSmall = require('./action-new-window-small-764927c8.js');
8
- const stringUtils = require('./string-utils-0336d6da.js');
9
- const languageUtils = require('./language-utils-0f4f60f1.js');
10
- const commonStrings = require('./common-strings-210be249.js');
8
+ const index = require('./index-113c2add.js');
9
+ const actionNewWindowSmall = require('./action-new-window-small-fa51dfb9.js');
10
+ const commonStrings = require('./common-strings-de17f887.js');
11
+ const languageUtils = require('./language-utils-48b8860b.js');
12
+ const stringUtils = require('./string-utils-267e3dbb.js');
13
+ const themeableComponent = require('./themeable-component-0c1be552.js');
11
14
 
12
15
  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}";
13
16
 
14
- const DuetHero = class {
17
+ let DuetHero = class {
15
18
  constructor(hostRef) {
16
19
  index.registerInstance(this, hostRef);
17
20
  this.duetClick = index.createEvent(this, "duetClick", 7);
@@ -73,17 +76,20 @@ const DuetHero = class {
73
76
  /**
74
77
  * The currently active language. This setting changes the accessible labels to match the
75
78
  * chosen language.
79
+ * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing
80
+ * @default "fi"
76
81
  */
77
82
  this.language = languageUtils.getLanguage();
78
83
  /**
79
- * Property to change accessibleLabelExternal defaults on the component.
80
- * normally you would handle these strings on an application level and override @accessibleLabelExternal when needed
84
+ * Defaults for accessibleLabelExternal
85
+ * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
81
86
  */
82
87
  this.accessibleLabelExternalDefaults = commonStrings.DuetStringsExternalDefaults;
83
88
  /**
84
89
  * Adds accessible label for tooltip that is shown in external link (url & external have both been set)
90
+ * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
85
91
  */
86
- this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults, this.language);
92
+ this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults);
87
93
  /**
88
94
  * URL that the button links to.
89
95
  */
@@ -1,11 +1,14 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const tokenUtils = require('./token-utils-4e9d1b6c.js');
7
- const themeableComponent = require('./themeable-component-c462e6fd.js');
8
- require('./tokens.module-6f0eaf7f.js');
8
+ const index = require('./index-113c2add.js');
9
+ const themeableComponent = require('./themeable-component-0c1be552.js');
10
+ const tokenUtils = require('./token-utils-13e5d13e.js');
11
+ require('./tokens.module-53b3bd92.js');
9
12
 
10
13
  const cleanupSvg = (svgContent) => {
11
14
  if (typeof document === "undefined" || !svgContent) {
@@ -41,7 +44,20 @@ const isValid = (elm) => {
41
44
  }
42
45
  return true;
43
46
  };
44
- const buildIconUrl = (iconName) => `https://cdn.duetds.com/api/icons/${"2.1.11"}/lib/assets/${iconName}.svg`;
47
+ const buildIconUrl = (iconName) => {
48
+ // under normal operations the Icons should always be loaded from the CDN
49
+ const cdnURI = `https://cdn.duetds.com/api/icons/${"2.2.1"}/lib/assets/${iconName}.svg`;
50
+ // however for vizdiffing and local development / testing we need to be able to access the raw images
51
+ const localURI = `http://0.0.0.0:3334/icons/lib/assets/${iconName}.svg`;
52
+ const host = window.location.hostname;
53
+ const re = /(localhost|loca\.lt|127\.0\.0\.1|0\.0\.0\.0)/i;
54
+ if (host.match(re)) {
55
+ return localURI;
56
+ }
57
+ else {
58
+ return cdnURI;
59
+ }
60
+ };
45
61
  const iconCache = {};
46
62
  function fetchIconByUrl(url) {
47
63
  if (iconCache[url]) {
@@ -74,7 +90,7 @@ function fetchIconByUrl(url) {
74
90
 
75
91
  const duetIconCss = "*,*::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;margin-bottom:16px !important;display:inline-block;width:auto;max-width:100%;color:inherit;-webkit-tap-highlight-color:transparent}@media (max-width: 35.9375em){:host(.duet-icon-has-outline){margin-bottom:0 !important}}@media (max-width: 35.9375em){:host(.duet-icon-has-background){margin-bottom:0 !important}}:host(.duet-m-0){margin:0 !important}@media (max-width: 35.9375em){:host(.duet-m-0){margin:0 !important}}.duet-icon{-webkit-user-select:none;user-select:none;width:100%;height:100%;transform-origin:top center}.duet-icon.duet-icon-has-outline{padding:12px;border-style:solid;border-width:1px;border-radius:50%}@media (max-width: 35.9375em){.duet-icon.duet-icon-has-outline{outline:1px solid transparent;transform:scale(0.8)}}.duet-icon.duet-icon-has-background{padding:16px;color:white;border-radius:50%}@media (max-width: 35.9375em){.duet-icon.duet-icon-has-background{outline:1px solid transparent;transform:scale(0.8)}}.duet-icon.duet-icon-has-background.duet-theme-turva,.duet-icon.duet-icon-has-background.duet-theme-default{color:white}.duet-icon.duet-icon-has-background.xxx-small .duet-icon-svg,.duet-icon.duet-icon-has-outline.xxx-small .duet-icon-svg{width:10px;height:10px}.duet-icon.duet-icon-has-background.xx-small .duet-icon-svg,.duet-icon.duet-icon-has-outline.xx-small .duet-icon-svg{width:16px;height:16px}@media (max-width: 35.9375em){.duet-icon.duet-icon-not-responsive{transform:scale(1) !important}}.duet-icon.duet-theme-default{color:#0077b3}.duet-icon.duet-theme-turva{color:#c60c30}.duet-icon.auto .duet-icon-svg{width:100%;height:100%}.duet-icon.xxx-small .duet-icon-svg{width:7px;height:7px}.duet-icon.duet-icon-has-background.xxx-small{padding:6px}.duet-icon.duet-icon-has-outline.xxx-small{padding:4px}.duet-icon.xx-small .duet-icon-svg{width:10px;height:10px}.duet-icon.duet-icon-has-background.xx-small{padding:8px}.duet-icon.duet-icon-has-outline.xx-small{padding:7px}.duet-icon.x-small .duet-icon-svg{width:16px;height:16px}.duet-icon.duet-icon-has-outline.x-small{padding:10px}.duet-icon.duet-icon-has-background.x-small{padding:12px}.duet-icon.small .duet-icon-svg{width:20px;height:20px}.duet-icon.duet-icon-has-background.small{padding:14px}.duet-icon.large .duet-icon-svg{width:30px;height:30px}.duet-icon.x-large .duet-icon-svg{width:36px;height:36px}.duet-icon.xx-large .duet-icon-svg{width:48px;height:48px}.duet-icon.xxx-large .duet-icon-svg{width:48px;height:48px}@media (min-width: 48em){.duet-icon.xxx-large .duet-icon-svg{width:72px;height:72px}}.duet-icon .duet-icon-svg{display:block;width:24px;min-width:100%;height:24px;font-size:0}.duet-icon svg{width:100%;min-width:100%;fill:currentColor}";
76
92
 
77
- const DuetIcon = class {
93
+ let DuetIcon = class {
78
94
  constructor(hostRef) {
79
95
  index.registerInstance(this, hostRef);
80
96
  /**
@@ -1,11 +1,14 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const createId = require('./create-id-d0d6cd15.js');
7
- const themeableComponent = require('./themeable-component-c462e6fd.js');
8
- const inputUtils = require('./input-utils-712b8b32.js');
8
+ const index = require('./index-113c2add.js');
9
+ const createId = require('./create-id-c3b984b1.js');
10
+ const inputUtils = require('./input-utils-f3e3854c.js');
11
+ const themeableComponent = require('./themeable-component-0c1be552.js');
9
12
 
10
13
  var formEmail={"title":"form-email","tags":"form email","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M12 23.999c-3.205 0-6.218-1.248-8.484-3.514S.001 15.206.001 12.001s1.248-6.218 3.514-8.485C5.782 1.25 8.795.001 12 .001s6.218 1.248 8.485 3.514A11.92 11.92 0 0 1 24 12v2.25A3.754 3.754 0 0 1 20.25 18a3.77 3.77 0 0 1-3.48-2.365A6.009 6.009 0 0 1 12 18c-3.308 0-6-2.692-6-6s2.692-6 6-6 6 2.692 6 6v2.25c0 1.241 1.009 2.25 2.25 2.25s2.25-1.009 2.25-2.25V12c0-2.804-1.092-5.441-3.075-7.424A10.433 10.433 0 0 0 12 1.501c-2.804 0-5.441 1.092-7.424 3.075S1.501 9.196 1.501 12c0 2.805 1.092 5.441 3.075 7.424s4.619 3.074 7.423 3.074c2.257 0 4.494-.746 6.299-2.1a.749.749 0 1 1 .9 1.199A12.049 12.049 0 0 1 12 23.999zM12 7.5c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5 4.5-2.019 4.5-4.5-2.019-4.5-4.5-4.5z\"/></svg>"};
11
14
 
@@ -17,7 +20,7 @@ const icons = {
17
20
  search: formSearch,
18
21
  email: formEmail,
19
22
  };
20
- const DuetInput = class {
23
+ let DuetInput = class {
21
24
  constructor(hostRef) {
22
25
  index.registerInstance(this, hostRef);
23
26
  this.duetInput = index.createEvent(this, "duetInput", 7);
@@ -143,8 +146,13 @@ const DuetInput = class {
143
146
  this.disallowPatternRegex = this.disallowPattern ? new RegExp(this.disallowPattern, "g") : null;
144
147
  }
145
148
  valueChanged() {
146
- if (this.nativeInput) {
149
+ var _a;
150
+ if (((_a = this === null || this === void 0 ? void 0 : this.nativeInput) === null || _a === void 0 ? void 0 : _a.value) !== this.value) {
151
+ const restoreCursor = inputUtils.resetCursor(this.nativeInput);
147
152
  this.nativeInput.value = this.value;
153
+ // restore selection position after having set value
154
+ // (in webkit based browsers settings value trigger cursor position and will set it to EndOfText)
155
+ restoreCursor();
148
156
  }
149
157
  this.isCaptionVisible = !!(this.caption || (this.placeholder && this.echoPlaceholder && this.value));
150
158
  const emitEvent = () => this.duetChange.emit({
@@ -215,9 +223,9 @@ const DuetInput = class {
215
223
  };
216
224
  DuetInput.style = duetInputCss;
217
225
 
218
- 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}";
226
+ 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}";
219
227
 
220
- const DuetLabel = class {
228
+ let DuetLabel = class {
221
229
  constructor(hostRef) {
222
230
  index.registerInstance(this, hostRef);
223
231
  /**
@@ -1,13 +1,16 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const isInternetExplorer = require('./is-internet-explorer-cd4610fc.js');
8
+ const index = require('./index-113c2add.js');
9
+ const isInternetExplorer = require('./is-internet-explorer-91361c56.js');
7
10
 
8
11
  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)}}";
9
12
 
10
- const DuetLayout = class {
13
+ let DuetLayout = class {
11
14
  constructor(hostRef) {
12
15
  index.registerInstance(this, hostRef);
13
16
  /**
@@ -1,14 +1,17 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const watchOptions = require('./watch-options-edeeafd0.js');
7
- const themeableComponent = require('./themeable-component-c462e6fd.js');
8
+ const index = require('./index-113c2add.js');
9
+ const themeableComponent = require('./themeable-component-0c1be552.js');
10
+ const watchOptions = require('./watch-options-3877c082.js');
8
11
 
9
12
  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}";
10
13
 
11
- const DuetList = class {
14
+ let DuetList = class {
12
15
  constructor(hostRef) {
13
16
  index.registerInstance(this, hostRef);
14
17
  /**
@@ -110,7 +113,7 @@ DuetList.style = duetListCss;
110
113
 
111
114
  const duetListItemCss = "*,*::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:flex;flex-flow:row;width:100%;overflow:visible;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d}@media (max-width: 35.9375em){:host{flex-wrap:wrap}}:host dt,:host dd{-webkit-hyphens:auto;hyphens:auto;text-align:left;word-break:break-all;word-break:break-word;margin-inline-start:0}@media (max-width: 35.9375em){:host dt,:host dd{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}}:host dt{padding:16px !important;font-weight:600}@media (max-width: 35.9375em){:host dt{padding-bottom:4px !important}}.duet-theme-turva :host dt{font-weight:700}:host dd{padding:16px !important;margin-left:auto;text-align:left}@media (max-width: 35.9375em){:host dd{padding-top:0 !important}}:host(:not(.duet-list-striped)) dt{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){:host(:not(.duet-list-striped)) dt{padding-bottom:4px !important}}:host(:not(.duet-list-striped)) dd{padding:8px !important;padding-left:0 !important}@media (max-width: 35.9375em){:host(:not(.duet-list-striped)) dd{padding-top:0 !important}}:host(.duet-theme-turva){font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}:host(.duet-list-striped:nth-child(odd)) dt,:host(.duet-list-striped:nth-child(odd)) dd{background:#f5f8fa}:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dt,:host(.duet-list-striped.duet-theme-turva:nth-child(odd)) dd{background:#f5f5f7}:host(.duet-list-width-30) dt{flex-basis:33%}:host(.duet-list-width-30) dd{flex-basis:67%}:host(.duet-list-width-50) dt{flex-basis:47%}:host(.duet-list-width-50) dd{flex-basis:53%}:host(.duet-list-width-70) dt{flex-basis:65%}:host(.duet-list-width-70) dd{flex-basis:35%}:host(.duet-p-0) dt,:host(.duet-p-0) dd{padding-top:0 !important;padding-bottom:4px !important}@media (max-width: 35.9375em){:host(.duet-list-mobile-center) dt,:host(.duet-list-mobile-center) dd{text-align:center}}@media (max-width: 61.9375em){:host(.duet-list-breakpoint-large){flex-wrap:wrap}:host(.duet-list-breakpoint-large) dt,:host(.duet-list-breakpoint-large) dd{flex:inherit;flex-basis:100% !important;width:100%;padding-bottom:4px !important}:host(.duet-list-breakpoint-large) dd{padding-top:0 !important}}:host(.duet-list-breakpoint-large.duet-list-striped) dd{padding-bottom:16px !important}@media (max-width: 61.9375em){:host(.duet-list-breakpoint-large.duet-list-mobile-center) dt,:host(.duet-list-breakpoint-large.duet-list-mobile-center) dd{text-align:center !important}}";
112
115
 
113
- const DuetListItem = class {
116
+ let DuetListItem = class {
114
117
  constructor(hostRef) {
115
118
  index.registerInstance(this, hostRef);
116
119
  }
@@ -1,14 +1,18 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const bodyScrollLock_es6 = require('./bodyScrollLock.es6-ec4c4a5c.js');
7
- const createId = require('./create-id-d0d6cd15.js');
8
- const themeableComponent = require('./themeable-component-c462e6fd.js');
9
- const keyboardUtils = require('./keyboard-utils-a0b0a23c.js');
10
- const focusUtils = require('./focus-utils-162d8238.js');
11
- const languageUtils = require('./language-utils-0f4f60f1.js');
8
+ const index = require('./index-113c2add.js');
9
+ const bodyScrollLock_es6 = require('./bodyScrollLock.es6-6ef1142a.js');
10
+ const createId = require('./create-id-c3b984b1.js');
11
+ const focusUtils = require('./focus-utils-bd331feb.js');
12
+ const keyboardUtils = require('./keyboard-utils-b4e3d1d3.js');
13
+ const languageUtils = require('./language-utils-48b8860b.js');
14
+ const themeableComponent = require('./themeable-component-0c1be552.js');
15
+ require('./string-utils-267e3dbb.js');
12
16
 
13
17
  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}";
14
18
 
@@ -16,7 +20,7 @@ const duetModalCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margi
16
20
  // iOS has otherwise problems moving the focus from modal back to the original element.
17
21
  // This issue is similar to what we’ve seen in Duet Date Picker + iOS VoiceOver.
18
22
  const TRANSITION_MS = 600;
19
- const DuetModal = class {
23
+ let DuetModal = class {
20
24
  constructor(hostRef) {
21
25
  index.registerInstance(this, hostRef);
22
26
  this.duetOpen = index.createEvent(this, "duetOpen", 7);
@@ -52,13 +56,15 @@ const DuetModal = class {
52
56
  /**
53
57
  * The currently active language. This setting also changes the logo to match
54
58
  * the chosen language.
59
+ * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing
60
+ * @default "fi"
55
61
  */
56
62
  this.language = languageUtils.getLanguage();
57
63
  /**
58
- * Property to change accessibleCloseLabel defaults on the component.
59
- * normally you would handle these strings on an application level and override @accessibleCloseLabel when needed
64
+ * Defaults for accessibleCloseLabel
65
+ * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
60
66
  */
61
- this.accessibleCloseLabelDefault = {
67
+ this.accessibleCloseLabelDefaults = {
62
68
  fi: "Sulje ikkuna",
63
69
  sv: "Stäng fönstret",
64
70
  en: "Close the dialog",
@@ -67,8 +73,9 @@ const DuetModal = class {
67
73
  * Adds accessible label for the close icon that is only shown for screen
68
74
  * readers. This property is always required to create an accessibly interface!
69
75
  * Swedish translation for this property is “Stäng fönstret”.
76
+ * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
70
77
  */
71
- this.accessibleCloseLabel = languageUtils.getLocaleString(this.accessibleCloseLabelDefault);
78
+ this.accessibleCloseLabel = languageUtils.getLocaleString(this.accessibleCloseLabelDefaults, this.language);
72
79
  /**
73
80
  * Size of the modal window.
74
81
  */
@@ -1,20 +1,26 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const themeableComponent = require('./themeable-component-c462e6fd.js');
7
- const languageUtils = require('./language-utils-0f4f60f1.js');
8
- const actionArrowDownSmall = require('./action-arrow-down-small-ce4eddbc.js');
8
+ const index = require('./index-113c2add.js');
9
+ const languageUtils = require('./language-utils-48b8860b.js');
10
+ const themeableComponent = require('./themeable-component-0c1be552.js');
11
+ const actionArrowDownSmall = require('./action-arrow-down-small-ef77a2d1.js');
12
+ require('./string-utils-267e3dbb.js');
9
13
 
10
14
  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}";
11
15
 
12
- const DuetNotification = class {
16
+ let DuetNotification = class {
13
17
  constructor(hostRef) {
14
18
  index.registerInstance(this, hostRef);
15
19
  /**
16
20
  * The currently active language.
17
21
  * Used for announcing unread notifications to screen readers.
22
+ * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing
23
+ * @default "fi"
18
24
  */
19
25
  this.language = languageUtils.getLanguage();
20
26
  /**
@@ -28,6 +34,7 @@ const DuetNotification = class {
28
34
  };
29
35
  /**
30
36
  * Adds accessible label for tooltip that is shown over unread counter
37
+ * @default { en: "Unread", fi: "Lukematon", sv: "Oläst" }
31
38
  */
32
39
  this.accessibleLabelUnread = languageUtils.getLocaleString(this.accessibleLabelUnreadDefaults, this.language);
33
40
  /**
@@ -79,7 +86,7 @@ DuetNotification.style = duetNotificationCss;
79
86
  const duetNotificationDrawerCss = "*,*::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-drawer{position:relative}@media (min-width: 62em){.duet-drawer{display:inline-block}}.duet-drawer-toggle{position:relative;display:flex;align-items:center;width:100%;height:48px;padding:0 20px;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:48px;color:#00294d;text-align:left;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-bottom:1px solid #e1e3e6;border-radius:0;-webkit-appearance:none;appearance:none}@media (min-width: 62em){.duet-drawer-toggle{z-index:200;width:auto;max-width:200px;padding:0 30px 0 12px;overflow:hidden;font-size:0.875rem;line-height:4rem;background-color:white;border:0;border-radius:4px;transition:border 300ms ease}}.duet-theme-turva .duet-drawer-toggle{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#e4e4e6}.duet-drawer-toggle:active{opacity:0.75}.duet-drawer-toggle:focus{outline:0}:host(.user-is-tabbing) .duet-drawer-toggle:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}:host(.user-is-tabbing) .duet-theme-turva .duet-drawer-toggle:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-drawer-toggle:hover{color:#004d80}.duet-theme-turva .duet-drawer-toggle:hover{color:#444445}.duet-drawer-toggle::after{display:none !important}@media (min-width: 62em){.duet-drawer-toggle::after{position:absolute;top:auto;bottom:0;left:0;display:block !important;width:100%;height:3px;content:\"\";background:#0077b3;transition:300ms ease;transform:translateY(3px)}.duet-theme-turva .duet-drawer-toggle::after{background:#c60c30}}.duet-drawer-toggle[aria-expanded=true],.duet-drawer-toggle[aria-expanded=true]:hover{color:#004d80;border-bottom:1px solid #f5f8fa;border-radius:0}.duet-theme-turva .duet-drawer-toggle[aria-expanded=true],.duet-theme-turva .duet-drawer-toggle[aria-expanded=true]:hover{color:#444445;border-color:#f5f5f7}@media (min-width: 62em){.duet-drawer-toggle[aria-expanded=true],.duet-drawer-toggle[aria-expanded=true]:hover{border:0}.duet-drawer-toggle[aria-expanded=true]::after,.duet-drawer-toggle[aria-expanded=true]:hover::after{left:0;width:100%;transform:translateY(0)}}.duet-drawer-icon{position:relative;display:inline-flex;min-width:12px;margin-right:12px;font-size:0;line-height:normal;vertical-align:baseline}@media (min-width: 62em){.duet-drawer-icon{margin-right:8px}}.duet-drawer-label{line-height:1}.duet-drawer-caret{position:absolute;top:50%;right:20px;display:flex;width:10px;height:10px;margin-left:8px;line-height:normal;pointer-events:none;transition:300ms ease;transform:translateY(-50%);transform-origin:50% 50%}@media (min-width: 62em){.duet-drawer-caret{right:16px;width:7px;height:7px}}.duet-drawer-caret duet-icon{width:10px}.duet-drawer-toggle[aria-expanded=true] .duet-drawer-caret{transform:translateY(-50%) rotate(180deg)}.duet-drawer-badge{position:absolute;top:0;right:0;display:inline-block;width:6px;height:6px;background:#f7b228;border-radius:50%;box-shadow:0 0 0 1px #c18b1f}.duet-theme-turva .duet-drawer-badge{background:#faa40f}.duet-drawer-content{display:none;background-color:#f5f8fa;border-bottom:1px solid #e1e3e6}.duet-drawer-content:focus{outline:0}.duet-theme-turva .duet-drawer-content{background-color:#f5f5f7;border-color:#e1e3e6}@media (min-width: 62em){.duet-drawer-content{position:absolute;top:100%;z-index:600;display:block;width:450px;max-height:420px;padding-left:0;overflow-y:auto;visibility:hidden;background-color:white;border:1px solid #e1e3e6;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);opacity:0;transition:300ms ease;transform:scale(0.95) translateZ(0) translateY(-10px);transform-origin:50% 0;scrollbar-width:none}.duet-drawer-content::-webkit-scrollbar{display:none}.duet-theme-turva .duet-drawer-content{background-color:white}.duet-drawer-content.duet-drawer-left{right:0}.duet-drawer-content.duet-drawer-right{left:0}}.duet-drawer-content.duet-drawer-open{display:block}@media (min-width: 62em){.duet-drawer-content.duet-drawer-open{visibility:visible;opacity:1;transform:scale(1) translateZ(0) translateY(0)}}";
80
87
 
81
88
  const ESC_KEY = 27;
82
- const DuetNotificationDrawer = class {
89
+ let DuetNotificationDrawer = class {
83
90
  constructor(hostRef) {
84
91
  index.registerInstance(this, hostRef);
85
92
  /**
@@ -101,8 +108,8 @@ const DuetNotificationDrawer = class {
101
108
  */
102
109
  this.language = languageUtils.getLanguage();
103
110
  /**
104
- * Property to change accessibleLabelNotifications defaults on the component.
105
- * normally you would handle these strings on an application level and override @accessibleLabelNotifications when needed
111
+ * Defaults for accessibleLabelNotifications
112
+ * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
106
113
  */
107
114
  this.accessibleLabelNotificationsDefaults = {
108
115
  en: "No notifications",
@@ -111,8 +118,9 @@ const DuetNotificationDrawer = class {
111
118
  };
112
119
  /**
113
120
  * Adds accessible label for tooltip that is shown for notifications
121
+ * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
114
122
  */
115
- this.accessibleLabelNotifications = languageUtils.getLocaleString(this.accessibleLabelNotificationsDefaults, this.language);
123
+ this.accessibleLabelNotifications = languageUtils.getLocaleString(this.accessibleLabelNotificationsDefaults);
116
124
  /**
117
125
  * Show a badge that indicates something has changed.
118
126
  */
@@ -1,17 +1,21 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const createId = require('./create-id-d0d6cd15.js');
7
- const themeableComponent = require('./themeable-component-c462e6fd.js');
8
- const keyboardUtils = require('./keyboard-utils-a0b0a23c.js');
9
- const languageUtils = require('./language-utils-0f4f60f1.js');
10
-
11
- var actionSubtract={"title":"action-subtract","tags":"action subtract minus remove delete cancel","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.75 12.788a.75.75 0 0 1 0-1.5h22.5a.75.75 0 0 1 0 1.5z\"/></svg>"};
8
+ const index = require('./index-113c2add.js');
9
+ const createId = require('./create-id-c3b984b1.js');
10
+ const keyboardUtils = require('./keyboard-utils-b4e3d1d3.js');
11
+ const languageUtils = require('./language-utils-48b8860b.js');
12
+ const themeableComponent = require('./themeable-component-0c1be552.js');
13
+ require('./string-utils-267e3dbb.js');
12
14
 
13
15
  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>"};
14
16
 
17
+ var actionSubtract={"title":"action-subtract","tags":"action subtract minus remove delete cancel","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.75 12.788a.75.75 0 0 1 0-1.5h22.5a.75.75 0 0 1 0 1.5z\"/></svg>"};
18
+
15
19
  const parseLocaleFloat = (str, locale) => {
16
20
  // remove spaces and non-numeric characters
17
21
  // "12 345,67€" -> "12345,67"
@@ -38,7 +42,7 @@ const clamp = (val, min, max) => Math.min(Math.max(val, min), max);
38
42
 
39
43
  const duetNumberInputCss = "*.sc-duet-number-input,*.sc-duet-number-input::after,*.sc-duet-number-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-number-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;line-height:1.25;text-align:left;vertical-align:bottom}.sc-duet-number-input-h:last-child,.sc-duet-number-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-number-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-number-input-h{width:100% !important}.duet-m-0.sc-duet-number-input-h{margin:0 !important}.duet-number-container.sc-duet-number-input{position:relative;width:100%}.duet-number-buttons.sc-duet-number-input{-webkit-user-select:none;user-select:none;position:absolute;top:1px;right:1px;z-index:200;width:96px;height:calc(100% - 2px)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input{position:relative;display:inline-flex;align-items:center;justify-content:center;width:50%;height:100%;text-align:center;cursor:pointer;background:transparent;-webkit-appearance:none;appearance:none}.duet-number-buttons.sc-duet-number-input .duet-number-button[aria-disabled=true].sc-duet-number-input,.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:disabled{pointer-events:none}.duet-number-buttons.sc-duet-number-input .duet-number-button[aria-disabled=true].sc-duet-number-input duet-icon.sc-duet-number-input,.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:disabled duet-icon.sc-duet-number-input{opacity:0.4}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:active duet-icon.sc-duet-number-input{transform:translateY(1px)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{outline:0}.user-is-tabbing.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{z-index:2;box-shadow:0 0 0 2px #0077b3}.duet-theme-turva .user-is-tabbing.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:focus{box-shadow:0 0 0 2px #171c3a}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type{border-left:1px solid #cfd2d4}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type::before{position:absolute;top:0;left:-6px;width:6px;height:100%;content:\"\";background:linear-gradient(to left, rgba(207, 210, 212, 0.2) 0%, rgba(207, 210, 212, 0.2) 1px, rgba(207, 210, 212, 0.1) 1px, rgba(207, 210, 212, 0) 100%)}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type{border-top-right-radius:4px;border-bottom-right-radius:4px}.duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type::before{position:absolute;top:20%;left:0;width:1px;height:60%;content:\"\";background:#e1e3e6}.duet-theme-turva.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:first-of-type::before{background:linear-gradient(to left, rgba(207, 207, 209, 0.2) 0%, rgba(207, 207, 209, 0.2) 1px, rgba(207, 207, 209, 0.1) 1px, rgba(207, 207, 209, 0) 100%)}.duet-theme-turva.sc-duet-number-input-h .duet-number-buttons.sc-duet-number-input .duet-number-button.sc-duet-number-input:last-of-type::before{background:#e4e4e6}";
40
44
 
41
- const DuetNumberInput = class {
45
+ let DuetNumberInput = class {
42
46
  constructor(hostRef) {
43
47
  index.registerInstance(this, hostRef);
44
48
  this.duetChange = index.createEvent(this, "duetChange", 3);
@@ -49,6 +53,8 @@ const DuetNumberInput = class {
49
53
  /**
50
54
  * The currently active language. This setting changes the accessible labels to match the
51
55
  * chosen language.
56
+ * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing
57
+ * @default "fi"
52
58
  */
53
59
  this.language = languageUtils.getLanguage();
54
60
  /**
@@ -60,34 +66,52 @@ const DuetNumberInput = class {
60
66
  */
61
67
  this.unit = languageUtils.getLocale(this.language).money;
62
68
  /**
63
- * Format of message used to announce current amount when switching between amounts.
64
- * The string {current} is replaced with the current amount.
69
+ * Defaults for accessibleLive
70
+ * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
65
71
  */
66
- this.accessibleLive = languageUtils.getLocaleString({
72
+ this.accessibleLiveDefaults = {
67
73
  fi: "{current} euroa valittuna",
68
74
  en: "{current} euros selected",
69
- sv: "{current} valda euro",
70
- }, this.language);
75
+ sv: "{current} euro valt",
76
+ };
77
+ /**
78
+ * Format of message used to announce current amount when switching between amounts.
79
+ * The string {current} is replaced with the current amount.
80
+ * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
81
+ */
82
+ this.accessibleLive = languageUtils.getLocaleString(this.accessibleLiveDefaults, this.language);
71
83
  /**
72
84
  * Disables the aria-live messaging used internally in this component. This could be useful when you want to use custom aria-live messages instead.
73
85
  */
74
86
  this.accessibleLiveEnabled = true;
75
87
  /**
76
- * Accessible label for the add button that is read for screen reader users.
88
+ * Defaults for accessibleAdd
89
+ * @default {fi: "Lisää summaan", en: "Add to the amount", sv: "Lägg till beloppet"}
77
90
  */
78
- this.accessibleAdd = languageUtils.getLocaleString({
91
+ this.accessibleAddDefaults = {
79
92
  fi: "Lisää summaan",
80
93
  en: "Add to the amount",
81
94
  sv: "Lägg till beloppet",
82
- }, this.language);
95
+ };
83
96
  /**
84
- * Accessible label for the subtract button that is read for screen reader users.
97
+ * Accessible label for the add button that is read for screen reader users.
98
+ * @default {fi: "Lisää summaan", en: "Add to the amount", sv: "Lägg till beloppet"}
99
+ */
100
+ this.accessibleAdd = languageUtils.getLocaleString(this.accessibleAddDefaults, this.language);
101
+ /**
102
+ * Defaults for accessibleSubtract
103
+ * @default {fi: "Vähennä summasta", en: "Subtract from the amount", sv: "Dra från beloppet"}
85
104
  */
86
- this.accessibleSubtract = languageUtils.getLocaleString({
105
+ this.accessibleSubtractDefaults = {
87
106
  fi: "Vähennä summasta",
88
107
  en: "Subtract from the amount",
89
108
  sv: "Dra från beloppet",
90
- }, this.language);
109
+ };
110
+ /**
111
+ * Accessible label for the subtract button that is read for screen reader users.
112
+ * @default {fi: "Vähennä summasta", en: "Subtract from the amount", sv: "Dra från beloppet"}
113
+ */
114
+ this.accessibleSubtract = languageUtils.getLocaleString(this.accessibleSubtractDefaults, this.language);
91
115
  /**
92
116
  * Theme of the input.
93
117
  */
@@ -105,13 +129,19 @@ const DuetNumberInput = class {
105
129
  */
106
130
  this.min = 0;
107
131
  /**
108
- * Label for the number input.
132
+ * Defaults for Label
133
+ * @default {fi: "Etiketti", en: "Label", sv: "Märka"}
109
134
  */
110
- this.label = languageUtils.getLocaleString({
111
- fi: "Etiketti",
135
+ this.labelDefaults = {
136
+ fi: "Nimilappu",
112
137
  en: "Label",
113
- sv: "Märka",
114
- }, this.language);
138
+ sv: "Etikett",
139
+ };
140
+ /**
141
+ * Label for the number input.
142
+ * @default {fi: "Etiketti", en: "Label", sv: "Märka"}
143
+ */
144
+ this.label = languageUtils.getLocaleString(this.labelDefaults, this.language);
115
145
  /**
116
146
  * Visually hide the label, but still show it to screen readers.
117
147
  */
@@ -1,15 +1,18 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
1
4
  'use strict';
2
5
 
3
6
  Object.defineProperty(exports, '__esModule', { value: true });
4
7
 
5
- const index = require('./index-69f4451b.js');
6
- const createId = require('./create-id-d0d6cd15.js');
7
- const themeableComponent = require('./themeable-component-c462e6fd.js');
8
- const watchOptions = require('./watch-options-edeeafd0.js');
8
+ const index = require('./index-113c2add.js');
9
+ const createId = require('./create-id-c3b984b1.js');
10
+ const themeableComponent = require('./themeable-component-0c1be552.js');
11
+ const watchOptions = require('./watch-options-3877c082.js');
9
12
 
10
13
  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}";
11
14
 
12
- const DuetRadio = class {
15
+ let DuetRadio = class {
13
16
  constructor(hostRef) {
14
17
  index.registerInstance(this, hostRef);
15
18
  this.duetChange = index.createEvent(this, "duetChange", 7);
@@ -115,7 +118,7 @@ DuetRadio.style = duetRadioCss;
115
118
 
116
119
  const duetRadioGroupCss = "*.sc-duet-radio-group,*.sc-duet-radio-group::after,*.sc-duet-radio-group::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-radio-group-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%}.horizontal.sc-duet-radio-group-h .duet-radio-group.sc-duet-radio-group{display:block}@media (min-width: 48em){.horizontal.sc-duet-radio-group-h .duet-radio-group.sc-duet-radio-group{display:flex}}.horizontal.sc-duet-radio-group-h .duet-radio-group.duet-no-stacking.sc-duet-radio-group{display:flex}.deut-radio-group.sc-duet-radio-group{width:100%}";
117
120
 
118
- const DuetRadioGroup = class {
121
+ let DuetRadioGroup = class {
119
122
  constructor(hostRef) {
120
123
  index.registerInstance(this, hostRef);
121
124
  /**