@furystack/shades-common-components 11.0.0 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/CHANGELOG.md +443 -0
  2. package/esm/components/accordion/accordion-item.d.ts +31 -0
  3. package/esm/components/accordion/accordion-item.d.ts.map +1 -0
  4. package/esm/components/accordion/accordion-item.js +147 -0
  5. package/esm/components/accordion/accordion-item.js.map +1 -0
  6. package/esm/components/accordion/accordion.d.ts +27 -0
  7. package/esm/components/accordion/accordion.d.ts.map +1 -0
  8. package/esm/components/accordion/accordion.js +39 -0
  9. package/esm/components/accordion/accordion.js.map +1 -0
  10. package/esm/components/accordion/accordion.spec.d.ts +2 -0
  11. package/esm/components/accordion/accordion.spec.d.ts.map +1 -0
  12. package/esm/components/accordion/accordion.spec.js +284 -0
  13. package/esm/components/accordion/accordion.spec.js.map +1 -0
  14. package/esm/components/accordion/index.d.ts +3 -0
  15. package/esm/components/accordion/index.d.ts.map +1 -0
  16. package/esm/components/accordion/index.js +3 -0
  17. package/esm/components/accordion/index.js.map +1 -0
  18. package/esm/components/alert.d.ts +21 -0
  19. package/esm/components/alert.d.ts.map +1 -0
  20. package/esm/components/alert.js +131 -0
  21. package/esm/components/alert.js.map +1 -0
  22. package/esm/components/alert.spec.d.ts +2 -0
  23. package/esm/components/alert.spec.d.ts.map +1 -0
  24. package/esm/components/alert.spec.js +177 -0
  25. package/esm/components/alert.spec.js.map +1 -0
  26. package/esm/components/app-bar-link.d.ts +22 -2
  27. package/esm/components/app-bar-link.d.ts.map +1 -1
  28. package/esm/components/app-bar-link.js +20 -7
  29. package/esm/components/app-bar-link.js.map +1 -1
  30. package/esm/components/app-bar-link.spec.js +22 -19
  31. package/esm/components/app-bar-link.spec.js.map +1 -1
  32. package/esm/components/app-bar.d.ts +2 -0
  33. package/esm/components/app-bar.d.ts.map +1 -1
  34. package/esm/components/app-bar.js +16 -11
  35. package/esm/components/app-bar.js.map +1 -1
  36. package/esm/components/app-bar.spec.js +67 -52
  37. package/esm/components/app-bar.spec.js.map +1 -1
  38. package/esm/components/avatar.d.ts +2 -0
  39. package/esm/components/avatar.d.ts.map +1 -1
  40. package/esm/components/avatar.js +40 -37
  41. package/esm/components/avatar.js.map +1 -1
  42. package/esm/components/badge.d.ts +35 -0
  43. package/esm/components/badge.d.ts.map +1 -0
  44. package/esm/components/badge.js +68 -0
  45. package/esm/components/badge.js.map +1 -0
  46. package/esm/components/badge.spec.d.ts +2 -0
  47. package/esm/components/badge.spec.d.ts.map +1 -0
  48. package/esm/components/badge.spec.js +157 -0
  49. package/esm/components/badge.spec.js.map +1 -0
  50. package/esm/components/breadcrumb.d.ts +103 -0
  51. package/esm/components/breadcrumb.d.ts.map +1 -0
  52. package/esm/components/breadcrumb.js +121 -0
  53. package/esm/components/breadcrumb.js.map +1 -0
  54. package/esm/components/breadcrumb.spec.d.ts +2 -0
  55. package/esm/components/breadcrumb.spec.d.ts.map +1 -0
  56. package/esm/components/breadcrumb.spec.js +251 -0
  57. package/esm/components/breadcrumb.spec.js.map +1 -0
  58. package/esm/components/button-group.d.ts +85 -0
  59. package/esm/components/button-group.d.ts.map +1 -0
  60. package/esm/components/button-group.js +290 -0
  61. package/esm/components/button-group.js.map +1 -0
  62. package/esm/components/button-group.spec.d.ts +2 -0
  63. package/esm/components/button-group.spec.d.ts.map +1 -0
  64. package/esm/components/button-group.spec.js +502 -0
  65. package/esm/components/button-group.spec.js.map +1 -0
  66. package/esm/components/button.d.ts +44 -2
  67. package/esm/components/button.d.ts.map +1 -1
  68. package/esm/components/button.js +82 -73
  69. package/esm/components/button.js.map +1 -1
  70. package/esm/components/button.spec.js +205 -50
  71. package/esm/components/button.spec.js.map +1 -1
  72. package/esm/components/card.d.ts +117 -0
  73. package/esm/components/card.d.ts.map +1 -0
  74. package/esm/components/card.js +181 -0
  75. package/esm/components/card.js.map +1 -0
  76. package/esm/components/card.spec.d.ts +2 -0
  77. package/esm/components/card.spec.d.ts.map +1 -0
  78. package/esm/components/card.spec.js +278 -0
  79. package/esm/components/card.spec.js.map +1 -0
  80. package/esm/components/carousel.d.ts +50 -0
  81. package/esm/components/carousel.d.ts.map +1 -0
  82. package/esm/components/carousel.js +263 -0
  83. package/esm/components/carousel.js.map +1 -0
  84. package/esm/components/carousel.spec.d.ts +2 -0
  85. package/esm/components/carousel.spec.d.ts.map +1 -0
  86. package/esm/components/carousel.spec.js +677 -0
  87. package/esm/components/carousel.spec.js.map +1 -0
  88. package/esm/components/chip.d.ts +23 -0
  89. package/esm/components/chip.d.ts.map +1 -0
  90. package/esm/components/chip.js +139 -0
  91. package/esm/components/chip.js.map +1 -0
  92. package/esm/components/chip.spec.d.ts +2 -0
  93. package/esm/components/chip.spec.d.ts.map +1 -0
  94. package/esm/components/chip.spec.js +142 -0
  95. package/esm/components/chip.spec.js.map +1 -0
  96. package/esm/components/circular-progress.d.ts +37 -0
  97. package/esm/components/circular-progress.d.ts.map +1 -0
  98. package/esm/components/circular-progress.js +84 -0
  99. package/esm/components/circular-progress.js.map +1 -0
  100. package/esm/components/circular-progress.spec.d.ts +2 -0
  101. package/esm/components/circular-progress.spec.d.ts.map +1 -0
  102. package/esm/components/circular-progress.spec.js +228 -0
  103. package/esm/components/circular-progress.spec.js.map +1 -0
  104. package/esm/components/command-palette/command-palette-input.d.ts +3 -0
  105. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  106. package/esm/components/command-palette/command-palette-input.js +17 -9
  107. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  108. package/esm/components/command-palette/command-palette-input.spec.js +172 -161
  109. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
  110. package/esm/components/command-palette/command-palette-manager.spec.js +130 -114
  111. package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -1
  112. package/esm/components/command-palette/command-palette-suggestion-list.d.ts +2 -0
  113. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  114. package/esm/components/command-palette/command-palette-suggestion-list.js +20 -20
  115. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  116. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +296 -278
  117. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  118. package/esm/components/command-palette/index.d.ts +2 -0
  119. package/esm/components/command-palette/index.d.ts.map +1 -1
  120. package/esm/components/command-palette/index.js +25 -94
  121. package/esm/components/command-palette/index.js.map +1 -1
  122. package/esm/components/command-palette/index.spec.js +12 -12
  123. package/esm/components/command-palette/index.spec.js.map +1 -1
  124. package/esm/components/context-menu/context-menu-item.d.ts +9 -0
  125. package/esm/components/context-menu/context-menu-item.d.ts.map +1 -0
  126. package/esm/components/context-menu/context-menu-item.js +56 -0
  127. package/esm/components/context-menu/context-menu-item.js.map +1 -0
  128. package/esm/components/context-menu/context-menu-manager.d.ts +52 -0
  129. package/esm/components/context-menu/context-menu-manager.d.ts.map +1 -0
  130. package/esm/components/context-menu/context-menu-manager.js +128 -0
  131. package/esm/components/context-menu/context-menu-manager.js.map +1 -0
  132. package/esm/components/context-menu/context-menu-manager.spec.d.ts +2 -0
  133. package/esm/components/context-menu/context-menu-manager.spec.d.ts.map +1 -0
  134. package/esm/components/context-menu/context-menu-manager.spec.js +326 -0
  135. package/esm/components/context-menu/context-menu-manager.spec.js.map +1 -0
  136. package/esm/components/context-menu/context-menu.d.ts +8 -0
  137. package/esm/components/context-menu/context-menu.d.ts.map +1 -0
  138. package/esm/components/context-menu/context-menu.js +79 -0
  139. package/esm/components/context-menu/context-menu.js.map +1 -0
  140. package/esm/components/context-menu/context-menu.spec.d.ts +2 -0
  141. package/esm/components/context-menu/context-menu.spec.d.ts.map +1 -0
  142. package/esm/components/context-menu/context-menu.spec.js +282 -0
  143. package/esm/components/context-menu/context-menu.spec.js.map +1 -0
  144. package/esm/components/context-menu/index.d.ts +4 -0
  145. package/esm/components/context-menu/index.d.ts.map +1 -0
  146. package/esm/components/context-menu/index.js +4 -0
  147. package/esm/components/context-menu/index.js.map +1 -0
  148. package/esm/components/data-grid/body.spec.js +194 -184
  149. package/esm/components/data-grid/body.spec.js.map +1 -1
  150. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  151. package/esm/components/data-grid/data-grid-row.js +66 -54
  152. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  153. package/esm/components/data-grid/data-grid-row.spec.js +127 -95
  154. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
  155. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  156. package/esm/components/data-grid/data-grid.js +17 -16
  157. package/esm/components/data-grid/data-grid.js.map +1 -1
  158. package/esm/components/data-grid/data-grid.spec.js +364 -430
  159. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  160. package/esm/components/data-grid/footer.spec.js +215 -203
  161. package/esm/components/data-grid/footer.spec.js.map +1 -1
  162. package/esm/components/data-grid/header.d.ts +3 -1
  163. package/esm/components/data-grid/header.d.ts.map +1 -1
  164. package/esm/components/data-grid/header.js +42 -30
  165. package/esm/components/data-grid/header.js.map +1 -1
  166. package/esm/components/data-grid/header.spec.js +330 -307
  167. package/esm/components/data-grid/header.spec.js.map +1 -1
  168. package/esm/components/data-grid/selection-cell.d.ts +2 -0
  169. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  170. package/esm/components/data-grid/selection-cell.js +2 -7
  171. package/esm/components/data-grid/selection-cell.js.map +1 -1
  172. package/esm/components/data-grid/selection-cell.spec.js +45 -36
  173. package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
  174. package/esm/components/dialog.d.ts +46 -0
  175. package/esm/components/dialog.d.ts.map +1 -0
  176. package/esm/components/dialog.js +178 -0
  177. package/esm/components/dialog.js.map +1 -0
  178. package/esm/components/dialog.spec.d.ts +2 -0
  179. package/esm/components/dialog.spec.d.ts.map +1 -0
  180. package/esm/components/dialog.spec.js +113 -0
  181. package/esm/components/dialog.spec.js.map +1 -0
  182. package/esm/components/divider.d.ts +22 -0
  183. package/esm/components/divider.d.ts.map +1 -0
  184. package/esm/components/divider.js +113 -0
  185. package/esm/components/divider.js.map +1 -0
  186. package/esm/components/divider.spec.d.ts +2 -0
  187. package/esm/components/divider.spec.d.ts.map +1 -0
  188. package/esm/components/divider.spec.js +136 -0
  189. package/esm/components/divider.spec.js.map +1 -0
  190. package/esm/components/drawer/drawer-toggle-button.d.ts +36 -0
  191. package/esm/components/drawer/drawer-toggle-button.d.ts.map +1 -0
  192. package/esm/components/drawer/drawer-toggle-button.js +94 -0
  193. package/esm/components/drawer/drawer-toggle-button.js.map +1 -0
  194. package/esm/components/drawer/drawer-toggle-button.spec.d.ts +2 -0
  195. package/esm/components/drawer/drawer-toggle-button.spec.d.ts.map +1 -0
  196. package/esm/components/drawer/drawer-toggle-button.spec.js +306 -0
  197. package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -0
  198. package/esm/components/drawer/index.d.ts +56 -0
  199. package/esm/components/drawer/index.d.ts.map +1 -0
  200. package/esm/components/drawer/index.js +172 -0
  201. package/esm/components/drawer/index.js.map +1 -0
  202. package/esm/components/drawer/index.spec.d.ts +2 -0
  203. package/esm/components/drawer/index.spec.d.ts.map +1 -0
  204. package/esm/components/drawer/index.spec.js +538 -0
  205. package/esm/components/drawer/index.spec.js.map +1 -0
  206. package/esm/components/dropdown.d.ts +15 -0
  207. package/esm/components/dropdown.d.ts.map +1 -0
  208. package/esm/components/dropdown.js +262 -0
  209. package/esm/components/dropdown.js.map +1 -0
  210. package/esm/components/dropdown.spec.d.ts +2 -0
  211. package/esm/components/dropdown.spec.d.ts.map +1 -0
  212. package/esm/components/dropdown.spec.js +372 -0
  213. package/esm/components/dropdown.spec.js.map +1 -0
  214. package/esm/components/fab.d.ts +10 -1
  215. package/esm/components/fab.d.ts.map +1 -1
  216. package/esm/components/fab.js +24 -8
  217. package/esm/components/fab.js.map +1 -1
  218. package/esm/components/fab.spec.js +50 -39
  219. package/esm/components/fab.spec.js.map +1 -1
  220. package/esm/components/form.d.ts.map +1 -1
  221. package/esm/components/form.js +9 -7
  222. package/esm/components/form.js.map +1 -1
  223. package/esm/components/form.spec.js +209 -199
  224. package/esm/components/form.spec.js.map +1 -1
  225. package/esm/components/grid.js +10 -10
  226. package/esm/components/grid.js.map +1 -1
  227. package/esm/components/grid.spec.js +109 -85
  228. package/esm/components/grid.spec.js.map +1 -1
  229. package/esm/components/icons/icon-definitions.d.ts +140 -0
  230. package/esm/components/icons/icon-definitions.d.ts.map +1 -0
  231. package/esm/components/icons/icon-definitions.js +432 -0
  232. package/esm/components/icons/icon-definitions.js.map +1 -0
  233. package/esm/components/icons/icon-definitions.spec.d.ts +2 -0
  234. package/esm/components/icons/icon-definitions.spec.d.ts.map +1 -0
  235. package/esm/components/icons/icon-definitions.spec.js +59 -0
  236. package/esm/components/icons/icon-definitions.spec.js.map +1 -0
  237. package/esm/components/icons/icon-types.d.ts +48 -0
  238. package/esm/components/icons/icon-types.d.ts.map +1 -0
  239. package/esm/components/icons/icon-types.js +2 -0
  240. package/esm/components/icons/icon-types.js.map +1 -0
  241. package/esm/components/icons/icon.d.ts +56 -0
  242. package/esm/components/icons/icon.d.ts.map +1 -0
  243. package/esm/components/icons/icon.js +61 -0
  244. package/esm/components/icons/icon.js.map +1 -0
  245. package/esm/components/icons/icon.spec.d.ts +2 -0
  246. package/esm/components/icons/icon.spec.d.ts.map +1 -0
  247. package/esm/components/icons/icon.spec.js +224 -0
  248. package/esm/components/icons/icon.spec.js.map +1 -0
  249. package/esm/components/icons/index.d.ts +5 -0
  250. package/esm/components/icons/index.d.ts.map +1 -0
  251. package/esm/components/icons/index.js +3 -0
  252. package/esm/components/icons/index.js.map +1 -0
  253. package/esm/components/image.d.ts +62 -0
  254. package/esm/components/image.d.ts.map +1 -0
  255. package/esm/components/image.js +348 -0
  256. package/esm/components/image.js.map +1 -0
  257. package/esm/components/image.spec.d.ts +2 -0
  258. package/esm/components/image.spec.d.ts.map +1 -0
  259. package/esm/components/image.spec.js +542 -0
  260. package/esm/components/image.spec.js.map +1 -0
  261. package/esm/components/index.d.ts +32 -4
  262. package/esm/components/index.d.ts.map +1 -1
  263. package/esm/components/index.js +32 -4
  264. package/esm/components/index.js.map +1 -1
  265. package/esm/components/inputs/autocomplete.d.ts +2 -0
  266. package/esm/components/inputs/autocomplete.d.ts.map +1 -1
  267. package/esm/components/inputs/autocomplete.js +10 -6
  268. package/esm/components/inputs/autocomplete.js.map +1 -1
  269. package/esm/components/inputs/autocomplete.spec.js +10 -1
  270. package/esm/components/inputs/autocomplete.spec.js.map +1 -1
  271. package/esm/components/inputs/checkbox.d.ts +50 -0
  272. package/esm/components/inputs/checkbox.d.ts.map +1 -0
  273. package/esm/components/inputs/checkbox.js +126 -0
  274. package/esm/components/inputs/checkbox.js.map +1 -0
  275. package/esm/components/inputs/checkbox.spec.d.ts +2 -0
  276. package/esm/components/inputs/checkbox.spec.d.ts.map +1 -0
  277. package/esm/components/inputs/checkbox.spec.js +287 -0
  278. package/esm/components/inputs/checkbox.spec.js.map +1 -0
  279. package/esm/components/inputs/index.d.ts +7 -0
  280. package/esm/components/inputs/index.d.ts.map +1 -1
  281. package/esm/components/inputs/index.js +7 -0
  282. package/esm/components/inputs/index.js.map +1 -1
  283. package/esm/components/inputs/input-number.d.ts +79 -0
  284. package/esm/components/inputs/input-number.d.ts.map +1 -0
  285. package/esm/components/inputs/input-number.js +232 -0
  286. package/esm/components/inputs/input-number.js.map +1 -0
  287. package/esm/components/inputs/input-number.spec.d.ts +2 -0
  288. package/esm/components/inputs/input-number.spec.d.ts.map +1 -0
  289. package/esm/components/inputs/input-number.spec.js +516 -0
  290. package/esm/components/inputs/input-number.spec.js.map +1 -0
  291. package/esm/components/inputs/input.d.ts +2 -1
  292. package/esm/components/inputs/input.d.ts.map +1 -1
  293. package/esm/components/inputs/input.js +86 -116
  294. package/esm/components/inputs/input.js.map +1 -1
  295. package/esm/components/inputs/input.spec.js +461 -427
  296. package/esm/components/inputs/input.spec.js.map +1 -1
  297. package/esm/components/inputs/radio-group.d.ts +38 -0
  298. package/esm/components/inputs/radio-group.d.ts.map +1 -0
  299. package/esm/components/inputs/radio-group.js +58 -0
  300. package/esm/components/inputs/radio-group.js.map +1 -0
  301. package/esm/components/inputs/radio-group.spec.d.ts +2 -0
  302. package/esm/components/inputs/radio-group.spec.d.ts.map +1 -0
  303. package/esm/components/inputs/radio-group.spec.js +201 -0
  304. package/esm/components/inputs/radio-group.spec.js.map +1 -0
  305. package/esm/components/inputs/radio.d.ts +42 -0
  306. package/esm/components/inputs/radio.d.ts.map +1 -0
  307. package/esm/components/inputs/radio.js +134 -0
  308. package/esm/components/inputs/radio.js.map +1 -0
  309. package/esm/components/inputs/radio.spec.d.ts +2 -0
  310. package/esm/components/inputs/radio.spec.d.ts.map +1 -0
  311. package/esm/components/inputs/radio.spec.js +211 -0
  312. package/esm/components/inputs/radio.spec.js.map +1 -0
  313. package/esm/components/inputs/select.d.ts +67 -0
  314. package/esm/components/inputs/select.d.ts.map +1 -0
  315. package/esm/components/inputs/select.js +581 -0
  316. package/esm/components/inputs/select.js.map +1 -0
  317. package/esm/components/inputs/select.spec.d.ts +2 -0
  318. package/esm/components/inputs/select.spec.d.ts.map +1 -0
  319. package/esm/components/inputs/select.spec.js +1009 -0
  320. package/esm/components/inputs/select.spec.js.map +1 -0
  321. package/esm/components/inputs/slider.d.ts +66 -0
  322. package/esm/components/inputs/slider.d.ts.map +1 -0
  323. package/esm/components/inputs/slider.js +526 -0
  324. package/esm/components/inputs/slider.js.map +1 -0
  325. package/esm/components/inputs/slider.spec.d.ts +2 -0
  326. package/esm/components/inputs/slider.spec.d.ts.map +1 -0
  327. package/esm/components/inputs/slider.spec.js +812 -0
  328. package/esm/components/inputs/slider.spec.js.map +1 -0
  329. package/esm/components/inputs/switch.d.ts +50 -0
  330. package/esm/components/inputs/switch.d.ts.map +1 -0
  331. package/esm/components/inputs/switch.js +138 -0
  332. package/esm/components/inputs/switch.js.map +1 -0
  333. package/esm/components/inputs/switch.spec.d.ts +2 -0
  334. package/esm/components/inputs/switch.spec.d.ts.map +1 -0
  335. package/esm/components/inputs/switch.spec.js +313 -0
  336. package/esm/components/inputs/switch.spec.js.map +1 -0
  337. package/esm/components/inputs/text-area.d.ts +2 -0
  338. package/esm/components/inputs/text-area.d.ts.map +1 -1
  339. package/esm/components/inputs/text-area.js +13 -21
  340. package/esm/components/inputs/text-area.js.map +1 -1
  341. package/esm/components/inputs/text-area.spec.js +171 -156
  342. package/esm/components/inputs/text-area.spec.js.map +1 -1
  343. package/esm/components/linear-progress.d.ts +32 -0
  344. package/esm/components/linear-progress.d.ts.map +1 -0
  345. package/esm/components/linear-progress.js +79 -0
  346. package/esm/components/linear-progress.js.map +1 -0
  347. package/esm/components/linear-progress.spec.d.ts +2 -0
  348. package/esm/components/linear-progress.spec.d.ts.map +1 -0
  349. package/esm/components/linear-progress.spec.js +251 -0
  350. package/esm/components/linear-progress.spec.js.map +1 -0
  351. package/esm/components/list/index.d.ts +3 -0
  352. package/esm/components/list/index.d.ts.map +1 -0
  353. package/esm/components/list/index.js +3 -0
  354. package/esm/components/list/index.js.map +1 -0
  355. package/esm/components/list/list-item.d.ts +13 -0
  356. package/esm/components/list/list-item.d.ts.map +1 -0
  357. package/esm/components/list/list-item.js +81 -0
  358. package/esm/components/list/list-item.js.map +1 -0
  359. package/esm/components/list/list.d.ts +18 -0
  360. package/esm/components/list/list.d.ts.map +1 -0
  361. package/esm/components/list/list.js +42 -0
  362. package/esm/components/list/list.js.map +1 -0
  363. package/esm/components/list/list.spec.d.ts +2 -0
  364. package/esm/components/list/list.spec.d.ts.map +1 -0
  365. package/esm/components/list/list.spec.js +540 -0
  366. package/esm/components/list/list.spec.js.map +1 -0
  367. package/esm/components/loader.d.ts +2 -0
  368. package/esm/components/loader.d.ts.map +1 -1
  369. package/esm/components/loader.js +18 -10
  370. package/esm/components/loader.js.map +1 -1
  371. package/esm/components/loader.spec.js +191 -175
  372. package/esm/components/loader.spec.js.map +1 -1
  373. package/esm/components/menu/index.d.ts +3 -0
  374. package/esm/components/menu/index.d.ts.map +1 -0
  375. package/esm/components/menu/index.js +3 -0
  376. package/esm/components/menu/index.js.map +1 -0
  377. package/esm/components/menu/menu-types.d.ts +27 -0
  378. package/esm/components/menu/menu-types.d.ts.map +1 -0
  379. package/esm/components/menu/menu-types.js +22 -0
  380. package/esm/components/menu/menu-types.js.map +1 -0
  381. package/esm/components/menu/menu-types.spec.d.ts +2 -0
  382. package/esm/components/menu/menu-types.spec.d.ts.map +1 -0
  383. package/esm/components/menu/menu-types.spec.js +103 -0
  384. package/esm/components/menu/menu-types.spec.js.map +1 -0
  385. package/esm/components/menu/menu.d.ts +17 -0
  386. package/esm/components/menu/menu.d.ts.map +1 -0
  387. package/esm/components/menu/menu.js +240 -0
  388. package/esm/components/menu/menu.js.map +1 -0
  389. package/esm/components/menu/menu.spec.d.ts +2 -0
  390. package/esm/components/menu/menu.spec.d.ts.map +1 -0
  391. package/esm/components/menu/menu.spec.js +427 -0
  392. package/esm/components/menu/menu.spec.js.map +1 -0
  393. package/esm/components/modal.d.ts +3 -2
  394. package/esm/components/modal.d.ts.map +1 -1
  395. package/esm/components/modal.js +8 -5
  396. package/esm/components/modal.js.map +1 -1
  397. package/esm/components/modal.spec.js +50 -43
  398. package/esm/components/modal.spec.js.map +1 -1
  399. package/esm/components/noty-list.d.ts +4 -0
  400. package/esm/components/noty-list.d.ts.map +1 -1
  401. package/esm/components/noty-list.js +65 -53
  402. package/esm/components/noty-list.js.map +1 -1
  403. package/esm/components/noty-list.spec.js +71 -68
  404. package/esm/components/noty-list.spec.js.map +1 -1
  405. package/esm/components/page-container/index.d.ts +54 -0
  406. package/esm/components/page-container/index.d.ts.map +1 -0
  407. package/esm/components/page-container/index.js +63 -0
  408. package/esm/components/page-container/index.js.map +1 -0
  409. package/esm/components/page-container/index.spec.d.ts +2 -0
  410. package/esm/components/page-container/index.spec.d.ts.map +1 -0
  411. package/esm/components/page-container/index.spec.js +217 -0
  412. package/esm/components/page-container/index.spec.js.map +1 -0
  413. package/esm/components/page-container/page-header.d.ts +57 -0
  414. package/esm/components/page-container/page-header.d.ts.map +1 -0
  415. package/esm/components/page-container/page-header.js +93 -0
  416. package/esm/components/page-container/page-header.js.map +1 -0
  417. package/esm/components/page-container/page-header.spec.d.ts +2 -0
  418. package/esm/components/page-container/page-header.spec.d.ts.map +1 -0
  419. package/esm/components/page-container/page-header.spec.js +230 -0
  420. package/esm/components/page-container/page-header.spec.js.map +1 -0
  421. package/esm/components/page-layout/index.d.ts +83 -0
  422. package/esm/components/page-layout/index.d.ts.map +1 -0
  423. package/esm/components/page-layout/index.js +288 -0
  424. package/esm/components/page-layout/index.js.map +1 -0
  425. package/esm/components/page-layout/index.spec.d.ts +2 -0
  426. package/esm/components/page-layout/index.spec.d.ts.map +1 -0
  427. package/esm/components/page-layout/index.spec.js +637 -0
  428. package/esm/components/page-layout/index.spec.js.map +1 -0
  429. package/esm/components/pagination.d.ts +43 -0
  430. package/esm/components/pagination.d.ts.map +1 -0
  431. package/esm/components/pagination.js +165 -0
  432. package/esm/components/pagination.js.map +1 -0
  433. package/esm/components/pagination.spec.d.ts +2 -0
  434. package/esm/components/pagination.spec.d.ts.map +1 -0
  435. package/esm/components/pagination.spec.js +195 -0
  436. package/esm/components/pagination.spec.js.map +1 -0
  437. package/esm/components/paper.d.ts +3 -1
  438. package/esm/components/paper.d.ts.map +1 -1
  439. package/esm/components/paper.js +11 -9
  440. package/esm/components/paper.js.map +1 -1
  441. package/esm/components/paper.spec.js +26 -18
  442. package/esm/components/paper.spec.js.map +1 -1
  443. package/esm/components/rating.d.ts +62 -0
  444. package/esm/components/rating.d.ts.map +1 -0
  445. package/esm/components/rating.js +201 -0
  446. package/esm/components/rating.js.map +1 -0
  447. package/esm/components/rating.spec.d.ts +2 -0
  448. package/esm/components/rating.spec.d.ts.map +1 -0
  449. package/esm/components/rating.spec.js +663 -0
  450. package/esm/components/rating.spec.js.map +1 -0
  451. package/esm/components/result.d.ts +37 -0
  452. package/esm/components/result.d.ts.map +1 -0
  453. package/esm/components/result.js +109 -0
  454. package/esm/components/result.js.map +1 -0
  455. package/esm/components/result.spec.d.ts +2 -0
  456. package/esm/components/result.spec.d.ts.map +1 -0
  457. package/esm/components/result.spec.js +159 -0
  458. package/esm/components/result.spec.js.map +1 -0
  459. package/esm/components/searchable-input-styles.d.ts +8 -0
  460. package/esm/components/searchable-input-styles.d.ts.map +1 -0
  461. package/esm/components/searchable-input-styles.js +71 -0
  462. package/esm/components/searchable-input-styles.js.map +1 -0
  463. package/esm/components/skeleton.d.ts +2 -0
  464. package/esm/components/skeleton.d.ts.map +1 -1
  465. package/esm/components/skeleton.js +19 -6
  466. package/esm/components/skeleton.js.map +1 -1
  467. package/esm/components/skeleton.spec.js +103 -95
  468. package/esm/components/skeleton.spec.js.map +1 -1
  469. package/esm/components/styles.d.ts.map +1 -1
  470. package/esm/components/styles.js +14 -13
  471. package/esm/components/styles.js.map +1 -1
  472. package/esm/components/styles.spec.js +27 -26
  473. package/esm/components/styles.spec.js.map +1 -1
  474. package/esm/components/suggest/index.d.ts.map +1 -1
  475. package/esm/components/suggest/index.js +24 -85
  476. package/esm/components/suggest/index.js.map +1 -1
  477. package/esm/components/suggest/index.spec.js +402 -378
  478. package/esm/components/suggest/index.spec.js.map +1 -1
  479. package/esm/components/suggest/suggest-input.d.ts +2 -0
  480. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  481. package/esm/components/suggest/suggest-input.js +10 -8
  482. package/esm/components/suggest/suggest-input.js.map +1 -1
  483. package/esm/components/suggest/suggest-input.spec.js +83 -71
  484. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  485. package/esm/components/suggest/suggest-manager.spec.js +102 -92
  486. package/esm/components/suggest/suggest-manager.spec.js.map +1 -1
  487. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  488. package/esm/components/suggest/suggestion-list.js +21 -22
  489. package/esm/components/suggest/suggestion-list.js.map +1 -1
  490. package/esm/components/suggest/suggestion-list.spec.js +165 -146
  491. package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
  492. package/esm/components/tabs.d.ts +18 -2
  493. package/esm/components/tabs.d.ts.map +1 -1
  494. package/esm/components/tabs.js +154 -14
  495. package/esm/components/tabs.js.map +1 -1
  496. package/esm/components/tabs.spec.js +295 -7
  497. package/esm/components/tabs.spec.js.map +1 -1
  498. package/esm/components/timeline.d.ts +53 -0
  499. package/esm/components/timeline.d.ts.map +1 -0
  500. package/esm/components/timeline.js +162 -0
  501. package/esm/components/timeline.js.map +1 -0
  502. package/esm/components/timeline.spec.d.ts +2 -0
  503. package/esm/components/timeline.spec.d.ts.map +1 -0
  504. package/esm/components/timeline.spec.js +209 -0
  505. package/esm/components/timeline.spec.js.map +1 -0
  506. package/esm/components/tooltip.d.ts +25 -0
  507. package/esm/components/tooltip.d.ts.map +1 -0
  508. package/esm/components/tooltip.js +113 -0
  509. package/esm/components/tooltip.js.map +1 -0
  510. package/esm/components/tooltip.spec.d.ts +2 -0
  511. package/esm/components/tooltip.spec.d.ts.map +1 -0
  512. package/esm/components/tooltip.spec.js +152 -0
  513. package/esm/components/tooltip.spec.js.map +1 -0
  514. package/esm/components/tree/index.d.ts +3 -0
  515. package/esm/components/tree/index.d.ts.map +1 -0
  516. package/esm/components/tree/index.js +3 -0
  517. package/esm/components/tree/index.js.map +1 -0
  518. package/esm/components/tree/tree-item.d.ts +14 -0
  519. package/esm/components/tree/tree-item.d.ts.map +1 -0
  520. package/esm/components/tree/tree-item.js +118 -0
  521. package/esm/components/tree/tree-item.js.map +1 -0
  522. package/esm/components/tree/tree.d.ts +20 -0
  523. package/esm/components/tree/tree.d.ts.map +1 -0
  524. package/esm/components/tree/tree.js +66 -0
  525. package/esm/components/tree/tree.js.map +1 -0
  526. package/esm/components/tree/tree.spec.d.ts +2 -0
  527. package/esm/components/tree/tree.spec.d.ts.map +1 -0
  528. package/esm/components/tree/tree.spec.js +427 -0
  529. package/esm/components/tree/tree.spec.js.map +1 -0
  530. package/esm/components/typography.d.ts +48 -0
  531. package/esm/components/typography.d.ts.map +1 -0
  532. package/esm/components/typography.js +223 -0
  533. package/esm/components/typography.js.map +1 -0
  534. package/esm/components/typography.spec.d.ts +2 -0
  535. package/esm/components/typography.spec.d.ts.map +1 -0
  536. package/esm/components/typography.spec.js +199 -0
  537. package/esm/components/typography.spec.js.map +1 -0
  538. package/esm/components/wizard/index.d.ts +2 -0
  539. package/esm/components/wizard/index.d.ts.map +1 -1
  540. package/esm/components/wizard/index.spec.js +70 -56
  541. package/esm/components/wizard/index.spec.js.map +1 -1
  542. package/esm/services/click-away-service.d.ts +5 -2
  543. package/esm/services/click-away-service.d.ts.map +1 -1
  544. package/esm/services/click-away-service.js +7 -1
  545. package/esm/services/click-away-service.js.map +1 -1
  546. package/esm/services/click-away-service.spec.js +14 -12
  547. package/esm/services/click-away-service.spec.js.map +1 -1
  548. package/esm/services/css-variable-theme.d.ts +167 -1
  549. package/esm/services/css-variable-theme.d.ts.map +1 -1
  550. package/esm/services/css-variable-theme.js +102 -0
  551. package/esm/services/css-variable-theme.js.map +1 -1
  552. package/esm/services/css-variable-theme.spec.js +131 -1
  553. package/esm/services/css-variable-theme.spec.js.map +1 -1
  554. package/esm/services/default-dark-theme.d.ts +107 -2
  555. package/esm/services/default-dark-theme.d.ts.map +1 -1
  556. package/esm/services/default-dark-theme.js +87 -1
  557. package/esm/services/default-dark-theme.js.map +1 -1
  558. package/esm/services/default-light-theme.d.ts +107 -2
  559. package/esm/services/default-light-theme.d.ts.map +1 -1
  560. package/esm/services/default-light-theme.js +86 -0
  561. package/esm/services/default-light-theme.js.map +1 -1
  562. package/esm/services/index.d.ts +6 -2
  563. package/esm/services/index.d.ts.map +1 -1
  564. package/esm/services/index.js +6 -2
  565. package/esm/services/index.js.map +1 -1
  566. package/esm/services/layout-service.d.ts +217 -0
  567. package/esm/services/layout-service.d.ts.map +1 -0
  568. package/esm/services/layout-service.js +331 -0
  569. package/esm/services/layout-service.js.map +1 -0
  570. package/esm/services/layout-service.spec.d.ts +2 -0
  571. package/esm/services/layout-service.spec.d.ts.map +1 -0
  572. package/esm/services/layout-service.spec.js +425 -0
  573. package/esm/services/layout-service.spec.js.map +1 -0
  574. package/esm/services/list-service.d.ts +31 -0
  575. package/esm/services/list-service.d.ts.map +1 -0
  576. package/esm/services/list-service.js +149 -0
  577. package/esm/services/list-service.js.map +1 -0
  578. package/esm/services/list-service.spec.d.ts +2 -0
  579. package/esm/services/list-service.spec.d.ts.map +1 -0
  580. package/esm/services/list-service.spec.js +283 -0
  581. package/esm/services/list-service.spec.js.map +1 -0
  582. package/esm/services/palette-css-vars.d.ts +12 -0
  583. package/esm/services/palette-css-vars.d.ts.map +1 -0
  584. package/esm/services/palette-css-vars.js +44 -0
  585. package/esm/services/palette-css-vars.js.map +1 -0
  586. package/esm/services/theme-provider-service.d.ts +387 -2
  587. package/esm/services/theme-provider-service.d.ts.map +1 -1
  588. package/esm/services/theme-provider-service.js.map +1 -1
  589. package/esm/services/tree-service.d.ts +61 -0
  590. package/esm/services/tree-service.d.ts.map +1 -0
  591. package/esm/services/tree-service.js +149 -0
  592. package/esm/services/tree-service.js.map +1 -0
  593. package/esm/services/tree-service.spec.d.ts +2 -0
  594. package/esm/services/tree-service.spec.d.ts.map +1 -0
  595. package/esm/services/tree-service.spec.js +338 -0
  596. package/esm/services/tree-service.spec.js.map +1 -0
  597. package/esm/utils/promisify-animation.d.ts.map +1 -1
  598. package/esm/utils/promisify-animation.js +6 -1
  599. package/esm/utils/promisify-animation.js.map +1 -1
  600. package/package.json +7 -8
  601. package/src/components/accordion/accordion-item.tsx +197 -0
  602. package/src/components/accordion/accordion.spec.tsx +418 -0
  603. package/src/components/accordion/accordion.tsx +50 -0
  604. package/src/components/accordion/index.ts +2 -0
  605. package/src/components/alert.spec.tsx +256 -0
  606. package/src/components/alert.tsx +186 -0
  607. package/src/components/app-bar-link.spec.tsx +22 -19
  608. package/src/components/app-bar-link.tsx +29 -10
  609. package/src/components/app-bar.spec.tsx +73 -58
  610. package/src/components/app-bar.tsx +19 -12
  611. package/src/components/avatar.tsx +46 -47
  612. package/src/components/badge.spec.tsx +228 -0
  613. package/src/components/badge.tsx +104 -0
  614. package/src/components/breadcrumb.spec.tsx +396 -0
  615. package/src/components/breadcrumb.tsx +188 -0
  616. package/src/components/button-group.spec.tsx +611 -0
  617. package/src/components/button-group.tsx +423 -0
  618. package/src/components/button.spec.tsx +257 -67
  619. package/src/components/button.tsx +130 -80
  620. package/src/components/card.spec.tsx +389 -0
  621. package/src/components/card.tsx +261 -0
  622. package/src/components/carousel.spec.tsx +894 -0
  623. package/src/components/carousel.tsx +376 -0
  624. package/src/components/chip.spec.tsx +200 -0
  625. package/src/components/chip.tsx +188 -0
  626. package/src/components/circular-progress.spec.tsx +289 -0
  627. package/src/components/circular-progress.tsx +145 -0
  628. package/src/components/command-palette/command-palette-input.spec.tsx +219 -219
  629. package/src/components/command-palette/command-palette-input.tsx +25 -9
  630. package/src/components/command-palette/command-palette-manager.spec.ts +132 -117
  631. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +358 -358
  632. package/src/components/command-palette/command-palette-suggestion-list.tsx +22 -20
  633. package/src/components/command-palette/index.spec.tsx +12 -12
  634. package/src/components/command-palette/index.tsx +25 -102
  635. package/src/components/context-menu/context-menu-item.tsx +85 -0
  636. package/src/components/context-menu/context-menu-manager.spec.ts +433 -0
  637. package/src/components/context-menu/context-menu-manager.ts +148 -0
  638. package/src/components/context-menu/context-menu.spec.tsx +352 -0
  639. package/src/components/context-menu/context-menu.tsx +116 -0
  640. package/src/components/context-menu/index.ts +3 -0
  641. package/src/components/data-grid/body.spec.tsx +287 -283
  642. package/src/components/data-grid/data-grid-row.spec.tsx +165 -140
  643. package/src/components/data-grid/data-grid-row.tsx +72 -55
  644. package/src/components/data-grid/data-grid.spec.tsx +659 -729
  645. package/src/components/data-grid/data-grid.tsx +19 -15
  646. package/src/components/data-grid/footer.spec.tsx +249 -237
  647. package/src/components/data-grid/header.spec.tsx +374 -351
  648. package/src/components/data-grid/header.tsx +58 -39
  649. package/src/components/data-grid/selection-cell.spec.tsx +46 -45
  650. package/src/components/data-grid/selection-cell.tsx +2 -6
  651. package/src/components/dialog.spec.tsx +135 -0
  652. package/src/components/dialog.tsx +277 -0
  653. package/src/components/divider.spec.tsx +197 -0
  654. package/src/components/divider.tsx +147 -0
  655. package/src/components/drawer/drawer-toggle-button.spec.tsx +374 -0
  656. package/src/components/drawer/drawer-toggle-button.tsx +124 -0
  657. package/src/components/drawer/index.spec.tsx +748 -0
  658. package/src/components/drawer/index.tsx +227 -0
  659. package/src/components/dropdown.spec.tsx +445 -0
  660. package/src/components/dropdown.tsx +343 -0
  661. package/src/components/fab.spec.tsx +51 -40
  662. package/src/components/fab.tsx +32 -9
  663. package/src/components/form.spec.tsx +303 -293
  664. package/src/components/form.tsx +10 -7
  665. package/src/components/grid.spec.tsx +276 -183
  666. package/src/components/grid.tsx +10 -10
  667. package/src/components/icons/icon-definitions.spec.ts +68 -0
  668. package/src/components/icons/icon-definitions.ts +509 -0
  669. package/src/components/icons/icon-types.ts +48 -0
  670. package/src/components/icons/icon.spec.tsx +314 -0
  671. package/src/components/icons/icon.tsx +111 -0
  672. package/src/components/icons/index.ts +4 -0
  673. package/src/components/image.spec.tsx +748 -0
  674. package/src/components/image.tsx +520 -0
  675. package/src/components/index.ts +32 -4
  676. package/src/components/inputs/autocomplete.spec.tsx +10 -1
  677. package/src/components/inputs/autocomplete.tsx +13 -7
  678. package/src/components/inputs/checkbox.spec.tsx +377 -0
  679. package/src/components/inputs/checkbox.tsx +198 -0
  680. package/src/components/inputs/index.ts +7 -0
  681. package/src/components/inputs/input-number.spec.tsx +686 -0
  682. package/src/components/inputs/input-number.tsx +387 -0
  683. package/src/components/inputs/input.spec.tsx +544 -508
  684. package/src/components/inputs/input.tsx +91 -132
  685. package/src/components/inputs/radio-group.spec.tsx +281 -0
  686. package/src/components/inputs/radio-group.tsx +108 -0
  687. package/src/components/inputs/radio.spec.tsx +273 -0
  688. package/src/components/inputs/radio.tsx +199 -0
  689. package/src/components/inputs/select.spec.tsx +1237 -0
  690. package/src/components/inputs/select.tsx +775 -0
  691. package/src/components/inputs/slider.spec.tsx +1020 -0
  692. package/src/components/inputs/slider.tsx +696 -0
  693. package/src/components/inputs/switch.spec.tsx +410 -0
  694. package/src/components/inputs/switch.tsx +218 -0
  695. package/src/components/inputs/text-area.spec.tsx +186 -171
  696. package/src/components/inputs/text-area.tsx +13 -19
  697. package/src/components/linear-progress.spec.tsx +320 -0
  698. package/src/components/linear-progress.tsx +127 -0
  699. package/src/components/list/index.ts +2 -0
  700. package/src/components/list/list-item.tsx +106 -0
  701. package/src/components/list/list.spec.tsx +817 -0
  702. package/src/components/list/list.tsx +92 -0
  703. package/src/components/loader.spec.tsx +220 -204
  704. package/src/components/loader.tsx +17 -9
  705. package/src/components/menu/index.ts +2 -0
  706. package/src/components/menu/menu-types.spec.ts +122 -0
  707. package/src/components/menu/menu-types.ts +43 -0
  708. package/src/components/menu/menu.spec.tsx +483 -0
  709. package/src/components/menu/menu.tsx +326 -0
  710. package/src/components/modal.spec.tsx +65 -55
  711. package/src/components/modal.tsx +9 -6
  712. package/src/components/noty-list.spec.tsx +78 -75
  713. package/src/components/noty-list.tsx +76 -68
  714. package/src/components/page-container/index.spec.tsx +274 -0
  715. package/src/components/page-container/index.tsx +82 -0
  716. package/src/components/page-container/page-header.spec.tsx +308 -0
  717. package/src/components/page-container/page-header.tsx +127 -0
  718. package/src/components/page-layout/index.spec.tsx +882 -0
  719. package/src/components/page-layout/index.tsx +392 -0
  720. package/src/components/pagination.spec.tsx +275 -0
  721. package/src/components/pagination.tsx +249 -0
  722. package/src/components/paper.spec.tsx +26 -18
  723. package/src/components/paper.tsx +12 -10
  724. package/src/components/rating.spec.tsx +866 -0
  725. package/src/components/rating.tsx +286 -0
  726. package/src/components/result.spec.tsx +221 -0
  727. package/src/components/result.tsx +155 -0
  728. package/src/components/searchable-input-styles.ts +81 -0
  729. package/src/components/skeleton.spec.tsx +126 -118
  730. package/src/components/skeleton.tsx +23 -6
  731. package/src/components/styles.spec.ts +27 -28
  732. package/src/components/styles.tsx +15 -13
  733. package/src/components/suggest/index.spec.tsx +611 -587
  734. package/src/components/suggest/index.tsx +28 -95
  735. package/src/components/suggest/suggest-input.spec.tsx +95 -81
  736. package/src/components/suggest/suggest-input.tsx +9 -7
  737. package/src/components/suggest/suggest-manager.spec.ts +103 -93
  738. package/src/components/suggest/suggestion-list.spec.tsx +194 -173
  739. package/src/components/suggest/suggestion-list.tsx +23 -22
  740. package/src/components/tabs.spec.tsx +369 -7
  741. package/src/components/tabs.tsx +221 -18
  742. package/src/components/timeline.spec.tsx +294 -0
  743. package/src/components/timeline.tsx +221 -0
  744. package/src/components/tooltip.spec.tsx +223 -0
  745. package/src/components/tooltip.tsx +155 -0
  746. package/src/components/tree/index.ts +2 -0
  747. package/src/components/tree/tree-item.tsx +161 -0
  748. package/src/components/tree/tree.spec.tsx +677 -0
  749. package/src/components/tree/tree.tsx +111 -0
  750. package/src/components/typography.spec.tsx +235 -0
  751. package/src/components/typography.tsx +292 -0
  752. package/src/components/wizard/index.spec.tsx +77 -68
  753. package/src/services/click-away-service.spec.ts +14 -16
  754. package/src/services/click-away-service.ts +9 -3
  755. package/src/services/css-variable-theme.spec.ts +169 -1
  756. package/src/services/css-variable-theme.ts +107 -2
  757. package/src/services/default-dark-theme.ts +89 -3
  758. package/src/services/default-light-theme.ts +88 -2
  759. package/src/services/index.ts +6 -2
  760. package/src/services/layout-service.spec.ts +535 -0
  761. package/src/services/layout-service.ts +391 -0
  762. package/src/services/list-service.spec.ts +362 -0
  763. package/src/services/list-service.ts +169 -0
  764. package/src/services/palette-css-vars.ts +46 -0
  765. package/src/services/theme-provider-service.ts +246 -1
  766. package/src/services/tree-service.spec.ts +412 -0
  767. package/src/services/tree-service.ts +179 -0
  768. package/src/utils/promisify-animation.ts +7 -1
