@warp-ds/elements 2.10.0-next.9 → 2.10.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. package/dist/.storybook/utilities.js +4 -4
  2. package/dist/api.js.map +2 -2
  3. package/dist/custom-elements.json +1211 -542
  4. package/dist/docs/affix/affix.md +111 -2
  5. package/dist/docs/affix/api.md +2 -2
  6. package/dist/docs/affix/styling.md +107 -0
  7. package/dist/docs/alert/alert.md +5 -5
  8. package/dist/docs/alert/api.md +4 -4
  9. package/dist/docs/attention/api.md +50 -2
  10. package/dist/docs/attention/attention.md +53 -3
  11. package/dist/docs/badge/api.md +50 -4
  12. package/dist/docs/badge/badge.md +50 -4
  13. package/dist/docs/box/api.md +2 -2
  14. package/dist/docs/box/box.md +4 -2
  15. package/dist/docs/breadcrumb-item/api.md +27 -0
  16. package/dist/docs/breadcrumb-item/breadcrumb-item.md +36 -0
  17. package/dist/docs/breadcrumbs/accessibility.md +8 -18
  18. package/dist/docs/breadcrumbs/breadcrumbs.md +123 -34
  19. package/dist/docs/breadcrumbs/examples.md +8 -8
  20. package/dist/docs/breadcrumbs/styling.md +96 -0
  21. package/dist/docs/breadcrumbs/usage.md +8 -8
  22. package/dist/docs/button/api.md +32 -24
  23. package/dist/docs/button/button.md +35 -24
  24. package/dist/docs/card/api.md +8 -0
  25. package/dist/docs/card/card.md +10 -0
  26. package/dist/docs/checkbox/api.md +52 -13
  27. package/dist/docs/checkbox/checkbox.md +231 -14
  28. package/dist/docs/checkbox/styling.md +173 -0
  29. package/dist/docs/checkbox-group/api.md +30 -6
  30. package/dist/docs/checkbox-group/checkbox-group.md +66 -36
  31. package/dist/docs/checkbox-group/styling.md +31 -29
  32. package/dist/docs/combobox/api.md +20 -12
  33. package/dist/docs/combobox/combobox.md +22 -12
  34. package/dist/docs/datepicker/api.md +22 -14
  35. package/dist/docs/datepicker/datepicker.md +24 -16
  36. package/dist/docs/expandable/api.md +6 -6
  37. package/dist/docs/expandable/expandable.md +8 -6
  38. package/dist/docs/icon/api.md +4 -4
  39. package/dist/docs/icon/icon.md +5 -5
  40. package/dist/docs/index.md +35 -32
  41. package/dist/docs/link/api.md +10 -10
  42. package/dist/docs/link/link.md +13 -11
  43. package/dist/docs/modal/api.md +20 -2
  44. package/dist/docs/modal/modal.md +101 -10
  45. package/dist/docs/modal/styling.md +75 -0
  46. package/dist/docs/modal/usage.md +4 -8
  47. package/dist/docs/modal-footer/modal-footer.md +2 -0
  48. package/dist/docs/modal-header/modal-header.md +2 -0
  49. package/dist/docs/page-indicator/page-indicator.md +2 -0
  50. package/dist/docs/pagination/api.md +4 -4
  51. package/dist/docs/pagination/pagination.md +6 -4
  52. package/dist/docs/pill/api.md +8 -8
  53. package/dist/docs/pill/pill.md +10 -8
  54. package/dist/docs/radio/radio.md +5 -1
  55. package/dist/docs/radio-group/api.md +4 -4
  56. package/dist/docs/radio-group/radio-group.md +186 -69
  57. package/dist/docs/radio-group/styling.md +179 -64
  58. package/dist/docs/select/api.md +10 -10
  59. package/dist/docs/select/select.md +103 -10
  60. package/dist/docs/select/styling.md +91 -0
  61. package/dist/docs/slider/api.md +38 -22
  62. package/dist/docs/slider/slider.md +40 -22
  63. package/dist/docs/slider-thumb/api.md +28 -12
  64. package/dist/docs/slider-thumb/slider-thumb.md +28 -12
  65. package/dist/docs/snackbar/accessibility.md +20 -0
  66. package/dist/docs/snackbar/api.md +30 -0
  67. package/dist/docs/snackbar/examples.md +191 -0
  68. package/dist/docs/snackbar/snackbar.md +387 -0
  69. package/dist/docs/snackbar/styling.md +72 -0
  70. package/dist/docs/snackbar/usage.md +60 -0
  71. package/dist/docs/snackbar-item/api.md +41 -0
  72. package/dist/docs/snackbar-item/snackbar-item.md +51 -0
  73. package/dist/docs/step/api.md +16 -0
  74. package/dist/docs/step/step.md +19 -1
  75. package/dist/docs/step-indicator/step-indicator.md +2 -0
  76. package/dist/docs/switch/api.md +8 -0
  77. package/dist/docs/switch/switch.md +10 -0
  78. package/dist/docs/tab/tab.md +2 -0
  79. package/dist/docs/tab-panel/tab-panel.md +3 -0
  80. package/dist/docs/tabs/api.md +3 -3
  81. package/dist/docs/tabs/tabs.md +5 -3
  82. package/dist/docs/textarea/api.md +54 -14
  83. package/dist/docs/textarea/styling.md +91 -0
  84. package/dist/docs/textarea/textarea.md +146 -19
  85. package/dist/docs/textfield/api.md +74 -34
  86. package/dist/docs/textfield/styling.md +95 -0
  87. package/dist/docs/textfield/textfield.md +171 -34
  88. package/dist/entrypoint-react.d.ts +38 -0
  89. package/dist/entrypoint-react.js +39 -0
  90. package/dist/index.d.ts +1007 -154
  91. package/dist/packages/affix/affix-styles.d.ts +8 -0
  92. package/dist/packages/affix/affix-styles.js +108 -0
  93. package/dist/packages/affix/affix.d.ts +12 -14
  94. package/dist/packages/affix/affix.hydration.test.d.ts +1 -1
  95. package/dist/packages/affix/affix.hydration.test.js +15 -15
  96. package/dist/packages/affix/affix.js +451 -320
  97. package/dist/packages/affix/affix.js.map +4 -4
  98. package/dist/packages/affix/affix.react.stories.d.ts +3 -3
  99. package/dist/packages/affix/affix.react.stories.js +3 -3
  100. package/dist/packages/affix/affix.react.test.js +5 -3
  101. package/dist/packages/affix/affix.stories.d.ts +3 -3
  102. package/dist/packages/affix/affix.stories.js +10 -10
  103. package/dist/packages/affix/affix.test.d.ts +1 -1
  104. package/dist/packages/affix/affix.test.js +10 -10
  105. package/dist/packages/affix/react.d.ts +8 -3
  106. package/dist/packages/affix/react.js +11 -6
  107. package/dist/packages/affix/styles.js +2 -2
  108. package/dist/packages/alert/alert.d.ts +9 -6
  109. package/dist/packages/alert/alert.hydration.test.d.ts +1 -1
  110. package/dist/packages/alert/alert.hydration.test.js +21 -21
  111. package/dist/packages/alert/alert.js +349 -324
  112. package/dist/packages/alert/alert.js.map +3 -3
  113. package/dist/packages/alert/alert.react.stories.d.ts +2 -2
  114. package/dist/packages/alert/alert.react.stories.js +13 -13
  115. package/dist/packages/alert/alert.stories.d.ts +4 -4
  116. package/dist/packages/alert/alert.stories.js +29 -27
  117. package/dist/packages/alert/alert.test.d.ts +1 -1
  118. package/dist/packages/alert/alert.test.js +34 -21
  119. package/dist/packages/alert/react.d.ts +8 -1
  120. package/dist/packages/alert/react.js +11 -4
  121. package/dist/packages/alert/styles.js +2 -2
  122. package/dist/packages/attention/attention.d.ts +14 -7
  123. package/dist/packages/attention/attention.hydration.test.d.ts +1 -1
  124. package/dist/packages/attention/attention.hydration.test.js +29 -29
  125. package/dist/packages/attention/attention.js +1744 -1681
  126. package/dist/packages/attention/attention.js.map +4 -4
  127. package/dist/packages/attention/attention.react.stories.d.ts +3 -3
  128. package/dist/packages/attention/attention.react.stories.js +13 -13
  129. package/dist/packages/attention/attention.react.test.js +11 -7
  130. package/dist/packages/attention/attention.stories.d.ts +4 -4
  131. package/dist/packages/attention/attention.stories.js +126 -117
  132. package/dist/packages/attention/attention.test.d.ts +1 -1
  133. package/dist/packages/attention/attention.test.js +18 -10
  134. package/dist/packages/attention/layout-styles.js +900 -900
  135. package/dist/packages/attention/react.d.ts +16 -6
  136. package/dist/packages/attention/react.js +22 -11
  137. package/dist/packages/attention/styles.js +2 -2
  138. package/dist/packages/badge/badge.d.ts +8 -3
  139. package/dist/packages/badge/badge.hydration.test.d.ts +1 -1
  140. package/dist/packages/badge/badge.hydration.test.js +25 -25
  141. package/dist/packages/badge/badge.js +281 -281
  142. package/dist/packages/badge/badge.js.map +3 -3
  143. package/dist/packages/badge/badge.react.stories.d.ts +3 -3
  144. package/dist/packages/badge/badge.react.stories.js +17 -17
  145. package/dist/packages/badge/badge.stories.d.ts +3 -3
  146. package/dist/packages/badge/badge.stories.js +22 -20
  147. package/dist/packages/badge/badge.test.d.ts +1 -1
  148. package/dist/packages/badge/badge.test.js +13 -11
  149. package/dist/packages/badge/react.d.ts +6 -1
  150. package/dist/packages/badge/react.js +9 -4
  151. package/dist/packages/badge/styles.js +2 -2
  152. package/dist/packages/box/box.d.ts +7 -2
  153. package/dist/packages/box/box.hydration.test.d.ts +1 -1
  154. package/dist/packages/box/box.hydration.test.js +14 -14
  155. package/dist/packages/box/box.js +288 -288
  156. package/dist/packages/box/box.js.map +3 -3
  157. package/dist/packages/box/box.react.stories.d.ts +4 -4
  158. package/dist/packages/box/box.react.stories.js +8 -8
  159. package/dist/packages/box/box.stories.d.ts +3 -3
  160. package/dist/packages/box/box.stories.js +25 -19
  161. package/dist/packages/box/box.test.d.ts +1 -1
  162. package/dist/packages/box/box.test.js +6 -6
  163. package/dist/packages/box/react.d.ts +6 -1
  164. package/dist/packages/box/react.js +9 -4
  165. package/dist/packages/box/slot.test.d.ts +1 -1
  166. package/dist/packages/box/slot.test.js +6 -6
  167. package/dist/packages/box/styles.js +2 -2
  168. package/dist/packages/breadcrumb-item/breadcrumb-item.d.ts +34 -0
  169. package/dist/packages/breadcrumb-item/breadcrumb-item.js +2529 -0
  170. package/dist/packages/breadcrumb-item/breadcrumb-item.js.map +7 -0
  171. package/dist/packages/breadcrumb-item/react.d.ts +8 -0
  172. package/dist/packages/breadcrumb-item/react.js +17 -0
  173. package/dist/packages/breadcrumb-item/styles.d.ts +4 -0
  174. package/dist/packages/breadcrumb-item/styles.js +81 -0
  175. package/dist/packages/breadcrumbs/breadcrumbs.d.ts +11 -4
  176. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.d.ts +1 -1
  177. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +55 -49
  178. package/dist/packages/breadcrumbs/breadcrumbs.js +288 -284
  179. package/dist/packages/breadcrumbs/breadcrumbs.js.map +4 -4
  180. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.d.ts +4 -4
  181. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.js +17 -16
  182. package/dist/packages/breadcrumbs/breadcrumbs.stories.d.ts +7 -8
  183. package/dist/packages/breadcrumbs/breadcrumbs.stories.js +30 -26
  184. package/dist/packages/breadcrumbs/breadcrumbs.test.d.ts +1 -1
  185. package/dist/packages/breadcrumbs/breadcrumbs.test.js +19 -17
  186. package/dist/packages/breadcrumbs/react.d.ts +8 -1
  187. package/dist/packages/breadcrumbs/react.js +11 -4
  188. package/dist/packages/breadcrumbs/styles.js +2 -2
  189. package/dist/packages/button/button.d.ts +22 -16
  190. package/dist/packages/button/button.hydration.test.d.ts +1 -1
  191. package/dist/packages/button/button.hydration.test.js +19 -19
  192. package/dist/packages/button/button.js +758 -711
  193. package/dist/packages/button/button.js.map +4 -4
  194. package/dist/packages/button/button.react.stories.d.ts +5 -5
  195. package/dist/packages/button/button.react.stories.js +30 -30
  196. package/dist/packages/button/button.react.test.js +13 -13
  197. package/dist/packages/button/button.stories.d.ts +4 -4
  198. package/dist/packages/button/button.stories.js +276 -167
  199. package/dist/packages/button/button.test.d.ts +1 -1
  200. package/dist/packages/button/button.test.js +36 -35
  201. package/dist/packages/button/react.d.ts +10 -3
  202. package/dist/packages/button/react.js +14 -7
  203. package/dist/packages/button/styles.js +373 -331
  204. package/dist/packages/card/card.d.ts +7 -2
  205. package/dist/packages/card/card.hydration.test.d.ts +1 -1
  206. package/dist/packages/card/card.hydration.test.js +14 -14
  207. package/dist/packages/card/card.js +310 -295
  208. package/dist/packages/card/card.js.map +4 -4
  209. package/dist/packages/card/card.react.stories.d.ts +4 -4
  210. package/dist/packages/card/card.react.stories.js +11 -11
  211. package/dist/packages/card/card.stories.d.ts +3 -3
  212. package/dist/packages/card/card.stories.js +36 -24
  213. package/dist/packages/card/card.test.d.ts +1 -1
  214. package/dist/packages/card/card.test.js +6 -6
  215. package/dist/packages/card/react.d.ts +6 -1
  216. package/dist/packages/card/react.js +9 -4
  217. package/dist/packages/card/styles.js +2 -2
  218. package/dist/packages/checkbox/checkbox.a11y.test.d.ts +1 -1
  219. package/dist/packages/checkbox/checkbox.a11y.test.js +47 -33
  220. package/dist/packages/checkbox/checkbox.d.ts +10 -4
  221. package/dist/packages/checkbox/checkbox.hydration.test.d.ts +1 -1
  222. package/dist/packages/checkbox/checkbox.hydration.test.js +21 -21
  223. package/dist/packages/checkbox/checkbox.js +481 -430
  224. package/dist/packages/checkbox/checkbox.js.map +3 -3
  225. package/dist/packages/checkbox/checkbox.react.stories.d.ts +4 -4
  226. package/dist/packages/checkbox/checkbox.react.stories.js +3 -3
  227. package/dist/packages/checkbox/checkbox.stories.d.ts +4 -4
  228. package/dist/packages/checkbox/checkbox.stories.js +99 -91
  229. package/dist/packages/checkbox/checkbox.test.d.ts +1 -1
  230. package/dist/packages/checkbox/checkbox.test.js +64 -64
  231. package/dist/packages/checkbox/react.d.ts +12 -3
  232. package/dist/packages/checkbox/react.js +13 -6
  233. package/dist/packages/checkbox/styles.js +183 -132
  234. package/dist/packages/checkbox-group/checkbox-group.a11y.test.d.ts +2 -2
  235. package/dist/packages/checkbox-group/checkbox-group.a11y.test.js +83 -73
  236. package/dist/packages/checkbox-group/checkbox-group.d.ts +13 -6
  237. package/dist/packages/checkbox-group/checkbox-group.hydration.test.d.ts +2 -2
  238. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +36 -19
  239. package/dist/packages/checkbox-group/checkbox-group.js +62 -57
  240. package/dist/packages/checkbox-group/checkbox-group.js.map +3 -3
  241. package/dist/packages/checkbox-group/checkbox-group.react.test.js +4 -4
  242. package/dist/packages/checkbox-group/checkbox-group.test.d.ts +2 -2
  243. package/dist/packages/checkbox-group/checkbox-group.test.js +183 -90
  244. package/dist/packages/checkbox-group/react.d.ts +10 -3
  245. package/dist/packages/checkbox-group/react.js +13 -6
  246. package/dist/packages/combobox/combobox.a11y.test.d.ts +2 -2
  247. package/dist/packages/combobox/combobox.a11y.test.js +72 -49
  248. package/dist/packages/combobox/combobox.d.ts +8 -3
  249. package/dist/packages/combobox/combobox.hydration.test.d.ts +1 -1
  250. package/dist/packages/combobox/combobox.hydration.test.js +45 -45
  251. package/dist/packages/combobox/combobox.js +337 -338
  252. package/dist/packages/combobox/combobox.js.map +4 -4
  253. package/dist/packages/combobox/combobox.react.stories.d.ts +45 -13
  254. package/dist/packages/combobox/combobox.react.stories.js +29 -29
  255. package/dist/packages/combobox/combobox.react.test.js +8 -8
  256. package/dist/packages/combobox/combobox.stories.d.ts +4 -4
  257. package/dist/packages/combobox/combobox.stories.js +100 -94
  258. package/dist/packages/combobox/combobox.test.d.ts +2 -2
  259. package/dist/packages/combobox/combobox.test.js +249 -133
  260. package/dist/packages/combobox/react.d.ts +28 -7
  261. package/dist/packages/combobox/react.js +23 -14
  262. package/dist/packages/combobox/styles.js +2 -3
  263. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -2
  264. package/dist/packages/datepicker/DatePicker.test.js +49 -42
  265. package/dist/packages/datepicker/datepicker.d.ts +15 -12
  266. package/dist/packages/datepicker/datepicker.hydration.test.d.ts +1 -1
  267. package/dist/packages/datepicker/datepicker.hydration.test.js +21 -21
  268. package/dist/packages/datepicker/datepicker.js +673 -632
  269. package/dist/packages/datepicker/datepicker.js.map +4 -4
  270. package/dist/packages/datepicker/datepicker.react.stories.d.ts +17 -17
  271. package/dist/packages/datepicker/datepicker.react.stories.js +9 -9
  272. package/dist/packages/datepicker/datepicker.react.test.js +6 -6
  273. package/dist/packages/datepicker/datepicker.stories.d.ts +4 -4
  274. package/dist/packages/datepicker/datepicker.stories.js +32 -32
  275. package/dist/packages/datepicker/datepicker.test.d.ts +2 -2
  276. package/dist/packages/datepicker/datepicker.test.js +77 -79
  277. package/dist/packages/datepicker/react.d.ts +15 -9
  278. package/dist/packages/datepicker/react.js +21 -14
  279. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +13 -12
  280. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +58 -55
  281. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +60 -57
  282. package/dist/packages/datepicker/styles/w-datepicker.styles.js +87 -87
  283. package/dist/packages/datepicker/utils.d.ts +3 -0
  284. package/dist/packages/datepicker/utils.js +40 -1
  285. package/dist/packages/datepicker/utils.test.d.ts +1 -0
  286. package/dist/packages/datepicker/utils.test.js +29 -0
  287. package/dist/packages/expandable/expandable.d.ts +14 -7
  288. package/dist/packages/expandable/expandable.hydration.test.d.ts +1 -1
  289. package/dist/packages/expandable/expandable.hydration.test.js +21 -21
  290. package/dist/packages/expandable/expandable.js +359 -332
  291. package/dist/packages/expandable/expandable.js.map +4 -4
  292. package/dist/packages/expandable/expandable.react.stories.d.ts +3 -3
  293. package/dist/packages/expandable/expandable.react.stories.js +7 -7
  294. package/dist/packages/expandable/expandable.react.test.js +15 -7
  295. package/dist/packages/expandable/expandable.stories.d.ts +5 -5
  296. package/dist/packages/expandable/expandable.stories.js +51 -45
  297. package/dist/packages/expandable/expandable.test.d.ts +1 -1
  298. package/dist/packages/expandable/expandable.test.js +19 -17
  299. package/dist/packages/expandable/react.d.ts +7 -2
  300. package/dist/packages/expandable/react.js +14 -9
  301. package/dist/packages/expandable/styles.js +2 -2
  302. package/dist/packages/global.d.ts +1 -0
  303. package/dist/packages/global.js +5 -0
  304. package/dist/packages/i18n.d.ts +1 -1
  305. package/dist/packages/i18n.js +37 -29
  306. package/dist/packages/icon/icon.d.ts +10 -2
  307. package/dist/packages/icon/icon.hydration.test.d.ts +1 -1
  308. package/dist/packages/icon/icon.hydration.test.js +25 -25
  309. package/dist/packages/icon/icon.js +31 -26
  310. package/dist/packages/icon/icon.js.map +2 -2
  311. package/dist/packages/icon/icon.react.stories.d.ts +3 -2
  312. package/dist/packages/icon/icon.react.stories.js +284 -283
  313. package/dist/packages/icon/icon.stories.d.ts +7 -30
  314. package/dist/packages/icon/icon.stories.js +307 -297
  315. package/dist/packages/icon/icon.test.d.ts +1 -1
  316. package/dist/packages/icon/icon.test.js +36 -28
  317. package/dist/packages/icon/react.d.ts +4 -1
  318. package/dist/packages/icon/react.js +7 -4
  319. package/dist/packages/icon/style.js +24 -25
  320. package/dist/packages/interaction-type-detection.d.ts +22 -0
  321. package/dist/packages/interaction-type-detection.js +38 -0
  322. package/dist/packages/link/link.d.ts +14 -9
  323. package/dist/packages/link/link.hydration.test.d.ts +1 -1
  324. package/dist/packages/link/link.hydration.test.js +27 -27
  325. package/dist/packages/link/link.js +726 -679
  326. package/dist/packages/link/link.js.map +3 -3
  327. package/dist/packages/link/link.react.stories.d.ts +5 -5
  328. package/dist/packages/link/link.react.stories.js +42 -42
  329. package/dist/packages/link/link.react.test.js +5 -3
  330. package/dist/packages/link/link.stories.d.ts +3 -3
  331. package/dist/packages/link/link.stories.js +51 -51
  332. package/dist/packages/link/link.test.d.ts +1 -1
  333. package/dist/packages/link/link.test.js +11 -7
  334. package/dist/packages/link/react.d.ts +8 -3
  335. package/dist/packages/link/react.js +11 -6
  336. package/dist/packages/link/styles.js +63 -58
  337. package/dist/packages/modal/index.d.ts +7 -7
  338. package/dist/packages/modal/index.js +7 -7
  339. package/dist/packages/modal/modal.d.ts +26 -4
  340. package/dist/packages/modal/modal.hydration.test.d.ts +1 -1
  341. package/dist/packages/modal/modal.hydration.test.js +12 -12
  342. package/dist/packages/modal/modal.js +456 -409
  343. package/dist/packages/modal/modal.js.map +4 -4
  344. package/dist/packages/modal/modal.react.stories.d.ts +7 -7
  345. package/dist/packages/modal/modal.react.stories.js +15 -6
  346. package/dist/packages/modal/modal.react.test.js +5 -5
  347. package/dist/packages/modal/modal.stories.d.ts +9 -8
  348. package/dist/packages/modal/modal.stories.js +266 -248
  349. package/dist/packages/modal/react.d.ts +40 -8
  350. package/dist/packages/modal/react.js +45 -13
  351. package/dist/packages/modal/styles.d.ts +1 -0
  352. package/dist/packages/modal/styles.js +171 -0
  353. package/dist/packages/modal/util.js +3 -1
  354. package/dist/packages/modal-footer/modal-footer.d.ts +13 -2
  355. package/dist/packages/modal-footer/modal-footer.js +299 -296
  356. package/dist/packages/modal-footer/modal-footer.js.map +4 -4
  357. package/dist/packages/modal-footer/react.d.ts +6 -1
  358. package/dist/packages/modal-footer/react.js +9 -4
  359. package/dist/packages/modal-footer/styles.d.ts +1 -0
  360. package/dist/packages/modal-footer/styles.js +22 -0
  361. package/dist/packages/modal-header/modal-header.d.ts +21 -7
  362. package/dist/packages/modal-header/modal-header.js +451 -422
  363. package/dist/packages/modal-header/modal-header.js.map +4 -4
  364. package/dist/packages/modal-header/modal-header.react.test.js +5 -3
  365. package/dist/packages/modal-header/react.d.ts +9 -4
  366. package/dist/packages/modal-header/react.js +13 -8
  367. package/dist/packages/modal-header/styles.d.ts +1 -0
  368. package/dist/packages/modal-header/styles.js +96 -0
  369. package/dist/packages/page-indicator/page-indicator.d.ts +8 -5
  370. package/dist/packages/page-indicator/page-indicator.hydration.test.d.ts +1 -1
  371. package/dist/packages/page-indicator/page-indicator.hydration.test.js +22 -22
  372. package/dist/packages/page-indicator/page-indicator.js +29 -29
  373. package/dist/packages/page-indicator/page-indicator.js.map +4 -4
  374. package/dist/packages/page-indicator/page-indicator.react.stories.d.ts +3 -3
  375. package/dist/packages/page-indicator/page-indicator.react.stories.js +11 -11
  376. package/dist/packages/page-indicator/page-indicator.react.test.js +5 -5
  377. package/dist/packages/page-indicator/page-indicator.stories.d.ts +9 -27
  378. package/dist/packages/page-indicator/page-indicator.stories.js +63 -32
  379. package/dist/packages/page-indicator/page-indicator.test.d.ts +1 -1
  380. package/dist/packages/page-indicator/page-indicator.test.js +110 -70
  381. package/dist/packages/page-indicator/react.d.ts +9 -2
  382. package/dist/packages/page-indicator/react.js +14 -7
  383. package/dist/packages/page-indicator/style.js +21 -21
  384. package/dist/packages/pagination/pagination.a11y.test.d.ts +1 -1
  385. package/dist/packages/pagination/pagination.a11y.test.js +59 -25
  386. package/dist/packages/pagination/pagination.d.ts +17 -11
  387. package/dist/packages/pagination/pagination.hydration.test.d.ts +1 -1
  388. package/dist/packages/pagination/pagination.hydration.test.js +19 -19
  389. package/dist/packages/pagination/pagination.js +385 -354
  390. package/dist/packages/pagination/pagination.js.map +4 -4
  391. package/dist/packages/pagination/pagination.react.stories.d.ts +19 -11
  392. package/dist/packages/pagination/pagination.react.stories.js +8 -8
  393. package/dist/packages/pagination/pagination.react.test.js +6 -6
  394. package/dist/packages/pagination/pagination.stories.d.ts +3 -3
  395. package/dist/packages/pagination/pagination.stories.js +18 -18
  396. package/dist/packages/pagination/pagination.test.d.ts +1 -1
  397. package/dist/packages/pagination/pagination.test.js +146 -72
  398. package/dist/packages/pagination/react.d.ts +15 -6
  399. package/dist/packages/pagination/react.js +17 -10
  400. package/dist/packages/pagination/styles.js +2 -2
  401. package/dist/packages/pill/pill.d.ts +13 -6
  402. package/dist/packages/pill/pill.hydration.test.d.ts +1 -1
  403. package/dist/packages/pill/pill.hydration.test.js +14 -14
  404. package/dist/packages/pill/pill.js +337 -314
  405. package/dist/packages/pill/pill.js.map +4 -4
  406. package/dist/packages/pill/pill.react.stories.d.ts +15 -11
  407. package/dist/packages/pill/pill.react.stories.js +7 -3
  408. package/dist/packages/pill/pill.react.test.js +8 -8
  409. package/dist/packages/pill/pill.stories.d.ts +3 -3
  410. package/dist/packages/pill/pill.stories.js +8 -8
  411. package/dist/packages/pill/pill.test.d.ts +1 -1
  412. package/dist/packages/pill/pill.test.js +17 -15
  413. package/dist/packages/pill/react.d.ts +11 -6
  414. package/dist/packages/pill/react.js +23 -14
  415. package/dist/packages/pill/styles.js +2 -2
  416. package/dist/packages/radio/base-element.d.ts +3 -3
  417. package/dist/packages/radio/base-element.js +3 -3
  418. package/dist/packages/radio/custom-error-validator.d.ts +1 -1
  419. package/dist/packages/radio/custom-error-validator.js +3 -3
  420. package/dist/packages/radio/form-associated-element.d.ts +9 -9
  421. package/dist/packages/radio/form-associated-element.js +27 -26
  422. package/dist/packages/radio/host-styles.js +9 -9
  423. package/dist/packages/radio/invalid.d.ts +1 -1
  424. package/dist/packages/radio/invalid.js +1 -1
  425. package/dist/packages/radio/radio-styles.js +199 -160
  426. package/dist/packages/radio/radio.a11y.test.d.ts +2 -2
  427. package/dist/packages/radio/radio.a11y.test.js +60 -58
  428. package/dist/packages/radio/radio.d.ts +10 -4
  429. package/dist/packages/radio/radio.hydration.test.d.ts +1 -1
  430. package/dist/packages/radio/radio.hydration.test.js +23 -14
  431. package/dist/packages/radio/radio.js +491 -452
  432. package/dist/packages/radio/radio.js.map +3 -3
  433. package/dist/packages/radio/radio.react.stories.d.ts +2 -2
  434. package/dist/packages/radio/radio.react.stories.js +3 -3
  435. package/dist/packages/radio/radio.stories.d.ts +4 -4
  436. package/dist/packages/radio/radio.stories.js +152 -136
  437. package/dist/packages/radio/radio.test.d.ts +1 -1
  438. package/dist/packages/radio/radio.test.js +74 -73
  439. package/dist/packages/radio/react.d.ts +8 -1
  440. package/dist/packages/radio/react.js +11 -4
  441. package/dist/packages/radio/required-validator.d.ts +1 -1
  442. package/dist/packages/radio/required-validator.js +12 -7
  443. package/dist/packages/radio/slot.d.ts +1 -1
  444. package/dist/packages/radio/slot.js +11 -8
  445. package/dist/packages/radio/watch.d.ts +1 -1
  446. package/dist/packages/radio/watch.js +3 -1
  447. package/dist/packages/radio-group/radio-group-styles.js +121 -88
  448. package/dist/packages/radio-group/radio-group.a11y.test.d.ts +2 -2
  449. package/dist/packages/radio-group/radio-group.a11y.test.js +81 -79
  450. package/dist/packages/radio-group/radio-group.d.ts +10 -8
  451. package/dist/packages/radio-group/radio-group.hydration.test.d.ts +2 -2
  452. package/dist/packages/radio-group/radio-group.hydration.test.js +29 -18
  453. package/dist/packages/radio-group/radio-group.js +654 -566
  454. package/dist/packages/radio-group/radio-group.js.map +4 -4
  455. package/dist/packages/radio-group/radio-group.react.test.js +4 -4
  456. package/dist/packages/radio-group/radio-group.test.d.ts +2 -2
  457. package/dist/packages/radio-group/radio-group.test.js +304 -230
  458. package/dist/packages/radio-group/react.d.ts +14 -7
  459. package/dist/packages/radio-group/react.js +18 -10
  460. package/dist/packages/select/input-styles.d.ts +11 -0
  461. package/dist/packages/select/input-styles.js +88 -0
  462. package/dist/packages/select/locales/da/messages.mjs +1 -1
  463. package/dist/packages/select/locales/en/messages.mjs +1 -1
  464. package/dist/packages/select/locales/fi/messages.mjs +1 -1
  465. package/dist/packages/select/locales/nb/messages.mjs +1 -1
  466. package/dist/packages/select/locales/sv/messages.mjs +1 -1
  467. package/dist/packages/select/react.d.ts +11 -5
  468. package/dist/packages/select/react.js +16 -11
  469. package/dist/packages/select/select.a11y.test.d.ts +1 -1
  470. package/dist/packages/select/select.a11y.test.js +98 -91
  471. package/dist/packages/select/select.d.ts +18 -13
  472. package/dist/packages/select/select.hydration.test.d.ts +1 -1
  473. package/dist/packages/select/select.hydration.test.js +16 -16
  474. package/dist/packages/select/select.js +432 -336
  475. package/dist/packages/select/select.js.map +4 -4
  476. package/dist/packages/select/select.react.stories.d.ts +10 -10
  477. package/dist/packages/select/select.react.stories.js +19 -14
  478. package/dist/packages/select/select.react.test.js +6 -6
  479. package/dist/packages/select/select.stories.d.ts +3 -3
  480. package/dist/packages/select/select.stories.js +51 -48
  481. package/dist/packages/select/select.test.d.ts +1 -1
  482. package/dist/packages/select/select.test.js +227 -178
  483. package/dist/packages/select/styles.js +2 -2
  484. package/dist/packages/slider/index.d.ts +2 -2
  485. package/dist/packages/slider/index.js +2 -2
  486. package/dist/packages/slider/locales/da/messages.mjs +1 -1
  487. package/dist/packages/slider/locales/en/messages.mjs +1 -1
  488. package/dist/packages/slider/locales/fi/messages.mjs +1 -1
  489. package/dist/packages/slider/locales/nb/messages.mjs +1 -1
  490. package/dist/packages/slider/locales/sv/messages.mjs +1 -1
  491. package/dist/packages/slider/react.d.ts +9 -4
  492. package/dist/packages/slider/react.js +14 -9
  493. package/dist/packages/slider/slider.d.ts +32 -17
  494. package/dist/packages/slider/slider.hydration.test.d.ts +1 -1
  495. package/dist/packages/slider/slider.hydration.test.js +39 -20
  496. package/dist/packages/slider/slider.js +523 -466
  497. package/dist/packages/slider/slider.js.map +4 -4
  498. package/dist/packages/slider/slider.react.stories.d.ts +4 -4
  499. package/dist/packages/slider/slider.react.stories.js +31 -34
  500. package/dist/packages/slider/slider.react.test.js +6 -6
  501. package/dist/packages/slider/slider.stories.d.ts +9 -7
  502. package/dist/packages/slider/slider.stories.js +369 -340
  503. package/dist/packages/slider/slider.test.d.ts +5 -5
  504. package/dist/packages/slider/slider.test.js +476 -336
  505. package/dist/packages/slider/styles/w-slider.styles.js +166 -148
  506. package/dist/packages/slider/styles.js +2 -2
  507. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.d.ts +1 -1
  508. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.js +1 -1
  509. package/dist/packages/slider-thumb/react.d.ts +16 -5
  510. package/dist/packages/slider-thumb/react.js +16 -9
  511. package/dist/packages/slider-thumb/slider-thumb.d.ts +22 -17
  512. package/dist/packages/slider-thumb/slider-thumb.hydration.test.d.ts +1 -1
  513. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +26 -17
  514. package/dist/packages/slider-thumb/slider-thumb.js +549 -552
  515. package/dist/packages/slider-thumb/slider-thumb.js.map +4 -4
  516. package/dist/packages/slider-thumb/slider-thumb.react.test.js +9 -5
  517. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.js +189 -188
  518. package/dist/packages/slider-thumb/styles.d.ts +1 -0
  519. package/dist/packages/slider-thumb/styles.js +2 -0
  520. package/dist/packages/snackbar/locales/da/messages.d.mts +1 -0
  521. package/dist/packages/snackbar/locales/da/messages.mjs +1 -0
  522. package/dist/packages/snackbar/locales/en/messages.d.mts +1 -0
  523. package/dist/packages/snackbar/locales/en/messages.mjs +1 -0
  524. package/dist/packages/snackbar/locales/fi/messages.d.mts +1 -0
  525. package/dist/packages/snackbar/locales/fi/messages.mjs +1 -0
  526. package/dist/packages/snackbar/locales/nb/messages.d.mts +1 -0
  527. package/dist/packages/snackbar/locales/nb/messages.mjs +1 -0
  528. package/dist/packages/snackbar/locales/sv/messages.d.mts +1 -0
  529. package/dist/packages/snackbar/locales/sv/messages.mjs +1 -0
  530. package/dist/packages/snackbar/react.d.ts +41 -0
  531. package/dist/packages/snackbar/react.js +50 -0
  532. package/dist/packages/snackbar/snackbar.d.ts +134 -0
  533. package/dist/packages/snackbar/snackbar.hydration.test.d.ts +1 -0
  534. package/dist/packages/snackbar/snackbar.hydration.test.js +13 -0
  535. package/dist/packages/snackbar/snackbar.js +2665 -0
  536. package/dist/packages/snackbar/snackbar.js.map +7 -0
  537. package/dist/packages/snackbar/snackbar.react.stories.d.ts +12 -0
  538. package/dist/packages/snackbar/snackbar.react.stories.js +160 -0
  539. package/dist/packages/snackbar/snackbar.stories.d.ts +20 -0
  540. package/dist/packages/snackbar/snackbar.stories.js +363 -0
  541. package/dist/packages/snackbar/snackbar.test.d.ts +4 -0
  542. package/dist/packages/snackbar/snackbar.test.js +17 -0
  543. package/dist/packages/snackbar/styles.d.ts +1 -0
  544. package/dist/packages/snackbar/styles.js +35 -0
  545. package/dist/packages/snackbar-item/react.d.ts +12 -0
  546. package/dist/packages/snackbar-item/react.js +23 -0
  547. package/dist/packages/snackbar-item/snackbar-item.d.ts +71 -0
  548. package/dist/packages/snackbar-item/snackbar-item.js +2620 -0
  549. package/dist/packages/snackbar-item/snackbar-item.js.map +7 -0
  550. package/dist/packages/snackbar-item/snackbar-item.react.test.d.ts +1 -0
  551. package/dist/packages/snackbar-item/snackbar-item.react.test.js +5 -0
  552. package/dist/packages/snackbar-item/styles.d.ts +1 -0
  553. package/dist/packages/snackbar-item/styles.js +133 -0
  554. package/dist/packages/step/react.d.ts +6 -1
  555. package/dist/packages/step/react.js +9 -4
  556. package/dist/packages/step/step.d.ts +10 -3
  557. package/dist/packages/step/step.hydration.test.d.ts +1 -1
  558. package/dist/packages/step/step.hydration.test.js +10 -10
  559. package/dist/packages/step/step.js +336 -314
  560. package/dist/packages/step/step.js.map +4 -4
  561. package/dist/packages/step/styles.d.ts +1 -0
  562. package/dist/packages/step/styles.js +2 -0
  563. package/dist/packages/step-indicator/index.d.ts +2 -2
  564. package/dist/packages/step-indicator/index.js +2 -2
  565. package/dist/packages/step-indicator/react.d.ts +7 -2
  566. package/dist/packages/step-indicator/react.js +10 -5
  567. package/dist/packages/step-indicator/step-indicator.a11y.test.d.ts +2 -2
  568. package/dist/packages/step-indicator/step-indicator.a11y.test.js +48 -46
  569. package/dist/packages/step-indicator/step-indicator.d.ts +8 -1
  570. package/dist/packages/step-indicator/step-indicator.hydration.test.d.ts +1 -1
  571. package/dist/packages/step-indicator/step-indicator.hydration.test.js +10 -10
  572. package/dist/packages/step-indicator/step-indicator.js +285 -281
  573. package/dist/packages/step-indicator/step-indicator.js.map +3 -3
  574. package/dist/packages/step-indicator/stepindicator.react.stories.d.ts +2 -2
  575. package/dist/packages/step-indicator/stepindicator.react.stories.js +3 -3
  576. package/dist/packages/step-indicator/stepindicator.stories.d.ts +3 -3
  577. package/dist/packages/step-indicator/stepindicator.stories.js +129 -129
  578. package/dist/packages/step-indicator/styles.js +2 -2
  579. package/dist/packages/styles.js +277 -275
  580. package/dist/packages/switch/react.d.ts +9 -3
  581. package/dist/packages/switch/react.js +11 -6
  582. package/dist/packages/switch/styles.js +2 -2
  583. package/dist/packages/switch/switch.a11y.test.d.ts +1 -1
  584. package/dist/packages/switch/switch.a11y.test.js +46 -38
  585. package/dist/packages/switch/switch.d.ts +10 -3
  586. package/dist/packages/switch/switch.hydration.test.d.ts +1 -1
  587. package/dist/packages/switch/switch.hydration.test.js +23 -23
  588. package/dist/packages/switch/switch.js +304 -304
  589. package/dist/packages/switch/switch.js.map +3 -3
  590. package/dist/packages/switch/switch.react.stories.d.ts +4 -4
  591. package/dist/packages/switch/switch.react.stories.js +2 -2
  592. package/dist/packages/switch/switch.stories.d.ts +2 -2
  593. package/dist/packages/switch/switch.stories.js +42 -37
  594. package/dist/packages/switch/switch.test.d.ts +1 -1
  595. package/dist/packages/switch/switch.test.js +30 -35
  596. package/dist/packages/tab/react.d.ts +12 -7
  597. package/dist/packages/tab/react.js +14 -10
  598. package/dist/packages/tab/styles.d.ts +1 -0
  599. package/dist/packages/tab/styles.js +2 -0
  600. package/dist/packages/tab/tab.d.ts +13 -6
  601. package/dist/packages/tab/tab.hydration.test.d.ts +1 -1
  602. package/dist/packages/tab/tab.hydration.test.js +18 -12
  603. package/dist/packages/tab/tab.js +309 -308
  604. package/dist/packages/tab/tab.js.map +4 -4
  605. package/dist/packages/tab/tab.react.test.js +5 -3
  606. package/dist/packages/tab-panel/react.d.ts +10 -2
  607. package/dist/packages/tab-panel/react.js +18 -5
  608. package/dist/packages/tab-panel/tab-panel.d.ts +6 -3
  609. package/dist/packages/tab-panel/tab-panel.hydration.test.d.ts +1 -1
  610. package/dist/packages/tab-panel/tab-panel.hydration.test.js +13 -10
  611. package/dist/packages/tab-panel/tab-panel.js +293 -291
  612. package/dist/packages/tab-panel/tab-panel.js.map +3 -3
  613. package/dist/packages/tabs/index.d.ts +4 -4
  614. package/dist/packages/tabs/index.js +3 -3
  615. package/dist/packages/tabs/react.d.ts +31 -8
  616. package/dist/packages/tabs/react.js +34 -9
  617. package/dist/packages/tabs/styles.js +2 -2
  618. package/dist/packages/tabs/tabs.a11y.test.d.ts +3 -3
  619. package/dist/packages/tabs/tabs.a11y.test.js +188 -169
  620. package/dist/packages/tabs/tabs.d.ts +9 -6
  621. package/dist/packages/tabs/tabs.hydration.test.d.ts +3 -1
  622. package/dist/packages/tabs/tabs.hydration.test.js +22 -8
  623. package/dist/packages/tabs/tabs.js +293 -286
  624. package/dist/packages/tabs/tabs.js.map +3 -3
  625. package/dist/packages/tabs/tabs.react.stories.d.ts +12 -10
  626. package/dist/packages/tabs/tabs.react.stories.js +28 -28
  627. package/dist/packages/tabs/tabs.stories.d.ts +4 -4
  628. package/dist/packages/tabs/tabs.stories.js +101 -95
  629. package/dist/packages/tabs/tabs.test.d.ts +3 -3
  630. package/dist/packages/tabs/tabs.test.js +136 -122
  631. package/dist/packages/textarea/input-styles.d.ts +11 -0
  632. package/dist/packages/textarea/input-styles.js +88 -0
  633. package/dist/packages/textarea/locales/da/messages.mjs +1 -1
  634. package/dist/packages/textarea/locales/en/messages.mjs +1 -1
  635. package/dist/packages/textarea/locales/fi/messages.mjs +1 -1
  636. package/dist/packages/textarea/locales/nb/messages.mjs +1 -1
  637. package/dist/packages/textarea/locales/sv/messages.mjs +1 -1
  638. package/dist/packages/textarea/react.d.ts +17 -11
  639. package/dist/packages/textarea/react.js +22 -17
  640. package/dist/packages/textarea/styles.js +2 -2
  641. package/dist/packages/textarea/textarea.a11y.test.d.ts +1 -1
  642. package/dist/packages/textarea/textarea.a11y.test.js +90 -58
  643. package/dist/packages/textarea/textarea.d.ts +20 -20
  644. package/dist/packages/textarea/textarea.hydration.test.d.ts +1 -1
  645. package/dist/packages/textarea/textarea.hydration.test.js +19 -19
  646. package/dist/packages/textarea/textarea.js +385 -304
  647. package/dist/packages/textarea/textarea.js.map +4 -4
  648. package/dist/packages/textarea/textarea.react.stories.d.ts +38 -21
  649. package/dist/packages/textarea/textarea.react.stories.js +30 -13
  650. package/dist/packages/textarea/textarea.react.test.js +7 -7
  651. package/dist/packages/textarea/textarea.stories.d.ts +3 -3
  652. package/dist/packages/textarea/textarea.stories.js +44 -42
  653. package/dist/packages/textarea/textarea.test.d.ts +1 -1
  654. package/dist/packages/textarea/textarea.test.js +197 -88
  655. package/dist/packages/textfield/input-styles.d.ts +11 -0
  656. package/dist/packages/textfield/input-styles.js +88 -0
  657. package/dist/packages/textfield/locales/da/messages.d.mts +1 -0
  658. package/dist/packages/textfield/locales/da/messages.mjs +1 -0
  659. package/dist/packages/textfield/locales/en/messages.d.mts +1 -0
  660. package/dist/packages/textfield/locales/en/messages.mjs +1 -0
  661. package/dist/packages/textfield/locales/fi/messages.d.mts +1 -0
  662. package/dist/packages/textfield/locales/fi/messages.mjs +1 -0
  663. package/dist/packages/textfield/locales/nb/messages.d.mts +1 -0
  664. package/dist/packages/textfield/locales/nb/messages.mjs +1 -0
  665. package/dist/packages/textfield/locales/sv/messages.d.mts +1 -0
  666. package/dist/packages/textfield/locales/sv/messages.mjs +1 -0
  667. package/dist/packages/textfield/react.d.ts +17 -11
  668. package/dist/packages/textfield/react.js +22 -17
  669. package/dist/packages/textfield/react.test.d.ts +1 -0
  670. package/dist/packages/textfield/react.test.js +20 -0
  671. package/dist/packages/textfield/styles/w-textfield.styles.js +60 -58
  672. package/dist/packages/textfield/styles.js +2 -2
  673. package/dist/packages/textfield/textfield.d.ts +38 -26
  674. package/dist/packages/textfield/textfield.hydration.test.d.ts +1 -1
  675. package/dist/packages/textfield/textfield.hydration.test.js +19 -19
  676. package/dist/packages/textfield/textfield.js +468 -373
  677. package/dist/packages/textfield/textfield.js.map +4 -4
  678. package/dist/packages/textfield/textfield.react.stories.d.ts +51 -21
  679. package/dist/packages/textfield/textfield.react.stories.js +63 -31
  680. package/dist/packages/textfield/textfield.react.test.js +7 -7
  681. package/dist/packages/textfield/textfield.stories.d.ts +4 -4
  682. package/dist/packages/textfield/textfield.stories.js +107 -89
  683. package/dist/packages/textfield/textfield.test.d.ts +2 -2
  684. package/dist/packages/textfield/textfield.test.js +174 -71
  685. package/dist/packages/toast/api.d.ts +2 -2
  686. package/dist/packages/toast/api.js +3 -3
  687. package/dist/packages/toast/index.d.ts +5 -5
  688. package/dist/packages/toast/index.js +5 -5
  689. package/dist/packages/toast/styles.js +2 -2
  690. package/dist/packages/toast/toast.d.ts +10 -5
  691. package/dist/packages/toast/toast.js +349 -320
  692. package/dist/packages/toast/toast.js.map +4 -4
  693. package/dist/packages/toast/toast.stories.d.ts +4 -4
  694. package/dist/packages/toast/toast.stories.js +37 -16
  695. package/dist/packages/toast/toast.test.d.ts +1 -1
  696. package/dist/packages/toast/toast.test.js +48 -31
  697. package/dist/packages/toast/types.d.ts +1 -1
  698. package/dist/packages/toast-container/styles.d.ts +1 -0
  699. package/dist/packages/toast-container/styles.js +2 -0
  700. package/dist/packages/toast-container/toast-container.d.ts +8 -3
  701. package/dist/packages/toast-container/toast-container.js +295 -294
  702. package/dist/packages/toast-container/toast-container.js.map +4 -4
  703. package/dist/packages/types.d.ts +16 -0
  704. package/dist/packages/types.js +1 -0
  705. package/dist/packages/utils/element-collapse.d.ts +12 -0
  706. package/dist/packages/utils/element-collapse.js +102 -0
  707. package/dist/packages/utils/expand-transition.d.ts +1 -1
  708. package/dist/packages/utils/expand-transition.js +12 -10
  709. package/dist/packages/utils/unstyled-heading.d.ts +1 -1
  710. package/dist/packages/utils/unstyled-heading.js +4 -4
  711. package/dist/packages/utils/window-exists.js +1 -1
  712. package/dist/packages/utils.js +2 -2
  713. package/dist/setup-tests.d.ts +3 -3
  714. package/dist/setup-tests.js +16 -13
  715. package/dist/tests/react-hydration.js +29 -30
  716. package/dist/tests/react-ssr-attributes.d.ts +1 -1
  717. package/dist/tests/react-ssr-attributes.js +4 -4
  718. package/dist/web-types.json +458 -256
  719. package/eik/index.js +20 -2460
  720. package/package.json +21 -129
  721. package/dist/packages/slider/Slider.d.ts +0 -2
  722. package/dist/packages/slider/Slider.js +0 -8
  723. package/dist/packages/slider-thumb/SliderThumb.d.ts +0 -2
  724. package/dist/packages/slider-thumb/SliderThumb.js +0 -8
