@warp-ds/elements 2.10.0-next.14 → 2.10.0-next.17

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 (632) hide show
  1. package/dist/.storybook/utilities.js +4 -4
  2. package/dist/api.js.map +2 -2
  3. package/dist/custom-elements.json +437 -53
  4. package/dist/docs/affix/affix.md +2 -2
  5. package/dist/docs/affix/api.md +2 -2
  6. package/dist/docs/alert/alert.md +4 -4
  7. package/dist/docs/alert/api.md +4 -4
  8. package/dist/docs/attention/api.md +50 -2
  9. package/dist/docs/attention/attention.md +50 -2
  10. package/dist/docs/badge/api.md +50 -4
  11. package/dist/docs/badge/badge.md +50 -4
  12. package/dist/docs/box/api.md +2 -2
  13. package/dist/docs/box/box.md +2 -2
  14. package/dist/docs/button/api.md +8 -0
  15. package/dist/docs/button/button.md +8 -0
  16. package/dist/docs/card/api.md +8 -0
  17. package/dist/docs/card/card.md +8 -0
  18. package/dist/docs/checkbox/api.md +50 -2
  19. package/dist/docs/checkbox/checkbox.md +224 -2
  20. package/dist/docs/checkbox/styling.md +173 -0
  21. package/dist/docs/checkbox-group/api.md +24 -0
  22. package/dist/docs/checkbox-group/checkbox-group.md +67 -30
  23. package/dist/docs/checkbox-group/styling.md +31 -29
  24. package/dist/docs/combobox/api.md +20 -12
  25. package/dist/docs/combobox/combobox.md +20 -12
  26. package/dist/docs/datepicker/api.md +14 -6
  27. package/dist/docs/datepicker/datepicker.md +14 -6
  28. package/dist/docs/icon/api.md +3 -3
  29. package/dist/docs/icon/icon.md +3 -3
  30. package/dist/docs/index.md +3 -1
  31. package/dist/docs/modal/api.md +16 -0
  32. package/dist/docs/modal/modal.md +16 -0
  33. package/dist/docs/radio-group/api.md +4 -4
  34. package/dist/docs/radio-group/radio-group.md +183 -68
  35. package/dist/docs/radio-group/styling.md +179 -64
  36. package/dist/docs/slider-thumb/api.md +16 -0
  37. package/dist/docs/slider-thumb/slider-thumb.md +16 -0
  38. package/dist/docs/snackbar/accessibility.md +20 -0
  39. package/dist/docs/snackbar/api.md +30 -0
  40. package/dist/docs/snackbar/examples.md +191 -0
  41. package/dist/docs/snackbar/snackbar.md +385 -0
  42. package/dist/docs/snackbar/styling.md +72 -0
  43. package/dist/docs/snackbar/usage.md +60 -0
  44. package/dist/docs/snackbar-item/api.md +41 -0
  45. package/dist/docs/snackbar-item/snackbar-item.md +49 -0
  46. package/dist/docs/step/api.md +16 -0
  47. package/dist/docs/step/step.md +16 -0
  48. package/dist/docs/switch/api.md +8 -0
  49. package/dist/docs/switch/switch.md +8 -0
  50. package/dist/docs/textarea/api.md +40 -0
  51. package/dist/docs/textarea/textarea.md +40 -0
  52. package/dist/docs/textfield/api.md +32 -0
  53. package/dist/docs/textfield/textfield.md +32 -0
  54. package/dist/index.d.ts +316 -3
  55. package/dist/packages/affix/affix.d.ts +4 -4
  56. package/dist/packages/affix/affix.hydration.test.d.ts +1 -1
  57. package/dist/packages/affix/affix.hydration.test.js +15 -15
  58. package/dist/packages/affix/affix.js +346 -316
  59. package/dist/packages/affix/affix.js.map +2 -2
  60. package/dist/packages/affix/affix.react.stories.d.ts +2 -2
  61. package/dist/packages/affix/affix.react.stories.js +3 -3
  62. package/dist/packages/affix/affix.react.test.js +5 -3
  63. package/dist/packages/affix/affix.stories.d.ts +3 -3
  64. package/dist/packages/affix/affix.stories.js +10 -10
  65. package/dist/packages/affix/affix.test.d.ts +1 -1
  66. package/dist/packages/affix/affix.test.js +10 -10
  67. package/dist/packages/affix/react.d.ts +2 -2
  68. package/dist/packages/affix/react.js +6 -6
  69. package/dist/packages/affix/styles.js +1 -1
  70. package/dist/packages/alert/alert.d.ts +3 -3
  71. package/dist/packages/alert/alert.hydration.test.d.ts +1 -1
  72. package/dist/packages/alert/alert.hydration.test.js +21 -21
  73. package/dist/packages/alert/alert.js +345 -320
  74. package/dist/packages/alert/alert.js.map +2 -2
  75. package/dist/packages/alert/alert.react.stories.d.ts +2 -2
  76. package/dist/packages/alert/alert.react.stories.js +13 -13
  77. package/dist/packages/alert/alert.stories.d.ts +4 -4
  78. package/dist/packages/alert/alert.stories.js +29 -27
  79. package/dist/packages/alert/alert.test.d.ts +1 -1
  80. package/dist/packages/alert/alert.test.js +34 -21
  81. package/dist/packages/alert/react.d.ts +1 -1
  82. package/dist/packages/alert/react.js +4 -4
  83. package/dist/packages/alert/styles.js +1 -1
  84. package/dist/packages/attention/attention.d.ts +11 -6
  85. package/dist/packages/attention/attention.hydration.test.d.ts +1 -1
  86. package/dist/packages/attention/attention.hydration.test.js +29 -29
  87. package/dist/packages/attention/attention.js +1737 -1695
  88. package/dist/packages/attention/attention.js.map +2 -2
  89. package/dist/packages/attention/attention.react.stories.d.ts +3 -3
  90. package/dist/packages/attention/attention.react.stories.js +13 -13
  91. package/dist/packages/attention/attention.react.test.js +11 -7
  92. package/dist/packages/attention/attention.stories.d.ts +4 -4
  93. package/dist/packages/attention/attention.stories.js +126 -117
  94. package/dist/packages/attention/attention.test.d.ts +1 -1
  95. package/dist/packages/attention/attention.test.js +18 -10
  96. package/dist/packages/attention/layout-styles.js +900 -900
  97. package/dist/packages/attention/react.d.ts +4 -4
  98. package/dist/packages/attention/react.js +13 -11
  99. package/dist/packages/attention/styles.js +1 -1
  100. package/dist/packages/badge/badge.d.ts +3 -3
  101. package/dist/packages/badge/badge.hydration.test.d.ts +1 -1
  102. package/dist/packages/badge/badge.hydration.test.js +25 -25
  103. package/dist/packages/badge/badge.js +276 -276
  104. package/dist/packages/badge/badge.js.map +2 -2
  105. package/dist/packages/badge/badge.react.stories.d.ts +3 -3
  106. package/dist/packages/badge/badge.react.stories.js +17 -17
  107. package/dist/packages/badge/badge.stories.d.ts +3 -3
  108. package/dist/packages/badge/badge.stories.js +22 -20
  109. package/dist/packages/badge/badge.test.d.ts +1 -1
  110. package/dist/packages/badge/badge.test.js +13 -11
  111. package/dist/packages/badge/react.d.ts +1 -1
  112. package/dist/packages/badge/react.js +4 -4
  113. package/dist/packages/badge/styles.js +1 -1
  114. package/dist/packages/box/box.d.ts +1 -1
  115. package/dist/packages/box/box.hydration.test.d.ts +1 -1
  116. package/dist/packages/box/box.hydration.test.js +14 -14
  117. package/dist/packages/box/box.js +283 -283
  118. package/dist/packages/box/box.js.map +2 -2
  119. package/dist/packages/box/box.react.stories.d.ts +3 -3
  120. package/dist/packages/box/box.react.stories.js +8 -8
  121. package/dist/packages/box/box.stories.d.ts +3 -3
  122. package/dist/packages/box/box.stories.js +25 -19
  123. package/dist/packages/box/box.test.d.ts +1 -1
  124. package/dist/packages/box/box.test.js +6 -6
  125. package/dist/packages/box/react.d.ts +1 -1
  126. package/dist/packages/box/react.js +4 -4
  127. package/dist/packages/box/slot.test.d.ts +1 -1
  128. package/dist/packages/box/slot.test.js +6 -6
  129. package/dist/packages/box/styles.js +1 -1
  130. package/dist/packages/breadcrumbs/breadcrumbs.d.ts +1 -1
  131. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.d.ts +1 -1
  132. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +55 -49
  133. package/dist/packages/breadcrumbs/breadcrumbs.js +284 -278
  134. package/dist/packages/breadcrumbs/breadcrumbs.js.map +2 -2
  135. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.d.ts +3 -3
  136. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.js +6 -6
  137. package/dist/packages/breadcrumbs/breadcrumbs.stories.d.ts +3 -3
  138. package/dist/packages/breadcrumbs/breadcrumbs.stories.js +27 -26
  139. package/dist/packages/breadcrumbs/breadcrumbs.test.d.ts +1 -1
  140. package/dist/packages/breadcrumbs/breadcrumbs.test.js +19 -17
  141. package/dist/packages/breadcrumbs/react.d.ts +1 -1
  142. package/dist/packages/breadcrumbs/react.js +4 -4
  143. package/dist/packages/breadcrumbs/styles.js +1 -1
  144. package/dist/packages/button/button.d.ts +9 -4
  145. package/dist/packages/button/button.hydration.test.d.ts +1 -1
  146. package/dist/packages/button/button.hydration.test.js +19 -19
  147. package/dist/packages/button/button.js +743 -717
  148. package/dist/packages/button/button.js.map +2 -2
  149. package/dist/packages/button/button.react.stories.d.ts +5 -5
  150. package/dist/packages/button/button.react.stories.js +30 -30
  151. package/dist/packages/button/button.react.test.js +13 -13
  152. package/dist/packages/button/button.stories.d.ts +4 -4
  153. package/dist/packages/button/button.stories.js +276 -167
  154. package/dist/packages/button/button.test.d.ts +1 -1
  155. package/dist/packages/button/button.test.js +36 -35
  156. package/dist/packages/button/react.d.ts +3 -3
  157. package/dist/packages/button/react.js +7 -7
  158. package/dist/packages/button/styles.js +373 -347
  159. package/dist/packages/card/card.d.ts +1 -1
  160. package/dist/packages/card/card.hydration.test.d.ts +1 -1
  161. package/dist/packages/card/card.hydration.test.js +14 -14
  162. package/dist/packages/card/card.js +305 -290
  163. package/dist/packages/card/card.js.map +2 -2
  164. package/dist/packages/card/card.react.stories.d.ts +3 -3
  165. package/dist/packages/card/card.react.stories.js +11 -11
  166. package/dist/packages/card/card.stories.d.ts +3 -3
  167. package/dist/packages/card/card.stories.js +36 -24
  168. package/dist/packages/card/card.test.d.ts +1 -1
  169. package/dist/packages/card/card.test.js +6 -6
  170. package/dist/packages/card/react.d.ts +1 -1
  171. package/dist/packages/card/react.js +4 -4
  172. package/dist/packages/card/styles.js +1 -1
  173. package/dist/packages/checkbox/checkbox.a11y.test.d.ts +1 -1
  174. package/dist/packages/checkbox/checkbox.a11y.test.js +47 -33
  175. package/dist/packages/checkbox/checkbox.d.ts +2 -2
  176. package/dist/packages/checkbox/checkbox.hydration.test.d.ts +1 -1
  177. package/dist/packages/checkbox/checkbox.hydration.test.js +21 -21
  178. package/dist/packages/checkbox/checkbox.js +475 -424
  179. package/dist/packages/checkbox/checkbox.js.map +2 -2
  180. package/dist/packages/checkbox/checkbox.react.stories.d.ts +2 -2
  181. package/dist/packages/checkbox/checkbox.react.stories.js +3 -3
  182. package/dist/packages/checkbox/checkbox.stories.d.ts +4 -4
  183. package/dist/packages/checkbox/checkbox.stories.js +99 -91
  184. package/dist/packages/checkbox/checkbox.test.d.ts +1 -1
  185. package/dist/packages/checkbox/checkbox.test.js +64 -64
  186. package/dist/packages/checkbox/react.d.ts +1 -1
  187. package/dist/packages/checkbox/react.js +6 -6
  188. package/dist/packages/checkbox/styles.js +183 -132
  189. package/dist/packages/checkbox-group/checkbox-group.a11y.test.d.ts +2 -2
  190. package/dist/packages/checkbox-group/checkbox-group.a11y.test.js +83 -73
  191. package/dist/packages/checkbox-group/checkbox-group.d.ts +16 -2
  192. package/dist/packages/checkbox-group/checkbox-group.hydration.test.d.ts +2 -2
  193. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +36 -19
  194. package/dist/packages/checkbox-group/checkbox-group.js +60 -55
  195. package/dist/packages/checkbox-group/checkbox-group.js.map +2 -2
  196. package/dist/packages/checkbox-group/checkbox-group.react.test.js +4 -4
  197. package/dist/packages/checkbox-group/checkbox-group.test.d.ts +2 -2
  198. package/dist/packages/checkbox-group/checkbox-group.test.js +96 -90
  199. package/dist/packages/checkbox-group/react.d.ts +2 -2
  200. package/dist/packages/checkbox-group/react.js +6 -6
  201. package/dist/packages/combobox/combobox.a11y.test.d.ts +2 -2
  202. package/dist/packages/combobox/combobox.a11y.test.js +72 -49
  203. package/dist/packages/combobox/combobox.d.ts +2 -2
  204. package/dist/packages/combobox/combobox.hydration.test.d.ts +1 -1
  205. package/dist/packages/combobox/combobox.hydration.test.js +45 -45
  206. package/dist/packages/combobox/combobox.js +332 -332
  207. package/dist/packages/combobox/combobox.js.map +3 -3
  208. package/dist/packages/combobox/combobox.react.stories.d.ts +3 -3
  209. package/dist/packages/combobox/combobox.react.stories.js +29 -29
  210. package/dist/packages/combobox/combobox.react.test.js +8 -8
  211. package/dist/packages/combobox/combobox.stories.d.ts +4 -4
  212. package/dist/packages/combobox/combobox.stories.js +100 -94
  213. package/dist/packages/combobox/combobox.test.d.ts +2 -2
  214. package/dist/packages/combobox/combobox.test.js +148 -133
  215. package/dist/packages/combobox/react.d.ts +2 -2
  216. package/dist/packages/combobox/react.js +14 -14
  217. package/dist/packages/combobox/styles.js +1 -1
  218. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -2
  219. package/dist/packages/datepicker/DatePicker.test.js +46 -41
  220. package/dist/packages/datepicker/datepicker.d.ts +3 -3
  221. package/dist/packages/datepicker/datepicker.hydration.test.d.ts +1 -1
  222. package/dist/packages/datepicker/datepicker.hydration.test.js +21 -21
  223. package/dist/packages/datepicker/datepicker.js +665 -625
  224. package/dist/packages/datepicker/datepicker.js.map +3 -3
  225. package/dist/packages/datepicker/datepicker.react.stories.d.ts +3 -3
  226. package/dist/packages/datepicker/datepicker.react.stories.js +9 -9
  227. package/dist/packages/datepicker/datepicker.react.test.js +6 -6
  228. package/dist/packages/datepicker/datepicker.stories.d.ts +4 -4
  229. package/dist/packages/datepicker/datepicker.stories.js +32 -32
  230. package/dist/packages/datepicker/datepicker.test.d.ts +2 -2
  231. package/dist/packages/datepicker/datepicker.test.js +77 -79
  232. package/dist/packages/datepicker/react.d.ts +2 -2
  233. package/dist/packages/datepicker/react.js +16 -14
  234. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +13 -12
  235. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +58 -55
  236. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +60 -57
  237. package/dist/packages/datepicker/styles/w-datepicker.styles.js +87 -87
  238. package/dist/packages/datepicker/utils.d.ts +1 -1
  239. package/dist/packages/datepicker/utils.js +25 -19
  240. package/dist/packages/datepicker/utils.test.js +20 -20
  241. package/dist/packages/expandable/expandable.d.ts +4 -4
  242. package/dist/packages/expandable/expandable.hydration.test.d.ts +1 -1
  243. package/dist/packages/expandable/expandable.hydration.test.js +21 -21
  244. package/dist/packages/expandable/expandable.js +357 -330
  245. package/dist/packages/expandable/expandable.js.map +4 -4
  246. package/dist/packages/expandable/expandable.react.stories.d.ts +3 -3
  247. package/dist/packages/expandable/expandable.react.stories.js +7 -7
  248. package/dist/packages/expandable/expandable.react.test.js +15 -7
  249. package/dist/packages/expandable/expandable.stories.d.ts +5 -5
  250. package/dist/packages/expandable/expandable.stories.js +51 -45
  251. package/dist/packages/expandable/expandable.test.d.ts +1 -1
  252. package/dist/packages/expandable/expandable.test.js +19 -17
  253. package/dist/packages/expandable/react.d.ts +2 -2
  254. package/dist/packages/expandable/react.js +9 -9
  255. package/dist/packages/expandable/styles.js +1 -1
  256. package/dist/packages/global.d.ts +1 -0
  257. package/dist/packages/global.js +5 -0
  258. package/dist/packages/i18n.d.ts +1 -1
  259. package/dist/packages/i18n.js +37 -29
  260. package/dist/packages/icon/icon.d.ts +7 -2
  261. package/dist/packages/icon/icon.hydration.test.d.ts +1 -1
  262. package/dist/packages/icon/icon.hydration.test.js +25 -25
  263. package/dist/packages/icon/icon.js +31 -26
  264. package/dist/packages/icon/icon.js.map +2 -2
  265. package/dist/packages/icon/icon.react.stories.d.ts +1 -1
  266. package/dist/packages/icon/icon.react.stories.js +283 -284
  267. package/dist/packages/icon/icon.stories.d.ts +3 -3
  268. package/dist/packages/icon/icon.stories.js +299 -298
  269. package/dist/packages/icon/icon.test.d.ts +1 -1
  270. package/dist/packages/icon/icon.test.js +36 -28
  271. package/dist/packages/icon/react.d.ts +1 -1
  272. package/dist/packages/icon/react.js +4 -4
  273. package/dist/packages/icon/style.js +24 -25
  274. package/dist/packages/interaction-type-detection.d.ts +22 -0
  275. package/dist/packages/interaction-type-detection.js +38 -0
  276. package/dist/packages/link/link.d.ts +2 -2
  277. package/dist/packages/link/link.hydration.test.d.ts +1 -1
  278. package/dist/packages/link/link.hydration.test.js +27 -27
  279. package/dist/packages/link/link.js +709 -683
  280. package/dist/packages/link/link.js.map +2 -2
  281. package/dist/packages/link/link.react.stories.d.ts +3 -3
  282. package/dist/packages/link/link.react.stories.js +42 -42
  283. package/dist/packages/link/link.react.test.js +5 -3
  284. package/dist/packages/link/link.stories.d.ts +3 -3
  285. package/dist/packages/link/link.stories.js +51 -51
  286. package/dist/packages/link/link.test.d.ts +1 -1
  287. package/dist/packages/link/link.test.js +11 -7
  288. package/dist/packages/link/react.d.ts +2 -2
  289. package/dist/packages/link/react.js +6 -6
  290. package/dist/packages/link/styles.js +57 -57
  291. package/dist/packages/modal/index.d.ts +7 -7
  292. package/dist/packages/modal/index.js +7 -7
  293. package/dist/packages/modal/modal.d.ts +1 -1
  294. package/dist/packages/modal/modal.hydration.test.d.ts +1 -1
  295. package/dist/packages/modal/modal.hydration.test.js +12 -12
  296. package/dist/packages/modal/modal.js +405 -405
  297. package/dist/packages/modal/modal.js.map +2 -2
  298. package/dist/packages/modal/modal.react.stories.d.ts +3 -3
  299. package/dist/packages/modal/modal.react.stories.js +7 -6
  300. package/dist/packages/modal/modal.react.test.js +5 -5
  301. package/dist/packages/modal/modal.stories.d.ts +6 -6
  302. package/dist/packages/modal/modal.stories.js +253 -238
  303. package/dist/packages/modal/react.d.ts +4 -4
  304. package/dist/packages/modal/react.js +13 -13
  305. package/dist/packages/modal/util.js +2 -2
  306. package/dist/packages/modal-footer/modal-footer.d.ts +1 -1
  307. package/dist/packages/modal-footer/modal-footer.js +291 -291
  308. package/dist/packages/modal-footer/modal-footer.js.map +2 -2
  309. package/dist/packages/modal-footer/react.d.ts +1 -1
  310. package/dist/packages/modal-footer/react.js +4 -4
  311. package/dist/packages/modal-header/modal-header.d.ts +2 -2
  312. package/dist/packages/modal-header/modal-header.js +439 -418
  313. package/dist/packages/modal-header/modal-header.js.map +2 -2
  314. package/dist/packages/modal-header/modal-header.react.test.js +5 -3
  315. package/dist/packages/modal-header/react.d.ts +2 -2
  316. package/dist/packages/modal-header/react.js +8 -8
  317. package/dist/packages/page-indicator/page-indicator.d.ts +1 -1
  318. package/dist/packages/page-indicator/page-indicator.hydration.test.d.ts +1 -1
  319. package/dist/packages/page-indicator/page-indicator.hydration.test.js +22 -22
  320. package/dist/packages/page-indicator/page-indicator.js +26 -26
  321. package/dist/packages/page-indicator/page-indicator.js.map +2 -2
  322. package/dist/packages/page-indicator/page-indicator.react.stories.d.ts +3 -3
  323. package/dist/packages/page-indicator/page-indicator.react.stories.js +11 -11
  324. package/dist/packages/page-indicator/page-indicator.react.test.js +5 -5
  325. package/dist/packages/page-indicator/page-indicator.stories.d.ts +3 -3
  326. package/dist/packages/page-indicator/page-indicator.stories.js +56 -27
  327. package/dist/packages/page-indicator/page-indicator.test.d.ts +1 -1
  328. package/dist/packages/page-indicator/page-indicator.test.js +110 -70
  329. package/dist/packages/page-indicator/react.d.ts +2 -2
  330. package/dist/packages/page-indicator/react.js +7 -7
  331. package/dist/packages/page-indicator/style.js +21 -21
  332. package/dist/packages/pagination/pagination.a11y.test.d.ts +1 -1
  333. package/dist/packages/pagination/pagination.a11y.test.js +59 -25
  334. package/dist/packages/pagination/pagination.d.ts +3 -3
  335. package/dist/packages/pagination/pagination.hydration.test.d.ts +1 -1
  336. package/dist/packages/pagination/pagination.hydration.test.js +19 -19
  337. package/dist/packages/pagination/pagination.js +380 -349
  338. package/dist/packages/pagination/pagination.js.map +2 -2
  339. package/dist/packages/pagination/pagination.react.stories.d.ts +5 -5
  340. package/dist/packages/pagination/pagination.react.stories.js +8 -8
  341. package/dist/packages/pagination/pagination.react.test.js +6 -6
  342. package/dist/packages/pagination/pagination.stories.d.ts +3 -3
  343. package/dist/packages/pagination/pagination.stories.js +18 -18
  344. package/dist/packages/pagination/pagination.test.d.ts +1 -1
  345. package/dist/packages/pagination/pagination.test.js +146 -69
  346. package/dist/packages/pagination/react.d.ts +3 -3
  347. package/dist/packages/pagination/react.js +12 -10
  348. package/dist/packages/pagination/styles.js +1 -1
  349. package/dist/packages/pill/pill.d.ts +2 -2
  350. package/dist/packages/pill/pill.hydration.test.d.ts +1 -1
  351. package/dist/packages/pill/pill.hydration.test.js +14 -14
  352. package/dist/packages/pill/pill.js +334 -311
  353. package/dist/packages/pill/pill.js.map +2 -2
  354. package/dist/packages/pill/pill.react.stories.d.ts +3 -3
  355. package/dist/packages/pill/pill.react.stories.js +3 -3
  356. package/dist/packages/pill/pill.react.test.js +8 -8
  357. package/dist/packages/pill/pill.stories.d.ts +3 -3
  358. package/dist/packages/pill/pill.stories.js +8 -8
  359. package/dist/packages/pill/pill.test.d.ts +1 -1
  360. package/dist/packages/pill/pill.test.js +17 -15
  361. package/dist/packages/pill/react.d.ts +2 -2
  362. package/dist/packages/pill/react.js +18 -14
  363. package/dist/packages/pill/styles.js +1 -1
  364. package/dist/packages/radio/base-element.d.ts +3 -3
  365. package/dist/packages/radio/base-element.js +3 -3
  366. package/dist/packages/radio/custom-error-validator.d.ts +1 -1
  367. package/dist/packages/radio/custom-error-validator.js +3 -3
  368. package/dist/packages/radio/form-associated-element.d.ts +8 -8
  369. package/dist/packages/radio/form-associated-element.js +27 -26
  370. package/dist/packages/radio/host-styles.js +9 -9
  371. package/dist/packages/radio/invalid.d.ts +1 -1
  372. package/dist/packages/radio/invalid.js +1 -1
  373. package/dist/packages/radio/radio-styles.js +199 -160
  374. package/dist/packages/radio/radio.a11y.test.d.ts +2 -2
  375. package/dist/packages/radio/radio.a11y.test.js +60 -58
  376. package/dist/packages/radio/radio.d.ts +3 -3
  377. package/dist/packages/radio/radio.hydration.test.d.ts +1 -1
  378. package/dist/packages/radio/radio.hydration.test.js +23 -14
  379. package/dist/packages/radio/radio.js +485 -446
  380. package/dist/packages/radio/radio.js.map +3 -3
  381. package/dist/packages/radio/radio.react.stories.d.ts +2 -2
  382. package/dist/packages/radio/radio.react.stories.js +3 -3
  383. package/dist/packages/radio/radio.stories.d.ts +4 -4
  384. package/dist/packages/radio/radio.stories.js +152 -136
  385. package/dist/packages/radio/radio.test.d.ts +1 -1
  386. package/dist/packages/radio/radio.test.js +74 -73
  387. package/dist/packages/radio/react.d.ts +1 -1
  388. package/dist/packages/radio/react.js +4 -4
  389. package/dist/packages/radio/required-validator.d.ts +1 -1
  390. package/dist/packages/radio/required-validator.js +12 -7
  391. package/dist/packages/radio/slot.d.ts +1 -1
  392. package/dist/packages/radio/slot.js +11 -8
  393. package/dist/packages/radio/watch.d.ts +1 -1
  394. package/dist/packages/radio/watch.js +3 -1
  395. package/dist/packages/radio-group/radio-group-styles.js +121 -88
  396. package/dist/packages/radio-group/radio-group.a11y.test.d.ts +2 -2
  397. package/dist/packages/radio-group/radio-group.a11y.test.js +81 -79
  398. package/dist/packages/radio-group/radio-group.d.ts +14 -5
  399. package/dist/packages/radio-group/radio-group.hydration.test.d.ts +2 -2
  400. package/dist/packages/radio-group/radio-group.hydration.test.js +29 -18
  401. package/dist/packages/radio-group/radio-group.js +648 -560
  402. package/dist/packages/radio-group/radio-group.js.map +3 -3
  403. package/dist/packages/radio-group/radio-group.react.test.js +4 -4
  404. package/dist/packages/radio-group/radio-group.test.d.ts +2 -2
  405. package/dist/packages/radio-group/radio-group.test.js +234 -229
  406. package/dist/packages/radio-group/react.d.ts +2 -2
  407. package/dist/packages/radio-group/react.js +10 -10
  408. package/dist/packages/select/react.d.ts +2 -2
  409. package/dist/packages/select/react.js +11 -11
  410. package/dist/packages/select/select.a11y.test.d.ts +1 -1
  411. package/dist/packages/select/select.a11y.test.js +98 -91
  412. package/dist/packages/select/select.d.ts +4 -4
  413. package/dist/packages/select/select.hydration.test.d.ts +1 -1
  414. package/dist/packages/select/select.hydration.test.js +16 -16
  415. package/dist/packages/select/select.js +350 -331
  416. package/dist/packages/select/select.js.map +2 -2
  417. package/dist/packages/select/select.react.stories.d.ts +3 -3
  418. package/dist/packages/select/select.react.stories.js +7 -7
  419. package/dist/packages/select/select.react.test.js +6 -6
  420. package/dist/packages/select/select.stories.d.ts +3 -3
  421. package/dist/packages/select/select.stories.js +51 -48
  422. package/dist/packages/select/select.test.d.ts +1 -1
  423. package/dist/packages/select/select.test.js +175 -178
  424. package/dist/packages/select/styles.js +1 -1
  425. package/dist/packages/slider/Slider.d.ts +1 -1
  426. package/dist/packages/slider/Slider.js +4 -4
  427. package/dist/packages/slider/index.d.ts +2 -2
  428. package/dist/packages/slider/index.js +2 -2
  429. package/dist/packages/slider/react.d.ts +3 -3
  430. package/dist/packages/slider/react.js +9 -9
  431. package/dist/packages/slider/slider.d.ts +3 -3
  432. package/dist/packages/slider/slider.hydration.test.d.ts +1 -1
  433. package/dist/packages/slider/slider.hydration.test.js +39 -20
  434. package/dist/packages/slider/slider.js +480 -462
  435. package/dist/packages/slider/slider.js.map +2 -2
  436. package/dist/packages/slider/slider.react.stories.d.ts +3 -3
  437. package/dist/packages/slider/slider.react.stories.js +31 -34
  438. package/dist/packages/slider/slider.react.test.js +6 -6
  439. package/dist/packages/slider/slider.stories.d.ts +7 -7
  440. package/dist/packages/slider/slider.stories.js +332 -340
  441. package/dist/packages/slider/slider.test.d.ts +5 -5
  442. package/dist/packages/slider/slider.test.js +367 -334
  443. package/dist/packages/slider/styles/w-slider.styles.js +166 -148
  444. package/dist/packages/slider/styles.js +1 -1
  445. package/dist/packages/slider-thumb/SliderThumb.d.ts +1 -1
  446. package/dist/packages/slider-thumb/SliderThumb.js +4 -4
  447. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.d.ts +1 -1
  448. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.js +1 -1
  449. package/dist/packages/slider-thumb/react.d.ts +3 -3
  450. package/dist/packages/slider-thumb/react.js +11 -9
  451. package/dist/packages/slider-thumb/slider-thumb.d.ts +3 -3
  452. package/dist/packages/slider-thumb/slider-thumb.hydration.test.d.ts +1 -1
  453. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +26 -17
  454. package/dist/packages/slider-thumb/slider-thumb.js +545 -548
  455. package/dist/packages/slider-thumb/slider-thumb.js.map +3 -3
  456. package/dist/packages/slider-thumb/slider-thumb.react.test.js +9 -5
  457. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.js +189 -188
  458. package/dist/packages/slider-thumb/styles.js +1 -1
  459. package/dist/packages/snackbar/locales/da/messages.d.mts +1 -0
  460. package/dist/packages/snackbar/locales/da/messages.mjs +1 -0
  461. package/dist/packages/snackbar/locales/en/messages.d.mts +1 -0
  462. package/dist/packages/snackbar/locales/en/messages.mjs +1 -0
  463. package/dist/packages/snackbar/locales/fi/messages.d.mts +1 -0
  464. package/dist/packages/snackbar/locales/fi/messages.mjs +1 -0
  465. package/dist/packages/snackbar/locales/nb/messages.d.mts +1 -0
  466. package/dist/packages/snackbar/locales/nb/messages.mjs +1 -0
  467. package/dist/packages/snackbar/locales/sv/messages.d.mts +1 -0
  468. package/dist/packages/snackbar/locales/sv/messages.mjs +1 -0
  469. package/dist/packages/snackbar/react.d.ts +2 -0
  470. package/dist/packages/snackbar/react.js +11 -0
  471. package/dist/packages/snackbar/snackbar.d.ts +132 -0
  472. package/dist/packages/snackbar/snackbar.hydration.test.d.ts +1 -0
  473. package/dist/packages/snackbar/snackbar.hydration.test.js +13 -0
  474. package/dist/packages/snackbar/snackbar.js +2665 -0
  475. package/dist/packages/snackbar/snackbar.js.map +7 -0
  476. package/dist/packages/snackbar/snackbar.react.stories.d.ts +12 -0
  477. package/dist/packages/snackbar/snackbar.react.stories.js +160 -0
  478. package/dist/packages/snackbar/snackbar.stories.d.ts +20 -0
  479. package/dist/packages/snackbar/snackbar.stories.js +363 -0
  480. package/dist/packages/snackbar/snackbar.test.d.ts +4 -0
  481. package/dist/packages/snackbar/snackbar.test.js +17 -0
  482. package/dist/packages/snackbar/styles.d.ts +1 -0
  483. package/dist/packages/snackbar/styles.js +35 -0
  484. package/dist/packages/snackbar-item/react.d.ts +5 -0
  485. package/dist/packages/snackbar-item/react.js +16 -0
  486. package/dist/packages/snackbar-item/snackbar-item.d.ts +69 -0
  487. package/dist/packages/snackbar-item/snackbar-item.js +2620 -0
  488. package/dist/packages/snackbar-item/snackbar-item.js.map +7 -0
  489. package/dist/packages/snackbar-item/snackbar-item.react.test.d.ts +1 -0
  490. package/dist/packages/snackbar-item/snackbar-item.react.test.js +5 -0
  491. package/dist/packages/snackbar-item/styles.d.ts +1 -0
  492. package/dist/packages/snackbar-item/styles.js +133 -0
  493. package/dist/packages/step/react.d.ts +1 -1
  494. package/dist/packages/step/react.js +4 -4
  495. package/dist/packages/step/step.d.ts +2 -2
  496. package/dist/packages/step/step.hydration.test.d.ts +1 -1
  497. package/dist/packages/step/step.hydration.test.js +10 -10
  498. package/dist/packages/step/step.js +334 -312
  499. package/dist/packages/step/step.js.map +2 -2
  500. package/dist/packages/step-indicator/index.d.ts +2 -2
  501. package/dist/packages/step-indicator/index.js +2 -2
  502. package/dist/packages/step-indicator/react.d.ts +2 -2
  503. package/dist/packages/step-indicator/react.js +5 -5
  504. package/dist/packages/step-indicator/step-indicator.a11y.test.d.ts +2 -2
  505. package/dist/packages/step-indicator/step-indicator.a11y.test.js +48 -46
  506. package/dist/packages/step-indicator/step-indicator.d.ts +1 -1
  507. package/dist/packages/step-indicator/step-indicator.hydration.test.d.ts +1 -1
  508. package/dist/packages/step-indicator/step-indicator.hydration.test.js +10 -10
  509. package/dist/packages/step-indicator/step-indicator.js +280 -276
  510. package/dist/packages/step-indicator/step-indicator.js.map +2 -2
  511. package/dist/packages/step-indicator/stepindicator.react.stories.d.ts +2 -2
  512. package/dist/packages/step-indicator/stepindicator.react.stories.js +3 -3
  513. package/dist/packages/step-indicator/stepindicator.stories.d.ts +3 -3
  514. package/dist/packages/step-indicator/stepindicator.stories.js +129 -129
  515. package/dist/packages/step-indicator/styles.js +1 -1
  516. package/dist/packages/styles.js +274 -274
  517. package/dist/packages/switch/react.d.ts +1 -1
  518. package/dist/packages/switch/react.js +6 -6
  519. package/dist/packages/switch/styles.js +1 -1
  520. package/dist/packages/switch/switch.a11y.test.d.ts +1 -1
  521. package/dist/packages/switch/switch.a11y.test.js +46 -38
  522. package/dist/packages/switch/switch.d.ts +1 -1
  523. package/dist/packages/switch/switch.hydration.test.d.ts +1 -1
  524. package/dist/packages/switch/switch.hydration.test.js +23 -23
  525. package/dist/packages/switch/switch.js +299 -299
  526. package/dist/packages/switch/switch.js.map +2 -2
  527. package/dist/packages/switch/switch.react.stories.d.ts +2 -2
  528. package/dist/packages/switch/switch.react.stories.js +2 -2
  529. package/dist/packages/switch/switch.stories.d.ts +2 -2
  530. package/dist/packages/switch/switch.stories.js +42 -37
  531. package/dist/packages/switch/switch.test.d.ts +1 -1
  532. package/dist/packages/switch/switch.test.js +30 -35
  533. package/dist/packages/tab/react.d.ts +6 -4
  534. package/dist/packages/tab/react.js +11 -10
  535. package/dist/packages/tab/styles.d.ts +1 -0
  536. package/dist/packages/tab/styles.js +2 -0
  537. package/dist/packages/tab/tab.d.ts +5 -5
  538. package/dist/packages/tab/tab.hydration.test.d.ts +1 -1
  539. package/dist/packages/tab/tab.hydration.test.js +18 -12
  540. package/dist/packages/tab/tab.js +305 -304
  541. package/dist/packages/tab/tab.js.map +3 -3
  542. package/dist/packages/tab/tab.react.test.js +5 -3
  543. package/dist/packages/tab-panel/react.d.ts +3 -2
  544. package/dist/packages/tab-panel/react.js +11 -5
  545. package/dist/packages/tab-panel/tab-panel.d.ts +3 -3
  546. package/dist/packages/tab-panel/tab-panel.hydration.test.d.ts +1 -1
  547. package/dist/packages/tab-panel/tab-panel.hydration.test.js +13 -10
  548. package/dist/packages/tab-panel/tab-panel.js +289 -287
  549. package/dist/packages/tab-panel/tab-panel.js.map +2 -2
  550. package/dist/packages/tabs/index.d.ts +4 -4
  551. package/dist/packages/tabs/index.js +3 -3
  552. package/dist/packages/tabs/react.d.ts +27 -8
  553. package/dist/packages/tabs/react.js +30 -9
  554. package/dist/packages/tabs/styles.js +1 -1
  555. package/dist/packages/tabs/tabs.a11y.test.d.ts +3 -3
  556. package/dist/packages/tabs/tabs.a11y.test.js +188 -169
  557. package/dist/packages/tabs/tabs.d.ts +3 -3
  558. package/dist/packages/tabs/tabs.hydration.test.d.ts +3 -1
  559. package/dist/packages/tabs/tabs.hydration.test.js +22 -8
  560. package/dist/packages/tabs/tabs.js +289 -282
  561. package/dist/packages/tabs/tabs.js.map +2 -2
  562. package/dist/packages/tabs/tabs.react.stories.d.ts +12 -10
  563. package/dist/packages/tabs/tabs.react.stories.js +28 -28
  564. package/dist/packages/tabs/tabs.stories.d.ts +4 -4
  565. package/dist/packages/tabs/tabs.stories.js +101 -95
  566. package/dist/packages/tabs/tabs.test.d.ts +3 -3
  567. package/dist/packages/tabs/tabs.test.js +136 -122
  568. package/dist/packages/textarea/react.d.ts +2 -2
  569. package/dist/packages/textarea/react.js +17 -17
  570. package/dist/packages/textarea/styles.js +1 -1
  571. package/dist/packages/textarea/textarea.a11y.test.d.ts +1 -1
  572. package/dist/packages/textarea/textarea.a11y.test.js +89 -57
  573. package/dist/packages/textarea/textarea.d.ts +1 -1
  574. package/dist/packages/textarea/textarea.hydration.test.d.ts +1 -1
  575. package/dist/packages/textarea/textarea.hydration.test.js +19 -19
  576. package/dist/packages/textarea/textarea.js +300 -298
  577. package/dist/packages/textarea/textarea.js.map +2 -2
  578. package/dist/packages/textarea/textarea.react.stories.d.ts +3 -3
  579. package/dist/packages/textarea/textarea.react.stories.js +13 -13
  580. package/dist/packages/textarea/textarea.react.test.js +7 -7
  581. package/dist/packages/textarea/textarea.stories.d.ts +3 -3
  582. package/dist/packages/textarea/textarea.stories.js +44 -42
  583. package/dist/packages/textarea/textarea.test.d.ts +1 -1
  584. package/dist/packages/textarea/textarea.test.js +124 -88
  585. package/dist/packages/textfield/react.d.ts +2 -2
  586. package/dist/packages/textfield/react.js +17 -17
  587. package/dist/packages/textfield/styles/w-textfield.styles.js +60 -58
  588. package/dist/packages/textfield/styles.js +1 -1
  589. package/dist/packages/textfield/textfield.d.ts +3 -3
  590. package/dist/packages/textfield/textfield.hydration.test.d.ts +1 -1
  591. package/dist/packages/textfield/textfield.hydration.test.js +19 -19
  592. package/dist/packages/textfield/textfield.js +376 -368
  593. package/dist/packages/textfield/textfield.js.map +3 -3
  594. package/dist/packages/textfield/textfield.react.stories.d.ts +3 -3
  595. package/dist/packages/textfield/textfield.react.stories.js +31 -31
  596. package/dist/packages/textfield/textfield.react.test.js +7 -7
  597. package/dist/packages/textfield/textfield.stories.d.ts +4 -4
  598. package/dist/packages/textfield/textfield.stories.js +107 -89
  599. package/dist/packages/textfield/textfield.test.d.ts +2 -2
  600. package/dist/packages/textfield/textfield.test.js +103 -71
  601. package/dist/packages/toast/api.d.ts +1 -1
  602. package/dist/packages/toast/api.js +3 -3
  603. package/dist/packages/toast/index.d.ts +5 -5
  604. package/dist/packages/toast/index.js +5 -5
  605. package/dist/packages/toast/toast.d.ts +4 -4
  606. package/dist/packages/toast/toast.js +346 -317
  607. package/dist/packages/toast/toast.js.map +4 -4
  608. package/dist/packages/toast/toast.stories.d.ts +4 -4
  609. package/dist/packages/toast/toast.stories.js +37 -16
  610. package/dist/packages/toast/toast.test.d.ts +1 -1
  611. package/dist/packages/toast/toast.test.js +48 -31
  612. package/dist/packages/toast/types.d.ts +1 -1
  613. package/dist/packages/toast-container/styles.js +1 -1
  614. package/dist/packages/toast-container/toast-container.d.ts +2 -2
  615. package/dist/packages/toast-container/toast-container.js +291 -290
  616. package/dist/packages/toast-container/toast-container.js.map +2 -2
  617. package/dist/packages/utils/element-collapse.d.ts +12 -0
  618. package/dist/packages/utils/element-collapse.js +102 -0
  619. package/dist/packages/utils/expand-transition.d.ts +1 -1
  620. package/dist/packages/utils/expand-transition.js +12 -10
  621. package/dist/packages/utils/unstyled-heading.d.ts +1 -1
  622. package/dist/packages/utils/unstyled-heading.js +4 -4
  623. package/dist/packages/utils/window-exists.js +1 -1
  624. package/dist/packages/utils.js +2 -2
  625. package/dist/setup-tests.d.ts +3 -3
  626. package/dist/setup-tests.js +16 -13
  627. package/dist/tests/react-hydration.js +29 -30
  628. package/dist/tests/react-ssr-attributes.d.ts +1 -1
  629. package/dist/tests/react-ssr-attributes.js +4 -4
  630. package/dist/web-types.json +110 -22
  631. package/eik/index.js +12 -12
  632. package/package.json +11 -18
