solid-tom-ui 1.0.8 → 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 (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 +7 -7
  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,192 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Skeleton } from 'solid-tom-ui';`
3
+ - **Export**: `Skeleton` (named export), `SkeletonProps` (type export)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Loading placeholder that replaces real content with an animated shimmer block; when `enabled` is `false`, transparently renders `children`
6
+
7
+ > Always **wrap** the real content inside `<Skeleton>` — do not render them side-by-side.
8
+
9
+ ## Props — Discriminated Union
10
+
11
+ `SkeletonProps` is a **discriminated union** on the `type` field. The `type` prop is **required** and determines which other props are available.
12
+
13
+ ### `type="layout"` — Preset complex layouts
14
+
15
+ ```ts
16
+ {
17
+ type: 'layout';
18
+ variant?: LayoutVariant;
19
+ enabled: boolean;
20
+ }
21
+ ```
22
+
23
+ ### `type="shape"` — Preset simple shapes
24
+
25
+ ```ts
26
+ {
27
+ type: 'shape';
28
+ variant?: ShapeVariant;
29
+ enabled: boolean;
30
+ }
31
+ ```
32
+
33
+ ### `type="custom"` — Fully custom via class
34
+
35
+ ```ts
36
+ {
37
+ type: 'custom';
38
+ enabled: boolean;
39
+ class: string; // required — defines size, shape, and border radius
40
+ }
41
+ ```
42
+
43
+ > **Note:** `class` is only available on `type="custom"`. `variant` is only available on `type="layout"` and `type="shape"`.
44
+
45
+ ## `enabled` Prop
46
+
47
+ `enabled` is the loading toggle:
48
+
49
+ - `enabled={true}` → renders the skeleton placeholder
50
+ - `enabled={false}` → renders `children` (real content)
51
+
52
+ ## Layout Variants
53
+
54
+ Used with `type="layout"`. Each variant renders a multi-element composition:
55
+
56
+ | Variant | Description |
57
+ | ----------------- | ---------------------------------------------------- |
58
+ | `cardImage` | Image block on top + title + 3 text lines below |
59
+ | `cardHorizontal` | Square thumbnail on the left + text lines on the right |
60
+ | `profile` | Circular avatar (centered) + name + description lines |
61
+ | `article` | Large title + subtitle + 5-line paragraph |
62
+ | `feedItem` | Small circular avatar on the left + 2 text lines |
63
+ | `stat` | Small label + large number + small sublabel |
64
+
65
+ ## Shape Variants
66
+
67
+ Used with `type="shape"`. Each variant renders a single skeleton block:
68
+
69
+ | Variant | Dimensions |
70
+ | --------------- | --------------------------------- |
71
+ | `rectangle` | `h-32 w-full rounded-lg` |
72
+ | `square` | `size-32 rounded-lg` |
73
+ | `circle` | `size-16 rounded-full` |
74
+ | `textLine` | `h-4 w-full rounded` |
75
+ | `textParagraph` | 4 lines of varying width |
76
+
77
+ ## Usage Examples
78
+
79
+ ### Layout skeleton
80
+
81
+ ```tsx
82
+ <Skeleton type="layout" variant="cardImage" enabled={isLoading()}>
83
+ {/* Real content rendered when enabled=false */}
84
+ <div class="flex flex-col gap-2">
85
+ <img src={post.image} class="h-40 w-full rounded-lg object-cover" />
86
+ <h2 class="font-semibold">{post.title}</h2>
87
+ <p class="text-sm text-base-content/70">{post.description}</p>
88
+ </div>
89
+ </Skeleton>
90
+ ```
91
+
92
+ ### Shape skeleton
93
+
94
+ ```tsx
95
+ <Skeleton type="shape" variant="circle" enabled={isLoading()}>
96
+ <img src={user.avatar} class="size-16 rounded-full" alt={user.name} />
97
+ </Skeleton>
98
+ ```
99
+
100
+ ### Custom skeleton
101
+
102
+ The `class` prop is applied directly to a `<div class="skeleton ...">`. Define size, shape, and rounding:
103
+
104
+ ```tsx
105
+ <Skeleton type="custom" enabled={isLoading()} class="h-6 w-32 rounded-full">
106
+ <span class="text-sm font-medium">{label}</span>
107
+ </Skeleton>
108
+
109
+ <Skeleton type="custom" enabled={isLoading()} class="size-20 rounded-2xl">
110
+ <img src={thumbnail} class="size-20 rounded-2xl" />
111
+ </Skeleton>
112
+ ```
113
+
114
+ ### Async data loading pattern
115
+
116
+ ```tsx
117
+ const [data, setData] = createSignal(null);
118
+ const [loading, setLoading] = createSignal(true);
119
+
120
+ onMount(async () => {
121
+ const result = await fetchUser();
122
+ setData(result);
123
+ setLoading(false);
124
+ });
125
+
126
+ // In JSX:
127
+ <Skeleton type="layout" variant="profile" enabled={loading()}>
128
+ <Show when={data()}>
129
+ {user => (
130
+ <div class="flex flex-col items-center gap-2">
131
+ <img src={user().avatar} class="size-20 rounded-full" />
132
+ <p class="font-semibold">{user().name}</p>
133
+ </div>
134
+ )}
135
+ </Show>
136
+ </Skeleton>
137
+ ```
138
+
139
+ ### Feed list with multiple skeleton items
140
+
141
+ ```tsx
142
+ <For each={loading() ? Array(5).fill(null) : posts()}>
143
+ {(post, i) => (
144
+ <Skeleton type="layout" variant="feedItem" enabled={loading()}>
145
+ <FeedItem post={post} />
146
+ </Skeleton>
147
+ )}
148
+ </For>
149
+ ```
150
+
151
+ ## Animation & Styling
152
+
153
+ The `.skeleton` class (from `skeleton.daisy.css`) applies:
154
+ - Background: `var(--color-base-300)`
155
+ - Animated sweep: a `105deg` gradient from `base-100` that slides across via `background-position-x` at `1.8s ease-in-out infinite`
156
+ - Respects `prefers-reduced-motion`: slows animation to `15s` transition duration when reduced motion is preferred
157
+ - Default border radius: `var(--radius-box)`
158
+
159
+ The animation is purely CSS — no JavaScript timers involved.
160
+
161
+ ## Render Structure
162
+
163
+ ```
164
+ <Show when={enabled} fallback={children}>
165
+ {type === 'custom'
166
+ ? <div class={cn('skeleton', class)} />
167
+ : <SkeletonDisplay type variant />
168
+ }
169
+ </Show>
170
+ ```
171
+
172
+ When `enabled=true`, `children` are never mounted. When `enabled=false`, the skeleton is never mounted. There is no overlap.
173
+
174
+ ## Class Slots
175
+
176
+ `Skeleton` uses `class` only for `type="custom"` (defines size + shape of the placeholder div). For `type="layout"` and `type="shape"`, there is no `class` prop — the shape is fully determined by `variant`.
177
+
178
+ No `Partial<Record<...>>` slot object — this component renders preset layouts without sub-element targeting.
179
+
180
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `sk01`, `sk02`) per project convention.
181
+
182
+ ## Common Mistakes
183
+
184
+ | Mistake | Fix |
185
+ | --- | --- |
186
+ | Using `type="custom"` without `class` | `class` is required for `type="custom"` — TypeScript will error |
187
+ | Placing real content alongside Skeleton | Wrap real content **inside** Skeleton as `children` |
188
+ | Omitting `type` prop | `type` is required — one of `'layout'`, `'shape'`, `'custom'` |
189
+ | Using `variant` with `type="custom"` | `variant` is not available on `type="custom"` — use `class` instead |
190
+ | Expecting skeleton animation in reduced-motion mode | Animation slows to ~15s; design should still look acceptable statically |
191
+
192
+ > **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,404 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Slider } from 'solid-tom-ui';`
3
+ - **Exports**: `Slider` (named export), `SliderProps`, `SliderTooltipProps` (type exports)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Range slider input with optional tooltip, marks, step control, and controlled/uncontrolled modes
6
+
7
+ ---
8
+
9
+ ## PROP REFERENCE (`SliderProps`)
10
+
11
+ | Prop | Type | Default | Description |
12
+ | -------------- | --------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
13
+ | `value` | `number \| [number, number]` | — | Controlled value. Single number for normal mode; `[min, max]` tuple for range mode. Must update via `onChange` to reflect changes. |
14
+ | `defaultValue` | `number \| [number, number]` | `min` or `[min, max]` | Initial value for uncontrolled mode. |
15
+ | `min` | `number` | `0` | Minimum value of the slider. |
16
+ | `max` | `number` | `100` | Maximum value of the slider. |
17
+ | `step` | `number \| null` | `1` | Step increment. Set to `null` to disable stepping — value snaps to nearest `marks` key instead. |
18
+ | `range` | `boolean` | `false` | Enable range mode. Renders two thumbs. Value becomes `[number, number]`. |
19
+ | `color` | `BaseColorProps` | `'primary'` | Color theme applied via CSS custom property `--color`. |
20
+ | `disabled` | `boolean` | `false` | Disable all interactions. Adds `sui-slider-disabled` class; `opacity: 0.5`, cursor `not-allowed`. |
21
+ | `reverse` | `boolean` | `false` | Reverse the direction (right-to-left for horizontal, top-to-bottom for vertical). |
22
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Layout axis. Vertical slider has `min-height: 200px` and `width: 32px`. |
23
+ | `dots` | `boolean` | `false` | Show step dot markers on the rail at every `step` interval. Requires `step` to be a positive number. |
24
+ | `included` | `boolean` | `true` | If `true`, renders a colored track between `min` and current value (or between the two thumbs in range mode). If `false`, hides the track. |
25
+ | `marks` | `Record<number, string \| { label: string; style?: JSX.CSSProperties }>` | — | Tick marks at specific values. Each key is a value (number), each value is a label string or `{ label, style }` object. |
26
+ | `tooltip` | `SliderTooltipProps` | `{ hidden: false }` | Tooltip configuration for thumb(s). |
27
+ | `onChange` | `(value: number \| [number\| [number, number]) => void` | — | Fires on every value change during drag, click, and keyboard interaction. In range mode, always receives `[number, number]`. |
28
+ | `class` | `Partial<Record<'root' \| 'dot' \| 'handle' \| 'mark' \| 'markText' \| 'rail' \| 'track', string>>` | — | Merge custom classes onto specific structural elements. |
29
+
30
+ ---
31
+
32
+ ## `SliderTooltipProps`
33
+
34
+ Extends `Partial<Omit<TooltipProps, 'children' | 'content'>>` with:
35
+
36
+ | Field | Type | Default | Description |
37
+ | ----------- | ----------------------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------- |
38
+ | `hidden` | `boolean` | `false` | Hide the tooltip entirely for all thumbs. |
39
+ | `forceOpen` | `boolean` | — | `true` → always show tooltip; `false` → always hide; `undefined` → show on hover/drag/focus. |
40
+ | `formatter` | `((value: number) => string \| number) \| null` | — | Custom formatter for the tooltip label. `null` → renders empty string (effectively hides text). |
41
+ | `position` | `TooltipVariantsProps['position']` | `'top'` (H), `'right'` (V) | Tooltip placement. Overridden automatically based on orientation if not set. |
42
+ | `color` | `BaseColorProps` | — | Tooltip color theme. |
43
+ | `class` | `{ root?: string; content?: string }` | — | Custom classes on tooltip root and content. |
44
+
45
+ > `forceOpen` on `SliderTooltipProps` maps to the Tooltip's `forceOpen` prop, **not** to a visibility signal. `hidden` takes precedence over `forceOpen`.
46
+
47
+ ---
48
+
49
+ ## BEHAVIORAL RULES (inferred from implementation)
50
+
51
+ ### Controlled vs Uncontrolled
52
+
53
+ - **Uncontrolled**: omit `value`. Internal `internalValue` signal manages state. `defaultValue` sets initial state once.
54
+ - **Controlled**: supply `value`. Component syncs `internalValue` reactively via `createEffect` on `p.value`. **You must update `value` in `onChange`** to reflect user interactions.
55
+ - `currentValue` memo always reads `p.value` when defined, falling back to `internalValue`.
56
+
57
+ ### Range Mode
58
+
59
+ - Enabled via `range={true}`.
60
+ - `value` and `defaultValue` must be `[number, number]` tuples.
61
+ - Two thumbs rendered (index `0` = left/bottom, index `1` = right/top).
62
+ - Thumbs cannot cross: dragging thumb 0 past thumb 1 clamps it to thumb 1's value, and vice versa.
63
+ - Rail click snaps to the **closest** thumb.
64
+ - In non-range mode, only thumb index `1` is rendered; thumb index `0` is hidden via `<Show when={isRange()}>`.
65
+
66
+ ### Value Computation
67
+
68
+ ```
69
+ percent → value:
70
+ actualPercent = reverse ? 100 - percent : percent
71
+ rawValue = min + (actualPercent / 100) * (max - min)
72
+ if step !== null → snap: Math.round(rawValue / step) * step
73
+ if step === null → snap to nearest marks key (or min/max)
74
+ clamp to [min, max]
75
+
76
+ value → percent:
77
+ percent = ((value - min) / (max - min)) * 100
78
+ if reverse → 100 - percent
79
+ ```
80
+
81
+ ### Step = null (mark-only snapping)
82
+
83
+ - When `step={null}`, value only snaps to defined `marks` keys plus `min` and `max`.
84
+ - `dots` prop is ignored when `step` is `null` or `<= 0`.
85
+
86
+ ### Track rendering (`included`)
87
+
88
+ ```
89
+ included=true + non-range: track starts at 0% (or 100% if reversed) and ends at value%
90
+ included=true + range: track spans from v0% to v1%
91
+ included=false: <Show when={p.included !== false}> → no track rendered
92
+ ```
93
+
94
+ ### Tooltip visibility logic
95
+
96
+ ```
97
+ tooltip.hidden === true → always hidden (Tooltip hidden prop)
98
+ tooltip.forceOpen === true → always shown
99
+ tooltip.forceOpen === false → always hidden
100
+ tooltip.forceOpen undefined → shown when: activeThumb === thumbIndex OR hoveredThumb === thumbIndex
101
+ ```
102
+
103
+ Hover triggers: `onMouseEnter` / `onFocus` → `setHoveredThumb(index)`.
104
+ Drag triggers: `onMouseDown` / `onTouchStart` → `setActiveThumb(index)`.
105
+
106
+ ### Drag mechanics
107
+
108
+ - `onMouseDown` / `onTouchStart` on a thumb attaches global `mousemove` / `touchmove` listeners to `document`.
109
+ - Listeners removed on `mouseup` / `touchend`.
110
+ - `activeThumb` signal is set during drag, cleared on release.
111
+ - Prevents default to stop text selection during drag.
112
+
113
+ ### Vertical orientation
114
+
115
+ - Rail and track swap `width`/`height` roles.
116
+ - Position uses `bottom: %` instead of `left: %`.
117
+ - Tooltip defaults to `position="right"`.
118
+ - Handle wrapper uses `transform: translate(-50%, 50%)` (vs `translate(-50%, -50%)` horizontal).
119
+ - Container: `width: 32px`, `min-height: 200px`, `flex-direction: column`.
120
+
121
+ ### Marks rendering
122
+
123
+ - Each mark renders two elements: a tick `div.sui-slider-mark` and a label `span.sui-slider-mark-text`.
124
+ - Active styling (colored tick + label) applied when the mark value falls within `isInRange(value)`.
125
+ - Custom `style` from mark object is merged with position style on the label span.
126
+
127
+ ### Dots rendering
128
+
129
+ - Dots generated from `min` to `max` stepping by `step`.
130
+ - Each dot is a `div.sui-slider-dot` positioned absolutely on the rail.
131
+ - Active dot (colored border) when the dot value is within the current range (`isInRange`).
132
+ - Dots are not rendered if `dots=false`, `step=null`, or `step <= 0`.
133
+
134
+ ---
135
+
136
+ ## USAGE PATTERNS
137
+
138
+ ### 1. Minimal uncontrolled
139
+
140
+ ```tsx
141
+ <Slider />
142
+ // Renders horizontal slider, 0–100, default value = 0
143
+ ```
144
+
145
+ ### 2. Controlled with state
146
+
147
+ ```tsx
148
+ const [val, setVal] = createSignal(40);
149
+
150
+ <Slider value={val()} onChange={v => setVal(v as number)} />;
151
+ ```
152
+
153
+ ### 3. Range slider (two thumbs)
154
+
155
+ ```tsx
156
+ const [range, setRange] = createSignal<[number, number]>([20, 70]);
157
+
158
+ <Slider range value={range()} onChange={v => setRange(v as [number, number])} />;
159
+ ```
160
+
161
+ ### 4. Custom min / max / step
162
+
163
+ ```tsx
164
+ <Slider min={0} max={1000} step={50} defaultValue={200} />
165
+ ```
166
+
167
+ ### 5. With marks
168
+
169
+ ```tsx
170
+ <Slider
171
+ min={0}
172
+ max={100}
173
+ marks={{
174
+ 0: '0°C',
175
+ 25: '25°C',
176
+ 50: { label: '50°C', style: { color: 'orange' } },
177
+ 100: { label: '100°C', style: { color: 'red', fontWeight: 'bold' } },
178
+ }}
179
+ />
180
+ ```
181
+
182
+ ### 6. Marks-only snapping (`step={null}`)
183
+
184
+ ```tsx
185
+ <Slider step={null} marks={{ 0: 'Low', 50: 'Mid', 100: 'High' }} defaultValue={50} />
186
+ // Value only snaps to 0, 50, or 100
187
+ ```
188
+
189
+ ### 7. Show step dots
190
+
191
+ ```tsx
192
+ <Slider min={0} max={10} step={1} dots />
193
+ ```
194
+
195
+ ### 8. Vertical orientation
196
+
197
+ ```tsx
198
+ <div style={{ height: '300px' }}>
199
+ <Slider orientation="vertical" defaultValue={60} />
200
+ </div>
201
+ // Container must have explicit height for vertical slider to be visible
202
+ ```
203
+
204
+ ### 9. Reversed direction
205
+
206
+ ```tsx
207
+ // Horizontal: value increases right-to-left
208
+ <Slider reverse defaultValue={30} />
209
+
210
+ // Vertical: value increases top-to-bottom
211
+ <Slider orientation="vertical" reverse defaultValue={30} />
212
+ ```
213
+
214
+ ### 10. Always-visible tooltip
215
+
216
+ ```tsx
217
+ <Slider defaultValue={50} tooltip={{ forceOpen: true }} />
218
+ ```
219
+
220
+ ### 11. Custom tooltip formatter
221
+
222
+ ```tsx
223
+ <Slider
224
+ min={0}
225
+ max={1}
226
+ step={0.01}
227
+ defaultValue={0.5}
228
+ tooltip={{ formatter: v => `${(v * 100).toFixed(0)}%` }}
229
+ />
230
+ ```
231
+
232
+ ### 12. Hide tooltip
233
+
234
+ ```tsx
235
+ // Method 1: hide via hidden
236
+ <Slider tooltip={{ hidden: true }} />
237
+
238
+ // Method 2: always-hidden via forceOpen=false
239
+ <Slider tooltip={{ forceOpen: false }} />
240
+
241
+ // Method 3: formatter returns empty (text hidden but tooltip still renders)
242
+ <Slider tooltip={{ formatter: null }} />
243
+ ```
244
+
245
+ ### 13. No track (included=false)
246
+
247
+ ```tsx
248
+ <Slider included={false} defaultValue={40} />
249
+ // Only rail and thumb shown; no colored fill
250
+ ```
251
+
252
+ ### 14. Custom colors
253
+
254
+ ```tsx
255
+ <Slider color="success" defaultValue={70} />
256
+ <Slider color="warning" defaultValue={50} />
257
+ <Slider color="error" defaultValue={30} />
258
+ ```
259
+
260
+ ### 15. Custom classes on elements
261
+
262
+ ```tsx
263
+ <Slider
264
+ defaultValue={50}
265
+ class={{
266
+ root: 'my-4',
267
+ rail: 'rounded-full',
268
+ track: 'bg-linear-to-r from-green-400 to-blue-500',
269
+ handle: 'border-4',
270
+ mark: 'h-3',
271
+ markText: 'text-xs font-bold',
272
+ dot: 'border-2',
273
+ }}
274
+ />
275
+ ```
276
+
277
+ ### 16. Disabled
278
+
279
+ ```tsx
280
+ <Slider defaultValue={40} disabled />
281
+ // All interactions blocked; opacity 0.5; cursor not-allowed
282
+ ```
283
+
284
+ ### 17. Full-featured example
285
+
286
+ ```tsx
287
+ const [val, setVal] = createSignal<[number, number]>([20, 80]);
288
+
289
+ <Slider
290
+ range
291
+ value={val()}
292
+ onChange={v => setVal(v as [number, number])}
293
+ min={0}
294
+ max={100}
295
+ step={5}
296
+ dots
297
+ marks={{ 0: 'Start', 50: 'Mid', 100: 'End' }}
298
+ tooltip={{ formatter: v => `${v}%`, forceOpen: true }}
299
+ color="primary"
300
+ class={{ root: 'my-6' }}
301
+ />;
302
+ ```
303
+
304
+ ---
305
+
306
+ ## CSS CLASSES (public API for customization)
307
+
308
+ | Class | Applied to |
309
+ | ----------------------------- | -------------------------------------------------- |
310
+ | `sui-slider` | Root `<div>` |
311
+ | `sui-slider-vertical` | Root `<div>` when `orientation='vertical'` |
312
+ | `sui-slider-disabled` | Root `<div>` when `disabled=true` |
313
+ | `sui-slider-rail` | Rail `<div>` (full track background) |
314
+ | `sui-slider-track` | Colored fill `<div>` (inside rail) |
315
+ | `sui-slider-handle-wrapper` | Absolutely-positioned wrapper per thumb |
316
+ | `sui-slider-handle` | Circular thumb `<div>` |
317
+ | `sui-slider-handle-active` | Thumb when being dragged (`activeThumb === index`) |
318
+ | `sui-slider-dot` | Step dot `<div>` |
319
+ | `sui-slider-dot-active` | Dot within the active range |
320
+ | `sui-slider-mark` | Mark tick `<div>` |
321
+ | `sui-slider-mark-active` | Tick within the active range |
322
+ | `sui-slider-mark-text` | Mark label `<span>` |
323
+ | `sui-slider-mark-text-active` | Label within the active range |
324
+
325
+ Use `class={{ root, rail, track, handle, dot, mark, markText }}` prop to append custom classes.
326
+
327
+ ---
328
+
329
+ ## CSS CUSTOM PROPERTIES (theming)
330
+
331
+ All set on `.sui-slider` and overridable via CSS:
332
+
333
+ | Variable | Default | Role |
334
+ | ---------------------------- | ---------------------------------------------- | -------------------------- |
335
+ | `--slider-rail-bg` | `oklch(0.9 0 0)` | Rail background color |
336
+ | `--slider-track-bg` | `var(--color)` | Track fill color |
337
+ | `--slider-track-bg-hover` | `color-mix(in oklch, var(--color) 80%, black)` | Track + handle hover color |
338
+ | `--slider-handle-bg` | `#fff` | Thumb background |
339
+ | `--slider-handle-border` | `var(--color)` | Thumb border color |
340
+ | `--slider-handle-size` | `14px` | Thumb diameter |
341
+ | `--slider-rail-height` | `4px` | Rail/track thickness |
342
+ | `--slider-dot-size` | `8px` | Dot diameter |
343
+ | `--slider-mark-color` | `oklch(0.6 0 0)` | Inactive mark text color |
344
+ | `--slider-mark-active-color` | `var(--color)` | Active mark text color |
345
+
346
+ `--color` is injected by `getColor(p.color)` utility from the design system color palette.
347
+
348
+ ---
349
+
350
+ ## ACCESSIBILITY
351
+
352
+ - Each thumb renders as `role="slider"` with:
353
+ - `aria-valuemin={min}`
354
+ - `aria-valuemax={max}`
355
+ - `aria-valuenow={currentThumbValue}`
356
+ - `aria-disabled={disabled}`
357
+ - `tabIndex={0}` on enabled thumbs; `tabIndex={-1}` when disabled.
358
+ - Focus triggers `setHoveredThumb` → shows tooltip.
359
+ - No built-in keyboard arrow-key value change. Consumers must implement keyboard handlers if needed.
360
+
361
+ ---
362
+
363
+ ## CONSTRAINTS & EDGE CASES
364
+
365
+ - `value` prop does NOT auto-initialize `internalValue` at mount if different from `defaultValue` — `getInitialValue()` runs once at creation time. Always set `defaultValue` for uncontrolled initial state; use `value` for controlled.
366
+ - In range mode, the `onChange` callback always fires with `[number, number]` — cast via `v as [number, number]`.
367
+ - In non-range mode, `onChange` always fires with `number` — cast via `v as number`.
368
+ - `valuesArray` always returns `[number, number]` internally. For non-range: `[min, currentValue]`. This means the track always starts at `min` in the non-reversed, non-range case.
369
+ - `step={null}` requires `marks` to be defined; without marks, value snaps to `min` or `max` only.
370
+ - Vertical slider container **must have explicit height** — the slider uses `height: 100%` and the default `min-height: 200px` applies only to `.sui-slider-vertical` itself.
371
+ - `tooltip.formatter = null` renders an empty string (`''`) as tooltip content — the tooltip element still renders, just with no visible text.
372
+ - `getTooltipProps()` only passes `position`, `color`, and `class` from `SliderTooltipProps` to `<Tooltip>`. Other `TooltipProps` fields (`minScreen`, `maxScreen`) are stripped.
373
+ - `dots` renders one dot per step from `min` to `max`. For large ranges with small steps, this can generate many DOM nodes — use with care (e.g., avoid `min=0 max=1000 step=1 dots`).
374
+ - Range mode clamps but does not swap thumbs: dragging thumb 0 past thumb 1 stops it at thumb 1's current value (and vice versa). Values never invert.
375
+
376
+ ---
377
+
378
+ ## DO / DON'T
379
+
380
+ **DO**
381
+
382
+ - Always pair `value` with `onChange` for controlled usage — update state inside `onChange`.
383
+ - Use `range` + `[number, number]` tuple together — they are semantically coupled.
384
+ - Set `step={null}` together with `marks` when you want mark-only snapping.
385
+ - Wrap vertical slider in a container with explicit height: `<div style={{ height: '300px' }}>`.
386
+ - Use `tooltip={{ forceOpen: true }}` for always-visible value labels (e.g., in settings panels).
387
+ - Use `class={{ root: 'my-4' }}` for spacing without touching internal structure.
388
+ - Import from the barrel: `import { Slider } from 'solid-tom-ui'`.
389
+
390
+ **DON'T**
391
+
392
+ - Don't use `value` as a number in range mode or as `[number, number]` in non-range mode — types mismatch silently.
393
+ - Don't set `dots={true}` with `step={null}` — dots will not render.
394
+ - Don't set `dots={true}` with extremely small step values over large ranges — generates excessive DOM nodes.
395
+ - Don't rely on keyboard arrow keys to change value — they are not implemented; add `onKeyDown` manually if needed.
396
+ - Don't apply `height` on the slider root directly for vertical layout — set height on the **parent** container instead.
397
+ - Don't pass `content` or `customContent` inside `tooltip` prop — those fields are omitted from `SliderTooltipProps`; use `formatter` to customize the displayed value.
398
+ ---
399
+
400
+ ## Component Conventions
401
+
402
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `sd01`, `sd02`) per project convention.
403
+
404
+ > **Unique IDs**: if this component needs to generate HTML `id` attributes, always use `createUniqueId()` from `solid-js` — never `Math.random()` or `Date.now()`.