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 @@
1
+ {"version":3,"file":"timeline.js","names":["BaseColorProps","cn","getColor","AlertCircle","Check","Clock","Component","createMemo","For","JSX","mergeProps","Show","splitProps","TimelineItem","TimelineItemStatus","TimelineProps","STATUS_COLOR","Record","pending","active","done","error","resolveItemColor","item","globalColor","color","status","DotProps","colorClass","class","TimelineDot","p","_el$","_tmpl$3","_$insert","_$createComponent","when","loading","children","_tmpl$","_$memo","icon","_el$3","_tmpl$2","size","_$effect","_$className","ContentProps","TimelineContent","_el$4","timestamp","_el$5","title","_el$6","content","_el$7","description","resolvePosition","mode","itemPosition","index","Timeline","props","merged","items","orientation","const","reverse","nativeProps","isVertical","displayItems","globalColorClass","_el$8","_$spread","_$mergeProps","root","each","i","pos","position","itemColorClass","isLast","length","_el$9","_el$0","label","_el$1","_tmpl$4","dot","_el$10","connector","_el$11","_el$12","_el$13","_tmpl$5","_el$14","firstChild","_el$15","nextSibling","_p$","_v$","_v$2","e","t","undefined","_el$16"],"sources":["../../../src/components/timeline/timeline.tsx"],"sourcesContent":["import { BaseColorProps } from '@/type';\nimport { cn } from '@/utils/cn';\nimport { getColor } from '@/utils/helper';\nimport AlertCircle from 'lucide-solid/icons/alert-circle';\nimport Check from 'lucide-solid/icons/check';\nimport Clock from 'lucide-solid/icons/clock';\nimport { Component, createMemo, For, JSX, mergeProps, Show, splitProps } from 'solid-js';\nimport { TimelineItem, TimelineItemStatus, TimelineProps } from './timeline.types';\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Map status → màu DaisyUI mặc định (dùng khi item không có `color` prop) */\nconst STATUS_COLOR: Record<TimelineItemStatus, BaseColorProps> = {\n pending: 'neutral',\n active: 'primary',\n done: 'success',\n error: 'error',\n};\n\n/** Resolve màu cuối cùng của item: ưu tiên item.color > status-mapped > global */\nconst resolveItemColor = (item: TimelineItem, globalColor: BaseColorProps): BaseColorProps => {\n if (item.color) return item.color;\n if (item.status) return STATUS_COLOR[item.status];\n return globalColor;\n};\n\n// ─── TimelineDot — marker của mỗi item ───────────────────────────────────────\n\ntype DotProps = {\n item: TimelineItem;\n colorClass: string;\n class?: string;\n};\n\nconst TimelineDot: Component<DotProps> = p => {\n const status = () => p.item.status ?? 'done';\n\n return (\n <div class={cn('tl15', p.colorClass, `tl-s-${status()}`, p.class)}>\n {/* Loading spinner */}\n <Show when={p.item.loading}>\n <span class=\"loading loading-spinner tl16\" />\n </Show>\n\n {/* Custom icon */}\n <Show when={!p.item.loading && p.item.icon}>\n <span class=\"tl17\">{p.item.icon!()}</span>\n </Show>\n\n {/* Default icon theo status */}\n <Show when={!p.item.loading && !p.item.icon}>\n <Show when={status() === 'done'}>\n <Check size={12} stroke-width={3} />\n </Show>\n <Show when={status() === 'error'}>\n <AlertCircle size={12} stroke-width={2.5} />\n </Show>\n <Show when={status() === 'pending'}>\n <Clock size={11} stroke-width={2} />\n </Show>\n {/* active: chỉ hiện dot rỗng — style CSS xử lý */}\n </Show>\n </div>\n );\n};\n\n// ─── TimelineItemContent — tiêu đề + nội dung + thời gian ────────────────────\n\ntype ContentProps = {\n item: TimelineItem;\n class?: TimelineProps['class'];\n};\n\nconst TimelineContent: Component<ContentProps> = p => (\n <div class={cn('tl18', p.class?.content)}>\n <Show when={p.item.timestamp}>\n <div class={cn('tl21', p.class?.timestamp)}>{p.item.timestamp}</div>\n </Show>\n <Show when={p.item.title}>\n <div class={cn('tl19', p.class?.title)}>{p.item.title}</div>\n </Show>\n <Show when={p.item.content}>\n <div class={cn('tl20', p.class?.description)}>{p.item.content}</div>\n </Show>\n </div>\n);\n\n// ─── Tính vị trí nội dung dựa trên mode & item.position ──────────────────────\n\nconst resolvePosition = (\n mode: TimelineProps['mode'],\n itemPosition: TimelineItem['position'],\n index: number,\n): 'start' | 'end' => {\n if (itemPosition) return itemPosition;\n if (mode === 'start') return 'start';\n if (mode === 'end') return 'end';\n // alternate: chẵn = start, lẻ = end\n return index % 2 === 0 ? 'start' : 'end';\n};\n\n// ─── Main Component ───────────────────────────────────────────────────────────\n\nexport const Timeline: Component<TimelineProps> = props => {\n const merged = mergeProps(\n {\n items: [] as TimelineItem[],\n color: 'primary' as BaseColorProps,\n orientation: 'vertical' as const,\n mode: 'alternate' as const,\n reverse: false,\n },\n props,\n );\n\n const [p, nativeProps] = splitProps(merged, [\n 'items',\n 'color',\n 'orientation',\n 'mode',\n 'reverse',\n 'class',\n ]);\n\n const isVertical = () => p.orientation === 'vertical';\n\n const displayItems = createMemo(() => (p.reverse ? [...p.items].reverse() : p.items));\n\n const globalColorClass = () => getColor(p.color, 'color-primary');\n\n return (\n <div\n {...nativeProps}\n class={cn(\n 'tl01',\n isVertical() ? 'tl02' : 'tl03',\n `tl-mode-${p.mode}`,\n globalColorClass(),\n p.class?.root,\n )}\n >\n <For each={displayItems()}>\n {(item, i) => {\n const pos = () => resolvePosition(p.mode, item.position, i());\n const itemColorClass = () => getColor(resolveItemColor(item, p.color), 'color-primary');\n const isLast = () => i() === displayItems().length - 1;\n\n return (\n <div\n class={cn(\n 'tl04',\n isVertical() ? 'tl05' : 'tl06',\n `tl-pos-${pos()}`,\n `tl-s-${item.status ?? 'done'}`,\n p.class?.item,\n )}\n >\n {/* ── Vertical layout ── */}\n <Show when={isVertical()}>\n {/* Cột bên start (trái) */}\n <div class={cn('tl07', p.class?.label)}>\n <Show when={pos() === 'start'}>\n <TimelineContent item={item} class={p.class} />\n </Show>\n </div>\n\n {/* Cột giữa: dot + connector */}\n <div class=\"tl08\">\n <TimelineDot item={item} colorClass={itemColorClass()} class={p.class?.dot} />\n <Show when={!isLast()}>\n <div class={cn('tl09', p.class?.connector)} />\n </Show>\n </div>\n\n {/* Cột bên end (phải) */}\n <div class={cn('tl10', p.class?.label)}>\n <Show when={pos() === 'end'}>\n <TimelineContent item={item} class={p.class} />\n </Show>\n </div>\n </Show>\n\n {/* ── Horizontal layout ── */}\n <Show when={!isVertical()}>\n {/* Hàng trên (start) */}\n <div class={cn('tl11', p.class?.label)}>\n <Show when={pos() === 'start'}>\n <TimelineContent item={item} class={p.class} />\n </Show>\n </div>\n\n {/* Hàng giữa: connector + dot + connector */}\n <div class=\"tl12\">\n <div class={cn('tl13', i() === 0 && 'tl-invisible', p.class?.connector)} />\n <TimelineDot item={item} colorClass={itemColorClass()} class={p.class?.dot} />\n <div class={cn('tl13', isLast() && 'tl-invisible', p.class?.connector)} />\n </div>\n\n {/* Hàng dưới (end) */}\n <div class={cn('tl14', p.class?.label)}>\n <Show when={pos() === 'end'}>\n <TimelineContent item={item} class={p.class} />\n </Show>\n </div>\n </Show>\n </div>\n );\n }}\n </For>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorIcon.js","names":["genSVGCubicBezier","Component","IconProps","MainCircle","SecondaryCircle","Error","props","fill","primary","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_$insert","_$createComponent","_$spread","_$mergeProps","_$effect","_p$","_v$","secondary","_v$2","e","_$setAttribute","t","undefined"],"sources":["../../../../src/components/toast/icons/ErrorIcon.tsx"],"sourcesContent":["import { genSVGCubicBezier } from '@/utils/helper';\nimport type { Component } from 'solid-js';\nimport { IconProps } from '../toast.type';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\n\nexport const Error: Component<IconProps> = props => {\n const fill = props.primary || 'var(--color-error)';\n return (\n <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n <MainCircle fill={fill} />\n <SecondaryCircle fill={fill} />\n <path\n fill=\"none\"\n stroke={props.secondary || '#fff'}\n stroke-width=\"4\"\n stroke-dasharray=\"9\"\n stroke-dashoffset=\"9\"\n stroke-linecap=\"round\"\n d=\"M16,7l0,9\"\n >\n <animate\n attributeName=\"stroke-dashoffset\"\n values=\"9;0\"\n dur=\"0.2s\"\n begin=\"250ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </path>\n <circle fill={props.secondary || '#fff'} cx=\"16\" cy=\"23\" r=\"2.5\" opacity=\"0\">\n <animate\n attributeName=\"opacity\"\n values=\"0;1\"\n dur=\"0.25s\"\n begin=\"350ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </circle>\n </svg>\n );\n};\n"],"mappings":"upBAKaK,EAA8BC,GAAS,CAClD,IAAMC,EAAOD,EAAME,SAAW,qBAC9B,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAC,WAAAE,EAAAH,EAAAI,YAAAC,EAAAF,EAAAF,WAsB2C,OAtB3CK,EAAAR,EAAAS,EAEKf,EAAU,CAAOI,OAAI,CAAA,CAAAI,EAAA,CAAAM,EAAAR,EAAAS,EACrBd,EAAe,CAAOG,OAAI,CAAA,CAAAI,EAAA,CAAAQ,EAAAN,EAAAO,MAgBnBpB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAmB,EAAAH,EAAAI,MAUxCpB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAqB,EAAAC,GAAA,CAAA,IAAAC,EAvBtCjB,EAAMkB,WAAa,OAAMC,EAgBrBnB,EAAMkB,WAAa,OAAM,OAAAD,IAAAD,EAAAI,GAAAC,EAAAhB,EAAA,SAAAW,EAAAI,EAAAH,EAAA,CAAAE,IAAAH,EAAAM,GAAAD,EAAAb,EAAA,OAAAQ,EAAAM,EAAAH,EAAA,CAAAH,GAAA,CAAAI,EAAAG,IAAAA,GAAAD,EAAAC,IAAAA,GAAA,CAAA,CAAApB,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconCircle.js","names":["genSVGCubicBezier","Component","JSX","MainCircle","fill","props","publicProps","AnimateSVGAttributes","SVGAnimateElement","dur","begin","calcMode","keyTimes","keySplines","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$spread","_$effect","_$setAttribute","SecondaryCircle","_el$4","_tmpl$2","_el$5","_el$6"],"sources":["../../../../src/components/toast/icons/IconCircle.tsx"],"sourcesContent":["import { genSVGCubicBezier } from '@/utils/helper';\nimport { Component } from 'solid-js';\nimport type { JSX } from 'solid-js';\n\nexport const MainCircle: Component<{ fill: string }> = props => {\n const publicProps: JSX.AnimateSVGAttributes<SVGAnimateElement> = {\n dur: '0.35s',\n begin: '100ms',\n fill: 'freeze',\n calcMode: 'spline',\n keyTimes: '0; 0.6; 1',\n keySplines: '0.25 0.71 0.4 0.88; .59 .22 .87 .63',\n };\n return (\n <circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"0\">\n <animate attributeName=\"opacity\" values=\"0; 1; 1\" {...publicProps} />\n <animate attributeName=\"r\" values=\"0; 17.5; 16\" {...publicProps} />\n </circle>\n );\n};\n\nexport const SecondaryCircle: Component<{ fill: string; begin?: string }> = props => {\n const publicProps: JSX.AnimateSVGAttributes<SVGAnimateElement> = {\n dur: '1s',\n begin: props.begin || '320ms',\n fill: 'freeze',\n ...genSVGCubicBezier('0.0 0.0 0.2 1'),\n };\n return (\n <circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"12\" opacity=\"0\">\n <animate attributeName=\"opacity\" values=\"1; 0\" {...publicProps} />\n <animate attributeName=\"r\" values=\"12; 26\" {...publicProps} />\n </circle>\n );\n};\n"],"mappings":"8cAIaG,EAA0CE,GAAS,CAC9D,IAAMC,EAA2D,CAC/DG,IAAK,QACLC,MAAO,QACPN,KAAM,SACNO,SAAU,SACVC,SAAU,YACVC,WAAY,sCACb,CACD,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAG,YAC0B,OAD1BC,EAAAJ,EAE0DV,EAAW,GAAA,GAAA,CAAAc,EAAAF,EACbZ,EAAW,GAAA,GAAA,CAAAe,MAAAC,EAAAR,EAAA,OAFnDT,EAAMD,KAAI,CAAA,CAAAU,KAAA,EAOfS,EAA+DlB,GAAS,CACnF,IAAMC,EAA2D,CAC/DG,IAAK,KACLC,MAAOL,EAAMK,OAAS,QACtBN,KAAM,SACN,GAAGJ,EAAkB,gBAAe,CACrC,CACD,WAAA,CAAA,IAAAwB,EAAAC,GAAA,CAAAC,EAAAF,EAAAP,WAAAU,EAAAD,EAAAP,YAC0B,OAD1BC,EAAAM,EAEuDpB,EAAW,GAAA,GAAA,CAAAc,EAAAO,EACfrB,EAAW,GAAA,GAAA,CAAAe,MAAAC,EAAAE,EAAA,OAF9CnB,EAAMD,KAAI,CAAA,CAAAoB,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoIcon.js","names":["genSVGCubicBezier","Component","IconProps","MainCircle","SecondaryCircle","Info","props","fill","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_$insert","_$createComponent","_$spread","_$mergeProps","_$effect","_p$","_v$","secondary","_v$2","e","_$setAttribute","t","undefined"],"sources":["../../../../src/components/toast/icons/InfoIcon.tsx"],"sourcesContent":["import { genSVGCubicBezier } from '@/utils/helper';\nimport type { Component } from 'solid-js';\nimport { IconProps } from '../toast.type';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\n\nexport const Info: Component<IconProps> = props => {\n const fill = 'var(--color-info)';\n return (\n <svg\n style={{ overflow: 'visible' }}\n viewBox=\"0 0 32 32\"\n width=\"1.25rem\"\n height=\"1.25rem\"\n class=\"rotate-180\"\n >\n <MainCircle fill={fill} />\n <SecondaryCircle fill={fill} />\n <path\n fill=\"none\"\n stroke={props.secondary || '#fff'}\n stroke-width=\"4\"\n stroke-dasharray=\"9\"\n stroke-dashoffset=\"9\"\n stroke-linecap=\"round\"\n d=\"M16,7l0,9\"\n >\n <animate\n attributeName=\"stroke-dashoffset\"\n values=\"9;0\"\n dur=\"0.2s\"\n begin=\"250ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </path>\n <circle fill={props.secondary || '#fff'} cx=\"16\" cy=\"23\" r=\"2.5\" opacity=\"0\">\n <animate\n attributeName=\"opacity\"\n values=\"0;1\"\n dur=\"0.25s\"\n begin=\"350ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </circle>\n </svg>\n );\n};\n"],"mappings":"wqBAKaK,EAA6BC,GAAS,CACjD,IAAMC,EAAO,oBACb,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAC,WAAAE,EAAAH,EAAAI,YAAAC,EAAAF,EAAAF,WA4B2C,OA5B3CK,EAAAR,EAAAS,EAQKd,EAAU,CAAOI,OAAI,CAAA,CAAAG,EAAA,CAAAM,EAAAR,EAAAS,EACrBb,EAAe,CAAOG,OAAI,CAAA,CAAAG,EAAA,CAAAQ,EAAAN,EAAAO,MAgBnBnB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAkB,EAAAH,EAAAI,MAUxCnB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAoB,EAAAC,GAAA,CAAA,IAAAC,EAvBtChB,EAAMiB,WAAa,OAAMC,EAgBrBlB,EAAMiB,WAAa,OAAM,OAAAD,IAAAD,EAAAI,GAAAC,EAAAhB,EAAA,SAAAW,EAAAI,EAAAH,EAAA,CAAAE,IAAAH,EAAAM,GAAAD,EAAAb,EAAA,OAAAQ,EAAAM,EAAAH,EAAA,CAAAH,GAAA,CAAAI,EAAAG,IAAAA,GAAAD,EAAAC,IAAAA,GAAA,CAAA,CAAApB,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoaderIcon.js","names":["Component","IconProps","Loader","props","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$effect","_p$","_v$","primary","_v$2","secondary","e","_$setAttribute","t","undefined"],"sources":["../../../../src/components/toast/icons/LoaderIcon.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport { IconProps } from '../toast.type';\n\nexport const Loader: Component<IconProps> = props => (\n <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n <path\n fill=\"none\"\n stroke={props.primary || 'oklch(0.9276 0.0058 264.53)'}\n stroke-width=\"4\"\n stroke-miterlimit=\"10\"\n d=\"M16,6c3,0,5.7,1.3,7.5,3.4c1.5,1.8,2.5,4,2.5,6.6c0,5.5-4.5,10-10,10S6,21.6,6,16S10.5,6,16,6z\"\n />\n <path\n fill=\"none\"\n stroke={props.secondary || 'oklch(0.4461 0.0263 256.8)'}\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n d=\"M16,6c3,0,5.7,1.3,7.5,3.4c0.6,0.7,1.1,1.4,1.5,2.2\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 16 16\"\n to=\"360 16 16\"\n dur=\"0.75s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n);\n"],"mappings":"uiBAGaE,EAA+BC,QAAK,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAG,YAWY,OAXZC,EAAAC,GAAA,CAAA,IAAAC,EAInCT,EAAMU,SAAW,8BAA6BC,EAO9CX,EAAMY,WAAa,6BAA4B,OAAAH,IAAAD,EAAAK,GAAAC,EAAAX,EAAA,SAAAK,EAAAK,EAAAJ,EAAA,CAAAE,IAAAH,EAAAO,GAAAD,EAAAT,EAAA,SAAAG,EAAAO,EAAAJ,EAAA,CAAAH,GAAA,CAAAK,EAAAG,IAAAA,GAAAD,EAAAC,IAAAA,GAAA,CAAA,CAAAf,KAgB5D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuccessIcon.js","names":["genSVGCubicBezier","Component","IconProps","MainCircle","SecondaryCircle","Success","props","fill","primary","_el$","_tmpl$","_el$2","firstChild","_el$3","_$insert","_$createComponent","begin","_$spread","_$mergeProps","_$effect","_$setAttribute","secondary"],"sources":["../../../../src/components/toast/icons/SuccessIcon.tsx"],"sourcesContent":["import { genSVGCubicBezier } from '@/utils/helper';\nimport type { Component } from 'solid-js';\nimport { IconProps } from '../toast.type';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\n\nexport const Success: Component<IconProps> = (props: IconProps) => {\n const fill = props.primary || 'var(--color-success)';\n return (\n <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n <MainCircle fill={fill} />\n <SecondaryCircle fill={fill} begin=\"350ms\" />\n <path\n fill=\"none\"\n stroke={props.secondary || 'oklch(0.9911 0 0)'}\n stroke-width=\"4\"\n stroke-dasharray=\"22\"\n stroke-dashoffset=\"22\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n d=\"M9.8,17.2l3.8,3.6c0.1,0.1,0.3,0.1,0.4,0l9.6-9.7\"\n >\n <animate\n attributeName=\"stroke-dashoffset\"\n values=\"22;0\"\n dur=\"0.25s\"\n begin=\"250ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </path>\n </svg>\n );\n};\n"],"mappings":"qlBAKaK,EAAiCC,GAAqB,CACjE,IAAMC,EAAOD,EAAME,SAAW,uBAC9B,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAC,WAMoD,OANpDE,EAAAL,EAAAM,EAEKZ,EAAU,CAAOI,OAAI,CAAA,CAAAI,EAAA,CAAAG,EAAAL,EAAAM,EACrBX,EAAe,CAAOG,OAAMS,MAAK,QAAA,CAAA,CAAAL,EAAA,CAAAM,EAAAJ,EAAAK,MAiB1BlB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAmB,MAAAC,EAAAT,EAAA,SAdtCL,EAAMe,WAAa,oBAAmB,CAAA,CAAAZ,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WarningIcon.js","names":["genSVGCubicBezier","Component","IconProps","Warning","props","fill","primary","stroke","secondary","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$6","_el$7","_$setAttribute","_$spread","_$mergeProps"],"sources":["../../../../src/components/toast/icons/WarningIcon.tsx"],"sourcesContent":["import { genSVGCubicBezier } from '@/utils/helper';\nimport type { Component } from 'solid-js';\nimport { IconProps } from '../toast.type';\n\nexport const Warning: Component<IconProps> = (props: IconProps) => {\n const fill = props.primary || 'var(--color-warning)';\n const stroke = props.secondary || '#000';\n return (\n <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n <g>\n {/* Equilateral triangle with rounded corners */}\n <path\n fill={fill}\n stroke={fill}\n stroke-width=\"10\"\n stroke-linejoin=\"round\"\n stroke-linecap=\"round\"\n d=\"M16 1 L31 27 L1 27 Z\"\n opacity=\"0\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1\"\n dur=\"0.3s\"\n begin=\"0ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n <animateTransform\n attributeName=\"transform\"\n type=\"scale\"\n values=\"0.5;1.1;1\"\n dur=\"0.4s\"\n begin=\"0ms\"\n fill=\"freeze\"\n keyTimes=\"0;0.7;1\"\n keySplines=\"0.25 0.71 0.4 0.88; .59 .22 .87 .63\"\n calcMode=\"spline\"\n />\n </path>\n {/* Exclamation line - shorter and centered */}\n <path\n fill=\"none\"\n stroke={stroke}\n stroke-width=\"2.5\"\n stroke-dasharray=\"6\"\n stroke-dashoffset=\"6\"\n stroke-linecap=\"round\"\n d=\"M16,11 L16,17\"\n >\n <animate\n attributeName=\"stroke-dashoffset\"\n values=\"6;0\"\n dur=\"0.2s\"\n begin=\"300ms\"\n fill=\"freeze\"\n {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n />\n </path>\n {/* Exclamation dot - smaller and higher */}\n <circle fill={stroke} cx=\"16\" cy=\"21.5\" r=\"0\">\n <animate\n attributeName=\"r\"\n values=\"0;1.8;1.5\"\n dur=\"0.25s\"\n begin=\"400ms\"\n fill=\"freeze\"\n keyTimes=\"0;0.6;1\"\n keySplines=\"0.25 0.71 0.4 0.88; .59 .22 .87 .63\"\n calcMode=\"spline\"\n />\n </circle>\n {/* Bell shake animation - continuous */}\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n values=\"0 16 27; -8 16 27; 8 16 27; -5 16 27; 5 16 27; -2 16 27; 2 16 27; 0 16 27\"\n dur=\"0.6s\"\n begin=\"500ms;shake.end+2s\"\n fill=\"freeze\"\n id=\"shake\"\n />\n </g>\n </svg>\n );\n};\n"],"mappings":"ktCAIaG,EAAiCC,GAAqB,CACjE,IAAMC,EAAOD,EAAME,SAAW,uBACxBC,EAASH,EAAMI,WAAa,OAClC,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAG,EAAAJ,EAAAG,WAAAA,WAAAE,EAAAD,EAAAD,WAAAG,EAAAF,EAAAG,YAAAC,EAAAF,EAAAH,WAAAM,EAAAH,EAAAC,YAqD0B,OArD1BG,EAAAN,EAAA,OAKcR,EAAI,CAAAc,EAAAN,EAAA,SACFR,EAAI,CAAAe,EAAAN,EAAAO,MAaNrB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAmB,EAAAJ,EAAA,SAiBtCR,EAAM,CAAAa,EAAAH,EAAAI,MAaRrB,EAAkB,sBAAsB,CAAA,CAAA,GAAA,GAAA,CAAAmB,EAAAD,EAAA,OAIlCX,EAAM,CAAAE,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","names":["X","Component","For","JSX","Show","createEffect","createMemo","onCleanup","onMount","render","Error","Loader","Success","Info","Warning","toastStore","Message","PromiseOptions","ToastAPI","ToastData","ToastOptions","ToastPosition","ToastType","ToasterProps","ValueOrFunction","getToastYDirection","toast","defaultPos","position","top","includes","resolveValue","valOrFn","TValue","TArg","arg","getToastIcon","Element","icon","undefined","type","_$createComponent","_$mergeProps","iconTheme","CloseIcon","onClick","isRight","props","_el$","_tmpl$","$$click","e","stopPropagation","_$insert","size","_$effect","_$className","ToastBar","isCloseOnRight","handleClose","removeToast","id","_el$2","_tmpl$2","_el$3","firstChild","when","showCloseIcon","children","message","_p$","_v$","class","_v$2","style","_v$3","ariaProps","role","_v$4","t","_$style","a","_$setAttribute","o","ToastWrapper","dismissTimer","ReturnType","setTimeout","removeTimer","wrapperRef","HTMLDivElement","remainingTime","duration","timerStartTime","isPaused","startDismissTimer","Infinity","visible","Date","now","dismissToast","pauseDismissTimer","clearTimeout","elapsed","Math","max","handleMouseEnter","canPause","handleMouseLeave","addEventListener","handleVisibilityChange","unmountDelay","direction","animate","transform","opacity","fill","easing","cleanupToastTimersAndListeners","removeEventListener","renderContent","_el$4","_tmpl$3","_ref$","_$use","PositionContainer","toasts","gutter","getPositionStyles","CSSProperties","pos","styles","gap","bottom","left","right","length","_el$5","_tmpl$4","each","_$p","ToasterInternal","toastsByPosition","currentToasts","groups","Record","push","positions","toastsForPos","containerMounted","containerEl","ensureContainer","document","createElement","body","appendChild","Toaster","createHandler","options","toastData","createToast","upsertToast","success","error","info","warning","loading","custom","dismiss","toastId","remove","pop","removePop","dismissPop","shift","removeShift","dismissShift","promise","Promise","T","promiseOptions","toastOptions","result","successMessage","updateToast","errorMessage","_$delegateEvents"],"sources":["../../../src/components/toast/toast.tsx"],"sourcesContent":["import X from 'lucide-solid/icons/x';\nimport { Component, For, JSX, Show, createEffect, createMemo, onCleanup, onMount } from 'solid-js';\nimport { render } from 'solid-js/web';\nimport { Error, Loader, Success } from './icons';\nimport { Info } from './icons/InfoIcon';\nimport { Warning } from './icons/WarningIcon';\nimport { toastStore } from './toast.store';\nimport type {\n Message,\n PromiseOptions,\n ToastAPI,\n ToastData,\n ToastOptions,\n ToastPosition,\n ToastType,\n ToasterProps,\n ValueOrFunction,\n} from './toast.type';\n\nexport const getToastYDirection = (toast: ToastData, defaultPos: ToastPosition) => {\n const position = toast.position || defaultPos;\n const top = position.includes('top');\n return top ? 1 : -1;\n};\n// Helper to resolve value or function\nconst resolveValue = <TValue, TArg>(valOrFn: ValueOrFunction<TValue, TArg>, arg: TArg): TValue => {\n return typeof valOrFn === 'function' ? (valOrFn as (arg: TArg) => TValue)(arg) : valOrFn;\n};\n\nconst getToastIcon = (toast: ToastData): JSX.Element | null => {\n if (toast.icon !== undefined) {\n return toast.icon as Element;\n }\n switch (toast.type) {\n case 'success':\n return <Success {...toast.iconTheme} />;\n case 'error':\n return <Error {...toast.iconTheme} />;\n case 'info':\n return <Info {...toast.iconTheme} />;\n case 'warning':\n return <Warning {...toast.iconTheme} />;\n case 'loading':\n return <Loader {...toast.iconTheme} />;\n default:\n return null;\n }\n};\n\nconst CloseIcon: Component<{ onClick: () => void; isRight: boolean }> = props => {\n return (\n <div\n class={`toa03 ${props.isRight ? 'toa04' : 'toa05'}`}\n onClick={e => {\n e.stopPropagation();\n props.onClick();\n }}\n aria-label=\"Close\"\n >\n <X size={10} stroke-width={4} />\n </div>\n );\n};\n\nconst ToastBar: Component<{ toast: ToastData; position: ToastPosition }> = props => {\n const icon = createMemo(() => getToastIcon(props.toast));\n\n const isCloseOnRight = createMemo(() => !props.position.includes('right'));\n\n const handleClose = () => {\n toastStore.removeToast(props.toast.id);\n };\n\n return (\n <div\n class={`toa01 ${props.toast.class || ''}`}\n style={props.toast.style}\n role={props.toast.ariaProps.role}\n aria-live={props.toast.ariaProps['aria-live']}\n >\n <Show when={props.toast.showCloseIcon}>\n <CloseIcon onClick={handleClose} isRight={isCloseOnRight()} />\n </Show>\n <Show when={icon()}>{icon()}</Show>\n <div class=\"flex-1 text-sm\">{props.toast.message as Element}</div>\n </div>\n );\n};\n\n// Individual toast wrapper with animations\nconst ToastWrapper: Component<{ toast: ToastData; position: ToastPosition }> = props => {\n let dismissTimer: ReturnType<typeof setTimeout> | undefined;\n let removeTimer: ReturnType<typeof setTimeout> | undefined;\n let wrapperRef: HTMLDivElement | undefined;\n\n // Theo dõi thời gian còn lại và thời điểm bắt đầu timer\n let remainingTime = props.toast.duration;\n let timerStartTime = 0;\n let isPaused = false;\n\n // Bắt đầu timer với thời gian còn lại\n const startDismissTimer = (duration: number) => {\n if (duration === Infinity || !props.toast.visible) return;\n\n timerStartTime = Date.now();\n dismissTimer = setTimeout(() => {\n toastStore.dismissToast(props.toast.id);\n }, duration);\n };\n\n // Dừng timer và lưu thời gian còn lại\n const pauseDismissTimer = () => {\n if (dismissTimer) {\n clearTimeout(dismissTimer);\n dismissTimer = undefined;\n // Tính thời gian còn lại\n const elapsed = Date.now() - timerStartTime;\n remainingTime = Math.max(0, remainingTime - elapsed);\n }\n };\n\n // Event handlers cho pause on hover\n const handleMouseEnter = () => {\n if (!props.toast.canPause || isPaused) return;\n isPaused = true;\n pauseDismissTimer();\n };\n\n const handleMouseLeave = () => {\n if (!props.toast.canPause || !isPaused) return;\n isPaused = false;\n startDismissTimer(remainingTime);\n };\n\n // Setup auto dismiss timer on mount\n onMount(() => {\n startDismissTimer(props.toast.duration);\n\n // Thêm event listeners nếu canPause = true\n if (props.toast.canPause && wrapperRef) {\n wrapperRef.addEventListener('mouseenter', handleMouseEnter);\n wrapperRef.addEventListener('mouseleave', handleMouseLeave);\n }\n });\n\n // Watch for visible change to schedule removal\n createEffect(function handleVisibilityChange() {\n const visible = props.toast.visible;\n if (!visible) {\n // Clear dismiss timer if exists\n if (dismissTimer) {\n clearTimeout(dismissTimer);\n dismissTimer = undefined;\n }\n // Schedule removal after animation\n removeTimer = setTimeout(() => {\n toastStore.removeToast(props.toast.id);\n }, props.toast.unmountDelay);\n }\n\n // run animate open/close\n if (!wrapperRef) return;\n const direction = getToastYDirection(props.toast, props.position);\n if (visible) {\n wrapperRef.animate(\n [\n { transform: `translate3d(0,${direction * -200}%,0) scale(.6)`, opacity: 0.5 },\n { transform: 'translate3d(0,0,0) scale(1)', opacity: 1 },\n ],\n {\n duration: 350,\n fill: 'forwards',\n easing: 'cubic-bezier(.21,1.02,.73,1)',\n },\n );\n } else {\n wrapperRef.animate(\n [\n { transform: 'translate3d(0,0,-1px) scale(1)', opacity: 1 },\n { transform: `translate3d(0,${direction * -150}%,-1px) scale(.4)`, opacity: 0 },\n ],\n {\n duration: 400,\n fill: 'forwards',\n easing: 'cubic-bezier(.06,.71,.55,1)',\n },\n );\n }\n });\n\n onCleanup(function cleanupToastTimersAndListeners() {\n if (dismissTimer) clearTimeout(dismissTimer);\n if (removeTimer) clearTimeout(removeTimer);\n // Gỡ event listeners\n if (props.toast.canPause && wrapperRef) {\n wrapperRef.removeEventListener('mouseenter', handleMouseEnter);\n wrapperRef.removeEventListener('mouseleave', handleMouseLeave);\n }\n });\n\n // Custom toast render\n const renderContent = () => {\n if (props.toast.type === 'custom' && typeof props.toast.message === 'function') {\n return (props.toast.message as (t: ToastData) => Element)(props.toast);\n }\n return <ToastBar toast={props.toast} position={props.position} />;\n };\n\n return (\n <div ref={wrapperRef} class=\"w-fit max-w-[350px]\">\n {renderContent()}\n </div>\n );\n};\n\n// Position container\nconst PositionContainer: Component<{\n position: ToastPosition;\n toasts: ToastData[];\n gutter: number;\n}> = props => {\n const getPositionStyles = (): JSX.CSSProperties => {\n const pos = props.position;\n const styles: JSX.CSSProperties = {\n gap: `${props.gutter}px`,\n };\n\n if (pos.includes('top')) {\n styles.top = '0';\n } else {\n styles.bottom = '0';\n styles['flex-direction'] = 'column-reverse';\n }\n\n if (pos.includes('left')) {\n styles.left = '0';\n styles['align-items'] = 'flex-start';\n } else if (pos.includes('right')) {\n styles.right = '0';\n styles['align-items'] = 'flex-end';\n } else {\n styles.left = '50%';\n styles.transform = 'translateX(-50%)';\n styles['align-items'] = 'center';\n }\n\n return styles;\n };\n\n return (\n <Show when={props.toasts.length > 0}>\n <div class=\"fixed z-9999 flex flex-col p-4\" style={getPositionStyles()}>\n <For each={props.toasts}>\n {toast => <ToastWrapper toast={toast} position={props.position} />}\n </For>\n </div>\n </Show>\n );\n};\n\n// Internal Toaster component\nconst ToasterInternal: Component<ToasterProps> = props => {\n const position = () => props.position || 'top-right';\n const gutter = () => props.gutter ?? 10;\n\n // Group toasts by position\n const toastsByPosition = createMemo(() => {\n const currentToasts = toastStore.toasts();\n const groups: Record<ToastPosition, ToastData[]> = {\n 'top-left': [],\n 'top-center': [],\n 'top-right': [],\n 'bottom-left': [],\n 'bottom-center': [],\n 'bottom-right': [],\n };\n\n for (const t of currentToasts) {\n const pos = t.position || position();\n groups[pos].push(t);\n }\n\n return groups;\n });\n\n const positions: ToastPosition[] = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n ];\n\n return (\n <>\n <For each={positions}>\n {pos => {\n const toastsForPos = createMemo(() => toastsByPosition()[pos]);\n return <PositionContainer position={pos} toasts={toastsForPos()} gutter={gutter()} />;\n }}\n </For>\n </>\n );\n};\n\n// Auto-mount toast container\nlet containerMounted = false;\nlet containerEl: HTMLDivElement | null = null;\n\nconst ensureContainer = () => {\n if (containerMounted) return;\n\n containerEl = document.createElement('div');\n containerEl.id = 'sui-toast-container';\n document.body.appendChild(containerEl);\n\n render(() => <ToasterInternal />, containerEl);\n containerMounted = true;\n};\n\n// Optional Toaster component for custom configuration\nexport const Toaster: Component<ToasterProps> = props => {\n onMount(() => {\n // If user adds Toaster, use their config\n if (!containerMounted) {\n containerEl = document.createElement('div');\n containerEl.id = 'sui-toast-container';\n document.body.appendChild(containerEl);\n\n render(() => <ToasterInternal {...props} />, containerEl);\n containerMounted = true;\n }\n });\n\n return null;\n};\n\n// Toast API\nconst createHandler =\n (type: ToastType) =>\n (message: Message, options?: ToastOptions): string => {\n ensureContainer();\n const toastData = toastStore.createToast(message, type, options);\n toastStore.upsertToast(toastData);\n return toastData.id;\n };\n\n// Main toast function\nconst toast = ((message: Message, options?: ToastOptions): string => {\n return createHandler('blank')(message, options);\n}) as ToastAPI;\n\ntoast.success = createHandler('success');\ntoast.error = createHandler('error');\ntoast.info = createHandler('info');\ntoast.warning = createHandler('warning');\ntoast.loading = createHandler('loading');\n\ntoast.custom = (message: (toast: ToastData) => JSX.Element, options?: ToastOptions): string => {\n ensureContainer();\n const toastData = toastStore.createToast(message as any, 'custom', options);\n toastStore.upsertToast(toastData);\n return toastData.id;\n};\n\ntoast.dismiss = (toastId?: string) => {\n toastStore.dismissToast(toastId);\n};\n\ntoast.remove = (toastId?: string) => {\n toastStore.removeToast(toastId);\n};\n\ntoast.pop = (options?: { animate?: boolean }) => {\n if (options?.animate === false) {\n toastStore.removePop();\n } else {\n toastStore.dismissPop();\n }\n};\n\ntoast.shift = (options?: { animate?: boolean }) => {\n if (options?.animate === false) {\n toastStore.removeShift();\n } else {\n toastStore.dismissShift();\n }\n};\n\ntoast.promise = async <T,>(\n promise: Promise<T>,\n promiseOptions: PromiseOptions<T>,\n toastOptions?: ToastOptions,\n): Promise<T> => {\n const id = toast.loading(promiseOptions.loading, toastOptions);\n\n try {\n const result = await promise;\n const successMessage = resolveValue(promiseOptions.success, result);\n toastStore.updateToast(id, {\n type: 'success',\n message: successMessage as any,\n icon: undefined, // Reset icon to use default success icon\n });\n // Schedule dismiss after showing success\n setTimeout(() => {\n toastStore.dismissToast(id);\n }, toastOptions?.duration ?? 3000);\n return result;\n } catch (error) {\n const errorMessage = resolveValue(promiseOptions.error, error);\n toastStore.updateToast(id, {\n type: 'error',\n message: errorMessage as any,\n icon: undefined, // Reset icon to use default error icon\n });\n // Schedule dismiss after showing error\n setTimeout(() => {\n toastStore.dismissToast(id);\n }, toastOptions?.duration ?? 3000);\n throw error;\n }\n};\n\nexport { toast };\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.store.js","names":[],"sources":["../../../src/components/toast/toast.store.ts"],"sourcesContent":["import { createSignal, createRoot, JSX, createUniqueId } from 'solid-js';\nimport type { ToastData, ToastOptions, ToastType, ToastPosition, Message } from './toast.type';\n\n// Default values\nconst DEFAULT_DURATION: Record<ToastType, number> = {\n blank: 3000,\n success: 3000,\n error: 3000,\n info: 3000,\n warning: 3000,\n loading: Infinity,\n custom: 3000,\n};\n\nconst DEFAULT_POSITION: ToastPosition = 'top-right';\nconst DEFAULT_UNMOUNT_DELAY = 400;\nconst MAX_TOASTS = 10;\n\n// Toast store using signals\nfunction createToastStore() {\n const [toasts, setToasts] = createSignal<ToastData[]>([]);\n const [pausedAt, setPausedAt] = createSignal<number | null>(null);\n\n const createToast = (\n message: Message | ((toast: ToastData) => JSX.Element),\n type: ToastType,\n options?: ToastOptions,\n ): ToastData => {\n const id = createUniqueId();\n const existingToast = toasts().find(t => t.id === id);\n const toast: ToastData = {\n id,\n type,\n message: message as Message,\n icon: options?.icon,\n duration: options?.duration ?? DEFAULT_DURATION[type],\n pauseDuration: existingToast?.pauseDuration ?? 0,\n paused: false,\n position: options?.position ?? DEFAULT_POSITION,\n ariaProps: options?.ariaProps ?? {\n role: 'status',\n 'aria-live': 'polite',\n },\n style: options?.style,\n class: options?.class,\n iconTheme: options?.iconTheme,\n createdAt: existingToast?.createdAt ?? Date.now(),\n visible: true,\n unmountDelay: options?.unmountDelay ?? DEFAULT_UNMOUNT_DELAY,\n canPause: options?.canPause ?? true,\n showCloseIcon: options?.showCloseIcon ?? true,\n };\n\n return toast;\n };\n\n const upsertToast = (toast: ToastData) => {\n setToasts(prev => {\n const index = prev.findIndex(t => t.id === toast.id);\n if (index !== -1) {\n // Update existing toast\n const newToasts = [...prev];\n newToasts[index] = { ...prev[index], ...toast, updatedAt: Date.now() };\n return newToasts;\n } else {\n // Add new toast at the beginning and enforce max limit\n let newToasts = [toast, ...prev];\n if (newToasts.length > MAX_TOASTS) {\n newToasts = newToasts.slice(0, MAX_TOASTS);\n }\n return newToasts;\n }\n });\n };\n\n const dismissToast = (toastId?: string) => {\n setToasts(prev => {\n if (toastId) {\n return prev.map(t => (t.id === toastId ? { ...t, visible: false } : t));\n } else {\n // Dismiss all\n return prev.map(t => ({ ...t, visible: false }));\n }\n });\n };\n\n const removeToast = (toastId?: string) => {\n setToasts(prev => {\n if (toastId) {\n return prev.filter(t => t.id !== toastId);\n } else {\n // Remove all\n return [];\n }\n });\n };\n\n const dismissPop = () => {\n setToasts(prev => {\n for (let i = prev.length - 1; i >= 0; i--) {\n if (prev[i].visible) {\n return prev.map((t, idx) => (idx === i ? { ...t, visible: false } : t));\n }\n }\n return prev;\n });\n };\n\n const removePop = () => {\n setToasts(prev => {\n for (let i = prev.length - 1; i >= 0; i--) {\n if (prev[i].visible) {\n return [...prev.slice(0, i), ...prev.slice(i + 1)];\n }\n }\n return prev;\n });\n };\n\n const dismissShift = () => {\n setToasts(prev => {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i].visible) {\n return prev.map((t, idx) => (idx === i ? { ...t, visible: false } : t));\n }\n }\n return prev;\n });\n };\n\n const removeShift = () => {\n setToasts(prev => {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i].visible) {\n return [...prev.slice(0, i), ...prev.slice(i + 1)];\n }\n }\n return prev;\n });\n };\n\n const updateToast = (toastId: string, updates: Partial<ToastData>) => {\n setToasts(prev =>\n prev.map(t => (t.id === toastId ? { ...t, ...updates, updatedAt: Date.now() } : t)),\n );\n };\n\n const pauseToast = (toastId: string) => {\n setToasts(prev => prev.map(t => (t.id === toastId && !t.paused ? { ...t, paused: true } : t)));\n setPausedAt(Date.now());\n };\n\n const resumeToast = (toastId: string) => {\n const pauseTime = pausedAt();\n if (pauseTime) {\n setToasts(prev =>\n prev.map(t =>\n t.id === toastId && t.paused\n ? { ...t, paused: false, pauseDuration: t.pauseDuration + (Date.now() - pauseTime) }\n : t,\n ),\n );\n }\n setPausedAt(null);\n };\n\n return {\n toasts,\n createToast,\n upsertToast,\n dismissToast,\n removeToast,\n updateToast,\n pauseToast,\n resumeToast,\n dismissPop,\n removePop,\n dismissShift,\n removeShift,\n };\n}\n\n// Create singleton store\nexport const toastStore = createRoot(createToastStore);\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":["cn","getColor","acquire","OFFSET","release","ZIndex","ZIndexType","cva","VariantProps","Component","createSignal","createUniqueId","JSX","Match","mergeProps","onCleanup","onMount","Show","Switch","TooltipPortalProps","TooltipProps","tooltipVariants","variants","color","neutral","primary","secondary","accent","info","success","warning","error","position","top","bottom","right","left","TooltipVariantsProps","ActiveEntry","node","HTMLDivElement","registryKey","offset","bubbleHovered","activeMap","Map","customContentRegistry","Element","refCount","observer","IntersectionObserver","calcStyle","r","DOMRect","Record","OFFSET_PX","width","transform","height","showTooltip","id","triggerEl","HTMLElement","content","customContent","colorClass","extraClass","customZIndex","has","getBoundingClientRect","style","document","createElement","className","Object","assign","pointerEvents","zIndexOffset","zIndex","undefined","acquired","TOOLTIP","String","textContent","appendChild","cloneNode","entry","set","addEventListener","onBubbleEnter","onBubbleLeave","removeTooltipIfIdle","body","sentinelActiveSet","Set","get","remove","delete","removeTooltip","getOrCreateObserver","entries","el","target","dataset","tip","pos","Number","isIntersecting","add","closest","threshold","Tooltip","p","_$createComponent","when","hidden","fallback","_$memo","children","TooltipDefaultMain","type","TooltipPortalMain","const","sentinelRef","customContentRef","class","firstElementChild","observe","cleanupTooltipRegistration","unobserve","disconnect","_el$","_tmpl$","_el$2","firstChild","_$use","tt","_ref$","_$insert","_c$","_el$3","_tmpl$2","_ref$2","_$effect","_p$","_v$","root","_v$2","e","_$className","t","_$setAttribute","portalBubbleStyle","setPortalBubbleStyle","CSSProperties","TooltipEntry","setHovered","v","updateCoords","ContainerState","count","containerMap","WeakMap","ListenerPair","over","Event","out","listenerMap","makeMouseOver","state","getAttribute","makeMouseOut","related","MouseEvent","relatedTarget","contains","attachToContainer","passive","detachFromContainer","pair","removeEventListener","calcPortalStyle","isHovered","setIsHovered","onTriggerMount","setAttribute","handle","cancelled","doCleanup","register","getElementById","containerId","s","removeAttribute","queueMicrotask","cancelAndDetachTrigger","_el$4","_tmpl$3","_$spread","_$mergeProps","open","blockScroll","customValue"],"sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { getColor } from '@/utils/helper';\nimport { acquire, OFFSET, release, ZIndex, ZIndexType } from '@components/z-index';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport {\n Component,\n createSignal,\n createUniqueId,\n JSX,\n Match,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n Switch,\n} from 'solid-js';\nimport type { TooltipPortalProps, TooltipProps } from './tooltip.types';\n\n// ─── CVA variants (dùng cho TooltipPortal) ────────────────────────────────\n\nconst tooltipVariants = cva('', {\n variants: {\n color: {\n neutral: 'tooltip-neutral',\n primary: 'tooltip-primary',\n secondary: 'tooltip-secondary',\n accent: 'tooltip-accent',\n info: 'tooltip-info',\n success: 'tooltip-success',\n warning: 'tooltip-warning',\n error: 'tooltip-error',\n },\n position: {\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n right: 'tooltip-right',\n left: 'tooltip-left',\n },\n },\n});\nexport type TooltipVariantsProps = VariantProps<typeof tooltipVariants>;\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP — IO-based (không bị clip bởi overflow)\n// ═══════════════════════════════════════════════════════════════════════════\n\n// --- Global scope (IO mechanism) ---\ntype ActiveEntry = {\n node: HTMLDivElement;\n registryKey: string;\n offset: number;\n /** true khi chuột đang ở trên bubble — giữ tooltip không bị remove */\n bubbleHovered: boolean;\n /** position của trigger để tính bridge */\n position: 'top' | 'bottom' | 'left' | 'right';\n};\n\nconst activeMap = new Map<string, ActiveEntry>();\n\n/** Registry cho customContent: id → rendered DOM node */\nconst customContentRegistry = new Map<string, Element>();\n\nlet refCount = 0;\nlet observer: IntersectionObserver | null = null;\n\nfunction calcStyle(\n r: DOMRect,\n position: 'top' | 'bottom' | 'left' | 'right',\n): Record<string, string> {\n const OFFSET_PX = 8;\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nfunction showTooltip(\n id: string,\n triggerEl: HTMLElement,\n content: string | undefined,\n customContent: Element | undefined,\n position: 'top' | 'bottom' | 'left' | 'right',\n colorClass: string,\n extraClass: string | undefined,\n customZIndex: number | undefined,\n) {\n if (activeMap.has(id)) return;\n\n const r = triggerEl.getBoundingClientRect();\n const style = calcStyle(r, position);\n\n const node = document.createElement('div');\n node.className = cn('too06', colorClass, extraClass);\n\n Object.assign(node.style, { position: 'fixed', pointerEvents: 'auto' }, style);\n\n let registryKey: string;\n let zIndexOffset: number;\n let zIndex: number;\n\n if (customZIndex !== undefined) {\n zIndex = customZIndex;\n registryKey = '';\n zIndexOffset = -1;\n } else {\n const acquired = acquire(ZIndexType.TOOLTIP, OFFSET[ZIndexType.TOOLTIP]);\n zIndex = acquired.zIndex;\n registryKey = acquired.registryKey;\n zIndexOffset = acquired.offset;\n }\n\n node.style.zIndex = String(zIndex);\n\n if (content) {\n node.textContent = content;\n } else if (customContent) {\n node.appendChild(customContent.cloneNode(true));\n }\n\n const entry: ActiveEntry = {\n node,\n registryKey,\n offset: zIndexOffset,\n bubbleHovered: false,\n position,\n };\n activeMap.set(id, entry);\n\n node.addEventListener('mouseenter', function onBubbleEnter() {\n entry.bubbleHovered = true;\n });\n node.addEventListener('mouseleave', function onBubbleLeave() {\n entry.bubbleHovered = false;\n // Nếu sentinel đã không còn visible (chuột đã rời trigger), xóa tooltip\n removeTooltipIfIdle(id);\n });\n\n document.body.appendChild(node);\n}\n\n/** sentinelActive = true khi IO đang thấy sentinel (chuột trên trigger/bridge) */\nconst sentinelActiveSet = new Set<string>();\n\nfunction removeTooltipIfIdle(id: string) {\n const entry = activeMap.get(id);\n if (!entry) return;\n // Chỉ remove nếu cả sentinel lẫn bubble đều không có hover\n if (sentinelActiveSet.has(id) || entry.bubbleHovered) return;\n entry.node.remove();\n if (entry.offset >= 0) {\n release(entry.registryKey, entry.offset);\n }\n activeMap.delete(id);\n}\n\nfunction removeTooltip(id: string) {\n sentinelActiveSet.delete(id);\n removeTooltipIfIdle(id);\n}\n\n/**\n * Trick kết hợp CSS: sentinel element 1×1px ẩn bên trong wrapper.\n * Khi `:hover` CSS làm sentinel hiển thị (`display: block`), IntersectionObserver\n * phát hiện nó intersect viewport và gọi `showTooltip()`.\n * Không dùng JS event listener trên trigger — zero overhead.\n */\nfunction getOrCreateObserver(): IntersectionObserver {\n if (!observer) {\n observer = new IntersectionObserver(\n entries => {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n const id = el.dataset.id ?? '';\n const content = el.dataset.tip;\n const pos = (el.dataset.position ?? 'top') as 'top' | 'bottom' | 'left' | 'right';\n const colorClass = el.dataset.colorClass ?? '';\n const extraClass = el.dataset.extraClass;\n const customZIndex = el.dataset.customZIndex\n ? Number(el.dataset.customZIndex)\n : undefined;\n\n if (entry.isIntersecting) {\n sentinelActiveSet.add(id);\n const triggerEl = el.closest('[data-tt]') as HTMLElement | null;\n if (!triggerEl) continue;\n const customContent = customContentRegistry.get(id);\n showTooltip(\n id,\n triggerEl,\n content,\n customContent,\n pos,\n colorClass,\n extraClass,\n customZIndex,\n );\n } else {\n removeTooltip(id);\n }\n }\n },\n { threshold: 0 },\n );\n }\n return observer;\n}\n\n// ─── Tooltip — unified entry point ──────────────────────────────────────────\n\nexport const Tooltip: Component<TooltipProps> = p => {\n return (\n <Show when={!p.hidden} fallback={<>{p.children}</>}>\n <Switch fallback={<TooltipDefaultMain {...p} />}>\n <Match when={p.type === 'portal' || 'containerId' in p}>\n <TooltipPortalMain {...(p as TooltipPortalProps)} />\n </Match>\n </Switch>\n </Show>\n );\n};\n\n// ─── Default (IO-based) impl ─────────────────────────────────────────────────\n\nconst TooltipDefaultMain: Component<TooltipProps> = p => {\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n const id = createUniqueId();\n let sentinelRef!: HTMLDivElement;\n let customContentRef!: HTMLDivElement;\n\n onMount(() => {\n refCount++;\n sentinelRef.dataset.id = id;\n sentinelRef.dataset.tip = p.content ?? '';\n sentinelRef.dataset.position = p.position;\n sentinelRef.dataset.colorClass = getColor(p.color);\n if (p.class?.content) sentinelRef.dataset.extraClass = p.class.content;\n if (p.zIndex !== undefined) sentinelRef.dataset.customZIndex = String(p.zIndex);\n if (p.customContent && customContentRef?.firstElementChild) {\n customContentRegistry.set(id, customContentRef.firstElementChild);\n }\n getOrCreateObserver().observe(sentinelRef);\n });\n\n onCleanup(function cleanupTooltipRegistration() {\n observer?.unobserve(sentinelRef);\n removeTooltip(id);\n customContentRegistry.delete(id);\n refCount--;\n if (refCount === 0 && observer) {\n observer.disconnect();\n observer = null;\n }\n });\n\n return (\n <div\n ref={el => (el.dataset.tt = '')}\n class={cn('too07', p.class?.root)}\n data-pos={p.position ?? 'top'}\n >\n <div ref={sentinelRef} class=\"too08\" />\n {p.children as JSX.Element}\n {p.customContent && (\n <div ref={customContentRef} class=\"hidden\">\n {p.customContent}\n </div>\n )}\n </div>\n );\n};\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP PORTAL — Event-delegation mode\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * SINGLETON PORTAL BUBBLE — Thiết kế có chủ đích.\n * Signal ở module scope vì toàn bộ hệ thống tooltip portal chỉ có\n * DUY NHẤT 1 bubble tồn tại trong DOM tại bất kỳ thời điểm nào.\n */\nconst [portalBubbleStyle, setPortalBubbleStyle] = createSignal<\n import('solid-js').JSX.CSSProperties\n>({});\n\ntype TooltipEntry = {\n setHovered: (v: boolean) => void;\n updateCoords: () => void;\n};\n\ntype ContainerState = {\n count: number;\n entries: Map<string, TooltipEntry>;\n};\n\nconst containerMap = new WeakMap<Element, ContainerState>();\n\ntype ListenerPair = { over: (e: Event) => void; out: (e: Event) => void };\nconst listenerMap = new WeakMap<Element, ListenerPair>();\n\nfunction makeMouseOver(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const entry = state.entries.get(tt);\n if (entry) {\n entry.updateCoords();\n entry.setHovered(true);\n }\n };\n}\n\nfunction makeMouseOut(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const related = (e as MouseEvent).relatedTarget as Element | null;\n if (related && el.contains(related)) return;\n const entry = state.entries.get(tt);\n if (entry) entry.setHovered(false);\n };\n}\n\nfunction attachToContainer(root: Element, state: ContainerState) {\n const over = makeMouseOver(state);\n const out = makeMouseOut(state);\n listenerMap.set(root, { over, out });\n root.addEventListener('mouseover', over, { passive: true });\n root.addEventListener('mouseout', out, { passive: true });\n}\n\nfunction detachFromContainer(root: Element) {\n const pair = listenerMap.get(root);\n if (!pair) return;\n root.removeEventListener('mouseover', pair.over);\n root.removeEventListener('mouseout', pair.out);\n listenerMap.delete(root);\n}\n\nfunction calcPortalStyle(\n el: HTMLElement,\n position: 'top' | 'bottom' | 'left' | 'right',\n): import('solid-js').JSX.CSSProperties {\n const r = el.getBoundingClientRect();\n const OFFSET_PX = 8;\n\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nconst TooltipPortalMain: Component<TooltipPortalProps> = p => {\n const id = createUniqueId();\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n\n const [isHovered, setIsHovered] = createSignal(false);\n\n const onTriggerMount = (el: HTMLDivElement) => {\n const position = p.position ?? 'top';\n const updateCoords = () => setPortalBubbleStyle(calcPortalStyle(el, position));\n el.setAttribute('tt', id);\n\n const handle = { cancelled: false, doCleanup: undefined as (() => void) | undefined };\n\n const register = () => {\n if (handle.cancelled) return;\n\n const root = document.getElementById(p.containerId);\n if (!root) return;\n\n let state = containerMap.get(root);\n if (!state) {\n state = { count: 0, entries: new Map() };\n containerMap.set(root, state);\n }\n state.entries.set(id, { setHovered: setIsHovered, updateCoords });\n state.count += 1;\n if (state.count === 1) attachToContainer(root, state);\n\n handle.doCleanup = () => {\n const s = containerMap.get(root);\n if (!s) return;\n s.entries.delete(id);\n s.count -= 1;\n el.removeAttribute('tt');\n if (s.count === 0) {\n detachFromContainer(root);\n containerMap.delete(root);\n }\n };\n };\n\n queueMicrotask(register);\n onCleanup(function cancelAndDetachTrigger() {\n handle.cancelled = true;\n handle.doCleanup?.();\n });\n };\n\n return (\n <div\n ref={onTriggerMount}\n class={cn(\n 'too01',\n tooltipVariants({ color: p.color, position: p.position }),\n getColor(p.color),\n 'too04',\n p.class?.root,\n )}\n {...(p.content && !p.customContent && { ['data-tip']: p.content })}\n >\n <Switch>\n <Match when={p.content}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', getColor(p.color), p.class?.content)}\n blockScroll={false}\n customValue={p.zIndex}\n >\n {p.content}\n </ZIndex>\n </Match>\n <Match when={p.customContent}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', p.class?.content)}\n customValue={p.zIndex}\n >\n {p.customContent}\n </ZIndex>\n </Match>\n </Switch>\n {p.children as JSX.Element}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tour.d.ts","sourceRoot":"","sources":["../../../src/components/tour/tour.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAiB,SAAS,EAAY,MAAM,cAAc,CAAC;AA+R3E,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,OAAO,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAyEhG"}
1
+ {"version":3,"file":"tour.d.ts","sourceRoot":"","sources":["../../../src/components/tour/tour.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAiB,SAAS,EAAY,MAAM,cAAc,CAAC;AA+R3E,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,OAAO,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CA4EhG"}
@@ -5,5 +5,5 @@ import{cn as e}from"../../utils/cn.js";import{createThrottle as t}from"../../uti
5
5
  ${a}px ${o}px,
6
6
  ${a}px ${t}px,
7
7
  ${n}px ${t}px
8
- )`}var M=12,N=340;function P(e,t,n){let r=window.innerWidth,i=window.innerHeight,{top:a,left:o,width:s,height:c}=e,l=0,u=0,d=`50%`,f=o+s/2,p=a+c/2;switch(t){case`bottom`:case`bottom-start`:case`bottom-end`:l=a+c+M,u=t===`bottom-start`?o:t===`bottom-end`?o+s-N:f-N/2,d=`${f-Math.max(16,Math.min(u,u))}px`;break;case`top`:case`top-start`:case`top-end`:l=a-n-M,u=t===`top-start`?o:t===`top-end`?o+s-N:f-N/2,d=`${f-Math.max(16,Math.min(u,u))}px`;break;case`left`:case`left-start`:case`left-end`:l=t===`left-start`?a:t===`left-end`?a+c-n:p-n/2,u=o-N-M,d=`${p-l}px`;break;case`right`:case`right-start`:case`right-end`:l=t===`right-start`?a:t===`right-end`?a+c-n:p-n/2,u=o+s+M,d=`${p-l}px`;break}return u=Math.max(16,Math.min(u,r-N-16)),l=Math.max(16,Math.min(l,i-n-16)),{top:l,left:u,arrowOffset:d}}var F=s=>{let d=b({showClose:!0,showProgress:!0,maskClosable:!1,prevLabel:`Prev`,nextLabel:`Next`,doneLabel:`Done`},s),[m,M]=y({top:0,left:0,width:0,height:0}),[F,I]=y({top:0,left:0,arrowOffset:`50%`}),[L,R]=y(200),z,B=()=>d.steps[d.activeStep()],V=()=>d.activeStep()===d.steps.length-1;function H(){let e=B();if(!e)return;let t=e.spotlightPadding??8,n=e.placement??`bottom`,r=z?.offsetHeight??L(),i=A(e.target,t);i&&(M(i),I(P(i,n,r)))}let U=t(H,60);v(function(){if(!d.visible())return;d.activeStep();let e=B();e?.target&&document.getElementById(e.target)?.scrollIntoView({block:`nearest`,behavior:`smooth`});let t=setTimeout(()=>{t=void 0,z&&R(z.offsetHeight),H()},80);x(function(){t!==void 0&&(clearTimeout(t),t=void 0)})}),S(function(){window.addEventListener(`resize`,U),window.addEventListener(`scroll`,U,!0),x(function(){window.removeEventListener(`resize`,U),window.removeEventListener(`scroll`,U,!0),U.cancel()})});let W=()=>({"clip-path":j(m())}),G=()=>{let{top:e,left:t,arrowOffset:n}=F();return{top:`${e}px`,left:`${t}px`,width:`${N}px`,"--arrow-offset":n}},K=()=>{d.maskClosable&&d.onClose()};return o(r,{get type(){return n.OVERLAY},get open(){return d.visible()},blockScroll:!0,get children(){return[(()=>{var t=w();return t.$$click=K,c(()=>a(t,e(`tr01`,d.class?.mask))),t})(),(()=>{var t=w();return c(n=>{var r=e(`tr02`,d.class?.spotlight),i=W();return r!==n.e&&a(t,n.e=r),n.t=p(t,i,n.t),n},{e:void 0,t:void 0}),t})(),(()=>{var t=O(),n=t.firstChild,r=n.firstChild,s=z;return typeof s==`function`?h(s,t):z=t,l(r,()=>B()?.title),l(n,o(_,{get when(){return d.showClose},get children(){var e=T();return i(e,`click`,d.onClose,!0),l(e,o(C,{size:14})),e}}),null),l(t,o(_,{get when(){return B()?.content},get children(){var t=w();return l(t,()=>B()?.content),c(()=>a(t,e(`tr05`,d.class?.body))),t}}),null),l(t,o(_,{get when(){return!B()?.footer},get fallback(){return(()=>{var t=w();return l(t,()=>B()?.footer),c(()=>a(t,e(`tr06`,d.class?.footer))),t})()},get children(){var t=D(),n=t.firstChild,r=n.firstChild;return l(t,o(_,{get when(){return d.showProgress},get children(){var t=w();return l(t,o(g,{get each(){return d.steps},children:(t,n)=>(()=>{var t=k();return c(()=>a(t,e(`tr07-dot`,n()===d.activeStep()&&`active`))),t})()})),c(()=>a(t,e(`tr07`,d.class?.progress))),t}}),n),l(n,o(_,{get when(){return d.activeStep()>0},get children(){var e=E();return i(e,`click`,d.onPrev,!0),l(e,()=>d.prevLabel),e}}),r),i(r,`click`,V()?d.onClose:d.onNext,!0),l(r,(()=>{var e=u(()=>!!V());return()=>e()?d.doneLabel:d.nextLabel})()),c(()=>a(t,e(`tr06`,d.class?.footer))),t}}),null),c(r=>{var i=e(`tr03`,d.class?.popup),o=G(),s=B()?.placement??`bottom`,c=e(`tr04`,d.class?.header);return i!==r.e&&a(t,r.e=i),r.t=p(t,o,r.t),s!==r.a&&f(t,`data-placement`,r.a=s),c!==r.o&&a(n,r.o=c),r},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()]}})};function I(e){let[t,n]=y(0),[r,i]=y(!1);function a(t=0){n(t),i(!0),e.steps[t]?.onEnter?.(t),e.onStepChange?.(t)}function s(){let n=t();e.steps[n]?.onLeave?.(n),i(!1),e.onClose?.(n)}function c(){let r=t();e.steps[r]?.onLeave?.(r);let a=r+1;if(a>=e.steps.length){i(!1),e.onFinish?.();return}n(a),e.steps[a]?.onEnter?.(a),e.onStepChange?.(a)}function l(){let r=t();if(r<=0)return;e.steps[r]?.onLeave?.(r);let i=r-1;n(i),e.steps[i]?.onEnter?.(i),e.onStepChange?.(i)}function u(r){if(r<0||r>=e.steps.length)return;let i=t();e.steps[i]?.onLeave?.(i),n(r),e.steps[r]?.onEnter?.(r),e.onStepChange?.(r)}return[{start:a,stop:s,next:c,prev:l,goTo:u,isActive:r,currentStep:t},()=>o(F,d(e,{activeStep:t,visible:r,onClose:s,onNext:c,onPrev:l}))]}s([`click`]);export{I as createTour};
8
+ )`}var M=12,N=340;function P(e,t,n){let r=window.innerWidth,i=window.innerHeight,{top:a,left:o,width:s,height:c}=e,l=0,u=0,d=`50%`,f=o+s/2,p=a+c/2;switch(t){case`bottom`:case`bottom-start`:case`bottom-end`:l=a+c+M,u=t===`bottom-start`?o:t===`bottom-end`?o+s-N:f-N/2,d=`${f-Math.max(16,Math.min(u,u))}px`;break;case`top`:case`top-start`:case`top-end`:l=a-n-M,u=t===`top-start`?o:t===`top-end`?o+s-N:f-N/2,d=`${f-Math.max(16,Math.min(u,u))}px`;break;case`left`:case`left-start`:case`left-end`:l=t===`left-start`?a:t===`left-end`?a+c-n:p-n/2,u=o-N-M,d=`${p-l}px`;break;case`right`:case`right-start`:case`right-end`:l=t===`right-start`?a:t===`right-end`?a+c-n:p-n/2,u=o+s+M,d=`${p-l}px`;break}return u=Math.max(16,Math.min(u,r-N-16)),l=Math.max(16,Math.min(l,i-n-16)),{top:l,left:u,arrowOffset:d}}var F=s=>{let d=b({showClose:!0,showProgress:!0,maskClosable:!1,prevLabel:`Prev`,nextLabel:`Next`,doneLabel:`Done`},s),[m,M]=y({top:0,left:0,width:0,height:0}),[F,I]=y({top:0,left:0,arrowOffset:`50%`}),[L,R]=y(200),z,B=()=>d.steps[d.activeStep()],V=()=>d.activeStep()===d.steps.length-1;function H(){let e=B();if(!e)return;let t=e.spotlightPadding??8,n=e.placement??`bottom`,r=z?.offsetHeight??L(),i=A(e.target,t);i&&(M(i),I(P(i,n,r)))}let U=t(H,60);v(function(){if(!d.visible())return;d.activeStep();let e=B();e?.target&&document.getElementById(e.target)?.scrollIntoView({block:`nearest`,behavior:`smooth`});let t=setTimeout(()=>{t=void 0,z&&R(z.offsetHeight),H()},80);x(function(){t!==void 0&&(clearTimeout(t),t=void 0)})}),S(function(){window.addEventListener(`resize`,U),window.addEventListener(`scroll`,U,!0),x(function(){window.removeEventListener(`resize`,U),window.removeEventListener(`scroll`,U,!0),U.cancel()})});let W=()=>({"clip-path":j(m())}),G=()=>{let{top:e,left:t,arrowOffset:n}=F();return{top:`${e}px`,left:`${t}px`,width:`${N}px`,"--arrow-offset":n}},K=()=>{d.maskClosable&&d.onClose()};return o(r,{get type(){return n.OVERLAY},get open(){return d.visible()},blockScroll:!0,get children(){return[(()=>{var t=w();return t.$$click=K,c(()=>a(t,e(`tr01`,d.class?.mask))),t})(),(()=>{var t=w();return c(n=>{var r=e(`tr02`,d.class?.spotlight),i=W();return r!==n.e&&a(t,n.e=r),n.t=p(t,i,n.t),n},{e:void 0,t:void 0}),t})(),(()=>{var t=O(),n=t.firstChild,r=n.firstChild,s=z;return typeof s==`function`?h(s,t):z=t,l(r,()=>B()?.title),l(n,o(_,{get when(){return d.showClose},get children(){var e=T();return i(e,`click`,d.onClose,!0),l(e,o(C,{size:14})),e}}),null),l(t,o(_,{get when(){return B()?.content},get children(){var t=w();return l(t,()=>B()?.content),c(()=>a(t,e(`tr05`,d.class?.body))),t}}),null),l(t,o(_,{get when(){return!B()?.footer},get fallback(){return(()=>{var t=w();return l(t,()=>B()?.footer),c(()=>a(t,e(`tr06`,d.class?.footer))),t})()},get children(){var t=D(),n=t.firstChild,r=n.firstChild;return l(t,o(_,{get when(){return d.showProgress},get children(){var t=w();return l(t,o(g,{get each(){return d.steps},children:(t,n)=>(()=>{var t=k();return c(()=>a(t,e(`tr07-dot`,n()===d.activeStep()&&`active`))),t})()})),c(()=>a(t,e(`tr07`,d.class?.progress))),t}}),n),l(n,o(_,{get when(){return d.activeStep()>0},get children(){var e=E();return i(e,`click`,d.onPrev,!0),l(e,()=>d.prevLabel),e}}),r),i(r,`click`,V()?d.onClose:d.onNext,!0),l(r,(()=>{var e=u(()=>!!V());return()=>e()?d.doneLabel:d.nextLabel})()),c(()=>a(t,e(`tr06`,d.class?.footer))),t}}),null),c(r=>{var i=e(`tr03`,d.class?.popup),o=G(),s=B()?.placement??`bottom`,c=e(`tr04`,d.class?.header);return i!==r.e&&a(t,r.e=i),r.t=p(t,o,r.t),s!==r.a&&f(t,`data-placement`,r.a=s),c!==r.o&&a(n,r.o=c),r},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()]}})};function I(e){let[t,n]=y(0),[r,i]=y(!1);function a(t=0){n(t),i(!0),e.steps[t]?.onEnter?.(t),e.onStepChange?.(t)}function s(){let n=t();e.steps[n]?.onLeave?.(n),i(!1),e.onClose?.(n)}function c(){let a=t();e.steps[a]?.onLeave?.(a);let o=a+1;if(o>=e.steps.length){i(!1),e.onFinish?.();return}n(o),r()||i(!0),e.steps[o]?.onEnter?.(o),e.onStepChange?.(o)}function l(){let a=t();if(a<=0)return;e.steps[a]?.onLeave?.(a);let o=a-1;n(o),r()||i(!0),e.steps[o]?.onEnter?.(o),e.onStepChange?.(o)}function u(a){if(a<0||a>=e.steps.length)return;let o=t();e.steps[o]?.onLeave?.(o),n(a),r()||i(!0),e.steps[a]?.onEnter?.(a),e.onStepChange?.(a)}return[{start:a,stop:s,next:c,prev:l,goTo:u,isActive:r,currentStep:t},()=>o(F,d(e,{activeStep:t,visible:r,onClose:s,onNext:c,onPrev:l}))]}s([`click`]);export{I as createTour};
9
9
  //# sourceMappingURL=tour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.js","names":["ZIndex","ZIndexType","cn","createThrottle","X","createEffect","createSignal","For","mergeProps","onCleanup","onMount","Show","TourAPI","TourPlacement","TourProps","TourStep","SpotlightRect","top","left","width","height","getElementRect","targetId","padding","el","document","getElementById","rect","getBoundingClientRect","buildClipPath","right","bottom","PopupPosition","arrowOffset","POPUP_MARGIN","POPUP_WIDTH","computePopupPosition","spotRect","placement","popupHeight","vw","window","innerWidth","vh","innerHeight","pTop","pLeft","centerX","centerY","Math","max","min","InternalTourProps","activeStep","visible","onClose","onNext","onPrev","TourComponent","rawProps","props","showClose","showProgress","maskClosable","prevLabel","nextLabel","doneLabel","setSpotRect","popupPos","setPopupPos","setPopupHeight","popupRef","HTMLDivElement","currentStep","steps","isLastStep","length","recalculate","step","spotlightPadding","ph","offsetHeight","target","throttledRecalc","trackStepChange","_step","scrollIntoView","block","behavior","timer","ReturnType","setTimeout","undefined","cancelStepTimer","clearTimeout","registerResizeListener","addEventListener","removeResizeListener","removeEventListener","cancel","maskStyle","popupStyle","handleMaskClick","_$createComponent","type","OVERLAY","open","blockScroll","children","_el$","_tmpl$","$$click","_$effect","_$className","class","mask","_el$2","_p$","_v$","spotlight","_v$2","e","t","_$style","_el$3","_tmpl$5","_el$4","firstChild","_el$5","_ref$","_$use","_$insert","title","when","_el$6","_tmpl$2","_$addEventListener","size","content","_el$7","body","footer","fallback","_el$11","_el$8","_tmpl$4","_el$0","_el$10","_el$9","each","_","i","_el$12","_tmpl$6","progress","_el$1","_tmpl$3","_c$","_$memo","_v$3","popup","_v$4","_v$5","_v$6","header","a","_$setAttribute","o","createTour","tourProps","JSX","Element","setActiveStep","setVisible","start","stepIndex","onEnter","onStepChange","stop","onLeave","next","cur","nextStep","onFinish","prev","prevStep","goTo","api","isActive","TourRenderer","_$mergeProps","_$delegateEvents"],"sources":["../../../src/components/tour/tour.tsx"],"sourcesContent":["import { ZIndex, ZIndexType } from '@components/z-index';\nimport { cn } from '@utils/cn';\nimport { createThrottle } from '@utils/helper';\nimport X from 'lucide-solid/icons/x';\nimport { createEffect, createSignal, For, mergeProps, onCleanup, onMount, Show } from 'solid-js';\nimport { TourAPI, TourPlacement, TourProps, TourStep } from './tour.types';\n\ninterface SpotlightRect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nfunction getElementRect(targetId: string, padding: number): SpotlightRect | null {\n const el = document.getElementById(targetId);\n if (!el) return null;\n const rect = el.getBoundingClientRect();\n return {\n top: rect.top - padding,\n left: rect.left - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n };\n}\n\nfunction buildClipPath(rect: SpotlightRect): string {\n const { top, left, width, height } = rect;\n const right = left + width;\n const bottom = top + height;\n\n return `polygon(\n 0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%,\n ${left}px ${top}px,\n ${left}px ${bottom}px,\n ${right}px ${bottom}px,\n ${right}px ${top}px,\n ${left}px ${top}px\n )`;\n}\n\ninterface PopupPosition {\n top: number;\n left: number;\n arrowOffset: string;\n}\n\nconst POPUP_MARGIN = 12;\nconst POPUP_WIDTH = 340;\n\nfunction computePopupPosition(\n spotRect: SpotlightRect,\n placement: TourPlacement,\n popupHeight: number,\n): PopupPosition {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const { top, left, width, height } = spotRect;\n let pTop = 0;\n let pLeft = 0;\n let arrowOffset = '50%';\n\n const centerX = left + width / 2;\n const centerY = top + height / 2;\n\n switch (placement) {\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n pTop = top + height + POPUP_MARGIN;\n pLeft =\n placement === 'bottom-start'\n ? left\n : placement === 'bottom-end'\n ? left + width - POPUP_WIDTH\n : centerX - POPUP_WIDTH / 2;\n arrowOffset = `${centerX - Math.max(16, Math.min(pLeft, pLeft))}px`;\n break;\n\n case 'top':\n case 'top-start':\n case 'top-end':\n pTop = top - popupHeight - POPUP_MARGIN;\n pLeft =\n placement === 'top-start'\n ? left\n : placement === 'top-end'\n ? left + width - POPUP_WIDTH\n : centerX - POPUP_WIDTH / 2;\n arrowOffset = `${centerX - Math.max(16, Math.min(pLeft, pLeft))}px`;\n break;\n\n case 'left':\n case 'left-start':\n case 'left-end':\n pTop =\n placement === 'left-start'\n ? top\n : placement === 'left-end'\n ? top + height - popupHeight\n : centerY - popupHeight / 2;\n pLeft = left - POPUP_WIDTH - POPUP_MARGIN;\n arrowOffset = `${centerY - pTop}px`;\n break;\n\n case 'right':\n case 'right-start':\n case 'right-end':\n pTop =\n placement === 'right-start'\n ? top\n : placement === 'right-end'\n ? top + height - popupHeight\n : centerY - popupHeight / 2;\n pLeft = left + width + POPUP_MARGIN;\n arrowOffset = `${centerY - pTop}px`;\n break;\n }\n\n pLeft = Math.max(16, Math.min(pLeft, vw - POPUP_WIDTH - 16));\n pTop = Math.max(16, Math.min(pTop, vh - popupHeight - 16));\n\n return { top: pTop, left: pLeft, arrowOffset };\n}\n\ninterface InternalTourProps extends TourProps {\n activeStep: () => number;\n visible: () => boolean;\n onClose: () => void;\n onNext: () => void;\n onPrev: () => void;\n}\n\nconst TourComponent = (rawProps: InternalTourProps) => {\n const props = mergeProps(\n {\n showClose: true,\n showProgress: true,\n maskClosable: false,\n prevLabel: 'Prev',\n nextLabel: 'Next',\n doneLabel: 'Done',\n },\n rawProps,\n );\n\n const [spotRect, setSpotRect] = createSignal<SpotlightRect>({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n const [popupPos, setPopupPos] = createSignal<PopupPosition>({\n top: 0,\n left: 0,\n arrowOffset: '50%',\n });\n const [popupHeight, setPopupHeight] = createSignal(200);\n\n let popupRef: HTMLDivElement | undefined;\n\n const currentStep = (): TourStep | undefined => props.steps[props.activeStep()];\n const isLastStep = () => props.activeStep() === props.steps.length - 1;\n\n function recalculate() {\n const step = currentStep();\n if (!step) return;\n\n const padding = step.spotlightPadding ?? 8;\n const placement = step.placement ?? 'bottom';\n const ph = popupRef?.offsetHeight ?? popupHeight();\n\n const rect = getElementRect(step.target, padding);\n if (!rect) return;\n setSpotRect(rect);\n setPopupPos(computePopupPosition(rect, placement, ph));\n }\n\n const throttledRecalc = createThrottle(recalculate, 60);\n\n createEffect(function trackStepChange() {\n if (!props.visible()) return;\n\n const _step = props.activeStep();\n void _step;\n\n const step = currentStep();\n if (step?.target) {\n const el = document.getElementById(step.target);\n el?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n\n let timer: ReturnType<typeof setTimeout> | undefined = setTimeout(() => {\n timer = undefined;\n if (popupRef) setPopupHeight(popupRef.offsetHeight);\n recalculate();\n }, 80);\n onCleanup(function cancelStepTimer() {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n });\n });\n\n onMount(function registerResizeListener() {\n window.addEventListener('resize', throttledRecalc);\n window.addEventListener('scroll', throttledRecalc, true);\n onCleanup(function removeResizeListener() {\n window.removeEventListener('resize', throttledRecalc);\n window.removeEventListener('scroll', throttledRecalc, true);\n throttledRecalc.cancel();\n });\n });\n\n const maskStyle = () => ({ 'clip-path': buildClipPath(spotRect()) });\n\n const popupStyle = () => {\n const { top, left, arrowOffset } = popupPos();\n return {\n top: `${top}px`,\n left: `${left}px`,\n width: `${POPUP_WIDTH}px`,\n '--arrow-offset': arrowOffset,\n };\n };\n\n const handleMaskClick = () => {\n if (props.maskClosable) props.onClose();\n };\n\n return (\n <ZIndex type={ZIndexType.OVERLAY} open={props.visible()} blockScroll>\n <div class={cn('tr01', props.class?.mask)} onClick={handleMaskClick} />\n\n <div class={cn('tr02', props.class?.spotlight)} style={maskStyle()} />\n\n <div\n ref={popupRef}\n class={cn('tr03', props.class?.popup)}\n style={popupStyle()}\n data-placement={currentStep()?.placement ?? 'bottom'}\n >\n <div class={cn('tr04', props.class?.header)}>\n <span class=\"tr04-title\">{currentStep()?.title}</span>\n <Show when={props.showClose}>\n <button class=\"tr04-close\" onClick={props.onClose} aria-label=\"Close tour\">\n <X size={14} />\n </button>\n </Show>\n </div>\n\n <Show when={currentStep()?.content}>\n <div class={cn('tr05', props.class?.body)}>{currentStep()?.content}</div>\n </Show>\n\n <Show\n when={!currentStep()?.footer}\n fallback={<div class={cn('tr06', props.class?.footer)}>{currentStep()?.footer}</div>}\n >\n <div class={cn('tr06', props.class?.footer)}>\n <Show when={props.showProgress}>\n <div class={cn('tr07', props.class?.progress)}>\n <For each={props.steps}>\n {(_, i) => (\n <span class={cn('tr07-dot', i() === props.activeStep() && 'active')} />\n )}\n </For>\n </div>\n </Show>\n\n <div class=\"ml-auto flex gap-2\">\n <Show when={props.activeStep() > 0}>\n <button class=\"btn btn-sm btn-ghost\" onClick={props.onPrev}>\n {props.prevLabel}\n </button>\n </Show>\n <button\n class=\"btn btn-sm btn-primary\"\n onClick={isLastStep() ? props.onClose : props.onNext}\n >\n {isLastStep() ? props.doneLabel : props.nextLabel}\n </button>\n </div>\n </div>\n </Show>\n </div>\n </ZIndex>\n );\n};\n\nexport function createTour(tourProps: TourProps): [TourAPI, () => import('solid-js').JSX.Element] {\n const [activeStep, setActiveStep] = createSignal(0);\n const [visible, setVisible] = createSignal(false);\n\n function start(stepIndex = 0) {\n setActiveStep(stepIndex);\n setVisible(true);\n tourProps.steps[stepIndex]?.onEnter?.(stepIndex);\n tourProps.onStepChange?.(stepIndex);\n }\n\n function stop() {\n const step = activeStep();\n tourProps.steps[step]?.onLeave?.(step);\n setVisible(false);\n tourProps.onClose?.(step);\n }\n\n function next() {\n const cur = activeStep();\n tourProps.steps[cur]?.onLeave?.(cur);\n const nextStep = cur + 1;\n if (nextStep >= tourProps.steps.length) {\n setVisible(false);\n tourProps.onFinish?.();\n return;\n }\n setActiveStep(nextStep);\n if (!visible()) setVisible(true);\n tourProps.steps[nextStep]?.onEnter?.(nextStep);\n tourProps.onStepChange?.(nextStep);\n }\n\n function prev() {\n const cur = activeStep();\n if (cur <= 0) return;\n tourProps.steps[cur]?.onLeave?.(cur);\n const prevStep = cur - 1;\n setActiveStep(prevStep);\n if (!visible()) setVisible(true);\n tourProps.steps[prevStep]?.onEnter?.(prevStep);\n tourProps.onStepChange?.(prevStep);\n }\n\n function goTo(stepIndex: number) {\n if (stepIndex < 0 || stepIndex >= tourProps.steps.length) return;\n const cur = activeStep();\n tourProps.steps[cur]?.onLeave?.(cur);\n setActiveStep(stepIndex);\n if (!visible()) setVisible(true);\n tourProps.steps[stepIndex]?.onEnter?.(stepIndex);\n tourProps.onStepChange?.(stepIndex);\n }\n\n const api: TourAPI = {\n start,\n stop,\n next,\n prev,\n goTo,\n isActive: visible,\n currentStep: activeStep,\n };\n\n const TourRenderer = () => (\n <TourComponent\n {...tourProps}\n activeStep={activeStep}\n visible={visible}\n onClose={stop}\n onNext={next}\n onPrev={prev}\n />\n );\n\n return [api, TourRenderer];\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","names":["cn","ImagePreview","Spinner","CircleCheck","CircleX","CloudUpload","Eye","File","FileImage","FileText","Film","Music","Trash2","X","ZoomIn","Accessor","createSignal","createUniqueId","For","Match","mergeProps","Show","Switch","Tooltip","UploadBaseProps","UploadClassConfig","UploadComponent","UploadDraggerProps","UploadFile","UploadProps","UploadRequestOption","cls","config","key","extra","wrapperCls","base","wrapper","getFileIconColor","type","startsWith","includes","getFileIconBg","getFileIconNode","size","_$createComponent","getFileBadge","name","label","colorClass","ext","split","pop","toUpperCase","slice","formatFileSize","bytes","toFixed","isImageFile","defaultRequest","options","cancelled","current","tick","increment","Math","random","min","onProgress","round","setTimeout","onSuccess","ProgressEntry","v","useUpload","props","fileList","setFileList","progressMap","Map","cancelMap","imgMap","HTMLImageElement","getProgress","uid","get","cancelAndClean","thumbUrl","delete","img","onload","src","URL","revokeObjectURL","processFiles","rawFiles","FileList","files","Array","from","maxCount","maxFileSize","maxTotalSize","currentList","file","onError","message","newTotal","length","currentTotal","reduce","sum","f","batchTotal","forEach","createObjectURL","undefined","percent","setPercent","set","newFile","status","originFile","Image","list","map","dimensions","width","naturalWidth","height","naturalHeight","prev","nextList","multiple","onChange","requestFn","customRequest","cancel","next","const","done","find","error","Error","failed","value","snapshot","idx","findIndex","removeFile","removed","filter","clearAll","ProgressBar","trackClass","fillClass","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","_$setStyleProperty","CardProgressOverlay","_el$3","_tmpl$2","_el$4","_el$5","_el$6","nextSibling","_el$7","_$insert","PictureThumbLoading","_tmpl$3","TextFileList","onRemove","onClearAll","showClearAll","classConfig","showTooltip","listId","_el$9","_tmpl$5","_el$13","_$setAttribute","when","_$memo","children","_el$0","_tmpl$4","_el$1","_el$10","_el$11","_el$12","_$addEventListener","_v$4","_v$5","_v$6","each","badge","_el$14","_tmpl$6","FileUploadItem","isUploading","_el$15","_tmpl$8","_el$16","_el$17","_el$19","_el$20","content","hidden","root","_el$18","_tmpl$7","$$click","_v$7","_v$8","_v$9","_v$0","o","PictureFileList","preview","setPreview","_el$21","_tmpl$9","_el$27","_el$22","_el$23","_el$24","_el$25","_el$26","_v$1","_v$10","_v$11","_el$28","_tmpl$14","_el$29","_el$32","_el$33","_el$34","_el$39","_el$43","_el$45","fallback","_el$46","_tmpl$15","_el$47","_v$20","_v$21","_el$30","_tmpl$0","_v$12","_v$13","_el$31","_tmpl$1","_el$35","_tmpl$10","_el$36","_el$38","_el$37","_el$40","_tmpl$11","_el$41","_tmpl$12","_el$44","_tmpl$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","i","n","imageName","onClose","PictureCardFileList","onAdd","showAddButton","_el$48","_el$49","_el$50","_el$51","_el$52","_v$22","_v$23","_v$24","_el$53","_tmpl$17","_el$56","_el$61","_el$57","_v$25","_v$26","_v$27","_el$58","_tmpl$18","_el$60","_el$59","_el$54","_tmpl$16","_el$55","UploadBase","p","listType","showUploadList","inputRef","HTMLInputElement","triggerInput","click","handleInputChange","Event","input","currentTarget","effectiveShowClearAll","_el$62","_tmpl$20","_el$63","_ref$","_$use","_$spread","_$mergeProps","accept","directory","webkitdirectory","class","_el$64","_tmpl$19","_el$65","errorMessage","_el$66","UploadDragger","hint","isDragging","setIsDragging","handleDragOver","DragEvent","preventDefault","handleDragLeave","handleDrop","dataTransfer","_el$67","_el$68","_ref$2","_el$69","_el$70","addEventListener","icon","strokeWidth","_el$72","_tmpl$21","_el$73","_tmpl$22","_v$28","_v$29","_el$71","Upload","Dragger","_$delegateEvents"],"sources":["../../../src/components/upload/upload.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { ImagePreview } from '@components/image-preview';\nimport { Spinner } from '@components/loading/loading';\nimport CircleCheck from 'lucide-solid/icons/circle-check';\nimport CircleX from 'lucide-solid/icons/circle-x';\nimport CloudUpload from 'lucide-solid/icons/cloud-upload';\nimport Eye from 'lucide-solid/icons/eye';\nimport File from 'lucide-solid/icons/file';\nimport FileImage from 'lucide-solid/icons/file-image';\nimport FileText from 'lucide-solid/icons/file-text';\nimport Film from 'lucide-solid/icons/film';\nimport Music from 'lucide-solid/icons/music';\nimport Trash2 from 'lucide-solid/icons/trash-2';\nimport X from 'lucide-solid/icons/x';\nimport ZoomIn from 'lucide-solid/icons/zoom-in';\nimport {\n Accessor,\n createSignal,\n createUniqueId,\n For,\n Match,\n mergeProps,\n Show,\n Switch,\n} from 'solid-js';\nimport { Tooltip } from '../tooltip';\nimport {\n UploadBaseProps,\n UploadClassConfig,\n UploadComponent,\n UploadDraggerProps,\n UploadFile,\n UploadProps,\n UploadRequestOption,\n} from './upload.types';\n\nfunction cls(\n config: string | UploadClassConfig | undefined,\n key: keyof UploadClassConfig,\n extra?: string,\n): string {\n if (!config) return extra ?? '';\n if (typeof config === 'string') return extra ?? '';\n return cn(config[key], extra);\n}\n\nfunction wrapperCls(config: string | UploadClassConfig | undefined, base: string): string {\n if (!config) return base;\n if (typeof config === 'string') return cn(base, config);\n return cn(base, config.wrapper);\n}\n\nfunction getFileIconColor(type: string): string {\n if (type.startsWith('image/')) return 'text-violet-500';\n if (type.startsWith('video/')) return 'text-rose-500';\n if (type.startsWith('audio/')) return 'text-amber-500';\n if (type === 'application/pdf') return 'text-red-500';\n if (type.includes('text') || type.includes('document')) return 'text-blue-500';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'text-emerald-500';\n return 'text-base-content/40';\n}\n\nfunction getFileIconBg(type: string): string {\n if (type.startsWith('image/')) return 'bg-violet-500/10';\n if (type.startsWith('video/')) return 'bg-rose-500/10';\n if (type.startsWith('audio/')) return 'bg-amber-500/10';\n if (type === 'application/pdf') return 'bg-red-500/10';\n if (type.includes('text') || type.includes('document')) return 'bg-blue-500/10';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'bg-emerald-500/10';\n return 'bg-base-content/5';\n}\n\nfunction getFileIconNode(type: string, size = 16) {\n if (type.startsWith('image/')) return <FileImage size={size} />;\n if (type.startsWith('video/')) return <Film size={size} />;\n if (type.startsWith('audio/')) return <Music size={size} />;\n if (type === 'application/pdf' || type.includes('text')) return <FileText size={size} />;\n return <File size={size} />;\n}\n\nfunction getFileBadge(type: string, name: string): { label: string; colorClass: string } {\n if (type === 'application/pdf') return { label: 'PDF', colorClass: 'bg-red-500' };\n if (type.startsWith('image/')) {\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 3) ?? 'IMG';\n return { label: ext, colorClass: 'bg-violet-500' };\n }\n if (type.startsWith('video/')) return { label: 'VID', colorClass: 'bg-rose-500' };\n if (type.startsWith('audio/')) return { label: 'AUD', colorClass: 'bg-amber-500' };\n if (type.includes('spreadsheet') || type.includes('excel'))\n return { label: 'XLS', colorClass: 'bg-emerald-500' };\n if (type.includes('document') || type.includes('word'))\n return { label: 'DOC', colorClass: 'bg-blue-500' };\n if (type.includes('text')) return { label: 'TXT', colorClass: 'bg-blue-500' };\n\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 4) ?? 'FILE';\n return { label: ext, colorClass: 'bg-slate-400' };\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction isImageFile(type: string): boolean {\n return type.startsWith('image/');\n}\n\nfunction defaultRequest(options: UploadRequestOption): () => void {\n let cancelled = false;\n let current = 0;\n\n const tick = () => {\n if (cancelled) return;\n\n const increment = Math.random() * 10 + 8;\n current = Math.min(current + increment, 95);\n options.onProgress(Math.round(current));\n\n if (current < 95) {\n setTimeout(tick, 100 + Math.random() * 80);\n } else {\n setTimeout(\n () => {\n if (cancelled) return;\n options.onProgress(100);\n options.onSuccess();\n },\n 400 + Math.random() * 300,\n );\n }\n };\n\n setTimeout(tick, 50);\n\n return () => {\n cancelled = true;\n };\n}\n\ntype ProgressEntry = [Accessor<number>, (v: number) => void];\n\nfunction useUpload(props: UploadBaseProps) {\n const [fileList, setFileList] = createSignal<UploadFile[]>([]);\n const progressMap = new Map<string, ProgressEntry>();\n\n const cancelMap = new Map<string, () => void>();\n\n const imgMap = new Map<string, HTMLImageElement>();\n\n const getProgress = (uid: string): Accessor<number> => {\n return progressMap.get(uid)?.[0] ?? (() => 0);\n };\n\n const cancelAndClean = (uid: string, thumbUrl?: string) => {\n cancelMap.get(uid)?.();\n cancelMap.delete(uid);\n progressMap.delete(uid);\n\n const img = imgMap.get(uid);\n if (img) {\n img.onload = null;\n img.src = '';\n imgMap.delete(uid);\n }\n if (thumbUrl) URL.revokeObjectURL(thumbUrl);\n };\n\n const processFiles = (rawFiles: FileList | File[]) => {\n const files = Array.from(rawFiles);\n const maxCount = props.maxCount;\n const maxFileSize = props.maxFileSize;\n const maxTotalSize = props.maxTotalSize;\n\n const currentList = fileList();\n\n for (const file of files) {\n if (maxFileSize && file.size > maxFileSize) {\n props.onError?.({\n type: 'maxFileSize',\n file,\n message: `\"${file.name}\" vượt quá dung lượng cho phép (${formatFileSize(maxFileSize)})`,\n });\n return;\n }\n }\n\n if (maxCount) {\n const newTotal = currentList.length + files.length;\n if (newTotal > maxCount) {\n props.onError?.({\n type: 'maxCount',\n file: files[0],\n message: `Đã đạt số lượng file tối đa (${maxCount})`,\n });\n return;\n }\n }\n\n if (maxTotalSize) {\n const currentTotal = currentList.reduce((sum, f) => sum + f.size, 0);\n const batchTotal = files.reduce((sum, f) => sum + f.size, 0);\n if (currentTotal + batchTotal > maxTotalSize) {\n props.onError?.({\n type: 'maxTotalSize',\n file: files[0],\n message: `Tổng dung lượng vượt quá giới hạn (${formatFileSize(maxTotalSize)})`,\n });\n return;\n }\n }\n\n files.forEach(file => {\n const uid = createUniqueId();\n const thumbUrl = isImageFile(file.type) ? URL.createObjectURL(file) : undefined;\n\n const [percent, setPercent] = createSignal(0);\n progressMap.set(uid, [percent, setPercent]);\n\n const newFile: UploadFile = {\n uid,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n originFile: file,\n thumbUrl,\n };\n\n if (thumbUrl) {\n const img = new Image();\n imgMap.set(uid, img);\n img.onload = () => {\n imgMap.delete(uid);\n setFileList(list =>\n list.map(f =>\n f.uid === uid\n ? { ...f, dimensions: { width: img.naturalWidth, height: img.naturalHeight } }\n : f,\n ),\n );\n };\n img.src = thumbUrl;\n }\n\n setFileList(prev => {\n const nextList = props.multiple === false ? [newFile] : [...prev, newFile];\n props.onChange?.({ file: newFile, fileList: nextList });\n return nextList;\n });\n\n const requestFn = props.customRequest ?? defaultRequest;\n const cancel = requestFn({\n file,\n onSuccess: () => {\n setPercent(100);\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'done' as const } : f));\n const done = next.find(f => f.uid === uid);\n if (done) props.onChange?.({ file: done, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onError: (error: Error) => {\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'error' as const } : f));\n const failed = next.find(f => f.uid === uid);\n if (failed) props.onChange?.({ file: { ...failed, error }, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onProgress: value => {\n setPercent(value);\n\n const snapshot = fileList();\n const idx = snapshot.findIndex(f => f.uid === uid);\n if (idx !== -1)\n props.onChange?.({\n file: { ...snapshot[idx], percent: value },\n fileList: snapshot,\n });\n },\n });\n\n if (typeof cancel === 'function') cancelMap.set(uid, cancel);\n });\n };\n\n const removeFile = (uid: string) => {\n setFileList(prev => {\n const removed = prev.find(f => f.uid === uid);\n\n cancelAndClean(uid, removed?.thumbUrl);\n const next = prev.filter(f => f.uid !== uid);\n if (removed) props.onChange?.({ file: { ...removed, status: 'removed' }, fileList: next });\n return next;\n });\n };\n\n const clearAll = () => {\n setFileList(prev => {\n prev.forEach(f => cancelAndClean(f.uid, f.thumbUrl));\n return [];\n });\n };\n\n return { fileList, processFiles, removeFile, clearAll, getProgress };\n}\n\nfunction ProgressBar(props: {\n percent: Accessor<number>;\n trackClass?: string;\n fillClass?: string;\n}) {\n return (\n <div class={cn('up26', props.trackClass)}>\n <div class={cn('up27', props.fillClass)} style={{ width: `${props.percent()}%` }} />\n </div>\n );\n}\n\nfunction CardProgressOverlay(props: { percent: Accessor<number> }) {\n return (\n <div class=\"up62\">\n <div class=\"up63\">\n <span class=\"loading loading-spinner loading-sm text-white\" />\n <span class=\"up64\">{props.percent()}%</span>\n </div>\n </div>\n );\n}\n\nfunction PictureThumbLoading() {\n return (\n <div class=\"up51\">\n <span class=\"loading loading-spinner loading-xs text-white\" />\n </div>\n );\n}\n\nfunction TextFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const listId = createUniqueId();\n return (\n <div id={listId} class={cn('up06', cls(props.classConfig, 'textList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"flex flex-col gap-2\">\n <For each={props.files}>\n {file => {\n const badge = getFileBadge(file.type, file.name);\n return (\n <li>\n <FileUploadItem\n file={file}\n badge={badge}\n onRemove={props.onRemove}\n classConfig={props.classConfig}\n showTooltip={props.showTooltip}\n />\n </li>\n );\n }}\n </For>\n </ul>\n </div>\n );\n}\n\nfunction FileUploadItem(props: {\n file: UploadFile;\n badge: { label: string; colorClass: string };\n onRemove: (uid: string) => void;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const isUploading = () => props.file.status === 'uploading';\n\n return (\n <div class={cn('up07', cls(props.classConfig, 'textItem'))}>\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n <div class={cn('up08', props.badge.colorClass, cls(props.classConfig, 'textBadge'))}>\n {props.badge.label}\n </div>\n <Tooltip\n content={props.file.name}\n hidden={!props.showTooltip}\n class={{ root: 'up09' }}\n type=\"default\"\n >\n <span class={cn('up09', cls(props.classConfig, 'textName'))}>{props.file.name}</span>\n </Tooltip>\n <div class={cn('up10', cls(props.classConfig, 'textSize'))}>\n {formatFileSize(props.file.size)}\n </div>\n\n <Switch>\n <Match when={isUploading()}>\n <Spinner class=\"size-5\" />\n </Match>\n <Match when={props.file.status === 'done'}>\n <CircleCheck size={16} class=\"text-success\" />\n </Match>\n <Match when={props.file.status === 'error'}>\n <CircleX size={16} class=\"text-error\" />\n </Match>\n </Switch>\n\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(props.file.uid)}\n title=\"Remove\"\n >\n <X size={16} />\n </button>\n </div>\n </div>\n );\n}\n\nfunction PictureFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <div class={cn('up47', cls(props.classConfig, 'pictureList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"up48\">\n <For each={props.files}>\n {file => (\n <li\n class={cn(\n 'up49',\n file.status === 'uploading' && 'up49a',\n file.status === 'error' && 'up49b',\n cls(props.classConfig, 'pictureItem'),\n )}\n >\n <div class={cn('up50', cls(props.classConfig, 'pictureThumb'))}>\n <Show\n when={file.thumbUrl}\n fallback={\n <div\n class={cn(\n 'up53',\n getFileIconBg(file.type),\n cls(props.classConfig, 'pictureIcon'),\n )}\n >\n <span class={getFileIconColor(file.type)}>\n {getFileIconNode(file.type, 20)}\n </span>\n </div>\n }\n >\n <img src={file.thumbUrl} alt={file.name} />\n\n <Show when={file.status === 'uploading'}>\n <PictureThumbLoading />\n </Show>\n\n <Show when={file.status === 'done'}>\n <button class=\"up52\" onClick={() => setPreview(file)} title=\"Preview\">\n <ZoomIn size={14} />\n </button>\n </Show>\n </Show>\n </div>\n\n <div class={cn('up54', cls(props.classConfig, 'pictureInfo'))}>\n <div class=\"up36\">\n <span class=\"up21\" title={file.name}>\n {file.name}\n </span>\n <Show when={file.dimensions}>\n <span class=\"up37\">\n {file.dimensions!.width} × {file.dimensions!.height} px\n </span>\n </Show>\n <span class=\"up39\">{formatFileSize(file.size)}</span>\n </div>\n\n <Show when={file.status === 'uploading'}>\n <ProgressBar\n percent={props.getProgress(file.uid)}\n trackClass={cls(props.classConfig, 'progressTrack')}\n fillClass={cls(props.classConfig, 'progressFill')}\n />\n </Show>\n\n <Show when={file.status === 'done'}>\n <span class=\"up24\">\n <CircleCheck size={11} />\n Uploaded\n </span>\n </Show>\n\n <Show when={file.status === 'error'}>\n <span class=\"up23\">Upload failed</span>\n </Show>\n </div>\n\n <div class={cn('up55', cls(props.classConfig, 'pictureActions'))}>\n <Show when={file.status === 'done' && file.thumbUrl}>\n <button\n class={cn('up56', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={14} />\n </button>\n </Show>\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <X size={14} class=\"shrink-0\" />\n </button>\n </div>\n </li>\n )}\n </For>\n </ul>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction PictureCardFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onAdd: () => void;\n onClearAll: () => void;\n showAddButton: boolean;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <div class={cn('up58', cls(props.classConfig, 'cardGrid'))}>\n <For each={props.files}>\n {file => (\n <div\n class={cn('up59', file.status === 'error' && 'up59a', cls(props.classConfig, 'card'))}\n >\n <Show\n when={file.thumbUrl}\n fallback={\n <div class={cn('up61', cls(props.classConfig, 'cardIcon'))}>\n {getFileIconNode(file.type, 24)}\n </div>\n }\n >\n <img\n src={file.thumbUrl}\n alt={file.name}\n class={cn('up60', cls(props.classConfig, 'cardImg'))}\n />\n </Show>\n\n <Show when={file.status === 'uploading'}>\n <CardProgressOverlay percent={props.getProgress(file.uid)} />\n </Show>\n\n <Show when={file.status !== 'uploading'}>\n <div class=\"up65\">\n <Show when={file.thumbUrl}>\n <button\n class={cn('up66', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={13} />\n </button>\n </Show>\n <button\n class={cn('up67', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <Trash2 size={13} />\n </button>\n </div>\n </Show>\n </div>\n )}\n </For>\n <Show when={props.showAddButton}>\n <button\n class={cn('up68', cls(props.classConfig, 'cardAdd'))}\n onClick={props.onAdd}\n title=\"Upload file\"\n >\n <CloudUpload size={20} class=\"opacity-40\" />\n <span class=\"up69\">Upload</span>\n </button>\n </Show>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction UploadBase(p: UploadProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Switch>\n <Match when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n <Show when={!p.showUploadList}>\n <div onClick={triggerInput} class=\"w-fit cursor-pointer\">\n {p.children}\n </div>\n </Show>\n </Match>\n <Match when={p.listType !== 'picture-card'}>\n <div\n onClick={showAddButton() ? triggerInput : undefined}\n class={showAddButton() ? 'w-fit cursor-pointer' : ''}\n >\n {p.children}\n </div>\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Match>\n </Switch>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nfunction UploadDragger(p: UploadDraggerProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n hint: 'Support for a single or bulk upload',\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const [isDragging, setIsDragging] = createSignal(false);\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n const files = e.dataTransfer?.files;\n if (files?.length) processFiles(files);\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Show when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n </Show>\n\n <Show when={p.listType !== 'picture-card'}>\n <Show when={showAddButton()}>\n <div\n class={cn('up02', isDragging() && 'up02a', cls(p.class, 'dragger'))}\n onClick={triggerInput}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <div class={cn('up03', cls(p.class, 'draggerIcon'))}>\n <Show when={p.icon} fallback={<CloudUpload size={48} strokeWidth={1.5} />}>\n {p.icon}\n </Show>\n </div>\n <Show\n when={p.children}\n fallback={\n <>\n <p class={cn('up04', cls(p.class, 'draggerTitle'))}>\n Click or drag file to this area to upload\n </p>\n <p class={cn('up05', cls(p.class, 'draggerHint'))}>{p.hint}</p>\n </>\n }\n >\n {p.children}\n </Show>\n </div>\n </Show>\n\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Show>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nexport const Upload = UploadBase as UploadComponent;\nUpload.Dragger = UploadDragger;\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z-index.context.js","names":[],"sources":["../../../src/components/z-index/z-index.context.ts"],"sourcesContent":["import { createContext, useContext } from 'solid-js';\n\n/**\n * Holds the z-index of the nearest ZIndex ancestor that is a container type\n * (MODAL, OVERLAY). Child ZIndex components use this to compute their own\n * z-index relative to the parent container, ensuring correct stacking in\n * nested scenarios (e.g., dropdown inside modal).\n *\n * undefined = no ZIndex container ancestor (top-level context).\n */\nexport const ZIndexContext = createContext<number | undefined>(undefined);\n\n/** Returns the z-index of the nearest ZIndex container ancestor, if any. */\nexport function useParentZIndex(): number | undefined {\n return useContext(ZIndexContext);\n}\n\n/**\n * Returns the z-index of the nearest ZIndex container ancestor.\n * Useful for reading the current overlay z-index level in child components.\n */\nexport function useZIndex(): number | undefined {\n return useContext(ZIndexContext);\n}\n"],"mappings":"yDAUA,IAAa,EAAgB,EAAkC,IAAA,GAAU,CAGzE,SAAgB,GAAsC,CACpD,OAAO,EAAW,EAAc"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z-index.js","names":["createEffect","mergeProps","on","onCleanup","ParentComponent","Show","Portal","cn","acquire","acquireScrollLock","release","releaseScrollLock","useParentZIndex","ZIndexContext","ZIndexType","ZIndexProps","OFFSET","Record","DROPDOWN","POPOVER","OVERLAY","MODAL","TOOLTIP","TOAST","RELATIVE_OFFSET","Partial","CONTAINER_TYPES","Set","computeEffectiveBase","type","globalBase","parentZIndex","undefined","relativeOffset","ZIndex","props","p","positioning","const","baseIndex","startIndex","Inner","innerProps","zIndex","customValue","onZIndex","blockScroll","releaseScrollLockOnUnmount","effectiveBase","acquired","releaseZIndexAndScrollLock","registryKey","offset","isContainer","has","_$createComponent","children","_el$","_tmpl$","_$insert","Provider","value","_$effect","_p$","_v$","class","_v$2","position","e","_$className","t","_$style","PreRenderInner","releaseZIndex","scrollLockHeld","open","defer","releaseScrollLockIfHeld","_el$2","_v$3","_v$4","display","preRender","when"],"sources":["../../../src/components/z-index/z-index.tsx"],"sourcesContent":["import { createEffect, mergeProps, on, onCleanup, ParentComponent, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from '@/utils/cn';\nimport { acquire, acquireScrollLock, release, releaseScrollLock } from './z-index.store';\nimport { useParentZIndex, ZIndexContext } from './z-index.context';\nimport { ZIndexType, type ZIndexProps } from './z-index.types';\n\nexport { ZIndexType } from './z-index.types';\nexport type { ZIndexProps } from './z-index.types';\nexport { acquire, release } from './z-index.store';\n\n/** Base z-index for each type group when no parent context exists. */\nexport const OFFSET: Record<ZIndexType, number> = {\n [ZIndexType.DROPDOWN]: 200,\n [ZIndexType.POPOVER]: 200,\n [ZIndexType.OVERLAY]: 500,\n [ZIndexType.MODAL]: 1000,\n [ZIndexType.TOOLTIP]: 1500,\n [ZIndexType.TOAST]: 3000,\n};\n\n/**\n * Relative offset added to the parent container's z-index when a child popup\n * renders inside a container (MODAL or OVERLAY). This ensures correct stacking:\n * e.g., a dropdown inside a modal gets parentZIndex + 50, always above the modal.\n */\nconst RELATIVE_OFFSET: Partial<Record<ZIndexType, number>> = {\n [ZIndexType.DROPDOWN]: 10,\n [ZIndexType.POPOVER]: 20,\n [ZIndexType.TOOLTIP]: 30,\n};\n\n/**\n * Container types that publish their z-index via ZIndexContext so that\n * child popup components can calculate their z-index relative to this parent.\n */\nconst CONTAINER_TYPES = new Set<ZIndexType>([ZIndexType.MODAL, ZIndexType.OVERLAY]);\n\n/**\n * Compute the effective base index for slot allocation.\n *\n * - If a parent container z-index exists AND this type has a relative offset:\n * use `parentZIndex + relativeOffset` (context-aware mode).\n * - Otherwise: use the global `baseIndex` from OFFSET (top-level mode).\n */\nfunction computeEffectiveBase(\n type: string,\n globalBase: number,\n parentZIndex: number | undefined,\n): number {\n if (parentZIndex === undefined) return globalBase;\n const relativeOffset = RELATIVE_OFFSET[type as ZIndexType];\n if (relativeOffset === undefined) return globalBase;\n return parentZIndex + relativeOffset;\n}\n\n/**\n * ZIndex — wrapper component that renders children via Portal with an\n * auto-managed z-index from a centralized global registry.\n *\n * When `open` becomes true, it acquires the next available z-index slot\n * for the given type group. When `open` becomes false (or the component\n * unmounts), the slot is released back to the pool.\n *\n * Container types (MODAL, OVERLAY) additionally publish their z-index via\n * ZIndexContext, allowing nested popup children to auto-offset correctly.\n */\nexport const ZIndex: ParentComponent<ZIndexProps> = props => {\n const p = mergeProps({ positioning: 'fixed' as const }, props);\n\n const baseIndex = (): number => {\n if (p.startIndex !== undefined) return p.startIndex;\n return OFFSET[p.type as ZIndexType] ?? 0;\n };\n\n /**\n * Inner component — only rendered when `open` is true (or always when preRender).\n * This ties acquire/release to the actual Portal mount/unmount lifecycle.\n */\n const Inner: ParentComponent = innerProps => {\n let zIndex: number;\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseScrollLockOnUnmount() {\n if (p.blockScroll) releaseScrollLock();\n });\n } else {\n const parentZIndex = useParentZIndex();\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseZIndexAndScrollLock() {\n release(acquired.registryKey, acquired.offset);\n if (p.blockScroll) releaseScrollLock();\n });\n }\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n // Container types (MODAL, OVERLAY) publish their z-index via ZIndexContext\n // so that nested popups (Dropdown, Tooltip…) can auto-offset correctly.\n // The Provider MUST live INSIDE the Portal so SolidJS's reactive ownership\n // tree propagates the context into the Portal's scope. Wrapping the Portal\n // element from the outside does NOT work because Portal creates its own\n // reactive scope when mounting into document.body.\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n /**\n * PreRenderInner — always mounted in the DOM, but manages z-index/scroll\n * reactively based on `open`. Portal is always rendered; visibility is\n * controlled via CSS display:none when closed.\n */\n const PreRenderInner: ParentComponent = innerProps => {\n let zIndex: number;\n const parentZIndex = useParentZIndex();\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n } else {\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n onCleanup(function releaseZIndex() {\n release(acquired.registryKey, acquired.offset);\n });\n }\n\n // Reactively manage scroll lock based on open state.\n // Track whether we've acquired the lock to avoid double-release.\n let scrollLockHeld = false;\n createEffect(\n on(\n () => p.open,\n open => {\n if (open) {\n if (p.blockScroll && !scrollLockHeld) {\n acquireScrollLock();\n scrollLockHeld = true;\n }\n p.onZIndex?.(zIndex);\n } else {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n }\n },\n { defer: false },\n ),\n );\n onCleanup(function releaseScrollLockIfHeld() {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n });\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, display: p.open ? undefined : 'none', ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n return p.preRender ? (\n <PreRenderInner>{p.children}</PreRenderInner>\n ) : (\n <Show when={p.open}>\n <Inner>{p.children}</Inner>\n </Show>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z-index.store.js","names":[],"sources":["../../../src/components/z-index/z-index.store.ts"],"sourcesContent":["/**\n * Global z-index registry.\n *\n * Tracks occupied z-index slots using a composite key `type@baseIndex`.\n * This allows the same ZIndexType to have multiple independent slot pools\n * when different base indexes are used (e.g., DROPDOWN inside modal A vs modal B).\n * When a slot is released (component unmounts), it becomes available for reuse,\n * keeping z-index values compact instead of endlessly incrementing.\n */\nconst registry = new Map<string, Set<number>>();\n\nexport type AcquireResult = { zIndex: number; registryKey: string; offset: number };\n\n/** Acquire the lowest available z-index slot for the given type + base combination. */\nexport function acquire(type: string, baseIndex: number): AcquireResult {\n const registryKey = `${type}@${baseIndex}`;\n let slots = registry.get(registryKey);\n if (!slots) {\n slots = new Set();\n registry.set(registryKey, slots);\n }\n let offset = 0;\n while (slots.has(offset)) offset++;\n slots.add(offset);\n return { zIndex: baseIndex + offset, registryKey, offset };\n}\n\n/** Release a previously acquired slot back to the pool. */\nexport function release(registryKey: string, offset: number): void {\n const slots = registry.get(registryKey);\n if (!slots) return;\n slots.delete(offset);\n if (slots.size === 0) registry.delete(registryKey);\n}\n\n// ---------------------------------------------------------------------------\n// Scroll lock\n// ---------------------------------------------------------------------------\n\nlet scrollLockCount = 0;\nlet savedOverflow = '';\n\n/** Increment scroll lock counter. Locks body scroll on first call. */\nexport function acquireScrollLock(): void {\n if (scrollLockCount === 0) {\n savedOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n scrollLockCount++;\n}\n\n/** Decrement scroll lock counter. Restores body scroll when counter reaches 0. */\nexport function releaseScrollLock(): void {\n if (scrollLockCount <= 0) return;\n scrollLockCount--;\n if (scrollLockCount === 0) {\n document.body.style.overflow = savedOverflow;\n savedOverflow = '';\n }\n}\n"],"mappings":"AASA,IAAM,EAAW,IAAI,IAKrB,SAAgB,EAAQ,EAAc,EAAkC,CACtE,IAAM,EAAc,GAAG,EAAK,GAAG,IAC3B,EAAQ,EAAS,IAAI,EAAY,CAChC,IACH,EAAQ,IAAI,IACZ,EAAS,IAAI,EAAa,EAAM,EAElC,IAAI,EAAS,EACb,KAAO,EAAM,IAAI,EAAO,EAAE,IAE1B,OADA,EAAM,IAAI,EAAO,CACV,CAAE,OAAQ,EAAY,EAAQ,cAAa,SAAQ,CAI5D,SAAgB,EAAQ,EAAqB,EAAsB,CACjE,IAAM,EAAQ,EAAS,IAAI,EAAY,CAClC,IACL,EAAM,OAAO,EAAO,CAChB,EAAM,OAAS,GAAG,EAAS,OAAO,EAAY,EAOpD,IAAI,EAAkB,EAClB,EAAgB,GAGpB,SAAgB,GAA0B,CACpC,IAAoB,IACtB,EAAgB,SAAS,KAAK,MAAM,SACpC,SAAS,KAAK,MAAM,SAAW,UAEjC,IAIF,SAAgB,GAA0B,CACpC,GAAmB,IACvB,IACI,IAAoB,IACtB,SAAS,KAAK,MAAM,SAAW,EAC/B,EAAgB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z-index.types.js","names":[],"sources":["../../../src/components/z-index/z-index.types.ts"],"sourcesContent":["import { JSX } from 'solid-js';\n\nexport enum ZIndexType {\n DROPDOWN = 'dropdown',\n MODAL = 'modal',\n TOOLTIP = 'tooltip',\n TOAST = 'toast',\n POPOVER = 'popover',\n OVERLAY = 'overlay',\n}\n\ntype TypeDefault = {\n type: ZIndexType;\n startIndex?: never;\n};\n\ntype CustomType = {\n type: string;\n startIndex: number;\n};\n\nexport type ZIndexProps = {\n /** Controls Portal mounting. When false, no DOM is rendered and no z-index slot is occupied. */\n open: boolean;\n /** CSS position type for the wrapper div. Defaults to 'fixed'. */\n positioning?: 'fixed' | 'absolute';\n /** Inline position styles (top, left, right, bottom, width, height, etc.). */\n position?: JSX.CSSProperties;\n /** Additional class for the wrapper div. */\n class?: string;\n /** Callback that receives the computed z-index when the Portal mounts. */\n onZIndex?: (zIndex: number) => void;\n /**\n * When true, blocks scroll on document.body while this layer is open.\n * Scroll inside children remains functional.\n * Multiple concurrent layers with blockScroll share a reference counter,\n * so body scroll is only restored when all of them are closed.\n * Defaults to false.\n */\n blockScroll?: boolean;\n /**\n * When provided, this value is used directly as the z-index without going\n * through the auto-allocation registry. No slot is acquired or released.\n * Takes precedence over the type-based computation and startIndex.\n */\n customValue?: number;\n /**\n * When true, the Portal is always mounted in the DOM regardless of `open`.\n * Visibility is controlled via CSS (display:none when closed).\n * Z-index slot and scroll lock are still only active when `open` is true.\n */\n preRender?: boolean;\n} & (TypeDefault | CustomType);\n"],"mappings":"AAEA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,SAAW,WACX,EAAA,MAAQ,QACR,EAAA,QAAU,UACV,EAAA,MAAQ,QACR,EAAA,QAAU,UACV,EAAA,QAAU,gBACX"}