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,359 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Modal, createModal, closeAllModals } from 'solid-tom-ui';`
3
+ - **Exports**: `Modal` (declarative JSX), `createModal` (imperative API), `closeAllModals`, `ModalType` (type export)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Modal dialog built on native `<dialog>` — supports both declarative JSX and imperative `createModal()` API
6
+
7
+ ---
8
+
9
+ ## PROP REFERENCE (`ModalType`)
10
+
11
+ | Prop | Type | Default | Description |
12
+ |---|---|---|---|
13
+ | `open` | `boolean` | `true` | Controls visibility. `true` → calls `dialog.showModal()`. `false` → calls `dialog.close()`. |
14
+ | `onClose` | `() => void` | `() => {}` | Required callback — fired on native `close` event (ESC, backdrop click, close button). **Must set `open` to `false` here in controlled usage.** |
15
+ | `header` | `SolidComponent` | Modal ID fallback | JSX rendered inside `.sui-modal-header`. |
16
+ | `body` | `SolidComponent` | Fallback paragraph | JSX rendered inside `.sui-modal-body`. Pass as function `() => <JSX>` to defer evaluation. |
17
+ | `footer` | `SolidComponent` | `<></>` | JSX rendered inside `.sui-modal-footer`. Pass as function `() => <JSX>` or as static JSX. |
18
+ | `width` | `string` | — | Sets both `width` and `min-width` on `.modal-box`. Accepts any CSS size (`'500px'`, `'80vw'`, etc.). |
19
+ | `closeOnOutsideClick` | `boolean` | `true` | Renders a `<form method="dialog">` backdrop. Click outside `.modal-box` closes the dialog. |
20
+ | `closable` | `boolean` | `true` | Show/hide the X close button in the top-right corner of `.modal-box`. |
21
+ | `mask` | `boolean \| { enabled: boolean; blur: boolean }` | `true` | Overlay behind the modal. `true` → default overlay + blur. `false` → no overlay. `{ enabled: true, blur: false }` → overlay without blur. |
22
+ | `preRender` | `boolean` | `false` | If `true`, component is always mounted in the DOM regardless of `open`. If `false`, component unmounts when `open` is `false` (via `<Show>`). |
23
+ | `animate` | `{ name: AnimateType } & AnimationConfig` | `{ name: 'puffInCenter', duration: '300ms' }` | CSS animation played on `.modal-box` when modal opens. Set `name: 'none'` to disable. |
24
+ | `class` | `Partial<Record<'dialog' \| 'modal' \| 'closeButton', string>>` | — | Merge custom classes onto specific elements. |
25
+
26
+ ### `AnimateType` values
27
+
28
+ ```
29
+ 'none' | 'lightSpeedInRight' | 'lightSpeedInLeft' | 'fadeIn' | 'fadeInLeft'
30
+ | 'fadeInRight' | 'fadeInDown' | 'fadeInUp' | 'bounceIn' | 'scaleInCenter'
31
+ | 'slideInFwdCenter' | 'slideInBck' | 'tiltIn' | 'swingInRightBck'
32
+ | 'puffInCenter' | 'scaleInBl'
33
+ ```
34
+
35
+ ### `AnimationConfig` fields (all optional)
36
+
37
+ | Field | Type | Default |
38
+ |---|---|---|
39
+ | `duration` | `` `${number}s` \| `${number}ms` `` | `'1s'` |
40
+ | `timingFunction` | `'ease' \| 'ease-in' \| 'ease-out' \| ...` | `'ease'` |
41
+ | `delay` | `TimeUnit` | `'0s'` |
42
+ | `iterationCount` | `number \| 'infinite'` | `1` |
43
+ | `direction` | `'normal' \| 'reverse' \| 'alternate' \| 'alternate-reverse'` | `'normal'` |
44
+ | `fillMode` | `'none' \| 'forwards' \| 'backwards' \| 'both'` | `'none'` |
45
+ | `playState` | `'running' \| 'paused'` | `'running'` |
46
+
47
+ ---
48
+
49
+ ## IMPERATIVE API (`modalContext`)
50
+
51
+ ### `createModal(options)`
52
+
53
+ ```ts
54
+ function createModal(options: Omit<ModalType, 'open' | 'preRender'>): ModalInstance
55
+ ```
56
+
57
+ - Mounts a `ComponentModal` imperatively into `document.body` via `insert`.
58
+ - Returns a `ModalInstance` with a `destroy()` method.
59
+ - The modal opens immediately (`isOpen = true`).
60
+ - Calling `onClose` in options automatically destroys the instance after 150ms.
61
+ - Tracks all active instances internally in `activeModalInstances`.
62
+
63
+ ```ts
64
+ type ModalInstance = {
65
+ destroy: () => void; // Immediately unmounts the modal
66
+ };
67
+ ```
68
+
69
+ ### `closeAllModals()`
70
+
71
+ ```ts
72
+ function closeAllModals(): void
73
+ ```
74
+
75
+ - Calls `destroy()` on all currently active modal instances.
76
+ - Use for global cleanup (e.g., route changes, session expiration).
77
+
78
+ ---
79
+
80
+ ## BEHAVIORAL RULES (inferred from implementation)
81
+
82
+ ### Controlled pattern
83
+
84
+ `Modal` is always **fully controlled**. The parent must:
85
+ 1. Hold `open` state via `createSignal`.
86
+ 2. Set `open` to `false` inside `onClose`.
87
+
88
+ If `onClose` does not update the signal, the dialog closes natively but `open` stays `true` → next render re-opens the dialog.
89
+
90
+ ### Native `<dialog>` element
91
+
92
+ The component renders a native HTML `<dialog>`. It uses:
93
+ - `dialog.showModal()` when `open` becomes `true`.
94
+ - `dialog.close()` when `open` becomes `false`.
95
+ - The `close` DOM event maps to the `onClose` prop.
96
+ - ESC key fires the native `close` event automatically.
97
+ - Rendered via `<Portal>` — always mounts to `document.body`, outside component tree.
98
+
99
+ ### Stacking / Z-index
100
+
101
+ - Each modal gets a unique ID via `createUniqueId()`.
102
+ - Active modal IDs are tracked in a module-level signal `modalIds`.
103
+ - Overlay (`.modalOverlay`) is only applied to the **topmost** modal (`modalId === modalIds().at(-1)`).
104
+ - Lower modals lose the overlay class, keeping the visual stack clean.
105
+
106
+ ### `preRender` behavior
107
+
108
+ ```
109
+ preRender=false (default) → <Show when={open}><Modal /></Show>
110
+ → component is unmounted when closed; internal state resets on next open.
111
+
112
+ preRender=true → <Modal /> always mounted
113
+ → component persists in DOM; internal state preserved between open/close.
114
+ ```
115
+
116
+ Use `preRender={true}` when:
117
+ - Modal content is expensive to re-initialize.
118
+ - You need to preserve form state across open/close cycles.
119
+
120
+ Use `preRender={false}` (default) when:
121
+ - Modal content should reset each time it opens.
122
+ - Memory efficiency matters.
123
+
124
+ ### Cleanup
125
+
126
+ `onCleanup` removes the modal's ID from `modalIds` when the component unmounts. Prevents stale overlay assignments in nested modal scenarios.
127
+
128
+ ---
129
+
130
+ ## USAGE PATTERNS
131
+
132
+ ### 1. Minimal controlled modal
133
+
134
+ ```tsx
135
+ const [open, setOpen] = createSignal(false);
136
+
137
+ <Button onClick={() => setOpen(true)}>Open</Button>
138
+ <Modal
139
+ open={open()}
140
+ onClose={() => setOpen(false)}
141
+ body={() => <p>Modal content</p>}
142
+ />
143
+ ```
144
+
145
+ ### 2. With header, body, footer
146
+
147
+ ```tsx
148
+ <Modal
149
+ open={open()}
150
+ onClose={() => setOpen(false)}
151
+ header={<h2 class="text-lg font-bold">Title</h2>}
152
+ body={() => <p>Body content</p>}
153
+ footer={
154
+ <div class="flex justify-end gap-2">
155
+ <Button variant="simple" onClick={() => setOpen(false)}>Cancel</Button>
156
+ <Button variant="solid" color="primary" onClick={handleSave}>Save</Button>
157
+ </div>
158
+ }
159
+ />
160
+ ```
161
+
162
+ ### 3. Custom width
163
+
164
+ ```tsx
165
+ <Modal
166
+ open={open()}
167
+ onClose={() => setOpen(false)}
168
+ width="900px"
169
+ class={{ modal: 'h-[500px]' }}
170
+ body={() => <MyLargeContent />}
171
+ />
172
+ ```
173
+
174
+ ### 4. Disable outside click close
175
+
176
+ ```tsx
177
+ <Modal
178
+ open={open()}
179
+ onClose={() => setOpen(false)}
180
+ closeOnOutsideClick={false}
181
+ body={() => <ImportantForm />}
182
+ />
183
+ ```
184
+
185
+ ### 5. No close button
186
+
187
+ ```tsx
188
+ <Modal
189
+ open={open()}
190
+ onClose={() => setOpen(false)}
191
+ closable={false}
192
+ body={() => <div>No X button shown</div>}
193
+ />
194
+ ```
195
+
196
+ ### 6. No overlay / custom mask
197
+
198
+ ```tsx
199
+ // No overlay at all
200
+ <Modal open={open()} onClose={() => setOpen(false)} mask={false} body={() => <div />} />
201
+
202
+ // Overlay without blur
203
+ <Modal
204
+ open={open()}
205
+ onClose={() => setOpen(false)}
206
+ mask={{ enabled: true, blur: false }}
207
+ body={() => <div />}
208
+ />
209
+ ```
210
+
211
+ ### 7. Custom animation
212
+
213
+ ```tsx
214
+ <Modal
215
+ open={open()}
216
+ onClose={() => setOpen(false)}
217
+ animate={{ name: 'fadeInDown', duration: '200ms', timingFunction: 'ease-out' }}
218
+ body={() => <div>Animated</div>}
219
+ />
220
+
221
+ // Disable animation
222
+ <Modal
223
+ open={open()}
224
+ onClose={() => setOpen(false)}
225
+ animate={{ name: 'none' }}
226
+ body={() => <div>No animation</div>}
227
+ />
228
+ ```
229
+
230
+ ### 8. Preserve state across open/close (`preRender`)
231
+
232
+ ```tsx
233
+ <Modal
234
+ open={open()}
235
+ onClose={() => setOpen(false)}
236
+ preRender={true}
237
+ body={() => <ExpensiveForm />}
238
+ />
239
+ ```
240
+
241
+ ### 9. Custom classes on inner elements
242
+
243
+ ```tsx
244
+ <Modal
245
+ open={open()}
246
+ onClose={() => setOpen(false)}
247
+ class={{
248
+ dialog: 'my-dialog-class',
249
+ modal: 'rounded-2xl shadow-2xl',
250
+ closeButton: 'text-red-500',
251
+ }}
252
+ body={() => <div />}
253
+ />
254
+ ```
255
+
256
+ ### 10. Nested modals (multi-level)
257
+
258
+ ```tsx
259
+ // Level 1
260
+ const [l1, setL1] = createSignal(false);
261
+ // Level 2
262
+ const [l2, setL2] = createSignal(false);
263
+
264
+ <Modal open={l1()} onClose={() => setL1(false)} body={() => (
265
+ <>
266
+ <Button onClick={() => setL2(true)}>Open L2</Button>
267
+ <Modal open={l2()} onClose={() => setL2(false)} body={() => <div>L2 content</div>} preRender={false} />
268
+ </>
269
+ )} />
270
+ ```
271
+
272
+ Overlay is only applied to the topmost active modal automatically.
273
+
274
+ ### 11. Imperative API — fire-and-forget
275
+
276
+ ```tsx
277
+ import { createModal } from 'solid-tom-ui';
278
+
279
+ function showAlert() {
280
+ const modal = createModal({
281
+ header: <h2>Alert</h2>,
282
+ body: () => <p>Something happened.</p>,
283
+ footer: (
284
+ <Button onClick={() => modal.destroy()}>OK</Button>
285
+ ),
286
+ onClose: () => {}, // optional extra cleanup
287
+ });
288
+ }
289
+ ```
290
+
291
+ ### 12. Close all modals (e.g., on route change)
292
+
293
+ ```tsx
294
+ import { closeAllModals } from 'solid-tom-ui';
295
+
296
+ onCleanup(() => closeAllModals());
297
+ ```
298
+
299
+ ---
300
+
301
+ ## CSS CLASSES (public API for customization)
302
+
303
+ | Class | Applied to |
304
+ |---|---|
305
+ | `modal` | `<dialog>` root element |
306
+ | `modalOverlay` | `<dialog>` when it is the topmost modal and `mask` is active |
307
+ | `modal-box` | Inner content container `<div>` |
308
+ | `sui-modal-header` | Header slot `<div>` |
309
+ | `sui-modal-body` | Body slot `<div>` |
310
+ | `sui-modal-footer` | Footer slot `<div>` |
311
+
312
+ Use `class={{ dialog: '...', modal: '...', closeButton: '...' }}` prop to append classes to specific elements.
313
+
314
+ ---
315
+
316
+ ## ANIMATION SYSTEM
317
+
318
+ - Animation runs via CSS custom property `--openAnimate` set as inline style on `.modal-box`.
319
+ - `renderCSSAnimation(config)` from `@/utils/helper` generates the `animation` shorthand string.
320
+ - Animation triggers on `.modal[open] .modal-box` (CSS layer `components`).
321
+ - Changing `animate.name` to `'none'` prevents setting `--openAnimate` → no animation.
322
+ - Animation only fires on **open**, not on close (native `<dialog>` has no built-in close animation hook).
323
+
324
+ ---
325
+
326
+ ## CONSTRAINTS & EDGE CASES
327
+
328
+ - `onClose` is **required** in practice — without updating `open` signal inside it, the modal will re-open immediately after closing.
329
+ - `body`, `header`, `footer` accept `SolidComponent` (i.e., `() => JSX.Element` or `JSX.Element`). Pass expensive subtrees as functions `() => <JSX>` to avoid evaluating them before the modal opens.
330
+ - `Portal` renders into `document.body`. The modal is outside any parent's DOM subtree — CSS `overflow: hidden` on ancestors does NOT clip the modal.
331
+ - `createModal` does NOT accept `open` or `preRender` — the modal is always immediately open and never pre-renders.
332
+ - `createModal` instances must be destroyed manually via `instance.destroy()` or `closeAllModals()` if `onClose` is not configured to auto-destroy.
333
+ - Multiple simultaneous `createModal` calls stack correctly — each gets its own `createRoot` reactive scope.
334
+ - The `close` DOM event fires **after** the dialog is already visually closed. Do not rely on `onClose` timing for animations.
335
+
336
+ ---
337
+
338
+ ## DO / DON'T
339
+
340
+ **DO**
341
+ - Always pair `open={signal()}` with `onClose={() => setSignal(false)}`.
342
+ - Pass `body` and expensive content as `() => <JSX>` (function) to defer rendering.
343
+ - Use `preRender={true}` when you need to retain form state between open/close cycles.
344
+ - Use `createModal` for fire-and-forget alerts, confirmations, or notifications outside the component tree.
345
+ - Use `class={{ modal: '...' }}` to control `.modal-box` dimensions (height, border-radius, etc.).
346
+ - Import from the barrel: `import { Modal, createModal, closeAllModals } from 'solid-tom-ui'`.
347
+
348
+ **DON'T**
349
+ - Don't omit `onClose` or leave it as a no-op — the dialog will fight between native closed state and `open` prop.
350
+ - Don't use `ComponentModal` directly unless you need the raw unguarded component (no `<Show>` wrapping).
351
+ - Don't import `ModalExample` in production — it's a demo component only.
352
+ - Don't expect `createModal` instances to auto-cleanup — call `destroy()` or `closeAllModals()` when appropriate.
353
+ - Don't nest `<Portal>` inside modal body — the modal itself already renders via `<Portal>`.
354
+ - Don't try to control the overlay on lower-level modals — the stacking system handles it automatically via `modalIds`.
355
+ ---
356
+
357
+ ## Component Conventions
358
+
359
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `mo01`, `mo02`) per project convention.