@furystack/shades-common-components 10.0.35 → 12.0.0

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 (862) hide show
  1. package/CHANGELOG.md +496 -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/animations.spec.d.ts +2 -0
  27. package/esm/components/animations.spec.d.ts.map +1 -0
  28. package/esm/components/animations.spec.js +201 -0
  29. package/esm/components/animations.spec.js.map +1 -0
  30. package/esm/components/app-bar-link.d.ts +22 -2
  31. package/esm/components/app-bar-link.d.ts.map +1 -1
  32. package/esm/components/app-bar-link.js +36 -22
  33. package/esm/components/app-bar-link.js.map +1 -1
  34. package/esm/components/app-bar-link.spec.d.ts +2 -0
  35. package/esm/components/app-bar-link.spec.d.ts.map +1 -0
  36. package/esm/components/app-bar-link.spec.js +255 -0
  37. package/esm/components/app-bar-link.spec.js.map +1 -0
  38. package/esm/components/app-bar.d.ts +2 -0
  39. package/esm/components/app-bar.d.ts.map +1 -1
  40. package/esm/components/app-bar.js +28 -23
  41. package/esm/components/app-bar.js.map +1 -1
  42. package/esm/components/app-bar.spec.d.ts +2 -0
  43. package/esm/components/app-bar.spec.d.ts.map +1 -0
  44. package/esm/components/app-bar.spec.js +132 -0
  45. package/esm/components/app-bar.spec.js.map +1 -0
  46. package/esm/components/avatar.d.ts +2 -0
  47. package/esm/components/avatar.d.ts.map +1 -1
  48. package/esm/components/avatar.js +50 -51
  49. package/esm/components/avatar.js.map +1 -1
  50. package/esm/components/avatar.spec.d.ts +2 -0
  51. package/esm/components/avatar.spec.d.ts.map +1 -0
  52. package/esm/components/avatar.spec.js +114 -0
  53. package/esm/components/avatar.spec.js.map +1 -0
  54. package/esm/components/badge.d.ts +35 -0
  55. package/esm/components/badge.d.ts.map +1 -0
  56. package/esm/components/badge.js +68 -0
  57. package/esm/components/badge.js.map +1 -0
  58. package/esm/components/badge.spec.d.ts +2 -0
  59. package/esm/components/badge.spec.d.ts.map +1 -0
  60. package/esm/components/badge.spec.js +157 -0
  61. package/esm/components/badge.spec.js.map +1 -0
  62. package/esm/components/breadcrumb.d.ts +103 -0
  63. package/esm/components/breadcrumb.d.ts.map +1 -0
  64. package/esm/components/breadcrumb.js +121 -0
  65. package/esm/components/breadcrumb.js.map +1 -0
  66. package/esm/components/breadcrumb.spec.d.ts +2 -0
  67. package/esm/components/breadcrumb.spec.d.ts.map +1 -0
  68. package/esm/components/breadcrumb.spec.js +251 -0
  69. package/esm/components/breadcrumb.spec.js.map +1 -0
  70. package/esm/components/button-group.d.ts +85 -0
  71. package/esm/components/button-group.d.ts.map +1 -0
  72. package/esm/components/button-group.js +290 -0
  73. package/esm/components/button-group.js.map +1 -0
  74. package/esm/components/button-group.spec.d.ts +2 -0
  75. package/esm/components/button-group.spec.d.ts.map +1 -0
  76. package/esm/components/button-group.spec.js +502 -0
  77. package/esm/components/button-group.spec.js.map +1 -0
  78. package/esm/components/button.d.ts +44 -2
  79. package/esm/components/button.d.ts.map +1 -1
  80. package/esm/components/button.js +151 -153
  81. package/esm/components/button.js.map +1 -1
  82. package/esm/components/button.spec.d.ts +2 -0
  83. package/esm/components/button.spec.d.ts.map +1 -0
  84. package/esm/components/button.spec.js +310 -0
  85. package/esm/components/button.spec.js.map +1 -0
  86. package/esm/components/card.d.ts +117 -0
  87. package/esm/components/card.d.ts.map +1 -0
  88. package/esm/components/card.js +181 -0
  89. package/esm/components/card.js.map +1 -0
  90. package/esm/components/card.spec.d.ts +2 -0
  91. package/esm/components/card.spec.d.ts.map +1 -0
  92. package/esm/components/card.spec.js +278 -0
  93. package/esm/components/card.spec.js.map +1 -0
  94. package/esm/components/carousel.d.ts +50 -0
  95. package/esm/components/carousel.d.ts.map +1 -0
  96. package/esm/components/carousel.js +263 -0
  97. package/esm/components/carousel.js.map +1 -0
  98. package/esm/components/carousel.spec.d.ts +2 -0
  99. package/esm/components/carousel.spec.d.ts.map +1 -0
  100. package/esm/components/carousel.spec.js +677 -0
  101. package/esm/components/carousel.spec.js.map +1 -0
  102. package/esm/components/chip.d.ts +23 -0
  103. package/esm/components/chip.d.ts.map +1 -0
  104. package/esm/components/chip.js +139 -0
  105. package/esm/components/chip.js.map +1 -0
  106. package/esm/components/chip.spec.d.ts +2 -0
  107. package/esm/components/chip.spec.d.ts.map +1 -0
  108. package/esm/components/chip.spec.js +142 -0
  109. package/esm/components/chip.spec.js.map +1 -0
  110. package/esm/components/circular-progress.d.ts +37 -0
  111. package/esm/components/circular-progress.d.ts.map +1 -0
  112. package/esm/components/circular-progress.js +84 -0
  113. package/esm/components/circular-progress.js.map +1 -0
  114. package/esm/components/circular-progress.spec.d.ts +2 -0
  115. package/esm/components/circular-progress.spec.d.ts.map +1 -0
  116. package/esm/components/circular-progress.spec.js +228 -0
  117. package/esm/components/circular-progress.spec.js.map +1 -0
  118. package/esm/components/command-palette/command-palette-input.d.ts +3 -0
  119. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  120. package/esm/components/command-palette/command-palette-input.js +33 -23
  121. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  122. package/esm/components/command-palette/command-palette-input.spec.d.ts +2 -0
  123. package/esm/components/command-palette/command-palette-input.spec.d.ts.map +1 -0
  124. package/esm/components/command-palette/command-palette-input.spec.js +244 -0
  125. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -0
  126. package/esm/components/command-palette/command-palette-manager.spec.d.ts +2 -0
  127. package/esm/components/command-palette/command-palette-manager.spec.d.ts.map +1 -0
  128. package/esm/components/command-palette/command-palette-manager.spec.js +378 -0
  129. package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -0
  130. package/esm/components/command-palette/command-palette-suggestion-list.d.ts +2 -0
  131. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  132. package/esm/components/command-palette/command-palette-suggestion-list.js +53 -57
  133. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  134. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts +2 -0
  135. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts.map +1 -0
  136. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +394 -0
  137. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -0
  138. package/esm/components/command-palette/index.d.ts +2 -0
  139. package/esm/components/command-palette/index.d.ts.map +1 -1
  140. package/esm/components/command-palette/index.js +41 -120
  141. package/esm/components/command-palette/index.js.map +1 -1
  142. package/esm/components/command-palette/index.spec.d.ts +2 -0
  143. package/esm/components/command-palette/index.spec.d.ts.map +1 -0
  144. package/esm/components/command-palette/index.spec.js +509 -0
  145. package/esm/components/command-palette/index.spec.js.map +1 -0
  146. package/esm/components/context-menu/context-menu-item.d.ts +9 -0
  147. package/esm/components/context-menu/context-menu-item.d.ts.map +1 -0
  148. package/esm/components/context-menu/context-menu-item.js +56 -0
  149. package/esm/components/context-menu/context-menu-item.js.map +1 -0
  150. package/esm/components/context-menu/context-menu-manager.d.ts +52 -0
  151. package/esm/components/context-menu/context-menu-manager.d.ts.map +1 -0
  152. package/esm/components/context-menu/context-menu-manager.js +128 -0
  153. package/esm/components/context-menu/context-menu-manager.js.map +1 -0
  154. package/esm/components/context-menu/context-menu-manager.spec.d.ts +2 -0
  155. package/esm/components/context-menu/context-menu-manager.spec.d.ts.map +1 -0
  156. package/esm/components/context-menu/context-menu-manager.spec.js +332 -0
  157. package/esm/components/context-menu/context-menu-manager.spec.js.map +1 -0
  158. package/esm/components/context-menu/context-menu.d.ts +8 -0
  159. package/esm/components/context-menu/context-menu.d.ts.map +1 -0
  160. package/esm/components/context-menu/context-menu.js +79 -0
  161. package/esm/components/context-menu/context-menu.js.map +1 -0
  162. package/esm/components/context-menu/context-menu.spec.d.ts +2 -0
  163. package/esm/components/context-menu/context-menu.spec.d.ts.map +1 -0
  164. package/esm/components/context-menu/context-menu.spec.js +282 -0
  165. package/esm/components/context-menu/context-menu.spec.js.map +1 -0
  166. package/esm/components/context-menu/index.d.ts +4 -0
  167. package/esm/components/context-menu/index.d.ts.map +1 -0
  168. package/esm/components/context-menu/index.js +4 -0
  169. package/esm/components/context-menu/index.js.map +1 -0
  170. package/esm/components/data-grid/body.js +1 -1
  171. package/esm/components/data-grid/body.js.map +1 -1
  172. package/esm/components/data-grid/body.spec.d.ts +2 -0
  173. package/esm/components/data-grid/body.spec.d.ts.map +1 -0
  174. package/esm/components/data-grid/body.spec.js +238 -0
  175. package/esm/components/data-grid/body.spec.js.map +1 -0
  176. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  177. package/esm/components/data-grid/data-grid-row.js +84 -96
  178. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  179. package/esm/components/data-grid/data-grid-row.spec.d.ts +2 -0
  180. package/esm/components/data-grid/data-grid-row.spec.d.ts.map +1 -0
  181. package/esm/components/data-grid/data-grid-row.spec.js +328 -0
  182. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -0
  183. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  184. package/esm/components/data-grid/data-grid.js +39 -31
  185. package/esm/components/data-grid/data-grid.js.map +1 -1
  186. package/esm/components/data-grid/data-grid.spec.d.ts +2 -0
  187. package/esm/components/data-grid/data-grid.spec.d.ts.map +1 -0
  188. package/esm/components/data-grid/data-grid.spec.js +569 -0
  189. package/esm/components/data-grid/data-grid.spec.js.map +1 -0
  190. package/esm/components/data-grid/footer.js +21 -15
  191. package/esm/components/data-grid/footer.js.map +1 -1
  192. package/esm/components/data-grid/footer.spec.d.ts +2 -0
  193. package/esm/components/data-grid/footer.spec.d.ts.map +1 -0
  194. package/esm/components/data-grid/footer.spec.js +276 -0
  195. package/esm/components/data-grid/footer.spec.js.map +1 -0
  196. package/esm/components/data-grid/header.d.ts +3 -1
  197. package/esm/components/data-grid/header.d.ts.map +1 -1
  198. package/esm/components/data-grid/header.js +94 -60
  199. package/esm/components/data-grid/header.js.map +1 -1
  200. package/esm/components/data-grid/header.spec.d.ts +2 -0
  201. package/esm/components/data-grid/header.spec.d.ts.map +1 -0
  202. package/esm/components/data-grid/header.spec.js +444 -0
  203. package/esm/components/data-grid/header.spec.js.map +1 -0
  204. package/esm/components/data-grid/selection-cell.d.ts +2 -0
  205. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  206. package/esm/components/data-grid/selection-cell.js +15 -13
  207. package/esm/components/data-grid/selection-cell.js.map +1 -1
  208. package/esm/components/data-grid/selection-cell.spec.d.ts +2 -0
  209. package/esm/components/data-grid/selection-cell.spec.d.ts.map +1 -0
  210. package/esm/components/data-grid/selection-cell.spec.js +127 -0
  211. package/esm/components/data-grid/selection-cell.spec.js.map +1 -0
  212. package/esm/components/dialog.d.ts +46 -0
  213. package/esm/components/dialog.d.ts.map +1 -0
  214. package/esm/components/dialog.js +178 -0
  215. package/esm/components/dialog.js.map +1 -0
  216. package/esm/components/dialog.spec.d.ts +2 -0
  217. package/esm/components/dialog.spec.d.ts.map +1 -0
  218. package/esm/components/dialog.spec.js +113 -0
  219. package/esm/components/dialog.spec.js.map +1 -0
  220. package/esm/components/divider.d.ts +22 -0
  221. package/esm/components/divider.d.ts.map +1 -0
  222. package/esm/components/divider.js +113 -0
  223. package/esm/components/divider.js.map +1 -0
  224. package/esm/components/divider.spec.d.ts +2 -0
  225. package/esm/components/divider.spec.d.ts.map +1 -0
  226. package/esm/components/divider.spec.js +136 -0
  227. package/esm/components/divider.spec.js.map +1 -0
  228. package/esm/components/drawer/drawer-toggle-button.d.ts +36 -0
  229. package/esm/components/drawer/drawer-toggle-button.d.ts.map +1 -0
  230. package/esm/components/drawer/drawer-toggle-button.js +94 -0
  231. package/esm/components/drawer/drawer-toggle-button.js.map +1 -0
  232. package/esm/components/drawer/drawer-toggle-button.spec.d.ts +2 -0
  233. package/esm/components/drawer/drawer-toggle-button.spec.d.ts.map +1 -0
  234. package/esm/components/drawer/drawer-toggle-button.spec.js +306 -0
  235. package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -0
  236. package/esm/components/drawer/index.d.ts +56 -0
  237. package/esm/components/drawer/index.d.ts.map +1 -0
  238. package/esm/components/drawer/index.js +172 -0
  239. package/esm/components/drawer/index.js.map +1 -0
  240. package/esm/components/drawer/index.spec.d.ts +2 -0
  241. package/esm/components/drawer/index.spec.d.ts.map +1 -0
  242. package/esm/components/drawer/index.spec.js +538 -0
  243. package/esm/components/drawer/index.spec.js.map +1 -0
  244. package/esm/components/dropdown.d.ts +15 -0
  245. package/esm/components/dropdown.d.ts.map +1 -0
  246. package/esm/components/dropdown.js +262 -0
  247. package/esm/components/dropdown.js.map +1 -0
  248. package/esm/components/dropdown.spec.d.ts +2 -0
  249. package/esm/components/dropdown.spec.d.ts.map +1 -0
  250. package/esm/components/dropdown.spec.js +372 -0
  251. package/esm/components/dropdown.spec.js.map +1 -0
  252. package/esm/components/fab.d.ts +10 -1
  253. package/esm/components/fab.d.ts.map +1 -1
  254. package/esm/components/fab.js +32 -7
  255. package/esm/components/fab.js.map +1 -1
  256. package/esm/components/fab.spec.d.ts +2 -0
  257. package/esm/components/fab.spec.d.ts.map +1 -0
  258. package/esm/components/fab.spec.js +106 -0
  259. package/esm/components/fab.spec.js.map +1 -0
  260. package/esm/components/form.d.ts.map +1 -1
  261. package/esm/components/form.js +9 -7
  262. package/esm/components/form.js.map +1 -1
  263. package/esm/components/form.spec.d.ts +2 -0
  264. package/esm/components/form.spec.d.ts.map +1 -0
  265. package/esm/components/form.spec.js +324 -0
  266. package/esm/components/form.spec.js.map +1 -0
  267. package/esm/components/grid.d.ts.map +1 -1
  268. package/esm/components/grid.js +43 -40
  269. package/esm/components/grid.js.map +1 -1
  270. package/esm/components/grid.spec.d.ts +2 -0
  271. package/esm/components/grid.spec.d.ts.map +1 -0
  272. package/esm/components/grid.spec.js +340 -0
  273. package/esm/components/grid.spec.js.map +1 -0
  274. package/esm/components/icons/icon-definitions.d.ts +140 -0
  275. package/esm/components/icons/icon-definitions.d.ts.map +1 -0
  276. package/esm/components/icons/icon-definitions.js +432 -0
  277. package/esm/components/icons/icon-definitions.js.map +1 -0
  278. package/esm/components/icons/icon-definitions.spec.d.ts +2 -0
  279. package/esm/components/icons/icon-definitions.spec.d.ts.map +1 -0
  280. package/esm/components/icons/icon-definitions.spec.js +59 -0
  281. package/esm/components/icons/icon-definitions.spec.js.map +1 -0
  282. package/esm/components/icons/icon-types.d.ts +48 -0
  283. package/esm/components/icons/icon-types.d.ts.map +1 -0
  284. package/esm/components/icons/icon-types.js +2 -0
  285. package/esm/components/icons/icon-types.js.map +1 -0
  286. package/esm/components/icons/icon.d.ts +56 -0
  287. package/esm/components/icons/icon.d.ts.map +1 -0
  288. package/esm/components/icons/icon.js +61 -0
  289. package/esm/components/icons/icon.js.map +1 -0
  290. package/esm/components/icons/icon.spec.d.ts +2 -0
  291. package/esm/components/icons/icon.spec.d.ts.map +1 -0
  292. package/esm/components/icons/icon.spec.js +224 -0
  293. package/esm/components/icons/icon.spec.js.map +1 -0
  294. package/esm/components/icons/index.d.ts +5 -0
  295. package/esm/components/icons/index.d.ts.map +1 -0
  296. package/esm/components/icons/index.js +3 -0
  297. package/esm/components/icons/index.js.map +1 -0
  298. package/esm/components/image.d.ts +62 -0
  299. package/esm/components/image.d.ts.map +1 -0
  300. package/esm/components/image.js +348 -0
  301. package/esm/components/image.js.map +1 -0
  302. package/esm/components/image.spec.d.ts +2 -0
  303. package/esm/components/image.spec.d.ts.map +1 -0
  304. package/esm/components/image.spec.js +542 -0
  305. package/esm/components/image.spec.js.map +1 -0
  306. package/esm/components/index.d.ts +32 -4
  307. package/esm/components/index.d.ts.map +1 -1
  308. package/esm/components/index.js +32 -4
  309. package/esm/components/index.js.map +1 -1
  310. package/esm/components/inputs/autocomplete.d.ts +2 -0
  311. package/esm/components/inputs/autocomplete.d.ts.map +1 -1
  312. package/esm/components/inputs/autocomplete.js +10 -6
  313. package/esm/components/inputs/autocomplete.js.map +1 -1
  314. package/esm/components/inputs/autocomplete.spec.d.ts +2 -0
  315. package/esm/components/inputs/autocomplete.spec.d.ts.map +1 -0
  316. package/esm/components/inputs/autocomplete.spec.js +203 -0
  317. package/esm/components/inputs/autocomplete.spec.js.map +1 -0
  318. package/esm/components/inputs/checkbox.d.ts +50 -0
  319. package/esm/components/inputs/checkbox.d.ts.map +1 -0
  320. package/esm/components/inputs/checkbox.js +126 -0
  321. package/esm/components/inputs/checkbox.js.map +1 -0
  322. package/esm/components/inputs/checkbox.spec.d.ts +2 -0
  323. package/esm/components/inputs/checkbox.spec.d.ts.map +1 -0
  324. package/esm/components/inputs/checkbox.spec.js +287 -0
  325. package/esm/components/inputs/checkbox.spec.js.map +1 -0
  326. package/esm/components/inputs/index.d.ts +7 -0
  327. package/esm/components/inputs/index.d.ts.map +1 -1
  328. package/esm/components/inputs/index.js +7 -0
  329. package/esm/components/inputs/index.js.map +1 -1
  330. package/esm/components/inputs/input-number.d.ts +79 -0
  331. package/esm/components/inputs/input-number.d.ts.map +1 -0
  332. package/esm/components/inputs/input-number.js +232 -0
  333. package/esm/components/inputs/input-number.js.map +1 -0
  334. package/esm/components/inputs/input-number.spec.d.ts +2 -0
  335. package/esm/components/inputs/input-number.spec.d.ts.map +1 -0
  336. package/esm/components/inputs/input-number.spec.js +516 -0
  337. package/esm/components/inputs/input-number.spec.js.map +1 -0
  338. package/esm/components/inputs/input.d.ts +2 -1
  339. package/esm/components/inputs/input.d.ts.map +1 -1
  340. package/esm/components/inputs/input.js +179 -177
  341. package/esm/components/inputs/input.js.map +1 -1
  342. package/esm/components/inputs/input.spec.d.ts +2 -0
  343. package/esm/components/inputs/input.spec.d.ts.map +1 -0
  344. package/esm/components/inputs/input.spec.js +611 -0
  345. package/esm/components/inputs/input.spec.js.map +1 -0
  346. package/esm/components/inputs/radio-group.d.ts +38 -0
  347. package/esm/components/inputs/radio-group.d.ts.map +1 -0
  348. package/esm/components/inputs/radio-group.js +58 -0
  349. package/esm/components/inputs/radio-group.js.map +1 -0
  350. package/esm/components/inputs/radio-group.spec.d.ts +2 -0
  351. package/esm/components/inputs/radio-group.spec.d.ts.map +1 -0
  352. package/esm/components/inputs/radio-group.spec.js +201 -0
  353. package/esm/components/inputs/radio-group.spec.js.map +1 -0
  354. package/esm/components/inputs/radio.d.ts +42 -0
  355. package/esm/components/inputs/radio.d.ts.map +1 -0
  356. package/esm/components/inputs/radio.js +134 -0
  357. package/esm/components/inputs/radio.js.map +1 -0
  358. package/esm/components/inputs/radio.spec.d.ts +2 -0
  359. package/esm/components/inputs/radio.spec.d.ts.map +1 -0
  360. package/esm/components/inputs/radio.spec.js +211 -0
  361. package/esm/components/inputs/radio.spec.js.map +1 -0
  362. package/esm/components/inputs/select.d.ts +67 -0
  363. package/esm/components/inputs/select.d.ts.map +1 -0
  364. package/esm/components/inputs/select.js +581 -0
  365. package/esm/components/inputs/select.js.map +1 -0
  366. package/esm/components/inputs/select.spec.d.ts +2 -0
  367. package/esm/components/inputs/select.spec.d.ts.map +1 -0
  368. package/esm/components/inputs/select.spec.js +1009 -0
  369. package/esm/components/inputs/select.spec.js.map +1 -0
  370. package/esm/components/inputs/slider.d.ts +66 -0
  371. package/esm/components/inputs/slider.d.ts.map +1 -0
  372. package/esm/components/inputs/slider.js +526 -0
  373. package/esm/components/inputs/slider.js.map +1 -0
  374. package/esm/components/inputs/slider.spec.d.ts +2 -0
  375. package/esm/components/inputs/slider.spec.d.ts.map +1 -0
  376. package/esm/components/inputs/slider.spec.js +812 -0
  377. package/esm/components/inputs/slider.spec.js.map +1 -0
  378. package/esm/components/inputs/switch.d.ts +50 -0
  379. package/esm/components/inputs/switch.d.ts.map +1 -0
  380. package/esm/components/inputs/switch.js +138 -0
  381. package/esm/components/inputs/switch.js.map +1 -0
  382. package/esm/components/inputs/switch.spec.d.ts +2 -0
  383. package/esm/components/inputs/switch.spec.d.ts.map +1 -0
  384. package/esm/components/inputs/switch.spec.js +313 -0
  385. package/esm/components/inputs/switch.spec.js.map +1 -0
  386. package/esm/components/inputs/text-area.d.ts +2 -0
  387. package/esm/components/inputs/text-area.d.ts.map +1 -1
  388. package/esm/components/inputs/text-area.js +46 -58
  389. package/esm/components/inputs/text-area.js.map +1 -1
  390. package/esm/components/inputs/text-area.spec.d.ts +2 -0
  391. package/esm/components/inputs/text-area.spec.d.ts.map +1 -0
  392. package/esm/components/inputs/text-area.spec.js +229 -0
  393. package/esm/components/inputs/text-area.spec.js.map +1 -0
  394. package/esm/components/linear-progress.d.ts +32 -0
  395. package/esm/components/linear-progress.d.ts.map +1 -0
  396. package/esm/components/linear-progress.js +79 -0
  397. package/esm/components/linear-progress.js.map +1 -0
  398. package/esm/components/linear-progress.spec.d.ts +2 -0
  399. package/esm/components/linear-progress.spec.d.ts.map +1 -0
  400. package/esm/components/linear-progress.spec.js +251 -0
  401. package/esm/components/linear-progress.spec.js.map +1 -0
  402. package/esm/components/list/index.d.ts +3 -0
  403. package/esm/components/list/index.d.ts.map +1 -0
  404. package/esm/components/list/index.js +3 -0
  405. package/esm/components/list/index.js.map +1 -0
  406. package/esm/components/list/list-item.d.ts +13 -0
  407. package/esm/components/list/list-item.d.ts.map +1 -0
  408. package/esm/components/list/list-item.js +81 -0
  409. package/esm/components/list/list-item.js.map +1 -0
  410. package/esm/components/list/list.d.ts +18 -0
  411. package/esm/components/list/list.d.ts.map +1 -0
  412. package/esm/components/list/list.js +42 -0
  413. package/esm/components/list/list.js.map +1 -0
  414. package/esm/components/list/list.spec.d.ts +2 -0
  415. package/esm/components/list/list.spec.d.ts.map +1 -0
  416. package/esm/components/list/list.spec.js +540 -0
  417. package/esm/components/list/list.spec.js.map +1 -0
  418. package/esm/components/loader.d.ts +2 -0
  419. package/esm/components/loader.d.ts.map +1 -1
  420. package/esm/components/loader.js +19 -11
  421. package/esm/components/loader.js.map +1 -1
  422. package/esm/components/loader.spec.d.ts +2 -0
  423. package/esm/components/loader.spec.d.ts.map +1 -0
  424. package/esm/components/loader.spec.js +267 -0
  425. package/esm/components/loader.spec.js.map +1 -0
  426. package/esm/components/menu/index.d.ts +3 -0
  427. package/esm/components/menu/index.d.ts.map +1 -0
  428. package/esm/components/menu/index.js +3 -0
  429. package/esm/components/menu/index.js.map +1 -0
  430. package/esm/components/menu/menu-types.d.ts +27 -0
  431. package/esm/components/menu/menu-types.d.ts.map +1 -0
  432. package/esm/components/menu/menu-types.js +22 -0
  433. package/esm/components/menu/menu-types.js.map +1 -0
  434. package/esm/components/menu/menu-types.spec.d.ts +2 -0
  435. package/esm/components/menu/menu-types.spec.d.ts.map +1 -0
  436. package/esm/components/menu/menu-types.spec.js +103 -0
  437. package/esm/components/menu/menu-types.spec.js.map +1 -0
  438. package/esm/components/menu/menu.d.ts +17 -0
  439. package/esm/components/menu/menu.d.ts.map +1 -0
  440. package/esm/components/menu/menu.js +240 -0
  441. package/esm/components/menu/menu.js.map +1 -0
  442. package/esm/components/menu/menu.spec.d.ts +2 -0
  443. package/esm/components/menu/menu.spec.d.ts.map +1 -0
  444. package/esm/components/menu/menu.spec.js +427 -0
  445. package/esm/components/menu/menu.spec.js.map +1 -0
  446. package/esm/components/modal.d.ts +3 -2
  447. package/esm/components/modal.d.ts.map +1 -1
  448. package/esm/components/modal.js +19 -14
  449. package/esm/components/modal.js.map +1 -1
  450. package/esm/components/modal.spec.d.ts +2 -0
  451. package/esm/components/modal.spec.d.ts.map +1 -0
  452. package/esm/components/modal.spec.js +234 -0
  453. package/esm/components/modal.spec.js.map +1 -0
  454. package/esm/components/noty-list.d.ts +4 -0
  455. package/esm/components/noty-list.d.ts.map +1 -1
  456. package/esm/components/noty-list.js +87 -76
  457. package/esm/components/noty-list.js.map +1 -1
  458. package/esm/components/noty-list.spec.d.ts +2 -0
  459. package/esm/components/noty-list.spec.d.ts.map +1 -0
  460. package/esm/components/noty-list.spec.js +489 -0
  461. package/esm/components/noty-list.spec.js.map +1 -0
  462. package/esm/components/page-container/index.d.ts +54 -0
  463. package/esm/components/page-container/index.d.ts.map +1 -0
  464. package/esm/components/page-container/index.js +63 -0
  465. package/esm/components/page-container/index.js.map +1 -0
  466. package/esm/components/page-container/index.spec.d.ts +2 -0
  467. package/esm/components/page-container/index.spec.d.ts.map +1 -0
  468. package/esm/components/page-container/index.spec.js +217 -0
  469. package/esm/components/page-container/index.spec.js.map +1 -0
  470. package/esm/components/page-container/page-header.d.ts +57 -0
  471. package/esm/components/page-container/page-header.d.ts.map +1 -0
  472. package/esm/components/page-container/page-header.js +93 -0
  473. package/esm/components/page-container/page-header.js.map +1 -0
  474. package/esm/components/page-container/page-header.spec.d.ts +2 -0
  475. package/esm/components/page-container/page-header.spec.d.ts.map +1 -0
  476. package/esm/components/page-container/page-header.spec.js +230 -0
  477. package/esm/components/page-container/page-header.spec.js.map +1 -0
  478. package/esm/components/page-layout/index.d.ts +83 -0
  479. package/esm/components/page-layout/index.d.ts.map +1 -0
  480. package/esm/components/page-layout/index.js +288 -0
  481. package/esm/components/page-layout/index.js.map +1 -0
  482. package/esm/components/page-layout/index.spec.d.ts +2 -0
  483. package/esm/components/page-layout/index.spec.d.ts.map +1 -0
  484. package/esm/components/page-layout/index.spec.js +637 -0
  485. package/esm/components/page-layout/index.spec.js.map +1 -0
  486. package/esm/components/pagination.d.ts +43 -0
  487. package/esm/components/pagination.d.ts.map +1 -0
  488. package/esm/components/pagination.js +165 -0
  489. package/esm/components/pagination.js.map +1 -0
  490. package/esm/components/pagination.spec.d.ts +2 -0
  491. package/esm/components/pagination.spec.d.ts.map +1 -0
  492. package/esm/components/pagination.spec.js +195 -0
  493. package/esm/components/pagination.spec.js.map +1 -0
  494. package/esm/components/paper.d.ts +3 -1
  495. package/esm/components/paper.d.ts.map +1 -1
  496. package/esm/components/paper.js +20 -15
  497. package/esm/components/paper.js.map +1 -1
  498. package/esm/components/paper.spec.d.ts +2 -0
  499. package/esm/components/paper.spec.d.ts.map +1 -0
  500. package/esm/components/paper.spec.js +71 -0
  501. package/esm/components/paper.spec.js.map +1 -0
  502. package/esm/components/rating.d.ts +62 -0
  503. package/esm/components/rating.d.ts.map +1 -0
  504. package/esm/components/rating.js +201 -0
  505. package/esm/components/rating.js.map +1 -0
  506. package/esm/components/rating.spec.d.ts +2 -0
  507. package/esm/components/rating.spec.d.ts.map +1 -0
  508. package/esm/components/rating.spec.js +663 -0
  509. package/esm/components/rating.spec.js.map +1 -0
  510. package/esm/components/result.d.ts +37 -0
  511. package/esm/components/result.d.ts.map +1 -0
  512. package/esm/components/result.js +109 -0
  513. package/esm/components/result.js.map +1 -0
  514. package/esm/components/result.spec.d.ts +2 -0
  515. package/esm/components/result.spec.d.ts.map +1 -0
  516. package/esm/components/result.spec.js +159 -0
  517. package/esm/components/result.spec.js.map +1 -0
  518. package/esm/components/searchable-input-styles.d.ts +8 -0
  519. package/esm/components/searchable-input-styles.d.ts.map +1 -0
  520. package/esm/components/searchable-input-styles.js +71 -0
  521. package/esm/components/searchable-input-styles.js.map +1 -0
  522. package/esm/components/skeleton.d.ts +2 -0
  523. package/esm/components/skeleton.d.ts.map +1 -1
  524. package/esm/components/skeleton.js +20 -7
  525. package/esm/components/skeleton.js.map +1 -1
  526. package/esm/components/skeleton.spec.d.ts +2 -0
  527. package/esm/components/skeleton.spec.d.ts.map +1 -0
  528. package/esm/components/skeleton.spec.js +167 -0
  529. package/esm/components/skeleton.spec.js.map +1 -0
  530. package/esm/components/styles.d.ts.map +1 -1
  531. package/esm/components/styles.js +14 -13
  532. package/esm/components/styles.js.map +1 -1
  533. package/esm/components/styles.spec.d.ts +2 -0
  534. package/esm/components/styles.spec.d.ts.map +1 -0
  535. package/esm/components/styles.spec.js +57 -0
  536. package/esm/components/styles.spec.js.map +1 -0
  537. package/esm/components/suggest/index.d.ts.map +1 -1
  538. package/esm/components/suggest/index.js +32 -102
  539. package/esm/components/suggest/index.js.map +1 -1
  540. package/esm/components/suggest/index.spec.d.ts +2 -0
  541. package/esm/components/suggest/index.spec.d.ts.map +1 -0
  542. package/esm/components/suggest/index.spec.js +539 -0
  543. package/esm/components/suggest/index.spec.js.map +1 -0
  544. package/esm/components/suggest/suggest-input.d.ts +2 -0
  545. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  546. package/esm/components/suggest/suggest-input.js +24 -23
  547. package/esm/components/suggest/suggest-input.js.map +1 -1
  548. package/esm/components/suggest/suggest-input.spec.d.ts +2 -0
  549. package/esm/components/suggest/suggest-input.spec.d.ts.map +1 -0
  550. package/esm/components/suggest/suggest-input.spec.js +150 -0
  551. package/esm/components/suggest/suggest-input.spec.js.map +1 -0
  552. package/esm/components/suggest/suggest-manager.spec.d.ts +2 -0
  553. package/esm/components/suggest/suggest-manager.spec.d.ts.map +1 -0
  554. package/esm/components/suggest/suggest-manager.spec.js +318 -0
  555. package/esm/components/suggest/suggest-manager.spec.js.map +1 -0
  556. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  557. package/esm/components/suggest/suggestion-list.js +52 -58
  558. package/esm/components/suggest/suggestion-list.js.map +1 -1
  559. package/esm/components/suggest/suggestion-list.spec.d.ts +2 -0
  560. package/esm/components/suggest/suggestion-list.spec.d.ts.map +1 -0
  561. package/esm/components/suggest/suggestion-list.spec.js +271 -0
  562. package/esm/components/suggest/suggestion-list.spec.js.map +1 -0
  563. package/esm/components/tabs.d.ts +18 -2
  564. package/esm/components/tabs.d.ts.map +1 -1
  565. package/esm/components/tabs.js +173 -19
  566. package/esm/components/tabs.js.map +1 -1
  567. package/esm/components/tabs.spec.d.ts +2 -0
  568. package/esm/components/tabs.spec.d.ts.map +1 -0
  569. package/esm/components/tabs.spec.js +475 -0
  570. package/esm/components/tabs.spec.js.map +1 -0
  571. package/esm/components/timeline.d.ts +53 -0
  572. package/esm/components/timeline.d.ts.map +1 -0
  573. package/esm/components/timeline.js +162 -0
  574. package/esm/components/timeline.js.map +1 -0
  575. package/esm/components/timeline.spec.d.ts +2 -0
  576. package/esm/components/timeline.spec.d.ts.map +1 -0
  577. package/esm/components/timeline.spec.js +209 -0
  578. package/esm/components/timeline.spec.js.map +1 -0
  579. package/esm/components/tooltip.d.ts +25 -0
  580. package/esm/components/tooltip.d.ts.map +1 -0
  581. package/esm/components/tooltip.js +113 -0
  582. package/esm/components/tooltip.js.map +1 -0
  583. package/esm/components/tooltip.spec.d.ts +2 -0
  584. package/esm/components/tooltip.spec.d.ts.map +1 -0
  585. package/esm/components/tooltip.spec.js +152 -0
  586. package/esm/components/tooltip.spec.js.map +1 -0
  587. package/esm/components/tree/index.d.ts +3 -0
  588. package/esm/components/tree/index.d.ts.map +1 -0
  589. package/esm/components/tree/index.js +3 -0
  590. package/esm/components/tree/index.js.map +1 -0
  591. package/esm/components/tree/tree-item.d.ts +14 -0
  592. package/esm/components/tree/tree-item.d.ts.map +1 -0
  593. package/esm/components/tree/tree-item.js +118 -0
  594. package/esm/components/tree/tree-item.js.map +1 -0
  595. package/esm/components/tree/tree.d.ts +20 -0
  596. package/esm/components/tree/tree.d.ts.map +1 -0
  597. package/esm/components/tree/tree.js +66 -0
  598. package/esm/components/tree/tree.js.map +1 -0
  599. package/esm/components/tree/tree.spec.d.ts +2 -0
  600. package/esm/components/tree/tree.spec.d.ts.map +1 -0
  601. package/esm/components/tree/tree.spec.js +427 -0
  602. package/esm/components/tree/tree.spec.js.map +1 -0
  603. package/esm/components/typography.d.ts +48 -0
  604. package/esm/components/typography.d.ts.map +1 -0
  605. package/esm/components/typography.js +223 -0
  606. package/esm/components/typography.js.map +1 -0
  607. package/esm/components/typography.spec.d.ts +2 -0
  608. package/esm/components/typography.spec.d.ts.map +1 -0
  609. package/esm/components/typography.spec.js +199 -0
  610. package/esm/components/typography.spec.js.map +1 -0
  611. package/esm/components/wizard/index.d.ts +2 -0
  612. package/esm/components/wizard/index.d.ts.map +1 -1
  613. package/esm/components/wizard/index.js +10 -7
  614. package/esm/components/wizard/index.js.map +1 -1
  615. package/esm/components/wizard/index.spec.d.ts +2 -0
  616. package/esm/components/wizard/index.spec.d.ts.map +1 -0
  617. package/esm/components/wizard/index.spec.js +185 -0
  618. package/esm/components/wizard/index.spec.js.map +1 -0
  619. package/esm/services/click-away-service.d.ts +5 -2
  620. package/esm/services/click-away-service.d.ts.map +1 -1
  621. package/esm/services/click-away-service.js +7 -1
  622. package/esm/services/click-away-service.js.map +1 -1
  623. package/esm/services/collection-service.spec.js +391 -2
  624. package/esm/services/collection-service.spec.js.map +1 -1
  625. package/esm/services/css-variable-theme.d.ts +167 -1
  626. package/esm/services/css-variable-theme.d.ts.map +1 -1
  627. package/esm/services/css-variable-theme.js +123 -1
  628. package/esm/services/css-variable-theme.js.map +1 -1
  629. package/esm/services/css-variable-theme.spec.d.ts +2 -0
  630. package/esm/services/css-variable-theme.spec.d.ts.map +1 -0
  631. package/esm/services/css-variable-theme.spec.js +299 -0
  632. package/esm/services/css-variable-theme.spec.js.map +1 -0
  633. package/esm/services/default-dark-theme.d.ts +107 -2
  634. package/esm/services/default-dark-theme.d.ts.map +1 -1
  635. package/esm/services/default-dark-theme.js +87 -1
  636. package/esm/services/default-dark-theme.js.map +1 -1
  637. package/esm/services/default-light-theme.d.ts +107 -2
  638. package/esm/services/default-light-theme.d.ts.map +1 -1
  639. package/esm/services/default-light-theme.js +86 -0
  640. package/esm/services/default-light-theme.js.map +1 -1
  641. package/esm/services/default-palette.d.ts +4 -0
  642. package/esm/services/default-palette.d.ts.map +1 -1
  643. package/esm/services/default-palette.js +22 -0
  644. package/esm/services/default-palette.js.map +1 -1
  645. package/esm/services/index.d.ts +6 -2
  646. package/esm/services/index.d.ts.map +1 -1
  647. package/esm/services/index.js +6 -2
  648. package/esm/services/index.js.map +1 -1
  649. package/esm/services/layout-service.d.ts +217 -0
  650. package/esm/services/layout-service.d.ts.map +1 -0
  651. package/esm/services/layout-service.js +331 -0
  652. package/esm/services/layout-service.js.map +1 -0
  653. package/esm/services/layout-service.spec.d.ts +2 -0
  654. package/esm/services/layout-service.spec.d.ts.map +1 -0
  655. package/esm/services/layout-service.spec.js +425 -0
  656. package/esm/services/layout-service.spec.js.map +1 -0
  657. package/esm/services/list-service.d.ts +31 -0
  658. package/esm/services/list-service.d.ts.map +1 -0
  659. package/esm/services/list-service.js +149 -0
  660. package/esm/services/list-service.js.map +1 -0
  661. package/esm/services/list-service.spec.d.ts +2 -0
  662. package/esm/services/list-service.spec.d.ts.map +1 -0
  663. package/esm/services/list-service.spec.js +254 -0
  664. package/esm/services/list-service.spec.js.map +1 -0
  665. package/esm/services/palette-css-vars.d.ts +12 -0
  666. package/esm/services/palette-css-vars.d.ts.map +1 -0
  667. package/esm/services/palette-css-vars.js +44 -0
  668. package/esm/services/palette-css-vars.js.map +1 -0
  669. package/esm/services/theme-provider-service.d.ts +445 -2
  670. package/esm/services/theme-provider-service.d.ts.map +1 -1
  671. package/esm/services/theme-provider-service.js.map +1 -1
  672. package/esm/services/theme-provider-service.spec.d.ts +2 -0
  673. package/esm/services/theme-provider-service.spec.d.ts.map +1 -0
  674. package/esm/services/theme-provider-service.spec.js +166 -0
  675. package/esm/services/theme-provider-service.spec.js.map +1 -0
  676. package/esm/services/tree-service.d.ts +61 -0
  677. package/esm/services/tree-service.d.ts.map +1 -0
  678. package/esm/services/tree-service.js +149 -0
  679. package/esm/services/tree-service.js.map +1 -0
  680. package/esm/services/tree-service.spec.d.ts +2 -0
  681. package/esm/services/tree-service.spec.d.ts.map +1 -0
  682. package/esm/services/tree-service.spec.js +307 -0
  683. package/esm/services/tree-service.spec.js.map +1 -0
  684. package/esm/utils/promisify-animation.d.ts.map +1 -1
  685. package/esm/utils/promisify-animation.js +6 -1
  686. package/esm/utils/promisify-animation.js.map +1 -1
  687. package/package.json +4 -4
  688. package/src/components/accordion/accordion-item.tsx +197 -0
  689. package/src/components/accordion/accordion.spec.tsx +418 -0
  690. package/src/components/accordion/accordion.tsx +50 -0
  691. package/src/components/accordion/index.ts +2 -0
  692. package/src/components/alert.spec.tsx +256 -0
  693. package/src/components/alert.tsx +186 -0
  694. package/src/components/animations.spec.ts +299 -0
  695. package/src/components/app-bar-link.spec.tsx +344 -0
  696. package/src/components/app-bar-link.tsx +44 -25
  697. package/src/components/app-bar.spec.tsx +157 -0
  698. package/src/components/app-bar.tsx +31 -24
  699. package/src/components/avatar.spec.tsx +146 -0
  700. package/src/components/avatar.tsx +56 -60
  701. package/src/components/badge.spec.tsx +228 -0
  702. package/src/components/badge.tsx +104 -0
  703. package/src/components/breadcrumb.spec.tsx +396 -0
  704. package/src/components/breadcrumb.tsx +188 -0
  705. package/src/components/button-group.spec.tsx +611 -0
  706. package/src/components/button-group.tsx +423 -0
  707. package/src/components/button.spec.tsx +383 -0
  708. package/src/components/button.tsx +211 -196
  709. package/src/components/card.spec.tsx +389 -0
  710. package/src/components/card.tsx +261 -0
  711. package/src/components/carousel.spec.tsx +894 -0
  712. package/src/components/carousel.tsx +376 -0
  713. package/src/components/chip.spec.tsx +200 -0
  714. package/src/components/chip.tsx +188 -0
  715. package/src/components/circular-progress.spec.tsx +289 -0
  716. package/src/components/circular-progress.tsx +145 -0
  717. package/src/components/command-palette/command-palette-input.spec.tsx +331 -0
  718. package/src/components/command-palette/command-palette-input.tsx +40 -27
  719. package/src/components/command-palette/command-palette-manager.spec.ts +485 -0
  720. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +517 -0
  721. package/src/components/command-palette/command-palette-suggestion-list.tsx +55 -57
  722. package/src/components/command-palette/index.spec.tsx +684 -0
  723. package/src/components/command-palette/index.tsx +42 -148
  724. package/src/components/context-menu/context-menu-item.tsx +85 -0
  725. package/src/components/context-menu/context-menu-manager.spec.ts +478 -0
  726. package/src/components/context-menu/context-menu-manager.ts +148 -0
  727. package/src/components/context-menu/context-menu.spec.tsx +352 -0
  728. package/src/components/context-menu/context-menu.tsx +116 -0
  729. package/src/components/context-menu/index.ts +3 -0
  730. package/src/components/data-grid/body.spec.tsx +354 -0
  731. package/src/components/data-grid/body.tsx +1 -1
  732. package/src/components/data-grid/data-grid-row.spec.tsx +407 -0
  733. package/src/components/data-grid/data-grid-row.tsx +87 -102
  734. package/src/components/data-grid/data-grid.spec.tsx +964 -0
  735. package/src/components/data-grid/data-grid.tsx +45 -38
  736. package/src/components/data-grid/footer.spec.tsx +356 -0
  737. package/src/components/data-grid/footer.tsx +19 -19
  738. package/src/components/data-grid/header.spec.tsx +586 -0
  739. package/src/components/data-grid/header.tsx +104 -76
  740. package/src/components/data-grid/selection-cell.spec.tsx +151 -0
  741. package/src/components/data-grid/selection-cell.tsx +14 -12
  742. package/src/components/dialog.spec.tsx +135 -0
  743. package/src/components/dialog.tsx +277 -0
  744. package/src/components/divider.spec.tsx +197 -0
  745. package/src/components/divider.tsx +147 -0
  746. package/src/components/drawer/drawer-toggle-button.spec.tsx +374 -0
  747. package/src/components/drawer/drawer-toggle-button.tsx +124 -0
  748. package/src/components/drawer/index.spec.tsx +748 -0
  749. package/src/components/drawer/index.tsx +227 -0
  750. package/src/components/dropdown.spec.tsx +445 -0
  751. package/src/components/dropdown.tsx +343 -0
  752. package/src/components/fab.spec.tsx +119 -0
  753. package/src/components/fab.tsx +40 -8
  754. package/src/components/form.spec.tsx +491 -0
  755. package/src/components/form.tsx +10 -7
  756. package/src/components/grid.spec.tsx +427 -0
  757. package/src/components/grid.tsx +60 -66
  758. package/src/components/icons/icon-definitions.spec.ts +68 -0
  759. package/src/components/icons/icon-definitions.ts +509 -0
  760. package/src/components/icons/icon-types.ts +48 -0
  761. package/src/components/icons/icon.spec.tsx +314 -0
  762. package/src/components/icons/icon.tsx +111 -0
  763. package/src/components/icons/index.ts +4 -0
  764. package/src/components/image.spec.tsx +748 -0
  765. package/src/components/image.tsx +520 -0
  766. package/src/components/index.ts +32 -4
  767. package/src/components/inputs/autocomplete.spec.tsx +267 -0
  768. package/src/components/inputs/autocomplete.tsx +13 -7
  769. package/src/components/inputs/checkbox.spec.tsx +377 -0
  770. package/src/components/inputs/checkbox.tsx +198 -0
  771. package/src/components/inputs/index.ts +7 -0
  772. package/src/components/inputs/input-number.spec.tsx +686 -0
  773. package/src/components/inputs/input-number.tsx +387 -0
  774. package/src/components/inputs/input.spec.tsx +844 -0
  775. package/src/components/inputs/input.tsx +191 -218
  776. package/src/components/inputs/radio-group.spec.tsx +281 -0
  777. package/src/components/inputs/radio-group.tsx +108 -0
  778. package/src/components/inputs/radio.spec.tsx +273 -0
  779. package/src/components/inputs/radio.tsx +199 -0
  780. package/src/components/inputs/select.spec.tsx +1237 -0
  781. package/src/components/inputs/select.tsx +775 -0
  782. package/src/components/inputs/slider.spec.tsx +1020 -0
  783. package/src/components/inputs/slider.tsx +696 -0
  784. package/src/components/inputs/switch.spec.tsx +410 -0
  785. package/src/components/inputs/switch.tsx +218 -0
  786. package/src/components/inputs/text-area.spec.tsx +300 -0
  787. package/src/components/inputs/text-area.tsx +47 -79
  788. package/src/components/linear-progress.spec.tsx +320 -0
  789. package/src/components/linear-progress.tsx +127 -0
  790. package/src/components/list/index.ts +2 -0
  791. package/src/components/list/list-item.tsx +106 -0
  792. package/src/components/list/list.spec.tsx +817 -0
  793. package/src/components/list/list.tsx +92 -0
  794. package/src/components/loader.spec.tsx +362 -0
  795. package/src/components/loader.tsx +18 -10
  796. package/src/components/menu/index.ts +2 -0
  797. package/src/components/menu/menu-types.spec.ts +122 -0
  798. package/src/components/menu/menu-types.ts +43 -0
  799. package/src/components/menu/menu.spec.tsx +483 -0
  800. package/src/components/menu/menu.tsx +326 -0
  801. package/src/components/modal.spec.tsx +314 -0
  802. package/src/components/modal.tsx +20 -15
  803. package/src/components/noty-list.spec.tsx +634 -0
  804. package/src/components/noty-list.tsx +98 -101
  805. package/src/components/page-container/index.spec.tsx +274 -0
  806. package/src/components/page-container/index.tsx +82 -0
  807. package/src/components/page-container/page-header.spec.tsx +308 -0
  808. package/src/components/page-container/page-header.tsx +127 -0
  809. package/src/components/page-layout/index.spec.tsx +882 -0
  810. package/src/components/page-layout/index.tsx +392 -0
  811. package/src/components/pagination.spec.tsx +275 -0
  812. package/src/components/pagination.tsx +249 -0
  813. package/src/components/paper.spec.tsx +80 -0
  814. package/src/components/paper.tsx +21 -17
  815. package/src/components/rating.spec.tsx +866 -0
  816. package/src/components/rating.tsx +286 -0
  817. package/src/components/result.spec.tsx +221 -0
  818. package/src/components/result.tsx +155 -0
  819. package/src/components/searchable-input-styles.ts +81 -0
  820. package/src/components/skeleton.spec.tsx +227 -0
  821. package/src/components/skeleton.tsx +24 -7
  822. package/src/components/styles.spec.ts +69 -0
  823. package/src/components/styles.tsx +15 -13
  824. package/src/components/suggest/index.spec.tsx +885 -0
  825. package/src/components/suggest/index.tsx +36 -130
  826. package/src/components/suggest/suggest-input.spec.tsx +195 -0
  827. package/src/components/suggest/suggest-input.tsx +23 -29
  828. package/src/components/suggest/suggest-manager.spec.ts +419 -0
  829. package/src/components/suggest/suggestion-list.spec.tsx +355 -0
  830. package/src/components/suggest/suggestion-list.tsx +54 -58
  831. package/src/components/tabs.spec.tsx +598 -0
  832. package/src/components/tabs.tsx +241 -26
  833. package/src/components/timeline.spec.tsx +294 -0
  834. package/src/components/timeline.tsx +221 -0
  835. package/src/components/tooltip.spec.tsx +223 -0
  836. package/src/components/tooltip.tsx +155 -0
  837. package/src/components/tree/index.ts +2 -0
  838. package/src/components/tree/tree-item.tsx +161 -0
  839. package/src/components/tree/tree.spec.tsx +677 -0
  840. package/src/components/tree/tree.tsx +111 -0
  841. package/src/components/typography.spec.tsx +235 -0
  842. package/src/components/typography.tsx +292 -0
  843. package/src/components/wizard/index.spec.tsx +233 -0
  844. package/src/components/wizard/index.tsx +10 -9
  845. package/src/services/click-away-service.ts +9 -3
  846. package/src/services/collection-service.spec.ts +492 -3
  847. package/src/services/css-variable-theme.spec.ts +372 -0
  848. package/src/services/css-variable-theme.ts +128 -3
  849. package/src/services/default-dark-theme.ts +89 -3
  850. package/src/services/default-light-theme.ts +88 -2
  851. package/src/services/default-palette.ts +22 -0
  852. package/src/services/index.ts +6 -2
  853. package/src/services/layout-service.spec.ts +535 -0
  854. package/src/services/layout-service.ts +391 -0
  855. package/src/services/list-service.spec.ts +364 -0
  856. package/src/services/list-service.ts +169 -0
  857. package/src/services/palette-css-vars.ts +46 -0
  858. package/src/services/theme-provider-service.spec.ts +195 -0
  859. package/src/services/theme-provider-service.ts +305 -2
  860. package/src/services/tree-service.spec.ts +428 -0
  861. package/src/services/tree-service.ts +179 -0
  862. package/src/utils/promisify-animation.ts +7 -1
