@warp-ds/elements 2.10.0-next.15 → 2.10.0-next.18

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