solid-tom-ui 1.0.8 → 1.0.11

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 (502) hide show
  1. package/dist/README.md +246 -0
  2. package/dist/components/avatar/index.d.ts +3 -0
  3. package/{components → dist/components}/avatar/index.d.ts.map +1 -1
  4. package/dist/components/button/index.d.ts +3 -0
  5. package/{components → dist/components}/button/index.d.ts.map +1 -1
  6. package/dist/components/collapse/index.d.ts +3 -0
  7. package/{components → dist/components}/collapse/index.d.ts.map +1 -1
  8. package/dist/components/float-button/index.d.ts +3 -0
  9. package/{components → dist/components}/float-button/index.d.ts.map +1 -1
  10. package/dist/components/input/index.d.ts +3 -0
  11. package/dist/components/input/index.d.ts.map +1 -0
  12. package/dist/components/menu/index.d.ts +4 -0
  13. package/{components → dist/components}/menu/index.d.ts.map +1 -1
  14. package/{components → dist/components}/menu/menu.types.d.ts +9 -10
  15. package/{components → dist/components}/menu/menu.types.d.ts.map +1 -1
  16. package/dist/components/rating/index.d.ts +3 -0
  17. package/{components → dist/components}/rating/index.d.ts.map +1 -1
  18. package/dist/components/slider/index.d.ts +3 -0
  19. package/{components → dist/components}/slider/index.d.ts.map +1 -1
  20. package/{components → dist/components}/tour/tour.d.ts.map +1 -1
  21. package/{components → dist/components}/tour/tour.js +1 -1
  22. package/{components → dist/components}/tour/tour.js.map +1 -1
  23. package/{components → dist/components}/z-index/z-index.types.js.map +1 -1
  24. package/dist/package.json +45 -0
  25. package/dist/skill/avatar.skill.md.txt +255 -0
  26. package/dist/skill/badge.skill.md.txt +223 -0
  27. package/dist/skill/blank.skill.md.txt +0 -0
  28. package/dist/skill/breadcrumb.skill.md.txt +177 -0
  29. package/dist/skill/button.skill.md.txt +198 -0
  30. package/dist/skill/carousel.skill.md.txt +406 -0
  31. package/dist/skill/chat-bubble.skill.md.txt +342 -0
  32. package/dist/skill/checkbox.skill.md.txt +326 -0
  33. package/dist/skill/code-preview.skill.md.txt +240 -0
  34. package/dist/skill/collapse.skill.md.txt +329 -0
  35. package/dist/skill/context-menu.skill.md.txt +233 -0
  36. package/dist/skill/diff.skill.md.txt +244 -0
  37. package/dist/skill/divider.skill.md.txt +151 -0
  38. package/dist/skill/doc.skill.md.txt +191 -0
  39. package/dist/skill/drawer.skill.md.txt +157 -0
  40. package/dist/skill/dropdown.skill.md.txt +198 -0
  41. package/dist/skill/float-button.skill.md.txt +315 -0
  42. package/dist/skill/hover-3d-image.skill.md.txt +120 -0
  43. package/dist/skill/iframe.skill.md.txt +114 -0
  44. package/dist/skill/image-preview.skill.md.txt +162 -0
  45. package/dist/skill/indicator.skill.md.txt +60 -0
  46. package/dist/skill/input.skill.md.txt +489 -0
  47. package/dist/skill/loading.skill.md.txt +127 -0
  48. package/dist/skill/mansory.skill.md.txt +0 -0
  49. package/dist/skill/menu.skill.md.txt +476 -0
  50. package/dist/skill/modal.skill.md.txt +359 -0
  51. package/dist/skill/pagination.skill.md.txt +405 -0
  52. package/dist/skill/progress-bar.skill.md.txt +207 -0
  53. package/dist/skill/qr-code.skill.md.txt +136 -0
  54. package/dist/skill/rating.skill.md.txt +167 -0
  55. package/dist/skill/select-zone.skill.md.txt +93 -0
  56. package/dist/skill/select.skill.md.txt +663 -0
  57. package/dist/skill/skeleton.skill.md.txt +192 -0
  58. package/dist/skill/slider.skill.md.txt +404 -0
  59. package/dist/skill/splitter.skill.md.txt +411 -0
  60. package/dist/skill/steps.skill.md.txt +264 -0
  61. package/dist/skill/swap.skill.md.txt +139 -0
  62. package/dist/skill/switch.skill.md.txt +191 -0
  63. package/dist/skill/tab.skill.md.txt +484 -0
  64. package/dist/skill/table.example.header.md.txt +667 -0
  65. package/dist/skill/table.skill.md.txt +1407 -0
  66. package/dist/skill/text-rotate.skill.md.txt +186 -0
  67. package/dist/skill/timeline.skill.md.txt +247 -0
  68. package/dist/skill/toast.skill.md.txt +531 -0
  69. package/dist/skill/tooltip.skill.md.txt +222 -0
  70. package/dist/skill/tour.skill.md.txt +156 -0
  71. package/dist/skill/upload.skill.md.txt +358 -0
  72. package/dist/skill/z-index.skill.md.txt +0 -0
  73. package/{solid-ui.css → dist/solid-ui.css} +2 -2
  74. package/package.json +97 -9
  75. package/components/avatar/index.d.ts +0 -2
  76. package/components/button/index.d.ts +0 -2
  77. package/components/collapse/index.d.ts +0 -2
  78. package/components/float-button/index.d.ts +0 -2
  79. package/components/input/index.d.ts +0 -2
  80. package/components/input/index.d.ts.map +0 -1
  81. package/components/menu/index.d.ts +0 -4
  82. package/components/rating/index.d.ts +0 -2
  83. package/components/slider/index.d.ts +0 -2
  84. package/macos.code-workspace +0 -8
  85. /package/{components → dist/components}/avatar/avatar.d.ts +0 -0
  86. /package/{components → dist/components}/avatar/avatar.d.ts.map +0 -0
  87. /package/{components → dist/components}/avatar/avatar.js +0 -0
  88. /package/{components → dist/components}/avatar/avatar.js.map +0 -0
  89. /package/{components → dist/components}/avatar/avatar.types.d.ts +0 -0
  90. /package/{components → dist/components}/avatar/avatar.types.d.ts.map +0 -0
  91. /package/{components → dist/components}/badge/badge.d.ts +0 -0
  92. /package/{components → dist/components}/badge/badge.d.ts.map +0 -0
  93. /package/{components → dist/components}/badge/badge.js +0 -0
  94. /package/{components → dist/components}/badge/badge.js.map +0 -0
  95. /package/{components → dist/components}/badge/badge.types.d.ts +0 -0
  96. /package/{components → dist/components}/badge/badge.types.d.ts.map +0 -0
  97. /package/{components → dist/components}/badge/index.d.ts +0 -0
  98. /package/{components → dist/components}/badge/index.d.ts.map +0 -0
  99. /package/{components → dist/components}/blank/blank.d.ts +0 -0
  100. /package/{components → dist/components}/blank/blank.d.ts.map +0 -0
  101. /package/{components → dist/components}/blank/index.d.ts +0 -0
  102. /package/{components → dist/components}/blank/index.d.ts.map +0 -0
  103. /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts +0 -0
  104. /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts.map +0 -0
  105. /package/{components → dist/components}/breadcrumb/breadcrumb.js +0 -0
  106. /package/{components → dist/components}/breadcrumb/breadcrumb.js.map +0 -0
  107. /package/{components → dist/components}/breadcrumb/index.d.ts +0 -0
  108. /package/{components → dist/components}/breadcrumb/index.d.ts.map +0 -0
  109. /package/{components → dist/components}/button/button.d.ts +0 -0
  110. /package/{components → dist/components}/button/button.d.ts.map +0 -0
  111. /package/{components → dist/components}/button/button.js +0 -0
  112. /package/{components → dist/components}/button/button.js.map +0 -0
  113. /package/{components → dist/components}/button/button.types.d.ts +0 -0
  114. /package/{components → dist/components}/button/button.types.d.ts.map +0 -0
  115. /package/{components → dist/components}/carousel/carousel.d.ts +0 -0
  116. /package/{components → dist/components}/carousel/carousel.d.ts.map +0 -0
  117. /package/{components → dist/components}/carousel/carousel.js +0 -0
  118. /package/{components → dist/components}/carousel/carousel.js.map +0 -0
  119. /package/{components → dist/components}/carousel/carousel.types.d.ts +0 -0
  120. /package/{components → dist/components}/carousel/carousel.types.d.ts.map +0 -0
  121. /package/{components → dist/components}/carousel/index.d.ts +0 -0
  122. /package/{components → dist/components}/carousel/index.d.ts.map +0 -0
  123. /package/{components → dist/components}/chat-bubble/chatBubble.d.ts +0 -0
  124. /package/{components → dist/components}/chat-bubble/chatBubble.d.ts.map +0 -0
  125. /package/{components → dist/components}/chat-bubble/chatBubble.js +0 -0
  126. /package/{components → dist/components}/chat-bubble/chatBubble.js.map +0 -0
  127. /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts +0 -0
  128. /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts.map +0 -0
  129. /package/{components → dist/components}/chat-bubble/index.d.ts +0 -0
  130. /package/{components → dist/components}/chat-bubble/index.d.ts.map +0 -0
  131. /package/{components → dist/components}/checkbox/checkbox.d.ts +0 -0
  132. /package/{components → dist/components}/checkbox/checkbox.d.ts.map +0 -0
  133. /package/{components → dist/components}/checkbox/checkbox.js +0 -0
  134. /package/{components → dist/components}/checkbox/checkbox.js.map +0 -0
  135. /package/{components → dist/components}/checkbox/index.d.ts +0 -0
  136. /package/{components → dist/components}/checkbox/index.d.ts.map +0 -0
  137. /package/{components → dist/components}/collapse/collapse.d.ts +0 -0
  138. /package/{components → dist/components}/collapse/collapse.d.ts.map +0 -0
  139. /package/{components → dist/components}/collapse/collapse.js +0 -0
  140. /package/{components → dist/components}/collapse/collapse.js.map +0 -0
  141. /package/{components → dist/components}/collapse/collapse.types.d.ts +0 -0
  142. /package/{components → dist/components}/collapse/collapse.types.d.ts.map +0 -0
  143. /package/{components → dist/components}/context-menu/context-menu.d.ts +0 -0
  144. /package/{components → dist/components}/context-menu/context-menu.d.ts.map +0 -0
  145. /package/{components → dist/components}/context-menu/context-menu.js +0 -0
  146. /package/{components → dist/components}/context-menu/context-menu.js.map +0 -0
  147. /package/{components → dist/components}/context-menu/context-menu.store.d.ts +0 -0
  148. /package/{components → dist/components}/context-menu/context-menu.store.d.ts.map +0 -0
  149. /package/{components → dist/components}/context-menu/context-menu.store.js +0 -0
  150. /package/{components → dist/components}/context-menu/context-menu.store.js.map +0 -0
  151. /package/{components → dist/components}/context-menu/context-menu.types.d.ts +0 -0
  152. /package/{components → dist/components}/context-menu/context-menu.types.d.ts.map +0 -0
  153. /package/{components → dist/components}/context-menu/index.d.ts +0 -0
  154. /package/{components → dist/components}/context-menu/index.d.ts.map +0 -0
  155. /package/{components → dist/components}/diff/diff.d.ts +0 -0
  156. /package/{components → dist/components}/diff/diff.d.ts.map +0 -0
  157. /package/{components → dist/components}/diff/diff.js +0 -0
  158. /package/{components → dist/components}/diff/diff.js.map +0 -0
  159. /package/{components → dist/components}/diff/index.d.ts +0 -0
  160. /package/{components → dist/components}/diff/index.d.ts.map +0 -0
  161. /package/{components → dist/components}/divider/divider.d.ts +0 -0
  162. /package/{components → dist/components}/divider/divider.d.ts.map +0 -0
  163. /package/{components → dist/components}/divider/divider.js +0 -0
  164. /package/{components → dist/components}/divider/divider.js.map +0 -0
  165. /package/{components → dist/components}/divider/divider.types.d.ts +0 -0
  166. /package/{components → dist/components}/divider/divider.types.d.ts.map +0 -0
  167. /package/{components → dist/components}/divider/index.d.ts +0 -0
  168. /package/{components → dist/components}/divider/index.d.ts.map +0 -0
  169. /package/{components → dist/components}/drawer/drawer.d.ts +0 -0
  170. /package/{components → dist/components}/drawer/drawer.d.ts.map +0 -0
  171. /package/{components → dist/components}/drawer/drawer.js +0 -0
  172. /package/{components → dist/components}/drawer/drawer.js.map +0 -0
  173. /package/{components → dist/components}/drawer/drawer.types.d.ts +0 -0
  174. /package/{components → dist/components}/drawer/drawer.types.d.ts.map +0 -0
  175. /package/{components → dist/components}/drawer/index.d.ts +0 -0
  176. /package/{components → dist/components}/drawer/index.d.ts.map +0 -0
  177. /package/{components → dist/components}/dropdown/dropdown.d.ts +0 -0
  178. /package/{components → dist/components}/dropdown/dropdown.d.ts.map +0 -0
  179. /package/{components → dist/components}/dropdown/dropdown.js +0 -0
  180. /package/{components → dist/components}/dropdown/dropdown.js.map +0 -0
  181. /package/{components → dist/components}/dropdown/dropdown.store.d.ts +0 -0
  182. /package/{components → dist/components}/dropdown/dropdown.store.d.ts.map +0 -0
  183. /package/{components → dist/components}/dropdown/dropdown.store.js +0 -0
  184. /package/{components → dist/components}/dropdown/dropdown.store.js.map +0 -0
  185. /package/{components → dist/components}/dropdown/dropdown.types.d.ts +0 -0
  186. /package/{components → dist/components}/dropdown/dropdown.types.d.ts.map +0 -0
  187. /package/{components → dist/components}/dropdown/index.d.ts +0 -0
  188. /package/{components → dist/components}/dropdown/index.d.ts.map +0 -0
  189. /package/{components → dist/components}/float-button/float-button.d.ts +0 -0
  190. /package/{components → dist/components}/float-button/float-button.d.ts.map +0 -0
  191. /package/{components → dist/components}/float-button/float-button.js +0 -0
  192. /package/{components → dist/components}/float-button/float-button.js.map +0 -0
  193. /package/{components → dist/components}/float-button/float-button.types.d.ts +0 -0
  194. /package/{components → dist/components}/float-button/float-button.types.d.ts.map +0 -0
  195. /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts +0 -0
  196. /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts.map +0 -0
  197. /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts +0 -0
  198. /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts.map +0 -0
  199. /package/{components → dist/components}/hover-3d-image/hover-3d-image.js +0 -0
  200. /package/{components → dist/components}/hover-3d-image/hover-3d-image.js.map +0 -0
  201. /package/{components → dist/components}/hover-3d-image/index.d.ts +0 -0
  202. /package/{components → dist/components}/hover-3d-image/index.d.ts.map +0 -0
  203. /package/{components → dist/components}/image-preview/image-preview.d.ts +0 -0
  204. /package/{components → dist/components}/image-preview/image-preview.d.ts.map +0 -0
  205. /package/{components → dist/components}/image-preview/image-preview.js +0 -0
  206. /package/{components → dist/components}/image-preview/image-preview.js.map +0 -0
  207. /package/{components → dist/components}/image-preview/index.d.ts +0 -0
  208. /package/{components → dist/components}/image-preview/index.d.ts.map +0 -0
  209. /package/{components → dist/components}/indicator/index.d.ts +0 -0
  210. /package/{components → dist/components}/indicator/index.d.ts.map +0 -0
  211. /package/{components → dist/components}/indicator/indicator.d.ts +0 -0
  212. /package/{components → dist/components}/indicator/indicator.d.ts.map +0 -0
  213. /package/{components → dist/components}/indicator/indicator.js +0 -0
  214. /package/{components → dist/components}/indicator/indicator.js.map +0 -0
  215. /package/{components → dist/components}/indicator/indicator.types.d.ts +0 -0
  216. /package/{components → dist/components}/indicator/indicator.types.d.ts.map +0 -0
  217. /package/{components → dist/components}/input/input.d.ts +0 -0
  218. /package/{components → dist/components}/input/input.d.ts.map +0 -0
  219. /package/{components → dist/components}/input/input.js +0 -0
  220. /package/{components → dist/components}/input/input.js.map +0 -0
  221. /package/{components → dist/components}/input/input.types.d.ts +0 -0
  222. /package/{components → dist/components}/input/input.types.d.ts.map +0 -0
  223. /package/{components → dist/components}/input/input.utils.d.ts +0 -0
  224. /package/{components → dist/components}/input/input.utils.d.ts.map +0 -0
  225. /package/{components → dist/components}/input/input.utils.js +0 -0
  226. /package/{components → dist/components}/input/input.utils.js.map +0 -0
  227. /package/{components → dist/components}/input/variants/input-color.d.ts +0 -0
  228. /package/{components → dist/components}/input/variants/input-color.d.ts.map +0 -0
  229. /package/{components → dist/components}/input/variants/input-color.js +0 -0
  230. /package/{components → dist/components}/input/variants/input-color.js.map +0 -0
  231. /package/{components → dist/components}/input/variants/input-date.d.ts +0 -0
  232. /package/{components → dist/components}/input/variants/input-date.d.ts.map +0 -0
  233. /package/{components → dist/components}/input/variants/input-date.js +0 -0
  234. /package/{components → dist/components}/input/variants/input-date.js.map +0 -0
  235. /package/{components → dist/components}/input/variants/input-number.d.ts +0 -0
  236. /package/{components → dist/components}/input/variants/input-number.d.ts.map +0 -0
  237. /package/{components → dist/components}/input/variants/input-number.js +0 -0
  238. /package/{components → dist/components}/input/variants/input-number.js.map +0 -0
  239. /package/{components → dist/components}/input/variants/input-otp.d.ts +0 -0
  240. /package/{components → dist/components}/input/variants/input-otp.d.ts.map +0 -0
  241. /package/{components → dist/components}/input/variants/input-otp.js +0 -0
  242. /package/{components → dist/components}/input/variants/input-otp.js.map +0 -0
  243. /package/{components → dist/components}/input/variants/input-password.d.ts +0 -0
  244. /package/{components → dist/components}/input/variants/input-password.d.ts.map +0 -0
  245. /package/{components → dist/components}/input/variants/input-password.js +0 -0
  246. /package/{components → dist/components}/input/variants/input-password.js.map +0 -0
  247. /package/{components → dist/components}/input/variants/input-radio.d.ts +0 -0
  248. /package/{components → dist/components}/input/variants/input-radio.d.ts.map +0 -0
  249. /package/{components → dist/components}/input/variants/input-radio.js +0 -0
  250. /package/{components → dist/components}/input/variants/input-radio.js.map +0 -0
  251. /package/{components → dist/components}/input/variants/input-range.d.ts +0 -0
  252. /package/{components → dist/components}/input/variants/input-range.d.ts.map +0 -0
  253. /package/{components → dist/components}/input/variants/input-range.js +0 -0
  254. /package/{components → dist/components}/input/variants/input-range.js.map +0 -0
  255. /package/{components → dist/components}/input/variants/input-text.d.ts +0 -0
  256. /package/{components → dist/components}/input/variants/input-text.d.ts.map +0 -0
  257. /package/{components → dist/components}/input/variants/input-text.js +0 -0
  258. /package/{components → dist/components}/input/variants/input-text.js.map +0 -0
  259. /package/{components → dist/components}/input/variants/input-textarea.d.ts +0 -0
  260. /package/{components → dist/components}/input/variants/input-textarea.d.ts.map +0 -0
  261. /package/{components → dist/components}/input/variants/input-textarea.js +0 -0
  262. /package/{components → dist/components}/input/variants/input-textarea.js.map +0 -0
  263. /package/{components → dist/components}/loading/index.d.ts +0 -0
  264. /package/{components → dist/components}/loading/index.d.ts.map +0 -0
  265. /package/{components → dist/components}/loading/loading.d.ts +0 -0
  266. /package/{components → dist/components}/loading/loading.d.ts.map +0 -0
  267. /package/{components → dist/components}/loading/loading.js +0 -0
  268. /package/{components → dist/components}/loading/loading.js.map +0 -0
  269. /package/{components → dist/components}/mansory/index.d.ts +0 -0
  270. /package/{components → dist/components}/mansory/index.d.ts.map +0 -0
  271. /package/{components → dist/components}/mansory/mansory.d.ts +0 -0
  272. /package/{components → dist/components}/mansory/mansory.d.ts.map +0 -0
  273. /package/{components → dist/components}/mansory/mansory.js +0 -0
  274. /package/{components → dist/components}/mansory/mansory.js.map +0 -0
  275. /package/{components → dist/components}/mansory/mansory.types.d.ts +0 -0
  276. /package/{components → dist/components}/mansory/mansory.types.d.ts.map +0 -0
  277. /package/{components → dist/components}/menu/menu.d.ts +0 -0
  278. /package/{components → dist/components}/menu/menu.d.ts.map +0 -0
  279. /package/{components → dist/components}/menu/menu.data-example.d.ts +0 -0
  280. /package/{components → dist/components}/menu/menu.data-example.d.ts.map +0 -0
  281. /package/{components → dist/components}/menu/menu.js +0 -0
  282. /package/{components → dist/components}/menu/menu.js.map +0 -0
  283. /package/{components → dist/components}/modal/index.d.ts +0 -0
  284. /package/{components → dist/components}/modal/index.d.ts.map +0 -0
  285. /package/{components → dist/components}/modal/modal.d.ts +0 -0
  286. /package/{components → dist/components}/modal/modal.d.ts.map +0 -0
  287. /package/{components → dist/components}/modal/modal.js +0 -0
  288. /package/{components → dist/components}/modal/modal.js.map +0 -0
  289. /package/{components → dist/components}/modal/modalContext.d.ts +0 -0
  290. /package/{components → dist/components}/modal/modalContext.d.ts.map +0 -0
  291. /package/{components → dist/components}/modal/modalContext.js +0 -0
  292. /package/{components → dist/components}/modal/modalContext.js.map +0 -0
  293. /package/{components → dist/components}/pagination/index.d.ts +0 -0
  294. /package/{components → dist/components}/pagination/index.d.ts.map +0 -0
  295. /package/{components → dist/components}/pagination/pagination.d.ts +0 -0
  296. /package/{components → dist/components}/pagination/pagination.d.ts.map +0 -0
  297. /package/{components → dist/components}/pagination/pagination.js +0 -0
  298. /package/{components → dist/components}/pagination/pagination.js.map +0 -0
  299. /package/{components → dist/components}/pagination/pagination.types.d.ts +0 -0
  300. /package/{components → dist/components}/pagination/pagination.types.d.ts.map +0 -0
  301. /package/{components → dist/components}/progress-bar/index.d.ts +0 -0
  302. /package/{components → dist/components}/progress-bar/index.d.ts.map +0 -0
  303. /package/{components → dist/components}/progress-bar/progress-bar.d.ts +0 -0
  304. /package/{components → dist/components}/progress-bar/progress-bar.d.ts.map +0 -0
  305. /package/{components → dist/components}/progress-bar/progress-bar.js +0 -0
  306. /package/{components → dist/components}/progress-bar/progress-bar.js.map +0 -0
  307. /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts +0 -0
  308. /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts.map +0 -0
  309. /package/{components → dist/components}/qr-code/index.d.ts +0 -0
  310. /package/{components → dist/components}/qr-code/index.d.ts.map +0 -0
  311. /package/{components → dist/components}/qr-code/qr-code.d.ts +0 -0
  312. /package/{components → dist/components}/qr-code/qr-code.d.ts.map +0 -0
  313. /package/{components → dist/components}/qr-code/qr-code.js +0 -0
  314. /package/{components → dist/components}/qr-code/qr-code.js.map +0 -0
  315. /package/{components → dist/components}/qr-code/qr-code.types.d.ts +0 -0
  316. /package/{components → dist/components}/qr-code/qr-code.types.d.ts.map +0 -0
  317. /package/{components → dist/components}/rating/rating.d.ts +0 -0
  318. /package/{components → dist/components}/rating/rating.d.ts.map +0 -0
  319. /package/{components → dist/components}/rating/rating.js +0 -0
  320. /package/{components → dist/components}/rating/rating.js.map +0 -0
  321. /package/{components → dist/components}/rating/rating.types.d.ts +0 -0
  322. /package/{components → dist/components}/rating/rating.types.d.ts.map +0 -0
  323. /package/{components → dist/components}/select/index.d.ts +0 -0
  324. /package/{components → dist/components}/select/index.d.ts.map +0 -0
  325. /package/{components → dist/components}/select/select.d.ts +0 -0
  326. /package/{components → dist/components}/select/select.d.ts.map +0 -0
  327. /package/{components → dist/components}/select/select.js +0 -0
  328. /package/{components → dist/components}/select/select.js.map +0 -0
  329. /package/{components → dist/components}/select/select.types.d.ts +0 -0
  330. /package/{components → dist/components}/select/select.types.d.ts.map +0 -0
  331. /package/{components → dist/components}/select-zone/index.d.ts +0 -0
  332. /package/{components → dist/components}/select-zone/index.d.ts.map +0 -0
  333. /package/{components → dist/components}/select-zone/select-zone.d.ts +0 -0
  334. /package/{components → dist/components}/select-zone/select-zone.d.ts.map +0 -0
  335. /package/{components → dist/components}/select-zone/select-zone.js +0 -0
  336. /package/{components → dist/components}/select-zone/select-zone.js.map +0 -0
  337. /package/{components → dist/components}/select-zone/select-zone.types.d.ts +0 -0
  338. /package/{components → dist/components}/select-zone/select-zone.types.d.ts.map +0 -0
  339. /package/{components → dist/components}/skeleton/index.d.ts +0 -0
  340. /package/{components → dist/components}/skeleton/index.d.ts.map +0 -0
  341. /package/{components → dist/components}/skeleton/skeleton.d.ts +0 -0
  342. /package/{components → dist/components}/skeleton/skeleton.d.ts.map +0 -0
  343. /package/{components → dist/components}/skeleton/skeleton.js +0 -0
  344. /package/{components → dist/components}/skeleton/skeleton.js.map +0 -0
  345. /package/{components → dist/components}/slider/slider.d.ts +0 -0
  346. /package/{components → dist/components}/slider/slider.d.ts.map +0 -0
  347. /package/{components → dist/components}/slider/slider.js +0 -0
  348. /package/{components → dist/components}/slider/slider.js.map +0 -0
  349. /package/{components → dist/components}/slider/slider.types.d.ts +0 -0
  350. /package/{components → dist/components}/slider/slider.types.d.ts.map +0 -0
  351. /package/{components → dist/components}/splitter/index.d.ts +0 -0
  352. /package/{components → dist/components}/splitter/index.d.ts.map +0 -0
  353. /package/{components → dist/components}/splitter/splitter.d.ts +0 -0
  354. /package/{components → dist/components}/splitter/splitter.d.ts.map +0 -0
  355. /package/{components → dist/components}/splitter/splitter.js +0 -0
  356. /package/{components → dist/components}/splitter/splitter.js.map +0 -0
  357. /package/{components → dist/components}/splitter/splitter.types.d.ts +0 -0
  358. /package/{components → dist/components}/splitter/splitter.types.d.ts.map +0 -0
  359. /package/{components → dist/components}/steps/index.d.ts +0 -0
  360. /package/{components → dist/components}/steps/index.d.ts.map +0 -0
  361. /package/{components → dist/components}/steps/steps.d.ts +0 -0
  362. /package/{components → dist/components}/steps/steps.d.ts.map +0 -0
  363. /package/{components → dist/components}/steps/steps.js +0 -0
  364. /package/{components → dist/components}/steps/steps.js.map +0 -0
  365. /package/{components → dist/components}/swap/index.d.ts +0 -0
  366. /package/{components → dist/components}/swap/index.d.ts.map +0 -0
  367. /package/{components → dist/components}/swap/swap.d.ts +0 -0
  368. /package/{components → dist/components}/swap/swap.d.ts.map +0 -0
  369. /package/{components → dist/components}/swap/swap.js +0 -0
  370. /package/{components → dist/components}/swap/swap.js.map +0 -0
  371. /package/{components → dist/components}/switch/index.d.ts +0 -0
  372. /package/{components → dist/components}/switch/index.d.ts.map +0 -0
  373. /package/{components → dist/components}/switch/switch.d.ts +0 -0
  374. /package/{components → dist/components}/switch/switch.d.ts.map +0 -0
  375. /package/{components → dist/components}/switch/switch.js +0 -0
  376. /package/{components → dist/components}/switch/switch.js.map +0 -0
  377. /package/{components → dist/components}/switch/switch.types.d.ts +0 -0
  378. /package/{components → dist/components}/switch/switch.types.d.ts.map +0 -0
  379. /package/{components → dist/components}/tab/index.d.ts +0 -0
  380. /package/{components → dist/components}/tab/index.d.ts.map +0 -0
  381. /package/{components → dist/components}/tab/tab.d.ts +0 -0
  382. /package/{components → dist/components}/tab/tab.d.ts.map +0 -0
  383. /package/{components → dist/components}/tab/tab.js +0 -0
  384. /package/{components → dist/components}/tab/tab.js.map +0 -0
  385. /package/{components → dist/components}/tab/tab.types.d.ts +0 -0
  386. /package/{components → dist/components}/tab/tab.types.d.ts.map +0 -0
  387. /package/{components → dist/components}/table/index.d.ts +0 -0
  388. /package/{components → dist/components}/table/index.d.ts.map +0 -0
  389. /package/{components → dist/components}/table/index.js +0 -0
  390. /package/{components → dist/components}/table/table.d.ts +0 -0
  391. /package/{components → dist/components}/table/table.d.ts.map +0 -0
  392. /package/{components → dist/components}/table/table.js +0 -0
  393. /package/{components → dist/components}/table/table.js.map +0 -0
  394. /package/{components → dist/components}/table/table.types.d.ts +0 -0
  395. /package/{components → dist/components}/table/table.types.d.ts.map +0 -0
  396. /package/{components → dist/components}/text-rotate/index.d.ts +0 -0
  397. /package/{components → dist/components}/text-rotate/index.d.ts.map +0 -0
  398. /package/{components → dist/components}/text-rotate/text-rotate.d.ts +0 -0
  399. /package/{components → dist/components}/text-rotate/text-rotate.d.ts.map +0 -0
  400. /package/{components → dist/components}/text-rotate/text-rotate.js +0 -0
  401. /package/{components → dist/components}/text-rotate/text-rotate.js.map +0 -0
  402. /package/{components → dist/components}/timeline/index.d.ts +0 -0
  403. /package/{components → dist/components}/timeline/index.d.ts.map +0 -0
  404. /package/{components → dist/components}/timeline/timeline.d.ts +0 -0
  405. /package/{components → dist/components}/timeline/timeline.d.ts.map +0 -0
  406. /package/{components → dist/components}/timeline/timeline.js +0 -0
  407. /package/{components → dist/components}/timeline/timeline.js.map +0 -0
  408. /package/{components → dist/components}/timeline/timeline.types.d.ts +0 -0
  409. /package/{components → dist/components}/timeline/timeline.types.d.ts.map +0 -0
  410. /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts +0 -0
  411. /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts.map +0 -0
  412. /package/{components → dist/components}/toast/icons/ErrorIcon.js +0 -0
  413. /package/{components → dist/components}/toast/icons/ErrorIcon.js.map +0 -0
  414. /package/{components → dist/components}/toast/icons/IconCircle.d.ts +0 -0
  415. /package/{components → dist/components}/toast/icons/IconCircle.d.ts.map +0 -0
  416. /package/{components → dist/components}/toast/icons/IconCircle.js +0 -0
  417. /package/{components → dist/components}/toast/icons/IconCircle.js.map +0 -0
  418. /package/{components → dist/components}/toast/icons/InfoIcon.d.ts +0 -0
  419. /package/{components → dist/components}/toast/icons/InfoIcon.d.ts.map +0 -0
  420. /package/{components → dist/components}/toast/icons/InfoIcon.js +0 -0
  421. /package/{components → dist/components}/toast/icons/InfoIcon.js.map +0 -0
  422. /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts +0 -0
  423. /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts.map +0 -0
  424. /package/{components → dist/components}/toast/icons/LoaderIcon.js +0 -0
  425. /package/{components → dist/components}/toast/icons/LoaderIcon.js.map +0 -0
  426. /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts +0 -0
  427. /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts.map +0 -0
  428. /package/{components → dist/components}/toast/icons/SuccessIcon.js +0 -0
  429. /package/{components → dist/components}/toast/icons/SuccessIcon.js.map +0 -0
  430. /package/{components → dist/components}/toast/icons/WarningIcon.d.ts +0 -0
  431. /package/{components → dist/components}/toast/icons/WarningIcon.d.ts.map +0 -0
  432. /package/{components → dist/components}/toast/icons/WarningIcon.js +0 -0
  433. /package/{components → dist/components}/toast/icons/WarningIcon.js.map +0 -0
  434. /package/{components → dist/components}/toast/icons/index.d.ts +0 -0
  435. /package/{components → dist/components}/toast/icons/index.d.ts.map +0 -0
  436. /package/{components → dist/components}/toast/index.d.ts +0 -0
  437. /package/{components → dist/components}/toast/index.d.ts.map +0 -0
  438. /package/{components → dist/components}/toast/toast.d.ts +0 -0
  439. /package/{components → dist/components}/toast/toast.d.ts.map +0 -0
  440. /package/{components → dist/components}/toast/toast.js +0 -0
  441. /package/{components → dist/components}/toast/toast.js.map +0 -0
  442. /package/{components → dist/components}/toast/toast.store.d.ts +0 -0
  443. /package/{components → dist/components}/toast/toast.store.d.ts.map +0 -0
  444. /package/{components → dist/components}/toast/toast.store.js +0 -0
  445. /package/{components → dist/components}/toast/toast.store.js.map +0 -0
  446. /package/{components → dist/components}/toast/toast.type.d.ts +0 -0
  447. /package/{components → dist/components}/toast/toast.type.d.ts.map +0 -0
  448. /package/{components → dist/components}/tooltip/index.d.ts +0 -0
  449. /package/{components → dist/components}/tooltip/index.d.ts.map +0 -0
  450. /package/{components → dist/components}/tooltip/tooltip.d.ts +0 -0
  451. /package/{components → dist/components}/tooltip/tooltip.d.ts.map +0 -0
  452. /package/{components → dist/components}/tooltip/tooltip.js +0 -0
  453. /package/{components → dist/components}/tooltip/tooltip.js.map +0 -0
  454. /package/{components → dist/components}/tooltip/tooltip.types.d.ts +0 -0
  455. /package/{components → dist/components}/tooltip/tooltip.types.d.ts.map +0 -0
  456. /package/{components → dist/components}/tour/index.d.ts +0 -0
  457. /package/{components → dist/components}/tour/index.d.ts.map +0 -0
  458. /package/{components → dist/components}/tour/tour.d.ts +0 -0
  459. /package/{components → dist/components}/tour/tour.types.d.ts +0 -0
  460. /package/{components → dist/components}/tour/tour.types.d.ts.map +0 -0
  461. /package/{components → dist/components}/upload/index.d.ts +0 -0
  462. /package/{components → dist/components}/upload/index.d.ts.map +0 -0
  463. /package/{components → dist/components}/upload/upload.d.ts +0 -0
  464. /package/{components → dist/components}/upload/upload.d.ts.map +0 -0
  465. /package/{components → dist/components}/upload/upload.js +0 -0
  466. /package/{components → dist/components}/upload/upload.js.map +0 -0
  467. /package/{components → dist/components}/upload/upload.types.d.ts +0 -0
  468. /package/{components → dist/components}/upload/upload.types.d.ts.map +0 -0
  469. /package/{components → dist/components}/z-index/index.d.ts +0 -0
  470. /package/{components → dist/components}/z-index/index.d.ts.map +0 -0
  471. /package/{components → dist/components}/z-index/z-index.context.d.ts +0 -0
  472. /package/{components → dist/components}/z-index/z-index.context.d.ts.map +0 -0
  473. /package/{components → dist/components}/z-index/z-index.context.js +0 -0
  474. /package/{components → dist/components}/z-index/z-index.context.js.map +0 -0
  475. /package/{components → dist/components}/z-index/z-index.d.ts +0 -0
  476. /package/{components → dist/components}/z-index/z-index.d.ts.map +0 -0
  477. /package/{components → dist/components}/z-index/z-index.js +0 -0
  478. /package/{components → dist/components}/z-index/z-index.js.map +0 -0
  479. /package/{components → dist/components}/z-index/z-index.store.d.ts +0 -0
  480. /package/{components → dist/components}/z-index/z-index.store.d.ts.map +0 -0
  481. /package/{components → dist/components}/z-index/z-index.store.js +0 -0
  482. /package/{components → dist/components}/z-index/z-index.store.js.map +0 -0
  483. /package/{components → dist/components}/z-index/z-index.types.d.ts +0 -0
  484. /package/{components → dist/components}/z-index/z-index.types.d.ts.map +0 -0
  485. /package/{components → dist/components}/z-index/z-index.types.js +0 -0
  486. /package/{lib.d.ts → dist/lib.d.ts} +0 -0
  487. /package/{lib.d.ts.map → dist/lib.d.ts.map} +0 -0
  488. /package/{lib.js → dist/lib.js} +0 -0
  489. /package/{type.d.ts → dist/type.d.ts} +0 -0
  490. /package/{type.d.ts.map → dist/type.d.ts.map} +0 -0
  491. /package/{utils → dist/utils}/cn.d.ts +0 -0
  492. /package/{utils → dist/utils}/cn.d.ts.map +0 -0
  493. /package/{utils → dist/utils}/cn.js +0 -0
  494. /package/{utils → dist/utils}/cn.js.map +0 -0
  495. /package/{utils → dist/utils}/element-tracker.js +0 -0
  496. /package/{utils → dist/utils}/element-tracker.js.map +0 -0
  497. /package/{utils → dist/utils}/helper.d.ts +0 -0
  498. /package/{utils → dist/utils}/helper.d.ts.map +0 -0
  499. /package/{utils → dist/utils}/helper.js +0 -0
  500. /package/{utils → dist/utils}/helper.js.map +0 -0
  501. /package/{utils → dist/utils}/hoc.js +0 -0
  502. /package/{utils → dist/utils}/hoc.js.map +0 -0