@@ -0,0 +1,894 @@
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 { Carousel } from './carousel.js'
6
+
7
+ describe('Carousel', () => {
8
+ beforeEach(() => {
9
+ document.body.innerHTML = '<div id="root"></div>'
10
+ })
11
+
12
+ afterEach(() => {
13
+ document.body.innerHTML = ''
14
+ })
15
+
16
+ const createSlides = (): JSX.Element[] => [
17
+ <div id="slide-1">Slide 1</div>,
18
+ <div id="slide-2">Slide 2</div>,
19
+ <div id="slide-3">Slide 3</div>,
20
+ ]
21
+
22
+ it('should render all slides', async () => {
23
+ await usingAsync(new Injector(), async (injector) => {
24
+ const rootElement = document.getElementById('root') as HTMLDivElement
25
+
26
+ initializeShadeRoot({
27
+ injector,
28
+ rootElement,
29
+ jsxElement: <Carousel slides={createSlides()} />,
30
+ })
31
+
32
+ await sleepAsync(100)
33
+
34
+ expect(document.getElementById('slide-1')).toBeTruthy()
35
+ expect(document.getElementById('slide-2')).toBeTruthy()
36
+ expect(document.getElementById('slide-3')).toBeTruthy()
37
+ })
38
+ })
39
+
40
+ it('should render dot indicators by default', async () => {
41
+ await usingAsync(new Injector(), async (injector) => {
42
+ const rootElement = document.getElementById('root') as HTMLDivElement
43
+
44
+ initializeShadeRoot({
45
+ injector,
46
+ rootElement,
47
+ jsxElement: <Carousel slides={createSlides()} />,
48
+ })
49
+
50
+ await sleepAsync(100)
51
+
52
+ const dots = document.querySelectorAll('.carousel-dot')
53
+ expect(dots.length).toBe(3)
54
+ })
55
+ })
56
+
57
+ it('should hide dots when dots prop is false', async () => {
58
+ await usingAsync(new Injector(), async (injector) => {
59
+ const rootElement = document.getElementById('root') as HTMLDivElement
60
+
61
+ initializeShadeRoot({
62
+ injector,
63
+ rootElement,
64
+ jsxElement: <Carousel slides={createSlides()} dots={false} />,
65
+ })
66
+
67
+ await sleepAsync(100)
68
+
69
+ const dots = document.querySelectorAll('.carousel-dot')
70
+ expect(dots.length).toBe(0)
71
+ })
72
+ })
73
+
74
+ it('should render prev and next arrow buttons', async () => {
75
+ await usingAsync(new Injector(), async (injector) => {
76
+ const rootElement = document.getElementById('root') as HTMLDivElement
77
+
78
+ initializeShadeRoot({
79
+ injector,
80
+ rootElement,
81
+ jsxElement: <Carousel slides={createSlides()} />,
82
+ })
83
+
84
+ await sleepAsync(100)
85
+
86
+ const prevButton = document.querySelector('.carousel-arrow-prev')
87
+ const nextButton = document.querySelector('.carousel-arrow-next')
88
+ expect(prevButton).toBeTruthy()
89
+ expect(nextButton).toBeTruthy()
90
+ })
91
+ })
92
+
93
+ it('should not render arrows or dots for a single slide', async () => {
94
+ await usingAsync(new Injector(), async (injector) => {
95
+ const rootElement = document.getElementById('root') as HTMLDivElement
96
+
97
+ initializeShadeRoot({
98
+ injector,
99
+ rootElement,
100
+ jsxElement: <Carousel slides={[<div>Only slide</div>]} />,
101
+ })
102
+
103
+ await sleepAsync(100)
104
+
105
+ const arrows = document.querySelectorAll('.carousel-arrow')
106
+ const dots = document.querySelectorAll('.carousel-dot')
107
+ expect(arrows.length).toBe(0)
108
+ expect(dots.length).toBe(0)
109
+ })
110
+ })
111
+
112
+ it('should set the first dot as active by default', async () => {
113
+ await usingAsync(new Injector(), async (injector) => {
114
+ const rootElement = document.getElementById('root') as HTMLDivElement
115
+
116
+ initializeShadeRoot({
117
+ injector,
118
+ rootElement,
119
+ jsxElement: <Carousel slides={createSlides()} />,
120
+ })
121
+
122
+ await sleepAsync(100)
123
+
124
+ const activeDots = document.querySelectorAll('.carousel-dot[data-active]')
125
+ expect(activeDots.length).toBe(1)
126
+
127
+ const dots = document.querySelectorAll('.carousel-dot')
128
+ expect(dots[0].hasAttribute('data-active')).toBe(true)
129
+ })
130
+ })
131
+
132
+ it('should respect defaultActiveIndex', async () => {
133
+ await usingAsync(new Injector(), async (injector) => {
134
+ const rootElement = document.getElementById('root') as HTMLDivElement
135
+
136
+ initializeShadeRoot({
137
+ injector,
138
+ rootElement,
139
+ jsxElement: <Carousel slides={createSlides()} defaultActiveIndex={2} />,
140
+ })
141
+
142
+ await sleepAsync(100)
143
+
144
+ const dots = document.querySelectorAll('.carousel-dot')
145
+ expect(dots[2].hasAttribute('data-active')).toBe(true)
146
+ expect(dots[0].hasAttribute('data-active')).toBe(false)
147
+ })
148
+ })
149
+
150
+ it('should set the vertical data attribute', async () => {
151
+ await usingAsync(new Injector(), async (injector) => {
152
+ const rootElement = document.getElementById('root') as HTMLDivElement
153
+
154
+ initializeShadeRoot({
155
+ injector,
156
+ rootElement,
157
+ jsxElement: <Carousel slides={createSlides()} vertical />,
158
+ })
159
+
160
+ await sleepAsync(100)
161
+
162
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
163
+ expect(carousel.hasAttribute('data-vertical')).toBe(true)
164
+ })
165
+ })
166
+
167
+ it('should use slide effect by default', async () => {
168
+ await usingAsync(new Injector(), async (injector) => {
169
+ const rootElement = document.getElementById('root') as HTMLDivElement
170
+
171
+ initializeShadeRoot({
172
+ injector,
173
+ rootElement,
174
+ jsxElement: <Carousel slides={createSlides()} />,
175
+ })
176
+
177
+ await sleepAsync(100)
178
+
179
+ const track = document.querySelector('.carousel-track')
180
+ expect(track).toBeTruthy()
181
+ expect(document.querySelector('.carousel-fade-container')).toBeFalsy()
182
+ })
183
+ })
184
+
185
+ it('should use fade effect when specified', async () => {
186
+ await usingAsync(new Injector(), async (injector) => {
187
+ const rootElement = document.getElementById('root') as HTMLDivElement
188
+
189
+ initializeShadeRoot({
190
+ injector,
191
+ rootElement,
192
+ jsxElement: <Carousel slides={createSlides()} effect="fade" />,
193
+ })
194
+
195
+ await sleepAsync(100)
196
+
197
+ const fadeContainer = document.querySelector('.carousel-fade-container')
198
+ expect(fadeContainer).toBeTruthy()
199
+ expect(document.querySelector('.carousel-track')).toBeFalsy()
200
+ })
201
+ })
202
+
203
+ it('should mark the first fade slide as active by default', async () => {
204
+ await usingAsync(new Injector(), async (injector) => {
205
+ const rootElement = document.getElementById('root') as HTMLDivElement
206
+
207
+ initializeShadeRoot({
208
+ injector,
209
+ rootElement,
210
+ jsxElement: <Carousel slides={createSlides()} effect="fade" />,
211
+ })
212
+
213
+ await sleepAsync(100)
214
+
215
+ const fadeSlides = document.querySelectorAll('.carousel-fade-slide')
216
+ expect(fadeSlides[0].hasAttribute('data-active')).toBe(true)
217
+ expect(fadeSlides[1].hasAttribute('data-active')).toBe(false)
218
+ })
219
+ })
220
+
221
+ it('should have proper ARIA attributes on host element', async () => {
222
+ await usingAsync(new Injector(), async (injector) => {
223
+ const rootElement = document.getElementById('root') as HTMLDivElement
224
+
225
+ initializeShadeRoot({
226
+ injector,
227
+ rootElement,
228
+ jsxElement: <Carousel slides={createSlides()} />,
229
+ })
230
+
231
+ await sleepAsync(100)
232
+
233
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
234
+ expect(carousel.getAttribute('role')).toBe('region')
235
+ expect(carousel.getAttribute('aria-roledescription')).toBe('carousel')
236
+ expect(carousel.getAttribute('tabindex')).toBe('0')
237
+ })
238
+ })
239
+
240
+ it('should render slide groups with role attribute', async () => {
241
+ await usingAsync(new Injector(), async (injector) => {
242
+ const rootElement = document.getElementById('root') as HTMLDivElement
243
+
244
+ initializeShadeRoot({
245
+ injector,
246
+ rootElement,
247
+ jsxElement: <Carousel slides={createSlides()} />,
248
+ })
249
+
250
+ await sleepAsync(100)
251
+
252
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
253
+ const slideGroups = carousel.querySelectorAll('[role="group"]')
254
+ expect(slideGroups.length).toBe(3)
255
+ })
256
+ })
257
+
258
+ it('should call onChange when navigating via dots', async () => {
259
+ const handleChange = vi.fn()
260
+
261
+ await usingAsync(new Injector(), async (injector) => {
262
+ const rootElement = document.getElementById('root') as HTMLDivElement
263
+
264
+ initializeShadeRoot({
265
+ injector,
266
+ rootElement,
267
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
268
+ })
269
+
270
+ await sleepAsync(100)
271
+
272
+ const dots = document.querySelectorAll('.carousel-dot')
273
+ ;(dots[2] as HTMLButtonElement).click()
274
+
275
+ expect(handleChange).toHaveBeenCalledWith(2)
276
+ })
277
+ })
278
+
279
+ it('should call onChange when navigating via arrows', async () => {
280
+ const handleChange = vi.fn()
281
+
282
+ await usingAsync(new Injector(), async (injector) => {
283
+ const rootElement = document.getElementById('root') as HTMLDivElement
284
+
285
+ initializeShadeRoot({
286
+ injector,
287
+ rootElement,
288
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
289
+ })
290
+
291
+ await sleepAsync(100)
292
+
293
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
294
+ nextButton.click()
295
+
296
+ expect(handleChange).toHaveBeenCalledWith(1)
297
+ })
298
+ })
299
+
300
+ it('should wrap around when navigating past the last slide', async () => {
301
+ const handleChange = vi.fn()
302
+
303
+ await usingAsync(new Injector(), async (injector) => {
304
+ const rootElement = document.getElementById('root') as HTMLDivElement
305
+
306
+ initializeShadeRoot({
307
+ injector,
308
+ rootElement,
309
+ jsxElement: <Carousel slides={createSlides()} defaultActiveIndex={2} onChange={handleChange} />,
310
+ })
311
+
312
+ await sleepAsync(100)
313
+
314
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
315
+ nextButton.click()
316
+
317
+ expect(handleChange).toHaveBeenCalledWith(0)
318
+ })
319
+ })
320
+
321
+ it('should wrap around when navigating before the first slide', async () => {
322
+ const handleChange = vi.fn()
323
+
324
+ await usingAsync(new Injector(), async (injector) => {
325
+ const rootElement = document.getElementById('root') as HTMLDivElement
326
+
327
+ initializeShadeRoot({
328
+ injector,
329
+ rootElement,
330
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
331
+ })
332
+
333
+ await sleepAsync(100)
334
+
335
+ const prevButton = document.querySelector('.carousel-arrow-prev') as HTMLButtonElement
336
+ prevButton.click()
337
+
338
+ expect(handleChange).toHaveBeenCalledWith(2)
339
+ })
340
+ })
341
+
342
+ it('should render horizontal arrows with correct symbols', async () => {
343
+ await usingAsync(new Injector(), async (injector) => {
344
+ const rootElement = document.getElementById('root') as HTMLDivElement
345
+
346
+ initializeShadeRoot({
347
+ injector,
348
+ rootElement,
349
+ jsxElement: <Carousel slides={createSlides()} />,
350
+ })
351
+
352
+ await sleepAsync(100)
353
+
354
+ const prevButton = document.querySelector('.carousel-arrow-prev') as HTMLButtonElement
355
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
356
+ expect(prevButton.querySelector('shade-icon')).not.toBeNull()
357
+ expect(nextButton.querySelector('shade-icon')).not.toBeNull()
358
+ })
359
+ })
360
+
361
+ it('should render vertical arrows with correct symbols', async () => {
362
+ await usingAsync(new Injector(), async (injector) => {
363
+ const rootElement = document.getElementById('root') as HTMLDivElement
364
+
365
+ initializeShadeRoot({
366
+ injector,
367
+ rootElement,
368
+ jsxElement: <Carousel slides={createSlides()} vertical />,
369
+ })
370
+
371
+ await sleepAsync(100)
372
+
373
+ const prevButton = document.querySelector('.carousel-arrow-prev') as HTMLButtonElement
374
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
375
+ expect(prevButton.querySelector('shade-icon')).not.toBeNull()
376
+ expect(nextButton.querySelector('shade-icon')).not.toBeNull()
377
+ })
378
+ })
379
+
380
+ it('should clamp defaultActiveIndex to valid range', async () => {
381
+ await usingAsync(new Injector(), async (injector) => {
382
+ const rootElement = document.getElementById('root') as HTMLDivElement
383
+
384
+ initializeShadeRoot({
385
+ injector,
386
+ rootElement,
387
+ jsxElement: <Carousel slides={createSlides()} defaultActiveIndex={99} />,
388
+ })
389
+
390
+ await sleepAsync(100)
391
+
392
+ const dots = document.querySelectorAll('.carousel-dot')
393
+ // Should clamp to last slide (index 2)
394
+ expect(dots[2].hasAttribute('data-active')).toBe(true)
395
+ })
396
+ })
397
+
398
+ it('should apply custom style', async () => {
399
+ await usingAsync(new Injector(), async (injector) => {
400
+ const rootElement = document.getElementById('root') as HTMLDivElement
401
+
402
+ initializeShadeRoot({
403
+ injector,
404
+ rootElement,
405
+ jsxElement: <Carousel slides={createSlides()} style={{ height: '300px' }} />,
406
+ })
407
+
408
+ await sleepAsync(100)
409
+
410
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
411
+ expect(carousel.style.height).toBe('300px')
412
+ })
413
+ })
414
+
415
+ it('should handle empty slides array gracefully', async () => {
416
+ await usingAsync(new Injector(), async (injector) => {
417
+ const rootElement = document.getElementById('root') as HTMLDivElement
418
+
419
+ initializeShadeRoot({
420
+ injector,
421
+ rootElement,
422
+ jsxElement: <Carousel slides={[]} />,
423
+ })
424
+
425
+ await sleepAsync(100)
426
+
427
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
428
+ expect(carousel).toBeTruthy()
429
+ expect(document.querySelectorAll('.carousel-dot').length).toBe(0)
430
+ expect(document.querySelectorAll('.carousel-arrow').length).toBe(0)
431
+ })
432
+ })
433
+
434
+ describe('keyboard navigation', () => {
435
+ it('should navigate to next slide on ArrowRight', async () => {
436
+ const handleChange = vi.fn()
437
+
438
+ await usingAsync(new Injector(), async (injector) => {
439
+ const rootElement = document.getElementById('root') as HTMLDivElement
440
+
441
+ initializeShadeRoot({
442
+ injector,
443
+ rootElement,
444
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
445
+ })
446
+
447
+ await sleepAsync(100)
448
+
449
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
450
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowRight', bubbles: true }))
451
+
452
+ expect(handleChange).toHaveBeenCalledWith(1)
453
+ })
454
+ })
455
+
456
+ it('should navigate to previous slide on ArrowLeft', async () => {
457
+ const handleChange = vi.fn()
458
+
459
+ await usingAsync(new Injector(), async (injector) => {
460
+ const rootElement = document.getElementById('root') as HTMLDivElement
461
+
462
+ initializeShadeRoot({
463
+ injector,
464
+ rootElement,
465
+ jsxElement: <Carousel slides={createSlides()} defaultActiveIndex={2} onChange={handleChange} />,
466
+ })
467
+
468
+ await sleepAsync(100)
469
+
470
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
471
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowLeft', bubbles: true }))
472
+
473
+ expect(handleChange).toHaveBeenCalledWith(1)
474
+ })
475
+ })
476
+
477
+ it('should navigate with ArrowDown in vertical mode', async () => {
478
+ const handleChange = vi.fn()
479
+
480
+ await usingAsync(new Injector(), async (injector) => {
481
+ const rootElement = document.getElementById('root') as HTMLDivElement
482
+
483
+ initializeShadeRoot({
484
+ injector,
485
+ rootElement,
486
+ jsxElement: <Carousel slides={createSlides()} vertical onChange={handleChange} />,
487
+ })
488
+
489
+ await sleepAsync(100)
490
+
491
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
492
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
493
+
494
+ expect(handleChange).toHaveBeenCalledWith(1)
495
+ })
496
+ })
497
+
498
+ it('should navigate with ArrowUp in vertical mode', async () => {
499
+ const handleChange = vi.fn()
500
+
501
+ await usingAsync(new Injector(), async (injector) => {
502
+ const rootElement = document.getElementById('root') as HTMLDivElement
503
+
504
+ initializeShadeRoot({
505
+ injector,
506
+ rootElement,
507
+ jsxElement: <Carousel slides={createSlides()} vertical defaultActiveIndex={2} onChange={handleChange} />,
508
+ })
509
+
510
+ await sleepAsync(100)
511
+
512
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
513
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }))
514
+
515
+ expect(handleChange).toHaveBeenCalledWith(1)
516
+ })
517
+ })
518
+
519
+ it('should not react to ArrowDown/ArrowUp in horizontal mode', async () => {
520
+ const handleChange = vi.fn()
521
+
522
+ await usingAsync(new Injector(), async (injector) => {
523
+ const rootElement = document.getElementById('root') as HTMLDivElement
524
+
525
+ initializeShadeRoot({
526
+ injector,
527
+ rootElement,
528
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
529
+ })
530
+
531
+ await sleepAsync(100)
532
+
533
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
534
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
535
+ carousel.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }))
536
+
537
+ expect(handleChange).not.toHaveBeenCalled()
538
+ })
539
+ })
540
+ })
541
+
542
+ describe('touch / swipe support', () => {
543
+ const createTouchEvent = (type: string, x: number, y: number) => {
544
+ const touchObj = { clientX: x, clientY: y, identifier: 0, target: document.body }
545
+ if (type === 'touchstart') {
546
+ return new TouchEvent(type, { touches: [touchObj as unknown as Touch] })
547
+ }
548
+ return new TouchEvent(type, { changedTouches: [touchObj as unknown as Touch] })
549
+ }
550
+
551
+ it('should go to next slide on horizontal left swipe', async () => {
552
+ const handleChange = vi.fn()
553
+
554
+ await usingAsync(new Injector(), async (injector) => {
555
+ const rootElement = document.getElementById('root') as HTMLDivElement
556
+
557
+ initializeShadeRoot({
558
+ injector,
559
+ rootElement,
560
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
561
+ })
562
+
563
+ await sleepAsync(100)
564
+
565
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
566
+ carousel.dispatchEvent(createTouchEvent('touchstart', 200, 100))
567
+ carousel.dispatchEvent(createTouchEvent('touchend', 100, 100))
568
+
569
+ expect(handleChange).toHaveBeenCalledWith(1)
570
+ })
571
+ })
572
+
573
+ it('should go to previous slide on horizontal right swipe', async () => {
574
+ const handleChange = vi.fn()
575
+
576
+ await usingAsync(new Injector(), async (injector) => {
577
+ const rootElement = document.getElementById('root') as HTMLDivElement
578
+
579
+ initializeShadeRoot({
580
+ injector,
581
+ rootElement,
582
+ jsxElement: <Carousel slides={createSlides()} defaultActiveIndex={2} onChange={handleChange} />,
583
+ })
584
+
585
+ await sleepAsync(100)
586
+
587
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
588
+ carousel.dispatchEvent(createTouchEvent('touchstart', 100, 100))
589
+ carousel.dispatchEvent(createTouchEvent('touchend', 200, 100))
590
+
591
+ expect(handleChange).toHaveBeenCalledWith(1)
592
+ })
593
+ })
594
+
595
+ it('should not navigate on small swipe distance', async () => {
596
+ const handleChange = vi.fn()
597
+
598
+ await usingAsync(new Injector(), async (injector) => {
599
+ const rootElement = document.getElementById('root') as HTMLDivElement
600
+
601
+ initializeShadeRoot({
602
+ injector,
603
+ rootElement,
604
+ jsxElement: <Carousel slides={createSlides()} onChange={handleChange} />,
605
+ })
606
+
607
+ await sleepAsync(100)
608
+
609
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
610
+ carousel.dispatchEvent(createTouchEvent('touchstart', 100, 100))
611
+ carousel.dispatchEvent(createTouchEvent('touchend', 120, 100))
612
+
613
+ expect(handleChange).not.toHaveBeenCalled()
614
+ })
615
+ })
616
+
617
+ it('should handle vertical swipe in vertical mode', async () => {
618
+ const handleChange = vi.fn()
619
+
620
+ await usingAsync(new Injector(), async (injector) => {
621
+ const rootElement = document.getElementById('root') as HTMLDivElement
622
+
623
+ initializeShadeRoot({
624
+ injector,
625
+ rootElement,
626
+ jsxElement: <Carousel slides={createSlides()} vertical onChange={handleChange} />,
627
+ })
628
+
629
+ await sleepAsync(100)
630
+
631
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
632
+ carousel.dispatchEvent(createTouchEvent('touchstart', 100, 200))
633
+ carousel.dispatchEvent(createTouchEvent('touchend', 100, 100))
634
+
635
+ expect(handleChange).toHaveBeenCalledWith(1)
636
+ })
637
+ })
638
+ })
639
+
640
+ describe('autoplay', () => {
641
+ it('should auto-advance slides when autoplay is enabled', async () => {
642
+ const handleChange = vi.fn()
643
+
644
+ await usingAsync(new Injector(), async (injector) => {
645
+ const rootElement = document.getElementById('root') as HTMLDivElement
646
+
647
+ initializeShadeRoot({
648
+ injector,
649
+ rootElement,
650
+ jsxElement: <Carousel slides={createSlides()} autoplay autoplayInterval={100} onChange={handleChange} />,
651
+ })
652
+
653
+ await sleepAsync(100)
654
+ // Wait for at least one autoplay cycle
655
+ await sleepAsync(200)
656
+
657
+ expect(handleChange).toHaveBeenCalled()
658
+ })
659
+ })
660
+
661
+ it('should not autoplay for a single slide', async () => {
662
+ const handleChange = vi.fn()
663
+
664
+ await usingAsync(new Injector(), async (injector) => {
665
+ const rootElement = document.getElementById('root') as HTMLDivElement
666
+
667
+ initializeShadeRoot({
668
+ injector,
669
+ rootElement,
670
+ jsxElement: <Carousel slides={[<div>Only</div>]} autoplay autoplayInterval={100} onChange={handleChange} />,
671
+ })
672
+
673
+ await sleepAsync(300)
674
+
675
+ expect(handleChange).not.toHaveBeenCalled()
676
+ })
677
+ })
678
+ })
679
+
680
+ describe('fade effect DOM updates', () => {
681
+ it('should update active fade slide when navigating', async () => {
682
+ const handleChange = vi.fn()
683
+
684
+ await usingAsync(new Injector(), async (injector) => {
685
+ const rootElement = document.getElementById('root') as HTMLDivElement
686
+
687
+ initializeShadeRoot({
688
+ injector,
689
+ rootElement,
690
+ jsxElement: <Carousel slides={createSlides()} effect="fade" onChange={handleChange} />,
691
+ })
692
+
693
+ await sleepAsync(100)
694
+
695
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
696
+ nextButton.click()
697
+
698
+ await sleepAsync(100)
699
+
700
+ const fadeSlides = document.querySelectorAll('.carousel-fade-slide')
701
+ expect(fadeSlides[0].hasAttribute('data-active')).toBe(false)
702
+ expect(fadeSlides[1].hasAttribute('data-active')).toBe(true)
703
+ })
704
+ })
705
+
706
+ it('should update dots when navigating in fade mode', async () => {
707
+ await usingAsync(new Injector(), async (injector) => {
708
+ const rootElement = document.getElementById('root') as HTMLDivElement
709
+
710
+ initializeShadeRoot({
711
+ injector,
712
+ rootElement,
713
+ jsxElement: <Carousel slides={createSlides()} effect="fade" />,
714
+ })
715
+
716
+ await sleepAsync(100)
717
+
718
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
719
+ nextButton.click()
720
+
721
+ await sleepAsync(100)
722
+
723
+ const dots = document.querySelectorAll('.carousel-dot')
724
+ expect(dots[0].hasAttribute('data-active')).toBe(false)
725
+ expect(dots[1].hasAttribute('data-active')).toBe(true)
726
+ })
727
+ })
728
+ })
729
+
730
+ describe('slide effect DOM updates', () => {
731
+ it('should update track transform when navigating', async () => {
732
+ await usingAsync(new Injector(), async (injector) => {
733
+ const rootElement = document.getElementById('root') as HTMLDivElement
734
+
735
+ initializeShadeRoot({
736
+ injector,
737
+ rootElement,
738
+ jsxElement: <Carousel slides={createSlides()} />,
739
+ })
740
+
741
+ await sleepAsync(100)
742
+
743
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
744
+ nextButton.click()
745
+
746
+ await sleepAsync(100)
747
+
748
+ const track = document.querySelector('.carousel-track') as HTMLElement
749
+ expect(track.style.transform).toContain('-100%')
750
+ })
751
+ })
752
+
753
+ it('should update dots when navigating in slide mode', async () => {
754
+ await usingAsync(new Injector(), async (injector) => {
755
+ const rootElement = document.getElementById('root') as HTMLDivElement
756
+
757
+ initializeShadeRoot({
758
+ injector,
759
+ rootElement,
760
+ jsxElement: <Carousel slides={createSlides()} />,
761
+ })
762
+
763
+ await sleepAsync(100)
764
+
765
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
766
+ nextButton.click()
767
+
768
+ await sleepAsync(100)
769
+
770
+ const dots = document.querySelectorAll('.carousel-dot')
771
+ expect(dots[0].hasAttribute('data-active')).toBe(false)
772
+ expect(dots[1].hasAttribute('data-active')).toBe(true)
773
+ })
774
+ })
775
+ })
776
+
777
+ it('should not remove data-vertical when set to false', async () => {
778
+ await usingAsync(new Injector(), async (injector) => {
779
+ const rootElement = document.getElementById('root') as HTMLDivElement
780
+
781
+ initializeShadeRoot({
782
+ injector,
783
+ rootElement,
784
+ jsxElement: <Carousel slides={createSlides()} vertical={false} />,
785
+ })
786
+
787
+ await sleepAsync(100)
788
+
789
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
790
+ expect(carousel.hasAttribute('data-vertical')).toBe(false)
791
+ })
792
+ })
793
+
794
+ describe('vertical slide mode DOM updates', () => {
795
+ it('should update track transform with translateY when navigating vertically', async () => {
796
+ const handleChange = vi.fn()
797
+
798
+ await usingAsync(new Injector(), async (injector) => {
799
+ const rootElement = document.getElementById('root') as HTMLDivElement
800
+
801
+ initializeShadeRoot({
802
+ injector,
803
+ rootElement,
804
+ jsxElement: <Carousel slides={createSlides()} vertical style={{ height: '300px' }} onChange={handleChange} />,
805
+ })
806
+
807
+ await sleepAsync(100)
808
+
809
+ const nextButton = document.querySelector('.carousel-arrow-next') as HTMLButtonElement
810
+ nextButton.click()
811
+
812
+ await sleepAsync(100)
813
+
814
+ const track = document.querySelector('.carousel-track') as HTMLElement
815
+ expect(track.style.transform).toContain('translateY')
816
+ })
817
+ })
818
+ })
819
+
820
+ describe('vertical swipe support', () => {
821
+ const createTouchEvent = (type: string, x: number, y: number) => {
822
+ const touchObj = { clientX: x, clientY: y, identifier: 0, target: document.body }
823
+ if (type === 'touchstart') {
824
+ return new TouchEvent(type, { touches: [touchObj as unknown as Touch] })
825
+ }
826
+ return new TouchEvent(type, { changedTouches: [touchObj as unknown as Touch] })
827
+ }
828
+
829
+ it('should go to previous slide on vertical swipe down', async () => {
830
+ const handleChange = vi.fn()
831
+
832
+ await usingAsync(new Injector(), async (injector) => {
833
+ const rootElement = document.getElementById('root') as HTMLDivElement
834
+
835
+ initializeShadeRoot({
836
+ injector,
837
+ rootElement,
838
+ jsxElement: <Carousel slides={createSlides()} vertical defaultActiveIndex={2} onChange={handleChange} />,
839
+ })
840
+
841
+ await sleepAsync(100)
842
+
843
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
844
+ carousel.dispatchEvent(createTouchEvent('touchstart', 100, 100))
845
+ carousel.dispatchEvent(createTouchEvent('touchend', 100, 200))
846
+
847
+ expect(handleChange).toHaveBeenCalledWith(1)
848
+ })
849
+ })
850
+
851
+ it('should not navigate on small vertical swipe', async () => {
852
+ const handleChange = vi.fn()
853
+
854
+ await usingAsync(new Injector(), async (injector) => {
855
+ const rootElement = document.getElementById('root') as HTMLDivElement
856
+
857
+ initializeShadeRoot({
858
+ injector,
859
+ rootElement,
860
+ jsxElement: <Carousel slides={createSlides()} vertical onChange={handleChange} />,
861
+ })
862
+
863
+ await sleepAsync(100)
864
+
865
+ const carousel = document.querySelector('shade-carousel') as HTMLElement
866
+ carousel.dispatchEvent(createTouchEvent('touchstart', 100, 100))
867
+ carousel.dispatchEvent(createTouchEvent('touchend', 100, 130))
868
+
869
+ expect(handleChange).not.toHaveBeenCalled()
870
+ })
871
+ })
872
+ })
873
+
874
+ describe('fade effect with defaultActiveIndex', () => {
875
+ it('should set correct initial active slide for fade effect with non-zero index', async () => {
876
+ await usingAsync(new Injector(), async (injector) => {
877
+ const rootElement = document.getElementById('root') as HTMLDivElement
878
+
879
+ initializeShadeRoot({
880
+ injector,
881
+ rootElement,
882
+ jsxElement: <Carousel slides={createSlides()} effect="fade" defaultActiveIndex={1} />,
883
+ })
884
+
885
+ await sleepAsync(100)
886
+
887
+ const fadeSlides = document.querySelectorAll('.carousel-fade-slide')
888
+ expect(fadeSlides[0].hasAttribute('data-active')).toBe(false)
889
+ expect(fadeSlides[1].hasAttribute('data-active')).toBe(true)
890
+ expect(fadeSlides[2].hasAttribute('data-active')).toBe(false)
891
+ })
892
+ })
893
+ })
894
+ })