solid-tom-ui 0.1.0

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 (451) hide show
  1. package/README.md +247 -0
  2. package/dist/components/avatar/avatar.d.ts +14 -0
  3. package/dist/components/avatar/avatar.d.ts.map +1 -0
  4. package/dist/components/avatar/avatar.js +2 -0
  5. package/dist/components/avatar/avatar.js.map +1 -0
  6. package/dist/components/avatar/avatar.types.d.ts +18 -0
  7. package/dist/components/avatar/avatar.types.d.ts.map +1 -0
  8. package/dist/components/avatar/index.d.ts +2 -0
  9. package/dist/components/avatar/index.d.ts.map +1 -0
  10. package/dist/components/badge/badge.d.ts +12 -0
  11. package/dist/components/badge/badge.d.ts.map +1 -0
  12. package/dist/components/badge/badge.js +2 -0
  13. package/dist/components/badge/badge.js.map +1 -0
  14. package/dist/components/badge/badge.types.d.ts +10 -0
  15. package/dist/components/badge/badge.types.d.ts.map +1 -0
  16. package/dist/components/badge/index.d.ts +3 -0
  17. package/dist/components/badge/index.d.ts.map +1 -0
  18. package/dist/components/blank/blank.d.ts +5 -0
  19. package/dist/components/blank/blank.d.ts.map +1 -0
  20. package/dist/components/blank/blank.js +2 -0
  21. package/dist/components/blank/blank.js.map +1 -0
  22. package/dist/components/blank/index.d.ts +2 -0
  23. package/dist/components/blank/index.d.ts.map +1 -0
  24. package/dist/components/breadcrumb/breadcrumb.d.ts +11 -0
  25. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  26. package/dist/components/breadcrumb/breadcrumb.js +2 -0
  27. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  28. package/dist/components/breadcrumb/index.d.ts +2 -0
  29. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  30. package/dist/components/button/button.d.ts +19 -0
  31. package/dist/components/button/button.d.ts.map +1 -0
  32. package/dist/components/button/button.js +2 -0
  33. package/dist/components/button/button.js.map +1 -0
  34. package/dist/components/button/button.types.d.ts +30 -0
  35. package/dist/components/button/button.types.d.ts.map +1 -0
  36. package/dist/components/button/index.d.ts +2 -0
  37. package/dist/components/button/index.d.ts.map +1 -0
  38. package/dist/components/carousel/carousel.d.ts +4 -0
  39. package/dist/components/carousel/carousel.d.ts.map +1 -0
  40. package/dist/components/carousel/carousel.js +2 -0
  41. package/dist/components/carousel/carousel.js.map +1 -0
  42. package/dist/components/carousel/carousel.types.d.ts +36 -0
  43. package/dist/components/carousel/carousel.types.d.ts.map +1 -0
  44. package/dist/components/carousel/index.d.ts +3 -0
  45. package/dist/components/carousel/index.d.ts.map +1 -0
  46. package/dist/components/chat-bubble/chatBubble.d.ts +11 -0
  47. package/dist/components/chat-bubble/chatBubble.d.ts.map +1 -0
  48. package/dist/components/chat-bubble/chatBubble.js +2 -0
  49. package/dist/components/chat-bubble/chatBubble.js.map +1 -0
  50. package/dist/components/chat-bubble/chatBubble.type.d.ts +12 -0
  51. package/dist/components/chat-bubble/chatBubble.type.d.ts.map +1 -0
  52. package/dist/components/chat-bubble/index.d.ts +2 -0
  53. package/dist/components/chat-bubble/index.d.ts.map +1 -0
  54. package/dist/components/checkbox/checkbox.d.ts +22 -0
  55. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  56. package/dist/components/checkbox/checkbox.js +2 -0
  57. package/dist/components/checkbox/checkbox.js.map +1 -0
  58. package/dist/components/checkbox/index.d.ts +3 -0
  59. package/dist/components/checkbox/index.d.ts.map +1 -0
  60. package/dist/components/collapse/collapse.d.ts +12 -0
  61. package/dist/components/collapse/collapse.d.ts.map +1 -0
  62. package/dist/components/collapse/collapse.js +2 -0
  63. package/dist/components/collapse/collapse.js.map +1 -0
  64. package/dist/components/collapse/collapse.types.d.ts +17 -0
  65. package/dist/components/collapse/collapse.types.d.ts.map +1 -0
  66. package/dist/components/collapse/index.d.ts +2 -0
  67. package/dist/components/collapse/index.d.ts.map +1 -0
  68. package/dist/components/context-menu/context-menu.d.ts +4 -0
  69. package/dist/components/context-menu/context-menu.d.ts.map +1 -0
  70. package/dist/components/context-menu/context-menu.js +2 -0
  71. package/dist/components/context-menu/context-menu.js.map +1 -0
  72. package/dist/components/context-menu/context-menu.store.d.ts +14 -0
  73. package/dist/components/context-menu/context-menu.store.d.ts.map +1 -0
  74. package/dist/components/context-menu/context-menu.store.js +2 -0
  75. package/dist/components/context-menu/context-menu.store.js.map +1 -0
  76. package/dist/components/context-menu/context-menu.types.d.ts +51 -0
  77. package/dist/components/context-menu/context-menu.types.d.ts.map +1 -0
  78. package/dist/components/context-menu/index.d.ts +4 -0
  79. package/dist/components/context-menu/index.d.ts.map +1 -0
  80. package/dist/components/diff/diff.d.ts +9 -0
  81. package/dist/components/diff/diff.d.ts.map +1 -0
  82. package/dist/components/diff/diff.js +2 -0
  83. package/dist/components/diff/diff.js.map +1 -0
  84. package/dist/components/diff/index.d.ts +2 -0
  85. package/dist/components/diff/index.d.ts.map +1 -0
  86. package/dist/components/divider/divider.d.ts +5 -0
  87. package/dist/components/divider/divider.d.ts.map +1 -0
  88. package/dist/components/divider/divider.js +2 -0
  89. package/dist/components/divider/divider.js.map +1 -0
  90. package/dist/components/divider/divider.types.d.ts +16 -0
  91. package/dist/components/divider/divider.types.d.ts.map +1 -0
  92. package/dist/components/divider/index.d.ts +3 -0
  93. package/dist/components/divider/index.d.ts.map +1 -0
  94. package/dist/components/drawer/drawer.d.ts +6 -0
  95. package/dist/components/drawer/drawer.d.ts.map +1 -0
  96. package/dist/components/drawer/drawer.js +2 -0
  97. package/dist/components/drawer/drawer.js.map +1 -0
  98. package/dist/components/drawer/drawer.types.d.ts +19 -0
  99. package/dist/components/drawer/drawer.types.d.ts.map +1 -0
  100. package/dist/components/drawer/index.d.ts +3 -0
  101. package/dist/components/drawer/index.d.ts.map +1 -0
  102. package/dist/components/dropdown/dropdown.d.ts +11 -0
  103. package/dist/components/dropdown/dropdown.d.ts.map +1 -0
  104. package/dist/components/dropdown/dropdown.js +2 -0
  105. package/dist/components/dropdown/dropdown.js.map +1 -0
  106. package/dist/components/dropdown/dropdown.store.d.ts +8 -0
  107. package/dist/components/dropdown/dropdown.store.d.ts.map +1 -0
  108. package/dist/components/dropdown/dropdown.store.js +2 -0
  109. package/dist/components/dropdown/dropdown.store.js.map +1 -0
  110. package/dist/components/dropdown/dropdown.types.d.ts +15 -0
  111. package/dist/components/dropdown/dropdown.types.d.ts.map +1 -0
  112. package/dist/components/dropdown/index.d.ts +3 -0
  113. package/dist/components/dropdown/index.d.ts.map +1 -0
  114. package/dist/components/dynamic-icon/DynamicIcon.d.ts +8 -0
  115. package/dist/components/dynamic-icon/DynamicIcon.d.ts.map +1 -0
  116. package/dist/components/dynamic-icon/index.d.ts +2 -0
  117. package/dist/components/dynamic-icon/index.d.ts.map +1 -0
  118. package/dist/components/float-button/float-button.d.ts +5 -0
  119. package/dist/components/float-button/float-button.d.ts.map +1 -0
  120. package/dist/components/float-button/float-button.js +2 -0
  121. package/dist/components/float-button/float-button.js.map +1 -0
  122. package/dist/components/float-button/float-button.types.d.ts +42 -0
  123. package/dist/components/float-button/float-button.types.d.ts.map +1 -0
  124. package/dist/components/float-button/index.d.ts +2 -0
  125. package/dist/components/float-button/index.d.ts.map +1 -0
  126. package/dist/components/hover-3d-image/hover-3d-example.d.ts +3 -0
  127. package/dist/components/hover-3d-image/hover-3d-example.d.ts.map +1 -0
  128. package/dist/components/hover-3d-image/hover-3d-image.d.ts +13 -0
  129. package/dist/components/hover-3d-image/hover-3d-image.d.ts.map +1 -0
  130. package/dist/components/hover-3d-image/hover-3d-image.js +2 -0
  131. package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -0
  132. package/dist/components/hover-3d-image/index.d.ts +2 -0
  133. package/dist/components/hover-3d-image/index.d.ts.map +1 -0
  134. package/dist/components/iframe/index.d.ts +7 -0
  135. package/dist/components/iframe/index.d.ts.map +1 -0
  136. package/dist/components/image-preview/image-preview.d.ts +25 -0
  137. package/dist/components/image-preview/image-preview.d.ts.map +1 -0
  138. package/dist/components/image-preview/image-preview.js +2 -0
  139. package/dist/components/image-preview/image-preview.js.map +1 -0
  140. package/dist/components/image-preview/index.d.ts +3 -0
  141. package/dist/components/image-preview/index.d.ts.map +1 -0
  142. package/dist/components/indicator/index.d.ts +3 -0
  143. package/dist/components/indicator/index.d.ts.map +1 -0
  144. package/dist/components/indicator/indicator.d.ts +4 -0
  145. package/dist/components/indicator/indicator.d.ts.map +1 -0
  146. package/dist/components/indicator/indicator.js +2 -0
  147. package/dist/components/indicator/indicator.js.map +1 -0
  148. package/dist/components/indicator/indicator.types.d.ts +18 -0
  149. package/dist/components/indicator/indicator.types.d.ts.map +1 -0
  150. package/dist/components/input/index.d.ts +2 -0
  151. package/dist/components/input/index.d.ts.map +1 -0
  152. package/dist/components/input/input.d.ts +17 -0
  153. package/dist/components/input/input.d.ts.map +1 -0
  154. package/dist/components/input/input.js +2 -0
  155. package/dist/components/input/input.js.map +1 -0
  156. package/dist/components/input/input.types.d.ts +76 -0
  157. package/dist/components/input/input.types.d.ts.map +1 -0
  158. package/dist/components/input/input.utils.d.ts +16 -0
  159. package/dist/components/input/input.utils.d.ts.map +1 -0
  160. package/dist/components/input/input.utils.js +2 -0
  161. package/dist/components/input/input.utils.js.map +1 -0
  162. package/dist/components/input/variants/input-color.d.ts +4 -0
  163. package/dist/components/input/variants/input-color.d.ts.map +1 -0
  164. package/dist/components/input/variants/input-color.js +2 -0
  165. package/dist/components/input/variants/input-color.js.map +1 -0
  166. package/dist/components/input/variants/input-date.d.ts +4 -0
  167. package/dist/components/input/variants/input-date.d.ts.map +1 -0
  168. package/dist/components/input/variants/input-date.js +2 -0
  169. package/dist/components/input/variants/input-date.js.map +1 -0
  170. package/dist/components/input/variants/input-number.d.ts +4 -0
  171. package/dist/components/input/variants/input-number.d.ts.map +1 -0
  172. package/dist/components/input/variants/input-number.js +2 -0
  173. package/dist/components/input/variants/input-number.js.map +1 -0
  174. package/dist/components/input/variants/input-otp.d.ts +5 -0
  175. package/dist/components/input/variants/input-otp.d.ts.map +1 -0
  176. package/dist/components/input/variants/input-otp.js +2 -0
  177. package/dist/components/input/variants/input-otp.js.map +1 -0
  178. package/dist/components/input/variants/input-password.d.ts +4 -0
  179. package/dist/components/input/variants/input-password.d.ts.map +1 -0
  180. package/dist/components/input/variants/input-password.js +2 -0
  181. package/dist/components/input/variants/input-password.js.map +1 -0
  182. package/dist/components/input/variants/input-radio.d.ts +22 -0
  183. package/dist/components/input/variants/input-radio.d.ts.map +1 -0
  184. package/dist/components/input/variants/input-radio.js +2 -0
  185. package/dist/components/input/variants/input-radio.js.map +1 -0
  186. package/dist/components/input/variants/input-range.d.ts +4 -0
  187. package/dist/components/input/variants/input-range.d.ts.map +1 -0
  188. package/dist/components/input/variants/input-range.js +2 -0
  189. package/dist/components/input/variants/input-range.js.map +1 -0
  190. package/dist/components/input/variants/input-text.d.ts +4 -0
  191. package/dist/components/input/variants/input-text.d.ts.map +1 -0
  192. package/dist/components/input/variants/input-text.js +2 -0
  193. package/dist/components/input/variants/input-text.js.map +1 -0
  194. package/dist/components/input/variants/input-textarea.d.ts +4 -0
  195. package/dist/components/input/variants/input-textarea.d.ts.map +1 -0
  196. package/dist/components/input/variants/input-textarea.js +2 -0
  197. package/dist/components/input/variants/input-textarea.js.map +1 -0
  198. package/dist/components/loading/index.d.ts +3 -0
  199. package/dist/components/loading/index.d.ts.map +1 -0
  200. package/dist/components/loading/loading.d.ts +32 -0
  201. package/dist/components/loading/loading.d.ts.map +1 -0
  202. package/dist/components/loading/loading.js +2 -0
  203. package/dist/components/loading/loading.js.map +1 -0
  204. package/dist/components/mansory/index.d.ts +3 -0
  205. package/dist/components/mansory/index.d.ts.map +1 -0
  206. package/dist/components/mansory/mansory.d.ts +4 -0
  207. package/dist/components/mansory/mansory.d.ts.map +1 -0
  208. package/dist/components/mansory/mansory.js +2 -0
  209. package/dist/components/mansory/mansory.js.map +1 -0
  210. package/dist/components/mansory/mansory.types.d.ts +27 -0
  211. package/dist/components/mansory/mansory.types.d.ts.map +1 -0
  212. package/dist/components/menu/index.d.ts +4 -0
  213. package/dist/components/menu/index.d.ts.map +1 -0
  214. package/dist/components/menu/menu.d.ts +11 -0
  215. package/dist/components/menu/menu.d.ts.map +1 -0
  216. package/dist/components/menu/menu.data-example.d.ts +7 -0
  217. package/dist/components/menu/menu.data-example.d.ts.map +1 -0
  218. package/dist/components/menu/menu.js +2 -0
  219. package/dist/components/menu/menu.js.map +1 -0
  220. package/dist/components/menu/menu.types.d.ts +74 -0
  221. package/dist/components/menu/menu.types.d.ts.map +1 -0
  222. package/dist/components/modal/index.d.ts +3 -0
  223. package/dist/components/modal/index.d.ts.map +1 -0
  224. package/dist/components/modal/modal.d.ts +28 -0
  225. package/dist/components/modal/modal.d.ts.map +1 -0
  226. package/dist/components/modal/modal.js +2 -0
  227. package/dist/components/modal/modal.js.map +1 -0
  228. package/dist/components/modal/modalContext.d.ts +8 -0
  229. package/dist/components/modal/modalContext.d.ts.map +1 -0
  230. package/dist/components/modal/modalContext.js +2 -0
  231. package/dist/components/modal/modalContext.js.map +1 -0
  232. package/dist/components/pagination/index.d.ts +3 -0
  233. package/dist/components/pagination/index.d.ts.map +1 -0
  234. package/dist/components/pagination/pagination.d.ts +4 -0
  235. package/dist/components/pagination/pagination.d.ts.map +1 -0
  236. package/dist/components/pagination/pagination.js +2 -0
  237. package/dist/components/pagination/pagination.js.map +1 -0
  238. package/dist/components/pagination/pagination.types.d.ts +88 -0
  239. package/dist/components/pagination/pagination.types.d.ts.map +1 -0
  240. package/dist/components/progress-bar/index.d.ts +4 -0
  241. package/dist/components/progress-bar/index.d.ts.map +1 -0
  242. package/dist/components/progress-bar/progress-bar.d.ts +8 -0
  243. package/dist/components/progress-bar/progress-bar.d.ts.map +1 -0
  244. package/dist/components/progress-bar/progress-bar.js +2 -0
  245. package/dist/components/progress-bar/progress-bar.js.map +1 -0
  246. package/dist/components/progress-bar/progress-bar.types.d.ts +20 -0
  247. package/dist/components/progress-bar/progress-bar.types.d.ts.map +1 -0
  248. package/dist/components/qr-code/index.d.ts +3 -0
  249. package/dist/components/qr-code/index.d.ts.map +1 -0
  250. package/dist/components/qr-code/qr-code.d.ts +4 -0
  251. package/dist/components/qr-code/qr-code.d.ts.map +1 -0
  252. package/dist/components/qr-code/qr-code.js +2 -0
  253. package/dist/components/qr-code/qr-code.js.map +1 -0
  254. package/dist/components/qr-code/qr-code.types.d.ts +42 -0
  255. package/dist/components/qr-code/qr-code.types.d.ts.map +1 -0
  256. package/dist/components/rating/index.d.ts +2 -0
  257. package/dist/components/rating/index.d.ts.map +1 -0
  258. package/dist/components/rating/rating.d.ts +4 -0
  259. package/dist/components/rating/rating.d.ts.map +1 -0
  260. package/dist/components/rating/rating.js +2 -0
  261. package/dist/components/rating/rating.js.map +1 -0
  262. package/dist/components/rating/rating.types.d.ts +33 -0
  263. package/dist/components/rating/rating.types.d.ts.map +1 -0
  264. package/dist/components/select/index.d.ts +3 -0
  265. package/dist/components/select/index.d.ts.map +1 -0
  266. package/dist/components/select/select.d.ts +12 -0
  267. package/dist/components/select/select.d.ts.map +1 -0
  268. package/dist/components/select/select.js +2 -0
  269. package/dist/components/select/select.js.map +1 -0
  270. package/dist/components/select/select.types.d.ts +134 -0
  271. package/dist/components/select/select.types.d.ts.map +1 -0
  272. package/dist/components/select-zone/index.d.ts +3 -0
  273. package/dist/components/select-zone/index.d.ts.map +1 -0
  274. package/dist/components/select-zone/select-zone.d.ts +5 -0
  275. package/dist/components/select-zone/select-zone.d.ts.map +1 -0
  276. package/dist/components/select-zone/select-zone.js +2 -0
  277. package/dist/components/select-zone/select-zone.js.map +1 -0
  278. package/dist/components/select-zone/select-zone.types.d.ts +58 -0
  279. package/dist/components/select-zone/select-zone.types.d.ts.map +1 -0
  280. package/dist/components/skeleton/index.d.ts +3 -0
  281. package/dist/components/skeleton/index.d.ts.map +1 -0
  282. package/dist/components/skeleton/skeleton.d.ts +25 -0
  283. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  284. package/dist/components/skeleton/skeleton.js +2 -0
  285. package/dist/components/skeleton/skeleton.js.map +1 -0
  286. package/dist/components/slider/index.d.ts +2 -0
  287. package/dist/components/slider/index.d.ts.map +1 -0
  288. package/dist/components/slider/slider.d.ts +4 -0
  289. package/dist/components/slider/slider.d.ts.map +1 -0
  290. package/dist/components/slider/slider.js +2 -0
  291. package/dist/components/slider/slider.js.map +1 -0
  292. package/dist/components/slider/slider.types.d.ts +32 -0
  293. package/dist/components/slider/slider.types.d.ts.map +1 -0
  294. package/dist/components/splitter/index.d.ts +3 -0
  295. package/dist/components/splitter/index.d.ts.map +1 -0
  296. package/dist/components/splitter/splitter.d.ts +7 -0
  297. package/dist/components/splitter/splitter.d.ts.map +1 -0
  298. package/dist/components/splitter/splitter.js +2 -0
  299. package/dist/components/splitter/splitter.js.map +1 -0
  300. package/dist/components/splitter/splitter.types.d.ts +64 -0
  301. package/dist/components/splitter/splitter.types.d.ts.map +1 -0
  302. package/dist/components/steps/index.d.ts +3 -0
  303. package/dist/components/steps/index.d.ts.map +1 -0
  304. package/dist/components/steps/steps.d.ts +29 -0
  305. package/dist/components/steps/steps.d.ts.map +1 -0
  306. package/dist/components/steps/steps.js +2 -0
  307. package/dist/components/steps/steps.js.map +1 -0
  308. package/dist/components/swap/index.d.ts +2 -0
  309. package/dist/components/swap/index.d.ts.map +1 -0
  310. package/dist/components/swap/swap.d.ts +11 -0
  311. package/dist/components/swap/swap.d.ts.map +1 -0
  312. package/dist/components/swap/swap.js +2 -0
  313. package/dist/components/swap/swap.js.map +1 -0
  314. package/dist/components/switch/index.d.ts +3 -0
  315. package/dist/components/switch/index.d.ts.map +1 -0
  316. package/dist/components/switch/switch.d.ts +11 -0
  317. package/dist/components/switch/switch.d.ts.map +1 -0
  318. package/dist/components/switch/switch.js +2 -0
  319. package/dist/components/switch/switch.js.map +1 -0
  320. package/dist/components/switch/switch.types.d.ts +23 -0
  321. package/dist/components/switch/switch.types.d.ts.map +1 -0
  322. package/dist/components/tab/index.d.ts +3 -0
  323. package/dist/components/tab/index.d.ts.map +1 -0
  324. package/dist/components/tab/tab.d.ts +4 -0
  325. package/dist/components/tab/tab.d.ts.map +1 -0
  326. package/dist/components/tab/tab.js +2 -0
  327. package/dist/components/tab/tab.js.map +1 -0
  328. package/dist/components/tab/tab.types.d.ts +51 -0
  329. package/dist/components/tab/tab.types.d.ts.map +1 -0
  330. package/dist/components/table/index.d.ts +4 -0
  331. package/dist/components/table/index.d.ts.map +1 -0
  332. package/dist/components/table/index.js +1 -0
  333. package/dist/components/table/table.d.ts +10 -0
  334. package/dist/components/table/table.d.ts.map +1 -0
  335. package/dist/components/table/table.js +2 -0
  336. package/dist/components/table/table.js.map +1 -0
  337. package/dist/components/table/table.types.d.ts +155 -0
  338. package/dist/components/table/table.types.d.ts.map +1 -0
  339. package/dist/components/text-rotate/index.d.ts +3 -0
  340. package/dist/components/text-rotate/index.d.ts.map +1 -0
  341. package/dist/components/text-rotate/text-rotate.d.ts +12 -0
  342. package/dist/components/text-rotate/text-rotate.d.ts.map +1 -0
  343. package/dist/components/text-rotate/text-rotate.js +2 -0
  344. package/dist/components/text-rotate/text-rotate.js.map +1 -0
  345. package/dist/components/timeline/index.d.ts +3 -0
  346. package/dist/components/timeline/index.d.ts.map +1 -0
  347. package/dist/components/timeline/timeline.d.ts +4 -0
  348. package/dist/components/timeline/timeline.d.ts.map +1 -0
  349. package/dist/components/timeline/timeline.js +2 -0
  350. package/dist/components/timeline/timeline.js.map +1 -0
  351. package/dist/components/timeline/timeline.types.d.ts +55 -0
  352. package/dist/components/timeline/timeline.types.d.ts.map +1 -0
  353. package/dist/components/toast/icons/ErrorIcon.d.ts +4 -0
  354. package/dist/components/toast/icons/ErrorIcon.d.ts.map +1 -0
  355. package/dist/components/toast/icons/ErrorIcon.js +2 -0
  356. package/dist/components/toast/icons/ErrorIcon.js.map +1 -0
  357. package/dist/components/toast/icons/IconCircle.d.ts +9 -0
  358. package/dist/components/toast/icons/IconCircle.d.ts.map +1 -0
  359. package/dist/components/toast/icons/IconCircle.js +2 -0
  360. package/dist/components/toast/icons/IconCircle.js.map +1 -0
  361. package/dist/components/toast/icons/InfoIcon.d.ts +4 -0
  362. package/dist/components/toast/icons/InfoIcon.d.ts.map +1 -0
  363. package/dist/components/toast/icons/InfoIcon.js +2 -0
  364. package/dist/components/toast/icons/InfoIcon.js.map +1 -0
  365. package/dist/components/toast/icons/LoaderIcon.d.ts +4 -0
  366. package/dist/components/toast/icons/LoaderIcon.d.ts.map +1 -0
  367. package/dist/components/toast/icons/LoaderIcon.js +2 -0
  368. package/dist/components/toast/icons/LoaderIcon.js.map +1 -0
  369. package/dist/components/toast/icons/SuccessIcon.d.ts +4 -0
  370. package/dist/components/toast/icons/SuccessIcon.d.ts.map +1 -0
  371. package/dist/components/toast/icons/SuccessIcon.js +2 -0
  372. package/dist/components/toast/icons/SuccessIcon.js.map +1 -0
  373. package/dist/components/toast/icons/WarningIcon.d.ts +4 -0
  374. package/dist/components/toast/icons/WarningIcon.d.ts.map +1 -0
  375. package/dist/components/toast/icons/WarningIcon.js +2 -0
  376. package/dist/components/toast/icons/WarningIcon.js.map +1 -0
  377. package/dist/components/toast/icons/index.d.ts +4 -0
  378. package/dist/components/toast/icons/index.d.ts.map +1 -0
  379. package/dist/components/toast/index.d.ts +3 -0
  380. package/dist/components/toast/index.d.ts.map +1 -0
  381. package/dist/components/toast/toast.d.ts +7 -0
  382. package/dist/components/toast/toast.d.ts.map +1 -0
  383. package/dist/components/toast/toast.js +2 -0
  384. package/dist/components/toast/toast.js.map +1 -0
  385. package/dist/components/toast/toast.store.d.ts +17 -0
  386. package/dist/components/toast/toast.store.d.ts.map +1 -0
  387. package/dist/components/toast/toast.store.js +2 -0
  388. package/dist/components/toast/toast.store.js.map +1 -0
  389. package/dist/components/toast/toast.type.d.ts +72 -0
  390. package/dist/components/toast/toast.type.d.ts.map +1 -0
  391. package/dist/components/tooltip/index.d.ts +4 -0
  392. package/dist/components/tooltip/index.d.ts.map +1 -0
  393. package/dist/components/tooltip/tooltip.d.ts +11 -0
  394. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  395. package/dist/components/tooltip/tooltip.js +2 -0
  396. package/dist/components/tooltip/tooltip.js.map +1 -0
  397. package/dist/components/tooltip/tooltip.types.d.ts +39 -0
  398. package/dist/components/tooltip/tooltip.types.d.ts.map +1 -0
  399. package/dist/components/tour/index.d.ts +3 -0
  400. package/dist/components/tour/index.d.ts.map +1 -0
  401. package/dist/components/tour/tour.d.ts +3 -0
  402. package/dist/components/tour/tour.d.ts.map +1 -0
  403. package/dist/components/tour/tour.js +9 -0
  404. package/dist/components/tour/tour.js.map +1 -0
  405. package/dist/components/tour/tour.types.d.ts +35 -0
  406. package/dist/components/tour/tour.types.d.ts.map +1 -0
  407. package/dist/components/upload/index.d.ts +3 -0
  408. package/dist/components/upload/index.d.ts.map +1 -0
  409. package/dist/components/upload/upload.d.ts +3 -0
  410. package/dist/components/upload/upload.d.ts.map +1 -0
  411. package/dist/components/upload/upload.js +2 -0
  412. package/dist/components/upload/upload.js.map +1 -0
  413. package/dist/components/upload/upload.types.d.ts +95 -0
  414. package/dist/components/upload/upload.types.d.ts.map +1 -0
  415. package/dist/components/z-index/index.d.ts +4 -0
  416. package/dist/components/z-index/index.d.ts.map +1 -0
  417. package/dist/components/z-index/z-index.context.d.ts +17 -0
  418. package/dist/components/z-index/z-index.context.d.ts.map +1 -0
  419. package/dist/components/z-index/z-index.context.js +2 -0
  420. package/dist/components/z-index/z-index.context.js.map +1 -0
  421. package/dist/components/z-index/z-index.d.ts +20 -0
  422. package/dist/components/z-index/z-index.d.ts.map +1 -0
  423. package/dist/components/z-index/z-index.js +2 -0
  424. package/dist/components/z-index/z-index.js.map +1 -0
  425. package/dist/components/z-index/z-index.store.d.ts +14 -0
  426. package/dist/components/z-index/z-index.store.d.ts.map +1 -0
  427. package/dist/components/z-index/z-index.store.js +2 -0
  428. package/dist/components/z-index/z-index.store.js.map +1 -0
  429. package/dist/components/z-index/z-index.types.d.ts +51 -0
  430. package/dist/components/z-index/z-index.types.d.ts.map +1 -0
  431. package/dist/components/z-index/z-index.types.js +2 -0
  432. package/dist/components/z-index/z-index.types.js.map +1 -0
  433. package/dist/lib.d.ts +48 -0
  434. package/dist/lib.d.ts.map +1 -0
  435. package/dist/lib.js +1 -0
  436. package/dist/solid-ui.css +94 -0
  437. package/dist/type.d.ts +4 -0
  438. package/dist/type.d.ts.map +1 -0
  439. package/dist/utils/cn.d.ts +3 -0
  440. package/dist/utils/cn.d.ts.map +1 -0
  441. package/dist/utils/cn.js +2 -0
  442. package/dist/utils/cn.js.map +1 -0
  443. package/dist/utils/element-tracker.js +2 -0
  444. package/dist/utils/element-tracker.js.map +1 -0
  445. package/dist/utils/helper.d.ts +32 -0
  446. package/dist/utils/helper.d.ts.map +1 -0
  447. package/dist/utils/helper.js +2 -0
  448. package/dist/utils/helper.js.map +1 -0
  449. package/dist/utils/hoc.js +2 -0
  450. package/dist/utils/hoc.js.map +1 -0
  451. package/package.json +131 -0
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{getColor as t}from"../../utils/helper.js";import{Select as n}from"../select/select.js";import{className as r,createComponent as i,delegateEvents as a,effect as o,insert as s,memo as c,setAttribute as l,setStyleProperty as u,template as d}from"solid-js/web";import{For as f,Match as p,Show as m,Switch as h,createEffect as g,createMemo as _,createSignal as v,mergeProps as y}from"solid-js";import b from"lucide-solid/icons/chevron-left";import x from"lucide-solid/icons/chevron-right";var S=d(`<span>`),C=d(`<div class=w-fit>`),w=d(`<span class=cursor-pointer>`),T=d(`<span><span>Go to</span><input type=number min=1>`),E=d(`<div>`),D=d(`<button title="Previous Page">`),O=d(`<button>•••`),k=d(`<button>`),A=d(`<button title="Next Page">`),j=d(`<div><button title=Previous></button><span><input type=number min=1><span>/</span><span></span></span><button title=Next>`),M=d(`<div><div><span>Items per page:</span><select></select><div class="bg-c3/50 w-px self-stretch"></div><span>–<!> of <!> items</span></div><div><input type=number min=1><span>of <!> pages</span><button title="Previous Page"></button><button title="Next Page">`),N=d(`<option>`),P={defaultCurrent:1,defaultPageSize:10,total:0,align:`start`,size:`md`,color:`neutral`,hideOnSinglePage:!1,showLessItems:!1,showQuickJumper:!1,showTitle:!0,disabled:!1,pageSizeOptions:[10,20,50,100],totalBoundaryShowSizeChanger:50};function F(e){switch(e){case`xs`:return`pag26`;case`sm`:return`pag27`;case`lg`:return`pag29`;case`xl`:return`pag30`;default:return`pag28`}}function I(e){switch(e){case`center`:return`justify-center`;case`end`:return`justify-end`;default:return`justify-start`}}function L(e){return e===`lg`||e===`xl`?`lg`:e===`md`?`md`:`sm`}function R(e,t,n){let r=n?1:2;if(e<=(n?7:9))return Array.from({length:e},(e,t)=>t+1);let i=[];i.push(1);let a=Math.max(2,t-r),o=Math.min(e-1,t+r);a>2&&i.push(`prev-ellipsis`);for(let e=a;e<=o;e++)i.push(e);return o<e-1&&i.push(`next-ellipsis`),i.push(e),i}var z=a=>{let u=y(P,a),[d,p]=v(u.defaultCurrent),[h,g]=v(u.defaultPageSize),[j,M]=v(``),N=_(()=>u.current??d()),z=_(()=>u.pageSize??h()),B=_(()=>Math.max(1,Math.ceil((u.total??0)/z()))),V=_(()=>typeof u.showSizeChanger==`boolean`?u.showSizeChanger:typeof u.showSizeChanger==`object`?!0:(u.total??0)>(u.totalBoundaryShowSizeChanger??50)),H=_(()=>u.hideOnSinglePage&&B()<=1),U=e=>{let t=Math.min(Math.max(1,e),B());t!==N()&&(p(t),u.onChange?.(t,z()))},W=e=>{let t=Math.max(1,Math.ceil((u.total??0)/e)),n=Math.min(N(),t);g(e),p(n),u.onShowSizeChange?.(n,e),u.onChange?.(n,e)},G=_(()=>R(B(),N(),u.showLessItems)),K=()=>{let e=parseInt(j(),10);isNaN(e)||(U(e),M(``))},q=_(()=>[(N()-1)*z()+1,Math.min(N()*z(),u.total??0)]),J=_(()=>u.pageSizeOptions.map(e=>({label:`${e} / page`,value:e})));return i(m,{get when(){return!H()},get children(){var a=E();return s(a,i(m,{get when(){return u.showTotal},get children(){var t=S();return s(t,()=>u.showTotal(u.total??0,q())),o(()=>r(t,e(`pag13`,u.class?.total))),t}}),null),s(a,()=>{let t=(()=>{var t=D();return t.$$click=()=>U(N()-1),s(t,i(b,{size:16})),o(n=>{var i=e(`pag06 pag08`,u.class?.btn,u.class?.prev,N()<=1&&`pag07`,N()<=1&&u.class?.btnDisabled),a=u.disabled||N()<=1;return i!==n.e&&r(t,n.e=i),a!==n.t&&(t.disabled=n.t=a),n},{e:void 0,t:void 0}),t})();return u.itemRender?u.itemRender(N()-1,`prev`,t):t},null),s(a,i(f,{get each(){return G()},children:t=>{if(t===`prev-ellipsis`||t===`next-ellipsis`)return(()=>{var n=O();return n.$$click=()=>{U(t===`prev-ellipsis`?Math.max(1,N()-(u.showLessItems?3:5)):Math.min(B(),N()+(u.showLessItems?3:5)))},l(n,`title`,t===`prev-ellipsis`?`Previous 5 pages`:`Next 5 pages`),o(t=>{var i=e(`pag06 pag10`,u.class?.btn,u.class?.ellipsis),a=u.disabled;return i!==t.e&&r(n,t.e=i),a!==t.t&&(n.disabled=t.t=a),t},{e:void 0,t:void 0}),n})();let n=(()=>{var n=k();return n.$$click=()=>U(t),s(n,t),o(i=>{var a=e(`pag06`,t===N()&&`pag11`,t===N()&&u.class?.itemActive,u.class?.btn),o=u.disabled,s=u.showTitle?`Page ${t}`:void 0;return a!==i.e&&r(n,i.e=a),o!==i.t&&(n.disabled=i.t=o),s!==i.a&&l(n,`title`,i.a=s),i},{e:void 0,t:void 0,a:void 0}),n})();return u.itemRender?u.itemRender(t,`page`,n):n}}),null),s(a,()=>{let t=(()=>{var t=A();return t.$$click=()=>U(N()+1),s(t,i(x,{size:16})),o(n=>{var i=e(`pag06 pag09`,N()>=B()&&`pag07`,N()>=B()&&u.class?.btnDisabled,u.class?.btn,u.class?.next),a=u.disabled||N()>=B();return i!==n.e&&r(t,n.e=i),a!==n.t&&(t.disabled=n.t=a),n},{e:void 0,t:void 0}),t})();return u.itemRender?u.itemRender(N()+1,`next`,t):t},null),s(a,i(m,{get when(){return V()},get children(){var e=C();return s(e,i(n,{get options(){return J()},get value(){return z()},onChange:e=>W(e),get disabled(){return u.disabled},get size(){return L(u.size)},get color(){return u.color},placement:`top`,get class(){return{root:u.class?.sizeChanger}}})),e}}),null),s(a,i(m,{get when(){return u.showQuickJumper},get children(){var t=T(),n=t.firstChild,a=n.nextSibling;return a.$$keydown=e=>{e.key===`Enter`&&(K(),e.currentTarget.blur())},a.$$input=e=>M(e.currentTarget.value),s(t,i(m,{get when(){return c(()=>typeof u.showQuickJumper==`object`)()&&u.showQuickJumper.goButton},fallback:null,get children(){var e=w();return e.$$click=()=>K(),s(e,()=>u.showQuickJumper.goButton),e}}),null),o(i=>{var o=e(`pag14`,u.align===`end`&&`order-first mr-auto`,u.align===`start`&&`ml-auto`,u.class?.jumper),s=e(`pag15`,u.class?.jumperLabel),c=e(`pag16`,u.class?.jumperInput),d=B(),f=u.disabled;return o!==i.e&&r(t,i.e=o),s!==i.t&&r(n,i.t=s),c!==i.a&&r(a,i.a=c),d!==i.o&&l(a,`max`,i.o=d),f!==i.i&&(a.disabled=i.i=f),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),o(()=>a.value=j()),t}}),null),o(()=>r(a,e(`pag01 pag02`,F(u.size),I(u.align),t(u.color),u.disabled&&`pag05`,u.class?.root))),a}})},B=n=>{let a=y(P,n),[c,u]=v(a.defaultCurrent),[d,f]=v(a.defaultPageSize),p=_(()=>a.current??c()),h=_(()=>a.pageSize??d()),g=_(()=>Math.max(1,Math.ceil((a.total??0)/h()))),S=_(()=>a.hideOnSinglePage&&g()<=1),C=e=>{let t=Math.min(Math.max(1,e),g());t!==p()&&(u(t),a.onChange?.(t,h()))};return i(m,{get when(){return!S()},get children(){var n=j(),c=n.firstChild,u=c.nextSibling,d=u.firstChild,f=d.nextSibling,m=f.nextSibling,h=u.nextSibling;return c.$$click=()=>C(p()-1),s(c,i(b,{size:16})),d.addEventListener(`blur`,e=>{let t=parseInt(e.currentTarget.value,10);isNaN(t)||C(t)}),d.$$keydown=e=>{if(e.key===`Enter`){let t=parseInt(e.target.value,10);isNaN(t)||C(t)}},d.addEventListener(`focus`,e=>e.currentTarget.select()),s(m,g),h.$$click=()=>C(p()+1),s(h,i(x,{size:16})),o(i=>{var o=e(`pag01 pag03`,F(a.size),I(a.align),t(a.color),a.disabled&&`pag05`,a.class?.root),s=e(`pag06 pag08`,a.class?.btn,a.class?.prev,p()<=1&&`pag07`,p()<=1&&a.class?.btnDisabled),m=a.disabled||p()<=1,_=e(`pag17`,a.class?.simplePager),v=e(`pag18`,a.class?.simpleInput),y=g(),b=a.disabled,x=e(`pag19`,a.class?.slash),S=e(`pag06 pag09`,a.class?.btn,a.class?.next,p()>=g()&&`pag07`,p()>=g()&&a.class?.btnDisabled),C=a.disabled||p()>=g();return o!==i.e&&r(n,i.e=o),s!==i.t&&r(c,i.t=s),m!==i.a&&(c.disabled=i.a=m),_!==i.o&&r(u,i.o=_),v!==i.i&&r(d,i.i=v),y!==i.n&&l(d,`max`,i.n=y),b!==i.s&&(d.disabled=i.s=b),x!==i.h&&r(f,i.h=x),S!==i.r&&r(h,i.r=S),C!==i.d&&(h.disabled=i.d=C),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0}),o(()=>d.value=p()),n}})},V=n=>{let a=y(P,n),[c,d]=v(a.defaultCurrent),[p,h]=v(a.defaultPageSize),[S,C]=v(String(a.defaultCurrent??1)),w=_(()=>a.current??c()),T=_(()=>a.pageSize??p()),E=_(()=>Math.max(1,Math.ceil((a.total??0)/T()))),D=_(()=>a.hideOnSinglePage&&E()<=1);g(function(){C(String(w()))});let O=e=>{let t=Math.min(Math.max(1,e),E());t!==w()&&(d(t),a.onChange?.(t,T()))},k=e=>{let t=Math.max(1,Math.ceil((a.total??0)/e)),n=Math.min(w(),t);h(e),d(n),a.onShowSizeChange?.(n,e),a.onChange?.(n,e)},A=_(()=>[(w()-1)*T()+1,Math.min(w()*T(),a.total??0)]),j=e=>{let t=parseInt(e,10),n=isNaN(t)?w():Math.min(Math.max(1,t),E());O(n),C(String(n))};return i(m,{get when(){return!D()},get children(){var n=M(),c=n.firstChild,d=c.firstChild,p=d.nextSibling,m=p.nextSibling.nextSibling,h=m.firstChild,g=h.nextSibling,_=g.nextSibling.nextSibling;_.nextSibling;var v=c.nextSibling,y=v.firstChild,D=y.nextSibling,P=D.firstChild.nextSibling;P.nextSibling;var I=D.nextSibling,L=I.nextSibling;return p.addEventListener(`change`,e=>k(Number(e.currentTarget.value))),s(p,i(f,{get each(){return a.pageSizeOptions},children:e=>(()=>{var t=N();return t.value=e,s(t,e),t})()})),s(m,()=>A()[0],h),s(m,()=>A()[1],g),s(m,()=>a.total??0,_),y.$$keydown=e=>{e.key===`Enter`&&(j(e.currentTarget.value),e.currentTarget.blur())},y.addEventListener(`blur`,e=>j(e.currentTarget.value)),y.$$input=e=>C(e.currentTarget.value),y.addEventListener(`focus`,e=>e.currentTarget.select()),s(D,E,P),I.$$click=()=>O(w()-1),s(I,i(b,{size:16})),L.$$click=()=>O(w()+1),s(L,i(x,{size:16})),o(i=>{var o=e(`pag01 pag04`,F(a.size),t(a.color),a.disabled&&`pag05`,a.class?.root),s=e(`pag20`,a.class?.fullyLeft),f=e(`pag22`,a.class?.fullyLabel),h=e(`pag12`,a.class?.sizeChanger),g=a.disabled,_=e(`pag23`,a.class?.fullyRange),b=e(`pag21`,a.class?.fullyRight),x=e(`pag25`,a.class?.fullyPageInput),C=E(),T=a.disabled,O=`${Math.max(2,S().length)+.5}ch`,k=e(`pag24`,a.class?.fullyPages),A=e(`pag06`,a.class?.btn,a.class?.prev,w()<=1&&`pag07`,w()<=1&&a.class?.btnDisabled),j=a.disabled||w()<=1,M=e(`pag06`,a.class?.btn,a.class?.next,w()>=E()&&`pag07`,w()>=E()&&a.class?.btnDisabled),N=a.disabled||w()>=E();return o!==i.e&&r(n,i.e=o),s!==i.t&&r(c,i.t=s),f!==i.a&&r(d,i.a=f),h!==i.o&&r(p,i.o=h),g!==i.i&&(p.disabled=i.i=g),_!==i.n&&r(m,i.n=_),b!==i.s&&r(v,i.s=b),x!==i.h&&r(y,i.h=x),C!==i.r&&l(y,`max`,i.r=C),T!==i.d&&(y.disabled=i.d=T),O!==i.l&&u(y,`width`,i.l=O),k!==i.u&&r(D,i.u=k),A!==i.c&&r(I,i.c=A),j!==i.w&&(I.disabled=i.w=j),M!==i.m&&r(L,i.m=M),N!==i.f&&(L.disabled=i.f=N),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),o(()=>p.value=T()),o(()=>y.value=S()),n}})},H=e=>i(h,{get fallback(){return i(z,e)},get children(){return[i(p,{get when(){return e.mode===`simple`},get children(){return i(B,e)}}),i(p,{get when(){return e.mode===`fully`},get children(){return i(V,e)}})]}});a([`input`,`keydown`,`click`]);export{H as Pagination};
2
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","names":["Select","cn","getColor","ChevronLeft","ChevronRight","Component","createEffect","createMemo","createSignal","For","Match","mergeProps","Show","Switch","PaginationDefaultProps","PaginationFullyProps","PaginationProps","PaginationSimpleProps","DEFAULT_PROPS","defaultCurrent","defaultPageSize","total","align","const","size","color","hideOnSinglePage","showLessItems","showQuickJumper","showTitle","disabled","pageSizeOptions","totalBoundaryShowSizeChanger","buildSizeClass","buildAlignClass","mapSizeToSelect","buildPageItems","totalPages","current","sibling","Array","from","length","_","i","items","push","leftBound","Math","max","rightBound","min","PaginationDefault","props","p","internalCurrent","setInternalCurrent","internalPageSize","setInternalPageSize","jumpValue","setJumpValue","pageSize","ceil","showSizeChanger","shouldHide","changePage","page","clamped","onChange","changePageSize","newTotal","newCurrent","onShowSizeChange","pageItems","handleJump","val","parseInt","isNaN","range","start","end","pageSizeSelectOpts","map","opt","label","value","_$createComponent","when","children","_el$","_tmpl$5","_$insert","showTotal","_el$2","_tmpl$","_$effect","_$className","class","btn","_el$8","_tmpl$6","$$click","_p$","_v$6","prev","btnDisabled","_v$7","e","t","undefined","itemRender","each","item","_el$9","_tmpl$7","jump","_$setAttribute","_v$8","ellipsis","_v$9","pageBtn","_el$0","_tmpl$8","_v$0","itemActive","_v$1","_v$10","a","_el$1","_tmpl$9","_v$11","next","_v$12","_el$3","_tmpl$2","options","placement","root","sizeChanger","_el$4","_tmpl$4","_el$5","firstChild","_el$6","nextSibling","$$keydown","key","currentTarget","blur","$$input","_$memo","goButton","fallback","_el$7","_tmpl$3","_v$","jumper","_v$2","jumperLabel","_v$3","jumperInput","_v$4","_v$5","o","PaginationSimple","_el$10","_tmpl$0","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","addEventListener","v","target","HTMLInputElement","select","_v$13","_v$14","_v$15","_v$16","simplePager","_v$17","simpleInput","_v$18","_v$19","_v$20","slash","_v$21","_v$22","n","s","h","r","d","PaginationFully","modernPageInput","setModernPageInput","String","syncPageInput","commitPageInput","num","_el$17","_tmpl$1","_el$18","_el$19","_el$20","_el$21","_el$22","_el$23","_el$26","_el$24","_el$27","_el$25","_el$28","_el$29","_el$30","_el$31","_el$33","_el$32","_el$34","_el$35","Number","_el$36","_tmpl$10","_v$23","_v$24","fullyLeft","_v$25","fullyLabel","_v$26","_v$27","_v$28","fullyRange","_v$29","fullyRight","_v$30","fullyPageInput","_v$31","_v$32","_v$33","_v$34","fullyPages","_v$35","_v$36","_v$37","_v$38","l","_$setStyleProperty","u","c","w","m","f","Pagination","mode","_$delegateEvents"],"sources":["../../../src/components/pagination/pagination.tsx"],"sourcesContent":["import { Select } from '@/components/select';\r\nimport { cn } from '@/utils/cn';\r\nimport { getColor } from '@/utils/helper';\r\nimport ChevronLeft from 'lucide-solid/icons/chevron-left';\r\nimport ChevronRight from 'lucide-solid/icons/chevron-right';\r\nimport {\r\n Component,\r\n createEffect,\r\n createMemo,\r\n createSignal,\r\n For,\r\n Match,\r\n mergeProps,\r\n Show,\r\n Switch,\r\n} from 'solid-js';\r\nimport type {\r\n PaginationDefaultProps,\r\n PaginationFullyProps,\r\n PaginationProps,\r\n PaginationSimpleProps,\r\n} from './pagination.types';\r\n\r\nconst DEFAULT_PROPS = {\r\n defaultCurrent: 1,\r\n defaultPageSize: 10,\r\n total: 0,\r\n align: 'start' as const,\r\n size: 'md' as const,\r\n color: 'neutral' as const,\r\n hideOnSinglePage: false,\r\n showLessItems: false,\r\n showQuickJumper: false,\r\n showTitle: true,\r\n disabled: false,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n totalBoundaryShowSizeChanger: 50,\r\n};\r\n\r\n// ─── Shared helpers ─────────────────────────────────────────────────────────\r\n\r\nfunction buildSizeClass(size: string) {\r\n switch (size) {\r\n case 'xs':\r\n return 'pag26';\r\n case 'sm':\r\n return 'pag27';\r\n case 'lg':\r\n return 'pag29';\r\n case 'xl':\r\n return 'pag30';\r\n default:\r\n return 'pag28';\r\n }\r\n}\r\n\r\nfunction buildAlignClass(align: string) {\r\n switch (align) {\r\n case 'center':\r\n return 'justify-center';\r\n case 'end':\r\n return 'justify-end';\r\n default:\r\n return 'justify-start';\r\n }\r\n}\r\n\r\nfunction mapSizeToSelect(size: string): 'sm' | 'md' | 'lg' {\r\n if (size === 'lg' || size === 'xl') return 'lg';\r\n if (size === 'md') return 'md';\r\n return 'sm';\r\n}\r\n\r\n// Build page list with ellipsis algorithm\r\nfunction buildPageItems(totalPages: number, current: number, showLessItems: boolean) {\r\n const sibling = showLessItems ? 1 : 2;\r\n\r\n if (totalPages <= (showLessItems ? 7 : 9)) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }\r\n\r\n const items: (number | 'prev-ellipsis' | 'next-ellipsis')[] = [];\r\n\r\n items.push(1);\r\n\r\n const leftBound = Math.max(2, current - sibling);\r\n const rightBound = Math.min(totalPages - 1, current + sibling);\r\n\r\n if (leftBound > 2) items.push('prev-ellipsis');\r\n for (let i = leftBound; i <= rightBound; i++) items.push(i);\r\n if (rightBound < totalPages - 1) items.push('next-ellipsis');\r\n\r\n items.push(totalPages);\r\n\r\n return items;\r\n}\r\n\r\n// ─── Mode: default ──────────────────────────────────────────────────────────\r\n\r\nconst PaginationDefault: Component<PaginationDefaultProps> = props => {\r\n const p = mergeProps(DEFAULT_PROPS, props);\r\n\r\n const [internalCurrent, setInternalCurrent] = createSignal(p.defaultCurrent);\r\n const [internalPageSize, setInternalPageSize] = createSignal(p.defaultPageSize);\r\n const [jumpValue, setJumpValue] = createSignal('');\r\n\r\n const current = createMemo(() => p.current ?? internalCurrent());\r\n const pageSize = createMemo(() => p.pageSize ?? internalPageSize());\r\n const totalPages = createMemo(() => Math.max(1, Math.ceil((p.total ?? 0) / pageSize())));\r\n\r\n const showSizeChanger = createMemo(() => {\r\n if (typeof p.showSizeChanger === 'boolean') return p.showSizeChanger;\r\n if (typeof p.showSizeChanger === 'object') return true;\r\n return (p.total ?? 0) > (p.totalBoundaryShowSizeChanger ?? 50);\r\n });\r\n\r\n const shouldHide = createMemo(() => p.hideOnSinglePage && totalPages() <= 1);\r\n\r\n const changePage = (page: number) => {\r\n const clamped = Math.min(Math.max(1, page), totalPages());\r\n if (clamped === current()) return;\r\n setInternalCurrent(clamped);\r\n p.onChange?.(clamped, pageSize());\r\n };\r\n\r\n const changePageSize = (size: number) => {\r\n const newTotal = Math.max(1, Math.ceil((p.total ?? 0) / size));\r\n const newCurrent = Math.min(current(), newTotal);\r\n setInternalPageSize(size);\r\n setInternalCurrent(newCurrent);\r\n p.onShowSizeChange?.(newCurrent, size);\r\n p.onChange?.(newCurrent, size);\r\n };\r\n\r\n const pageItems = createMemo(() => buildPageItems(totalPages(), current(), p.showLessItems));\r\n\r\n const handleJump = () => {\r\n const val = parseInt(jumpValue(), 10);\r\n if (!isNaN(val)) {\r\n changePage(val);\r\n setJumpValue('');\r\n }\r\n };\r\n\r\n const range = createMemo<[number, number]>(() => {\r\n const start = (current() - 1) * pageSize() + 1;\r\n const end = Math.min(current() * pageSize(), p.total ?? 0);\r\n return [start, end];\r\n });\r\n\r\n const pageSizeSelectOpts = createMemo(() =>\r\n p.pageSizeOptions.map(opt => ({ label: `${opt} / page`, value: opt as number })),\r\n );\r\n\r\n return (\r\n <Show when={!shouldHide()}>\r\n <div\r\n class={cn(\r\n 'pag01 pag02',\r\n buildSizeClass(p.size),\r\n buildAlignClass(p.align),\r\n getColor(p.color),\r\n p.disabled && 'pag05',\r\n p.class?.root,\r\n )}\r\n >\r\n {/* Show total */}\r\n <Show when={p.showTotal}>\r\n <span class={cn('pag13', p.class?.total)}>{p.showTotal!(p.total ?? 0, range())}</span>\r\n </Show>\r\n\r\n {/* Prev button */}\r\n {(() => {\r\n const btn = (\r\n <button\r\n class={cn(\r\n 'pag06 pag08',\r\n p.class?.btn,\r\n p.class?.prev,\r\n current() <= 1 && 'pag07',\r\n current() <= 1 && p.class?.btnDisabled,\r\n )}\r\n disabled={p.disabled || current() <= 1}\r\n onClick={() => changePage(current() - 1)}\r\n title=\"Previous Page\"\r\n >\r\n <ChevronLeft size={16} />\r\n </button>\r\n );\r\n return p.itemRender ? p.itemRender(current() - 1, 'prev', btn) : btn;\r\n })()}\r\n\r\n {/* Page items */}\r\n <For each={pageItems()}>\r\n {item => {\r\n if (item === 'prev-ellipsis' || item === 'next-ellipsis') {\r\n return (\r\n <button\r\n class={cn('pag06 pag10', p.class?.btn, p.class?.ellipsis)}\r\n disabled={p.disabled}\r\n onClick={() => {\r\n const jump =\r\n item === 'prev-ellipsis'\r\n ? Math.max(1, current() - (p.showLessItems ? 3 : 5))\r\n : Math.min(totalPages(), current() + (p.showLessItems ? 3 : 5));\r\n changePage(jump);\r\n }}\r\n title={item === 'prev-ellipsis' ? 'Previous 5 pages' : 'Next 5 pages'}\r\n >\r\n •••\r\n </button>\r\n );\r\n }\r\n const pageBtn = (\r\n <button\r\n class={cn(\r\n 'pag06',\r\n item === current() && 'pag11',\r\n item === current() && p.class?.itemActive,\r\n p.class?.btn,\r\n )}\r\n disabled={p.disabled}\r\n onClick={() => changePage(item)}\r\n title={p.showTitle ? `Page ${item}` : undefined}\r\n >\r\n {item}\r\n </button>\r\n );\r\n return p.itemRender ? p.itemRender(item, 'page', pageBtn) : pageBtn;\r\n }}\r\n </For>\r\n\r\n {/* Next button */}\r\n {(() => {\r\n const btn = (\r\n <button\r\n class={cn(\r\n 'pag06 pag09',\r\n current() >= totalPages() && 'pag07',\r\n current() >= totalPages() && p.class?.btnDisabled,\r\n p.class?.btn,\r\n p.class?.next,\r\n )}\r\n disabled={p.disabled || current() >= totalPages()}\r\n onClick={() => changePage(current() + 1)}\r\n title=\"Next Page\"\r\n >\r\n <ChevronRight size={16} />\r\n </button>\r\n );\r\n return p.itemRender ? p.itemRender(current() + 1, 'next', btn) : btn;\r\n })()}\r\n\r\n {/* Size changer */}\r\n <Show when={showSizeChanger()}>\r\n <div class=\"w-fit\">\r\n <Select\r\n options={pageSizeSelectOpts()}\r\n value={pageSize()}\r\n onChange={val => changePageSize(val as number)}\r\n disabled={p.disabled}\r\n size={mapSizeToSelect(p.size)}\r\n color={p.color}\r\n placement=\"top\"\r\n class={{ root: p.class?.sizeChanger }}\r\n />\r\n </div>\r\n </Show>\r\n\r\n {/* Quick jumper */}\r\n <Show when={p.showQuickJumper}>\r\n <span\r\n class={cn(\r\n 'pag14',\r\n p.align === 'end' && 'order-first mr-auto',\r\n p.align === 'start' && 'ml-auto',\r\n p.class?.jumper,\r\n )}\r\n >\r\n <span class={cn('pag15', p.class?.jumperLabel)}>Go to</span>\r\n <input\r\n class={cn('pag16', p.class?.jumperInput)}\r\n type=\"number\"\r\n min={1}\r\n max={totalPages()}\r\n value={jumpValue()}\r\n disabled={p.disabled}\r\n onInput={e => setJumpValue(e.currentTarget.value)}\r\n onKeyDown={e => {\r\n if (e.key === 'Enter') {\r\n handleJump();\r\n e.currentTarget.blur();\r\n }\r\n }}\r\n />\r\n <Show\r\n when={typeof p.showQuickJumper === 'object' && p.showQuickJumper.goButton}\r\n fallback={null}\r\n >\r\n <span onClick={() => handleJump()} class=\"cursor-pointer\">\r\n {(p.showQuickJumper as { goButton: any }).goButton}\r\n </span>\r\n </Show>\r\n </span>\r\n </Show>\r\n </div>\r\n </Show>\r\n );\r\n};\r\n\r\n// ─── Mode: simple ────────────────────────────────────────────────────────────\r\n\r\nconst PaginationSimple: Component<PaginationSimpleProps> = props => {\r\n const p = mergeProps(DEFAULT_PROPS, props);\r\n\r\n const [internalCurrent, setInternalCurrent] = createSignal(p.defaultCurrent);\r\n const [internalPageSize, setInternalPageSize] = createSignal(p.defaultPageSize);\r\n\r\n const current = createMemo(() => p.current ?? internalCurrent());\r\n const pageSize = createMemo(() => p.pageSize ?? internalPageSize());\r\n const totalPages = createMemo(() => Math.max(1, Math.ceil((p.total ?? 0) / pageSize())));\r\n const shouldHide = createMemo(() => p.hideOnSinglePage && totalPages() <= 1);\r\n\r\n const changePage = (page: number) => {\r\n const clamped = Math.min(Math.max(1, page), totalPages());\r\n if (clamped === current()) return;\r\n setInternalCurrent(clamped);\r\n p.onChange?.(clamped, pageSize());\r\n };\r\n\r\n return (\r\n <Show when={!shouldHide()}>\r\n <div\r\n class={cn(\r\n 'pag01 pag03',\r\n buildSizeClass(p.size),\r\n buildAlignClass(p.align),\r\n getColor(p.color),\r\n p.disabled && 'pag05',\r\n p.class?.root,\r\n )}\r\n >\r\n <button\r\n class={cn(\r\n 'pag06 pag08',\r\n p.class?.btn,\r\n p.class?.prev,\r\n current() <= 1 && 'pag07',\r\n current() <= 1 && p.class?.btnDisabled,\r\n )}\r\n disabled={p.disabled || current() <= 1}\r\n onClick={() => changePage(current() - 1)}\r\n title=\"Previous\"\r\n >\r\n <ChevronLeft size={16} />\r\n </button>\r\n <span class={cn('pag17', p.class?.simplePager)}>\r\n <input\r\n class={cn('pag18', p.class?.simpleInput)}\r\n type=\"number\"\r\n min={1}\r\n max={totalPages()}\r\n value={current()}\r\n disabled={p.disabled}\r\n onFocus={e => e.currentTarget.select()}\r\n onKeyDown={e => {\r\n if (e.key === 'Enter') {\r\n const v = parseInt((e.target as HTMLInputElement).value, 10);\r\n if (!isNaN(v)) changePage(v);\r\n }\r\n }}\r\n onBlur={e => {\r\n const v = parseInt(e.currentTarget.value, 10);\r\n if (!isNaN(v)) changePage(v);\r\n }}\r\n />\r\n <span class={cn('pag19', p.class?.slash)}>/</span>\r\n <span>{totalPages()}</span>\r\n </span>\r\n <button\r\n class={cn(\r\n 'pag06 pag09',\r\n p.class?.btn,\r\n p.class?.next,\r\n current() >= totalPages() && 'pag07',\r\n current() >= totalPages() && p.class?.btnDisabled,\r\n )}\r\n disabled={p.disabled || current() >= totalPages()}\r\n onClick={() => changePage(current() + 1)}\r\n title=\"Next\"\r\n >\r\n <ChevronRight size={16} />\r\n </button>\r\n </div>\r\n </Show>\r\n );\r\n};\r\n\r\n// ─── Mode: fully ─────────────────────────────────────────────────────────────\r\n\r\nconst PaginationFully: Component<PaginationFullyProps> = props => {\r\n const p = mergeProps(DEFAULT_PROPS, props);\r\n\r\n const [internalCurrent, setInternalCurrent] = createSignal(p.defaultCurrent);\r\n const [internalPageSize, setInternalPageSize] = createSignal(p.defaultPageSize);\r\n const [modernPageInput, setModernPageInput] = createSignal(String(p.defaultCurrent ?? 1));\r\n\r\n const current = createMemo(() => p.current ?? internalCurrent());\r\n const pageSize = createMemo(() => p.pageSize ?? internalPageSize());\r\n const totalPages = createMemo(() => Math.max(1, Math.ceil((p.total ?? 0) / pageSize())));\r\n const shouldHide = createMemo(() => p.hideOnSinglePage && totalPages() <= 1);\r\n\r\n createEffect(function syncPageInput() {\r\n setModernPageInput(String(current()));\r\n });\r\n\r\n const changePage = (page: number) => {\r\n const clamped = Math.min(Math.max(1, page), totalPages());\r\n if (clamped === current()) return;\r\n setInternalCurrent(clamped);\r\n p.onChange?.(clamped, pageSize());\r\n };\r\n\r\n const changePageSize = (size: number) => {\r\n const newTotal = Math.max(1, Math.ceil((p.total ?? 0) / size));\r\n const newCurrent = Math.min(current(), newTotal);\r\n setInternalPageSize(size);\r\n setInternalCurrent(newCurrent);\r\n p.onShowSizeChange?.(newCurrent, size);\r\n p.onChange?.(newCurrent, size);\r\n };\r\n\r\n const range = createMemo<[number, number]>(() => {\r\n const start = (current() - 1) * pageSize() + 1;\r\n const end = Math.min(current() * pageSize(), p.total ?? 0);\r\n return [start, end];\r\n });\r\n\r\n const commitPageInput = (value: string) => {\r\n const num = parseInt(value, 10);\r\n const clamped = !isNaN(num) ? Math.min(Math.max(1, num), totalPages()) : current();\r\n changePage(clamped);\r\n setModernPageInput(String(clamped));\r\n };\r\n\r\n return (\r\n <Show when={!shouldHide()}>\r\n <div\r\n class={cn(\r\n 'pag01 pag04',\r\n buildSizeClass(p.size),\r\n getColor(p.color),\r\n p.disabled && 'pag05',\r\n p.class?.root,\r\n )}\r\n >\r\n {/* Left: items-per-page dropdown + range */}\r\n <div class={cn('pag20', p.class?.fullyLeft)}>\r\n <span class={cn('pag22', p.class?.fullyLabel)}>Items per page:</span>\r\n <select\r\n class={cn('pag12', p.class?.sizeChanger)}\r\n disabled={p.disabled}\r\n value={pageSize()}\r\n onChange={e => changePageSize(Number(e.currentTarget.value))}\r\n >\r\n <For each={p.pageSizeOptions}>{opt => <option value={opt}>{opt}</option>}</For>\r\n </select>\r\n <div class=\"bg-c3/50 w-px self-stretch\"></div>\r\n <span class={cn('pag23', p.class?.fullyRange)}>\r\n {range()[0]}–{range()[1]} of {p.total ?? 0} items\r\n </span>\r\n </div>\r\n\r\n {/* Right: page input + prev/next buttons */}\r\n <div class={cn('pag21', p.class?.fullyRight)}>\r\n <input\r\n class={cn('pag25', p.class?.fullyPageInput)}\r\n type=\"number\"\r\n min={1}\r\n max={totalPages()}\r\n value={modernPageInput()}\r\n disabled={p.disabled}\r\n style={{ width: `${Math.max(2, modernPageInput().length) + 0.5}ch` }}\r\n onFocus={e => e.currentTarget.select()}\r\n onInput={e => setModernPageInput(e.currentTarget.value)}\r\n onBlur={e => commitPageInput(e.currentTarget.value)}\r\n onKeyDown={e => {\r\n if (e.key === 'Enter') {\r\n commitPageInput((e.currentTarget as HTMLInputElement).value);\r\n e.currentTarget.blur();\r\n }\r\n }}\r\n />\r\n <span class={cn('pag24', p.class?.fullyPages)}>of {totalPages()} pages</span>\r\n <button\r\n class={cn(\r\n 'pag06',\r\n p.class?.btn,\r\n p.class?.prev,\r\n current() <= 1 && 'pag07',\r\n current() <= 1 && p.class?.btnDisabled,\r\n )}\r\n disabled={p.disabled || current() <= 1}\r\n onClick={() => changePage(current() - 1)}\r\n title=\"Previous Page\"\r\n >\r\n <ChevronLeft size={16} />\r\n </button>\r\n <button\r\n class={cn(\r\n 'pag06',\r\n p.class?.btn,\r\n p.class?.next,\r\n current() >= totalPages() && 'pag07',\r\n current() >= totalPages() && p.class?.btnDisabled,\r\n )}\r\n disabled={p.disabled || current() >= totalPages()}\r\n onClick={() => changePage(current() + 1)}\r\n title=\"Next Page\"\r\n >\r\n <ChevronRight size={16} />\r\n </button>\r\n </div>\r\n </div>\r\n </Show>\r\n );\r\n};\r\n\r\n// ─── Public component ────────────────────────────────────────────────────────\r\n\r\nexport const Pagination: Component<PaginationProps> = p => {\r\n return (\r\n <Switch fallback={<PaginationDefault {...(p as PaginationDefaultProps)} />}>\r\n <Match when={p.mode === 'simple'}>\r\n <PaginationSimple {...(p as PaginationSimpleProps)} />\r\n </Match>\r\n <Match when={p.mode === 'fully'}>\r\n <PaginationFully {...(p as PaginationFullyProps)} />\r\n </Match>\r\n </Switch>\r\n );\r\n};\r\n"],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { BaseColorProps } from '../../type';
2
+ import { JSX } from 'solid-js';
3
+ export type PaginationAlign = 'start' | 'center' | 'end';
4
+ export type PaginationSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ export type PaginationItemType = 'page' | 'prev' | 'next';
6
+ export interface PaginationClass {
7
+ root?: string;
8
+ /** Prev / next / page number buttons */
9
+ btn?: string;
10
+ /** Extra class on a button when it is disabled (`.sui-pagination-btn-disabled`) */
11
+ btnDisabled?: string;
12
+ /** Active (current) page button */
13
+ itemActive?: string;
14
+ /** Ellipsis jump button */
15
+ ellipsis?: string;
16
+ /** Prev button specifically */
17
+ prev?: string;
18
+ /** Next button specifically */
19
+ next?: string;
20
+ /** Page-size `<select>` (default mode) or native `<select>` (fully mode) */
21
+ sizeChanger?: string;
22
+ /** "Total X items" text */
23
+ total?: string;
24
+ /** Quick-jumper wrapper `<span>` */
25
+ jumper?: string;
26
+ /** "Go to" label inside the quick-jumper */
27
+ jumperLabel?: string;
28
+ /** Number `<input>` inside the quick-jumper */
29
+ jumperInput?: string;
30
+ /** Pager wrapper `<span>` (contains input + slash + total) */
31
+ simplePager?: string;
32
+ /** Direct page-number `<input>` */
33
+ simpleInput?: string;
34
+ /** "/" separator */
35
+ slash?: string;
36
+ /** Left section wrapper (size-changer + range) */
37
+ fullyLeft?: string;
38
+ /** Right section wrapper (page-input + prev/next) */
39
+ fullyRight?: string;
40
+ /** "Items per page:" label */
41
+ fullyLabel?: string;
42
+ /** "X–Y of Z items" range text */
43
+ fullyRange?: string;
44
+ /** "of N pages" label next to page input */
45
+ fullyPages?: string;
46
+ /** Page-number `<input>` (underline style) */
47
+ fullyPageInput?: string;
48
+ }
49
+ interface PaginationBaseProps {
50
+ color?: BaseColorProps;
51
+ current?: number;
52
+ defaultCurrent?: number;
53
+ pageSize?: number;
54
+ defaultPageSize?: number;
55
+ total?: number;
56
+ size?: PaginationSize;
57
+ hideOnSinglePage?: boolean;
58
+ disabled?: boolean;
59
+ class?: PaginationClass;
60
+ onChange?: (page: number, pageSize: number) => void;
61
+ }
62
+ export interface PaginationDefaultProps extends PaginationBaseProps {
63
+ mode?: 'default';
64
+ align?: PaginationAlign;
65
+ showLessItems?: boolean;
66
+ showQuickJumper?: boolean | {
67
+ goButton: JSX.Element;
68
+ };
69
+ showSizeChanger?: boolean | Record<string, unknown>;
70
+ pageSizeOptions?: number[];
71
+ totalBoundaryShowSizeChanger?: number;
72
+ itemRender?: (page: number, type: PaginationItemType, originalElement: JSX.Element) => JSX.Element;
73
+ showTitle?: boolean;
74
+ showTotal?: (total: number, range: [number, number]) => JSX.Element;
75
+ onShowSizeChange?: (current: number, size: number) => void;
76
+ }
77
+ export interface PaginationSimpleProps extends PaginationBaseProps {
78
+ mode: 'simple';
79
+ align?: PaginationAlign;
80
+ }
81
+ export interface PaginationFullyProps extends PaginationBaseProps {
82
+ mode: 'fully';
83
+ pageSizeOptions?: number[];
84
+ onShowSizeChange?: (current: number, size: number) => void;
85
+ }
86
+ export type PaginationProps = PaginationDefaultProps | PaginationSimpleProps | PaginationFullyProps;
87
+ export {};
88
+ //# sourceMappingURL=pagination.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.types.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/pagination.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { progressBar } from './progress-bar';
2
+ export type { ProgressBarAPI } from './progress-bar';
3
+ export type { ProgressBarOptions } from './progress-bar.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/progress-bar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ProgressBarOptions } from './progress-bar.types';
2
+ export interface ProgressBarAPI {
3
+ start: (options?: ProgressBarOptions) => void;
4
+ dismiss: () => void;
5
+ }
6
+ declare const progressBar: ProgressBarAPI;
7
+ export { progressBar };
8
+ //# sourceMappingURL=progress-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/progress-bar/progress-bar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAgI/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAaD,QAAA,MAAM,WAAW,EAAE,cA0DlB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{getColor as t}from"../../utils/helper.js";import{className as n,createComponent as r,effect as i,insert as a,memo as o,mergeProps as s,render as c,style as l,template as u}from"solid-js/web";import{createSignal as d,onCleanup as f}from"solid-js";var p=u(`<div><div>`),m=u(`<div>`),h=r=>{let[s,c]=d(0),[u,h]=d(1),_,v=null,y=e=>{v===null&&(v=e);let t=28*.88**((e-v)/1e3*2.5)/60;c(e=>{let n=e+t;return n>=99?99:n}),s()<99&&(_=requestAnimationFrame(y))};_=requestAnimationFrame(y),g.set(r.instanceId,()=>{cancelAnimationFrame(_),c(100),setTimeout(()=>{h(0),setTimeout(()=>r.onDone(),r.fadeOutDuration)},80)}),f(function(){cancelAnimationFrame(_),g.delete(r.instanceId)});let b=()=>r.direction===`rightToLeft`,x=()=>({width:`${s()}%`,height:`${r.height}px`,transition:`width 0.06s linear`,"border-radius":r.rounded?b()?`9999px 0 0 9999px`:`0 9999px 9999px 0`:`0`,"margin-left":b()?`auto`:void 0}),S=()=>({opacity:u(),transition:`opacity ${r.fadeOutDuration}ms ease`,"z-index":r.zIndex,position:`fixed`,[r.position===`bottom`?`bottom`:`top`]:`0`,left:`0`,right:`0`,"pointer-events":`none`});return(()=>{var s=p(),c=s.firstChild;return a(c,(()=>{var t=o(()=>!!r.shimmer);return()=>t()&&(()=>{var t=m();return i(()=>n(t,e(`absolute inset-0`,`animate-[shimmer_1.2s_ease-in-out_infinite]`,`bg-linear-to-r from-transparent via-white/40 to-transparent`))),t})()})()),i(i=>{var a=S(),o=e(`relative overflow-hidden`,t(r.color),`bg-(--color)`),u=x();return i.e=l(s,a,i.e),o!==i.t&&n(c,i.t=o),i.a=l(c,u,i.a),i},{e:void 0,t:void 0,a:void 0}),s})()},g=new Map,_=new Map,v=null,y=()=>{v||(v=document.createElement(`div`),v.id=`sui-progress-bar-container`,document.body.appendChild(v))},b=()=>{for(let e of _.values())e();_.clear()},x={color:`primary`,height:3,shimmer:!0,rounded:!0,zIndex:9999,fadeOutDuration:300,position:`top`,direction:`leftToRight`},S={start(e){y(),b();let t=Math.random().toString(36).slice(2),n={...x,...e},i=document.createElement(`div`);v.appendChild(i);let a=c(()=>r(h,s(n,{instanceId:t,onDone:()=>{a(),i.remove(),_.delete(t)}})),i);_.set(t,()=>{a(),i.remove()})},dismiss(){if(_.size===0)return;let e=[..._.keys()];for(let t of e){let e=g.get(t);if(e)_.delete(t),e();else{let e=_.get(t);_.delete(t),e?.()}}}};export{S as progressBar};
2
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.js","names":["render","createSignal","onCleanup","cn","getColor","ProgressBarOptions","BarProps","Required","instanceId","onDone","ProgressBarInner","props","progress","setProgress","opacity","setOpacity","rafId","startTime","INITIAL_SPEED","DECAY","MAX_PROGRESS","animate","timestamp","elapsed","speed","Math","pow","delta","prev","next","requestAnimationFrame","completeAndFade","cancelAnimationFrame","setTimeout","fadeOutDuration","completionHandlers","set","cancelProgressAnimation","delete","isRtl","direction","barStyle","width","height","transition","rounded","undefined","containerStyle","zIndex","position","const","left","right","_el$","_tmpl$","_el$2","firstChild","_$insert","_c$","_$memo","shimmer","_el$3","_tmpl$2","_$effect","_$className","_p$","_v$","_v$2","color","_v$3","e","_$style","t","a","Map","activeDisposers","containerEl","HTMLDivElement","ensureContainer","document","createElement","id","body","appendChild","disposeAll","dispose","values","clear","ProgressBarAPI","start","options","dismiss","DEFAULT_OPTIONS","progressBar","random","toString","slice","mergedOptions","slot","_$createComponent","_$mergeProps","remove","size","ids","keys","handler","get"],"sources":["../../../src/components/progress-bar/progress-bar.tsx"],"sourcesContent":["import { render } from 'solid-js/web';\r\nimport { createSignal, onCleanup } from 'solid-js';\r\nimport { cn } from '@/utils/cn';\r\nimport { getColor } from '@/utils/helper';\r\nimport type { ProgressBarOptions } from './progress-bar.types';\r\n\r\n// ─── Internal Bar Component ───────────────────────────────────────────────────\r\n\r\ninterface BarProps extends Required<ProgressBarOptions> {\r\n instanceId: string;\r\n onDone: () => void;\r\n}\r\n\r\nconst ProgressBarInner = (props: BarProps) => {\r\n const [progress, setProgress] = createSignal(0);\r\n const [opacity, setOpacity] = createSignal(1);\r\n\r\n let rafId: number;\r\n let startTime: number | null = null;\r\n\r\n // Tốc độ ban đầu (% mỗi giây), giảm dần theo hàm mũ\r\n const INITIAL_SPEED = 28;\r\n const DECAY = 0.88; // mỗi giây speed *= DECAY\r\n const MAX_PROGRESS = 99;\r\n\r\n const animate = (timestamp: number) => {\r\n if (startTime === null) startTime = timestamp;\r\n const elapsed = (timestamp - startTime) / 1000; // giây\r\n\r\n const speed = INITIAL_SPEED * Math.pow(DECAY, elapsed * 2.5);\r\n const delta = speed / 60; // per frame (60fps)\r\n\r\n setProgress(prev => {\r\n const next = prev + delta;\r\n return next >= MAX_PROGRESS ? MAX_PROGRESS : next;\r\n });\r\n\r\n if (progress() < MAX_PROGRESS) {\r\n rafId = requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n rafId = requestAnimationFrame(animate);\r\n\r\n // dismiss() gọi hàm này — jump lên 100% rồi fade out\r\n const completeAndFade = () => {\r\n cancelAnimationFrame(rafId);\r\n setProgress(100);\r\n setTimeout(() => {\r\n setOpacity(0);\r\n setTimeout(() => props.onDone(), props.fadeOutDuration);\r\n }, 80);\r\n };\r\n\r\n completionHandlers.set(props.instanceId, completeAndFade);\r\n\r\n onCleanup(function cancelProgressAnimation() {\r\n cancelAnimationFrame(rafId);\r\n completionHandlers.delete(props.instanceId);\r\n });\r\n\r\n const isRtl = () => props.direction === 'rightToLeft';\r\n\r\n const barStyle = () => ({\r\n width: `${progress()}%`,\r\n height: `${props.height}px`,\r\n transition: 'width 0.06s linear',\r\n 'border-radius': props.rounded\r\n ? isRtl()\r\n ? '9999px 0 0 9999px'\r\n : '0 9999px 9999px 0'\r\n : '0',\r\n 'margin-left': isRtl() ? 'auto' : undefined,\r\n });\r\n\r\n const containerStyle = () => ({\r\n opacity: opacity(),\r\n transition: `opacity ${props.fadeOutDuration}ms ease`,\r\n 'z-index': props.zIndex,\r\n position: 'fixed' as const,\r\n [props.position === 'bottom' ? 'bottom' : 'top']: '0',\r\n left: '0',\r\n right: '0',\r\n 'pointer-events': 'none' as const,\r\n });\r\n\r\n return (\r\n <div style={containerStyle()}>\r\n <div\r\n class={cn('relative overflow-hidden', getColor(props.color), 'bg-(--color)')}\r\n style={barStyle()}\r\n >\r\n {props.shimmer && (\r\n <div\r\n class={cn(\r\n 'absolute inset-0',\r\n 'animate-[shimmer_1.2s_ease-in-out_infinite]',\r\n 'bg-linear-to-r from-transparent via-white/40 to-transparent',\r\n )}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ─── Global state ─────────────────────────────────────────────────────────────\r\n\r\nconst completionHandlers = new Map<string, () => void>();\r\n\r\n// Track tất cả instances đang tồn tại (có thể nhiều hơn 1 trong khoảng thời gian ngắn)\r\nconst activeDisposers = new Map<string, () => void>();\r\n\r\nlet containerEl: HTMLDivElement | null = null;\r\n\r\nconst ensureContainer = () => {\r\n if (containerEl) return;\r\n containerEl = document.createElement('div');\r\n containerEl.id = 'sui-progress-bar-container';\r\n document.body.appendChild(containerEl);\r\n};\r\n\r\n// Xóa tất cả instances ngay lập tức (không animate)\r\nconst disposeAll = () => {\r\n for (const dispose of activeDisposers.values()) {\r\n dispose();\r\n }\r\n activeDisposers.clear();\r\n};\r\n\r\n// ─── Public API ───────────────────────────────────────────────────────────────\r\n\r\nexport interface ProgressBarAPI {\r\n start: (options?: ProgressBarOptions) => void;\r\n dismiss: () => void;\r\n}\r\n\r\nconst DEFAULT_OPTIONS: Required<ProgressBarOptions> = {\r\n color: 'primary',\r\n height: 3,\r\n shimmer: true,\r\n rounded: true,\r\n zIndex: 9999,\r\n fadeOutDuration: 300,\r\n position: 'top',\r\n direction: 'leftToRight',\r\n};\r\n\r\nconst progressBar: ProgressBarAPI = {\r\n start(options?: ProgressBarOptions) {\r\n ensureContainer();\r\n\r\n // Xóa tất cả instances cũ ngay lập tức\r\n disposeAll();\r\n\r\n const instanceId = Math.random().toString(36).slice(2);\r\n\r\n const mergedOptions: Required<ProgressBarOptions> = {\r\n ...DEFAULT_OPTIONS,\r\n ...options,\r\n };\r\n\r\n const slot = document.createElement('div');\r\n containerEl!.appendChild(slot);\r\n\r\n const dispose = render(\r\n () => (\r\n <ProgressBarInner\r\n {...mergedOptions}\r\n instanceId={instanceId}\r\n onDone={() => {\r\n dispose();\r\n slot.remove();\r\n activeDisposers.delete(instanceId);\r\n }}\r\n />\r\n ),\r\n slot,\r\n );\r\n\r\n activeDisposers.set(instanceId, () => {\r\n dispose();\r\n slot.remove();\r\n });\r\n },\r\n\r\n dismiss() {\r\n if (activeDisposers.size === 0) return;\r\n\r\n // Lấy tất cả instanceIds hiện tại\r\n const ids = [...activeDisposers.keys()];\r\n\r\n for (const id of ids) {\r\n const handler = completionHandlers.get(id);\r\n if (handler) {\r\n // Animate lên 100% rồi fade out\r\n activeDisposers.delete(id);\r\n handler();\r\n } else {\r\n // Fallback: xóa ngay\r\n const dispose = activeDisposers.get(id);\r\n activeDisposers.delete(id);\r\n dispose?.();\r\n }\r\n }\r\n },\r\n};\r\n\r\nexport { progressBar };\r\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseColorProps } from '../../type';
2
+ export interface ProgressBarOptions {
3
+ /** Màu của thanh progress. Mặc định: 'primary' */
4
+ color?: BaseColorProps | (string & {});
5
+ /** Chiều cao của thanh (px). Mặc định: 3 */
6
+ height?: number;
7
+ /** Hiệu ứng shimmer chạy trên thanh. Mặc định: true */
8
+ shimmer?: boolean;
9
+ /** Bo tròn đầu thanh. Mặc định: true */
10
+ rounded?: boolean;
11
+ /** z-index của thanh. Mặc định: 9999 */
12
+ zIndex?: number;
13
+ /** Thời gian fade-out khi dismiss (ms). Mặc định: 300 */
14
+ fadeOutDuration?: number;
15
+ /** Vị trí hiển thị. Mặc định: 'top' */
16
+ position?: 'top' | 'bottom';
17
+ /** Hướng fill của thanh. Mặc định: 'leftToRight' */
18
+ direction?: 'leftToRight' | 'rightToLeft';
19
+ }
20
+ //# sourceMappingURL=progress-bar.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.types.d.ts","sourceRoot":"","sources":["../../../src/components/progress-bar/progress-bar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,KAAK,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACvC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,oDAAoD;IACpD,SAAS,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;CAC3C"}
@@ -0,0 +1,3 @@
1
+ export { QrCode } from './qr-code';
2
+ export type { QrCodeProps, QrCodeLogo, QrCodeStatus } from './qr-code.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/qr-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Component } from 'solid-js';
2
+ import { QrCodeProps } from './qr-code.types';
3
+ export declare const QrCode: Component<QrCodeProps>;
4
+ //# sourceMappingURL=qr-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.d.ts","sourceRoot":"","sources":["../../../src/components/qr-code/qr-code.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAA6D,MAAM,UAAU,CAAC;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA4EnD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CA2EzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{getColor as t}from"../../utils/helper.js";import{addEventListener as n,className as r,createComponent as i,delegateEvents as a,effect as o,insert as s,setAttribute as c,setStyleProperty as l,template as u,use as d}from"solid-js/web";import{Show as f,createEffect as p,createUniqueId as m,mergeProps as h}from"solid-js";import g from"lucide-solid/icons/loader";import _ from"lucide-solid/icons/refresh-cw";import v from"qrcode";import y from"lucide-solid/icons/check-circle";var b=u(`<div>`),x=u(`<div><button aria-label="Refresh QR code"></button><span>`),S=u(`<div><canvas>`),C={size:160,color:`#000000`,bgColor:`#ffffff`,errorLevel:`M`,status:`active`,expiredText:`QR code expired`,accentColor:`primary`};async function w(e,t,n){await v.toCanvas(e,t||` `,{width:n.size,margin:2,color:{dark:n.color,light:n.bgColor},errorCorrectionLevel:n.errorLevel})}function T(e,t,n){let r=e.getContext(`2d`);if(!r)return;let i=new Image;i.crossOrigin=`anonymous`,i.onload=function(){let e=t.width??n*.2,a=t.height??e,o=t.padding??4,s=t.borderRadius??4,c=t.background??`#ffffff`,l=e+o*2,u=a+o*2,d=(n-l)/2,f=(n-u)/2;r.beginPath(),r.moveTo(d+s,f),r.lineTo(d+l-s,f),r.quadraticCurveTo(d+l,f,d+l,f+s),r.lineTo(d+l,f+u-s),r.quadraticCurveTo(d+l,f+u,d+l-s,f+u),r.lineTo(d+s,f+u),r.quadraticCurveTo(d,f+u,d,f+u-s),r.lineTo(d,f+s),r.quadraticCurveTo(d,f,d+s,f),r.closePath(),r.fillStyle=c,r.fill(),r.drawImage(i,d+o,f+o,e,a)},i.src=t.src}var E=a=>{let u=h(C,a),v=m(),E;return p(function(){if(!E)return;let e=E,t=u.value,n=u.size,r=u.color,i=u.bgColor,a=u.errorLevel,o=u.logo;w(e,t,{size:n,color:r,bgColor:i,errorLevel:a}).then(function(){o&&T(e,o,n)})}),(()=>{var a=S(),p=a.firstChild;c(a,`id`,v);var m=E;return typeof m==`function`?d(m,p):E=p,s(a,i(f,{get when(){return u.status===`loading`},get children(){var n=b();return s(n,i(g,{get class(){return e(`qr04 animate-spin`,u.class?.overlayIcon)},get size(){return u.size*.22}})),o(()=>r(n,e(`qr03`,t(u.accentColor),u.class?.overlay))),n}}),null),s(a,i(f,{get when(){return u.status===`expired`},get children(){var a=x(),c=a.firstChild,l=c.nextSibling;return n(c,`click`,u.onRefresh,!0),s(c,i(_,{get size(){return u.size*.22}})),s(l,()=>u.expiredText),o(n=>{var i=e(`qr03 qr05`,t(u.accentColor),u.class?.overlay),o=e(`qr06`,u.class?.overlayIcon),s=e(`qr07`,u.class?.overlayText);return i!==n.e&&r(a,n.e=i),o!==n.t&&r(c,n.t=o),s!==n.a&&r(l,n.a=s),n},{e:void 0,t:void 0,a:void 0}),a}}),null),s(a,i(f,{get when(){return u.status===`scanned`},get children(){var n=b();return s(n,i(y,{get class(){return e(`qr04`,u.class?.overlayIcon)},get size(){return u.size*.22}})),o(()=>r(n,e(`qr03`,t(`success`),u.class?.overlay))),n}}),null),o(t=>{var n=e(`qr01`,u.class?.root),i=`${u.size}px`,o=`${u.size}px`,s=e(`qr02`,u.class?.canvas),d=u.size,f=u.size,m=`QR code for: ${u.value}`;return n!==t.e&&r(a,t.e=n),i!==t.t&&l(a,`width`,t.t=i),o!==t.a&&l(a,`height`,t.a=o),s!==t.o&&r(p,t.o=s),d!==t.i&&c(p,`width`,t.i=d),f!==t.n&&c(p,`height`,t.n=f),m!==t.s&&c(p,`aria-label`,t.s=m),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),a})()};a([`click`]);export{E as QrCode};
2
+ //# sourceMappingURL=qr-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.js","names":["cn","getColor","QRCode","RefreshCw","CheckCircle","Loader","Component","createEffect","createUniqueId","mergeProps","onCleanup","Show","QrCodeProps","DEFAULT_PROPS","size","color","bgColor","errorLevel","const","status","expiredText","accentColor","drawQr","canvas","HTMLCanvasElement","value","opts","Promise","toCanvas","width","margin","dark","light","errorCorrectionLevel","drawLogo","logo","NonNullable","ctx","getContext","img","Image","crossOrigin","onload","onLogoLoad","logoW","logoH","height","pad","padding","radius","borderRadius","bg","background","bgW","bgH","x","y","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","fillStyle","fill","drawImage","src","QrCode","props","p","id","canvasRef","renderQrCode","then","onQrDrawn","_el$","_tmpl$3","_el$2","firstChild","_$setAttribute","_ref$","_$use","_$insert","_$createComponent","when","children","_el$3","_tmpl$","class","overlayIcon","_$effect","_$className","overlay","_el$4","_tmpl$2","_el$5","_el$6","nextSibling","_$addEventListener","onRefresh","_p$","_v$","_v$2","_v$3","overlayText","e","t","a","undefined","_el$7","_v$4","root","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_$setStyleProperty","o","i","n","s","_$delegateEvents"],"sources":["../../../src/components/qr-code/qr-code.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\r\nimport { getColor } from '@utils/helper';\r\nimport QRCode from 'qrcode';\r\nimport RefreshCw from 'lucide-solid/icons/refresh-cw';\r\nimport CheckCircle from 'lucide-solid/icons/check-circle';\r\nimport Loader from 'lucide-solid/icons/loader';\r\nimport { Component, createEffect, createUniqueId, mergeProps, onCleanup, Show } from 'solid-js';\r\nimport type { QrCodeProps } from './qr-code.types';\r\n\r\nconst DEFAULT_PROPS = {\r\n size: 160,\r\n color: '#000000',\r\n bgColor: '#ffffff',\r\n errorLevel: 'M' as const,\r\n status: 'active' as const,\r\n expiredText: 'QR code expired',\r\n accentColor: 'primary' as const,\r\n};\r\n\r\nasync function drawQr(\r\n canvas: HTMLCanvasElement,\r\n value: string,\r\n opts: {\r\n size: number;\r\n color: string;\r\n bgColor: string;\r\n errorLevel: 'L' | 'M' | 'Q' | 'H';\r\n },\r\n): Promise<void> {\r\n await QRCode.toCanvas(canvas, value || ' ', {\r\n width: opts.size,\r\n margin: 2,\r\n color: {\r\n dark: opts.color,\r\n light: opts.bgColor,\r\n },\r\n errorCorrectionLevel: opts.errorLevel,\r\n });\r\n}\r\n\r\nfunction drawLogo(\r\n canvas: HTMLCanvasElement,\r\n logo: NonNullable<QrCodeProps['logo']>,\r\n size: number,\r\n): void {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return;\r\n\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.onload = function onLogoLoad() {\r\n const logoW = logo.width ?? size * 0.2;\r\n const logoH = logo.height ?? logoW;\r\n const pad = logo.padding ?? 4;\r\n const radius = logo.borderRadius ?? 4;\r\n const bg = logo.background ?? '#ffffff';\r\n\r\n const bgW = logoW + pad * 2;\r\n const bgH = logoH + pad * 2;\r\n const x = (size - bgW) / 2;\r\n const y = (size - bgH) / 2;\r\n\r\n // Draw background rect with rounded corners\r\n ctx.beginPath();\r\n ctx.moveTo(x + radius, y);\r\n ctx.lineTo(x + bgW - radius, y);\r\n ctx.quadraticCurveTo(x + bgW, y, x + bgW, y + radius);\r\n ctx.lineTo(x + bgW, y + bgH - radius);\r\n ctx.quadraticCurveTo(x + bgW, y + bgH, x + bgW - radius, y + bgH);\r\n ctx.lineTo(x + radius, y + bgH);\r\n ctx.quadraticCurveTo(x, y + bgH, x, y + bgH - radius);\r\n ctx.lineTo(x, y + radius);\r\n ctx.quadraticCurveTo(x, y, x + radius, y);\r\n ctx.closePath();\r\n ctx.fillStyle = bg;\r\n ctx.fill();\r\n\r\n // Draw logo image centered inside background\r\n ctx.drawImage(img, x + pad, y + pad, logoW, logoH);\r\n };\r\n img.src = logo.src;\r\n}\r\n\r\nexport const QrCode: Component<QrCodeProps> = props => {\r\n const p = mergeProps(DEFAULT_PROPS, props);\r\n const id = createUniqueId();\r\n let canvasRef: HTMLCanvasElement | undefined;\r\n\r\n createEffect(function renderQrCode() {\r\n if (!canvasRef) return;\r\n\r\n // Snapshot all reactive values synchronously — reads inside .then() would\r\n // occur outside the reactive computation and throw \"Effects is null\".\r\n const canvas = canvasRef;\r\n const value = p.value;\r\n const size = p.size;\r\n const color = p.color;\r\n const bgColor = p.bgColor;\r\n const errorLevel = p.errorLevel;\r\n const logo = p.logo;\r\n\r\n drawQr(canvas, value, { size, color, bgColor, errorLevel }).then(function onQrDrawn() {\r\n if (logo) {\r\n drawLogo(canvas, logo, size);\r\n }\r\n });\r\n });\r\n\r\n return (\r\n <div\r\n id={id}\r\n class={cn('qr01', p.class?.root)}\r\n style={{ width: `${p.size}px`, height: `${p.size}px` }}\r\n >\r\n {/* The QR canvas */}\r\n <canvas\r\n ref={canvasRef}\r\n class={cn('qr02', p.class?.canvas)}\r\n width={p.size}\r\n height={p.size}\r\n aria-label={`QR code for: ${p.value}`}\r\n />\r\n\r\n {/* Loading overlay */}\r\n <Show when={p.status === 'loading'}>\r\n <div class={cn('qr03', getColor(p.accentColor), p.class?.overlay)}>\r\n <Loader\r\n class={cn('qr04 animate-spin', p.class?.overlayIcon)}\r\n size={p.size * 0.22}\r\n />\r\n </div>\r\n </Show>\r\n\r\n {/* Expired overlay */}\r\n <Show when={p.status === 'expired'}>\r\n <div class={cn('qr03 qr05', getColor(p.accentColor), p.class?.overlay)}>\r\n <button\r\n class={cn('qr06', p.class?.overlayIcon)}\r\n onClick={p.onRefresh}\r\n aria-label=\"Refresh QR code\"\r\n >\r\n <RefreshCw size={p.size * 0.22} />\r\n </button>\r\n <span class={cn('qr07', p.class?.overlayText)}>{p.expiredText}</span>\r\n </div>\r\n </Show>\r\n\r\n {/* Scanned overlay */}\r\n <Show when={p.status === 'scanned'}>\r\n <div class={cn('qr03', getColor('success'), p.class?.overlay)}>\r\n <CheckCircle\r\n class={cn('qr04', p.class?.overlayIcon)}\r\n size={p.size * 0.22}\r\n />\r\n </div>\r\n </Show>\r\n </div>\r\n );\r\n};\r\n"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { BaseColorProps } from '../../type';
2
+ export type QrCodeStatus = 'active' | 'loading' | 'expired' | 'scanned';
3
+ export type QrCodeRenderMode = 'canvas';
4
+ export interface QrCodeLogo {
5
+ /** URL of the logo image to overlay at the center */
6
+ src: string;
7
+ /** Logo width in px relative to QR size (default: 20% of size) */
8
+ width?: number;
9
+ /** Logo height in px relative to QR size (default: same as width) */
10
+ height?: number;
11
+ /** Padding around the logo background (default: 4) */
12
+ padding?: number;
13
+ /** Logo background color (default: '#ffffff') */
14
+ background?: string;
15
+ /** Border radius of the logo container (default: 4) */
16
+ borderRadius?: number;
17
+ }
18
+ export interface QrCodeProps {
19
+ /** The text / URL to encode */
20
+ value: string;
21
+ /** Canvas size in px (width = height, default: 160) */
22
+ size?: number;
23
+ /** Foreground dot color — hex string (default: '#000000') */
24
+ color?: string;
25
+ /** Background color — hex string (default: '#ffffff') */
26
+ bgColor?: string;
27
+ /** Error correction level (default: 'M') */
28
+ errorLevel?: 'L' | 'M' | 'Q' | 'H';
29
+ /** Optional center logo configuration */
30
+ logo?: QrCodeLogo;
31
+ /** Component status — controls overlay state */
32
+ status?: QrCodeStatus;
33
+ /** Label shown in the expired overlay */
34
+ expiredText?: string;
35
+ /** Called when the user clicks the refresh button in expired state */
36
+ onRefresh?: () => void;
37
+ /** Color accent used for the status overlay icon (maps to BaseColorProps) */
38
+ accentColor?: BaseColorProps;
39
+ /** Slot class overrides */
40
+ class?: Partial<Record<'root' | 'canvas' | 'overlay' | 'overlayIcon' | 'overlayText', string>>;
41
+ }
42
+ //# sourceMappingURL=qr-code.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.types.d.ts","sourceRoot":"","sources":["../../../src/components/qr-code/qr-code.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,yCAAyC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CAChG"}
@@ -0,0 +1,2 @@
1
+ export { Rating } from './rating';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/rating/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Component } from 'solid-js';
2
+ import { RatingProps } from './rating.types';
3
+ export declare const Rating: Component<RatingProps>;
4
+ //# sourceMappingURL=rating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/components/rating/rating.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAQV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmDlD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CAgJzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{className as t,createComponent as n,effect as r,insert as i,memo as a,mergeProps as o,setAttribute as s,spread as c,template as l}from"solid-js/web";import{For as u,createEffect as d,createMemo as f,createSignal as p,mergeProps as m,on as h,splitProps as g}from"solid-js";var _=l(`<div>`),v=l(`<input type=radio class=rating-hidden aria-label="Reset rating">`),y=l(`<input type=radio>`),b={xs:`rating-xs`,sm:`rating-sm`,md:`rating-md`,lg:`rating-lg`,xl:`rating-xl`};function x(e){return e?{primary:`bg-primary`,secondary:`bg-secondary`,accent:`bg-accent`,neutral:`bg-neutral`,info:`bg-info`,success:`bg-success`,warning:`bg-warning`,error:`bg-error`}[e]??e:``}var S={star:`bg-yellow-400`,"star-2":`bg-orange-400`,heart:`bg-red-400`},C={star:`mask-star`,"star-2":`mask-star-2`,heart:`mask-heart`},w={count:5,mask:`star-2`,size:`md`,allowClear:!0,half:!1,readOnly:!1},T=0,E=l=>{let[E,D]=g(m(w,l),[`value`,`defaultValue`,`count`,`color`,`size`,`mask`,`readOnly`,`half`,`allowClear`,`gap`,`onChange`,`class`,`ariaLabel`]),O=`rating-${++T}`,[k,A]=p(E.defaultValue??0);d(h(()=>E.value,e=>{e!==void 0&&A(e)}));let j=f(()=>E.value===void 0?k():E.value),M=e=>{E.readOnly||(E.value===void 0&&A(e),E.onChange?.(e))},N=f(()=>x(E.color)||S[E.mask??`star-2`]||`bg-orange-400`),P=f(()=>C[E.mask??`star-2`]??`mask-star-2`),F=f(()=>{let e=E.gap;return e===void 0?E.mask===`heart`?`gap-1`:void 0:e?`gap-1`:void 0}),I=f(()=>{let e=E.count??5,t=[];if(E.half)for(let n=.5;n<=e;n+=.5)t.push(n);else for(let n=1;n<=e;n++)t.push(n);return t});return E.readOnly?(()=>{var a=_();return c(a,o({get class(){return e(`rating`,b[E.size],E.half&&`rating-half`,F(),E.class)}},D),!1,!0),i(a,n(u,{get each(){return I()},children:n=>{let i=E.half&&n%1!=0,a=i?`mask-half-1`:E.half?`mask-half-2`:void 0;return E.half&&!i&&n-.5===j()?null:(()=>{var i=_();return r(r=>{var o=e(`mask`,P(),a,N()),c=n===j()?`true`:void 0;return o!==r.e&&t(i,r.e=o),c!==r.t&&s(i,`aria-current`,r.t=c),r},{e:void 0,t:void 0}),i})()}})),a})():(()=>{var l=_();return c(l,o({get class(){return e(`rating`,b[E.size],E.half&&`rating-half`,F(),E.class)}},D),!1,!0),i(l,(()=>{var e=a(()=>!!E.allowClear);return()=>e()&&(()=>{var e=v();return e.addEventListener(`change`,()=>M(0)),s(e,`name`,O),r(()=>e.checked=j()===0),e})()})(),null),i(l,n(u,{get each(){return I()},children:n=>{let i=E.half&&n%1!=0?`mask-half-1`:E.half?`mask-half-2`:void 0,a=E.ariaLabel?`${E.ariaLabel} ${n}`:`${n} ${E.half?`stars`:`star`}`;return(()=>{var o=y();return o.addEventListener(`change`,()=>M(n)),s(o,`name`,O),s(o,`aria-label`,a),r(()=>t(o,e(`mask`,P(),i,N()))),r(()=>o.checked=j()===n),o})()}}),null),l})()};export{E as Rating};
2
+ //# sourceMappingURL=rating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating.js","names":["cn","Component","createMemo","createSignal","For","mergeProps","on","createEffect","splitProps","RatingProps","sizeClass","Record","xs","sm","md","lg","xl","resolveColor","color","map","primary","secondary","accent","neutral","info","success","warning","error","DEFAULT_COLOR","star","heart","MASK_CLASS","DEFAULT_PROPS","Partial","count","mask","size","allowClear","half","readOnly","_uid","Rating","rawProps","local","rest","groupName","internal","setInternal","defaultValue","value","v","undefined","current","handleChange","val","onChange","colorCls","maskCls","gapCls","explicit","gap","steps","total","list","i","push","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","_$createComponent","each","children","step","isHalfFirst","halfCls","_el$2","_$effect","_p$","_v$","_v$2","e","_$className","t","_$setAttribute","_el$3","_c$","_$memo","_el$4","_tmpl$2","addEventListener","checked","label","ariaLabel","_el$5","_tmpl$3"],"sources":["../../../src/components/rating/rating.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport {\n Component,\n createMemo,\n createSignal,\n For,\n mergeProps,\n on,\n createEffect,\n splitProps,\n} from 'solid-js';\nimport type { RatingProps } from './rating.types';\n\nconst sizeClass: Record<string, string> = {\n xs: 'rating-xs',\n sm: 'rating-sm',\n md: 'rating-md',\n lg: 'rating-lg',\n xl: 'rating-xl',\n};\n\n/** Map BaseColorProps → Tailwind bg class; trả về nguyên string nếu không khớp */\nfunction resolveColor(color?: string): string {\n const map: Record<string, string> = {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n accent: 'bg-accent',\n neutral: 'bg-neutral',\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n error: 'bg-error',\n };\n if (!color) return '';\n return map[color] ?? color;\n}\n\n/** Màu mặc định theo mask khi user không truyền color */\nconst DEFAULT_COLOR: Record<string, string> = {\n star: 'bg-yellow-400',\n 'star-2': 'bg-orange-400',\n heart: 'bg-red-400',\n};\n\n/** Lookup đầy đủ để Tailwind CSS 4 scan được class strings */\nconst MASK_CLASS: Record<string, string> = {\n star: 'mask-star',\n 'star-2': 'mask-star-2',\n heart: 'mask-heart',\n};\n\nconst DEFAULT_PROPS: Partial<RatingProps> = {\n count: 5,\n mask: 'star-2',\n size: 'md',\n allowClear: true,\n half: false,\n readOnly: false,\n};\n\nlet _uid = 0;\n\nexport const Rating: Component<RatingProps> = rawProps => {\n const [local, rest] = splitProps(mergeProps(DEFAULT_PROPS, rawProps), [\n 'value',\n 'defaultValue',\n 'count',\n 'color',\n 'size',\n 'mask',\n 'readOnly',\n 'half',\n 'allowClear',\n 'gap',\n 'onChange',\n 'class',\n 'ariaLabel',\n ]);\n\n // unique name cho radio group\n const groupName = `rating-${++_uid}`;\n\n // Internal signal cho uncontrolled mode\n const [internal, setInternal] = createSignal<number>(local.defaultValue ?? 0);\n\n // Sync controlled value → internal\n createEffect(\n on(\n () => local.value,\n v => {\n if (v !== undefined) setInternal(v);\n },\n ),\n );\n\n const current = createMemo(() => (local.value !== undefined ? local.value : internal()));\n\n const handleChange = (val: number) => {\n if (local.readOnly) return;\n if (local.value === undefined) setInternal(val);\n local.onChange?.(val);\n };\n\n // Nếu user không truyền color, dùng màu mặc định theo mask\n const colorCls = createMemo(\n () => resolveColor(local.color) || DEFAULT_COLOR[local.mask ?? 'star-2'] || 'bg-orange-400',\n );\n const maskCls = createMemo(() => MASK_CLASS[local.mask ?? 'star-2'] ?? 'mask-star-2');\n\n // gap-1 mặc định bật cho heart, tắt cho star/star-2 (theo DaisyUI docs)\n const gapCls = createMemo(() => {\n const explicit = local.gap;\n if (explicit !== undefined) return explicit ? 'gap-1' : undefined;\n return local.mask === 'heart' ? 'gap-1' : undefined;\n });\n\n /** Danh sách các \"step\" value: nếu half thì 0.5, 1, 1.5 … sinon 1, 2, 3 … */\n const steps = createMemo<number[]>(() => {\n const total = local.count ?? 5;\n const list: number[] = [];\n if (local.half) {\n for (let i = 0.5; i <= total; i += 0.5) list.push(i);\n } else {\n for (let i = 1; i <= total; i++) list.push(i);\n }\n return list;\n });\n\n // ── READ-ONLY render ──────────────────────────────────────────────────────\n if (local.readOnly) {\n return (\n <div\n class={cn(\n 'rating',\n sizeClass[local.size!],\n local.half && 'rating-half',\n gapCls(),\n local.class,\n )}\n {...rest}\n >\n <For each={steps()}>\n {step => {\n const isHalfFirst = local.half && step % 1 !== 0;\n const halfCls = isHalfFirst ? 'mask-half-1' : local.half ? 'mask-half-2' : undefined;\n // Với half mode: ẩn nửa phải (mask-half-2) của sao tại vị trí current\n // vì DaisyUI render nó mờ 20% tạo ảo giác sao thừa\n if (local.half && !isHalfFirst && step - 0.5 === current()) return null;\n return (\n <div\n class={cn('mask', maskCls(), halfCls, colorCls())}\n aria-current={step === current() ? 'true' : undefined}\n />\n );\n }}\n </For>\n </div>\n );\n }\n\n // ── INTERACTIVE render ────────────────────────────────────────────────────\n return (\n <div\n class={cn(\n 'rating',\n sizeClass[local.size!],\n local.half && 'rating-half',\n gapCls(),\n local.class,\n )}\n {...rest}\n >\n {/* Input ẩn để reset */}\n {local.allowClear && (\n <input\n type=\"radio\"\n name={groupName}\n class=\"rating-hidden\"\n checked={current() === 0}\n aria-label=\"Reset rating\"\n onChange={() => handleChange(0)}\n />\n )}\n\n <For each={steps()}>\n {step => {\n const isHalfFirst = local.half && step % 1 !== 0;\n const halfCls = isHalfFirst ? 'mask-half-1' : local.half ? 'mask-half-2' : undefined;\n const label = local.ariaLabel\n ? `${local.ariaLabel} ${step}`\n : `${step} ${local.half ? 'stars' : 'star'}`;\n\n return (\n <input\n type=\"radio\"\n name={groupName}\n class={cn('mask', maskCls(), halfCls, colorCls())}\n checked={current() === step}\n aria-label={label}\n onChange={() => handleChange(step)}\n />\n );\n }}\n </For>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { BaseColorProps } from '../../type';
2
+ import { JSX } from 'solid-js';
3
+ export type RatingSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type RatingMask = 'star' | 'star-2' | 'heart';
5
+ export type RatingProps = {
6
+ /** Giá trị hiện tại (controlled) */
7
+ value?: number;
8
+ /** Giá trị mặc định (uncontrolled) */
9
+ defaultValue?: number;
10
+ /** Số lượng sao, mặc định 5 */
11
+ count?: number;
12
+ /** Màu sắc theo DaisyUI color hoặc class Tailwind tùy chỉnh (vd: 'bg-orange-400') */
13
+ color?: BaseColorProps | string;
14
+ /** Kích thước */
15
+ size?: RatingSize;
16
+ /** Hình dạng mask */
17
+ mask?: RatingMask;
18
+ /** Chỉ đọc, không thể tương tác */
19
+ readOnly?: boolean;
20
+ /** Hỗ trợ nửa sao (bước 0.5) */
21
+ half?: boolean;
22
+ /** Cho phép reset về 0 khi bỏ chọn */
23
+ allowClear?: boolean;
24
+ /** Callback khi giá trị thay đổi */
25
+ onChange?: (value: number) => void;
26
+ /** CSS class cho container */
27
+ class?: string;
28
+ /** Thêm khoảng cách giữa các item (gap-1). Mặc định true khi mask="heart", false cho star */
29
+ gap?: boolean;
30
+ /** Aria label prefix cho từng sao */
31
+ ariaLabel?: string;
32
+ } & Omit<JSX.HTMLAttributes<HTMLDivElement>, 'onChange'>;
33
+ //# sourceMappingURL=rating.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating.types.d.ts","sourceRoot":"","sources":["../../../src/components/rating/rating.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAChC,iBAAiB;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Select } from './select';
2
+ export type { SelectProps, SelectOptionType, OptGroupType, SelectValue, SelectFieldNames, SelectMethods, ShowSearchConfig, LabeledValue, LabelInValueType, FlattenOptionData, TagRenderProps, } from './select.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { Component } from 'solid-js';
3
+ import { SelectProps } from './select.types';
4
+ declare const selectVariants: (props?: ({
5
+ variant?: "outline" | "filled" | "borderless" | "underlined" | null | undefined;
6
+ size?: "sm" | "md" | "lg" | null | undefined;
7
+ color?: "primary" | "neutral" | "secondary" | "accent" | "info" | "success" | "warning" | "error" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ export type SelectVariantsProps = VariantProps<typeof selectVariants>;
10
+ export declare const Select: Component<SelectProps>;
11
+ export {};
12
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/select/select.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,OAAO,EAQL,KAAK,SAAS,EAEf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAOV,WAAW,EAIZ,MAAM,gBAAgB,CAAC;AAExB,QAAA,MAAM,cAAc;;;;8EAwBlB,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AA4ItE,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CAs8BzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"../../utils/cn.js";import{getColor as t}from"../../utils/helper.js";import{Dropdown as n}from"../dropdown/dropdown.js";import{className as r,createComponent as i,delegateEvents as a,effect as o,insert as s,memo as c,setAttribute as l,setStyleProperty as u,template as d,use as f}from"solid-js/web";import{cva as p}from"class-variance-authority";import{For as m,Show as h,createEffect as g,createMemo as _,createSignal as v,mergeProps as ee,on as y}from"solid-js";import b from"lucide-solid/icons/x";import{createVirtualizer as te}from"@tanstack/solid-virtual";import ne from"lucide-solid/icons/check";import re from"lucide-solid/icons/chevron-down";import ie from"lucide-solid/icons/search";var x=d(`<span class=sel19>`),S=d(`<span class=sel17><span class=sel18>`),C=d(`<span class=sel42><span class=sel43><span class=sel44>`),ae=d(`<span class=sel36>`),oe=d(`<div><span class=sel35>`),se=d(`<div class=sel39>`),ce=d(`<div style=overflow-y:auto><div style=width:100%;position:relative>`),le=d(`<div style=position:absolute;top:0;left:0;width:100%>`),ue=d(`<div class=sel37>`),de=d(`<div class=sel30>`),fe=d(`<div class="flex items-center px-3 shadow-2xs"><input class=sel29 autocomplete=off role=combobox aria-haspopup=listbox aria-autocomplete=list placeholder=Search...>`),pe=d(`<div role=listbox>`),me=d(`<span class=sel11>`),he=d(`<span class="sel17 sel20">`),ge=d(`<span class=sel15>`),_e=d(`<div class=sel16>`),ve=d(`<span class=sel26>`),ye=d(`<span>`),be=d(`<div role=combobox aria-haspopup=listbox><div class=sel12></div><div class=sel22>`),xe=d(`<span class=sel14>`),Se=d(`<div class=sel13>`),Ce=d(`<span class=sel25>`),we=p(`sel01`,{variants:{variant:{outline:`sel07`,filled:`sel09`,borderless:`sel08`,underlined:`sel10`},size:{lg:`sel06`,md:`sel05`,sm:`sel04`},color:{neutral:`input-neutral`,primary:`input-primary`,secondary:`input-secondary`,accent:`input-accent`,info:`input-info`,success:`input-success`,warning:`input-warning`,error:`input-error`}}}),Te=e=>e.tagRender?e.tagRender({label:e.tag.label,value:e.tag.value,closable:e.tag.closable,onClose:()=>e.onRemove(e.tag.value,new MouseEvent(`click`))}):(()=>{var t=S(),n=t.firstChild;return s(n,()=>e.tag.label),s(t,i(h,{get when(){return e.tag.closable},get children(){var t=x();return t.$$click=t=>e.onRemove(e.tag.value,t),s(t,(()=>{var t=c(()=>!!e.removeIcon);return()=>t()?e.removeIcon:i(b,{class:`m-auto`,size:12,"stroke-width":3})})()),t}}),null),t})(),Ee=e=>(()=>{var t=C(),n=t.firstChild,r=n.firstChild;return s(t,()=>e.children,n),s(r,()=>e.content),t})();function De(e){return{label:e?.label??`label`,value:e?.value??`value`,options:e?.options??`options`,groupLabel:e?.groupLabel??`label`}}function w(e,t){return e?.[t]}function Oe(e,t){if(!e)return[];let n=[];for(let r of e){let e=w(r,t.options);if(e&&Array.isArray(e)){let i=w(r,t.groupLabel);for(let r of e)n.push({label:w(r,t.label),value:w(r,t.value),disabled:r.disabled,class:r.class,title:r.title,groupLabel:i,raw:r})}else n.push({label:w(r,t.label),value:w(r,t.value),disabled:r.disabled,class:r.class,title:r.title,groupLabel:void 0,raw:r})}return n}function ke(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.groupLabel===n.groupLabel?e.items.push(n):t.push({groupLabel:n.groupLabel,items:[n]})}return t}function T(e){if(e!=null)return typeof e==`object`&&`value`in e?e.value:e}function E(e){if(e==null)return[];if(Array.isArray(e))return e.map(e=>T(e)).filter(e=>e!==void 0);let t=T(e);return t===void 0?[]:[t]}var D=a=>{a=ee({color:`error`,size:`md`,variant:`outline`,disabled:!1,loading:!1,placement:`bottom`,listHeight:256,virtual:!1,defaultActiveFirstOption:!1,notFoundContent:`Not Found`,labelInValue:!1,placeholder:`Select...`,blockScroll:!0},a);let d=_(()=>De(a.fieldNames)),p=_(()=>a.mode===`multiple`),x=_(()=>p()&&!!a.allowCustomValue),S=_(()=>typeof a.showSearch==`boolean`?a.showSearch:typeof a.showSearch==`object`?!0:p()),C=_(()=>{let e={autoClearSearchValue:!0,filterOption:!0,optionFilterProp:`value`};return typeof a.showSearch==`object`?{...e,...a.showSearch}:e}),[T,D]=v(E(a.defaultValue)),[Ae,O]=v(a.defaultOpen??!1),[je,k]=v(``),[A,j]=v(-1),M=_(()=>a.value===void 0?T():E(a.value)),N=_(()=>a.open===void 0?Ae():a.open),Me=_(()=>{let e=C();if(e.searchValue!==void 0)return e.searchValue}),P=_(()=>Me()??je()),Ne,Pe,F,[I,L]=v(null),Fe=_(()=>Oe(a.options,d())),R=_(()=>{let e=Fe();if(!x())return e;let t=new Set(e.map(e=>e.value)),n=[];for(let e of M())t.has(e)||n.push({label:String(e),value:e,disabled:!1,class:void 0,title:void 0,groupLabel:void 0,raw:{label:String(e),value:e}});return[...e,...n]}),z=_(()=>{let e=new Map;for(let t of R())e.set(t.value,t);return e}),B=_(()=>{let e=R(),t=P();if(!t||!S())return e;let n=C();if(n.filterOption===!1)return e;let r;if(typeof n.filterOption==`function`)r=e.filter(e=>n.filterOption(t,e.raw));else{let i=Array.isArray(n.optionFilterProp)?n.optionFilterProp:[n.optionFilterProp??`value`],a=t.toLowerCase();r=e.filter(e=>i.some(t=>{let n=w(e.raw,t)??(t===`label`?e.label:e.value);return String(n??``).toLowerCase().includes(a)}))}if(n.filterSort){let e=n.filterSort;r.sort((n,r)=>e(n.raw,r.raw,{searchValue:t}))}return r}),Ie=_(()=>P()&&S()?[{groupLabel:void 0,items:B()}]:ke(R())),V=_(()=>{let e=Ie(),t=[],n=0;for(let r of e){r.groupLabel!==void 0&&t.push({type:`group`,groupLabel:r.groupLabel});for(let e of r.items)t.push({type:`option`,option:e,flatIdx:n}),n++}return t}),H=te({get count(){return V().length},getScrollElement:()=>I(),estimateSize:e=>V()[e]?.type===`group`?28:32,overscan:2}),Le=_(()=>new Set(M())),U=e=>Le().has(e),W=_(()=>{if(!p())return!1;let e=a.maxCount;return e===void 0?!1:M().length>=e}),G=0,K=()=>{a.disabled||(G=performance.now()+150,a.open===void 0&&O(!0),a.onOpenChange?.(!0))},q=()=>{a.open===void 0&&O(!1),L(null),a.onOpenChange?.(!1),S()&&(k(``),C().onSearch?.(``))},Re=()=>{N()?q():K()},J=e=>{let t=z();if(p())return a.labelInValue?e.map(e=>({value:e,label:t.get(e)?.label??String(e)})):e;let n=e[0];if(n!==void 0)return a.labelInValue?{value:n,label:t.get(n)?.label??String(n)}:n},Y=e=>{let t=z();if(p())return e.map(e=>t.get(e)?.raw??{value:e,label:String(e)});let n=e[0];return t.get(n)?.raw??{value:n,label:String(n)}},X=e=>{let t=z().get(e),n=t?.raw??{value:e,label:String(e)};if(p()){let r=M(),i;if(r.includes(e)){i=r.filter(t=>t!==e);let n=a.labelInValue?{value:e,label:t?.label??String(e)}:e;a.onDeselect?.(n)}else{if(W())return;i=[...r,e];let o=a.labelInValue?{value:e,label:t?.label??String(e)}:e;a.onSelect?.(o,n)}a.value===void 0&&D(i),a.onChange?.(J(i),Y(i)),C().autoClearSearchValue!==!1&&(k(``),C().onSearch?.(``))}else{let r=[e],i=a.labelInValue?{value:e,label:t?.label??String(e)}:e;a.onSelect?.(i,n),a.value===void 0&&D(r),a.onChange?.(J(r),Y(r)),q(),k(``)}},ze=e=>{e.stopPropagation(),e.preventDefault(),a.value===void 0&&D([]),a.onClear?.(),a.onChange?.(p()?[]:void 0,p()?[]:void 0),k(``)},Z=(e,t)=>{t?.stopPropagation(),t?.preventDefault();let n=M().filter(t=>t!==e),r=z().get(e),i=a.labelInValue?{value:e,label:r?.label??String(e)}:e;a.onDeselect?.(i),a.value===void 0&&D(n),a.onChange?.(J(n),Y(n))},Be=e=>{if(a.disabled)return;a.onInputKeyDown?.(e);let t=B();switch(e.key){case`ArrowDown`:{if(e.preventDefault(),!N()){K();return}let n=A()+1;for(;n<t.length;){let e=t[n];if(!e.disabled&&(!W()||U(e.value)))break;n++}if(n<t.length){j(n);let e=a.labelInValue?{value:t[n].value,label:t[n].label}:t[n].value;a.onActive?.(e),Ve(n)}break}case`ArrowUp`:{if(e.preventDefault(),!N()){K();return}let n=A()===-1?t.length-1:A()-1;for(;n>=0;){let e=t[n];if(!e.disabled&&(!W()||U(e.value)))break;n--}if(n>=0){j(n);let e=a.labelInValue?{value:t[n].value,label:t[n].label}:t[n].value;a.onActive?.(e),Ve(n)}break}case`Enter`:case` `:{if(e.preventDefault(),!N()){K();return}if(e.key===` `&&S())break;let n=A();if(n>=0&&n<t.length){let e=t[n];e.disabled||X(e.value)}else x()&&P().trim()&&X(P().trim());break}case`Escape`:e.preventDefault(),q(),F?.focus();break;case`Backspace`:if(p()&&P()===``){let e=M();e.length>0&&Z(e[e.length-1])}break;case`Tab`:q();break}},Ve=e=>{if(a.virtual){let t=V().findIndex(t=>t.type===`option`&&t.flatIdx===e);t>=0&&H.scrollToIndex(t,{align:`auto`});return}let t=I();if(!t)return;let n=t.querySelectorAll(`[data-option-index]`)[e];n&&n.scrollIntoView({block:`nearest`})},He=()=>{let e=M();if(e.length===0)return;let t=e[0],n=B().findIndex(e=>e.value===t);if(!(n<0))if(a.virtual){let e=V().findIndex(e=>e.type===`option`&&e.flatIdx===n);e>=0&&H.scrollToIndex(e,{align:`start`})}else{let e=I();if(!e)return;let t=e.querySelector(`[data-option-index="${n}"]`);t&&t.scrollIntoView({block:`nearest`})}},Ue=e=>{let t=e.target.value;Me()===void 0&&k(t),C().onSearch?.(t),N()||K()},We=e=>{if(e.target===F){let e=window.scrollX,t=window.scrollY,n=()=>requestAnimationFrame(()=>requestAnimationFrame(()=>window.scrollTo(e,t)));window.addEventListener(`scroll`,n,{once:!0,passive:!1}),setTimeout(()=>window.removeEventListener(`scroll`,n),200)}a.onFocus?.(e)},Ge=e=>{let t=e.relatedTarget;t&&Pe?.contains(t)||t?.closest(`.nd-content`)||performance.now()<G||(a.onBlur?.(e),q())},Ke=_(()=>{if(p())return null;let e=M();if(e.length===0)return null;let t=e[0],n=z().get(t);return a.labelRender?a.labelRender({value:t,label:n?.label??String(t),key:String(t)}):n?.label??String(t)}),Q=_(()=>{if(!p())return{visible:[],omitted:[]};let e=M(),t=z(),n=a.maxTagCount,r=a.maxTagTextLength,i=e.map(e=>{let n=t.get(e)?.label??String(e);return r&&typeof n==`string`&&n.length>r&&(n=n.slice(0,r)+`...`),{value:e,label:n,closable:!a.disabled}});return typeof n==`number`&&i.length>n?{visible:i.slice(0,n),omitted:i.slice(n)}:{visible:i,omitted:[]}}),qe=_(()=>!a.allowClear||a.disabled?!1:M().length>0),Je=e=>{a.disabled||a.loading||(e.preventDefault(),Re())},Ye=e=>{let t=e;for(;t;){let e=t.dataset?.optionIndex;if(e!==void 0)return Number(e);if(t.classList?.contains(`sel30`))return null;t=t.parentElement}return null},Xe=e=>{let t=Ye(e.target);if(t===null)return;let n=B()[t];!n||n.disabled||W()&&!U(n.value)||(p()&&(G=performance.now()+150),X(n.value))},Ze=(t,n)=>{let u=()=>U(t.value),d=()=>A()===n,f=()=>t.disabled||W()&&!u(),p={label:t.label,value:t.value,disabled:t.disabled,key:t.value,groupLabel:t.groupLabel},m=a.optionRender?a.optionRender(p,{index:n}):t.label;return(()=>{var p=oe(),g=p.firstChild;return l(p,`data-option-index`,n),s(g,m),s(p,i(h,{get when(){return u()},get children(){var e=ae();return s(e,(()=>{var e=c(()=>!!a.menuItemSelectedIcon);return()=>e()?a.menuItemSelectedIcon:i(ne,{size:14,color:`var(--color)`,"stroke-width":3})})()),e}}),null),o(n=>{var i=e(`sel31`,u()&&`sel33`,d()&&`sel32`,f()&&`sel34`,t.groupLabel!==void 0&&`sel38`,t.class),a=t.title;return i!==n.e&&r(p,n.e=i),a!==n.t&&l(p,`title`,n.t=a),n},{e:void 0,t:void 0}),p})()},$=()=>{let n=V();return n.length===0?(()=>{var e=se();return s(e,()=>a.notFoundContent),e})():a.virtual?(()=>{var d=ce(),p=d.firstChild;return d.$$click=Xe,f(e=>{requestAnimationFrame(()=>L(e))},d),s(p,i(m,{get each(){return H.getVirtualItems()},children:e=>{let t=n[e.index];return(()=>{var n=le();return s(n,(()=>{var e=c(()=>t.type===`group`);return()=>e()?(()=>{var e=ue();return s(e,()=>t.groupLabel),e})():Ze(t.option,t.flatIdx)})()),o(t=>{var r=e.index,i=`translateY(${e.start}px)`;return r!==t.e&&l(n,`data-index`,t.e=r),i!==t.t&&u(n,`transform`,t.t=i),t},{e:void 0,t:void 0}),n})()}})),o(n=>{var i=e(`sel30`,t(a.color)),o=`${a.listHeight}px`,s=`${H.getTotalSize()}px`;return i!==n.e&&r(d,n.e=i),o!==n.t&&u(d,`max-height`,n.t=o),s!==n.a&&u(p,`height`,n.a=s),n},{e:void 0,t:void 0,a:void 0}),d})():(()=>{var e=de();return e.$$click=Xe,f(e=>L(e),e),s(e,i(m,{each:n,children:e=>e.type===`group`?(()=>{var t=ue();return s(t,()=>e.groupLabel),t})():Ze(e.option,e.flatIdx)})),o(t=>u(e,`max-height`,`${a.listHeight}px`)),e})()},Qe=e=>i(Te,{tag:e,get removeIcon(){return a.removeIcon},get tagRender(){return a.tagRender},onRemove:Z});return g(y(N,e=>{if(e&&a.defaultActiveFirstOption){let e=B().findIndex(e=>!e.disabled&&(!W()||U(e.value)));j(e>=0?e:-1)}e||j(-1)})),g(y(()=>P(),()=>{if(N()&&a.defaultActiveFirstOption){let e=B().findIndex(e=>!e.disabled&&(!W()||U(e.value)));j(e>=0?e:-1)}})),g(y(I,e=>{e&&N()&&requestAnimationFrame(()=>{a.virtual&&H.measure(),He()})})),g(y(()=>N(),e=>{e&&S()&&queueMicrotask(()=>Ne?.focus({preventScroll:!0}))})),i(n,{ref:e=>Pe=e,get open(){return N()},get blockScroll(){return a.blockScroll},get position(){return a.placement===`top`?`top`:`bottom`},get class(){return{trigger:`${a.disabled?`pointer-events-none`:``} w-full`,content:e(`border-c3 bg-base-100 rounded-box menu p-0`,a.placement===`bottom`?`mt-1 shadow-md`:`shadow-md-top mb-1`,a.class?.dropdownContent)}},get triggerElement(){return(()=>{var n=be(),d=n.firstChild,g=d.nextSibling;return n.addEventListener(`blur`,Ge),n.addEventListener(`focus`,We),n.$$keydown=Be,n.$$click=Je,f(e=>F=e,n),s(n,i(h,{get when(){return a.prefix},get children(){var e=me();return s(e,()=>a.prefix),e}}),d),s(d,i(h,{get when(){return p()},get fallback(){return(()=>{var e=Se();return s(e,i(h,{get when(){return M().length>0},get fallback(){return(()=>{var e=ge();return s(e,()=>a.placeholder),o(t=>u(e,`visibility`,P()?`hidden`:void 0)),e})()},get children(){var e=xe();return s(e,Ke),o(t=>u(e,`visibility`,P()&&S()?`hidden`:void 0)),e}})),e})()},get children(){var e=_e();return s(e,i(m,{get each(){return Q().visible},children:e=>Qe(e)}),null),s(e,i(h,{get when(){return Q().omitted.length>0},get children(){return i(Ee,{get content(){return i(m,{get each(){return Q().omitted},children:e=>i(Te,{tag:e,get removeIcon(){return a.removeIcon},get tagRender(){return a.tagRender},onRemove:Z})})},get children(){var e=he();return s(e,()=>{let e=a.maxTagPlaceholder;return typeof e==`function`?e(Q().omitted.map(e=>({value:e.value,label:e.label}))):e||`+${Q().omitted.length} more...`}),e}})}}),null),s(e,i(h,{get when(){return M().length===0},get children(){var e=ge();return s(e,()=>a.placeholder),e}}),null),e}})),s(g,i(h,{get when(){return qe()},get children(){var e=ve();return e.$$click=ze,s(e,i(b,{class:`m-auto`,size:14})),e}}),null),s(g,i(h,{get when(){return!a.loading},get fallback(){return Ce()},get children(){var t=ye();return s(t,(()=>{var e=c(()=>!!a.suffixIcon);return()=>e()?a.suffixIcon:i(re,{size:16})})()),o(()=>r(t,e(`sel23`,N()&&`sel24`))),t}}),null),o(i=>{var o=e(we({size:a.size,variant:a.variant}),t(a.color),N()&&`sel41 sel02`,p()&&`sel40`,a.class?.root,a.disabled&&`sel03`),s=a.disabled?-1:0,c=N();return o!==i.e&&r(n,i.e=o),s!==i.t&&l(n,`tabindex`,i.t=s),c!==i.a&&l(n,`aria-expanded`,i.a=c),i},{e:void 0,t:void 0,a:void 0}),n})()},get children(){var e=pe();return e.$$mousedown=e=>{e.target?.tagName!==`INPUT`&&e.preventDefault()},s(e,i(h,{get when(){return S()},get children(){var e=fe(),t=e.firstChild;return s(e,i(ie,{size:14}),t),t.addEventListener(`blur`,Ge),t.addEventListener(`focus`,We),t.$$keydown=Be,t.$$input=Ue,f(e=>Ne=e,t),o(e=>{var n=a.disabled,r=N();return n!==e.e&&(t.disabled=e.e=n),r!==e.t&&l(t,`aria-expanded`,e.t=r),e},{e:void 0,t:void 0}),o(()=>t.value=P()),e}}),null),s(e,(()=>{var e=c(()=>!!a.popupRender);return()=>e()?a.popupRender($()):$()})(),null),o(()=>r(e,t(a.color))),e}})};a([`click`,`mousedown`,`input`,`keydown`]);export{D as Select};
2
+ //# sourceMappingURL=select.js.map