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,476 @@
1
+ ## COMPONENT IDENTITY
2
+ - **Import**: `import { Menu } from 'solid-tom-ui';`
3
+ - **Export**: `Menu` (named export), `MenuVariantsProps`, `MenuProps` (type exports)
4
+ - **Framework**: SolidJS
5
+ - **Purpose**: Hierarchical navigation menu with nested folders, active highlighting, and horizontal/vertical orientation
6
+
7
+ ## TYPE REFERENCE
8
+
9
+ ### `MenuProps`
10
+
11
+ | Prop | Type | Default | Description |
12
+ |---|---|---|---|
13
+ | `id` | `string` | — | HTML `id` on the root `<ul>` element. |
14
+ | `color` | `BaseColorProps` | `'secondary'` | Color theme applied via `getColor()`. |
15
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Visual size variant via CVA. |
16
+ | `direction` | `'vertical' \| 'horizontal'` | `'vertical'` | Layout direction. Horizontal collapses sibling root folders on expand. |
17
+ | `highlightActive` | `boolean` | `true` | Add `_6ca32a` active class to the clicked item and its ancestor path. |
18
+ | `defaultExpanded` | `boolean` | `false` | Default expand state for all folders that do not specify their own `defaultExpanded`. |
19
+ | `class` | `Partial<Record<'root' \| 'itemWrap' \| 'itemHeader', string>>` | — | Merge custom classes onto specific structural elements. |
20
+ | `onItemClick` | `(info: ItemClickInfo) => void` | — | Fires on any item click (file, folder, title). |
21
+ | `onError` | `(info: MenuErrorInfo) => void` | — | Fires when any lazy load fails (root or folder). `info.source` distinguishes the two cases. |
22
+ | `setMenuFunction` | `Setter<MenuFunction \| undefined>` | — | Receives the imperative API object after mount. Pass a signal setter to gain external control. |
23
+ | `items` | `MenuItem[]` | — | **Sync mode**: static array of menu items. Mutually exclusive with `lazyItems`. |
24
+ | `lazyItems` | `() => Promise<MenuItem[]>` | — | **Async mode**: async loader for root-level items. Runs immediately on mount. Mutually exclusive with `items`. |
25
+
26
+ > `MenuProps` is a discriminated union: you must provide either `items` OR `lazyItems`, not both.
27
+
28
+ ---
29
+
30
+ ### `MenuItem` — Item Types
31
+
32
+ `MenuItem = FileItem | FolderItem | TitleItem`
33
+
34
+ #### `FileItem`
35
+
36
+ ```ts
37
+ type FileItem = {
38
+ type: 'file';
39
+ id?: string;
40
+ content: SolidComponent; // string | JSX.Element | () => JSX.Element
41
+ disabled?: boolean;
42
+ data?: Record<string, any>;
43
+ };
44
+ ```
45
+
46
+ - Rendered as `<li class="file">` with a `<div>` wrapper.
47
+ - Clickable; fires `onItemClick` with `type: 'file'`.
48
+
49
+ #### `FolderItem` (Sync or Lazy)
50
+
51
+ ```ts
52
+ // Sync folder
53
+ type SyncFolder = {
54
+ type: 'folder';
55
+ id?: string;
56
+ content: SolidComponent;
57
+ disabled?: boolean;
58
+ data?: Record<string, any>;
59
+ defaultExpanded?: boolean;
60
+ items: MenuItem[]; // preloaded children
61
+ };
62
+
63
+ // Lazy folder
64
+ type LazyFolder = {
65
+ type: 'folder';
66
+ id?: string;
67
+ content: SolidComponent;
68
+ disabled?: boolean;
69
+ data?: Record<string, any>;
70
+ defaultExpanded?: boolean;
71
+ lazyItems: () => Promise<MenuItem[]>; // async loader
72
+ };
73
+ ```
74
+
75
+ - Rendered as `<li class="folder">` containing a `<details>`/`<summary>` pair.
76
+ - Toggle opens/closes the folder; `onItemClick` fires with `type: 'folder'` and `isExpanded`.
77
+ - Lazy folders show a loading spinner while fetching; on error, show a `toast.error` and collapse.
78
+
79
+ #### `TitleItem`
80
+
81
+ ```ts
82
+ type TitleItem = {
83
+ type: 'title';
84
+ id?: string;
85
+ content: SolidComponent;
86
+ disabled?: boolean;
87
+ data?: Record<string, any>;
88
+ items: (FileItem | TitleItem | SyncFolder)[]; // no lazy folders allowed in title children
89
+ };
90
+ ```
91
+
92
+ - Rendered as `<li class="title">` with an `<h4 class="menu-title">` header.
93
+ - Clicking the header toggles active highlight; fires `onItemClick` with `type: 'title'`.
94
+ - Children are always sync — `LazyFolder` is **not** allowed as a `TitleItem` child.
95
+
96
+ ---
97
+
98
+ ### `ItemClickInfo`
99
+
100
+ ```ts
101
+ type ItemClickInfo = {
102
+ id: string; // item's resolved id (auto-generated if not set)
103
+ path: string[]; // ancestor id chain from root to this item
104
+ type: 'file' | 'folder' | 'title';
105
+ isExpanded?: boolean; // only present for folder clicks
106
+ data?: Record<string, any>; // item's data field, if set
107
+ };
108
+ ```
109
+
110
+ ### `MenuErrorInfo`
111
+
112
+ ```ts
113
+ type MenuErrorInfo = {
114
+ source: 'root' | 'folder'; // 'root' = root lazyItems failed; 'folder' = lazy folder children failed
115
+ itemId?: string; // folder id (only when source = 'folder')
116
+ path?: string[]; // ancestor path to the folder (only when source = 'folder')
117
+ error: unknown; // the raw caught error
118
+ message: string; // normalized error message string
119
+ };
120
+ ```
121
+
122
+ ---
123
+
124
+ ### `MenuFunction` — Imperative API
125
+
126
+ Obtained via `setMenuFunction` prop. All methods operate on the DOM directly via id lookup.
127
+
128
+ | Method | Signature | Description |
129
+ |---|---|---|
130
+ | `focusById` | `(id: string) => void` | Expand all ancestors of the node and apply active highlight to its full path. |
131
+ | `collapseById` | `(id: string) => void` | Close the folder's `<details>` and remove active highlight from it and its descendants. |
132
+ | `refreshById` | `(id: string) => void` | Force-reload a lazy folder's children (re-calls `lazyItems`). Only works on mounted (previously expanded) lazy folders. |
133
+ | `refreshAll` | `() => void` | Force-reload all mounted lazy folders simultaneously. |
134
+ | `collapseAll` | `() => void` | Close all `<details>` elements in the menu tree. |
135
+ | `expandedAll` | `() => void` | Open all `<details>` elements in the menu tree. |
136
+
137
+ ---
138
+
139
+ ## BEHAVIORAL RULES (inferred from implementation)
140
+
141
+ ### Sync vs Lazy (root level)
142
+
143
+ - **Sync** (`items`): items rendered immediately; reactive — updating `items` prop re-renders the whole tree and clears both registries.
144
+ - **Lazy** (`lazyItems`): `lazyItems()` is called once on mount; result cached in `rootItems` signal. Shows a full-screen spinner while loading. On error, shows "No menu items available" with a "Try again" button.
145
+
146
+ ### Lazy Folder Loading
147
+
148
+ - Children are loaded on first expand (`shouldLoad` signal transitions to `true`).
149
+ - Already-loaded items are **not** re-fetched on subsequent expands (cached in `loadedItems` signal).
150
+ - `refreshById` / `refreshAll` bypass the cache and force a re-fetch.
151
+ - While loading: `<details>` toggle is blocked (`e.preventDefault()`); spinner replaces the `summary` arrow indicator.
152
+ - On load error: `toast.error(message)` fires, folder collapses automatically.
153
+
154
+ ### Node Registry
155
+
156
+ - Every item gets a unique id: use the `id` prop if provided, otherwise `createUniqueId()` is assigned internally.
157
+ - `NodeRegistry` maps each id → parent id, enabling `getPath(id)` to return the full ancestor chain.
158
+ - Registry is cleared when `items` prop changes (sync mode) or on component cleanup.
159
+
160
+ ### Active Highlight
161
+
162
+ - Controlled by `highlightActive` prop (default `true`).
163
+ - Active CSS class `_6ca32a` is added to every node in the path from root to the clicked item.
164
+ - Clicking a new item removes all existing `_6ca32a` classes first, then applies to the new path.
165
+ - Clicking a `title` item toggles: if already active, removes highlight; otherwise applies it.
166
+ - `focusById` triggers the same active highlight logic programmatically.
167
+
168
+ ### Horizontal Direction
169
+
170
+ - In horizontal mode, expanding a root-level folder (`parentId === null`) automatically collapses all other root-level folders (accordion behavior).
171
+ - Nested folders inside a horizontal root folder behave normally (no auto-collapse).
172
+
173
+ ### `defaultExpanded`
174
+
175
+ ```
176
+ item.defaultExpanded → per-item override
177
+ p.defaultExpanded → global fallback
178
+ effective = item.defaultExpanded ?? p.defaultExpanded ?? false
179
+ ```
180
+
181
+ ### Content rendering
182
+
183
+ `content` is typed as `SolidComponent = string | JSX.Element | (() => JSX.Element)`. Pass a function `() => <JSX>` to defer evaluation and enable reactivity inside the item content.
184
+
185
+ ---
186
+
187
+ ## USAGE PATTERNS
188
+
189
+ ### 1. Minimal sync menu
190
+
191
+ ```tsx
192
+ import { Menu } from 'solid-tom-ui';
193
+
194
+ <Menu
195
+ items={[
196
+ { type: 'file', content: 'README.md' },
197
+ {
198
+ type: 'folder',
199
+ content: 'src',
200
+ items: [
201
+ { type: 'file', content: 'App.tsx' },
202
+ { type: 'file', content: 'index.tsx' },
203
+ ],
204
+ },
205
+ ]}
206
+ />
207
+ ```
208
+
209
+ ### 2. Handling item clicks
210
+
211
+ ```tsx
212
+ <Menu
213
+ items={menuItems}
214
+ onItemClick={(info) => {
215
+ console.log(info.type); // 'file' | 'folder' | 'title'
216
+ console.log(info.id); // item id
217
+ console.log(info.path); // ['root-id', 'parent-id', 'item-id']
218
+ console.log(info.isExpanded); // boolean | undefined (folder only)
219
+ console.log(info.data); // custom data payload
220
+ }}
221
+ />
222
+ ```
223
+
224
+ ### 3. Using `data` for routing
225
+
226
+ ```tsx
227
+ const items: MenuItem[] = [
228
+ { type: 'file', id: 'dashboard', content: 'Dashboard', data: { route: '/dashboard' } },
229
+ { type: 'file', id: 'settings', content: 'Settings', data: { route: '/settings' } },
230
+ ];
231
+
232
+ <Menu
233
+ items={items}
234
+ onItemClick={(info) => {
235
+ if (info.data?.route) navigate(info.data.route);
236
+ }}
237
+ />
238
+ ```
239
+
240
+ ### 4. Title items (non-collapsible section headers)
241
+
242
+ ```tsx
243
+ <Menu
244
+ items={[
245
+ {
246
+ type: 'title',
247
+ content: 'Configuration',
248
+ items: [
249
+ { type: 'file', content: 'tsconfig.json' },
250
+ { type: 'file', content: 'vite.config.ts' },
251
+ ],
252
+ },
253
+ ]}
254
+ />
255
+ ```
256
+
257
+ ### 5. Lazy folder (async children)
258
+
259
+ ```tsx
260
+ const items: MenuItem[] = [
261
+ {
262
+ type: 'folder',
263
+ id: 'api-folder',
264
+ content: 'api',
265
+ lazyItems: async () => {
266
+ const res = await fetch('/api/files');
267
+ return await res.json(); // must return MenuItem[]
268
+ },
269
+ },
270
+ ];
271
+
272
+ <Menu items={items} />
273
+ ```
274
+
275
+ ### 6. Root-level async menu (`lazyItems` prop)
276
+
277
+ ```tsx
278
+ <Menu
279
+ lazyItems={async () => {
280
+ const data = await fetchRootFiles();
281
+ return data; // MenuItem[]
282
+ }}
283
+ onItemClick={handleClick}
284
+ />
285
+ ```
286
+
287
+ ### 7. Imperative control via `setMenuFunction`
288
+
289
+ ```tsx
290
+ const [menuFn, setMenuFn] = createSignal<MenuFunction>();
291
+
292
+ <Menu items={items} setMenuFunction={setMenuFn} />
293
+
294
+ // Later, from event handlers or effects:
295
+ menuFn()?.focusById('settings-file');
296
+ menuFn()?.collapseAll();
297
+ menuFn()?.expandedAll();
298
+ menuFn()?.collapseById('src-folder');
299
+ menuFn()?.refreshById('api-lazy-folder'); // lazy folders only
300
+ menuFn()?.refreshAll();
301
+ ```
302
+
303
+ ### 8. All folders expanded by default
304
+
305
+ ```tsx
306
+ <Menu items={items} defaultExpanded={true} />
307
+ ```
308
+
309
+ ### 9. Per-folder expand override
310
+
311
+ ```tsx
312
+ const items: MenuItem[] = [
313
+ { type: 'folder', content: 'always-open', defaultExpanded: true, items: [...] },
314
+ { type: 'folder', content: 'always-closed', defaultExpanded: false, items: [...] },
315
+ ];
316
+ // Global defaultExpanded is overridden per item
317
+ <Menu items={items} defaultExpanded={true} />
318
+ ```
319
+
320
+ ### 10. Horizontal menu (top nav style)
321
+
322
+ ```tsx
323
+ <Menu
324
+ items={navItems}
325
+ direction="horizontal"
326
+ class={{ root: 'rounded-box bg-base-100 border h-fit w-fit flex-nowrap' }}
327
+ />
328
+ // Root-level folders auto-collapse when another is expanded (accordion)
329
+ ```
330
+
331
+ ### 11. Icon-only sidebar
332
+
333
+ ```tsx
334
+ <Menu
335
+ items={[
336
+ { type: 'file', content: <HomeIcon /> },
337
+ { type: 'file', content: <BellIcon /> },
338
+ { type: 'file', content: <SettingsIcon /> },
339
+ ]}
340
+ direction="vertical"
341
+ class={{
342
+ root: 'bg-base-100 rounded-box border h-fit',
343
+ itemWrap: 'w-fit',
344
+ itemHeader: 'aspect-square w-12 place-content-center',
345
+ }}
346
+ />
347
+ ```
348
+
349
+ ### 12. Custom class on elements
350
+
351
+ ```tsx
352
+ <Menu
353
+ items={items}
354
+ class={{
355
+ root: 'bg-base-100 border border-base-300 rounded-lg min-w-[260px]',
356
+ itemWrap: 'my-custom-item',
357
+ itemHeader: 'font-semibold text-primary',
358
+ }}
359
+ />
360
+ ```
361
+
362
+ ### 13. Mixed sync + lazy tree
363
+
364
+ ```tsx
365
+ const items: MenuItem[] = [
366
+ { type: 'file', content: 'README.md' },
367
+ {
368
+ type: 'folder',
369
+ content: 'src',
370
+ items: [
371
+ { type: 'file', content: 'App.tsx' },
372
+ {
373
+ type: 'folder',
374
+ id: 'api-lazy-folder',
375
+ content: 'api',
376
+ lazyItems: loadApiItems, // async only for this subtree
377
+ },
378
+ ],
379
+ },
380
+ ];
381
+ <Menu items={items} />
382
+ ```
383
+
384
+ ### 14. Disabled items
385
+
386
+ ```tsx
387
+ const items: MenuItem[] = [
388
+ { type: 'file', content: 'Active file' },
389
+ { type: 'file', content: 'Disabled file', disabled: true },
390
+ { type: 'folder', content: 'Disabled folder', disabled: true, items: [] },
391
+ ];
392
+ <Menu items={items} />
393
+ // Disabled items get 'menu-disabled' class; folder toggle is blocked when disabled
394
+ ```
395
+
396
+ ### 15. Reactive items (update from outside)
397
+
398
+ ```tsx
399
+ const [items, setItems] = createSignal<MenuItem[]>(initialItems);
400
+
401
+ <Menu items={items()} />
402
+
403
+ // Later:
404
+ setItems(newItems); // Registry clears and re-renders the entire tree
405
+ ```
406
+
407
+ ---
408
+
409
+ ## CSS CLASSES (public API for customization)
410
+
411
+ | Class | Applied to |
412
+ |---|---|
413
+ | `menu` | Root `<ul>` |
414
+ | `menu-vertical` | Root `<ul>` when `direction='vertical'` |
415
+ | `menu-horizontal` | Root `<ul>` when `direction='horizontal'` |
416
+ | `menu-xs/sm/md/lg/xl` | Root `<ul>` size modifier |
417
+ | `menu-title` | `<h4>` inside title items |
418
+ | `menu-disabled` | `<li>` for disabled items or loading lazy folders |
419
+ | `file` | `<li>` for file items |
420
+ | `folder` | `<li>` for folder items |
421
+ | `title` | `<li>` for title items |
422
+ | `_6ca32a` | Active highlight — applied to items in the selected path |
423
+
424
+ Use `class={{ root, itemWrap, itemHeader }}` prop to append classes to:
425
+ - `root` → `<ul>` (root list)
426
+ - `itemWrap` → each `<li>` item
427
+ - `itemHeader` → `<summary>` inside folder items
428
+
429
+ ---
430
+
431
+ ## ANIMATION
432
+
433
+ - All menu elements transition via `transition: all 0.3s cubic-bezier(0, 0, 0.2, 1)` applied globally under `@utility menu`.
434
+ - Folder open/close uses the native `<details>` browser animation (no JS animation).
435
+ - Active highlight class `_6ca32a` transitions smoothly due to the global CSS transition rule.
436
+
437
+ ---
438
+
439
+ ## CONSTRAINTS & EDGE CASES
440
+
441
+ - `items` and `lazyItems` are mutually exclusive at every level. Do not mix them on the same item; they are discriminated by TypeScript.
442
+ - `TitleItem.items` cannot contain `LazyFolder` — the type system enforces `MenuTitleItems = FileItem | TitleItem | SyncFolder`.
443
+ - `refreshById` / `refreshAll` only work on lazy folders that have been **mounted** (expanded at least once). Calling them on un-expanded folders is a no-op with a console warning.
444
+ - `focusById` / `collapseById` log a console warning and return early if the given `id` is not in the registry.
445
+ - When `items` prop changes reactively, **both** `NodeRegistry` and `LazyFolderRegistry` are fully cleared and rebuilt — all loaded lazy folder data is lost.
446
+ - In horizontal mode, `collapseOtherRootFolders` only affects **direct children** of the root `<ul>` (`li.folder > details`). Nested folders inside a root folder are unaffected.
447
+ - `content` rendered inside a `title` item's `<h4>` is clickable for highlight toggle but does **not** collapse/expand children (title items are non-collapsible).
448
+ - Lazy folder errors collapse the folder, reset `shouldLoad`, and fire `onError` with `source: 'folder'`. The next expand attempt will re-trigger `lazyItems`.
449
+ - Root lazy load errors fire `onError` with `source: 'root'`. The menu shows "No menu items available" with a "Try again" button.
450
+ - `id` prop on `Menu` is only set on the root `<ul>` (not on the wrapper fragment).
451
+ - `setMenuFunction` is called **synchronously** during render (not in an effect). The returned `MenuFunction` object is available immediately after the signal setter is called.
452
+
453
+ ---
454
+
455
+ ## DO / DON'T
456
+
457
+ **DO**
458
+ - Always provide `id` on items you intend to control via `MenuFunction` (focusById, collapseById, refreshById).
459
+ - Use `data` field to attach routing info, metadata, or any payload — accessible in `onItemClick`.
460
+ - Use `setMenuFunction` + a signal to get the imperative API for programmatic control.
461
+ - Pass `content` as `() => <JSX>` for reactive or expensive content inside items.
462
+ - Use `lazyItems` at the folder level for deep trees where loading all data upfront is expensive.
463
+ - Import from the barrel: `import { Menu } from 'solid-tom-ui'`.
464
+
465
+ **DON'T**
466
+ - Don't mix `items` and `lazyItems` on the same `MenuProps` or `FolderItem` — they are exclusive.
467
+ - Don't put `LazyFolder` inside a `TitleItem.items` — it's not allowed by the type system.
468
+ - Don't call `refreshById` on a lazy folder that has never been expanded — it will warn and do nothing.
469
+ - Don't rely on `focusById` without a `defaultExpanded` or prior expansion — the node must be in the registry, which happens on render (all items register regardless of expand state, but DOM manipulation requires the element to exist).
470
+ - Don't import `MenuExample` or `menu.data-example` in production — they are demo utilities only.
471
+ - Don't update `items` prop frequently if you rely on lazy folder loaded state — every change clears all registries and reloads the tree from scratch.
472
+ ---
473
+
474
+ ## Component Conventions
475
+
476
+ > **CSS encoding**: internal CSS classes use short encoded names (e.g. `mn01`, `mn02`) per project convention.