@@ -1,229 +1,248 @@
1
- import { userEvent } from 'vitest/browser';
2
- import { html } from 'lit';
3
- import { describe, expect, test } from 'vitest';
4
- import { render } from 'vitest-browser-lit';
5
- import '../tab/tab.js';
6
- import '../tab-panel/tab-panel.js';
7
- import './tabs.js';
8
- describe('w-tabs, w-tab-panel, w-tab accessibility (WCAG 2.2)', () => {
9
- describe('axe-core automated checks', () => {
10
- test('default state has no violations', async () => {
1
+ import { userEvent } from "vitest/browser";
2
+ import { html } from "lit";
3
+ import { describe, expect, test } from "vitest";
4
+ import { render } from "vitest-browser-lit";
5
+ import "../tab/tab.js";
6
+ import "../tab-panel/tab-panel.js";
7
+ import "./tabs.js";
8
+ describe("w-tabs, w-tab-panel, w-tab accessibility (WCAG 2.2)", () => {
9
+ describe("axe-core automated checks", () => {
10
+ test("default state has no violations", async () => {
11
11
  const page = render(html `<w-tabs>
12
- <w-tab for="fellowship">Fellowship</w-tab>
13
- <w-tab-panel id="fellowship">
14
- <p>And my axe!</p>
15
- </w-tab-panel>
12
+ <w-tab for="fellowship">Fellowship</w-tab>
13
+ <w-tab-panel id="fellowship">
14
+ <p>And my axe!</p>
15
+ </w-tab-panel>
16
16
 
17
- <w-tab for="towers">Towers</w-tab>
18
- <w-tab-panel id="towers">
19
- <p>
20
- I am on nobody's side, because nobody is on my side, little orc.
21
- </p>
22
- </w-tab-panel>
17
+ <w-tab for="towers">Towers</w-tab>
18
+ <w-tab-panel id="towers">
19
+ <p>
20
+ I am on nobody's side, because nobody is on my side, little orc.
21
+ </p>
22
+ </w-tab-panel>
23
23
 
24
- <w-tab for="return">Return</w-tab>
25
- <w-tab-panel id="return">
26
- <p>I am no man.</p>
27
- </w-tab-panel>
28
- </w-tabs>`);
24
+ <w-tab for="return">Return</w-tab>
25
+ <w-tab-panel id="return">
26
+ <p>I am no man.</p>
27
+ </w-tab-panel>
28
+ </w-tabs>`);
29
29
  await expect(page).toHaveNoAxeViolations();
30
30
  });
31
- test('active tab state has no violations', async () => {
31
+ test("active tab state has no violations", async () => {
32
32
  const page = render(html `<w-tabs active="towers">
33
- <w-tab for="fellowship">Fellowship</w-tab>
34
- <w-tab-panel id="fellowship">
35
- <p>And my axe!</p>
36
- </w-tab-panel>
33
+ <w-tab for="fellowship">Fellowship</w-tab>
34
+ <w-tab-panel id="fellowship">
35
+ <p>And my axe!</p>
36
+ </w-tab-panel>
37
37
 
38
- <w-tab for="towers">Towers</w-tab>
39
- <w-tab-panel id="towers">
40
- <p>
41
- I am on nobody's side, because nobody is on my side, little orc.
42
- </p>
43
- </w-tab-panel>
38
+ <w-tab for="towers">Towers</w-tab>
39
+ <w-tab-panel id="towers">
40
+ <p>
41
+ I am on nobody's side, because nobody is on my side, little orc.
42
+ </p>
43
+ </w-tab-panel>
44
44
 
45
- <w-tab for="return">Return</w-tab>
46
- <w-tab-panel id="return">
47
- <p>I am no man.</p>
48
- </w-tab-panel>
49
- </w-tabs>`);
45
+ <w-tab for="return">Return</w-tab>
46
+ <w-tab-panel id="return">
47
+ <p>I am no man.</p>
48
+ </w-tab-panel>
49
+ </w-tabs>`);
50
50
  await expect(page).toHaveNoAxeViolations();
51
51
  });
52
52
  });
53
- describe('WCAG 1.3.1 - Info and Relationships', () => {
54
- test('w-tab has role tab, w-tab-panel has role tabpanel', async () => {
53
+ describe("WCAG 1.3.1 - Info and Relationships", () => {
54
+ test("w-tab has role tab, w-tab-panel has role tabpanel", async () => {
55
55
  const page = render(html `<w-tabs active="towers">
56
- <w-tab for="fellowship">Fellowship</w-tab>
57
- <w-tab-panel id="fellowship">
58
- <p>And my axe!</p>
59
- </w-tab-panel>
56
+ <w-tab for="fellowship">Fellowship</w-tab>
57
+ <w-tab-panel id="fellowship">
58
+ <p>And my axe!</p>
59
+ </w-tab-panel>
60
60
 
61
- <w-tab for="towers">Towers</w-tab>
62
- <w-tab-panel id="towers">
63
- <p>
64
- I am on nobody's side, because nobody is on my side, little orc.
65
- </p>
66
- </w-tab-panel>
61
+ <w-tab for="towers">Towers</w-tab>
62
+ <w-tab-panel id="towers">
63
+ <p>
64
+ I am on nobody's side, because nobody is on my side, little orc.
65
+ </p>
66
+ </w-tab-panel>
67
67
 
68
- <w-tab for="return">Return</w-tab>
69
- <w-tab-panel id="return">
70
- <p>I am no man.</p>
71
- </w-tab-panel>
72
- </w-tabs>`);
73
- await page.container.querySelector('w-tabs').updateComplete;
68
+ <w-tab for="return">Return</w-tab>
69
+ <w-tab-panel id="return">
70
+ <p>I am no man.</p>
71
+ </w-tab-panel>
72
+ </w-tabs>`);
73
+ await page.container.querySelector("w-tabs").updateComplete;
74
74
  // ElementInternals roles are set in accessibility tree but not queryable via getByRole
75
75
  // Query by element tag name instead
76
- expect(page.container.querySelectorAll('w-tab')).toHaveLength(3);
77
- expect(page.container.querySelectorAll('w-tab-panel')).toHaveLength(3);
76
+ expect(page.container.querySelectorAll("w-tab")).toHaveLength(3);
77
+ expect(page.container.querySelectorAll("w-tab-panel")).toHaveLength(3);
78
78
  });
79
- test('w-tab and w-tab-panel has a defined relationship through aria-controls, aria-labelledby', async () => {
79
+ test("w-tab and w-tab-panel has a defined relationship through aria-controls, aria-labelledby", async () => {
80
80
  const page = render(html `<w-tabs active="fellowship">
81
- <w-tab for="fellowship">Fellowship</w-tab>
82
- <w-tab-panel id="fellowship">
83
- <p>And my axe!</p>
84
- </w-tab-panel>
81
+ <w-tab for="fellowship">Fellowship</w-tab>
82
+ <w-tab-panel id="fellowship">
83
+ <p>And my axe!</p>
84
+ </w-tab-panel>
85
85
 
86
- <w-tab for="towers">Towers</w-tab>
87
- <w-tab-panel id="towers">
88
- <p>
89
- I am on nobody's side, because nobody is on my side, little orc.
90
- </p>
91
- </w-tab-panel>
86
+ <w-tab for="towers">Towers</w-tab>
87
+ <w-tab-panel id="towers">
88
+ <p>
89
+ I am on nobody's side, because nobody is on my side, little orc.
90
+ </p>
91
+ </w-tab-panel>
92
92
 
93
- <w-tab for="return">Return</w-tab>
94
- <w-tab-panel id="return">
95
- <p>I am no man.</p>
96
- </w-tab-panel>
97
- </w-tabs>`);
98
- await page.container.querySelector('w-tabs').updateComplete;
93
+ <w-tab for="return">Return</w-tab>
94
+ <w-tab-panel id="return">
95
+ <p>I am no man.</p>
96
+ </w-tab-panel>
97
+ </w-tabs>`);
98
+ await page.container.querySelector("w-tabs").updateComplete;
99
99
  // Check aria-controls is set correctly on tabs (on internal button with delegatesFocus)
100
- const firstTab = page.container.querySelector('w-tab');
101
- const internalButton = firstTab.shadowRoot?.querySelector('button');
102
- expect(internalButton?.getAttribute('aria-controls')).toBe('fellowship');
103
- expect(firstTab.textContent?.trim()).toBe('Fellowship');
100
+ const firstTab = page.container.querySelector("w-tab");
101
+ const internalButton = firstTab.shadowRoot?.querySelector("button");
102
+ expect(internalButton?.getAttribute("aria-controls")).toBe("fellowship");
103
+ expect(firstTab.textContent?.trim()).toBe("Fellowship");
104
104
  });
105
- test('consumer-provided aria-controls is preserved and used', async () => {
105
+ test("consumer-provided aria-controls is preserved and used", async () => {
106
106
  const page = render(html `<w-tabs active="fellowship">
107
- <w-tab for="fellowship" aria-controls="fellowship-panel">Fellowship</w-tab>
108
- <w-tab-panel id="fellowship-panel">
109
- <p>And my axe!</p>
110
- </w-tab-panel>
111
- </w-tabs>`);
112
- await page.container.querySelector('w-tabs').updateComplete;
113
- const firstTab = page.container.querySelector('w-tab');
114
- const internalButton = firstTab.shadowRoot?.querySelector('button');
115
- expect(firstTab.getAttribute('aria-controls')).toBe('fellowship-panel');
116
- expect(internalButton?.getAttribute('aria-controls')).toBe('fellowship-panel');
107
+ <w-tab for="fellowship" aria-controls="fellowship-panel"
108
+ >Fellowship</w-tab
109
+ >
110
+ <w-tab-panel id="fellowship-panel">
111
+ <p>And my axe!</p>
112
+ </w-tab-panel>
113
+ </w-tabs>`);
114
+ await page.container.querySelector("w-tabs").updateComplete;
115
+ const firstTab = page.container.querySelector("w-tab");
116
+ const internalButton = firstTab.shadowRoot?.querySelector("button");
117
+ expect(firstTab.getAttribute("aria-controls")).toBe("fellowship-panel");
118
+ expect(internalButton?.getAttribute("aria-controls")).toBe("fellowship-panel");
117
119
  });
118
120
  });
119
- describe('WCAG 4.1.2 - Name, Role, Value', () => {
120
- test('active tab is marked as selected', async () => {
121
+ describe("WCAG 4.1.2 - Name, Role, Value", () => {
122
+ test("active tab is marked as selected", async () => {
121
123
  const page = render(html `<w-tabs active="towers">
122
- <w-tab for="fellowship">Fellowship</w-tab>
123
- <w-tab-panel id="fellowship">
124
- <p>And my axe!</p>
125
- </w-tab-panel>
124
+ <w-tab for="fellowship">Fellowship</w-tab>
125
+ <w-tab-panel id="fellowship">
126
+ <p>And my axe!</p>
127
+ </w-tab-panel>
126
128
 
127
- <w-tab for="towers">Towers</w-tab>
128
- <w-tab-panel id="towers">
129
- <p>
130
- I am on nobody's side, because nobody is on my side, little orc.
131
- </p>
132
- </w-tab-panel>
129
+ <w-tab for="towers">Towers</w-tab>
130
+ <w-tab-panel id="towers">
131
+ <p>
132
+ I am on nobody's side, because nobody is on my side, little orc.
133
+ </p>
134
+ </w-tab-panel>
133
135
 
134
- <w-tab for="return">Return</w-tab>
135
- <w-tab-panel id="return">
136
- <p>I am no man.</p>
137
- </w-tab-panel>
138
- </w-tabs>`);
139
- await page.container.querySelector('w-tabs').updateComplete;
136
+ <w-tab for="return">Return</w-tab>
137
+ <w-tab-panel id="return">
138
+ <p>I am no man.</p>
139
+ </w-tab-panel>
140
+ </w-tabs>`);
141
+ await page.container.querySelector("w-tabs").updateComplete;
140
142
  // Query by property since aria-selected is set via ElementInternals (no DOM attribute)
141
- const selectedTab = [...page.container.querySelectorAll('w-tab')].find((tab) => tab.ariaSelected === 'true');
142
- await expect.element(selectedTab).toHaveTextContent('Towers');
143
+ const selectedTab = [
144
+ ...page.container.querySelectorAll("w-tab"),
145
+ ].find((tab) => tab.ariaSelected === "true");
146
+ await expect
147
+ .element(selectedTab)
148
+ .toHaveTextContent("Towers");
143
149
  });
144
150
  });
145
- describe('WCAG 2.1.1 - Keyboard', () => {
146
- test('active tab is focusable, can use the arrow keys to change tabs', async () => {
151
+ describe("WCAG 2.1.1 - Keyboard", () => {
152
+ test("active tab is focusable, can use the arrow keys to change tabs", async () => {
147
153
  const page = render(html `<w-tabs active="towers">
148
- <w-tab for="fellowship">Fellowship</w-tab>
149
- <w-tab-panel id="fellowship">
150
- <p>And my axe!</p>
151
- </w-tab-panel>
154
+ <w-tab for="fellowship">Fellowship</w-tab>
155
+ <w-tab-panel id="fellowship">
156
+ <p>And my axe!</p>
157
+ </w-tab-panel>
152
158
 
153
- <w-tab for="towers">Towers</w-tab>
154
- <w-tab-panel id="towers">
155
- <p>
156
- I am on nobody's side, because nobody is on my side, little orc.
157
- </p>
158
- </w-tab-panel>
159
+ <w-tab for="towers">Towers</w-tab>
160
+ <w-tab-panel id="towers">
161
+ <p>
162
+ I am on nobody's side, because nobody is on my side, little orc.
163
+ </p>
164
+ </w-tab-panel>
159
165
 
160
- <w-tab for="return">Return</w-tab>
161
- <w-tab-panel id="return">
162
- <p>I am no man.</p>
163
- </w-tab-panel>
164
- </w-tabs>`);
165
- await page.container.querySelector('w-tabs').updateComplete;
166
+ <w-tab for="return">Return</w-tab>
167
+ <w-tab-panel id="return">
168
+ <p>I am no man.</p>
169
+ </w-tab-panel>
170
+ </w-tabs>`);
171
+ await page.container.querySelector("w-tabs").updateComplete;
166
172
  // Query by property since aria-selected is set via ElementInternals (no DOM attribute)
167
- const selectedTab = [...page.container.querySelectorAll('w-tab')].find((tab) => tab.ariaSelected === 'true');
173
+ const selectedTab = [
174
+ ...page.container.querySelectorAll("w-tab"),
175
+ ].find((tab) => tab.ariaSelected === "true");
168
176
  selectedTab.focus();
169
- await userEvent.keyboard('{ArrowLeft}');
170
- await expect.element(page.getByText('And my axe!')).toBeVisible();
171
- await expect.element(page.getByText('I am no man')).not.toBeVisible();
172
- await expect.element(page.getByText("I am on nobody's side")).not.toBeVisible();
177
+ await userEvent.keyboard("{ArrowLeft}");
178
+ await expect.element(page.getByText("And my axe!")).toBeVisible();
179
+ await expect.element(page.getByText("I am no man")).not.toBeVisible();
180
+ await expect
181
+ .element(page.getByText("I am on nobody's side"))
182
+ .not.toBeVisible();
173
183
  });
174
- test('inactive tabs have tabindex -1', async () => {
184
+ test("inactive tabs have tabindex -1", async () => {
175
185
  const page = render(html `<w-tabs active="towers">
176
- <w-tab for="fellowship">Fellowship</w-tab>
177
- <w-tab-panel id="fellowship">
178
- <p>And my axe!</p>
179
- </w-tab-panel>
186
+ <w-tab for="fellowship">Fellowship</w-tab>
187
+ <w-tab-panel id="fellowship">
188
+ <p>And my axe!</p>
189
+ </w-tab-panel>
180
190
 
181
- <w-tab for="towers">Towers</w-tab>
182
- <w-tab-panel id="towers">
183
- <p>
184
- I am on nobody's side, because nobody is on my side, little orc.
185
- </p>
186
- </w-tab-panel>
191
+ <w-tab for="towers">Towers</w-tab>
192
+ <w-tab-panel id="towers">
193
+ <p>
194
+ I am on nobody's side, because nobody is on my side, little orc.
195
+ </p>
196
+ </w-tab-panel>
187
197
 
188
- <w-tab for="return">Return</w-tab>
189
- <w-tab-panel id="return">
190
- <p>I am no man.</p>
191
- </w-tab-panel>
192
- </w-tabs>`);
193
- await page.container.querySelector('w-tabs').updateComplete;
198
+ <w-tab for="return">Return</w-tab>
199
+ <w-tab-panel id="return">
200
+ <p>I am no man.</p>
201
+ </w-tab-panel>
202
+ </w-tabs>`);
203
+ await page.container.querySelector("w-tabs").updateComplete;
194
204
  // Query by property since aria-selected is set via ElementInternals (no DOM attribute)
195
- const inactiveTabs = [...page.container.querySelectorAll('w-tab')].filter((tab) => tab.ariaSelected === 'false');
205
+ const inactiveTabs = [
206
+ ...page.container.querySelectorAll("w-tab"),
207
+ ].filter((tab) => tab.ariaSelected === "false");
196
208
  expect(inactiveTabs).toHaveLength(2);
197
209
  // Check tabIndex property (not attribute) since delegatesFocus is used
198
210
  for (const tab of inactiveTabs) {
199
211
  expect(tab.tabIndex).toBe(-1);
200
212
  }
201
213
  });
202
- test('active tab shows visible focus indicator on keyboard focus', async () => {
214
+ test("active tab shows visible focus indicator on keyboard focus", async () => {
203
215
  const page = render(html `<button type="button">Before</button>
204
- <w-tabs active="towers">
205
- <w-tab for="fellowship">Fellowship</w-tab>
206
- <w-tab-panel id="fellowship"><p>And my axe!</p></w-tab-panel>
216
+ <w-tabs active="towers">
217
+ <w-tab for="fellowship">Fellowship</w-tab>
218
+ <w-tab-panel id="fellowship"><p>And my axe!</p></w-tab-panel>
207
219
 
208
- <w-tab for="towers">Towers</w-tab>
209
- <w-tab-panel id="towers"><p>I am on nobody's side.</p></w-tab-panel>
210
- </w-tabs>`);
211
- await page.container.querySelector('w-tabs').updateComplete;
212
- const beforeButton = page.getByRole('button', { name: 'Before' }).element();
220
+ <w-tab for="towers">Towers</w-tab>
221
+ <w-tab-panel id="towers"><p>I am on nobody's side.</p></w-tab-panel>
222
+ </w-tabs>`);
223
+ await page.container.querySelector("w-tabs").updateComplete;
224
+ const beforeButton = page
225
+ .getByRole("button", { name: "Before" })
226
+ .element();
213
227
  beforeButton.focus();
214
- await expect.element(page.getByRole('button', { name: 'Before' })).toHaveFocus();
228
+ await expect
229
+ .element(page.getByRole("button", { name: "Before" }))
230
+ .toHaveFocus();
215
231
  await userEvent.tab();
216
- const selectedTab = [...page.container.querySelectorAll('w-tab')].find((tab) => tab.ariaSelected === 'true');
217
- const internalButton = selectedTab.shadowRoot?.querySelector('button');
232
+ const selectedTab = [
233
+ ...page.container.querySelectorAll("w-tab"),
234
+ ].find((tab) => tab.ariaSelected === "true");
235
+ const internalButton = selectedTab.shadowRoot?.querySelector("button");
218
236
  if (!internalButton) {
219
- throw new Error('Expected selected tab to have an internal button');
237
+ throw new Error("Expected selected tab to have an internal button");
220
238
  }
221
239
  const activeEl = document.activeElement;
222
240
  expect(activeEl === selectedTab || activeEl === internalButton).toBe(true);
223
241
  const hostStyle = getComputedStyle(selectedTab);
224
242
  const buttonStyle = getComputedStyle(internalButton);
225
- const hostHasRing = hostStyle.outlineStyle === 'solid' && hostStyle.outlineWidth !== '0px';
226
- const buttonHasRing = buttonStyle.outlineStyle === 'solid' && buttonStyle.outlineWidth !== '0px';
243
+ const hostHasRing = hostStyle.outlineStyle === "solid" && hostStyle.outlineWidth !== "0px";
244
+ const buttonHasRing = buttonStyle.outlineStyle === "solid" &&
245
+ buttonStyle.outlineWidth !== "0px";
227
246
  expect(hostHasRing || buttonHasRing).toBe(true);
228
247
  });
229
248
  });
@@ -1,5 +1,5 @@
1
- import { LitElement, PropertyValues } from 'lit';
2
- import { WarpTab } from '../tab/tab.js';
1
+ import { LitElement, PropertyValues } from "lit";
2
+ import { WarpTab } from "../tab/tab.js";
3
3
  export type WarpTabsChangeEvent = CustomEvent<{
4
4
  panelId: string;
5
5
  }>;
@@ -44,6 +44,6 @@ export declare class WarpTabs extends LitElement {
44
44
  }
45
45
  declare global {
46
46
  interface HTMLElementTagNameMap {
47
- 'w-tabs': WarpTabs;
47
+ "w-tabs": WarpTabs;
48
48
  }
49
49
  }
@@ -1 +1,3 @@
1
- import './index.js';
1
+ import "../tab/tab.js";
2
+ import "../tab-panel/tab-panel.js";
3
+ import "./index.js";
@@ -1,7 +1,9 @@
1
- import { afterEach, beforeEach, describe, expect, test } from 'vitest';
2
- import { setupHydrationWarningCapture, testHydration } from '../../tests/react-hydration';
3
- import './index.js';
4
- describe('w-tabs React SSR hydration', () => {
1
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
2
+ import { setupHydrationWarningCapture, testHydration, testHydrationWithChildren, } from "../../tests/react-hydration";
3
+ import "../tab/tab.js";
4
+ import "../tab-panel/tab-panel.js";
5
+ import "./index.js";
6
+ describe("w-tabs React SSR hydration", () => {
5
7
  beforeEach(() => setupHydrationWarningCapture());
6
8
  afterEach(() => {
7
9
  window.__HYDRATION_WARNINGS__ = [];
@@ -9,12 +11,24 @@ describe('w-tabs React SSR hydration', () => {
9
11
  // Note: w-tabs requires w-tab and w-tab-panel children to function properly.
10
12
  // Testing the parent element alone to verify its own attributes don't cause mismatch.
11
13
  // Full parent/child hydration requires React component wrappers or framework integration.
12
- test('default (no attributes) hydrates without warnings', async () => {
13
- const warnings = await testHydration('w-tabs', {});
14
+ test("default (no attributes) hydrates without warnings", async () => {
15
+ const warnings = await testHydration("w-tabs", {});
14
16
  expect(warnings).toEqual([]);
15
17
  });
16
- test('with active prop hydrates without warnings', async () => {
17
- const warnings = await testHydration('w-tabs', { active: 'panel1' });
18
+ test("with active prop hydrates without warnings", async () => {
19
+ const warnings = await testHydration("w-tabs", { active: "panel1" });
20
+ expect(warnings).toEqual([]);
21
+ });
22
+ test("with w-tab and w-tab-panel hydrates without warnings as long as you provide slot, ID and active tab ahead of time", async () => {
23
+ const childrenHtml = /* html */ `<w-tab id="t1" slot="tabs" for="tab1"><span>First</span></w-tab><w-tab id="t2" slot="tabs" for="tab2"><span>Second</span></w-tab><w-tab id="t3" slot="tabs" for="tab3"><span>Third</span></w-tab><w-tab-panel id="tab1" slot="panels"><p>Content the first</p></w-tab-panel><w-tab-panel id="tab2" slot="panels"><p>Content the second</p></w-tab-panel><w-tab-panel id="tab3" slot="panels"><p>Content the third</p></w-tab-panel>`;
24
+ const warnings = await testHydrationWithChildren("w-tabs", {
25
+ active: "tab1",
26
+ }, childrenHtml);
27
+ expect(warnings).toEqual([]);
28
+ });
29
+ test.fails("with w-tab and w-tab-panel hydrates with warnings if you omit the client-side added attributes", async () => {
30
+ const childrenHtml = /* html */ `<w-tab for="tab1"><span>First</span></w-tab><w-tab for="tab2"><span>Second</span></w-tab><w-tab for="tab3"><span>Third</span></w-tab><w-tab-panel id="tab1"><p>Content the first</p></w-tab-panel><w-tab-panel id="tab2"><p>Content the second</p></w-tab-panel><w-tab-panel id="tab3"><p>Content the third</p></w-tab-panel>`;
31
+ const warnings = await testHydrationWithChildren("w-tabs", {}, childrenHtml);
18
32
  expect(warnings).toEqual([]);
19
33
  });
20
34
  });