@@ -1,246 +1,362 @@
1
- import { html } from 'lit';
2
- import { expect, test } from 'vitest';
3
- import { render } from 'vitest-browser-lit';
4
- import '../textfield/textfield.js';
5
- import './combobox.js';
1
+ import { i18n } from "@lingui/core";
2
+ import { html } from "lit";
3
+ import { expect, test } from "vitest";
4
+ import { render } from "vitest-browser-lit";
5
+ import "../textfield/textfield.js";
6
+ import "./combobox.js";
7
+ import { messages as textfieldMessages } from "../textfield/locales/en/messages.mjs";
8
+ import { messages as textfieldNbMessages } from "../textfield/locales/nb/messages.mjs";
9
+ // Initialize i18n with English locale for tests (combobox uses textfield's messages)
10
+ i18n.load("en", textfieldMessages);
11
+ i18n.load("nb", textfieldNbMessages);
12
+ i18n.activate("en");
6
13
  test('renders with autocomplete="off" on inner textfield when attribute not provided', async () => {
7
14
  const component = html `<w-combobox data-testid="combobox"></w-combobox>`;
8
15
  const page = render(component);
9
- const locator = page.getByTestId('combobox');
16
+ const locator = page.getByTestId("combobox");
10
17
  await expect.element(locator).toBeVisible();
11
18
  const el = (await locator.element());
12
19
  // The autocomplete attribute is not reflected on the outer element to avoid hydration mismatches
13
20
  // Instead, check that the inner textfield receives the correct default value
14
- const textfield = el.shadowRoot?.querySelector('w-textfield');
15
- expect(textfield?.autocomplete).toBe('off');
21
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
22
+ expect(textfield?.autocomplete).toBe("off");
16
23
  });
