solid-tom-ui 1.0.7 → 1.0.10

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 (568) hide show
  1. package/README.md +246 -246
  2. package/dist/README.md +246 -0
  3. package/dist/components/avatar/avatar.js.map +1 -0
  4. package/dist/components/avatar/index.d.ts +3 -0
  5. package/{components → dist/components}/avatar/index.d.ts.map +1 -1
  6. package/dist/components/badge/badge.js.map +1 -0
  7. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  8. package/dist/components/button/button.js.map +1 -0
  9. package/dist/components/button/index.d.ts +3 -0
  10. package/{components → dist/components}/button/index.d.ts.map +1 -1
  11. package/dist/components/carousel/carousel.js.map +1 -0
  12. package/dist/components/chat-bubble/chatBubble.js.map +1 -0
  13. package/dist/components/checkbox/checkbox.js.map +1 -0
  14. package/dist/components/collapse/collapse.js.map +1 -0
  15. package/dist/components/collapse/index.d.ts +3 -0
  16. package/{components → dist/components}/collapse/index.d.ts.map +1 -1
  17. package/dist/components/context-menu/context-menu.js.map +1 -0
  18. package/dist/components/context-menu/context-menu.store.js.map +1 -0
  19. package/dist/components/divider/divider.js.map +1 -0
  20. package/dist/components/dropdown/dropdown.js.map +1 -0
  21. package/dist/components/dropdown/dropdown.store.js.map +1 -0
  22. package/dist/components/float-button/float-button.js.map +1 -0
  23. package/dist/components/float-button/index.d.ts +3 -0
  24. package/{components → dist/components}/float-button/index.d.ts.map +1 -1
  25. package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -0
  26. package/dist/components/image-preview/image-preview.js.map +1 -0
  27. package/dist/components/input/index.d.ts +3 -0
  28. package/dist/components/input/index.d.ts.map +1 -0
  29. package/dist/components/input/input.js.map +1 -0
  30. package/dist/components/input/input.utils.js.map +1 -0
  31. package/dist/components/input/variants/input-color.js.map +1 -0
  32. package/dist/components/input/variants/input-date.js.map +1 -0
  33. package/dist/components/input/variants/input-number.js.map +1 -0
  34. package/dist/components/input/variants/input-otp.js.map +1 -0
  35. package/dist/components/input/variants/input-password.js.map +1 -0
  36. package/dist/components/input/variants/input-radio.js.map +1 -0
  37. package/dist/components/input/variants/input-range.js.map +1 -0
  38. package/dist/components/input/variants/input-text.js.map +1 -0
  39. package/dist/components/input/variants/input-textarea.js.map +1 -0
  40. package/dist/components/loading/loading.js.map +1 -0
  41. package/dist/components/mansory/mansory.js.map +1 -0
  42. package/dist/components/menu/index.d.ts +4 -0
  43. package/{components → dist/components}/menu/index.d.ts.map +1 -1
  44. package/dist/components/menu/menu.js.map +1 -0
  45. package/{components → dist/components}/menu/menu.types.d.ts +7 -7
  46. package/{components → dist/components}/menu/menu.types.d.ts.map +1 -1
  47. package/dist/components/modal/modal.js.map +1 -0
  48. package/dist/components/modal/modalContext.js.map +1 -0
  49. package/dist/components/pagination/pagination.js.map +1 -0
  50. package/dist/components/progress-bar/progress-bar.js.map +1 -0
  51. package/dist/components/qr-code/qr-code.js.map +1 -0
  52. package/dist/components/rating/index.d.ts +3 -0
  53. package/{components → dist/components}/rating/index.d.ts.map +1 -1
  54. package/dist/components/select/select.js.map +1 -0
  55. package/dist/components/select-zone/select-zone.js.map +1 -0
  56. package/dist/components/skeleton/skeleton.js.map +1 -0
  57. package/dist/components/slider/index.d.ts +3 -0
  58. package/{components → dist/components}/slider/index.d.ts.map +1 -1
  59. package/dist/components/slider/slider.js.map +1 -0
  60. package/dist/components/splitter/splitter.js.map +1 -0
  61. package/dist/components/steps/steps.js.map +1 -0
  62. package/dist/components/swap/swap.js.map +1 -0
  63. package/dist/components/switch/switch.js.map +1 -0
  64. package/dist/components/tab/tab.js.map +1 -0
  65. package/dist/components/table/table.js.map +1 -0
  66. package/dist/components/timeline/timeline.js.map +1 -0
  67. package/dist/components/toast/icons/ErrorIcon.js.map +1 -0
  68. package/dist/components/toast/icons/IconCircle.js.map +1 -0
  69. package/dist/components/toast/icons/InfoIcon.js.map +1 -0
  70. package/dist/components/toast/icons/LoaderIcon.js.map +1 -0
  71. package/dist/components/toast/icons/SuccessIcon.js.map +1 -0
  72. package/dist/components/toast/icons/WarningIcon.js.map +1 -0
  73. package/dist/components/toast/toast.js.map +1 -0
  74. package/dist/components/toast/toast.store.js.map +1 -0
  75. package/dist/components/tooltip/tooltip.js.map +1 -0
  76. package/{components → dist/components}/tour/tour.d.ts.map +1 -1
  77. package/{components → dist/components}/tour/tour.js +1 -1
  78. package/dist/components/tour/tour.js.map +1 -0
  79. package/dist/components/upload/upload.js.map +1 -0
  80. package/dist/components/z-index/z-index.context.js.map +1 -0
  81. package/dist/components/z-index/z-index.js.map +1 -0
  82. package/dist/components/z-index/z-index.store.js.map +1 -0
  83. package/dist/components/z-index/z-index.types.js.map +1 -0
  84. package/dist/package.json +45 -0
  85. package/dist/skill/avatar.skill.md.txt +255 -0
  86. package/dist/skill/badge.skill.md.txt +223 -0
  87. package/dist/skill/blank.skill.md.txt +0 -0
  88. package/dist/skill/breadcrumb.skill.md.txt +177 -0
  89. package/dist/skill/button.skill.md.txt +198 -0
  90. package/dist/skill/carousel.skill.md.txt +406 -0
  91. package/dist/skill/chat-bubble.skill.md.txt +342 -0
  92. package/dist/skill/checkbox.skill.md.txt +326 -0
  93. package/dist/skill/code-preview.skill.md.txt +240 -0
  94. package/dist/skill/collapse.skill.md.txt +329 -0
  95. package/dist/skill/context-menu.skill.md.txt +233 -0
  96. package/dist/skill/diff.skill.md.txt +244 -0
  97. package/dist/skill/divider.skill.md.txt +151 -0
  98. package/dist/skill/doc.skill.md.txt +191 -0
  99. package/dist/skill/drawer.skill.md.txt +157 -0
  100. package/dist/skill/dropdown.skill.md.txt +198 -0
  101. package/dist/skill/float-button.skill.md.txt +315 -0
  102. package/dist/skill/hover-3d-image.skill.md.txt +120 -0
  103. package/dist/skill/iframe.skill.md.txt +114 -0
  104. package/dist/skill/image-preview.skill.md.txt +162 -0
  105. package/dist/skill/indicator.skill.md.txt +60 -0
  106. package/dist/skill/input.skill.md.txt +489 -0
  107. package/dist/skill/loading.skill.md.txt +127 -0
  108. package/dist/skill/mansory.skill.md.txt +0 -0
  109. package/dist/skill/menu.skill.md.txt +476 -0
  110. package/dist/skill/modal.skill.md.txt +359 -0
  111. package/dist/skill/pagination.skill.md.txt +405 -0
  112. package/dist/skill/progress-bar.skill.md.txt +207 -0
  113. package/dist/skill/qr-code.skill.md.txt +136 -0
  114. package/dist/skill/rating.skill.md.txt +167 -0
  115. package/dist/skill/select-zone.skill.md.txt +93 -0
  116. package/dist/skill/select.skill.md.txt +663 -0
  117. package/dist/skill/skeleton.skill.md.txt +192 -0
  118. package/dist/skill/slider.skill.md.txt +404 -0
  119. package/dist/skill/splitter.skill.md.txt +411 -0
  120. package/dist/skill/steps.skill.md.txt +264 -0
  121. package/dist/skill/swap.skill.md.txt +139 -0
  122. package/dist/skill/switch.skill.md.txt +191 -0
  123. package/dist/skill/tab.skill.md.txt +484 -0
  124. package/dist/skill/table.example.header.md.txt +667 -0
  125. package/dist/skill/table.skill.md.txt +1407 -0
  126. package/dist/skill/text-rotate.skill.md.txt +186 -0
  127. package/dist/skill/timeline.skill.md.txt +247 -0
  128. package/dist/skill/toast.skill.md.txt +531 -0
  129. package/dist/skill/tooltip.skill.md.txt +222 -0
  130. package/dist/skill/tour.skill.md.txt +156 -0
  131. package/dist/skill/upload.skill.md.txt +358 -0
  132. package/dist/skill/z-index.skill.md.txt +0 -0
  133. package/{solid-ui.css → dist/solid-ui.css} +2 -2
  134. package/dist/utils/cn.js.map +1 -0
  135. package/dist/utils/element-tracker.js.map +1 -0
  136. package/dist/utils/helper.js.map +1 -0
  137. package/dist/utils/hoc.js.map +1 -0
  138. package/package.json +101 -7
  139. package/components/avatar/avatar.js.map +0 -1
  140. package/components/avatar/index.d.ts +0 -2
  141. package/components/badge/badge.js.map +0 -1
  142. package/components/breadcrumb/breadcrumb.js.map +0 -1
  143. package/components/button/button.js.map +0 -1
  144. package/components/button/index.d.ts +0 -2
  145. package/components/carousel/carousel.js.map +0 -1
  146. package/components/chat-bubble/chatBubble.js.map +0 -1
  147. package/components/checkbox/checkbox.js.map +0 -1
  148. package/components/collapse/collapse.js.map +0 -1
  149. package/components/collapse/index.d.ts +0 -2
  150. package/components/context-menu/context-menu.js.map +0 -1
  151. package/components/context-menu/context-menu.store.js.map +0 -1
  152. package/components/divider/divider.js.map +0 -1
  153. package/components/dropdown/dropdown.js.map +0 -1
  154. package/components/dropdown/dropdown.store.js.map +0 -1
  155. package/components/float-button/float-button.js.map +0 -1
  156. package/components/float-button/index.d.ts +0 -2
  157. package/components/hover-3d-image/hover-3d-image.js.map +0 -1
  158. package/components/image-preview/image-preview.js.map +0 -1
  159. package/components/input/index.d.ts +0 -2
  160. package/components/input/index.d.ts.map +0 -1
  161. package/components/input/input.js.map +0 -1
  162. package/components/input/input.utils.js.map +0 -1
  163. package/components/input/variants/input-color.js.map +0 -1
  164. package/components/input/variants/input-date.js.map +0 -1
  165. package/components/input/variants/input-number.js.map +0 -1
  166. package/components/input/variants/input-otp.js.map +0 -1
  167. package/components/input/variants/input-password.js.map +0 -1
  168. package/components/input/variants/input-radio.js.map +0 -1
  169. package/components/input/variants/input-range.js.map +0 -1
  170. package/components/input/variants/input-text.js.map +0 -1
  171. package/components/input/variants/input-textarea.js.map +0 -1
  172. package/components/loading/loading.js.map +0 -1
  173. package/components/mansory/mansory.js.map +0 -1
  174. package/components/menu/index.d.ts +0 -4
  175. package/components/menu/menu.js.map +0 -1
  176. package/components/modal/modal.js.map +0 -1
  177. package/components/modal/modalContext.js.map +0 -1
  178. package/components/pagination/pagination.js.map +0 -1
  179. package/components/progress-bar/progress-bar.js.map +0 -1
  180. package/components/qr-code/qr-code.js.map +0 -1
  181. package/components/rating/index.d.ts +0 -2
  182. package/components/select/select.js.map +0 -1
  183. package/components/select-zone/select-zone.js.map +0 -1
  184. package/components/skeleton/skeleton.js.map +0 -1
  185. package/components/slider/index.d.ts +0 -2
  186. package/components/slider/slider.js.map +0 -1
  187. package/components/splitter/splitter.js.map +0 -1
  188. package/components/steps/steps.js.map +0 -1
  189. package/components/swap/swap.js.map +0 -1
  190. package/components/switch/switch.js.map +0 -1
  191. package/components/tab/tab.js.map +0 -1
  192. package/components/table/table.js.map +0 -1
  193. package/components/timeline/timeline.js.map +0 -1
  194. package/components/toast/icons/ErrorIcon.js.map +0 -1
  195. package/components/toast/icons/IconCircle.js.map +0 -1
  196. package/components/toast/icons/InfoIcon.js.map +0 -1
  197. package/components/toast/icons/LoaderIcon.js.map +0 -1
  198. package/components/toast/icons/SuccessIcon.js.map +0 -1
  199. package/components/toast/icons/WarningIcon.js.map +0 -1
  200. package/components/toast/toast.js.map +0 -1
  201. package/components/toast/toast.store.js.map +0 -1
  202. package/components/tooltip/tooltip.js.map +0 -1
  203. package/components/tour/tour.js.map +0 -1
  204. package/components/upload/upload.js.map +0 -1
  205. package/components/z-index/z-index.context.js.map +0 -1
  206. package/components/z-index/z-index.js.map +0 -1
  207. package/components/z-index/z-index.store.js.map +0 -1
  208. package/components/z-index/z-index.types.js.map +0 -1
  209. package/utils/cn.js.map +0 -1
  210. package/utils/element-tracker.js.map +0 -1
  211. package/utils/helper.js.map +0 -1
  212. package/utils/hoc.js.map +0 -1
  213. package/workspace.code-workspace +0 -8
  214. /package/{components → dist/components}/avatar/avatar.d.ts +0 -0
  215. /package/{components → dist/components}/avatar/avatar.d.ts.map +0 -0
  216. /package/{components → dist/components}/avatar/avatar.js +0 -0
  217. /package/{components → dist/components}/avatar/avatar.types.d.ts +0 -0
  218. /package/{components → dist/components}/avatar/avatar.types.d.ts.map +0 -0
  219. /package/{components → dist/components}/badge/badge.d.ts +0 -0
  220. /package/{components → dist/components}/badge/badge.d.ts.map +0 -0
  221. /package/{components → dist/components}/badge/badge.js +0 -0
  222. /package/{components → dist/components}/badge/badge.types.d.ts +0 -0
  223. /package/{components → dist/components}/badge/badge.types.d.ts.map +0 -0
  224. /package/{components → dist/components}/badge/index.d.ts +0 -0
  225. /package/{components → dist/components}/badge/index.d.ts.map +0 -0
  226. /package/{components → dist/components}/blank/blank.d.ts +0 -0
  227. /package/{components → dist/components}/blank/blank.d.ts.map +0 -0
  228. /package/{components → dist/components}/blank/index.d.ts +0 -0
  229. /package/{components → dist/components}/blank/index.d.ts.map +0 -0
  230. /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts +0 -0
  231. /package/{components → dist/components}/breadcrumb/breadcrumb.d.ts.map +0 -0
  232. /package/{components → dist/components}/breadcrumb/breadcrumb.js +0 -0
  233. /package/{components → dist/components}/breadcrumb/index.d.ts +0 -0
  234. /package/{components → dist/components}/breadcrumb/index.d.ts.map +0 -0
  235. /package/{components → dist/components}/button/button.d.ts +0 -0
  236. /package/{components → dist/components}/button/button.d.ts.map +0 -0
  237. /package/{components → dist/components}/button/button.js +0 -0
  238. /package/{components → dist/components}/button/button.types.d.ts +0 -0
  239. /package/{components → dist/components}/button/button.types.d.ts.map +0 -0
  240. /package/{components → dist/components}/carousel/carousel.d.ts +0 -0
  241. /package/{components → dist/components}/carousel/carousel.d.ts.map +0 -0
  242. /package/{components → dist/components}/carousel/carousel.js +0 -0
  243. /package/{components → dist/components}/carousel/carousel.types.d.ts +0 -0
  244. /package/{components → dist/components}/carousel/carousel.types.d.ts.map +0 -0
  245. /package/{components → dist/components}/carousel/index.d.ts +0 -0
  246. /package/{components → dist/components}/carousel/index.d.ts.map +0 -0
  247. /package/{components → dist/components}/chat-bubble/chatBubble.d.ts +0 -0
  248. /package/{components → dist/components}/chat-bubble/chatBubble.d.ts.map +0 -0
  249. /package/{components → dist/components}/chat-bubble/chatBubble.js +0 -0
  250. /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts +0 -0
  251. /package/{components → dist/components}/chat-bubble/chatBubble.type.d.ts.map +0 -0
  252. /package/{components → dist/components}/chat-bubble/index.d.ts +0 -0
  253. /package/{components → dist/components}/chat-bubble/index.d.ts.map +0 -0
  254. /package/{components → dist/components}/checkbox/checkbox.d.ts +0 -0
  255. /package/{components → dist/components}/checkbox/checkbox.d.ts.map +0 -0
  256. /package/{components → dist/components}/checkbox/checkbox.js +0 -0
  257. /package/{components → dist/components}/checkbox/index.d.ts +0 -0
  258. /package/{components → dist/components}/checkbox/index.d.ts.map +0 -0
  259. /package/{components → dist/components}/collapse/collapse.d.ts +0 -0
  260. /package/{components → dist/components}/collapse/collapse.d.ts.map +0 -0
  261. /package/{components → dist/components}/collapse/collapse.js +0 -0
  262. /package/{components → dist/components}/collapse/collapse.types.d.ts +0 -0
  263. /package/{components → dist/components}/collapse/collapse.types.d.ts.map +0 -0
  264. /package/{components → dist/components}/context-menu/context-menu.d.ts +0 -0
  265. /package/{components → dist/components}/context-menu/context-menu.d.ts.map +0 -0
  266. /package/{components → dist/components}/context-menu/context-menu.js +0 -0
  267. /package/{components → dist/components}/context-menu/context-menu.store.d.ts +0 -0
  268. /package/{components → dist/components}/context-menu/context-menu.store.d.ts.map +0 -0
  269. /package/{components → dist/components}/context-menu/context-menu.store.js +0 -0
  270. /package/{components → dist/components}/context-menu/context-menu.types.d.ts +0 -0
  271. /package/{components → dist/components}/context-menu/context-menu.types.d.ts.map +0 -0
  272. /package/{components → dist/components}/context-menu/index.d.ts +0 -0
  273. /package/{components → dist/components}/context-menu/index.d.ts.map +0 -0
  274. /package/{components → dist/components}/diff/diff.d.ts +0 -0
  275. /package/{components → dist/components}/diff/diff.d.ts.map +0 -0
  276. /package/{components → dist/components}/diff/diff.js +0 -0
  277. /package/{components → dist/components}/diff/diff.js.map +0 -0
  278. /package/{components → dist/components}/diff/index.d.ts +0 -0
  279. /package/{components → dist/components}/diff/index.d.ts.map +0 -0
  280. /package/{components → dist/components}/divider/divider.d.ts +0 -0
  281. /package/{components → dist/components}/divider/divider.d.ts.map +0 -0
  282. /package/{components → dist/components}/divider/divider.js +0 -0
  283. /package/{components → dist/components}/divider/divider.types.d.ts +0 -0
  284. /package/{components → dist/components}/divider/divider.types.d.ts.map +0 -0
  285. /package/{components → dist/components}/divider/index.d.ts +0 -0
  286. /package/{components → dist/components}/divider/index.d.ts.map +0 -0
  287. /package/{components → dist/components}/drawer/drawer.d.ts +0 -0
  288. /package/{components → dist/components}/drawer/drawer.d.ts.map +0 -0
  289. /package/{components → dist/components}/drawer/drawer.js +0 -0
  290. /package/{components → dist/components}/drawer/drawer.js.map +0 -0
  291. /package/{components → dist/components}/drawer/drawer.types.d.ts +0 -0
  292. /package/{components → dist/components}/drawer/drawer.types.d.ts.map +0 -0
  293. /package/{components → dist/components}/drawer/index.d.ts +0 -0
  294. /package/{components → dist/components}/drawer/index.d.ts.map +0 -0
  295. /package/{components → dist/components}/dropdown/dropdown.d.ts +0 -0
  296. /package/{components → dist/components}/dropdown/dropdown.d.ts.map +0 -0
  297. /package/{components → dist/components}/dropdown/dropdown.js +0 -0
  298. /package/{components → dist/components}/dropdown/dropdown.store.d.ts +0 -0
  299. /package/{components → dist/components}/dropdown/dropdown.store.d.ts.map +0 -0
  300. /package/{components → dist/components}/dropdown/dropdown.store.js +0 -0
  301. /package/{components → dist/components}/dropdown/dropdown.types.d.ts +0 -0
  302. /package/{components → dist/components}/dropdown/dropdown.types.d.ts.map +0 -0
  303. /package/{components → dist/components}/dropdown/index.d.ts +0 -0
  304. /package/{components → dist/components}/dropdown/index.d.ts.map +0 -0
  305. /package/{components → dist/components}/float-button/float-button.d.ts +0 -0
  306. /package/{components → dist/components}/float-button/float-button.d.ts.map +0 -0
  307. /package/{components → dist/components}/float-button/float-button.js +0 -0
  308. /package/{components → dist/components}/float-button/float-button.types.d.ts +0 -0
  309. /package/{components → dist/components}/float-button/float-button.types.d.ts.map +0 -0
  310. /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts +0 -0
  311. /package/{components → dist/components}/hover-3d-image/hover-3d-example.d.ts.map +0 -0
  312. /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts +0 -0
  313. /package/{components → dist/components}/hover-3d-image/hover-3d-image.d.ts.map +0 -0
  314. /package/{components → dist/components}/hover-3d-image/hover-3d-image.js +0 -0
  315. /package/{components → dist/components}/hover-3d-image/index.d.ts +0 -0
  316. /package/{components → dist/components}/hover-3d-image/index.d.ts.map +0 -0
  317. /package/{components → dist/components}/image-preview/image-preview.d.ts +0 -0
  318. /package/{components → dist/components}/image-preview/image-preview.d.ts.map +0 -0
  319. /package/{components → dist/components}/image-preview/image-preview.js +0 -0
  320. /package/{components → dist/components}/image-preview/index.d.ts +0 -0
  321. /package/{components → dist/components}/image-preview/index.d.ts.map +0 -0
  322. /package/{components → dist/components}/indicator/index.d.ts +0 -0
  323. /package/{components → dist/components}/indicator/index.d.ts.map +0 -0
  324. /package/{components → dist/components}/indicator/indicator.d.ts +0 -0
  325. /package/{components → dist/components}/indicator/indicator.d.ts.map +0 -0
  326. /package/{components → dist/components}/indicator/indicator.js +0 -0
  327. /package/{components → dist/components}/indicator/indicator.js.map +0 -0
  328. /package/{components → dist/components}/indicator/indicator.types.d.ts +0 -0
  329. /package/{components → dist/components}/indicator/indicator.types.d.ts.map +0 -0
  330. /package/{components → dist/components}/input/input.d.ts +0 -0
  331. /package/{components → dist/components}/input/input.d.ts.map +0 -0
  332. /package/{components → dist/components}/input/input.js +0 -0
  333. /package/{components → dist/components}/input/input.types.d.ts +0 -0
  334. /package/{components → dist/components}/input/input.types.d.ts.map +0 -0
  335. /package/{components → dist/components}/input/input.utils.d.ts +0 -0
  336. /package/{components → dist/components}/input/input.utils.d.ts.map +0 -0
  337. /package/{components → dist/components}/input/input.utils.js +0 -0
  338. /package/{components → dist/components}/input/variants/input-color.d.ts +0 -0
  339. /package/{components → dist/components}/input/variants/input-color.d.ts.map +0 -0
  340. /package/{components → dist/components}/input/variants/input-color.js +0 -0
  341. /package/{components → dist/components}/input/variants/input-date.d.ts +0 -0
  342. /package/{components → dist/components}/input/variants/input-date.d.ts.map +0 -0
  343. /package/{components → dist/components}/input/variants/input-date.js +0 -0
  344. /package/{components → dist/components}/input/variants/input-number.d.ts +0 -0
  345. /package/{components → dist/components}/input/variants/input-number.d.ts.map +0 -0
  346. /package/{components → dist/components}/input/variants/input-number.js +0 -0
  347. /package/{components → dist/components}/input/variants/input-otp.d.ts +0 -0
  348. /package/{components → dist/components}/input/variants/input-otp.d.ts.map +0 -0
  349. /package/{components → dist/components}/input/variants/input-otp.js +0 -0
  350. /package/{components → dist/components}/input/variants/input-password.d.ts +0 -0
  351. /package/{components → dist/components}/input/variants/input-password.d.ts.map +0 -0
  352. /package/{components → dist/components}/input/variants/input-password.js +0 -0
  353. /package/{components → dist/components}/input/variants/input-radio.d.ts +0 -0
  354. /package/{components → dist/components}/input/variants/input-radio.d.ts.map +0 -0
  355. /package/{components → dist/components}/input/variants/input-radio.js +0 -0
  356. /package/{components → dist/components}/input/variants/input-range.d.ts +0 -0
  357. /package/{components → dist/components}/input/variants/input-range.d.ts.map +0 -0
  358. /package/{components → dist/components}/input/variants/input-range.js +0 -0
  359. /package/{components → dist/components}/input/variants/input-text.d.ts +0 -0
  360. /package/{components → dist/components}/input/variants/input-text.d.ts.map +0 -0
  361. /package/{components → dist/components}/input/variants/input-text.js +0 -0
  362. /package/{components → dist/components}/input/variants/input-textarea.d.ts +0 -0
  363. /package/{components → dist/components}/input/variants/input-textarea.d.ts.map +0 -0
  364. /package/{components → dist/components}/input/variants/input-textarea.js +0 -0
  365. /package/{components → dist/components}/loading/index.d.ts +0 -0
  366. /package/{components → dist/components}/loading/index.d.ts.map +0 -0
  367. /package/{components → dist/components}/loading/loading.d.ts +0 -0
  368. /package/{components → dist/components}/loading/loading.d.ts.map +0 -0
  369. /package/{components → dist/components}/loading/loading.js +0 -0
  370. /package/{components → dist/components}/mansory/index.d.ts +0 -0
  371. /package/{components → dist/components}/mansory/index.d.ts.map +0 -0
  372. /package/{components → dist/components}/mansory/mansory.d.ts +0 -0
  373. /package/{components → dist/components}/mansory/mansory.d.ts.map +0 -0
  374. /package/{components → dist/components}/mansory/mansory.js +0 -0
  375. /package/{components → dist/components}/mansory/mansory.types.d.ts +0 -0
  376. /package/{components → dist/components}/mansory/mansory.types.d.ts.map +0 -0
  377. /package/{components → dist/components}/menu/menu.d.ts +0 -0
  378. /package/{components → dist/components}/menu/menu.d.ts.map +0 -0
  379. /package/{components → dist/components}/menu/menu.data-example.d.ts +0 -0
  380. /package/{components → dist/components}/menu/menu.data-example.d.ts.map +0 -0
  381. /package/{components → dist/components}/menu/menu.js +0 -0
  382. /package/{components → dist/components}/modal/index.d.ts +0 -0
  383. /package/{components → dist/components}/modal/index.d.ts.map +0 -0
  384. /package/{components → dist/components}/modal/modal.d.ts +0 -0
  385. /package/{components → dist/components}/modal/modal.d.ts.map +0 -0
  386. /package/{components → dist/components}/modal/modal.js +0 -0
  387. /package/{components → dist/components}/modal/modalContext.d.ts +0 -0
  388. /package/{components → dist/components}/modal/modalContext.d.ts.map +0 -0
  389. /package/{components → dist/components}/modal/modalContext.js +0 -0
  390. /package/{components → dist/components}/pagination/index.d.ts +0 -0
  391. /package/{components → dist/components}/pagination/index.d.ts.map +0 -0
  392. /package/{components → dist/components}/pagination/pagination.d.ts +0 -0
  393. /package/{components → dist/components}/pagination/pagination.d.ts.map +0 -0
  394. /package/{components → dist/components}/pagination/pagination.js +0 -0
  395. /package/{components → dist/components}/pagination/pagination.types.d.ts +0 -0
  396. /package/{components → dist/components}/pagination/pagination.types.d.ts.map +0 -0
  397. /package/{components → dist/components}/progress-bar/index.d.ts +0 -0
  398. /package/{components → dist/components}/progress-bar/index.d.ts.map +0 -0
  399. /package/{components → dist/components}/progress-bar/progress-bar.d.ts +0 -0
  400. /package/{components → dist/components}/progress-bar/progress-bar.d.ts.map +0 -0
  401. /package/{components → dist/components}/progress-bar/progress-bar.js +0 -0
  402. /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts +0 -0
  403. /package/{components → dist/components}/progress-bar/progress-bar.types.d.ts.map +0 -0
  404. /package/{components → dist/components}/qr-code/index.d.ts +0 -0
  405. /package/{components → dist/components}/qr-code/index.d.ts.map +0 -0
  406. /package/{components → dist/components}/qr-code/qr-code.d.ts +0 -0
  407. /package/{components → dist/components}/qr-code/qr-code.d.ts.map +0 -0
  408. /package/{components → dist/components}/qr-code/qr-code.js +0 -0
  409. /package/{components → dist/components}/qr-code/qr-code.types.d.ts +0 -0
  410. /package/{components → dist/components}/qr-code/qr-code.types.d.ts.map +0 -0
  411. /package/{components → dist/components}/rating/rating.d.ts +0 -0
  412. /package/{components → dist/components}/rating/rating.d.ts.map +0 -0
  413. /package/{components → dist/components}/rating/rating.js +0 -0
  414. /package/{components → dist/components}/rating/rating.js.map +0 -0
  415. /package/{components → dist/components}/rating/rating.types.d.ts +0 -0
  416. /package/{components → dist/components}/rating/rating.types.d.ts.map +0 -0
  417. /package/{components → dist/components}/select/index.d.ts +0 -0
  418. /package/{components → dist/components}/select/index.d.ts.map +0 -0
  419. /package/{components → dist/components}/select/select.d.ts +0 -0
  420. /package/{components → dist/components}/select/select.d.ts.map +0 -0
  421. /package/{components → dist/components}/select/select.js +0 -0
  422. /package/{components → dist/components}/select/select.types.d.ts +0 -0
  423. /package/{components → dist/components}/select/select.types.d.ts.map +0 -0
  424. /package/{components → dist/components}/select-zone/index.d.ts +0 -0
  425. /package/{components → dist/components}/select-zone/index.d.ts.map +0 -0
  426. /package/{components → dist/components}/select-zone/select-zone.d.ts +0 -0
  427. /package/{components → dist/components}/select-zone/select-zone.d.ts.map +0 -0
  428. /package/{components → dist/components}/select-zone/select-zone.js +0 -0
  429. /package/{components → dist/components}/select-zone/select-zone.types.d.ts +0 -0
  430. /package/{components → dist/components}/select-zone/select-zone.types.d.ts.map +0 -0
  431. /package/{components → dist/components}/skeleton/index.d.ts +0 -0
  432. /package/{components → dist/components}/skeleton/index.d.ts.map +0 -0
  433. /package/{components → dist/components}/skeleton/skeleton.d.ts +0 -0
  434. /package/{components → dist/components}/skeleton/skeleton.d.ts.map +0 -0
  435. /package/{components → dist/components}/skeleton/skeleton.js +0 -0
  436. /package/{components → dist/components}/slider/slider.d.ts +0 -0
  437. /package/{components → dist/components}/slider/slider.d.ts.map +0 -0
  438. /package/{components → dist/components}/slider/slider.js +0 -0
  439. /package/{components → dist/components}/slider/slider.types.d.ts +0 -0
  440. /package/{components → dist/components}/slider/slider.types.d.ts.map +0 -0
  441. /package/{components → dist/components}/splitter/index.d.ts +0 -0
  442. /package/{components → dist/components}/splitter/index.d.ts.map +0 -0
  443. /package/{components → dist/components}/splitter/splitter.d.ts +0 -0
  444. /package/{components → dist/components}/splitter/splitter.d.ts.map +0 -0
  445. /package/{components → dist/components}/splitter/splitter.js +0 -0
  446. /package/{components → dist/components}/splitter/splitter.types.d.ts +0 -0
  447. /package/{components → dist/components}/splitter/splitter.types.d.ts.map +0 -0
  448. /package/{components → dist/components}/steps/index.d.ts +0 -0
  449. /package/{components → dist/components}/steps/index.d.ts.map +0 -0
  450. /package/{components → dist/components}/steps/steps.d.ts +0 -0
  451. /package/{components → dist/components}/steps/steps.d.ts.map +0 -0
  452. /package/{components → dist/components}/steps/steps.js +0 -0
  453. /package/{components → dist/components}/swap/index.d.ts +0 -0
  454. /package/{components → dist/components}/swap/index.d.ts.map +0 -0
  455. /package/{components → dist/components}/swap/swap.d.ts +0 -0
  456. /package/{components → dist/components}/swap/swap.d.ts.map +0 -0
  457. /package/{components → dist/components}/swap/swap.js +0 -0
  458. /package/{components → dist/components}/switch/index.d.ts +0 -0
  459. /package/{components → dist/components}/switch/index.d.ts.map +0 -0
  460. /package/{components → dist/components}/switch/switch.d.ts +0 -0
  461. /package/{components → dist/components}/switch/switch.d.ts.map +0 -0
  462. /package/{components → dist/components}/switch/switch.js +0 -0
  463. /package/{components → dist/components}/switch/switch.types.d.ts +0 -0
  464. /package/{components → dist/components}/switch/switch.types.d.ts.map +0 -0
  465. /package/{components → dist/components}/tab/index.d.ts +0 -0
  466. /package/{components → dist/components}/tab/index.d.ts.map +0 -0
  467. /package/{components → dist/components}/tab/tab.d.ts +0 -0
  468. /package/{components → dist/components}/tab/tab.d.ts.map +0 -0
  469. /package/{components → dist/components}/tab/tab.js +0 -0
  470. /package/{components → dist/components}/tab/tab.types.d.ts +0 -0
  471. /package/{components → dist/components}/tab/tab.types.d.ts.map +0 -0
  472. /package/{components → dist/components}/table/index.d.ts +0 -0
  473. /package/{components → dist/components}/table/index.d.ts.map +0 -0
  474. /package/{components → dist/components}/table/index.js +0 -0
  475. /package/{components → dist/components}/table/table.d.ts +0 -0
  476. /package/{components → dist/components}/table/table.d.ts.map +0 -0
  477. /package/{components → dist/components}/table/table.js +0 -0
  478. /package/{components → dist/components}/table/table.types.d.ts +0 -0
  479. /package/{components → dist/components}/table/table.types.d.ts.map +0 -0
  480. /package/{components → dist/components}/text-rotate/index.d.ts +0 -0
  481. /package/{components → dist/components}/text-rotate/index.d.ts.map +0 -0
  482. /package/{components → dist/components}/text-rotate/text-rotate.d.ts +0 -0
  483. /package/{components → dist/components}/text-rotate/text-rotate.d.ts.map +0 -0
  484. /package/{components → dist/components}/text-rotate/text-rotate.js +0 -0
  485. /package/{components → dist/components}/text-rotate/text-rotate.js.map +0 -0
  486. /package/{components → dist/components}/timeline/index.d.ts +0 -0
  487. /package/{components → dist/components}/timeline/index.d.ts.map +0 -0
  488. /package/{components → dist/components}/timeline/timeline.d.ts +0 -0
  489. /package/{components → dist/components}/timeline/timeline.d.ts.map +0 -0
  490. /package/{components → dist/components}/timeline/timeline.js +0 -0
  491. /package/{components → dist/components}/timeline/timeline.types.d.ts +0 -0
  492. /package/{components → dist/components}/timeline/timeline.types.d.ts.map +0 -0
  493. /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts +0 -0
  494. /package/{components → dist/components}/toast/icons/ErrorIcon.d.ts.map +0 -0
  495. /package/{components → dist/components}/toast/icons/ErrorIcon.js +0 -0
  496. /package/{components → dist/components}/toast/icons/IconCircle.d.ts +0 -0
  497. /package/{components → dist/components}/toast/icons/IconCircle.d.ts.map +0 -0
  498. /package/{components → dist/components}/toast/icons/IconCircle.js +0 -0
  499. /package/{components → dist/components}/toast/icons/InfoIcon.d.ts +0 -0
  500. /package/{components → dist/components}/toast/icons/InfoIcon.d.ts.map +0 -0
  501. /package/{components → dist/components}/toast/icons/InfoIcon.js +0 -0
  502. /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts +0 -0
  503. /package/{components → dist/components}/toast/icons/LoaderIcon.d.ts.map +0 -0
  504. /package/{components → dist/components}/toast/icons/LoaderIcon.js +0 -0
  505. /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts +0 -0
  506. /package/{components → dist/components}/toast/icons/SuccessIcon.d.ts.map +0 -0
  507. /package/{components → dist/components}/toast/icons/SuccessIcon.js +0 -0
  508. /package/{components → dist/components}/toast/icons/WarningIcon.d.ts +0 -0
  509. /package/{components → dist/components}/toast/icons/WarningIcon.d.ts.map +0 -0
  510. /package/{components → dist/components}/toast/icons/WarningIcon.js +0 -0
  511. /package/{components → dist/components}/toast/icons/index.d.ts +0 -0
  512. /package/{components → dist/components}/toast/icons/index.d.ts.map +0 -0
  513. /package/{components → dist/components}/toast/index.d.ts +0 -0
  514. /package/{components → dist/components}/toast/index.d.ts.map +0 -0
  515. /package/{components → dist/components}/toast/toast.d.ts +0 -0
  516. /package/{components → dist/components}/toast/toast.d.ts.map +0 -0
  517. /package/{components → dist/components}/toast/toast.js +0 -0
  518. /package/{components → dist/components}/toast/toast.store.d.ts +0 -0
  519. /package/{components → dist/components}/toast/toast.store.d.ts.map +0 -0
  520. /package/{components → dist/components}/toast/toast.store.js +0 -0
  521. /package/{components → dist/components}/toast/toast.type.d.ts +0 -0
  522. /package/{components → dist/components}/toast/toast.type.d.ts.map +0 -0
  523. /package/{components → dist/components}/tooltip/index.d.ts +0 -0
  524. /package/{components → dist/components}/tooltip/index.d.ts.map +0 -0
  525. /package/{components → dist/components}/tooltip/tooltip.d.ts +0 -0
  526. /package/{components → dist/components}/tooltip/tooltip.d.ts.map +0 -0
  527. /package/{components → dist/components}/tooltip/tooltip.js +0 -0
  528. /package/{components → dist/components}/tooltip/tooltip.types.d.ts +0 -0
  529. /package/{components → dist/components}/tooltip/tooltip.types.d.ts.map +0 -0
  530. /package/{components → dist/components}/tour/index.d.ts +0 -0
  531. /package/{components → dist/components}/tour/index.d.ts.map +0 -0
  532. /package/{components → dist/components}/tour/tour.d.ts +0 -0
  533. /package/{components → dist/components}/tour/tour.types.d.ts +0 -0
  534. /package/{components → dist/components}/tour/tour.types.d.ts.map +0 -0
  535. /package/{components → dist/components}/upload/index.d.ts +0 -0
  536. /package/{components → dist/components}/upload/index.d.ts.map +0 -0
  537. /package/{components → dist/components}/upload/upload.d.ts +0 -0
  538. /package/{components → dist/components}/upload/upload.d.ts.map +0 -0
  539. /package/{components → dist/components}/upload/upload.js +0 -0
  540. /package/{components → dist/components}/upload/upload.types.d.ts +0 -0
  541. /package/{components → dist/components}/upload/upload.types.d.ts.map +0 -0
  542. /package/{components → dist/components}/z-index/index.d.ts +0 -0
  543. /package/{components → dist/components}/z-index/index.d.ts.map +0 -0
  544. /package/{components → dist/components}/z-index/z-index.context.d.ts +0 -0
  545. /package/{components → dist/components}/z-index/z-index.context.d.ts.map +0 -0
  546. /package/{components → dist/components}/z-index/z-index.context.js +0 -0
  547. /package/{components → dist/components}/z-index/z-index.d.ts +0 -0
  548. /package/{components → dist/components}/z-index/z-index.d.ts.map +0 -0
  549. /package/{components → dist/components}/z-index/z-index.js +0 -0
  550. /package/{components → dist/components}/z-index/z-index.store.d.ts +0 -0
  551. /package/{components → dist/components}/z-index/z-index.store.d.ts.map +0 -0
  552. /package/{components → dist/components}/z-index/z-index.store.js +0 -0
  553. /package/{components → dist/components}/z-index/z-index.types.d.ts +0 -0
  554. /package/{components → dist/components}/z-index/z-index.types.d.ts.map +0 -0
  555. /package/{components → dist/components}/z-index/z-index.types.js +0 -0
  556. /package/{lib.d.ts → dist/lib.d.ts} +0 -0
  557. /package/{lib.d.ts.map → dist/lib.d.ts.map} +0 -0
  558. /package/{lib.js → dist/lib.js} +0 -0
  559. /package/{type.d.ts → dist/type.d.ts} +0 -0
  560. /package/{type.d.ts.map → dist/type.d.ts.map} +0 -0
  561. /package/{utils → dist/utils}/cn.d.ts +0 -0
  562. /package/{utils → dist/utils}/cn.d.ts.map +0 -0
  563. /package/{utils → dist/utils}/cn.js +0 -0
  564. /package/{utils → dist/utils}/element-tracker.js +0 -0
  565. /package/{utils → dist/utils}/helper.d.ts +0 -0
  566. /package/{utils → dist/utils}/helper.d.ts.map +0 -0
  567. /package/{utils → dist/utils}/helper.js +0 -0
  568. /package/{utils → dist/utils}/hoc.js +0 -0
