@warp-ds/elements 2.10.0-next.15 → 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 (594) hide show
  1. package/dist/.storybook/utilities.js +4 -4
  2. package/dist/api.js.map +2 -2
  3. package/dist/custom-elements.json +68 -56
  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 +2 -2
  9. package/dist/docs/attention/attention.md +2 -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/checkbox/api.md +2 -2
  15. package/dist/docs/checkbox/checkbox.md +176 -2
  16. package/dist/docs/checkbox/styling.md +173 -0
  17. package/dist/docs/checkbox-group/checkbox-group.md +43 -30
  18. package/dist/docs/checkbox-group/styling.md +31 -29
  19. package/dist/docs/combobox/api.md +12 -12
  20. package/dist/docs/combobox/combobox.md +12 -12
  21. package/dist/docs/datepicker/api.md +6 -6
  22. package/dist/docs/datepicker/datepicker.md +6 -6
  23. package/dist/docs/icon/api.md +3 -3
  24. package/dist/docs/icon/icon.md +3 -3
  25. package/dist/docs/index.md +1 -1
  26. package/dist/docs/radio-group/api.md +4 -4
  27. package/dist/docs/radio-group/radio-group.md +183 -68
  28. package/dist/docs/radio-group/styling.md +179 -64
  29. package/dist/docs/snackbar/api.md +1 -1
  30. package/dist/docs/snackbar/snackbar.md +1 -1
  31. package/dist/docs/snackbar-item/api.md +2 -2
  32. package/dist/docs/snackbar-item/snackbar-item.md +2 -2
  33. package/dist/index.d.ts +24 -2
  34. package/dist/packages/affix/affix.d.ts +4 -4
  35. package/dist/packages/affix/affix.hydration.test.d.ts +1 -1
  36. package/dist/packages/affix/affix.hydration.test.js +15 -15
  37. package/dist/packages/affix/affix.js +345 -315
  38. package/dist/packages/affix/affix.js.map +2 -2
  39. package/dist/packages/affix/affix.react.stories.d.ts +2 -2
  40. package/dist/packages/affix/affix.react.stories.js +3 -3
  41. package/dist/packages/affix/affix.react.test.js +5 -3
  42. package/dist/packages/affix/affix.stories.d.ts +3 -3
  43. package/dist/packages/affix/affix.stories.js +10 -10
  44. package/dist/packages/affix/affix.test.d.ts +1 -1
  45. package/dist/packages/affix/affix.test.js +10 -10
  46. package/dist/packages/affix/react.d.ts +2 -2
  47. package/dist/packages/affix/react.js +6 -6
  48. package/dist/packages/affix/styles.js +1 -1
  49. package/dist/packages/alert/alert.d.ts +3 -3
  50. package/dist/packages/alert/alert.hydration.test.d.ts +1 -1
  51. package/dist/packages/alert/alert.hydration.test.js +21 -21
  52. package/dist/packages/alert/alert.js +344 -319
  53. package/dist/packages/alert/alert.js.map +2 -2
  54. package/dist/packages/alert/alert.react.stories.d.ts +2 -2
  55. package/dist/packages/alert/alert.react.stories.js +13 -13
  56. package/dist/packages/alert/alert.stories.d.ts +4 -4
  57. package/dist/packages/alert/alert.stories.js +29 -27
  58. package/dist/packages/alert/alert.test.d.ts +1 -1
  59. package/dist/packages/alert/alert.test.js +34 -21
  60. package/dist/packages/alert/react.d.ts +1 -1
  61. package/dist/packages/alert/react.js +4 -4
  62. package/dist/packages/alert/styles.js +1 -1
  63. package/dist/packages/attention/attention.d.ts +7 -7
  64. package/dist/packages/attention/attention.hydration.test.d.ts +1 -1
  65. package/dist/packages/attention/attention.hydration.test.js +29 -29
  66. package/dist/packages/attention/attention.js +1725 -1683
  67. package/dist/packages/attention/attention.js.map +2 -2
  68. package/dist/packages/attention/attention.react.stories.d.ts +3 -3
  69. package/dist/packages/attention/attention.react.stories.js +13 -13
  70. package/dist/packages/attention/attention.react.test.js +11 -7
  71. package/dist/packages/attention/attention.stories.d.ts +4 -4
  72. package/dist/packages/attention/attention.stories.js +126 -117
  73. package/dist/packages/attention/attention.test.d.ts +1 -1
  74. package/dist/packages/attention/attention.test.js +18 -10
  75. package/dist/packages/attention/layout-styles.js +900 -900
  76. package/dist/packages/attention/react.d.ts +4 -4
  77. package/dist/packages/attention/react.js +13 -11
  78. package/dist/packages/attention/styles.js +1 -1
  79. package/dist/packages/badge/badge.d.ts +3 -3
  80. package/dist/packages/badge/badge.hydration.test.d.ts +1 -1
  81. package/dist/packages/badge/badge.hydration.test.js +25 -25
  82. package/dist/packages/badge/badge.js +276 -276
  83. package/dist/packages/badge/badge.js.map +2 -2
  84. package/dist/packages/badge/badge.react.stories.d.ts +3 -3
  85. package/dist/packages/badge/badge.react.stories.js +17 -17
  86. package/dist/packages/badge/badge.stories.d.ts +3 -3
  87. package/dist/packages/badge/badge.stories.js +22 -20
  88. package/dist/packages/badge/badge.test.d.ts +1 -1
  89. package/dist/packages/badge/badge.test.js +13 -11
  90. package/dist/packages/badge/react.d.ts +1 -1
  91. package/dist/packages/badge/react.js +4 -4
  92. package/dist/packages/badge/styles.js +1 -1
  93. package/dist/packages/box/box.d.ts +1 -1
  94. package/dist/packages/box/box.hydration.test.d.ts +1 -1
  95. package/dist/packages/box/box.hydration.test.js +14 -14
  96. package/dist/packages/box/box.js +283 -283
  97. package/dist/packages/box/box.js.map +2 -2
  98. package/dist/packages/box/box.react.stories.d.ts +3 -3
  99. package/dist/packages/box/box.react.stories.js +8 -8
  100. package/dist/packages/box/box.stories.d.ts +3 -3
  101. package/dist/packages/box/box.stories.js +25 -19
  102. package/dist/packages/box/box.test.d.ts +1 -1
  103. package/dist/packages/box/box.test.js +6 -6
  104. package/dist/packages/box/react.d.ts +1 -1
  105. package/dist/packages/box/react.js +4 -4
  106. package/dist/packages/box/slot.test.d.ts +1 -1
  107. package/dist/packages/box/slot.test.js +6 -6
  108. package/dist/packages/box/styles.js +1 -1
  109. package/dist/packages/breadcrumbs/breadcrumbs.d.ts +1 -1
  110. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.d.ts +1 -1
  111. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +55 -49
  112. package/dist/packages/breadcrumbs/breadcrumbs.js +284 -278
  113. package/dist/packages/breadcrumbs/breadcrumbs.js.map +2 -2
  114. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.d.ts +3 -3
  115. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.js +6 -6
  116. package/dist/packages/breadcrumbs/breadcrumbs.stories.d.ts +3 -3
  117. package/dist/packages/breadcrumbs/breadcrumbs.stories.js +27 -26
  118. package/dist/packages/breadcrumbs/breadcrumbs.test.d.ts +1 -1
  119. package/dist/packages/breadcrumbs/breadcrumbs.test.js +19 -17
  120. package/dist/packages/breadcrumbs/react.d.ts +1 -1
  121. package/dist/packages/breadcrumbs/react.js +4 -4
  122. package/dist/packages/breadcrumbs/styles.js +1 -1
  123. package/dist/packages/button/button.d.ts +5 -5
  124. package/dist/packages/button/button.hydration.test.d.ts +1 -1
  125. package/dist/packages/button/button.hydration.test.js +19 -19
  126. package/dist/packages/button/button.js +741 -715
  127. package/dist/packages/button/button.js.map +2 -2
  128. package/dist/packages/button/button.react.stories.d.ts +3 -3
  129. package/dist/packages/button/button.react.stories.js +30 -30
  130. package/dist/packages/button/button.react.test.js +13 -13
  131. package/dist/packages/button/button.stories.d.ts +4 -4
  132. package/dist/packages/button/button.stories.js +276 -167
  133. package/dist/packages/button/button.test.d.ts +1 -1
  134. package/dist/packages/button/button.test.js +36 -34
  135. package/dist/packages/button/react.d.ts +2 -2
  136. package/dist/packages/button/react.js +7 -7
  137. package/dist/packages/button/styles.js +373 -347
  138. package/dist/packages/card/card.d.ts +1 -1
  139. package/dist/packages/card/card.hydration.test.d.ts +1 -1
  140. package/dist/packages/card/card.hydration.test.js +14 -14
  141. package/dist/packages/card/card.js +305 -290
  142. package/dist/packages/card/card.js.map +2 -2
  143. package/dist/packages/card/card.react.stories.d.ts +3 -3
  144. package/dist/packages/card/card.react.stories.js +11 -11
  145. package/dist/packages/card/card.stories.d.ts +3 -3
  146. package/dist/packages/card/card.stories.js +36 -24
  147. package/dist/packages/card/card.test.d.ts +1 -1
  148. package/dist/packages/card/card.test.js +6 -6
  149. package/dist/packages/card/react.d.ts +1 -1
  150. package/dist/packages/card/react.js +4 -4
  151. package/dist/packages/card/styles.js +1 -1
  152. package/dist/packages/checkbox/checkbox.a11y.test.d.ts +1 -1
  153. package/dist/packages/checkbox/checkbox.a11y.test.js +47 -33
  154. package/dist/packages/checkbox/checkbox.d.ts +2 -2
  155. package/dist/packages/checkbox/checkbox.hydration.test.d.ts +1 -1
  156. package/dist/packages/checkbox/checkbox.hydration.test.js +21 -21
  157. package/dist/packages/checkbox/checkbox.js +475 -424
  158. package/dist/packages/checkbox/checkbox.js.map +2 -2
  159. package/dist/packages/checkbox/checkbox.react.stories.d.ts +2 -2
  160. package/dist/packages/checkbox/checkbox.react.stories.js +3 -3
  161. package/dist/packages/checkbox/checkbox.stories.d.ts +4 -4
  162. package/dist/packages/checkbox/checkbox.stories.js +99 -91
  163. package/dist/packages/checkbox/checkbox.test.d.ts +1 -1
  164. package/dist/packages/checkbox/checkbox.test.js +64 -64
  165. package/dist/packages/checkbox/react.d.ts +1 -1
  166. package/dist/packages/checkbox/react.js +6 -6
  167. package/dist/packages/checkbox/styles.js +183 -132
  168. package/dist/packages/checkbox-group/checkbox-group.a11y.test.d.ts +2 -2
  169. package/dist/packages/checkbox-group/checkbox-group.a11y.test.js +83 -73
  170. package/dist/packages/checkbox-group/checkbox-group.d.ts +16 -2
  171. package/dist/packages/checkbox-group/checkbox-group.hydration.test.d.ts +2 -2
  172. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +36 -19
  173. package/dist/packages/checkbox-group/checkbox-group.js +60 -55
  174. package/dist/packages/checkbox-group/checkbox-group.js.map +2 -2
  175. package/dist/packages/checkbox-group/checkbox-group.react.test.js +4 -4
  176. package/dist/packages/checkbox-group/checkbox-group.test.d.ts +2 -2
  177. package/dist/packages/checkbox-group/checkbox-group.test.js +96 -90
  178. package/dist/packages/checkbox-group/react.d.ts +2 -2
  179. package/dist/packages/checkbox-group/react.js +6 -6
  180. package/dist/packages/combobox/combobox.a11y.test.d.ts +2 -2
  181. package/dist/packages/combobox/combobox.a11y.test.js +72 -49
  182. package/dist/packages/combobox/combobox.d.ts +2 -2
  183. package/dist/packages/combobox/combobox.hydration.test.d.ts +1 -1
  184. package/dist/packages/combobox/combobox.hydration.test.js +45 -45
  185. package/dist/packages/combobox/combobox.js +332 -332
  186. package/dist/packages/combobox/combobox.js.map +3 -3
  187. package/dist/packages/combobox/combobox.react.stories.d.ts +3 -3
  188. package/dist/packages/combobox/combobox.react.stories.js +29 -29
  189. package/dist/packages/combobox/combobox.react.test.js +8 -8
  190. package/dist/packages/combobox/combobox.stories.d.ts +4 -4
  191. package/dist/packages/combobox/combobox.stories.js +100 -94
  192. package/dist/packages/combobox/combobox.test.d.ts +2 -2
  193. package/dist/packages/combobox/combobox.test.js +148 -133
  194. package/dist/packages/combobox/react.d.ts +2 -2
  195. package/dist/packages/combobox/react.js +14 -14
  196. package/dist/packages/combobox/styles.js +1 -1
  197. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -2
  198. package/dist/packages/datepicker/DatePicker.test.js +46 -41
  199. package/dist/packages/datepicker/datepicker.d.ts +3 -3
  200. package/dist/packages/datepicker/datepicker.hydration.test.d.ts +1 -1
  201. package/dist/packages/datepicker/datepicker.hydration.test.js +21 -21
  202. package/dist/packages/datepicker/datepicker.js +665 -625
  203. package/dist/packages/datepicker/datepicker.js.map +3 -3
  204. package/dist/packages/datepicker/datepicker.react.stories.d.ts +3 -3
  205. package/dist/packages/datepicker/datepicker.react.stories.js +9 -9
  206. package/dist/packages/datepicker/datepicker.react.test.js +6 -6
  207. package/dist/packages/datepicker/datepicker.stories.d.ts +4 -4
  208. package/dist/packages/datepicker/datepicker.stories.js +32 -32
  209. package/dist/packages/datepicker/datepicker.test.d.ts +2 -2
  210. package/dist/packages/datepicker/datepicker.test.js +77 -79
  211. package/dist/packages/datepicker/react.d.ts +2 -2
  212. package/dist/packages/datepicker/react.js +16 -14
  213. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +13 -12
  214. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +58 -55
  215. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +60 -57
  216. package/dist/packages/datepicker/styles/w-datepicker.styles.js +87 -87
  217. package/dist/packages/datepicker/utils.d.ts +1 -1
  218. package/dist/packages/datepicker/utils.js +25 -19
  219. package/dist/packages/datepicker/utils.test.js +20 -20
  220. package/dist/packages/expandable/expandable.d.ts +4 -4
  221. package/dist/packages/expandable/expandable.hydration.test.d.ts +1 -1
  222. package/dist/packages/expandable/expandable.hydration.test.js +21 -21
  223. package/dist/packages/expandable/expandable.js +353 -326
  224. package/dist/packages/expandable/expandable.js.map +2 -2
  225. package/dist/packages/expandable/expandable.react.stories.d.ts +3 -3
  226. package/dist/packages/expandable/expandable.react.stories.js +7 -7
  227. package/dist/packages/expandable/expandable.react.test.js +15 -7
  228. package/dist/packages/expandable/expandable.stories.d.ts +5 -5
  229. package/dist/packages/expandable/expandable.stories.js +51 -45
  230. package/dist/packages/expandable/expandable.test.d.ts +1 -1
  231. package/dist/packages/expandable/expandable.test.js +19 -17
  232. package/dist/packages/expandable/react.d.ts +2 -2
  233. package/dist/packages/expandable/react.js +9 -9
  234. package/dist/packages/expandable/styles.js +1 -1
  235. package/dist/packages/global.js +2 -2
  236. package/dist/packages/i18n.d.ts +1 -1
  237. package/dist/packages/i18n.js +37 -29
  238. package/dist/packages/icon/icon.d.ts +3 -3
  239. package/dist/packages/icon/icon.hydration.test.d.ts +1 -1
  240. package/dist/packages/icon/icon.hydration.test.js +25 -25
  241. package/dist/packages/icon/icon.js +30 -25
  242. package/dist/packages/icon/icon.js.map +2 -2
  243. package/dist/packages/icon/icon.react.stories.d.ts +1 -1
  244. package/dist/packages/icon/icon.react.stories.js +283 -284
  245. package/dist/packages/icon/icon.stories.d.ts +3 -3
  246. package/dist/packages/icon/icon.stories.js +299 -298
  247. package/dist/packages/icon/icon.test.d.ts +1 -1
  248. package/dist/packages/icon/icon.test.js +36 -28
  249. package/dist/packages/icon/react.d.ts +1 -1
  250. package/dist/packages/icon/react.js +4 -4
  251. package/dist/packages/icon/style.js +24 -25
  252. package/dist/packages/interaction-type-detection.js +9 -9
  253. package/dist/packages/link/link.d.ts +2 -2
  254. package/dist/packages/link/link.hydration.test.d.ts +1 -1
  255. package/dist/packages/link/link.hydration.test.js +27 -27
  256. package/dist/packages/link/link.js +709 -683
  257. package/dist/packages/link/link.js.map +2 -2
  258. package/dist/packages/link/link.react.stories.d.ts +3 -3
  259. package/dist/packages/link/link.react.stories.js +42 -42
  260. package/dist/packages/link/link.react.test.js +5 -3
  261. package/dist/packages/link/link.stories.d.ts +3 -3
  262. package/dist/packages/link/link.stories.js +51 -51
  263. package/dist/packages/link/link.test.d.ts +1 -1
  264. package/dist/packages/link/link.test.js +11 -7
  265. package/dist/packages/link/react.d.ts +2 -2
  266. package/dist/packages/link/react.js +6 -6
  267. package/dist/packages/link/styles.js +57 -57
  268. package/dist/packages/modal/index.d.ts +7 -7
  269. package/dist/packages/modal/index.js +7 -7
  270. package/dist/packages/modal/modal.d.ts +1 -1
  271. package/dist/packages/modal/modal.hydration.test.d.ts +1 -1
  272. package/dist/packages/modal/modal.hydration.test.js +12 -12
  273. package/dist/packages/modal/modal.js +404 -404
  274. package/dist/packages/modal/modal.js.map +2 -2
  275. package/dist/packages/modal/modal.react.stories.d.ts +3 -3
  276. package/dist/packages/modal/modal.react.stories.js +7 -6
  277. package/dist/packages/modal/modal.react.test.js +5 -5
  278. package/dist/packages/modal/modal.stories.d.ts +6 -6
  279. package/dist/packages/modal/modal.stories.js +253 -238
  280. package/dist/packages/modal/react.d.ts +4 -4
  281. package/dist/packages/modal/react.js +13 -13
  282. package/dist/packages/modal/util.js +2 -2
  283. package/dist/packages/modal-footer/modal-footer.d.ts +1 -1
  284. package/dist/packages/modal-footer/modal-footer.js +291 -291
  285. package/dist/packages/modal-footer/modal-footer.js.map +2 -2
  286. package/dist/packages/modal-footer/react.d.ts +1 -1
  287. package/dist/packages/modal-footer/react.js +4 -4
  288. package/dist/packages/modal-header/modal-header.d.ts +2 -2
  289. package/dist/packages/modal-header/modal-header.js +437 -416
  290. package/dist/packages/modal-header/modal-header.js.map +2 -2
  291. package/dist/packages/modal-header/modal-header.react.test.js +5 -3
  292. package/dist/packages/modal-header/react.d.ts +2 -2
  293. package/dist/packages/modal-header/react.js +8 -8
  294. package/dist/packages/page-indicator/page-indicator.d.ts +1 -1
  295. package/dist/packages/page-indicator/page-indicator.hydration.test.d.ts +1 -1
  296. package/dist/packages/page-indicator/page-indicator.hydration.test.js +22 -22
  297. package/dist/packages/page-indicator/page-indicator.js +26 -26
  298. package/dist/packages/page-indicator/page-indicator.js.map +2 -2
  299. package/dist/packages/page-indicator/page-indicator.react.stories.d.ts +3 -3
  300. package/dist/packages/page-indicator/page-indicator.react.stories.js +11 -11
  301. package/dist/packages/page-indicator/page-indicator.react.test.js +5 -5
  302. package/dist/packages/page-indicator/page-indicator.stories.d.ts +3 -3
  303. package/dist/packages/page-indicator/page-indicator.stories.js +56 -27
  304. package/dist/packages/page-indicator/page-indicator.test.d.ts +1 -1
  305. package/dist/packages/page-indicator/page-indicator.test.js +110 -70
  306. package/dist/packages/page-indicator/react.d.ts +2 -2
  307. package/dist/packages/page-indicator/react.js +7 -7
  308. package/dist/packages/page-indicator/style.js +21 -21
  309. package/dist/packages/pagination/pagination.a11y.test.d.ts +1 -1
  310. package/dist/packages/pagination/pagination.a11y.test.js +59 -25
  311. package/dist/packages/pagination/pagination.d.ts +3 -3
  312. package/dist/packages/pagination/pagination.hydration.test.d.ts +1 -1
  313. package/dist/packages/pagination/pagination.hydration.test.js +19 -19
  314. package/dist/packages/pagination/pagination.js +380 -349
  315. package/dist/packages/pagination/pagination.js.map +2 -2
  316. package/dist/packages/pagination/pagination.react.stories.d.ts +5 -5
  317. package/dist/packages/pagination/pagination.react.stories.js +8 -8
  318. package/dist/packages/pagination/pagination.react.test.js +6 -6
  319. package/dist/packages/pagination/pagination.stories.d.ts +3 -3
  320. package/dist/packages/pagination/pagination.stories.js +18 -18
  321. package/dist/packages/pagination/pagination.test.d.ts +1 -1
  322. package/dist/packages/pagination/pagination.test.js +146 -69
  323. package/dist/packages/pagination/react.d.ts +3 -3
  324. package/dist/packages/pagination/react.js +12 -10
  325. package/dist/packages/pagination/styles.js +1 -1
  326. package/dist/packages/pill/pill.d.ts +2 -2
  327. package/dist/packages/pill/pill.hydration.test.d.ts +1 -1
  328. package/dist/packages/pill/pill.hydration.test.js +14 -14
  329. package/dist/packages/pill/pill.js +331 -308
  330. package/dist/packages/pill/pill.js.map +2 -2
  331. package/dist/packages/pill/pill.react.stories.d.ts +3 -3
  332. package/dist/packages/pill/pill.react.stories.js +3 -3
  333. package/dist/packages/pill/pill.react.test.js +8 -8
  334. package/dist/packages/pill/pill.stories.d.ts +3 -3
  335. package/dist/packages/pill/pill.stories.js +8 -8
  336. package/dist/packages/pill/pill.test.d.ts +1 -1
  337. package/dist/packages/pill/pill.test.js +17 -15
  338. package/dist/packages/pill/react.d.ts +2 -2
  339. package/dist/packages/pill/react.js +18 -14
  340. package/dist/packages/pill/styles.js +1 -1
  341. package/dist/packages/radio/base-element.d.ts +3 -3
  342. package/dist/packages/radio/base-element.js +3 -3
  343. package/dist/packages/radio/custom-error-validator.d.ts +1 -1
  344. package/dist/packages/radio/custom-error-validator.js +3 -3
  345. package/dist/packages/radio/form-associated-element.d.ts +8 -8
  346. package/dist/packages/radio/form-associated-element.js +27 -26
  347. package/dist/packages/radio/host-styles.js +9 -9
  348. package/dist/packages/radio/invalid.d.ts +1 -1
  349. package/dist/packages/radio/invalid.js +1 -1
  350. package/dist/packages/radio/radio-styles.js +199 -160
  351. package/dist/packages/radio/radio.a11y.test.d.ts +2 -2
  352. package/dist/packages/radio/radio.a11y.test.js +60 -58
  353. package/dist/packages/radio/radio.d.ts +3 -3
  354. package/dist/packages/radio/radio.hydration.test.d.ts +1 -1
  355. package/dist/packages/radio/radio.hydration.test.js +23 -14
  356. package/dist/packages/radio/radio.js +485 -446
  357. package/dist/packages/radio/radio.js.map +3 -3
  358. package/dist/packages/radio/radio.react.stories.d.ts +2 -2
  359. package/dist/packages/radio/radio.react.stories.js +3 -3
  360. package/dist/packages/radio/radio.stories.d.ts +4 -4
  361. package/dist/packages/radio/radio.stories.js +152 -136
  362. package/dist/packages/radio/radio.test.d.ts +1 -1
  363. package/dist/packages/radio/radio.test.js +74 -73
  364. package/dist/packages/radio/react.d.ts +1 -1
  365. package/dist/packages/radio/react.js +4 -4
  366. package/dist/packages/radio/required-validator.d.ts +1 -1
  367. package/dist/packages/radio/required-validator.js +12 -7
  368. package/dist/packages/radio/slot.d.ts +1 -1
  369. package/dist/packages/radio/slot.js +11 -8
  370. package/dist/packages/radio/watch.d.ts +1 -1
  371. package/dist/packages/radio/watch.js +3 -1
  372. package/dist/packages/radio-group/radio-group-styles.js +121 -88
  373. package/dist/packages/radio-group/radio-group.a11y.test.d.ts +2 -2
  374. package/dist/packages/radio-group/radio-group.a11y.test.js +81 -79
  375. package/dist/packages/radio-group/radio-group.d.ts +14 -5
  376. package/dist/packages/radio-group/radio-group.hydration.test.d.ts +2 -2
  377. package/dist/packages/radio-group/radio-group.hydration.test.js +29 -18
  378. package/dist/packages/radio-group/radio-group.js +648 -560
  379. package/dist/packages/radio-group/radio-group.js.map +3 -3
  380. package/dist/packages/radio-group/radio-group.react.test.js +4 -4
  381. package/dist/packages/radio-group/radio-group.test.d.ts +2 -2
  382. package/dist/packages/radio-group/radio-group.test.js +234 -229
  383. package/dist/packages/radio-group/react.d.ts +2 -2
  384. package/dist/packages/radio-group/react.js +10 -10
  385. package/dist/packages/select/react.d.ts +2 -2
  386. package/dist/packages/select/react.js +11 -11
  387. package/dist/packages/select/select.a11y.test.d.ts +1 -1
  388. package/dist/packages/select/select.a11y.test.js +98 -91
  389. package/dist/packages/select/select.d.ts +4 -4
  390. package/dist/packages/select/select.hydration.test.d.ts +1 -1
  391. package/dist/packages/select/select.hydration.test.js +16 -16
  392. package/dist/packages/select/select.js +348 -329
  393. package/dist/packages/select/select.js.map +2 -2
  394. package/dist/packages/select/select.react.stories.d.ts +3 -3
  395. package/dist/packages/select/select.react.stories.js +7 -7
  396. package/dist/packages/select/select.react.test.js +6 -6
  397. package/dist/packages/select/select.stories.d.ts +3 -3
  398. package/dist/packages/select/select.stories.js +51 -48
  399. package/dist/packages/select/select.test.d.ts +1 -1
  400. package/dist/packages/select/select.test.js +175 -178
  401. package/dist/packages/select/styles.js +1 -1
  402. package/dist/packages/slider/Slider.d.ts +1 -1
  403. package/dist/packages/slider/Slider.js +4 -4
  404. package/dist/packages/slider/index.d.ts +2 -2
  405. package/dist/packages/slider/index.js +2 -2
  406. package/dist/packages/slider/react.d.ts +3 -3
  407. package/dist/packages/slider/react.js +9 -9
  408. package/dist/packages/slider/slider.d.ts +3 -3
  409. package/dist/packages/slider/slider.hydration.test.d.ts +1 -1
  410. package/dist/packages/slider/slider.hydration.test.js +39 -20
  411. package/dist/packages/slider/slider.js +480 -462
  412. package/dist/packages/slider/slider.js.map +2 -2
  413. package/dist/packages/slider/slider.react.stories.d.ts +3 -3
  414. package/dist/packages/slider/slider.react.stories.js +31 -34
  415. package/dist/packages/slider/slider.react.test.js +6 -6
  416. package/dist/packages/slider/slider.stories.d.ts +7 -7
  417. package/dist/packages/slider/slider.stories.js +332 -340
  418. package/dist/packages/slider/slider.test.d.ts +5 -5
  419. package/dist/packages/slider/slider.test.js +367 -334
  420. package/dist/packages/slider/styles/w-slider.styles.js +166 -148
  421. package/dist/packages/slider/styles.js +1 -1
  422. package/dist/packages/slider-thumb/SliderThumb.d.ts +1 -1
  423. package/dist/packages/slider-thumb/SliderThumb.js +4 -4
  424. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.d.ts +1 -1
  425. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.js +1 -1
  426. package/dist/packages/slider-thumb/react.d.ts +3 -3
  427. package/dist/packages/slider-thumb/react.js +11 -9
  428. package/dist/packages/slider-thumb/slider-thumb.d.ts +3 -3
  429. package/dist/packages/slider-thumb/slider-thumb.hydration.test.d.ts +1 -1
  430. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +26 -17
  431. package/dist/packages/slider-thumb/slider-thumb.js +545 -548
  432. package/dist/packages/slider-thumb/slider-thumb.js.map +3 -3
  433. package/dist/packages/slider-thumb/slider-thumb.react.test.js +9 -5
  434. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.js +189 -188
  435. package/dist/packages/slider-thumb/styles.js +1 -1
  436. package/dist/packages/snackbar/react.d.ts +1 -1
  437. package/dist/packages/snackbar/react.js +4 -4
  438. package/dist/packages/snackbar/snackbar.d.ts +3 -3
  439. package/dist/packages/snackbar/snackbar.hydration.test.d.ts +1 -1
  440. package/dist/packages/snackbar/snackbar.hydration.test.js +6 -6
  441. package/dist/packages/snackbar/snackbar.js +487 -468
  442. package/dist/packages/snackbar/snackbar.js.map +2 -2
  443. package/dist/packages/snackbar/snackbar.react.stories.js +3 -3
  444. package/dist/packages/snackbar/snackbar.stories.d.ts +11 -11
  445. package/dist/packages/snackbar/snackbar.stories.js +253 -181
  446. package/dist/packages/snackbar/snackbar.test.d.ts +4 -4
  447. package/dist/packages/snackbar/snackbar.test.js +11 -11
  448. package/dist/packages/snackbar/styles.js +29 -29
  449. package/dist/packages/snackbar-item/react.d.ts +2 -2
  450. package/dist/packages/snackbar-item/react.js +6 -5
  451. package/dist/packages/snackbar-item/snackbar-item.d.ts +4 -4
  452. package/dist/packages/snackbar-item/snackbar-item.js +454 -435
  453. package/dist/packages/snackbar-item/snackbar-item.js.map +2 -2
  454. package/dist/packages/snackbar-item/snackbar-item.react.test.js +4 -4
  455. package/dist/packages/snackbar-item/styles.js +130 -108
  456. package/dist/packages/step/react.d.ts +1 -1
  457. package/dist/packages/step/react.js +4 -4
  458. package/dist/packages/step/step.d.ts +2 -2
  459. package/dist/packages/step/step.hydration.test.d.ts +1 -1
  460. package/dist/packages/step/step.hydration.test.js +10 -10
  461. package/dist/packages/step/step.js +330 -308
  462. package/dist/packages/step/step.js.map +2 -2
  463. package/dist/packages/step-indicator/index.d.ts +2 -2
  464. package/dist/packages/step-indicator/index.js +2 -2
  465. package/dist/packages/step-indicator/react.d.ts +2 -2
  466. package/dist/packages/step-indicator/react.js +5 -5
  467. package/dist/packages/step-indicator/step-indicator.a11y.test.d.ts +2 -2
  468. package/dist/packages/step-indicator/step-indicator.a11y.test.js +48 -46
  469. package/dist/packages/step-indicator/step-indicator.d.ts +1 -1
  470. package/dist/packages/step-indicator/step-indicator.hydration.test.d.ts +1 -1
  471. package/dist/packages/step-indicator/step-indicator.hydration.test.js +10 -10
  472. package/dist/packages/step-indicator/step-indicator.js +280 -276
  473. package/dist/packages/step-indicator/step-indicator.js.map +2 -2
  474. package/dist/packages/step-indicator/stepindicator.react.stories.d.ts +2 -2
  475. package/dist/packages/step-indicator/stepindicator.react.stories.js +3 -3
  476. package/dist/packages/step-indicator/stepindicator.stories.d.ts +3 -3
  477. package/dist/packages/step-indicator/stepindicator.stories.js +129 -129
  478. package/dist/packages/step-indicator/styles.js +1 -1
  479. package/dist/packages/styles.js +274 -274
  480. package/dist/packages/switch/react.d.ts +1 -1
  481. package/dist/packages/switch/react.js +6 -6
  482. package/dist/packages/switch/styles.js +1 -1
  483. package/dist/packages/switch/switch.a11y.test.d.ts +1 -1
  484. package/dist/packages/switch/switch.a11y.test.js +46 -38
  485. package/dist/packages/switch/switch.d.ts +1 -1
  486. package/dist/packages/switch/switch.hydration.test.d.ts +1 -1
  487. package/dist/packages/switch/switch.hydration.test.js +23 -23
  488. package/dist/packages/switch/switch.js +299 -299
  489. package/dist/packages/switch/switch.js.map +2 -2
  490. package/dist/packages/switch/switch.react.stories.d.ts +2 -2
  491. package/dist/packages/switch/switch.react.stories.js +2 -2
  492. package/dist/packages/switch/switch.stories.d.ts +2 -2
  493. package/dist/packages/switch/switch.stories.js +42 -37
  494. package/dist/packages/switch/switch.test.d.ts +1 -1
  495. package/dist/packages/switch/switch.test.js +30 -35
  496. package/dist/packages/tab/react.d.ts +6 -4
  497. package/dist/packages/tab/react.js +11 -10
  498. package/dist/packages/tab/styles.d.ts +1 -0
  499. package/dist/packages/tab/styles.js +2 -0
  500. package/dist/packages/tab/tab.d.ts +5 -5
  501. package/dist/packages/tab/tab.hydration.test.d.ts +1 -1
  502. package/dist/packages/tab/tab.hydration.test.js +18 -12
  503. package/dist/packages/tab/tab.js +305 -304
  504. package/dist/packages/tab/tab.js.map +3 -3
  505. package/dist/packages/tab/tab.react.test.js +5 -3
  506. package/dist/packages/tab-panel/react.d.ts +3 -2
  507. package/dist/packages/tab-panel/react.js +11 -5
  508. package/dist/packages/tab-panel/tab-panel.d.ts +3 -3
  509. package/dist/packages/tab-panel/tab-panel.hydration.test.d.ts +1 -1
  510. package/dist/packages/tab-panel/tab-panel.hydration.test.js +13 -10
  511. package/dist/packages/tab-panel/tab-panel.js +289 -287
  512. package/dist/packages/tab-panel/tab-panel.js.map +2 -2
  513. package/dist/packages/tabs/index.d.ts +4 -4
  514. package/dist/packages/tabs/index.js +3 -3
  515. package/dist/packages/tabs/react.d.ts +27 -8
  516. package/dist/packages/tabs/react.js +30 -9
  517. package/dist/packages/tabs/styles.js +1 -1
  518. package/dist/packages/tabs/tabs.a11y.test.d.ts +3 -3
  519. package/dist/packages/tabs/tabs.a11y.test.js +188 -169
  520. package/dist/packages/tabs/tabs.d.ts +3 -3
  521. package/dist/packages/tabs/tabs.hydration.test.d.ts +3 -1
  522. package/dist/packages/tabs/tabs.hydration.test.js +22 -8
  523. package/dist/packages/tabs/tabs.js +289 -282
  524. package/dist/packages/tabs/tabs.js.map +2 -2
  525. package/dist/packages/tabs/tabs.react.stories.d.ts +12 -10
  526. package/dist/packages/tabs/tabs.react.stories.js +28 -28
  527. package/dist/packages/tabs/tabs.stories.d.ts +4 -4
  528. package/dist/packages/tabs/tabs.stories.js +101 -95
  529. package/dist/packages/tabs/tabs.test.d.ts +3 -3
  530. package/dist/packages/tabs/tabs.test.js +136 -122
  531. package/dist/packages/textarea/react.d.ts +2 -2
  532. package/dist/packages/textarea/react.js +17 -17
  533. package/dist/packages/textarea/styles.js +1 -1
  534. package/dist/packages/textarea/textarea.a11y.test.d.ts +1 -1
  535. package/dist/packages/textarea/textarea.a11y.test.js +89 -57
  536. package/dist/packages/textarea/textarea.d.ts +1 -1
  537. package/dist/packages/textarea/textarea.hydration.test.d.ts +1 -1
  538. package/dist/packages/textarea/textarea.hydration.test.js +19 -19
  539. package/dist/packages/textarea/textarea.js +300 -298
  540. package/dist/packages/textarea/textarea.js.map +2 -2
  541. package/dist/packages/textarea/textarea.react.stories.d.ts +3 -3
  542. package/dist/packages/textarea/textarea.react.stories.js +13 -13
  543. package/dist/packages/textarea/textarea.react.test.js +7 -7
  544. package/dist/packages/textarea/textarea.stories.d.ts +3 -3
  545. package/dist/packages/textarea/textarea.stories.js +44 -42
  546. package/dist/packages/textarea/textarea.test.d.ts +1 -1
  547. package/dist/packages/textarea/textarea.test.js +124 -88
  548. package/dist/packages/textfield/react.d.ts +2 -2
  549. package/dist/packages/textfield/react.js +17 -17
  550. package/dist/packages/textfield/styles/w-textfield.styles.js +60 -58
  551. package/dist/packages/textfield/styles.js +1 -1
  552. package/dist/packages/textfield/textfield.d.ts +3 -3
  553. package/dist/packages/textfield/textfield.hydration.test.d.ts +1 -1
  554. package/dist/packages/textfield/textfield.hydration.test.js +19 -19
  555. package/dist/packages/textfield/textfield.js +376 -368
  556. package/dist/packages/textfield/textfield.js.map +3 -3
  557. package/dist/packages/textfield/textfield.react.stories.d.ts +3 -3
  558. package/dist/packages/textfield/textfield.react.stories.js +31 -31
  559. package/dist/packages/textfield/textfield.react.test.js +7 -7
  560. package/dist/packages/textfield/textfield.stories.d.ts +4 -4
  561. package/dist/packages/textfield/textfield.stories.js +107 -89
  562. package/dist/packages/textfield/textfield.test.d.ts +2 -2
  563. package/dist/packages/textfield/textfield.test.js +103 -71
  564. package/dist/packages/toast/api.d.ts +1 -1
  565. package/dist/packages/toast/api.js +3 -3
  566. package/dist/packages/toast/index.d.ts +5 -5
  567. package/dist/packages/toast/index.js +5 -5
  568. package/dist/packages/toast/toast.d.ts +4 -4
  569. package/dist/packages/toast/toast.js +343 -314
  570. package/dist/packages/toast/toast.js.map +2 -2
  571. package/dist/packages/toast/toast.stories.d.ts +4 -4
  572. package/dist/packages/toast/toast.stories.js +37 -16
  573. package/dist/packages/toast/toast.test.d.ts +1 -1
  574. package/dist/packages/toast/toast.test.js +48 -31
  575. package/dist/packages/toast/types.d.ts +1 -1
  576. package/dist/packages/toast-container/styles.js +1 -1
  577. package/dist/packages/toast-container/toast-container.d.ts +2 -2
  578. package/dist/packages/toast-container/toast-container.js +291 -290
  579. package/dist/packages/toast-container/toast-container.js.map +2 -2
  580. package/dist/packages/utils/element-collapse.js +38 -28
  581. package/dist/packages/utils/expand-transition.d.ts +1 -1
  582. package/dist/packages/utils/expand-transition.js +12 -10
  583. package/dist/packages/utils/unstyled-heading.d.ts +1 -1
  584. package/dist/packages/utils/unstyled-heading.js +4 -4
  585. package/dist/packages/utils/window-exists.js +1 -1
  586. package/dist/packages/utils.js +2 -2
  587. package/dist/setup-tests.d.ts +3 -3
  588. package/dist/setup-tests.js +16 -13
  589. package/dist/tests/react-hydration.js +29 -30
  590. package/dist/tests/react-ssr-attributes.d.ts +1 -1
  591. package/dist/tests/react-ssr-attributes.js +4 -4
  592. package/dist/web-types.json +25 -22
  593. package/eik/index.js +9 -9
  594. package/package.json +11 -16
@@ -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
  });