17
- test('renders with autocomplete attribute when provided', async () => {
18
- const component = html `<w-combobox data-testid="combobox" autocomplete="on"></w-combobox>`;
24
+ test("renders with autocomplete attribute when provided", async () => {
25
+ const component = html `<w-combobox
26
+ data-testid="combobox"
27
+ autocomplete="on"
28
+ ></w-combobox>`;
19
29
  const page = render(component);
20
- const locator = page.getByTestId('combobox');
30
+ const locator = page.getByTestId("combobox");
21
31
  await expect.element(locator).toBeVisible();
22
32
  const el = (await locator.element());
23
- expect(el.getAttribute('autocomplete')).toBe('on');
33
+ expect(el.getAttribute("autocomplete")).toBe("on");
24
34
  });
25
- test('displays initial value correctly when value prop is set', async () => {
35
+ test("displays initial value correctly when value prop is set", async () => {
26
36
  const options = [
27
- { value: 'apple', label: 'Apple' },
28
- { value: 'banana', label: 'Banana' },
37
+ { value: "apple", label: "Apple" },
38
+ { value: "banana", label: "Banana" },
29
39
  ];
30
40
  const component = html `<w-combobox
31
- data-testid="combobox"
32
- value="apple"
33
- .options="${options}"
34
- ></w-combobox>`;
41
+ data-testid="combobox"
42
+ value="apple"
43
+ .options="${options}"
44
+ ></w-combobox>`;
35
45
  const page = render(component);
36
- const locator = page.getByTestId('combobox');
46
+ const locator = page.getByTestId("combobox");
37
47
  await expect.element(locator).toBeVisible();
38
48
  const el = (await locator.element());
39
49
  // Get the textfield's input element
40
- const textfield = el.shadowRoot?.querySelector('w-textfield');
41
- const input = textfield?.shadowRoot?.querySelector('input');
50
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
51
+ const input = textfield?.shadowRoot?.querySelector("input");
42
52
  // Verify the displayed text shows the label "Apple", not the value "apple"
43
- expect(input?.value).toBe('Apple');
53
+ expect(input?.value).toBe("Apple");
44
54
  // Verify the combobox value is "apple"
45
- expect(el.value).toBe('apple');
55
+ expect(el.value).toBe("apple");
46
56
  });
47
- test('filters options by label, not value', async () => {
57
+ test("filters options by label, not value", async () => {
48
58
  const options = [
49
- { value: 'us', label: 'United States' },
50
- { value: 'uk', label: 'United Kingdom' },
51
- { value: 'no', label: 'Norway' },
59
+ { value: "us", label: "United States" },
60
+ { value: "uk", label: "United Kingdom" },
61
+ { value: "no", label: "Norway" },
52
62
  ];
53
63
  const component = html `<w-combobox
54
- data-testid="combobox"
55
- open-on-focus
56
- .options="${options}"
57
- ></w-combobox>`;
64
+ data-testid="combobox"
65
+ open-on-focus
66
+ .options="${options}"
67
+ ></w-combobox>`;
58
68
  const page = render(component);
59
- const locator = page.getByTestId('combobox');
69
+ const locator = page.getByTestId("combobox");
60
70
  await expect.element(locator).toBeVisible();
61
71
  const el = (await locator.element());
62
72
  // Get the textfield's input element
63
- const textfield = el.shadowRoot?.querySelector('w-textfield');
64
- const input = textfield?.shadowRoot?.querySelector('input');
73
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
74
+ const input = textfield?.shadowRoot?.querySelector("input");
65
75
  // Type "United" which should match labels "United States" and "United Kingdom"
66
76
  // but NOT match any values (us, uk, no)
67
77
  input?.focus();
68
- input.value = 'United';
69
- input.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));
78
+ input.value = "United";
79
+ input.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
70
80
  await new Promise((resolve) => setTimeout(resolve, 100));
71
81
  // Check that the dropdown shows the matching options
72
82
  const listbox = el.shadowRoot?.querySelector('[role="listbox"]');
73
83
  const visibleOptions = listbox?.querySelectorAll('[role="option"]');
74
84
  // Should show 2 options: "United States" and "United Kingdom"
75
85
  expect(visibleOptions?.length).toBe(2);
76
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
77
- expect(optionTexts).toContain('United States');
78
- expect(optionTexts).toContain('United Kingdom');
79
- expect(optionTexts).not.toContain('Norway');
86
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
87
+ expect(optionTexts).toContain("United States");
88
+ expect(optionTexts).toContain("United Kingdom");
89
+ expect(optionTexts).not.toContain("Norway");
80
90
  });
81
- test('displays option label in textfield but stores option value', async () => {
91
+ test("displays option label in textfield but stores option value", async () => {
82
92
  const optionsWithDifferentLabelAndValue = [
83
- { value: 'us', label: 'United States' },
84
- { value: 'uk', label: 'United Kingdom' },
85
- { value: 'no', label: 'Norway' },
93
+ { value: "us", label: "United States" },
94
+ { value: "uk", label: "United Kingdom" },
95
+ { value: "no", label: "Norway" },
86
96
  ];
87
97
  const component = html `<w-combobox
88
- data-testid="combobox"
89
- open-on-focus
90
- .options="${optionsWithDifferentLabelAndValue}"
91
- ></w-combobox>`;
98
+ data-testid="combobox"
99
+ open-on-focus
100
+ .options="${optionsWithDifferentLabelAndValue}"
101
+ ></w-combobox>`;
92
102
  const page = render(component);
93
- const locator = page.getByTestId('combobox');
103
+ const locator = page.getByTestId("combobox");
94
104
  await expect.element(locator).toBeVisible();
95
105
  const el = (await locator.element());
96
106
  // Get the textfield's input element
97
- const textfield = el.shadowRoot?.querySelector('w-textfield');
98
- const input = textfield?.shadowRoot?.querySelector('input');
107
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
108
+ const input = textfield?.shadowRoot?.querySelector("input");
99
109
  // Focus to open the dropdown
100
110
  input?.focus();
101
111
  await new Promise((resolve) => setTimeout(resolve, 100));
102
112
  // Find and click the "Norway" option (which has value "no")
103
113
  const listbox = el.shadowRoot?.querySelector('[role="listbox"]');
104
114
  const options = listbox?.querySelectorAll('[role="option"]');
105
- const norwayOption = Array.from(options || []).find((opt) => opt.textContent?.trim() === 'Norway');
115
+ const norwayOption = [...(options || [])].find((opt) => opt.textContent?.trim() === "Norway");
106
116
  expect(norwayOption).toBeDefined();
107
117
  // Simulate mousedown on the option
108
- norwayOption?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
118
+ norwayOption?.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
109
119
  await new Promise((resolve) => setTimeout(resolve, 100));
110
120
  // Verify the displayed text is the label "Norway", not the value "no"
111
- expect(input?.value).toBe('Norway');
121
+ expect(input?.value).toBe("Norway");
112
122
  // Verify the combobox value is "no", not "Norway"
113
- expect(el.value).toBe('no');
123
+ expect(el.value).toBe("no");
114
124
  });
115
- test('announces suggestion count when opened on focus with empty input', async () => {
125
+ test("announces suggestion count when opened on focus with empty input", async () => {
116
126
  const options = [
117
- { value: 'apple', label: 'Apple' },
118
- { value: 'banana', label: 'Banana' },
119
- { value: 'orange', label: 'Orange' },
127
+ { value: "apple", label: "Apple" },
128
+ { value: "banana", label: "Banana" },
129
+ { value: "orange", label: "Orange" },
120
130
  ];
121
131
  const component = html `<w-combobox
122
- data-testid="combobox"
123
- open-on-focus
124
- .options="${options}"
125
- ></w-combobox>`;
132
+ data-testid="combobox"
133
+ open-on-focus
134
+ .options="${options}"
135
+ ></w-combobox>`;
126
136
  const page = render(component);
127
- const locator = page.getByTestId('combobox');
137
+ const locator = page.getByTestId("combobox");
128
138
  await expect.element(locator).toBeVisible();
129
139
  const el = (await locator.element());
130
- const textfield = el.shadowRoot?.querySelector('w-textfield');
131
- const input = textfield?.shadowRoot?.querySelector('input');
140
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
141
+ const input = textfield?.shadowRoot?.querySelector("input");
132
142
  input?.focus();
133
143
  await new Promise((resolve) => setTimeout(resolve, 100));
134
- const statusText = el.shadowRoot?.querySelector('[role="status"]')?.textContent?.trim();
135
- expect(statusText).toBe('3 suggestions');
144
+ const statusText = el.shadowRoot
145
+ ?.querySelector('[role="status"]')
146
+ ?.textContent?.trim();
147
+ expect(statusText).toBe("3 suggestions");
136
148
  });
137
- test('renders light-DOM option children in the generated popup', async () => {
149
+ test("renders light-DOM option children in the generated popup", async () => {
138
150
  const component = html `
139
- <w-combobox data-testid="combobox" open-on-focus>
140
- <option value="no">Norway</option>
141
- <option value="se">Sweden</option>
142
- <option value="dk">Denmark</option>
143
- </w-combobox>
144
- `;
151
+ <w-combobox data-testid="combobox" open-on-focus>
152
+ <option value="no">Norway</option>
153
+ <option value="se">Sweden</option>
154
+ <option value="dk">Denmark</option>
155
+ </w-combobox>
156
+ `;
145
157
  const page = render(component);
146
- const locator = page.getByTestId('combobox');
158
+ const locator = page.getByTestId("combobox");
147
159
  await expect.element(locator).toBeVisible();
148
160
  const el = (await locator.element());
149
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
161
+ const input = el.shadowRoot
162
+ ?.querySelector("w-textfield")
163
+ ?.shadowRoot?.querySelector("input");
150
164
  input?.focus();
151
165
  await new Promise((resolve) => setTimeout(resolve, 100));
152
166
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
153
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
154
- expect(optionTexts).toEqual(['Norway', 'Sweden', 'Denmark']);
167
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
168
+ expect(optionTexts).toEqual(["Norway", "Sweden", "Denmark"]);
155
169
  });
156
- test('filters light-DOM options by label attribute and stores option value on select', async () => {
170
+ test("filters light-DOM options by label attribute and stores option value on select", async () => {
157
171
  const component = html `
158
- <w-combobox data-testid="combobox" open-on-focus>
159
- <option value="us" label="United States">US</option>
160
- <option value="uk" label="United Kingdom">UK</option>
161
- <option value="no">Norway</option>
162
- </w-combobox>
163
- `;
172
+ <w-combobox data-testid="combobox" open-on-focus>
173
+ <option value="us" label="United States">US</option>
174
+ <option value="uk" label="United Kingdom">UK</option>
175
+ <option value="no">Norway</option>
176
+ </w-combobox>
177
+ `;
164
178
  const page = render(component);
165
- const locator = page.getByTestId('combobox');
179
+ const locator = page.getByTestId("combobox");
166
180
  await expect.element(locator).toBeVisible();
167
181
  const el = (await locator.element());
168
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
182
+ const input = el.shadowRoot
183
+ ?.querySelector("w-textfield")
184
+ ?.shadowRoot?.querySelector("input");
169
185
  const selectEvents = [];
170
- el.addEventListener('select', (event) => selectEvents.push(event));
186
+ el.addEventListener("select", (event) => selectEvents.push(event));
171
187
  input.focus();
172
- input.value = 'United';
173
- input.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));
188
+ input.value = "United";
189
+ input.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
174
190
  await new Promise((resolve) => setTimeout(resolve, 100));
175
191
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
176
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
177
- expect(optionTexts).toEqual(['United States', 'United Kingdom']);
178
- visibleOptions?.[1]?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
192
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
193
+ expect(optionTexts).toEqual(["United States", "United Kingdom"]);
194
+ visibleOptions?.[1]?.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
179
195
  await new Promise((resolve) => setTimeout(resolve, 100));
180
- expect(input.value).toBe('United Kingdom');
181
- expect(el.value).toBe('uk');
182
- expect(selectEvents.at(-1)?.detail).toEqual({ value: 'uk' });
196
+ expect(input.value).toBe("United Kingdom");
197
+ expect(el.value).toBe("uk");
198
+ expect(selectEvents.at(-1)?.detail).toEqual({ value: "uk" });
183
199
  });
184
- test('uses light-DOM options to display an initial value label', async () => {
200
+ test("uses light-DOM options to display an initial value label", async () => {
185
201
  const component = html `
186
- <w-combobox data-testid="combobox" value="no">
187
- <option value="se">Sweden</option>
188
- <option value="no">Norway</option>
189
- </w-combobox>
190
- `;
202
+ <w-combobox data-testid="combobox" value="no">
203
+ <option value="se">Sweden</option>
204
+ <option value="no">Norway</option>
205
+ </w-combobox>
206
+ `;
191
207
  const page = render(component);
192
- const locator = page.getByTestId('combobox');
208
+ const locator = page.getByTestId("combobox");
193
209
  await expect.element(locator).toBeVisible();
194
210
  const el = (await locator.element());
195
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
196
- expect(input.value).toBe('Norway');
197
- expect(el.value).toBe('no');
211
+ const input = el.shadowRoot
212
+ ?.querySelector("w-textfield")
213
+ ?.shadowRoot?.querySelector("input");
214
+ expect(input.value).toBe("Norway");
215
+ expect(el.value).toBe("no");
198
216
  });
199
- test('syncs dynamic light-DOM option child changes', async () => {
217
+ test("syncs dynamic light-DOM option child changes", async () => {
200
218
  const component = html `
201
- <w-combobox data-testid="combobox" open-on-focus>
202
- <option value="no">Norway</option>
203
- <option value="se">Sweden</option>
204
- </w-combobox>
205
- `;
219
+ <w-combobox data-testid="combobox" open-on-focus>
220
+ <option value="no">Norway</option>
221
+ <option value="se">Sweden</option>
222
+ </w-combobox>
223
+ `;
206
224
  const page = render(component);
207
- const locator = page.getByTestId('combobox');
225
+ const locator = page.getByTestId("combobox");
208
226
  await expect.element(locator).toBeVisible();
209
227
  const el = (await locator.element());
210
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
211
- const denmark = document.createElement('option');
212
- denmark.value = 'dk';
213
- denmark.textContent = 'Denmark';
228
+ const input = el.shadowRoot
229
+ ?.querySelector("w-textfield")
230
+ ?.shadowRoot?.querySelector("input");
231
+ const denmark = document.createElement("option");
232
+ denmark.value = "dk";
233
+ denmark.textContent = "Denmark";
214
234
  el.appendChild(denmark);
215
235
  const sweden = el.querySelector('option[value="se"]');
216
236
  sweden?.remove();
217
237
  const norway = el.querySelector('option[value="no"]');
218
- norway?.setAttribute('value', 'nor');
238
+ norway?.setAttribute("value", "nor");
219
239
  if (norway) {
220
- norway.textContent = 'Norge';
240
+ norway.textContent = "Norge";
221
241
  }
222
242
  await new Promise((resolve) => setTimeout(resolve, 100));
223
243
  input.focus();
224
244
  await new Promise((resolve) => setTimeout(resolve, 100));
225
245
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
226
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
227
- expect(optionTexts).toEqual(['Norge', 'Denmark']);
246
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
247
+ expect(optionTexts).toEqual(["Norge", "Denmark"]);
228
248
  });
229
- test('non-empty options property takes precedence over light-DOM option children', async () => {
230
- const options = [{ value: 'apple', label: 'Apple' }];
249
+ test("non-empty options property takes precedence over light-DOM option children", async () => {
250
+ const options = [{ value: "apple", label: "Apple" }];
231
251
  const component = html `
232
- <w-combobox data-testid="combobox" open-on-focus .options="${options}">
233
- <option value="banana">Banana</option>
234
- </w-combobox>
235
- `;
252
+ <w-combobox data-testid="combobox" open-on-focus .options="${options}">
253
+ <option value="banana">Banana</option>
254
+ </w-combobox>
255
+ `;
236
256
  const page = render(component);
237
- const locator = page.getByTestId('combobox');
257
+ const locator = page.getByTestId("combobox");
238
258
  await expect.element(locator).toBeVisible();
239
259
  const el = (await locator.element());
240
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
260
+ const input = el.shadowRoot
261
+ ?.querySelector("w-textfield")
262
+ ?.shadowRoot?.querySelector("input");
241
263
  input.focus();
242
264
  await new Promise((resolve) => setTimeout(resolve, 100));
243
265
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
244
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
245
- expect(optionTexts).toEqual(['Apple']);
266
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
267
+ expect(optionTexts).toEqual(["Apple"]);
268
+ });
269
+ test("renders optional indicator as 'Optional' without parentheses", async () => {
270
+ const page = render(html `
271
+ <w-combobox label="Country" optional>
272
+ <option value="no">Norway</option>
273
+ <option value="se">Sweden</option>
274
+ </w-combobox>
275
+ `);
276
+ await expect.element(page.getByText("Optional")).toBeVisible();
277
+ expect(page.getByText("(optional)").query()).toBeNull();
278
+ });
279
+ test("does not render optional indicator when both required and optional are set", async () => {
280
+ const page = render(html `
281
+ <w-combobox label="Country" required optional>
282
+ <option value="no">Norway</option>
283
+ <option value="se">Sweden</option>
284
+ </w-combobox>
285
+ `);
286
+ await expect.element(page.getByText("Country")).toBeVisible();
287
+ expect(page.getByText("Optional").query()).toBeNull();
288
+ });
289
+ test("includes optional indicator in the accessible name", async () => {
290
+ const page = render(html `
291
+ <w-combobox label="Country" optional>
292
+ <option value="no">Norway</option>
293
+ <option value="se">Sweden</option>
294
+ </w-combobox>
295
+ `);
296
+ // The inner textfield with role="combobox" should have accessible name including Optional
297
+ await expect
298
+ .element(page.getByRole("textbox", { name: /Country.*Optional/ }))
299
+ .toBeVisible();
300
+ });
301
+ test("removes optional indicator when required is added dynamically", async () => {
302
+ const page = render(html `
303
+ <w-combobox label="Country" optional data-testid="field">
304
+ <option value="no">Norway</option>
305
+ <option value="se">Sweden</option>
306
+ </w-combobox>
307
+ `);
308
+ await expect.element(page.getByText("Optional")).toBeVisible();
309
+ const el = page.getByTestId("field").element();
310
+ el.required = true;
311
+ await el.updateComplete;
312
+ expect(page.getByText("Optional").query()).toBeNull();
313
+ });
314
+ test("shows optional indicator when required is removed dynamically", async () => {
315
+ const page = render(html `
316
+ <w-combobox label="Country" required optional data-testid="field">
317
+ <option value="no">Norway</option>
318
+ <option value="se">Sweden</option>
319
+ </w-combobox>
320
+ `);
321
+ expect(page.getByText("Optional").query()).toBeNull();
322
+ const el = page.getByTestId("field").element();
323
+ el.required = false;
324
+ await el.updateComplete;
325
+ await expect.element(page.getByText("Optional")).toBeVisible();
326
+ });
327
+ test("does not render optional indicator when there is no label", async () => {
328
+ const page = render(html `
329
+ <w-combobox aria-label="Country" optional>
330
+ <option value="no">Norway</option>
331
+ <option value="se">Sweden</option>
332
+ </w-combobox>
333
+ `);
334
+ await expect.element(page.getByLabelText("Country")).toBeVisible();
335
+ expect(page.getByText("Optional").query()).toBeNull();
336
+ });
337
+ test("excludes optional indicator from accessible name when required suppresses it", async () => {
338
+ const page = render(html `
339
+ <w-combobox label="Country" required optional>
340
+ <option value="no">Norway</option>
341
+ <option value="se">Sweden</option>
342
+ </w-combobox>
343
+ `);
344
+ const input = page.getByRole("textbox", { name: "Country" });
345
+ await expect.element(input).toBeVisible();
346
+ // Verify "Optional" is not part of the accessible name
347
+ expect(page.getByRole("textbox", { name: /Optional/ }).query()).toBeNull();
348
+ });
349
+ test("renders localized optional text based on document lang", async () => {
350
+ const originalLang = document.documentElement.lang;
351
+ document.documentElement.lang = "nb";
352
+ const page = render(html `
353
+ <w-combobox label="Country" optional data-testid="field">
354
+ <option value="no">Norway</option>
355
+ <option value="se">Sweden</option>
356
+ </w-combobox>
357
+ `);
358
+ const el = page.getByTestId("field").element();
359
+ await el.updateComplete;
360
+ await expect.element(page.getByText("Valgfri")).toBeVisible();
361
+ document.documentElement.lang = originalLang;
246
362
  });
@@ -1,10 +1,31 @@
1
- import React from 'react';
2
- import { WarpCombobox } from './combobox.js';
3
- export declare const Combobox: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<WarpCombobox>, "value" | "form" | "label" | "name" | "disabled" | "invalid" | "helpText" | "placeholder" | "required" | "autocomplete" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onchange" | "onselect" | "updated" | "firstUpdated" | "resetFormControl" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onChange" | "onSelect" | "optional" | "options" | "openOnFocus" | "selectOnBlur" | "matchTextSegments" | "disableStaticFiltering"> & {
4
- onSelect?: (e: Event) => void;
5
- onselect?: (e: Event) => void;
6
- onChange?: (e: Event) => void;
7
- onchange?: (e: Event) => void;
1
+ import React from "react";
2
+ import type { WarpCombobox } from "./combobox.js";
3
+ /**
4
+ * A combobox element for text input with selectable options.
5
+ *
6
+ * [Warp component reference](https://warp-ds.github.io/docs/components/combo-box/frameworks/elements)
7
+ */
8
+ export declare const Combobox: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<WarpCombobox>, "autocomplete" | "name" | "disabled" | "invalid" | "label" | "helpText" | "optional" | "placeholder" | "required" | "value" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "onselect" | "updated" | "firstUpdated" | "resetFormControl" | "render" | "validationTarget" | "form" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onSelect" | "options" | "openOnFocus" | "selectOnBlur" | "matchTextSegments" | "disableStaticFiltering"> & {
9
+ onSelect?: ((e: CustomEvent<{
10
+ value: string;
11
+ }>) => void) | undefined;
12
+ onselect?: ((e: CustomEvent<{
13
+ value: string;
14
+ }>) => void) | undefined;
15
+ onChange?: ((e: CustomEvent<{
16
+ value: string;
17
+ }>) => void) | undefined;
18
+ onchange?: ((e: CustomEvent<{
19
+ value: string;
20
+ }>) => void) | undefined;
21
+ onBlur?: ((e: CustomEvent<{
22
+ value: string;
23
+ }>) => void) | undefined;
24
+ onblur?: ((e: CustomEvent<{
25
+ value: string;
26
+ }>) => void) | undefined;
27
+ onFocus?: ((e: CustomEvent<any>) => void) | undefined;
28
+ onfocus?: ((e: CustomEvent<any>) => void) | undefined;
8
29
  } & Partial<Omit<WarpCombobox, keyof HTMLElement>> & React.RefAttributes<WarpCombobox>, "ref">, "help-text" | "open-on-focus" | "select-on-blur" | "match-text-segments" | "disable-static-filtering"> & {
9
30
  openOnFocus?: boolean;
10
31
  selectOnBlur?: boolean;
@@ -1,27 +1,36 @@
1
- import { createComponent } from '@lit/react';
2
- import { LitElement } from 'lit';
3
- import React from 'react';
1
+ import { createComponent } from "@lit/react";
2
+ import { LitElement } from "lit";
3
+ import React from "react";
4
4
  // decouple from CDN by providing a dummy class
5
5
  class Component extends LitElement {
6
6
  }
7
7
  const BaseCombobox = createComponent({
8
- tagName: 'w-combobox',
8
+ tagName: "w-combobox",
9
9
  elementClass: Component,
10
10
  react: React,
11
11
  events: {
12
- onSelect: 'select',
13
- onselect: 'select',
14
- onChange: 'change',
15
- onchange: 'change',
12
+ onSelect: "select",
13
+ onselect: "select",
14
+ onChange: "change",
15
+ onchange: "change",
16
+ onBlur: "blur",
17
+ onblur: "blur",
18
+ onFocus: "focus",
19
+ onfocus: "focus",
16
20
  },
17
21
  });
22
+ /**
23
+ * A combobox element for text input with selectable options.
24
+ *
25
+ * [Warp component reference](https://warp-ds.github.io/docs/components/combo-box/frameworks/elements)
26
+ */
18
27
  export const Combobox = React.forwardRef(({ openOnFocus, selectOnBlur, matchTextSegments, disableStaticFiltering, helpText, ...props }, ref) => React.createElement(BaseCombobox, {
19
28
  ...props,
20
- ...(openOnFocus ? { 'open-on-focus': true } : {}),
21
- ...(selectOnBlur ? { 'select-on-blur': true } : {}),
22
- ...(matchTextSegments ? { 'match-text-segments': true } : {}),
23
- ...(disableStaticFiltering ? { 'disable-static-filtering': true } : {}),
24
- ...(helpText !== undefined ? { 'help-text': helpText } : {}),
29
+ ...(openOnFocus ? { "open-on-focus": true } : {}),
30
+ ...(selectOnBlur ? { "select-on-blur": true } : {}),
31
+ ...(matchTextSegments ? { "match-text-segments": true } : {}),
32
+ ...(disableStaticFiltering ? { "disable-static-filtering": true } : {}),
33
+ ...(helpText !== undefined ? { "help-text": helpText } : {}),
25
34
  ref,
26
35
  }));
27
- Combobox.displayName = 'Combobox';
36
+ Combobox.displayName = "Combobox";
@@ -1,3 +1,2 @@
1
- import { css } from 'lit';
2
- export const styles = css `*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.rounded-8{border-radius:8px}.block{display:block}.overflow-hidden{overflow:hidden}.list-none{list-style-type:none}.left-0{left:0}.right-0{right:0}.absolute{position:absolute}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-selected{background-color:var(--w-s-color-background-selected)}.hover\\:s-bg-hover:hover{background-color:var(--w-s-color-background-hover)}.hover\\:s-bg-selected-hover:hover{background-color:var(--w-s-color-background-selected-hover)}.shadow-m{box-shadow:var(--w-shadow-m)}.m-0{margin:0}.p-0{padding:0}.p-8{padding:.8rem}.pb-4{padding-bottom:.4rem}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.select-none{-webkit-user-select:none;user-select:none};
3
- .z-0{z-index:0;}.z-20{z-index:20;}`;
1
+ import { unsafeCSS } from "lit";
2
+ export const styles = unsafeCSS("*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.rounded-8{border-radius:8px}.block{display:block}.overflow-hidden{overflow:hidden}.list-none{list-style-type:none}.left-0{left:0}.right-0{right:0}.absolute{position:absolute}.relative{position:relative}.static{position:static}.z-0{z-index:0}.z-20{z-index:20}.s-bg{background-color:var(--w-s-color-background)}.s-bg-selected{background-color:var(--w-s-color-background-selected)}.hover\\:s-bg-hover:hover{background-color:var(--w-s-color-background-hover)}.hover\\:s-bg-selected-hover:hover{background-color:var(--w-s-color-background-selected-hover)}.shadow-m{box-shadow:var(--w-shadow-m)}.m-0{margin:0}.p-0{padding:0}.p-8{padding:.8rem}.pb-4{padding-bottom:.4rem}.visible{visibility:visible}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.select-none{-webkit-user-select:none;user-select:none}");
@@ -1,2 +1,2 @@
1
- import '../button/button.js';
2
- import './datepicker.js';
1
+ import "../button/button.js";
2
+ import "./datepicker.js";