@@ -0,0 +1,198 @@
1
+ ## COMPONENT IDENTITY
2
+
3
+ - **Import**: `import { Button } from 'solid-tom-ui';`
4
+ - **Export**: `Button` (default named export)
5
+ - **Framework**: SolidJS
6
+ - **Runtime**: This is a client-side interactive component
7
+
8
+ ## TYPE SIGNATURE
9
+
10
+ ```typescript
11
+ import { Button } from 'solid-tom-ui';
12
+
13
+ // variant is REQUIRED. All other props are optional.
14
+ <Button
15
+ variant="default" | "simple" | "solid" | "outline" | "dashed" | "filled" | "text" | "link"
16
+ color?="neutral" | "primary" | "secondary" | "accent" | "info" | "success" | "warning" | "error"
17
+ size?="4xs" | "3xs" | "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl"
18
+ shape?="circle" | "square" // MUTEX with children — if set, do NOT pass children
19
+ icon?={JSXElement} // SolidJS component/JSX for icon
20
+ iconPlacement?="start" | "end" // default: "start"
21
+ loading?={boolean} // default: false; disables button while true
22
+ loadingOptions?={{ type?: "spinner"|"dots"|"ring"|"ball"|"bars"|"infinity", size?: number }}
23
+ animate?="none" | "translate" | "ripple" // default: "ripple"
24
+ disabled?={boolean} // default: false
25
+ onClick?={(e: MouseEvent) => void}
26
+ class?={string}
27
+ >
28
+ {children} // NOT allowed when shape is set
29
+ </Button>
30
+ ```
31
+
32
+ ## CLASS SLOTS
33
+
34
+ `Button` is a single-element component — `class` appends to the root `<button>`. No named sub-element slots.
35
+
36
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `bu01`, `bu02`) per project convention.
37
+
38
+ ## DEFAULTS
39
+
40
+ | Prop | Default |
41
+ | --------------------- | ------------- |
42
+ | `color` | `"secondary"` |
43
+ | `size` | `"sm"` |
44
+ | `iconPlacement` | `"start"` |
45
+ | `loading` | `false` |
46
+ | `disabled` | `false` |
47
+ | `animate` | `"ripple"` |
48
+ | `loadingOptions.type` | `"spinner"` |
49
+ | `loadingOptions.size` | `20` |
50
+
51
+ ## CONSTRAINT: shape vs children
52
+
53
+ - `shape="circle"` or `shape="square"` → icon-only button → **children MUST be omitted**
54
+ - No `shape` → text button → children are allowed
55
+
56
+ ## VARIANT SEMANTICS
57
+
58
+ | Variant | Visual style | Use case |
59
+ | --------- | ---------------------------- | ----------------------- |
60
+ | `default` | DaisyUI default button style | General neutral action |
61
+ | `simple` | Minimal, no background | Subtle secondary action |
62
+ | `solid` | Filled solid background | Primary CTA |
63
+ | `outline` | Border, transparent bg | Secondary action |
64
+ | `dashed` | Dashed border | Draft / pending action |
65
+ | `filled` | Filled with lighter tone | Highlighted secondary |
66
+ | `text` | No border, no bg, text only | Inline or low-emphasis |
67
+ | `link` | Looks like hyperlink | Navigation action |
68
+
69
+ ## COLOR SEMANTICS
70
+
71
+ | Color | Semantic meaning |
72
+ | ----------- | ------------------------- |
73
+ | `neutral` | Gray / no meaning |
74
+ | `primary` | Brand primary |
75
+ | `secondary` | Brand secondary (default) |
76
+ | `accent` | Accent highlight |
77
+ | `info` | Informational |
78
+ | `success` | Positive / confirmed |
79
+ | `warning` | Caution |
80
+ | `error` | Destructive / danger |
81
+
82
+ ## USAGE PATTERNS
83
+
84
+ ### Basic button
85
+
86
+ ```tsx
87
+ <Button variant="solid" color="primary" onClick={handleClick}>
88
+ Submit
89
+ </Button>
90
+ ```
91
+
92
+ ### With icon (text + icon)
93
+
94
+ ```tsx
95
+ import Trash from 'lucide-solid/icons/trash';
96
+
97
+ <Button variant="outline" color="error" icon={<Trash size={16} />} onClick={handleDelete}>
98
+ Delete
99
+ </Button>
100
+
101
+ // Icon at end
102
+ <Button variant="solid" color="primary" icon={<DynamicIcon name="arrow-right" size={16} />} iconPlacement="end">
103
+ Continue
104
+ </Button>
105
+ ```
106
+
107
+ ### Icon-only button (circle/square shape)
108
+
109
+ ```tsx
110
+ // CORRECT: shape set → no children
111
+ <Button variant="solid" color="primary" shape="circle" size="md" icon={<DynamicIcon name="plus" size={16} />} />
112
+ <Button variant="outline" color="neutral" shape="square" size="sm" icon={<Trash size={14} />} />
113
+
114
+ // WRONG: shape + children → TypeScript error
115
+ <Button variant="solid" shape="circle" icon={...}>Label</Button> // ❌ children not allowed with shape
116
+ ```
117
+
118
+ ### Loading state
119
+
120
+ ```tsx
121
+ <Button variant="solid" color="primary" loading={isLoading()}>
122
+ Save
123
+ </Button>
124
+
125
+ // Custom loading indicator
126
+ <Button variant="solid" color="primary" loading={isLoading()} loadingOptions={{ type: 'dots', size: 16 }}>
127
+ Processing
128
+ </Button>
129
+ ```
130
+
131
+ ### Disabled
132
+
133
+ ```tsx
134
+ <Button variant="solid" color="primary" disabled={!isValid()}>
135
+ Submit
136
+ </Button>
137
+ // Note: loading=true also disables the button automatically
138
+ ```
139
+
140
+ ### Animation control
141
+
142
+ ```tsx
143
+ <Button variant="solid" color="primary" animate="none">No animation</Button>
144
+ <Button variant="solid" color="primary" animate="translate">Translate on hover</Button>
145
+ <Button variant="solid" color="primary" animate="ripple">Ripple on click (default)</Button>
146
+ ```
147
+
148
+ ### Size progression (smallest → largest)
149
+
150
+ ```
151
+ 4xs → 3xs → 2xs → xs → sm(default) → md → lg → xl → 2xl → 3xl → 4xl
152
+ ```
153
+
154
+ ## DECISION RULES
155
+
156
+ **Choosing variant:**
157
+
158
+ - User performs the main action → `solid` with `primary`
159
+ - Secondary/cancel action next to primary → `outline` with `neutral` or `secondary`
160
+ - Destructive action (delete, remove) → `solid` or `outline` with `error`
161
+ - Navigation/link-like → `link` or `text`
162
+ - Icon-only toolbar button → `simple` or `text` with appropriate `shape`
163
+
164
+ **Choosing color:**
165
+
166
+ - Confirm / save / create → `primary` or `success`
167
+ - Cancel / back → `neutral`
168
+ - Delete / remove → `error`
169
+ - Warning / irreversible → `warning`
170
+ - Info action → `info`
171
+
172
+ **Choosing size:**
173
+
174
+ - Default UI → `sm` (default)
175
+ - Inside tight spaces (table cells, sidebars) → `xs` or `2xs`
176
+ - Hero CTA → `lg` or `xl`
177
+
178
+ ## ANTI-PATTERNS
179
+
180
+ ```tsx
181
+ // ❌ Missing required `variant` prop
182
+ <Button color="primary">Click</Button>
183
+
184
+ // ❌ Using shape with children
185
+ <Button variant="solid" shape="circle" icon={<Icon />}>Text</Button>
186
+
187
+ // ❌ Redundant: loading already disables, no need for disabled too
188
+ <Button loading={true} disabled={true}>Save</Button>
189
+
190
+ // ✅ Correct: just use loading
191
+ <Button loading={true}>Save</Button>
192
+ ```
193
+
194
+ ## ADDITIONAL NATIVE PROPS
195
+
196
+ The `Button` component forwards all standard `HTMLButtonElement` attributes except `onClick`, `class`, `disabled`, and `children` (which are controlled by the component). You can pass `type="submit"`, `form`, `aria-*`, `data-*`, etc.
197
+
198
+ > **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,406 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Carousel } from 'solid-tom-ui';`
3
+ - **Export**: `Carousel` (named export), `CarouselFunction`, `CarouselProps` (type exports)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Image-only carousel component; NOT a `ParentComponent` — images passed via props
6
+ - **CSS custom properties**: `--carousel-transition-duration`, `--carousel-autoplay-speed`
7
+
8
+ ---
9
+
10
+ ## TYPE SIGNATURE
11
+
12
+ ```ts
13
+ // Image item shape (from @/utils/helper)
14
+ type Image = {
15
+ src: string;
16
+ alt?: string;
17
+ class?: string; // extra class on <img> element
18
+ // any other standard <img> HTML attributes
19
+ };
20
+
21
+ // Discriminated union on `direction`
22
+ type CarouselProps = HorizontalCarouselProps | VerticalCarouselProps;
23
+
24
+ type CarouselBaseProps = {
25
+ images: Image[]; // REQUIRED — array of image objects
26
+ class?: {
27
+ root?: string; // classes on root .sui-carousel div
28
+ item?: string; // classes on each .sui-carousel-item div
29
+ };
30
+ arrows?: boolean; // default: true
31
+ autoplay?: boolean | { dotDuration?: boolean }; // default: true
32
+ autoplaySpeed?: number; // ms between slides; default: 3000
33
+ dots?: boolean; // default: true
34
+ infinite?: boolean; // default: true
35
+ effect?: 'scrollx' | 'fade'; // default: 'scrollx'
36
+ afterChange?: (current: number) => void; // fires after slide changes; index is 0-based
37
+ beforeChange?: (current: number, next: number) => void; // fires before transition
38
+ onClickSlide?: (index: number) => void; // fires only when clicking the ACTIVE slide
39
+ setCarouselFunction?: Setter<CarouselFunction | undefined>; // imperative API hook
40
+ };
41
+
42
+ type HorizontalCarouselProps = CarouselBaseProps & {
43
+ direction?: 'horizontal'; // default when omitted
44
+ dotPlacement?: 'top' | 'bottom'; // default: 'bottom'
45
+ };
46
+
47
+ type VerticalCarouselProps = CarouselBaseProps & {
48
+ direction: 'vertical'; // must be explicit
49
+ dotPlacement?: 'start' | 'end'; // default: 'end'
50
+ };
51
+
52
+ // Imperative API object exposed via setCarouselFunction
53
+ type CarouselFunction = {
54
+ next: () => void;
55
+ prev: () => void;
56
+ moveTo: (index: number) => void; // 0-based index
57
+ pause: () => {};
58
+ play: () => {};
59
+ };
60
+ ```
61
+
62
+ ---
63
+
64
+ ## DEFAULT VALUES (via `mergeProps`)
65
+
66
+ | Prop | Default |
67
+ |-----------------|--------------|
68
+ | `arrows` | `true` |
69
+ | `autoplay` | `true` |
70
+ | `autoplaySpeed` | `3000` (ms) |
71
+ | `dots` | `true` |
72
+ | `infinite` | `true` |
73
+ | `effect` | `'scrollx'` |
74
+
75
+ ---
76
+
77
+ ## PROP REFERENCE
78
+
79
+ | Prop | Type | Required | Description |
80
+ |-----------------------|---------------------------------------------|----------|------------------------------------------------------------------------------------------------|
81
+ | `images` | `Image[]` | ✅ YES | Array of image objects with `src`, optional `alt`, `class` |
82
+ | `direction` | `'horizontal' \| 'vertical'` | ❌ NO | Slide direction. Omit for horizontal (default). Must be `'vertical'` for vertical mode |
83
+ | `effect` | `'scrollx' \| 'fade'` | ❌ NO | Transition animation between slides |
84
+ | `arrows` | `boolean` | ❌ NO | Show prev/next arrow buttons |
85
+ | `dots` | `boolean` | ❌ NO | Show dot indicators. Hidden when `images.length <= 1` |
86
+ | `dotPlacement` | `'top'\|'bottom'` (h) / `'start'\|'end'` (v) | ❌ NO | Position of dot indicators — valid values differ by `direction` |
87
+ | `autoplay` | `boolean \| { dotDuration?: boolean }` | ❌ NO | `true` = auto-advance; `{ dotDuration: true }` = also show progress bar in active dot |
88
+ | `autoplaySpeed` | `number` | ❌ NO | Milliseconds per slide during autoplay |
89
+ | `infinite` | `boolean` | ❌ NO | Loop from last→first and first→last. When `false`, arrows hide at boundaries |
90
+ | `afterChange` | `(current: number) => void` | ❌ NO | Called after slide transition completes; receives new 0-based index |
91
+ | `beforeChange` | `(current: number, next: number) => void` | ❌ NO | Called before transition; receives current and next 0-based indexes |
92
+ | `onClickSlide` | `(index: number) => void` | ❌ NO | Fires only when clicking the **currently active** slide (not inactive slides) |
93
+ | `setCarouselFunction` | `Setter<CarouselFunction \| undefined>` | ❌ NO | SolidJS setter to receive the imperative API object |
94
+ | `class.root` | `string` | ❌ NO | Extra classes on root `<div class="sui-carousel">` — use for size, border-radius, etc. |
95
+ | `class.item` | `string` | ❌ NO | Extra classes on each `.sui-carousel-item` slide wrapper div |
96
+
97
+ ---
98
+
99
+ ## DIRECTION × DOT PLACEMENT CONSTRAINT
100
+
101
+ `dotPlacement` valid values are **constrained by `direction`** — mixing them has no effect (falls through to default):
102
+
103
+ | `direction` | Valid `dotPlacement` values | Default | Visual position |
104
+ |----------------|-----------------------------|--------------|------------------------|
105
+ | `'horizontal'` (or omitted) | `'top'`, `'bottom'` | `'bottom'` | Above or below slides |
106
+ | `'vertical'` | `'start'`, `'end'` | `'end'` | Left or right of slides |
107
+
108
+ > ⚠️ Passing `dotPlacement="start"` with `direction="horizontal"` is silently ignored — defaults to `'bottom'`.
109
+ > Passing `dotPlacement="top"` with `direction="vertical"` is silently ignored — defaults to `'end'`.
110
+
111
+ ---
112
+
113
+ ## AUTOPLAY MODES
114
+
115
+ ### `autoplay={true}` — basic autoplay
116
+ - Slides advance every `autoplaySpeed` ms
117
+ - No progress indicator on dots
118
+
119
+ ### `autoplay={false}` — no autoplay
120
+ - Manual navigation only via arrows, dots, or imperative API
121
+ - `play()` via imperative API has no effect
122
+
123
+ ### `autoplay={{ dotDuration: true }}` — autoplay with progress bar
124
+ - Same as `true` but adds animated progress fill inside the active dot
125
+ - Progress bar animates from 0→100% over `autoplaySpeed` ms
126
+ - Progress resets when slide changes (including manual navigation)
127
+ - Progress direction: horizontal for `dots-bottom`/`dots-top`, vertical for `dots-start`/`dots-end`
128
+
129
+ ---
130
+
131
+ ## IMPERATIVE API — `setCarouselFunction`
132
+
133
+ To control the carousel programmatically, pass a SolidJS signal setter:
134
+
135
+ ```tsx
136
+ import { createSignal } from 'solid-js';
137
+ import { Carousel, CarouselFunction } from 'solid-tom-ui';
138
+
139
+ const [carouselApi, setCarouselApi] = createSignal<CarouselFunction>();
140
+
141
+ <Carousel
142
+ images={images}
143
+ setCarouselFunction={setCarouselApi}
144
+ afterChange={current => console.log('Now on slide:', current)}
145
+ />
146
+
147
+ // Use the API:
148
+ carouselApi()?.next();
149
+ carouselApi()?.prev();
150
+ carouselApi()?.moveTo(2); // 0-based index
151
+ carouselApi()?.pause();
152
+ carouselApi()?.play();
153
+ ```
154
+
155
+ ### API method details
156
+ | Method | Description |
157
+ |---------------|------------------------------------------------------------------------------------|
158
+ | `next()` | Go to next slide; wraps to first if `infinite=true`, clamps if `infinite=false` |
159
+ | `prev()` | Go to previous slide; wraps to last if `infinite=true`, clamps if `infinite=false`|
160
+ | `moveTo(n)` | Jump to 0-based index `n` directly; respects `infinite` boundary logic |
161
+ | `pause()` | Stops autoplay timer; sets `isPlaying=false` |
162
+ | `play()` | Resumes autoplay only if `autoplay` prop is truthy; no-op if `autoplay={false}` |
163
+
164
+ > ℹ️ The API object is re-created and set via `createEffect` on every render — always call through the signal accessor `carouselApi()?.method()` rather than caching the object.
165
+
166
+ ---
167
+
168
+ ## `onClickSlide` BEHAVIOR
169
+
170
+ `onClickSlide` fires **only when clicking the currently active/visible slide**:
171
+
172
+ ```tsx
173
+ // Inside component:
174
+ const handleSlideClick = (index: number) => {
175
+ if (index === currentIndex()) {
176
+ p.onClickSlide?.(index); // only fires for the active slide
177
+ }
178
+ };
179
+ ```
180
+
181
+ Clicking an inactive slide (one that is positioned off-screen) triggers no callback. This is intentional — only the visible slide is interactive.
182
+
183
+ ---
184
+
185
+ ## `infinite` — ARROW VISIBILITY BEHAVIOR
186
+
187
+ When `infinite={false}`:
188
+ - `showPrevArrow` → `currentIndex() > 0` — hides prev arrow on first slide
189
+ - `showNextArrow` → `currentIndex() < totalSlides() - 1` — hides next arrow on last slide
190
+
191
+ When `infinite={true}`:
192
+ - Both arrows always shown (when `arrows={true}`)
193
+
194
+ ---
195
+
196
+ ## ANIMATION — INTERNAL MECHANISM
197
+
198
+ ### `effect="scrollx"` (default)
199
+ - Uses pixel-based `translateX` / `translateY` (vertical) CSS transforms
200
+ - 1px overlap on slide positioning to eliminate sub-pixel gaps
201
+ - Detects wrap-around (first↔last) and reverses direction for natural wrap animation
202
+ - Transition duration: hardcoded `400ms` via `--carousel-transition-duration` CSS var
203
+
204
+ ### `effect="fade"`
205
+ - Uses `opacity` CSS transitions between slides
206
+ - All slides stacked absolutely; `z-index` swaps between from/to slides
207
+ - Same 400ms duration
208
+
209
+ ### Animation guard (`isAnimating`)
210
+ - While a transition is running, `goToSlide` calls are ignored (except `skipAnimation=true`)
211
+ - Autoplay skips ticks while animating
212
+
213
+ ---
214
+
215
+ ## INTERNAL DOM STRUCTURE
216
+
217
+ ```
218
+ <div class="sui-carousel [vertical] [dots-bottom|dots-top|dots-start|dots-end] [class.root]"
219
+ style="--carousel-transition-duration:400ms; --carousel-autoplay-speed:{autoplaySpeed}ms">
220
+
221
+ ├── <div class="sui-carousel-slides">
222
+ │ <For each={images}>
223
+ │ <div class="sui-carousel-item [class.item]" onClick={handleSlideClick}>
224
+ │ <img src={...} alt={...} class="sui-carousel-image [image.class]" draggable={false} />
225
+ │ </div>
226
+ │ </For>
227
+ │ </div>
228
+
229
+ ├── <Show when={arrows}>
230
+ │ <Show when={showPrevArrow()}>
231
+ │ <button class="sui-carousel-arrow arrow-prev" aria-label="Previous slide">
232
+ │ <DynamicIcon name="chevron-left" />
233
+ │ </button>
234
+ │ </Show>
235
+ │ <Show when={showNextArrow()}>
236
+ │ <button class="sui-carousel-arrow arrow-next" aria-label="Next slide">
237
+ │ <DynamicIcon name="chevron-right" />
238
+ │ </button>
239
+ │ </Show>
240
+ │ </Show>
241
+
242
+ └── <Show when={dots && totalSlides() > 1}>
243
+ <div class="sui-carousel-dots">
244
+ <For each={images}>
245
+ <button class="sui-carousel-dot [active] [has-progress]"
246
+ aria-label="Go to slide {n}">
247
+ <Show when={hasDotDuration()}>
248
+ <div class="dot-progress" />
249
+ </Show>
250
+ </button>
251
+ </For>
252
+ </div>
253
+ </Show>
254
+ ```
255
+
256
+ ---
257
+
258
+ ## SIZING — ALWAYS REQUIRED
259
+
260
+ The component has `width: 100%` and fills its container's height. **Always set explicit height** on `class.root`:
261
+
262
+ ```tsx
263
+ // ✅ Correct — explicit height
264
+ <Carousel class={{ root: 'h-[400px] rounded-xl' }} images={images} />
265
+
266
+ // ✅ Fixed width + height
267
+ <Carousel class={{ root: 'h-[150px] w-[200px] rounded-xl' }} images={images} />
268
+
269
+ // ❌ Wrong — no height = carousel collapses to 0px
270
+ <Carousel images={images} />
271
+ ```
272
+
273
+ ---
274
+
275
+ ## BEHAVIOR NOTES FOR AGENTS
276
+
277
+ 1. **`images` items only render `<img>` tags** — the component does not support arbitrary JSX slides. Only image-based slides via the `Image` type are supported.
278
+
279
+ 2. **`direction` changes arrow orientation** — in `'vertical'` mode, arrows move to top/bottom center (rotated 90°) instead of left/right. This is CSS-driven automatically.
280
+
281
+ 3. **`autoplaySpeed` is used for both the timer interval AND the CSS progress animation** — it is set as `--carousel-autoplay-speed` CSS custom property. Changing it reactively will update both simultaneously.
282
+
283
+ 4. **Dots are hidden when `images.length <= 1`** — `<Show when={p.dots && totalSlides() > 1}>` — single-image carousels never show dots regardless of `dots` prop.
284
+
285
+ 5. **`setCarouselFunction` setter is called inside `createEffect`** — the API object is always fresh. Do not cache the returned object; always call via `carouselApi()?.method()`.
286
+
287
+ 6. **`onClickSlide` only fires on the active slide** — clicking a slide that is not `currentIndex()` does nothing, even if partially visible during transition.
288
+
289
+ 7. **Transition is blocked during animation** — `isAnimating()` guard prevents overlapping transitions. Rapid clicking or autoplay ticks during a 400ms transition are silently ignored.
290
+
291
+ 8. **Autoplay resets on manual navigation** — calling `next()`, `prev()`, `moveTo()`, or clicking arrows/dots clears and restarts the autoplay timer, preventing near-simultaneous auto+manual transitions.
292
+
293
+ 9. **`play()` is a no-op when `autoplay={false}`** — the prop check `if (!p.autoplay) return {}` exits immediately. `pause()`/`play()` only work when `autoplay` was originally truthy.
294
+
295
+ ---
296
+
297
+ ## COMMON MISTAKES TO AVOID
298
+
299
+ | Mistake | Correct approach |
300
+ |---|---|
301
+ | Omitting height on `class.root` | Always set `h-[Npx]` or similar — carousel collapses without explicit height |
302
+ | Using `dotPlacement="start"` with horizontal direction | `start`/`end` are only for `direction="vertical"` — use `top`/`bottom` for horizontal |
303
+ | Using `dotPlacement="top"` with `direction="vertical"` | `top`/`bottom` are only for horizontal — use `start`/`end` for vertical |
304
+ | Calling `carouselApi()?.play()` when `autoplay={false}` | `play()` is a no-op when `autoplay` prop is false |
305
+ | Caching `carouselApi()` object directly | Always call via signal accessor — the API object is recreated each render |
306
+ | Expecting `onClickSlide` for any slide click | Only fires for the currently active/visible slide |
307
+ | Passing JSX as image slides | `images` accepts `Image[]` only — `src`, `alt`, `class` — no arbitrary JSX |
308
+ | Expecting dots with single image | Dots are hidden automatically when `images.length <= 1` |
309
+
310
+ ---
311
+
312
+ ## FULL EXAMPLE — Common configurations
313
+
314
+ ```tsx
315
+ import { Carousel, CarouselFunction } from 'solid-tom-ui';
316
+ import { createSignal } from 'solid-js';
317
+
318
+ const images = [
319
+ { src: '/slides/1.webp', alt: 'Slide 1' },
320
+ { src: '/slides/2.webp', alt: 'Slide 2' },
321
+ { src: '/slides/3.webp', alt: 'Slide 3' },
322
+ { src: '/slides/4.webp', alt: 'Slide 4' },
323
+ ];
324
+
325
+ // 1. Basic with autoplay + progress dots
326
+ <Carousel
327
+ class={{ root: 'h-[400px] rounded-xl' }}
328
+ images={images}
329
+ autoplay={{ dotDuration: true }}
330
+ autoplaySpeed={4000}
331
+ />
332
+
333
+ // 2. Fade effect, no autoplay
334
+ <Carousel
335
+ class={{ root: 'h-[400px] rounded-xl' }}
336
+ images={images}
337
+ effect="fade"
338
+ autoplay={false}
339
+ dots={true}
340
+ arrows={true}
341
+ />
342
+
343
+ // 3. Vertical direction, dots on end (right)
344
+ <Carousel
345
+ class={{ root: 'h-[350px] rounded-xl' }}
346
+ images={images}
347
+ direction="vertical"
348
+ autoplay={{ dotDuration: true }}
349
+ dotPlacement="end"
350
+ />
351
+
352
+ // 4. Non-infinite (arrows hide at boundaries)
353
+ <Carousel
354
+ class={{ root: 'h-[400px] rounded-xl' }}
355
+ images={images}
356
+ autoplay={false}
357
+ infinite={false}
358
+ />
359
+
360
+ // 5. Imperative API control
361
+ const [api, setApi] = createSignal<CarouselFunction>();
362
+ const [slide, setSlide] = createSignal(0);
363
+
364
+ <div class="flex gap-2 mb-2">
365
+ <button onClick={() => api()?.prev()}>Prev</button>
366
+ <button onClick={() => api()?.next()}>Next</button>
367
+ <button onClick={() => api()?.moveTo(0)}>First</button>
368
+ <button onClick={() => api()?.pause()}>Pause</button>
369
+ <button onClick={() => api()?.play()}>Play</button>
370
+ </div>
371
+ <p>Slide: {slide() + 1} / {images.length}</p>
372
+ <Carousel
373
+ class={{ root: 'h-[400px] rounded-xl' }}
374
+ images={images}
375
+ autoplay={{ dotDuration: true }}
376
+ setCarouselFunction={setApi}
377
+ afterChange={i => setSlide(i)}
378
+ beforeChange={(cur, next) => console.log(cur, '->', next)}
379
+ onClickSlide={i => console.log('clicked slide', i)}
380
+ />
381
+
382
+ // 6. Dots only, no arrows
383
+ <Carousel
384
+ class={{ root: 'h-[300px] rounded-xl' }}
385
+ images={images}
386
+ arrows={false}
387
+ dots={true}
388
+ autoplay={{ dotDuration: true }}
389
+ />
390
+
391
+ // 7. Arrows only, no dots
392
+ <Carousel
393
+ class={{ root: 'h-[300px] rounded-xl' }}
394
+ images={images}
395
+ arrows={true}
396
+ dots={false}
397
+ autoplay={true}
398
+ />
399
+ ```
400
+ ---
401
+
402
+ ## Component Conventions
403
+
404
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `cr01`, `cr02`) per project convention.
405
+
406
+ > **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.