@@ -0,0 +1,611 @@
1
+ import { Injector } from '@furystack/inject'
2
+ import { createComponent, initializeShadeRoot } from '@furystack/shades'
3
+ import { sleepAsync, usingAsync } from '@furystack/utils'
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
+ import {
6
+ ButtonGroup,
7
+ SegmentedControl,
8
+ ToggleButton,
9
+ ToggleButtonGroup,
10
+ type SegmentedControlOption,
11
+ } from './button-group.js'
12
+ import { Button } from './button.js'
13
+
14
+ describe('ButtonGroup', () => {
15
+ beforeEach(() => {
16
+ document.body.innerHTML = '<div id="root"></div>'
17
+ })
18
+
19
+ afterEach(() => {
20
+ document.body.innerHTML = ''
21
+ })
22
+
23
+ const renderButtonGroup = async (props: Parameters<typeof ButtonGroup>[0] = {}, children?: JSX.Element[]) => {
24
+ const injector = new Injector()
25
+ const root = document.getElementById('root')!
26
+ initializeShadeRoot({
27
+ injector,
28
+ rootElement: root,
29
+ jsxElement: <ButtonGroup {...props}>{children}</ButtonGroup>,
30
+ })
31
+ await sleepAsync(50)
32
+ return {
33
+ injector,
34
+ group: root.querySelector('shade-button-group') as HTMLElement,
35
+ [Symbol.asyncDispose]: () => injector[Symbol.asyncDispose](),
36
+ }
37
+ }
38
+
39
+ describe('rendering', () => {
40
+ it('should render a button group element', async () => {
41
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
42
+ expect(group).toBeTruthy()
43
+ expect(group.tagName.toLowerCase()).toBe('shade-button-group')
44
+ })
45
+ })
46
+
47
+ it('should have role="group"', async () => {
48
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
49
+ expect(group.getAttribute('role')).toBe('group')
50
+ })
51
+ })
52
+
53
+ it('should render children', async () => {
54
+ await usingAsync(
55
+ await renderButtonGroup({}, [<Button>First</Button>, <Button>Second</Button>] as unknown as JSX.Element[]),
56
+ async ({ group }) => {
57
+ const buttons = group.querySelectorAll('button[is="shade-button"]')
58
+ expect(buttons.length).toBe(2)
59
+ },
60
+ )
61
+ })
62
+ })
63
+
64
+ describe('orientation', () => {
65
+ it('should default to horizontal orientation', async () => {
66
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
67
+ expect(group.getAttribute('data-orientation')).toBe('horizontal')
68
+ })
69
+ })
70
+
71
+ it('should support vertical orientation', async () => {
72
+ await usingAsync(await renderButtonGroup({ orientation: 'vertical' }), async ({ group }) => {
73
+ expect(group.getAttribute('data-orientation')).toBe('vertical')
74
+ })
75
+ })
76
+ })
77
+
78
+ describe('variant', () => {
79
+ it('should not set data-variant when variant is not specified', async () => {
80
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
81
+ expect(group.getAttribute('data-variant')).toBeNull()
82
+ })
83
+ })
84
+
85
+ it('should set data-variant for contained', async () => {
86
+ await usingAsync(await renderButtonGroup({ variant: 'contained' }), async ({ group }) => {
87
+ expect(group.getAttribute('data-variant')).toBe('contained')
88
+ })
89
+ })
90
+
91
+ it('should set data-variant for outlined', async () => {
92
+ await usingAsync(await renderButtonGroup({ variant: 'outlined' }), async ({ group }) => {
93
+ expect(group.getAttribute('data-variant')).toBe('outlined')
94
+ })
95
+ })
96
+ })
97
+
98
+ describe('color', () => {
99
+ it('should not set data-color when color is not specified', async () => {
100
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
101
+ expect(group.getAttribute('data-color')).toBeNull()
102
+ })
103
+ })
104
+
105
+ it('should set data-color for primary', async () => {
106
+ await usingAsync(await renderButtonGroup({ color: 'primary' }), async ({ group }) => {
107
+ expect(group.getAttribute('data-color')).toBe('primary')
108
+ })
109
+ })
110
+ })
111
+
112
+ describe('disabled', () => {
113
+ it('should not set data-disabled when not disabled', async () => {
114
+ await usingAsync(await renderButtonGroup(), async ({ group }) => {
115
+ expect(group.hasAttribute('data-disabled')).toBe(false)
116
+ })
117
+ })
118
+
119
+ it('should set data-disabled when disabled', async () => {
120
+ await usingAsync(await renderButtonGroup({ disabled: true }), async ({ group }) => {
121
+ expect(group.hasAttribute('data-disabled')).toBe(true)
122
+ })
123
+ })
124
+ })
125
+
126
+ describe('custom styles', () => {
127
+ it('should apply custom styles', async () => {
128
+ await usingAsync(await renderButtonGroup({ style: { gap: '4px' } }), async ({ group }) => {
129
+ expect(group.style.gap).toBe('4px')
130
+ })
131
+ })
132
+ })
133
+ })
134
+
135
+ describe('ToggleButtonGroup', () => {
136
+ beforeEach(() => {
137
+ document.body.innerHTML = '<div id="root"></div>'
138
+ })
139
+
140
+ afterEach(() => {
141
+ document.body.innerHTML = ''
142
+ })
143
+
144
+ const renderToggleGroup = async (props: Parameters<typeof ToggleButtonGroup>[0] = {}, children?: JSX.Element[]) => {
145
+ const injector = new Injector()
146
+ const root = document.getElementById('root')!
147
+ initializeShadeRoot({
148
+ injector,
149
+ rootElement: root,
150
+ jsxElement: <ToggleButtonGroup {...props}>{children}</ToggleButtonGroup>,
151
+ })
152
+ await sleepAsync(100)
153
+ return {
154
+ injector,
155
+ group: root.querySelector('shade-toggle-button-group') as HTMLElement,
156
+ [Symbol.asyncDispose]: () => injector[Symbol.asyncDispose](),
157
+ }
158
+ }
159
+
160
+ describe('rendering', () => {
161
+ it('should render a toggle button group', async () => {
162
+ await usingAsync(await renderToggleGroup(), async ({ group }) => {
163
+ expect(group).toBeTruthy()
164
+ expect(group.getAttribute('role')).toBe('group')
165
+ })
166
+ })
167
+
168
+ it('should render toggle button children', async () => {
169
+ await usingAsync(
170
+ await renderToggleGroup({}, [
171
+ <ToggleButton value="a">A</ToggleButton>,
172
+ <ToggleButton value="b">B</ToggleButton>,
173
+ <ToggleButton value="c">C</ToggleButton>,
174
+ ] as unknown as JSX.Element[]),
175
+ async ({ group }) => {
176
+ const buttons = group.querySelectorAll('button[data-value]')
177
+ expect(buttons.length).toBe(3)
178
+ },
179
+ )
180
+ })
181
+ })
182
+
183
+ describe('exclusive mode', () => {
184
+ it('should call onValueChange with clicked value in exclusive mode', async () => {
185
+ const handleChange = vi.fn()
186
+ await usingAsync(
187
+ await renderToggleGroup({ exclusive: true, value: '', onValueChange: handleChange }, [
188
+ <ToggleButton value="left">Left</ToggleButton>,
189
+ <ToggleButton value="center">Center</ToggleButton>,
190
+ <ToggleButton value="right">Right</ToggleButton>,
191
+ ] as unknown as JSX.Element[]),
192
+ async ({ group }) => {
193
+ const centerBtn = group.querySelector('button[data-value="center"]') as HTMLButtonElement
194
+ centerBtn.click()
195
+ expect(handleChange).toHaveBeenCalledWith('center')
196
+ },
197
+ )
198
+ })
199
+
200
+ it('should deselect in exclusive mode when clicking the already selected value', async () => {
201
+ const handleChange = vi.fn()
202
+ await usingAsync(
203
+ await renderToggleGroup({ exclusive: true, value: 'center', onValueChange: handleChange }, [
204
+ <ToggleButton value="left">Left</ToggleButton>,
205
+ <ToggleButton value="center">Center</ToggleButton>,
206
+ <ToggleButton value="right">Right</ToggleButton>,
207
+ ] as unknown as JSX.Element[]),
208
+ async ({ group }) => {
209
+ const centerBtn = group.querySelector('button[data-value="center"]') as HTMLButtonElement
210
+ centerBtn.click()
211
+ expect(handleChange).toHaveBeenCalledWith('')
212
+ },
213
+ )
214
+ })
215
+ })
216
+
217
+ describe('multi-select mode', () => {
218
+ it('should add value to selection in multi-select mode', async () => {
219
+ const handleChange = vi.fn()
220
+ await usingAsync(
221
+ await renderToggleGroup({ value: ['bold'], onValueChange: handleChange }, [
222
+ <ToggleButton value="bold">B</ToggleButton>,
223
+ <ToggleButton value="italic">I</ToggleButton>,
224
+ <ToggleButton value="underline">U</ToggleButton>,
225
+ ] as unknown as JSX.Element[]),
226
+ async ({ group }) => {
227
+ const italicBtn = group.querySelector('button[data-value="italic"]') as HTMLButtonElement
228
+ italicBtn.click()
229
+ expect(handleChange).toHaveBeenCalledWith(['bold', 'italic'])
230
+ },
231
+ )
232
+ })
233
+
234
+ it('should remove value from selection in multi-select mode', async () => {
235
+ const handleChange = vi.fn()
236
+ await usingAsync(
237
+ await renderToggleGroup({ value: ['bold', 'italic'], onValueChange: handleChange }, [
238
+ <ToggleButton value="bold">B</ToggleButton>,
239
+ <ToggleButton value="italic">I</ToggleButton>,
240
+ <ToggleButton value="underline">U</ToggleButton>,
241
+ ] as unknown as JSX.Element[]),
242
+ async ({ group }) => {
243
+ const boldBtn = group.querySelector('button[data-value="bold"]') as HTMLButtonElement
244
+ boldBtn.click()
245
+ expect(handleChange).toHaveBeenCalledWith(['italic'])
246
+ },
247
+ )
248
+ })
249
+ })
250
+
251
+ describe('selected state', () => {
252
+ it('should mark the selected button with data-selected in exclusive mode', async () => {
253
+ await usingAsync(
254
+ await renderToggleGroup({ exclusive: true, value: 'center' }, [
255
+ <ToggleButton value="left">Left</ToggleButton>,
256
+ <ToggleButton value="center">Center</ToggleButton>,
257
+ <ToggleButton value="right">Right</ToggleButton>,
258
+ ] as unknown as JSX.Element[]),
259
+ async ({ group }) => {
260
+ // Wait for requestAnimationFrame
261
+ await sleepAsync(50)
262
+ const centerBtn = group.querySelector('button[data-value="center"]') as HTMLButtonElement
263
+ const leftBtn = group.querySelector('button[data-value="left"]') as HTMLButtonElement
264
+ expect(centerBtn.hasAttribute('data-selected')).toBe(true)
265
+ expect(leftBtn.hasAttribute('data-selected')).toBe(false)
266
+ },
267
+ )
268
+ })
269
+
270
+ it('should mark multiple selected buttons in multi-select mode', async () => {
271
+ await usingAsync(
272
+ await renderToggleGroup({ value: ['bold', 'underline'] }, [
273
+ <ToggleButton value="bold">B</ToggleButton>,
274
+ <ToggleButton value="italic">I</ToggleButton>,
275
+ <ToggleButton value="underline">U</ToggleButton>,
276
+ ] as unknown as JSX.Element[]),
277
+ async ({ group }) => {
278
+ await sleepAsync(50)
279
+ const boldBtn = group.querySelector('button[data-value="bold"]') as HTMLButtonElement
280
+ const italicBtn = group.querySelector('button[data-value="italic"]') as HTMLButtonElement
281
+ const underlineBtn = group.querySelector('button[data-value="underline"]') as HTMLButtonElement
282
+ expect(boldBtn.hasAttribute('data-selected')).toBe(true)
283
+ expect(italicBtn.hasAttribute('data-selected')).toBe(false)
284
+ expect(underlineBtn.hasAttribute('data-selected')).toBe(true)
285
+ },
286
+ )
287
+ })
288
+ })
289
+
290
+ describe('orientation', () => {
291
+ it('should default to horizontal', async () => {
292
+ await usingAsync(await renderToggleGroup(), async ({ group }) => {
293
+ expect(group.getAttribute('data-orientation')).toBe('horizontal')
294
+ })
295
+ })
296
+
297
+ it('should support vertical', async () => {
298
+ await usingAsync(await renderToggleGroup({ orientation: 'vertical' }), async ({ group }) => {
299
+ expect(group.getAttribute('data-orientation')).toBe('vertical')
300
+ })
301
+ })
302
+ })
303
+
304
+ describe('color', () => {
305
+ it('should set default color CSS variable when no color specified', async () => {
306
+ await usingAsync(await renderToggleGroup(), async ({ group }) => {
307
+ expect(group.style.getPropertyValue('--toggle-color-main')).toBe('var(--shades-theme-text-secondary)')
308
+ })
309
+ })
310
+
311
+ it('should set color CSS variable for a palette color', async () => {
312
+ await usingAsync(await renderToggleGroup({ color: 'primary' }), async ({ group }) => {
313
+ expect(group.style.getPropertyValue('--toggle-color-main')).toBe('var(--shades-theme-palette-primary-main)')
314
+ })
315
+ })
316
+ })
317
+ })
318
+
319
+ describe('SegmentedControl', () => {
320
+ beforeEach(() => {
321
+ document.body.innerHTML = '<div id="root"></div>'
322
+ })
323
+
324
+ afterEach(() => {
325
+ document.body.innerHTML = ''
326
+ })
327
+
328
+ const defaultOptions: SegmentedControlOption[] = [
329
+ { value: 'daily', label: 'Daily' },
330
+ { value: 'weekly', label: 'Weekly' },
331
+ { value: 'monthly', label: 'Monthly' },
332
+ ]
333
+
334
+ const renderSegmented = async (props: Partial<Parameters<typeof SegmentedControl>[0]> = {}) => {
335
+ const injector = new Injector()
336
+ const root = document.getElementById('root')!
337
+ initializeShadeRoot({
338
+ injector,
339
+ rootElement: root,
340
+ jsxElement: <SegmentedControl options={defaultOptions} {...props} />,
341
+ })
342
+ await sleepAsync(50)
343
+ return {
344
+ injector,
345
+ control: root.querySelector('shade-segmented-control') as HTMLElement,
346
+ [Symbol.asyncDispose]: () => injector[Symbol.asyncDispose](),
347
+ }
348
+ }
349
+
350
+ describe('rendering', () => {
351
+ it('should render a segmented control', async () => {
352
+ await usingAsync(await renderSegmented(), async ({ control }) => {
353
+ expect(control).toBeTruthy()
354
+ expect(control.getAttribute('role')).toBe('radiogroup')
355
+ })
356
+ })
357
+
358
+ it('should render all options as buttons', async () => {
359
+ await usingAsync(await renderSegmented(), async ({ control }) => {
360
+ const buttons = control.querySelectorAll('.segmented-option')
361
+ expect(buttons.length).toBe(3)
362
+ })
363
+ })
364
+
365
+ it('should render option labels', async () => {
366
+ await usingAsync(await renderSegmented(), async ({ control }) => {
367
+ const buttons = control.querySelectorAll('.segmented-option')
368
+ expect(buttons[0].textContent).toContain('Daily')
369
+ expect(buttons[1].textContent).toContain('Weekly')
370
+ expect(buttons[2].textContent).toContain('Monthly')
371
+ })
372
+ })
373
+ })
374
+
375
+ describe('selection', () => {
376
+ it('should mark the selected option with data-selected', async () => {
377
+ await usingAsync(await renderSegmented({ value: 'weekly' }), async ({ control }) => {
378
+ const buttons = control.querySelectorAll('.segmented-option')
379
+ expect(buttons[0].hasAttribute('data-selected')).toBe(false)
380
+ expect(buttons[1].hasAttribute('data-selected')).toBe(true)
381
+ expect(buttons[2].hasAttribute('data-selected')).toBe(false)
382
+ })
383
+ })
384
+
385
+ it('should set aria-checked on the selected option', async () => {
386
+ await usingAsync(await renderSegmented({ value: 'daily' }), async ({ control }) => {
387
+ const buttons = control.querySelectorAll('.segmented-option')
388
+ expect(buttons[0].getAttribute('aria-checked')).toBe('true')
389
+ expect(buttons[1].getAttribute('aria-checked')).toBe('false')
390
+ })
391
+ })
392
+
393
+ it('should call onValueChange when an option is clicked', async () => {
394
+ const handleChange = vi.fn()
395
+ await usingAsync(await renderSegmented({ value: 'daily', onValueChange: handleChange }), async ({ control }) => {
396
+ const monthlyBtn = control.querySelectorAll('.segmented-option')[2] as HTMLButtonElement
397
+ monthlyBtn.click()
398
+ expect(handleChange).toHaveBeenCalledWith('monthly')
399
+ })
400
+ })
401
+
402
+ it('should not call onValueChange when clicking the already selected option', async () => {
403
+ const handleChange = vi.fn()
404
+ await usingAsync(await renderSegmented({ value: 'daily', onValueChange: handleChange }), async ({ control }) => {
405
+ const dailyBtn = control.querySelectorAll('.segmented-option')[0] as HTMLButtonElement
406
+ dailyBtn.click()
407
+ expect(handleChange).not.toHaveBeenCalled()
408
+ })
409
+ })
410
+ })
411
+
412
+ describe('disabled', () => {
413
+ it('should disable all options when disabled', async () => {
414
+ await usingAsync(await renderSegmented({ disabled: true }), async ({ control }) => {
415
+ const buttons = control.querySelectorAll('.segmented-option')
416
+ expect(buttons.length).toBe(3)
417
+ buttons.forEach((btn) => {
418
+ expect((btn as HTMLButtonElement).disabled).toBe(true)
419
+ })
420
+ })
421
+ })
422
+
423
+ it('should disable individual options', async () => {
424
+ const options: SegmentedControlOption[] = [
425
+ { value: 'a', label: 'A' },
426
+ { value: 'b', label: 'B', disabled: true },
427
+ { value: 'c', label: 'C' },
428
+ ]
429
+ await usingAsync(await renderSegmented({ options }), async ({ control }) => {
430
+ const buttons = control.querySelectorAll('.segmented-option')
431
+ expect((buttons[0] as HTMLButtonElement).disabled).toBe(false)
432
+ expect((buttons[1] as HTMLButtonElement).disabled).toBe(true)
433
+ expect((buttons[2] as HTMLButtonElement).disabled).toBe(false)
434
+ })
435
+ })
436
+
437
+ it('should not call onValueChange when a disabled option is clicked', async () => {
438
+ const handleChange = vi.fn()
439
+ const options: SegmentedControlOption[] = [
440
+ { value: 'a', label: 'A' },
441
+ { value: 'b', label: 'B', disabled: true },
442
+ ]
443
+ await usingAsync(await renderSegmented({ options, onValueChange: handleChange }), async ({ control }) => {
444
+ const disabledBtn = control.querySelectorAll('.segmented-option')[1] as HTMLButtonElement
445
+ disabledBtn.click()
446
+ expect(handleChange).not.toHaveBeenCalled()
447
+ })
448
+ })
449
+ })
450
+
451
+ describe('size', () => {
452
+ it('should not set data-size by default', async () => {
453
+ await usingAsync(await renderSegmented(), async ({ control }) => {
454
+ expect(control.hasAttribute('data-size')).toBe(false)
455
+ })
456
+ })
457
+
458
+ it('should set data-size="small" for small size', async () => {
459
+ await usingAsync(await renderSegmented({ size: 'small' }), async ({ control }) => {
460
+ expect(control.getAttribute('data-size')).toBe('small')
461
+ })
462
+ })
463
+ })
464
+
465
+ describe('color', () => {
466
+ it('should set default primary color CSS variable', async () => {
467
+ await usingAsync(await renderSegmented(), async ({ control }) => {
468
+ expect(control.style.getPropertyValue('--seg-color-main')).toBe('var(--shades-theme-palette-primary-main)')
469
+ })
470
+ })
471
+
472
+ it('should set color CSS variable for a palette color', async () => {
473
+ await usingAsync(await renderSegmented({ color: 'secondary' }), async ({ control }) => {
474
+ expect(control.style.getPropertyValue('--seg-color-main')).toBe('var(--shades-theme-palette-secondary-main)')
475
+ })
476
+ })
477
+ })
478
+
479
+ describe('custom styles', () => {
480
+ it('should apply custom styles', async () => {
481
+ await usingAsync(await renderSegmented({ style: { margin: '10px' } }), async ({ control }) => {
482
+ expect(control.style.margin).toBe('10px')
483
+ })
484
+ })
485
+ })
486
+ })
487
+
488
+ describe('ToggleButtonGroup edge cases', () => {
489
+ beforeEach(() => {
490
+ document.body.innerHTML = '<div id="root"></div>'
491
+ })
492
+
493
+ afterEach(() => {
494
+ document.body.innerHTML = ''
495
+ })
496
+
497
+ const renderToggleGroup = async (props: Parameters<typeof ToggleButtonGroup>[0] = {}, children?: JSX.Element[]) => {
498
+ const injector = new Injector()
499
+ const root = document.getElementById('root')!
500
+ initializeShadeRoot({
501
+ injector,
502
+ rootElement: root,
503
+ jsxElement: <ToggleButtonGroup {...props}>{children}</ToggleButtonGroup>,
504
+ })
505
+ await sleepAsync(100)
506
+ return {
507
+ injector,
508
+ group: root.querySelector('shade-toggle-button-group') as HTMLElement,
509
+ [Symbol.asyncDispose]: () => injector[Symbol.asyncDispose](),
510
+ }
511
+ }
512
+
513
+ it('should handle string value for multi-select (non-array)', async () => {
514
+ const handleChange = vi.fn()
515
+ await usingAsync(
516
+ await renderToggleGroup({ value: 'bold', onValueChange: handleChange }, [
517
+ <ToggleButton value="bold">B</ToggleButton>,
518
+ <ToggleButton value="italic">I</ToggleButton>,
519
+ ] as unknown as JSX.Element[]),
520
+ async ({ group }) => {
521
+ const italicBtn = group.querySelector('button[data-value="italic"]') as HTMLButtonElement
522
+ italicBtn.click()
523
+ expect(handleChange).toHaveBeenCalledWith(['bold', 'italic'])
524
+ },
525
+ )
526
+ })
527
+
528
+ it('should handle empty value for multi-select', async () => {
529
+ const handleChange = vi.fn()
530
+ await usingAsync(
531
+ await renderToggleGroup({ value: undefined, onValueChange: handleChange }, [
532
+ <ToggleButton value="bold">B</ToggleButton>,
533
+ ] as unknown as JSX.Element[]),
534
+ async ({ group }) => {
535
+ const boldBtn = group.querySelector('button[data-value="bold"]') as HTMLButtonElement
536
+ boldBtn.click()
537
+ expect(handleChange).toHaveBeenCalledWith(['bold'])
538
+ },
539
+ )
540
+ })
541
+
542
+ it('should handle exclusive mode with array value', async () => {
543
+ const handleChange = vi.fn()
544
+ await usingAsync(
545
+ await renderToggleGroup({ exclusive: true, value: ['center'], onValueChange: handleChange }, [
546
+ <ToggleButton value="left">Left</ToggleButton>,
547
+ <ToggleButton value="center">Center</ToggleButton>,
548
+ ] as unknown as JSX.Element[]),
549
+ async ({ group }) => {
550
+ const leftBtn = group.querySelector('button[data-value="left"]') as HTMLButtonElement
551
+ leftBtn.click()
552
+ expect(handleChange).toHaveBeenCalledWith('left')
553
+ },
554
+ )
555
+ })
556
+
557
+ it('should not call onValueChange when clicking a disabled button', async () => {
558
+ const handleChange = vi.fn()
559
+ await usingAsync(
560
+ await renderToggleGroup({ exclusive: true, value: '', onValueChange: handleChange }, [
561
+ <ToggleButton value="a" disabled>
562
+ A
563
+ </ToggleButton>,
564
+ ] as unknown as JSX.Element[]),
565
+ async ({ group }) => {
566
+ const btn = group.querySelector('button[data-value="a"]') as HTMLButtonElement
567
+ btn.click()
568
+ expect(handleChange).not.toHaveBeenCalled()
569
+ },
570
+ )
571
+ })
572
+
573
+ it('should disable all toggle buttons when group disabled is true', async () => {
574
+ await usingAsync(
575
+ await renderToggleGroup({ disabled: true }, [
576
+ <ToggleButton value="a">A</ToggleButton>,
577
+ <ToggleButton value="b">B</ToggleButton>,
578
+ ] as unknown as JSX.Element[]),
579
+ async ({ group }) => {
580
+ await sleepAsync(50)
581
+ const buttons = group.querySelectorAll('button[data-value]')
582
+ buttons.forEach((btn) => {
583
+ expect(btn.hasAttribute('disabled')).toBe(true)
584
+ })
585
+ },
586
+ )
587
+ })
588
+
589
+ it('should apply vertical orientation border radius', async () => {
590
+ await usingAsync(
591
+ await renderToggleGroup({ orientation: 'vertical' }, [
592
+ <ToggleButton value="a">A</ToggleButton>,
593
+ <ToggleButton value="b">B</ToggleButton>,
594
+ ] as unknown as JSX.Element[]),
595
+ async ({ group }) => {
596
+ await sleepAsync(50)
597
+ const buttons = group.querySelectorAll('button[data-value]')
598
+ // First button should have top radius
599
+ expect((buttons[0] as HTMLElement).style.borderRadius).toContain('0 0')
600
+ // Last button should have bottom radius
601
+ expect((buttons[1] as HTMLElement).style.borderRadius).toContain('0 0')
602
+ },
603
+ )
604
+ })
605
+
606
+ it('should apply custom style', async () => {
607
+ await usingAsync(await renderToggleGroup({ style: { gap: '8px' } }), async ({ group }) => {
608
+ expect(group.style.gap).toBe('8px')
609
+ })
610
+ })
611
+ })