@@ -0,0 +1,411 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Splitter } from 'solid-tom-ui';`
3
+ - **Export**: `Splitter` (main), `Splitter.Panel` (sub-component)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Resizable panel layout — renders two or more panels separated by draggable dividers; supports collapse and programmatic control
6
+
7
+ ---
8
+
9
+ ## Basic Usage
10
+
11
+ The `Splitter` component uses a **compound component** pattern. Always wrap panels with `<Splitter.Panel>`.
12
+
13
+ ```tsx
14
+ // Horizontal (default) — two panels at 40% / 60%
15
+ <div class="h-40">
16
+ <Splitter>
17
+ <Splitter.Panel defaultSize={40}>
18
+ <div>Left</div>
19
+ </Splitter.Panel>
20
+ <Splitter.Panel defaultSize={60}>
21
+ <div>Right</div>
22
+ </Splitter.Panel>
23
+ </Splitter>
24
+ </div>
25
+ ```
26
+
27
+ > **Important:** The `Splitter` container must have an explicit height (or be inside a flex/grid parent with a defined height). Without it, panels will not render correctly.
28
+
29
+ ---
30
+
31
+ ## `Splitter` Props
32
+
33
+ | Prop | Type | Default | Description |
34
+ |---|---|---|---|
35
+ | `vertical` | `boolean` | `false` | Stack panels top-to-bottom instead of left-to-right. Shorthand for `orientation="vertical"`. |
36
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Explicit orientation. Prefer `vertical` shorthand. |
37
+ | `lazy` | `boolean` | `false` | Defer size updates until mouse release. A ghost line shows the target position during drag. |
38
+ | `size` | `number[]` | — | **Controlled mode.** Array of sizes (percent) for each panel. Must provide `onResize` to update. |
39
+ | `color` | `BaseColorProps` | `'primary'` | Color token applied to dragger highlights. |
40
+ | `children` | `JSX.Element` | **required** | Must contain one or more `<Splitter.Panel>`. |
41
+ | `class` | `Partial<Record<'root'\|'panel'\|'dragger'\|'draggerBar'\|'collapseBtn', string>>` | — | Per-slot class overrides. |
42
+ | `onResizeStart` | `(e: ResizeEvent) => void` | — | Fired when drag starts. |
43
+ | `onResize` | `(e: ResizeEvent) => void` | — | Fired on every size change during drag (or on release in lazy mode). |
44
+ | `onResizeEnd` | `(e: ResizeEvent) => void` | — | Fired when drag ends. |
45
+ | `onDraggerDoubleClick` | `(index: number, sizes: number[]) => void` | — | Fired on double-click of a dragger. Use to reset sizes. |
46
+ | `draggerIcon` | `JSX.Element \| (() => JSX.Element)` | — | Custom icon rendered inside the dragger bar. |
47
+
48
+ > **Collapse props are split into two mutually exclusive modes** — see the section below.
49
+
50
+ ### `ResizeEvent`
51
+
52
+ ```ts
53
+ { sizes: number[]; index: number }
54
+ // sizes — current percent sizes of all panels
55
+ // index — dragger index that triggered the event
56
+ ```
57
+
58
+ ### `CollapseEvent`
59
+
60
+ ```ts
61
+ { sizes: number[]; collapsed: boolean[]; index: number }
62
+ // collapsed — boolean array, true means that panel is currently collapsed
63
+ // index — panel index that was toggled
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Collapse Modes (Discriminated Union)
69
+
70
+ `SplitterProps` is a **discriminated union** — you must choose one of two collapse modes. Mixing props from both modes is a TypeScript error.
71
+
72
+ ### Uncontrolled Collapse (default)
73
+
74
+ Splitter manages collapse state internally. Icon buttons and double-click trigger collapse.
75
+
76
+ | Prop | Type | Default | Description |
77
+ |---|---|---|---|
78
+ | `showCollapsibleIcon` | `boolean \| 'auto'` | `'auto'` | `'auto'` = icons visible on hover only. `true` = always visible. `false` = icons hidden (double-click only). |
79
+ | `collapsibleIcon` | `{ collapse?, expand? }` | — | Custom collapse/expand icons. Each accepts `JSX.Element` or a function returning one. |
80
+ | `onCollapse` | `(e: CollapseEvent) => void` | — | Fired when a panel is collapsed or expanded. |
81
+
82
+ ```tsx
83
+ // Uncontrolled: component owns collapse state
84
+ <Splitter showCollapsibleIcon="auto" onCollapse={e => console.log(e.collapsed)}>
85
+ <Splitter.Panel defaultSize={30} collapsible>Sidebar</Splitter.Panel>
86
+ <Splitter.Panel defaultSize={70}>Content</Splitter.Panel>
87
+ </Splitter>
88
+ ```
89
+
90
+ ### Controlled Collapse
91
+
92
+ Caller owns the collapse state. Icon buttons are **disabled entirely** — only the external signal controls which panels are hidden.
93
+
94
+ | Prop | Type | Description |
95
+ |---|---|---|
96
+ | `collapsed` | `boolean[]` | Array of booleans matching panel count. `true` = panel hidden. |
97
+
98
+ > When using `collapsed`, these props are **forbidden** (TypeScript error): `showCollapsibleIcon`, `collapsibleIcon`, `onCollapse`.
99
+
100
+ ```tsx
101
+ const [collapsed, setCollapsed] = createSignal([false, false]);
102
+
103
+ <button onClick={() => setCollapsed(p => [!p[0], p[1]])}>Toggle Sidebar</button>
104
+
105
+ <Splitter collapsed={collapsed()}>
106
+ <Splitter.Panel defaultSize={30}>Sidebar</Splitter.Panel>
107
+ <Splitter.Panel defaultSize={70}>Content</Splitter.Panel>
108
+ </Splitter>
109
+ ```
110
+
111
+ ---
112
+
113
+ ## `Splitter.Panel` Props
114
+
115
+ | Prop | Type | Default | Description |
116
+ |---|---|---|---|
117
+ | `defaultSize` | `number` | auto-distributed | Uncontrolled initial size (percent). |
118
+ | `size` | `number` | — | Controlled size per-panel (rarely used; prefer `Splitter size=[]`). |
119
+ | `min` | `number` | `0` | Minimum size (percent). Panel cannot be dragged below this. |
120
+ | `max` | `number` | `100` | Maximum size (percent). Panel cannot be dragged above this. |
121
+ | `resizable` | `boolean` | `true` | Set to `false` to make this panel's adjacent dragger inert. |
122
+ | `collapsible` | `boolean` | `false` | Allow this panel to be collapsed to zero. Only relevant in uncontrolled mode. |
123
+ | `class` | `string` | — | Extra class on the panel wrapper element. |
124
+ | `children` | `JSX.Element` | — | Panel content. |
125
+
126
+ ---
127
+
128
+ ## Recipes
129
+
130
+ ### Vertical split
131
+
132
+ ```tsx
133
+ <div class="h-48">
134
+ <Splitter vertical>
135
+ <Splitter.Panel defaultSize={40}>
136
+ <div>Top</div>
137
+ </Splitter.Panel>
138
+ <Splitter.Panel defaultSize={60}>
139
+ <div>Bottom</div>
140
+ </Splitter.Panel>
141
+ </Splitter>
142
+ </div>
143
+ ```
144
+
145
+ ### Three panels with min/max constraints
146
+
147
+ ```tsx
148
+ <Splitter>
149
+ <Splitter.Panel defaultSize={25} min={10} max={50}>Left</Splitter.Panel>
150
+ <Splitter.Panel defaultSize={50} min={20}>Center</Splitter.Panel>
151
+ <Splitter.Panel defaultSize={25} min={10} max={50}>Right</Splitter.Panel>
152
+ </Splitter>
153
+ ```
154
+
155
+ ### Lazy mode (ghost line during drag)
156
+
157
+ ```tsx
158
+ <Splitter lazy>
159
+ <Splitter.Panel defaultSize={50}>Left</Splitter.Panel>
160
+ <Splitter.Panel defaultSize={50}>Right</Splitter.Panel>
161
+ </Splitter>
162
+ ```
163
+
164
+ ### Collapsible sidebar (one side)
165
+
166
+ ```tsx
167
+ // Left panel can be collapsed. Collapse icon appears on dragger hover (default 'auto').
168
+ <Splitter>
169
+ <Splitter.Panel defaultSize={30} min={15} collapsible>
170
+ Sidebar
171
+ </Splitter.Panel>
172
+ <Splitter.Panel defaultSize={70}>
173
+ Main Content
174
+ </Splitter.Panel>
175
+ </Splitter>
176
+ ```
177
+
178
+ ### Collapsible both sides — icon always visible
179
+
180
+ ```tsx
181
+ <Splitter showCollapsibleIcon={true}>
182
+ <Splitter.Panel defaultSize={35} min={10} collapsible>Sidebar</Splitter.Panel>
183
+ <Splitter.Panel defaultSize={65} min={10} collapsible>Editor</Splitter.Panel>
184
+ </Splitter>
185
+ ```
186
+
187
+ ### Collapsible — icon hidden (double-click dragger only)
188
+
189
+ ```tsx
190
+ <Splitter showCollapsibleIcon={false}>
191
+ <Splitter.Panel defaultSize={40} min={10} collapsible>Panel A</Splitter.Panel>
192
+ <Splitter.Panel defaultSize={60} min={10} collapsible>Panel B</Splitter.Panel>
193
+ </Splitter>
194
+ ```
195
+
196
+ ### Non-resizable panel
197
+
198
+ ```tsx
199
+ // Right panel is fixed; its adjacent dragger is disabled
200
+ <Splitter>
201
+ <Splitter.Panel defaultSize={70}>Main</Splitter.Panel>
202
+ <Splitter.Panel defaultSize={30} resizable={false}>Fixed sidebar</Splitter.Panel>
203
+ </Splitter>
204
+ ```
205
+
206
+ ### Controlled size
207
+
208
+ ```tsx
209
+ const [sizes, setSizes] = createSignal([40, 60]);
210
+
211
+ <Splitter size={sizes()} onResize={e => setSizes(e.sizes)}>
212
+ <Splitter.Panel>
213
+ <div>Left {sizes()[0].toFixed(0)}%</div>
214
+ </Splitter.Panel>
215
+ <Splitter.Panel>
216
+ <div>Right {sizes()[1].toFixed(0)}%</div>
217
+ </Splitter.Panel>
218
+ </Splitter>
219
+ ```
220
+
221
+ ### Double-click dragger to reset sizes
222
+
223
+ ```tsx
224
+ const [sizes, setSizes] = createSignal([50, 50]);
225
+
226
+ <Splitter
227
+ size={sizes()}
228
+ onResize={e => setSizes(e.sizes)}
229
+ onDraggerDoubleClick={() => setSizes([50, 50])}
230
+ >
231
+ <Splitter.Panel><div>{sizes()[0].toFixed(0)}%</div></Splitter.Panel>
232
+ <Splitter.Panel><div>{sizes()[1].toFixed(0)}%</div></Splitter.Panel>
233
+ </Splitter>
234
+ ```
235
+
236
+ ### Controlled collapse — toggle panels from outside
237
+
238
+ ```tsx
239
+ const [collapsed, setCollapsed] = createSignal([false, false, false]);
240
+
241
+ const toggle = (idx: number) =>
242
+ setCollapsed(prev => prev.map((v, i) => (i === idx ? !v : v)));
243
+
244
+ // Toolbar buttons control visibility — no icons shown on dragger
245
+ <div class="flex gap-2">
246
+ <button class="btn btn-xs" onClick={() => toggle(0)}>Toggle Sidebar</button>
247
+ <button class="btn btn-xs" onClick={() => toggle(2)}>Toggle Inspector</button>
248
+ </div>
249
+
250
+ <Splitter collapsed={collapsed()}>
251
+ <Splitter.Panel defaultSize={25} min={10}>Left Sidebar</Splitter.Panel>
252
+ <Splitter.Panel defaultSize={50} min={20}>Main Editor</Splitter.Panel>
253
+ <Splitter.Panel defaultSize={25} min={10}>Right Inspector</Splitter.Panel>
254
+ </Splitter>
255
+ ```
256
+
257
+ ### Controlled collapse — vertical layout
258
+
259
+ ```tsx
260
+ const [collapsed, setCollapsed] = createSignal([false, false, false]);
261
+
262
+ <Splitter vertical collapsed={collapsed()}>
263
+ <Splitter.Panel defaultSize={20} min={10}>Header</Splitter.Panel>
264
+ <Splitter.Panel defaultSize={60} min={20}>Content</Splitter.Panel>
265
+ <Splitter.Panel defaultSize={20} min={10}>Footer</Splitter.Panel>
266
+ </Splitter>
267
+ ```
268
+
269
+ ### Nested splitters — IDE layout (controlled collapse)
270
+
271
+ ```tsx
272
+ const [outerCollapsed, setOuterCollapsed] = createSignal([false, false, false]);
273
+ const [innerCollapsed, setInnerCollapsed] = createSignal([false, false]);
274
+
275
+ <div class="h-72">
276
+ <Splitter collapsed={outerCollapsed()}>
277
+ {/* Left sidebar */}
278
+ <Splitter.Panel defaultSize={22} min={10}>
279
+ File Tree
280
+ </Splitter.Panel>
281
+
282
+ {/* Center: editor + terminal stacked vertically */}
283
+ <Splitter.Panel defaultSize={56} min={20}>
284
+ <Splitter vertical collapsed={innerCollapsed()}>
285
+ <Splitter.Panel defaultSize={65} min={20}>Editor</Splitter.Panel>
286
+ <Splitter.Panel defaultSize={35} min={10}>Terminal</Splitter.Panel>
287
+ </Splitter>
288
+ </Splitter.Panel>
289
+
290
+ {/* Right inspector */}
291
+ <Splitter.Panel defaultSize={22} min={10}>
292
+ Inspector
293
+ </Splitter.Panel>
294
+ </Splitter>
295
+ </div>
296
+ ```
297
+
298
+ ### Nested splitters — IDE layout (uncontrolled collapse)
299
+
300
+ ```tsx
301
+ <div class="h-72">
302
+ <Splitter showCollapsibleIcon="auto">
303
+ <Splitter.Panel defaultSize={22} min={10} collapsible>
304
+ File Tree
305
+ </Splitter.Panel>
306
+ <Splitter.Panel defaultSize={56} min={20}>
307
+ <Splitter vertical>
308
+ <Splitter.Panel defaultSize={65} min={20}>Editor</Splitter.Panel>
309
+ <Splitter.Panel defaultSize={35} min={10} collapsible>Terminal</Splitter.Panel>
310
+ </Splitter>
311
+ </Splitter.Panel>
312
+ <Splitter.Panel defaultSize={22} min={10} collapsible>
313
+ Inspector
314
+ </Splitter.Panel>
315
+ </Splitter>
316
+ </div>
317
+ ```
318
+
319
+ ### Three collapsible panels (always-visible icons)
320
+
321
+ ```tsx
322
+ <Splitter showCollapsibleIcon={true}>
323
+ <Splitter.Panel defaultSize={25} min={10} collapsible>Left Sidebar</Splitter.Panel>
324
+ <Splitter.Panel defaultSize={50} min={20}>Main Editor</Splitter.Panel>
325
+ <Splitter.Panel defaultSize={25} min={10} collapsible>Right Panel</Splitter.Panel>
326
+ </Splitter>
327
+ ```
328
+
329
+ ### Vertical collapsible panels
330
+
331
+ ```tsx
332
+ <div class="h-64">
333
+ <Splitter vertical showCollapsibleIcon={true}>
334
+ <Splitter.Panel defaultSize={30} min={10} collapsible>Header</Splitter.Panel>
335
+ <Splitter.Panel defaultSize={45} min={20}>Content</Splitter.Panel>
336
+ <Splitter.Panel defaultSize={25} min={10} collapsible>Footer</Splitter.Panel>
337
+ </Splitter>
338
+ </div>
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Collapse Behavior
344
+
345
+ - A panel marked `collapsible` collapses to **zero size**; its neighbor absorbs the freed space.
346
+ - The previously occupied size is saved internally and restored on expand.
347
+ - In **uncontrolled mode**: collapse is triggered via the icon button **or** by double-clicking the adjacent dragger.
348
+ - In **controlled mode**: collapse is driven entirely by the `collapsed` prop — no icon buttons appear.
349
+ - The `showCollapsibleIcon` prop controls icon visibility (uncontrolled only):
350
+ - `'auto'` (default) — icons appear on dragger hover only.
351
+ - `true` — icons always visible.
352
+ - `false` — icons hidden entirely; only double-click collapses.
353
+ - `onCollapse` fires on both collapse and expand (uncontrolled only), providing the full updated `CollapseEvent`.
354
+
355
+ ---
356
+
357
+ ## Size Calculation Rules
358
+
359
+ - When all panels have `defaultSize`, values are **normalized** to sum to 100%.
360
+ - Example: `defaultSize={40}` + `defaultSize={60}` → 40% + 60% (already sums to 100, no change).
361
+ - Example: `defaultSize={2}` + `defaultSize={3}` → 40% + 60% (normalized).
362
+ - When some panels omit `defaultSize`, the remaining percentage after defined sizes is split equally among them.
363
+ - In **controlled size mode** (`size` prop), always keep `size.length === number of panels`. Mismatches are silently ignored.
364
+ - In **controlled collapse mode** (`collapsed` prop), always keep `collapsed.length === number of panels`.
365
+
366
+ ---
367
+
368
+ ## Class Override Slots
369
+
370
+ Use the `class` prop (object) to target individual elements:
371
+
372
+ ```tsx
373
+ <Splitter
374
+ class={{
375
+ root: 'rounded-xl overflow-hidden',
376
+ panel: 'bg-base-100',
377
+ dragger: 'bg-base-300 hover:bg-primary/30',
378
+ collapseBtn: 'text-primary',
379
+ }}
380
+ >
381
+ ...
382
+ </Splitter>
383
+ ```
384
+
385
+ Available slots: `root` · `panel` · `dragger` · `draggerBar` · `collapseBtn`.
386
+
387
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `sp01`, `sp02`) per project convention.
388
+
389
+ ---
390
+
391
+ ## Architecture Note
392
+
393
+ `Splitter.Panel` does **not** render anything itself — it only registers its props into a `PanelRegistryContext`. The parent `Splitter` reads the registry with `<For>` and renders the actual panel `<div>` elements and draggers. This means panel children are rendered inside `Splitter`, not at the `Panel` call site.
394
+
395
+ ---
396
+
397
+ ## Common Mistakes
398
+
399
+ | Mistake | Fix |
400
+ |---|---|
401
+ | Container has no height | Add explicit `h-*` or ensure parent has a defined height |
402
+ | Controlled `size` array length doesn't match panel count | Keep `size.length === panels.length` |
403
+ | Controlled `collapsed` array length doesn't match panel count | Keep `collapsed.length === panels.length` |
404
+ | Using `showCollapsibleIcon` with `collapsed` prop | TypeScript error — choose one mode; controlled collapse disables icon buttons entirely |
405
+ | Collapsible works but icon never shows | Default `showCollapsibleIcon` is `'auto'` — hover the dragger to reveal |
406
+ | Panel snaps back after drag | Controlled size mode: wire `onResize` to update the signal |
407
+ | `min` seems to prevent collapse | `collapsible` overrides `min` — collapsed panels go to 0 regardless of `min` |
408
+ | Nested Splitter has wrong height | Inner `Splitter.Panel` needs `h-full` or the nested Splitter won't fill its panel |
409
+ | `onCollapse` not firing | Only available in uncontrolled mode — not available when `collapsed` prop is used |
410
+
411
+ > **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.
@@ -0,0 +1,264 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Steps } from 'solid-tom-ui';`
3
+ - **Export**: `Steps` (named export), `StepsProps`, `StepItem` (type exports)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Multi-step progress indicator — three visual types, two orientations, full color theming, disabled steps; always controlled (parent owns step index)
6
+
7
+ ## Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ | ------------- | --------------------------------------------- | -------------- | ------------------------------------------------------------------------ |
11
+ | `type` | `'default' \| 'navigation' \| 'dot'` | `'default'` | Visual style of the steps |
12
+ | `color` | `BaseColorProps` | `'primary'` | Accent color for active/done steps and connectors |
13
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout direction |
14
+ | `items` | `StepItem[]` | `[]` | Step definitions. Takes priority over `total` |
15
+ | `total` | `number` | — | Auto-generates `total` numbered steps (`Step 1`, `Step 2`, …). Used only when `items` is empty |
16
+ | `current` | `Accessor<number>` | — | **Signal getter** for the active step index (0-based) |
17
+ | `setCurrent` | `Setter<number>` | — | **Signal setter** — called when a step is clicked |
18
+ | `onChange` | `(index: number) => void` | — | Additional callback fired on step click, after `setCurrent` |
19
+ | `disabled` | `number[]` | `[]` | Indices of steps that cannot be clicked |
20
+ | `activeIndex` | `number[]` | — | Force specific step indices to `active` status, regardless of `current` |
21
+ | `class` | `{ root?, step?, icon?, title?, description?, connector? }` | — | Per-element class overrides (see below) |
22
+
23
+ ### `StepItem`
24
+
25
+ ```ts
26
+ type StepItem = {
27
+ title?: JSX.Element; // Step label
28
+ description?: JSX.Element; // Subtitle/detail text
29
+ icon?: JSX.Element; // Custom icon (replaces the number; checkmark still shows for done)
30
+ };
31
+ ```
32
+
33
+ ### `class` Object
34
+
35
+ All keys are optional strings appended via `cn()`:
36
+
37
+ | Key | Target element |
38
+ | ------------- | ------------------------------------------- |
39
+ | `root` | The outermost container `<div>` |
40
+ | `step` | Each individual step `<div>` |
41
+ | `icon` | The icon circle / dot element |
42
+ | `title` | The step title `<div>` |
43
+ | `description` | The step description `<div>` |
44
+ | `connector` | The connector line between steps |
45
+
46
+ ## Step Status
47
+
48
+ Each step's appearance is determined by its `StepStatus`:
49
+
50
+ | Status | Condition |
51
+ | ---------- | ------------------------------------------------------------------------- |
52
+ | `active` | Index equals `current`, or index is in `activeIndex` |
53
+ | `done` | Index is less than `current` (and not disabled / not in `activeIndex`) |
54
+ | `upcoming` | Index is greater than `current` |
55
+ | `disabled` | Index is in `disabled[]` — overrides all other statuses |
56
+
57
+ ## Visual Types
58
+
59
+ ### `type="default"` (Default)
60
+
61
+ Classic step indicator with circular icon badges and connecting lines.
62
+
63
+ - **Horizontal**: icons in a row, connectors are flex siblings between them, content labels appear below via `position: absolute`
64
+ - **Vertical**: icons in a left column with vertical connectors, content to the right
65
+ - Icon states: upcoming = outline circle with number; done = filled circle with checkmark; active = outline circle with color ring
66
+ - Provides a custom `icon` in `StepItem` to replace the number (checkmark still appears for `done` steps without a custom icon)
67
+
68
+ ### `type="navigation"`
69
+
70
+ Pill-breadcrumb strip, suitable for page-level navigation headers.
71
+
72
+ - **Horizontal**: pills in a row separated by `›` arrow icons
73
+ - **Vertical**: a stacked list with a colored left-border rail on the active item
74
+ - Active step gets a white card with a subtle shadow; done steps show colored text
75
+ - More compact icon badge (24px vs 32px in `default`)
76
+
77
+ ### `type="dot"`
78
+
79
+ Minimal dot indicators with optional labels, ideal for carousels or simple progress.
80
+
81
+ - **Horizontal**: small dots connected by thin lines, content below via `position: absolute`
82
+ - **Vertical**: dots in a left column with connectors, content to the right
83
+ - Active dot scales up (`1.6×`) with a color ring; done dot fills solid
84
+
85
+ ## Usage Examples
86
+
87
+ ### Basic controlled steps
88
+
89
+ ```tsx
90
+ import { createSignal } from 'solid-js';
91
+ import { Steps } from 'solid-tom-ui';
92
+
93
+ const [current, setCurrent] = createSignal(0);
94
+
95
+ const items = [
96
+ { title: 'Cart', description: 'Review items' },
97
+ { title: 'Shipping', description: 'Enter address' },
98
+ { title: 'Payment', description: 'Choose method' },
99
+ { title: 'Confirm', description: 'Complete order' },
100
+ ];
101
+
102
+ <Steps
103
+ type="default"
104
+ color="primary"
105
+ items={items}
106
+ current={current} // signal getter — NOT current()
107
+ setCurrent={setCurrent} // signal setter
108
+ />
109
+
110
+ {/* External navigation */}
111
+ <button onClick={() => setCurrent(v => v - 1)} disabled={current() === 0}>Back</button>
112
+ <button onClick={() => setCurrent(v => v + 1)} disabled={current() === items.length - 1}>Next</button>
113
+ ```
114
+
115
+ ### Navigation type
116
+
117
+ ```tsx
118
+ <Steps
119
+ type="navigation"
120
+ color="success"
121
+ orientation="horizontal"
122
+ items={items}
123
+ current={current}
124
+ setCurrent={setCurrent}
125
+ />
126
+ ```
127
+
128
+ ### Dot type, vertical
129
+
130
+ ```tsx
131
+ <Steps
132
+ type="dot"
133
+ color="info"
134
+ orientation="vertical"
135
+ items={items}
136
+ current={current}
137
+ setCurrent={setCurrent}
138
+ />
139
+ ```
140
+
141
+ ### Using `total` instead of `items`
142
+
143
+ Generates numbered steps automatically (`Step 1`, `Step 2`, …):
144
+
145
+ ```tsx
146
+ <Steps
147
+ type="default"
148
+ color="accent"
149
+ total={5}
150
+ current={current}
151
+ setCurrent={setCurrent}
152
+ />
153
+ ```
154
+
155
+ ### Disabled steps
156
+
157
+ ```tsx
158
+ {/* Steps at index 1 and 2 cannot be clicked */}
159
+ <Steps
160
+ type="default"
161
+ color="error"
162
+ items={items}
163
+ current={current}
164
+ setCurrent={setCurrent}
165
+ disabled={[1, 2]}
166
+ />
167
+ ```
168
+
169
+ ### Custom icon per step
170
+
171
+ ```tsx
172
+ import UserIcon from 'lucide-solid/icons/user';
173
+ import CreditCardIcon from 'lucide-solid/icons/credit-card';
174
+
175
+ const items = [
176
+ { title: 'Profile', icon: <UserIcon size={16} /> },
177
+ { title: 'Billing', icon: <CreditCardIcon size={16} /> },
178
+ { title: 'Confirm' },
179
+ ];
180
+ ```
181
+
182
+ > When a step has a custom `icon`, the icon always renders (even when `done`). Only steps **without** a custom icon show the checkmark when `done`.
183
+
184
+ ### `activeIndex` — force steps to active
185
+
186
+ ```tsx
187
+ {/* Steps 0 and 2 are always shown as active, regardless of current */}
188
+ <Steps
189
+ items={items}
190
+ current={current}
191
+ setCurrent={setCurrent}
192
+ activeIndex={[0, 2]}
193
+ />
194
+ ```
195
+
196
+ ### `onChange` callback
197
+
198
+ ```tsx
199
+ <Steps
200
+ items={items}
201
+ current={current}
202
+ setCurrent={setCurrent}
203
+ onChange={index => console.log('Navigated to step', index)}
204
+ />
205
+ ```
206
+
207
+ ### Class customization
208
+
209
+ ```tsx
210
+ <Steps
211
+ type="default"
212
+ color="primary"
213
+ items={items}
214
+ current={current}
215
+ setCurrent={setCurrent}
216
+ class={{
217
+ root: 'bg-base-200 rounded-xl p-4',
218
+ step: 'opacity-80 hover:opacity-100 transition-opacity',
219
+ title: 'text-xs uppercase tracking-wide',
220
+ icon: 'shadow-md',
221
+ connector: 'opacity-50',
222
+ }}
223
+ />
224
+ ```
225
+
226
+ ## Critical: `current` Must Be a Signal Getter
227
+
228
+ The `current` prop is typed as `Accessor<number>` — it must be the signal **getter function**, not the evaluated value:
229
+
230
+ ```tsx
231
+ const [step, setStep] = createSignal(0);
232
+
233
+ // ✅ Correct
234
+ <Steps current={step} setCurrent={setStep} ... />
235
+
236
+ // ❌ Wrong — passes a static number, component won't react to changes
237
+ <Steps current={step()} setCurrent={setStep} ... />
238
+ ```
239
+
240
+ ## Connector Animation
241
+
242
+ Both `default` and `dot` types animate their connectors:
243
+
244
+ - **Horizontal**: connector is a `flex` sibling element (not a child of the step). Its `::after` pseudo-element scales from 0 to 1 on the X axis when the connector element has `sui-step-done` or `sui-step-active` class.
245
+ - **Vertical**: connector is a child inside the icon column. Its `::after` pseudo-element scales from 0 to 1 on the Y axis via a descendant selector on the parent step's status class.
246
+
247
+ This is relevant when using `class.connector` overrides — only target the connector's base style, not `::after`.
248
+
249
+ ## Common Mistakes
250
+
251
+ | Mistake | Fix |
252
+ | --- | --- |
253
+ | `current={step()}` | Pass the getter: `current={step}` |
254
+ | Expecting `items` and `total` to merge | `items` takes full priority when non-empty — use one or the other |
255
+ | Passing `class="..."` as a string | `class` is an object: `class={{ root: '...' }}` |
256
+ | Custom `icon` not showing for `done` steps | Custom icons always render for done steps — only icon-less steps show a checkmark |
257
+ | `disabled` not blocking navigation | `disabled` blocks `onClick` on the step itself, but not external `setCurrent` calls — validate in your own handler if needed |
258
+ ---
259
+
260
+ ## Component Conventions
261
+
262
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `st01`, `st02`) per project convention.
263
+
264
+ > **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.