@customafk/lunas-ui 0.2.41 → 0.2.43

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 (1008) hide show
  1. package/dist/alert-2JBj0aPL.d.mts +88 -0
  2. package/dist/alert-B2PaDJp6.cjs +2 -0
  3. package/dist/alert-B2PaDJp6.cjs.map +1 -0
  4. package/dist/alert-BbvPwf2x.mjs +2 -0
  5. package/dist/alert-BbvPwf2x.mjs.map +1 -0
  6. package/dist/alert-Cm6RAKdp.d.cts +88 -0
  7. package/dist/avatar-TyOphzGo.cjs +2 -0
  8. package/dist/avatar-TyOphzGo.cjs.map +1 -0
  9. package/dist/avatar-fltdRVsJ.mjs +2 -0
  10. package/dist/avatar-fltdRVsJ.mjs.map +1 -0
  11. package/dist/badge-CDGBGq8X.mjs +2 -0
  12. package/dist/badge-CDGBGq8X.mjs.map +1 -0
  13. package/dist/badge-CnR78VnH.d.mts +42 -0
  14. package/dist/badge-KW7xu5Ca.cjs +2 -0
  15. package/dist/badge-KW7xu5Ca.cjs.map +1 -0
  16. package/dist/badge-ic9HOAa7.d.cts +42 -0
  17. package/dist/button--eH0xdF-.d.mts +174 -0
  18. package/dist/button-C--DAN1D.cjs +2 -0
  19. package/dist/button-C--DAN1D.cjs.map +1 -0
  20. package/dist/button-CCVJTHBI.mjs +2 -0
  21. package/dist/button-CCVJTHBI.mjs.map +1 -0
  22. package/dist/button-DserH5cQ.d.cts +174 -0
  23. package/dist/button.variants-4kw6plrv.cjs +2 -0
  24. package/dist/button.variants-4kw6plrv.cjs.map +1 -0
  25. package/dist/button.variants-DkMqWB8G.mjs +2 -0
  26. package/dist/button.variants-DkMqWB8G.mjs.map +1 -0
  27. package/dist/calendar-4weBDnXz.cjs +2 -0
  28. package/dist/calendar-4weBDnXz.cjs.map +1 -0
  29. package/dist/calendar-R866yyd1.mjs +2 -0
  30. package/dist/calendar-R866yyd1.mjs.map +1 -0
  31. package/dist/cards/grid-product-card.cjs +1 -1
  32. package/dist/cards/grid-product-card.cjs.map +1 -1
  33. package/dist/cards/grid-product-card.d.mts +37 -0
  34. package/dist/cards/grid-product-card.mjs +2 -0
  35. package/dist/cards/grid-product-card.mjs.map +1 -0
  36. package/dist/cards/product-card.cjs +1 -1
  37. package/dist/cards/product-card.cjs.map +1 -1
  38. package/dist/cards/product-card.d.mts +37 -0
  39. package/dist/cards/product-card.mjs +2 -0
  40. package/dist/cards/product-card.mjs.map +1 -0
  41. package/dist/cards/simple-card.cjs +1 -1
  42. package/dist/cards/simple-card.d.mts +35 -0
  43. package/dist/cards/simple-card.mjs +2 -0
  44. package/dist/cards/simple-card.mjs.map +1 -0
  45. package/dist/checkbox-Cat3i08X.mjs +2 -0
  46. package/dist/checkbox-Cat3i08X.mjs.map +1 -0
  47. package/dist/checkbox-Dsq-MSbH.cjs +2 -0
  48. package/dist/checkbox-Dsq-MSbH.cjs.map +1 -0
  49. package/dist/chunk-350yNsax.cjs +1 -0
  50. package/dist/close-Dlo1bI8x.cjs +2 -0
  51. package/dist/close-Dlo1bI8x.cjs.map +1 -0
  52. package/dist/close-_UHFeiLS.mjs +2 -0
  53. package/dist/close-_UHFeiLS.mjs.map +1 -0
  54. package/dist/cms-layout-BCH4NroR.cjs +2 -0
  55. package/dist/cms-layout-BCH4NroR.cjs.map +1 -0
  56. package/dist/cms-layout-DkCR1AfG.mjs +2 -0
  57. package/dist/cms-layout-DkCR1AfG.mjs.map +1 -0
  58. package/dist/command-CsP8a1Un.cjs +2 -0
  59. package/dist/command-CsP8a1Un.cjs.map +1 -0
  60. package/dist/command-D6_CSbwJ.mjs +2 -0
  61. package/dist/command-D6_CSbwJ.mjs.map +1 -0
  62. package/dist/data-display/country.cjs +1 -1
  63. package/dist/data-display/country.cjs.map +1 -1
  64. package/dist/data-display/country.d.cts +1 -1
  65. package/dist/data-display/country.d.mts +22 -0
  66. package/dist/data-display/country.mjs +2 -0
  67. package/dist/data-display/country.mjs.map +1 -0
  68. package/dist/data-display/data-list.cjs +1 -1
  69. package/dist/data-display/data-list.d.mts +43 -0
  70. package/dist/data-display/data-list.mjs +2 -0
  71. package/dist/data-display/data-list.mjs.map +1 -0
  72. package/dist/data-display/date-tooltip.cjs +1 -1
  73. package/dist/data-display/date-tooltip.cjs.map +1 -1
  74. package/dist/data-display/date-tooltip.d.mts +19 -0
  75. package/dist/data-display/date-tooltip.mjs +2 -0
  76. package/dist/data-display/date-tooltip.mjs.map +1 -0
  77. package/dist/data-display/date.cjs +1 -2
  78. package/dist/data-display/date.d.mts +39 -0
  79. package/dist/data-display/date.mjs +1 -0
  80. package/dist/data-display/empty.cjs +1 -1
  81. package/dist/data-display/empty.d.mts +21 -0
  82. package/dist/data-display/empty.mjs +2 -0
  83. package/dist/data-display/empty.mjs.map +1 -0
  84. package/dist/data-display/name.cjs +1 -1
  85. package/dist/data-display/name.cjs.map +1 -1
  86. package/dist/data-display/name.d.mts +19 -0
  87. package/dist/data-display/name.mjs +2 -0
  88. package/dist/data-display/name.mjs.map +1 -0
  89. package/dist/data-display/phone-number.cjs +1 -1
  90. package/dist/data-display/phone-number.cjs.map +1 -1
  91. package/dist/data-display/phone-number.d.mts +19 -0
  92. package/dist/data-display/phone-number.mjs +2 -0
  93. package/dist/data-display/phone-number.mjs.map +1 -0
  94. package/dist/data-display/role-badge.cjs +1 -1
  95. package/dist/data-display/role-badge.cjs.map +1 -1
  96. package/dist/data-display/role-badge.d.cts +1 -1
  97. package/dist/data-display/role-badge.d.mts +22 -0
  98. package/dist/data-display/role-badge.mjs +2 -0
  99. package/dist/data-display/role-badge.mjs.map +1 -0
  100. package/dist/data-display/statistic.cjs +1 -2
  101. package/dist/data-display/statistic.d.cts +3 -3
  102. package/dist/data-display/statistic.d.mts +57 -0
  103. package/dist/data-display/statistic.mjs +1 -0
  104. package/dist/data-display/user.cjs +1 -2
  105. package/dist/data-display/user.d.mts +23 -0
  106. package/dist/data-display/user.mjs +1 -0
  107. package/dist/date-D4NVl6C9.cjs +2 -0
  108. package/dist/date-D4NVl6C9.cjs.map +1 -0
  109. package/dist/date-fY3sUcLp.mjs +2 -0
  110. package/dist/date-fY3sUcLp.mjs.map +1 -0
  111. package/dist/dialog-BigPrWIj.cjs +2 -0
  112. package/dist/dialog-BigPrWIj.cjs.map +1 -0
  113. package/dist/dialog-CLDnvNH_.mjs +2 -0
  114. package/dist/dialog-CLDnvNH_.mjs.map +1 -0
  115. package/dist/dialog-CYHT9WNs.d.cts +90 -0
  116. package/dist/dialog-pWSVE0gd.d.mts +90 -0
  117. package/dist/dialogs/confirm-dialog.cjs +1 -1
  118. package/dist/dialogs/confirm-dialog.d.mts +142 -0
  119. package/dist/dialogs/confirm-dialog.mjs +2 -0
  120. package/dist/dialogs/confirm-dialog.mjs.map +1 -0
  121. package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
  122. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +26 -26
  123. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +209 -0
  124. package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -0
  125. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  126. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  127. package/dist/dialogs/detail-dialog/index.d.mts +45 -0
  128. package/dist/dialogs/detail-dialog/index.mjs +2 -0
  129. package/dist/dialogs/detail-dialog/index.mjs.map +1 -0
  130. package/dist/dialogs/error-dialog.cjs +1 -1
  131. package/dist/dialogs/error-dialog.d.mts +25 -0
  132. package/dist/dialogs/error-dialog.mjs +2 -0
  133. package/dist/dialogs/error-dialog.mjs.map +1 -0
  134. package/dist/dialogs/loading-dialog.cjs +1 -1
  135. package/dist/dialogs/loading-dialog.cjs.map +1 -1
  136. package/dist/dialogs/loading-dialog.d.mts +21 -0
  137. package/dist/dialogs/loading-dialog.mjs +2 -0
  138. package/dist/dialogs/loading-dialog.mjs.map +1 -0
  139. package/dist/dist-Cx5ufCdr.cjs +2 -0
  140. package/dist/dist-Cx5ufCdr.cjs.map +1 -0
  141. package/dist/dist-DVrfqn8H.mjs +2 -0
  142. package/dist/dist-DVrfqn8H.mjs.map +1 -0
  143. package/dist/drawer-BB8BZzDG.cjs +2 -0
  144. package/dist/drawer-BB8BZzDG.cjs.map +1 -0
  145. package/dist/drawer-CMD7JWH8.mjs +2 -0
  146. package/dist/drawer-CMD7JWH8.mjs.map +1 -0
  147. package/dist/dropdown-menu-BWhiVsEf.mjs +2 -0
  148. package/dist/dropdown-menu-BWhiVsEf.mjs.map +1 -0
  149. package/dist/dropdown-menu-CVh520yG.cjs +2 -0
  150. package/dist/dropdown-menu-CVh520yG.cjs.map +1 -0
  151. package/dist/features/descriptions/index.cjs +1 -1
  152. package/dist/features/descriptions/index.cjs.map +1 -1
  153. package/dist/features/descriptions/index.d.cts +3 -3
  154. package/dist/features/descriptions/index.d.mts +246 -0
  155. package/dist/features/descriptions/index.mjs +2 -0
  156. package/dist/features/descriptions/index.mjs.map +1 -0
  157. package/dist/features/search-modal/index.cjs +1 -1
  158. package/dist/features/search-modal/index.d.cts +2 -2
  159. package/dist/features/search-modal/index.d.mts +17 -0
  160. package/dist/features/search-modal/index.mjs +1 -0
  161. package/dist/features/tables/index.cjs +1 -1
  162. package/dist/features/tables/index.d.cts +1 -1
  163. package/dist/features/tables/index.d.mts +3 -0
  164. package/dist/features/tables/index.mjs +1 -0
  165. package/dist/features/tanstack-form/index.cjs +1 -1
  166. package/dist/features/tanstack-form/index.d.cts +1 -1
  167. package/dist/features/tanstack-form/index.d.mts +2 -0
  168. package/dist/features/tanstack-form/index.mjs +1 -0
  169. package/dist/features/text-editor/index.cjs +1 -1
  170. package/dist/features/text-editor/index.d.cts +1 -1
  171. package/dist/features/text-editor/index.d.mts +2 -0
  172. package/dist/features/text-editor/index.mjs +1 -0
  173. package/dist/field-BrlETeXX.cjs +2 -0
  174. package/dist/field-BrlETeXX.cjs.map +1 -0
  175. package/dist/field-dYemS0hQ.mjs +2 -0
  176. package/dist/field-dYemS0hQ.mjs.map +1 -0
  177. package/dist/flex-B6YSJzGe.mjs +2 -0
  178. package/dist/flex-B6YSJzGe.mjs.map +1 -0
  179. package/dist/flex-DmWmOBn5.cjs +2 -0
  180. package/dist/flex-DmWmOBn5.cjs.map +1 -0
  181. package/dist/heading-De4Pn3mZ.mjs +2 -0
  182. package/dist/heading-De4Pn3mZ.mjs.map +1 -0
  183. package/dist/heading-tGTqk3pA.cjs +2 -0
  184. package/dist/heading-tGTqk3pA.cjs.map +1 -0
  185. package/dist/image-D7OZ13Ib.mjs +2 -0
  186. package/dist/image-D7OZ13Ib.mjs.map +1 -0
  187. package/dist/image-W_Yb0xTB.cjs +2 -0
  188. package/dist/image-W_Yb0xTB.cjs.map +1 -0
  189. package/dist/index-BsWsCPh8.d.cts +1093 -0
  190. package/dist/index-CMqwTAAq.d.mts +2348 -0
  191. package/dist/index-Cm62M0Ft.d.mts +90 -0
  192. package/dist/index-DSciiDhn.d.cts +2348 -0
  193. package/dist/index-DXU6DwLg.d.mts +1093 -0
  194. package/dist/index-DiW-62hY.d.mts +85 -0
  195. package/dist/index-FIl1Am8j.d.cts +85 -0
  196. package/dist/index-KO98y6L0.d.cts +90 -0
  197. package/dist/index.cjs +1 -1
  198. package/dist/index.d.cts +11 -11
  199. package/dist/index.d.mts +93 -0
  200. package/dist/index.mjs +1 -0
  201. package/dist/input-B_ucx08i.d.cts +44 -0
  202. package/dist/input-Drm_rLe2.d.mts +44 -0
  203. package/dist/input-NJP2wQOm.mjs +2 -0
  204. package/dist/input-NJP2wQOm.mjs.map +1 -0
  205. package/dist/input-WJ0DLHTR.cjs +2 -0
  206. package/dist/input-WJ0DLHTR.cjs.map +1 -0
  207. package/dist/label-CC6fXVbC.cjs +2 -0
  208. package/dist/label-CC6fXVbC.cjs.map +1 -0
  209. package/dist/label-CUCpwS5D.mjs +2 -0
  210. package/dist/label-CUCpwS5D.mjs.map +1 -0
  211. package/dist/layouts/cms-layout/index.cjs +1 -1
  212. package/dist/layouts/cms-layout/index.d.cts +1 -1
  213. package/dist/layouts/cms-layout/index.d.mts +2 -0
  214. package/dist/layouts/cms-layout/index.mjs +1 -0
  215. package/dist/layouts/flex.cjs +1 -1
  216. package/dist/layouts/flex.d.cts +5 -5
  217. package/dist/layouts/flex.d.mts +117 -0
  218. package/dist/layouts/flex.mjs +1 -0
  219. package/dist/layouts/grid.cjs +1 -1
  220. package/dist/layouts/grid.d.mts +19 -0
  221. package/dist/layouts/grid.mjs +2 -0
  222. package/dist/layouts/grid.mjs.map +1 -0
  223. package/dist/layouts/payment-layout/index.cjs +1 -1
  224. package/dist/layouts/payment-layout/index.d.mts +74 -0
  225. package/dist/layouts/payment-layout/index.mjs +1 -0
  226. package/dist/pages/FeatureDeveloping.cjs +1 -1
  227. package/dist/pages/FeatureDeveloping.cjs.map +1 -1
  228. package/dist/pages/FeatureDeveloping.d.cts +2 -2
  229. package/dist/pages/FeatureDeveloping.d.mts +43 -0
  230. package/dist/pages/FeatureDeveloping.mjs +2 -0
  231. package/dist/pages/FeatureDeveloping.mjs.map +1 -0
  232. package/dist/pages/FeatureFixing.cjs +1 -1
  233. package/dist/pages/FeatureFixing.cjs.map +1 -1
  234. package/dist/pages/FeatureFixing.d.cts +2 -2
  235. package/dist/pages/FeatureFixing.d.mts +43 -0
  236. package/dist/pages/FeatureFixing.mjs +2 -0
  237. package/dist/pages/FeatureFixing.mjs.map +1 -0
  238. package/dist/pages/LoginPage.cjs +1 -1
  239. package/dist/pages/LoginPage.cjs.map +1 -1
  240. package/dist/pages/LoginPage.d.cts +2 -2
  241. package/dist/pages/LoginPage.d.mts +55 -0
  242. package/dist/pages/LoginPage.mjs +2 -0
  243. package/dist/pages/LoginPage.mjs.map +1 -0
  244. package/dist/pages/NotAuthorized.cjs +1 -1
  245. package/dist/pages/NotAuthorized.cjs.map +1 -1
  246. package/dist/pages/NotAuthorized.d.cts +2 -2
  247. package/dist/pages/NotAuthorized.d.mts +43 -0
  248. package/dist/pages/NotAuthorized.mjs +2 -0
  249. package/dist/pages/NotAuthorized.mjs.map +1 -0
  250. package/dist/pages/NotFound.cjs +1 -1
  251. package/dist/pages/NotFound.cjs.map +1 -1
  252. package/dist/pages/NotFound.d.cts +2 -2
  253. package/dist/pages/NotFound.d.mts +43 -0
  254. package/dist/pages/NotFound.mjs +2 -0
  255. package/dist/pages/NotFound.mjs.map +1 -0
  256. package/dist/pages/RegisterPage.cjs +1 -1
  257. package/dist/pages/RegisterPage.cjs.map +1 -1
  258. package/dist/pages/RegisterPage.d.cts +2 -2
  259. package/dist/pages/RegisterPage.d.mts +52 -0
  260. package/dist/pages/RegisterPage.mjs +2 -0
  261. package/dist/pages/RegisterPage.mjs.map +1 -0
  262. package/dist/pages/VerifyEmailPage.cjs +1 -1
  263. package/dist/pages/VerifyEmailPage.cjs.map +1 -1
  264. package/dist/pages/VerifyEmailPage.d.cts +2 -2
  265. package/dist/pages/VerifyEmailPage.d.mts +64 -0
  266. package/dist/pages/VerifyEmailPage.mjs +2 -0
  267. package/dist/pages/VerifyEmailPage.mjs.map +1 -0
  268. package/dist/paragraph-DYLaQtTV.mjs +2 -0
  269. package/dist/paragraph-DYLaQtTV.mjs.map +1 -0
  270. package/dist/paragraph-DvTZvbzw.cjs +2 -0
  271. package/dist/paragraph-DvTZvbzw.cjs.map +1 -0
  272. package/dist/payment-layout-DrQ0kZPX.mjs +2 -0
  273. package/dist/payment-layout-DrQ0kZPX.mjs.map +1 -0
  274. package/dist/payment-layout-DyILfyVG.cjs +2 -0
  275. package/dist/payment-layout-DyILfyVG.cjs.map +1 -0
  276. package/dist/popover-C8rcemA3.mjs +2 -0
  277. package/dist/popover-C8rcemA3.mjs.map +1 -0
  278. package/dist/popover-DBsC8Ltp.cjs +2 -0
  279. package/dist/popover-DBsC8Ltp.cjs.map +1 -0
  280. package/dist/progress-CLeM0e7Z.mjs +2 -0
  281. package/dist/progress-CLeM0e7Z.mjs.map +1 -0
  282. package/dist/progress-gvBqNiHp.cjs +2 -0
  283. package/dist/progress-gvBqNiHp.cjs.map +1 -0
  284. package/dist/radio-group-Y9bhdr55.mjs +2 -0
  285. package/dist/radio-group-Y9bhdr55.mjs.map +1 -0
  286. package/dist/radio-group-_TdMkv8w.cjs +2 -0
  287. package/dist/radio-group-_TdMkv8w.cjs.map +1 -0
  288. package/dist/resizable-CpCaSCFB.mjs +2 -0
  289. package/dist/resizable-CpCaSCFB.mjs.map +1 -0
  290. package/dist/resizable-sgpaHAb8.cjs +2 -0
  291. package/dist/resizable-sgpaHAb8.cjs.map +1 -0
  292. package/dist/search-modal-B-pzGcfP.cjs +2 -0
  293. package/dist/search-modal-B-pzGcfP.cjs.map +1 -0
  294. package/dist/search-modal-Bn-GOOCy.mjs +2 -0
  295. package/dist/search-modal-Bn-GOOCy.mjs.map +1 -0
  296. package/dist/select-CWLQHh8x.cjs +2 -0
  297. package/dist/select-CWLQHh8x.cjs.map +1 -0
  298. package/dist/select-LlPCZFSF.mjs +2 -0
  299. package/dist/select-LlPCZFSF.mjs.map +1 -0
  300. package/dist/separator-D3Gmkxzq.mjs +2 -0
  301. package/dist/separator-D3Gmkxzq.mjs.map +1 -0
  302. package/dist/separator-KuymG9g0.cjs +2 -0
  303. package/dist/separator-KuymG9g0.cjs.map +1 -0
  304. package/dist/sheet-BFlIfNaA.mjs +2 -0
  305. package/dist/sheet-BFlIfNaA.mjs.map +1 -0
  306. package/dist/sheet-CvKSi0UC.cjs +2 -0
  307. package/dist/sheet-CvKSi0UC.cjs.map +1 -0
  308. package/dist/sidebar-ChtCyu-n.mjs +2 -0
  309. package/dist/sidebar-ChtCyu-n.mjs.map +1 -0
  310. package/dist/sidebar-D5J2gcTw.cjs +2 -0
  311. package/dist/sidebar-D5J2gcTw.cjs.map +1 -0
  312. package/dist/skeleton-C51IdOfK.mjs +2 -0
  313. package/dist/skeleton-C51IdOfK.mjs.map +1 -0
  314. package/dist/skeleton-CX1USu1w.cjs +2 -0
  315. package/dist/skeleton-CX1USu1w.cjs.map +1 -0
  316. package/dist/spinner-CFxorYEt.cjs +2 -0
  317. package/dist/spinner-CFxorYEt.cjs.map +1 -0
  318. package/dist/spinner-eClTgHjk.mjs +2 -0
  319. package/dist/spinner-eClTgHjk.mjs.map +1 -0
  320. package/dist/statistic-DDXilD7q.cjs +2 -0
  321. package/dist/statistic-DDXilD7q.cjs.map +1 -0
  322. package/dist/statistic-cwLwcukn.mjs +2 -0
  323. package/dist/statistic-cwLwcukn.mjs.map +1 -0
  324. package/dist/switch-BP7EPatj.mjs +2 -0
  325. package/dist/switch-BP7EPatj.mjs.map +1 -0
  326. package/dist/switch-DVfOV7wP.cjs +2 -0
  327. package/dist/switch-DVfOV7wP.cjs.map +1 -0
  328. package/dist/systems/google.cjs +1 -1
  329. package/dist/systems/google.d.mts +53 -0
  330. package/dist/systems/google.mjs +2 -0
  331. package/dist/systems/google.mjs.map +1 -0
  332. package/dist/tables-CFrsk2lM.mjs +4 -0
  333. package/dist/tables-CFrsk2lM.mjs.map +1 -0
  334. package/dist/tables-CPKHe3k-.cjs +4 -0
  335. package/dist/tables-CPKHe3k-.cjs.map +1 -0
  336. package/dist/tanstack-form-DT1TqIDl.mjs +12 -0
  337. package/dist/tanstack-form-DT1TqIDl.mjs.map +1 -0
  338. package/dist/tanstack-form-DatI41wz.cjs +12 -0
  339. package/dist/tanstack-form-DatI41wz.cjs.map +1 -0
  340. package/dist/text-editor-5mA7XyaI.mjs +2 -0
  341. package/dist/text-editor-5mA7XyaI.mjs.map +1 -0
  342. package/dist/text-editor-CvJN3nSL.cjs +2 -0
  343. package/dist/text-editor-CvJN3nSL.cjs.map +1 -0
  344. package/dist/textarea-7HDXcaK9.mjs +2 -0
  345. package/dist/textarea-7HDXcaK9.mjs.map +1 -0
  346. package/dist/textarea-Cc9CF8wD.cjs +2 -0
  347. package/dist/textarea-Cc9CF8wD.cjs.map +1 -0
  348. package/dist/tooltip-CBdoIzoM.cjs +2 -0
  349. package/dist/tooltip-CBdoIzoM.cjs.map +1 -0
  350. package/dist/tooltip-Dxl5Wa8i.mjs +2 -0
  351. package/dist/tooltip-Dxl5Wa8i.mjs.map +1 -0
  352. package/dist/types-B5nyTWtO.mjs +2 -0
  353. package/dist/types-B5nyTWtO.mjs.map +1 -0
  354. package/dist/types-BD1t0Bj8.cjs +2 -0
  355. package/dist/types-BD1t0Bj8.cjs.map +1 -0
  356. package/dist/types-Cc_mLRAn.d.cts +24 -0
  357. package/dist/types-YLu40dXY.d.mts +24 -0
  358. package/dist/typography/paragraph.cjs +1 -1
  359. package/dist/typography/paragraph.d.cts +4 -4
  360. package/dist/typography/paragraph.d.mts +48 -0
  361. package/dist/typography/paragraph.mjs +1 -0
  362. package/dist/typography/title.cjs +1 -1
  363. package/dist/typography/title.d.mts +43 -0
  364. package/dist/typography/title.mjs +2 -0
  365. package/dist/typography/title.mjs.map +1 -0
  366. package/dist/ui/alert-dialog.cjs +1 -1
  367. package/dist/ui/alert-dialog.d.cts +12 -12
  368. package/dist/ui/alert-dialog.d.mts +90 -0
  369. package/dist/ui/alert-dialog.mjs +2 -0
  370. package/dist/ui/alert-dialog.mjs.map +1 -0
  371. package/dist/ui/alert.cjs +1 -1
  372. package/dist/ui/alert.d.cts +1 -1
  373. package/dist/ui/alert.d.mts +2 -0
  374. package/dist/ui/alert.mjs +1 -0
  375. package/dist/ui/aspect-ratio.cjs +1 -1
  376. package/dist/ui/aspect-ratio.d.cts +2 -2
  377. package/dist/ui/aspect-ratio.d.mts +24 -0
  378. package/dist/ui/aspect-ratio.mjs +2 -0
  379. package/dist/ui/aspect-ratio.mjs.map +1 -0
  380. package/dist/ui/avatar.cjs +1 -2
  381. package/dist/ui/avatar.d.cts +4 -4
  382. package/dist/ui/avatar.d.mts +35 -0
  383. package/dist/ui/avatar.mjs +1 -0
  384. package/dist/ui/badge.cjs +1 -2
  385. package/dist/ui/badge.d.cts +2 -42
  386. package/dist/ui/badge.d.mts +2 -0
  387. package/dist/ui/badge.mjs +1 -0
  388. package/dist/ui/breadcrumb.cjs +1 -1
  389. package/dist/ui/breadcrumb.cjs.map +1 -1
  390. package/dist/ui/breadcrumb.d.cts +8 -8
  391. package/dist/ui/breadcrumb.d.mts +72 -0
  392. package/dist/ui/breadcrumb.mjs +2 -0
  393. package/dist/ui/breadcrumb.mjs.map +1 -0
  394. package/dist/ui/button-group.cjs +1 -1
  395. package/dist/ui/button-group.cjs.map +1 -1
  396. package/dist/ui/button-group.d.cts +7 -7
  397. package/dist/ui/button-group.d.mts +50 -0
  398. package/dist/ui/button-group.mjs +2 -0
  399. package/dist/ui/button-group.mjs.map +1 -0
  400. package/dist/ui/button.cjs +1 -2
  401. package/dist/ui/button.d.cts +1 -1
  402. package/dist/ui/button.d.mts +2 -0
  403. package/dist/ui/button.mjs +1 -0
  404. package/dist/ui/buttons/add-new.cjs +1 -1
  405. package/dist/ui/buttons/add-new.cjs.map +1 -1
  406. package/dist/ui/buttons/add-new.d.mts +17 -0
  407. package/dist/ui/buttons/add-new.mjs +2 -0
  408. package/dist/ui/buttons/add-new.mjs.map +1 -0
  409. package/dist/ui/buttons/edit.cjs +1 -1
  410. package/dist/ui/buttons/edit.cjs.map +1 -1
  411. package/dist/ui/buttons/edit.d.mts +17 -0
  412. package/dist/ui/buttons/edit.mjs +2 -0
  413. package/dist/ui/buttons/edit.mjs.map +1 -0
  414. package/dist/ui/buttons/refresh.cjs +1 -1
  415. package/dist/ui/buttons/refresh.cjs.map +1 -1
  416. package/dist/ui/buttons/refresh.d.mts +17 -0
  417. package/dist/ui/buttons/refresh.mjs +2 -0
  418. package/dist/ui/buttons/refresh.mjs.map +1 -0
  419. package/dist/ui/buttons/trash.cjs +1 -1
  420. package/dist/ui/buttons/trash.cjs.map +1 -1
  421. package/dist/ui/buttons/trash.d.mts +17 -0
  422. package/dist/ui/buttons/trash.mjs +2 -0
  423. package/dist/ui/buttons/trash.mjs.map +1 -0
  424. package/dist/ui/buttons/upload-image.cjs +1 -1
  425. package/dist/ui/buttons/upload-image.cjs.map +1 -1
  426. package/dist/ui/buttons/upload-image.d.mts +24 -0
  427. package/dist/ui/buttons/upload-image.mjs +2 -0
  428. package/dist/ui/buttons/upload-image.mjs.map +1 -0
  429. package/dist/ui/calendar.cjs +1 -2
  430. package/dist/ui/calendar.d.cts +4 -4
  431. package/dist/ui/calendar.d.mts +45 -0
  432. package/dist/ui/calendar.mjs +1 -0
  433. package/dist/ui/card.cjs +1 -1
  434. package/dist/ui/card.d.cts +8 -8
  435. package/dist/ui/card.d.mts +63 -0
  436. package/dist/ui/card.mjs +2 -0
  437. package/dist/ui/card.mjs.map +1 -0
  438. package/dist/ui/carousel.cjs +1 -1
  439. package/dist/ui/carousel.cjs.map +1 -1
  440. package/dist/ui/carousel.d.cts +7 -7
  441. package/dist/ui/carousel.d.mts +71 -0
  442. package/dist/ui/carousel.mjs +2 -0
  443. package/dist/ui/carousel.mjs.map +1 -0
  444. package/dist/ui/checkbox.cjs +1 -2
  445. package/dist/ui/checkbox.d.cts +2 -2
  446. package/dist/ui/checkbox.d.mts +26 -0
  447. package/dist/ui/checkbox.mjs +1 -0
  448. package/dist/ui/collapsible.cjs +1 -1
  449. package/dist/ui/collapsible.d.cts +4 -4
  450. package/dist/ui/collapsible.d.mts +34 -0
  451. package/dist/ui/collapsible.mjs +2 -0
  452. package/dist/ui/collapsible.mjs.map +1 -0
  453. package/dist/ui/command.cjs +1 -2
  454. package/dist/ui/command.d.cts +11 -11
  455. package/dist/ui/command.d.mts +89 -0
  456. package/dist/ui/command.mjs +1 -0
  457. package/dist/ui/context-menu.cjs +1 -1
  458. package/dist/ui/context-menu.d.cts +16 -16
  459. package/dist/ui/context-menu.d.mts +125 -0
  460. package/dist/ui/context-menu.mjs +2 -0
  461. package/dist/ui/context-menu.mjs.map +1 -0
  462. package/dist/ui/dialog.cjs +1 -2
  463. package/dist/ui/dialog.d.cts +2 -90
  464. package/dist/ui/dialog.d.mts +2 -0
  465. package/dist/ui/dialog.mjs +1 -0
  466. package/dist/ui/drawer.cjs +1 -2
  467. package/dist/ui/drawer.d.cts +11 -11
  468. package/dist/ui/drawer.d.mts +72 -0
  469. package/dist/ui/drawer.mjs +1 -0
  470. package/dist/ui/dropdown-menu.cjs +1 -2
  471. package/dist/ui/dropdown-menu.d.cts +16 -16
  472. package/dist/ui/dropdown-menu.d.mts +127 -0
  473. package/dist/ui/dropdown-menu.mjs +1 -0
  474. package/dist/ui/empty.cjs +1 -1
  475. package/dist/ui/empty.d.cts +9 -9
  476. package/dist/ui/empty.d.mts +68 -0
  477. package/dist/ui/empty.mjs +2 -0
  478. package/dist/ui/empty.mjs.map +1 -0
  479. package/dist/ui/field.cjs +1 -1
  480. package/dist/ui/field.d.cts +22 -22
  481. package/dist/ui/field.d.mts +65 -0
  482. package/dist/ui/field.mjs +1 -0
  483. package/dist/ui/file-uploader.cjs +2 -2
  484. package/dist/ui/file-uploader.cjs.map +1 -1
  485. package/dist/ui/file-uploader.d.cts +2 -2
  486. package/dist/ui/file-uploader.d.mts +103 -0
  487. package/dist/ui/file-uploader.mjs +3 -0
  488. package/dist/ui/file-uploader.mjs.map +1 -0
  489. package/dist/ui/form.cjs +1 -1
  490. package/dist/ui/form.cjs.map +1 -1
  491. package/dist/ui/form.d.cts +10 -10
  492. package/dist/ui/form.d.mts +112 -0
  493. package/dist/ui/form.mjs +2 -0
  494. package/dist/ui/form.mjs.map +1 -0
  495. package/dist/ui/hover-card.cjs +1 -1
  496. package/dist/ui/hover-card.d.cts +4 -4
  497. package/dist/ui/hover-card.d.mts +37 -0
  498. package/dist/ui/hover-card.mjs +2 -0
  499. package/dist/ui/hover-card.mjs.map +1 -0
  500. package/dist/ui/image.cjs +1 -2
  501. package/dist/ui/image.d.mts +36 -0
  502. package/dist/ui/image.mjs +1 -0
  503. package/dist/ui/input-otp.cjs +1 -1
  504. package/dist/ui/input-otp.d.cts +5 -5
  505. package/dist/ui/input-otp.d.mts +59 -0
  506. package/dist/ui/input-otp.mjs +2 -0
  507. package/dist/ui/input-otp.mjs.map +1 -0
  508. package/dist/ui/input.cjs +1 -2
  509. package/dist/ui/input.d.cts +2 -44
  510. package/dist/ui/input.d.mts +2 -0
  511. package/dist/ui/input.mjs +1 -0
  512. package/dist/ui/inputs/search-input.cjs +1 -1
  513. package/dist/ui/inputs/search-input.cjs.map +1 -1
  514. package/dist/ui/inputs/search-input.d.cts +3 -3
  515. package/dist/ui/inputs/search-input.d.mts +29 -0
  516. package/dist/ui/inputs/search-input.mjs +2 -0
  517. package/dist/ui/inputs/search-input.mjs.map +1 -0
  518. package/dist/ui/item.cjs +1 -1
  519. package/dist/ui/item.cjs.map +1 -1
  520. package/dist/ui/item.d.cts +15 -15
  521. package/dist/ui/item.d.mts +102 -0
  522. package/dist/ui/item.mjs +2 -0
  523. package/dist/ui/item.mjs.map +1 -0
  524. package/dist/ui/label.cjs +1 -2
  525. package/dist/ui/label.d.cts +2 -2
  526. package/dist/ui/label.d.mts +24 -0
  527. package/dist/ui/label.mjs +1 -0
  528. package/dist/ui/menubar.cjs +1 -1
  529. package/dist/ui/menubar.d.cts +17 -17
  530. package/dist/ui/menubar.d.mts +135 -0
  531. package/dist/ui/menubar.mjs +2 -0
  532. package/dist/ui/menubar.mjs.map +1 -0
  533. package/dist/ui/multi-select.cjs +1 -1
  534. package/dist/ui/multi-select.cjs.map +1 -1
  535. package/dist/ui/multi-select.d.cts +3 -3
  536. package/dist/ui/multi-select.d.mts +118 -0
  537. package/dist/ui/multi-select.mjs +2 -0
  538. package/dist/ui/multi-select.mjs.map +1 -0
  539. package/dist/ui/navigation-menu.cjs +1 -1
  540. package/dist/ui/navigation-menu.d.cts +11 -11
  541. package/dist/ui/navigation-menu.d.mts +77 -0
  542. package/dist/ui/navigation-menu.mjs +2 -0
  543. package/dist/ui/navigation-menu.mjs.map +1 -0
  544. package/dist/ui/pagination.cjs +1 -1
  545. package/dist/ui/pagination.d.cts +9 -9
  546. package/dist/ui/pagination.d.mts +67 -0
  547. package/dist/ui/pagination.mjs +2 -0
  548. package/dist/ui/pagination.mjs.map +1 -0
  549. package/dist/ui/popover.cjs +1 -2
  550. package/dist/ui/popover.d.cts +6 -6
  551. package/dist/ui/popover.d.mts +52 -0
  552. package/dist/ui/popover.mjs +1 -0
  553. package/dist/ui/progress.cjs +1 -2
  554. package/dist/ui/progress.d.cts +2 -2
  555. package/dist/ui/progress.d.mts +23 -0
  556. package/dist/ui/progress.mjs +1 -0
  557. package/dist/ui/radio-group.cjs +1 -2
  558. package/dist/ui/radio-group.d.cts +3 -3
  559. package/dist/ui/radio-group.d.mts +37 -0
  560. package/dist/ui/radio-group.mjs +1 -0
  561. package/dist/ui/resizable.cjs +1 -2
  562. package/dist/ui/resizable.d.cts +9 -9
  563. package/dist/ui/resizable.d.mts +63 -0
  564. package/dist/ui/resizable.mjs +1 -0
  565. package/dist/ui/scroll-area.cjs +1 -1
  566. package/dist/ui/scroll-area.d.cts +5 -5
  567. package/dist/ui/scroll-area.d.mts +37 -0
  568. package/dist/ui/scroll-area.mjs +2 -0
  569. package/dist/ui/scroll-area.mjs.map +1 -0
  570. package/dist/ui/select.cjs +1 -2
  571. package/dist/ui/select.d.cts +9 -9
  572. package/dist/ui/select.d.mts +77 -0
  573. package/dist/ui/select.mjs +1 -0
  574. package/dist/ui/separator.cjs +1 -2
  575. package/dist/ui/separator.d.cts +2 -2
  576. package/dist/ui/separator.d.mts +34 -0
  577. package/dist/ui/separator.mjs +1 -0
  578. package/dist/ui/sheet.cjs +1 -2
  579. package/dist/ui/sheet.d.cts +9 -9
  580. package/dist/ui/sheet.d.mts +69 -0
  581. package/dist/ui/sheet.mjs +1 -0
  582. package/dist/ui/skeleton.cjs +1 -1
  583. package/dist/ui/skeleton.d.cts +2 -2
  584. package/dist/ui/skeleton.d.mts +27 -0
  585. package/dist/ui/skeleton.mjs +1 -0
  586. package/dist/ui/slider.cjs +1 -1
  587. package/dist/ui/slider.d.cts +2 -2
  588. package/dist/ui/slider.d.mts +26 -0
  589. package/dist/ui/slider.mjs +2 -0
  590. package/dist/ui/slider.mjs.map +1 -0
  591. package/dist/ui/sonner.cjs +1 -1
  592. package/dist/ui/sonner.d.cts +2 -2
  593. package/dist/ui/sonner.d.mts +24 -0
  594. package/dist/ui/sonner.mjs +2 -0
  595. package/dist/ui/sonner.mjs.map +1 -0
  596. package/dist/ui/spinner.cjs +1 -2
  597. package/dist/ui/spinner.d.cts +2 -2
  598. package/dist/ui/spinner.d.mts +25 -0
  599. package/dist/ui/spinner.mjs +1 -0
  600. package/dist/ui/switch.cjs +1 -2
  601. package/dist/ui/switch.d.cts +2 -2
  602. package/dist/ui/switch.d.mts +26 -0
  603. package/dist/ui/switch.mjs +1 -0
  604. package/dist/ui/table.cjs +1 -1
  605. package/dist/ui/table.d.cts +17 -17
  606. package/dist/ui/table.d.mts +73 -0
  607. package/dist/ui/table.mjs +2 -0
  608. package/dist/ui/table.mjs.map +1 -0
  609. package/dist/ui/tabs.cjs +1 -1
  610. package/dist/ui/tabs.d.cts +5 -5
  611. package/dist/ui/tabs.d.mts +44 -0
  612. package/dist/ui/tabs.mjs +2 -0
  613. package/dist/ui/tabs.mjs.map +1 -0
  614. package/dist/ui/textarea.cjs +1 -2
  615. package/dist/ui/textarea.d.cts +2 -2
  616. package/dist/ui/textarea.d.mts +30 -0
  617. package/dist/ui/textarea.mjs +1 -0
  618. package/dist/ui/toggle-group.cjs +1 -1
  619. package/dist/ui/toggle-group.cjs.map +1 -1
  620. package/dist/ui/toggle-group.d.cts +4 -4
  621. package/dist/ui/toggle-group.d.mts +39 -0
  622. package/dist/ui/toggle-group.mjs +2 -0
  623. package/dist/ui/toggle-group.mjs.map +1 -0
  624. package/dist/ui/toggle.cjs +1 -1
  625. package/dist/ui/toggle.d.cts +4 -4
  626. package/dist/ui/toggle.d.mts +32 -0
  627. package/dist/ui/toggle.mjs +2 -0
  628. package/dist/ui/toggle.mjs.map +1 -0
  629. package/dist/ui/tooltip.cjs +1 -2
  630. package/dist/ui/tooltip.d.cts +5 -5
  631. package/dist/ui/tooltip.d.mts +55 -0
  632. package/dist/ui/tooltip.mjs +1 -0
  633. package/dist/user-DtZy4P9d.mjs +2 -0
  634. package/dist/user-DtZy4P9d.mjs.map +1 -0
  635. package/dist/user-ii4FBhO1.cjs +2 -0
  636. package/dist/user-ii4FBhO1.cjs.map +1 -0
  637. package/package.json +100 -100
  638. package/dist/alert-BVsYpWFX.d.cts +0 -88
  639. package/dist/alert-D5VmhFT9.js +0 -2
  640. package/dist/alert-D5VmhFT9.js.map +0 -1
  641. package/dist/alert-DXmXDeGs.d.ts +0 -88
  642. package/dist/alert-JwECRZfz.cjs +0 -2
  643. package/dist/alert-JwECRZfz.cjs.map +0 -1
  644. package/dist/button-BBfGvggN.d.ts +0 -174
  645. package/dist/button-BEjRVw6s.d.cts +0 -174
  646. package/dist/button.variants-BruXd4VM.js +0 -2
  647. package/dist/button.variants-BruXd4VM.js.map +0 -1
  648. package/dist/button.variants-DgVFNsVc.cjs +0 -2
  649. package/dist/button.variants-DgVFNsVc.cjs.map +0 -1
  650. package/dist/cards/grid-product-card.d.ts +0 -37
  651. package/dist/cards/grid-product-card.js +0 -2
  652. package/dist/cards/grid-product-card.js.map +0 -1
  653. package/dist/cards/product-card.d.ts +0 -37
  654. package/dist/cards/product-card.js +0 -2
  655. package/dist/cards/product-card.js.map +0 -1
  656. package/dist/cards/simple-card.d.ts +0 -35
  657. package/dist/cards/simple-card.js +0 -2
  658. package/dist/cards/simple-card.js.map +0 -1
  659. package/dist/chunk-Bmb41Sf3.cjs +0 -1
  660. package/dist/close-Dflkky9q.cjs +0 -2
  661. package/dist/close-Dflkky9q.cjs.map +0 -1
  662. package/dist/close-DrkwaVXK.js +0 -2
  663. package/dist/close-DrkwaVXK.js.map +0 -1
  664. package/dist/cms-layout-B8maJRLp.cjs +0 -2
  665. package/dist/cms-layout-B8maJRLp.cjs.map +0 -1
  666. package/dist/cms-layout-CLeGdpMb.js +0 -2
  667. package/dist/cms-layout-CLeGdpMb.js.map +0 -1
  668. package/dist/data-display/country.d.ts +0 -22
  669. package/dist/data-display/country.js +0 -2
  670. package/dist/data-display/country.js.map +0 -1
  671. package/dist/data-display/data-list.d.ts +0 -43
  672. package/dist/data-display/data-list.js +0 -2
  673. package/dist/data-display/data-list.js.map +0 -1
  674. package/dist/data-display/date-tooltip.d.ts +0 -19
  675. package/dist/data-display/date-tooltip.js +0 -2
  676. package/dist/data-display/date-tooltip.js.map +0 -1
  677. package/dist/data-display/date.cjs.map +0 -1
  678. package/dist/data-display/date.d.ts +0 -39
  679. package/dist/data-display/date.js +0 -2
  680. package/dist/data-display/date.js.map +0 -1
  681. package/dist/data-display/empty.d.ts +0 -21
  682. package/dist/data-display/empty.js +0 -2
  683. package/dist/data-display/empty.js.map +0 -1
  684. package/dist/data-display/name.d.ts +0 -19
  685. package/dist/data-display/name.js +0 -2
  686. package/dist/data-display/name.js.map +0 -1
  687. package/dist/data-display/phone-number.d.ts +0 -19
  688. package/dist/data-display/phone-number.js +0 -2
  689. package/dist/data-display/phone-number.js.map +0 -1
  690. package/dist/data-display/role-badge.d.ts +0 -22
  691. package/dist/data-display/role-badge.js +0 -2
  692. package/dist/data-display/role-badge.js.map +0 -1
  693. package/dist/data-display/statistic.cjs.map +0 -1
  694. package/dist/data-display/statistic.d.ts +0 -57
  695. package/dist/data-display/statistic.js +0 -2
  696. package/dist/data-display/statistic.js.map +0 -1
  697. package/dist/data-display/user.cjs.map +0 -1
  698. package/dist/data-display/user.d.ts +0 -23
  699. package/dist/data-display/user.js +0 -2
  700. package/dist/data-display/user.js.map +0 -1
  701. package/dist/dialogs/confirm-dialog.d.ts +0 -142
  702. package/dist/dialogs/confirm-dialog.js +0 -2
  703. package/dist/dialogs/confirm-dialog.js.map +0 -1
  704. package/dist/dialogs/detail-dialog/components/sidebar.d.ts +0 -209
  705. package/dist/dialogs/detail-dialog/components/sidebar.js +0 -1
  706. package/dist/dialogs/detail-dialog/index.d.ts +0 -45
  707. package/dist/dialogs/detail-dialog/index.js +0 -2
  708. package/dist/dialogs/detail-dialog/index.js.map +0 -1
  709. package/dist/dialogs/error-dialog.d.ts +0 -25
  710. package/dist/dialogs/error-dialog.js +0 -2
  711. package/dist/dialogs/error-dialog.js.map +0 -1
  712. package/dist/dialogs/loading-dialog.d.ts +0 -21
  713. package/dist/dialogs/loading-dialog.js +0 -2
  714. package/dist/dialogs/loading-dialog.js.map +0 -1
  715. package/dist/features/descriptions/index.d.ts +0 -246
  716. package/dist/features/descriptions/index.js +0 -2
  717. package/dist/features/descriptions/index.js.map +0 -1
  718. package/dist/features/search-modal/index.d.ts +0 -17
  719. package/dist/features/search-modal/index.js +0 -1
  720. package/dist/features/tables/index.d.ts +0 -2
  721. package/dist/features/tables/index.js +0 -1
  722. package/dist/features/tanstack-form/index.d.ts +0 -2
  723. package/dist/features/tanstack-form/index.js +0 -1
  724. package/dist/features/text-editor/index.d.ts +0 -2
  725. package/dist/features/text-editor/index.js +0 -1
  726. package/dist/field-0gaEKxov.cjs +0 -2
  727. package/dist/field-0gaEKxov.cjs.map +0 -1
  728. package/dist/field-DG-kX3HU.js +0 -2
  729. package/dist/field-DG-kX3HU.js.map +0 -1
  730. package/dist/flex-BAfCk_in.cjs +0 -2
  731. package/dist/flex-BAfCk_in.cjs.map +0 -1
  732. package/dist/flex-D_XtSjf4.js +0 -2
  733. package/dist/flex-D_XtSjf4.js.map +0 -1
  734. package/dist/heading-BX7ZVnVg.cjs +0 -2
  735. package/dist/heading-BX7ZVnVg.cjs.map +0 -1
  736. package/dist/heading-Bw3eo6IT.js +0 -2
  737. package/dist/heading-Bw3eo6IT.js.map +0 -1
  738. package/dist/index--eHW_BCk.d.ts +0 -85
  739. package/dist/index-C257sc-c.d.ts +0 -90
  740. package/dist/index-C4ZFmaZm.d.cts +0 -2348
  741. package/dist/index-DWEpRM8i.d.cts +0 -1093
  742. package/dist/index-DnQeeNHV.d.ts +0 -1093
  743. package/dist/index-_MFRCXuJ.d.cts +0 -85
  744. package/dist/index-rNI5ia8r.d.cts +0 -90
  745. package/dist/index-rZ2RtGJp.d.ts +0 -2348
  746. package/dist/index.d.ts +0 -93
  747. package/dist/index.js +0 -1
  748. package/dist/layouts/cms-layout/index.d.ts +0 -2
  749. package/dist/layouts/cms-layout/index.js +0 -1
  750. package/dist/layouts/flex.d.ts +0 -117
  751. package/dist/layouts/flex.js +0 -1
  752. package/dist/layouts/grid.d.ts +0 -19
  753. package/dist/layouts/grid.js +0 -2
  754. package/dist/layouts/grid.js.map +0 -1
  755. package/dist/layouts/payment-layout/index.d.ts +0 -74
  756. package/dist/layouts/payment-layout/index.js +0 -1
  757. package/dist/pages/FeatureDeveloping.d.ts +0 -43
  758. package/dist/pages/FeatureDeveloping.js +0 -2
  759. package/dist/pages/FeatureDeveloping.js.map +0 -1
  760. package/dist/pages/FeatureFixing.d.ts +0 -43
  761. package/dist/pages/FeatureFixing.js +0 -2
  762. package/dist/pages/FeatureFixing.js.map +0 -1
  763. package/dist/pages/LoginPage.d.ts +0 -55
  764. package/dist/pages/LoginPage.js +0 -2
  765. package/dist/pages/LoginPage.js.map +0 -1
  766. package/dist/pages/NotAuthorized.d.ts +0 -43
  767. package/dist/pages/NotAuthorized.js +0 -2
  768. package/dist/pages/NotAuthorized.js.map +0 -1
  769. package/dist/pages/NotFound.d.ts +0 -43
  770. package/dist/pages/NotFound.js +0 -2
  771. package/dist/pages/NotFound.js.map +0 -1
  772. package/dist/pages/RegisterPage.d.ts +0 -52
  773. package/dist/pages/RegisterPage.js +0 -2
  774. package/dist/pages/RegisterPage.js.map +0 -1
  775. package/dist/pages/VerifyEmailPage.d.ts +0 -64
  776. package/dist/pages/VerifyEmailPage.js +0 -2
  777. package/dist/pages/VerifyEmailPage.js.map +0 -1
  778. package/dist/paragraph-D0x3Jc6W.cjs +0 -2
  779. package/dist/paragraph-D0x3Jc6W.cjs.map +0 -1
  780. package/dist/paragraph-ESjXXqHU.js +0 -2
  781. package/dist/paragraph-ESjXXqHU.js.map +0 -1
  782. package/dist/payment-layout-CksJbGsl.js +0 -2
  783. package/dist/payment-layout-CksJbGsl.js.map +0 -1
  784. package/dist/payment-layout-O7TNw2Cr.cjs +0 -2
  785. package/dist/payment-layout-O7TNw2Cr.cjs.map +0 -1
  786. package/dist/search-modal-Db8Xp2L4.cjs +0 -2
  787. package/dist/search-modal-Db8Xp2L4.cjs.map +0 -1
  788. package/dist/search-modal-DdonKbwA.js +0 -2
  789. package/dist/search-modal-DdonKbwA.js.map +0 -1
  790. package/dist/sidebar-BCuXtop_.js +0 -2
  791. package/dist/sidebar-BCuXtop_.js.map +0 -1
  792. package/dist/sidebar-CQZlWCK4.cjs +0 -2
  793. package/dist/sidebar-CQZlWCK4.cjs.map +0 -1
  794. package/dist/skeleton-DAcbjBGp.js +0 -2
  795. package/dist/skeleton-DAcbjBGp.js.map +0 -1
  796. package/dist/skeleton-oQFT4xR2.cjs +0 -2
  797. package/dist/skeleton-oQFT4xR2.cjs.map +0 -1
  798. package/dist/systems/google.d.ts +0 -53
  799. package/dist/systems/google.js +0 -2
  800. package/dist/systems/google.js.map +0 -1
  801. package/dist/tables-DbwtCMRI.js +0 -4
  802. package/dist/tables-DbwtCMRI.js.map +0 -1
  803. package/dist/tables-DgZbLZQP.cjs +0 -4
  804. package/dist/tables-DgZbLZQP.cjs.map +0 -1
  805. package/dist/tanstack-form-C3SGhsmN.cjs +0 -2
  806. package/dist/tanstack-form-C3SGhsmN.cjs.map +0 -1
  807. package/dist/tanstack-form-Ds_Zjt20.js +0 -2
  808. package/dist/tanstack-form-Ds_Zjt20.js.map +0 -1
  809. package/dist/text-editor-DhTxCxvH.cjs +0 -2
  810. package/dist/text-editor-DhTxCxvH.cjs.map +0 -1
  811. package/dist/text-editor-DwisU9_U.js +0 -2
  812. package/dist/text-editor-DwisU9_U.js.map +0 -1
  813. package/dist/typography/paragraph.d.ts +0 -48
  814. package/dist/typography/paragraph.js +0 -1
  815. package/dist/typography/title.d.ts +0 -43
  816. package/dist/typography/title.js +0 -2
  817. package/dist/typography/title.js.map +0 -1
  818. package/dist/ui/alert-dialog.d.ts +0 -90
  819. package/dist/ui/alert-dialog.js +0 -2
  820. package/dist/ui/alert-dialog.js.map +0 -1
  821. package/dist/ui/alert.d.ts +0 -2
  822. package/dist/ui/alert.js +0 -1
  823. package/dist/ui/aspect-ratio.d.ts +0 -24
  824. package/dist/ui/aspect-ratio.js +0 -2
  825. package/dist/ui/aspect-ratio.js.map +0 -1
  826. package/dist/ui/avatar.cjs.map +0 -1
  827. package/dist/ui/avatar.d.ts +0 -35
  828. package/dist/ui/avatar.js +0 -2
  829. package/dist/ui/avatar.js.map +0 -1
  830. package/dist/ui/badge.cjs.map +0 -1
  831. package/dist/ui/badge.d.ts +0 -42
  832. package/dist/ui/badge.js +0 -2
  833. package/dist/ui/badge.js.map +0 -1
  834. package/dist/ui/breadcrumb.d.ts +0 -72
  835. package/dist/ui/breadcrumb.js +0 -2
  836. package/dist/ui/breadcrumb.js.map +0 -1
  837. package/dist/ui/button-group.d.ts +0 -50
  838. package/dist/ui/button-group.js +0 -2
  839. package/dist/ui/button-group.js.map +0 -1
  840. package/dist/ui/button.cjs.map +0 -1
  841. package/dist/ui/button.d.ts +0 -2
  842. package/dist/ui/button.js +0 -2
  843. package/dist/ui/button.js.map +0 -1
  844. package/dist/ui/buttons/add-new.d.ts +0 -17
  845. package/dist/ui/buttons/add-new.js +0 -2
  846. package/dist/ui/buttons/add-new.js.map +0 -1
  847. package/dist/ui/buttons/edit.d.ts +0 -17
  848. package/dist/ui/buttons/edit.js +0 -2
  849. package/dist/ui/buttons/edit.js.map +0 -1
  850. package/dist/ui/buttons/refresh.d.ts +0 -17
  851. package/dist/ui/buttons/refresh.js +0 -2
  852. package/dist/ui/buttons/refresh.js.map +0 -1
  853. package/dist/ui/buttons/trash.d.ts +0 -17
  854. package/dist/ui/buttons/trash.js +0 -2
  855. package/dist/ui/buttons/trash.js.map +0 -1
  856. package/dist/ui/buttons/upload-image.d.ts +0 -24
  857. package/dist/ui/buttons/upload-image.js +0 -2
  858. package/dist/ui/buttons/upload-image.js.map +0 -1
  859. package/dist/ui/calendar.cjs.map +0 -1
  860. package/dist/ui/calendar.d.ts +0 -45
  861. package/dist/ui/calendar.js +0 -2
  862. package/dist/ui/calendar.js.map +0 -1
  863. package/dist/ui/card.d.ts +0 -63
  864. package/dist/ui/card.js +0 -2
  865. package/dist/ui/card.js.map +0 -1
  866. package/dist/ui/carousel.d.ts +0 -71
  867. package/dist/ui/carousel.js +0 -2
  868. package/dist/ui/carousel.js.map +0 -1
  869. package/dist/ui/checkbox.cjs.map +0 -1
  870. package/dist/ui/checkbox.d.ts +0 -26
  871. package/dist/ui/checkbox.js +0 -2
  872. package/dist/ui/checkbox.js.map +0 -1
  873. package/dist/ui/collapsible.d.ts +0 -34
  874. package/dist/ui/collapsible.js +0 -2
  875. package/dist/ui/collapsible.js.map +0 -1
  876. package/dist/ui/command.cjs.map +0 -1
  877. package/dist/ui/command.d.ts +0 -89
  878. package/dist/ui/command.js +0 -2
  879. package/dist/ui/command.js.map +0 -1
  880. package/dist/ui/context-menu.d.ts +0 -125
  881. package/dist/ui/context-menu.js +0 -2
  882. package/dist/ui/context-menu.js.map +0 -1
  883. package/dist/ui/dialog.cjs.map +0 -1
  884. package/dist/ui/dialog.d.ts +0 -90
  885. package/dist/ui/dialog.js +0 -2
  886. package/dist/ui/dialog.js.map +0 -1
  887. package/dist/ui/drawer.cjs.map +0 -1
  888. package/dist/ui/drawer.d.ts +0 -72
  889. package/dist/ui/drawer.js +0 -2
  890. package/dist/ui/drawer.js.map +0 -1
  891. package/dist/ui/dropdown-menu.cjs.map +0 -1
  892. package/dist/ui/dropdown-menu.d.ts +0 -127
  893. package/dist/ui/dropdown-menu.js +0 -2
  894. package/dist/ui/dropdown-menu.js.map +0 -1
  895. package/dist/ui/empty.d.ts +0 -68
  896. package/dist/ui/empty.js +0 -2
  897. package/dist/ui/empty.js.map +0 -1
  898. package/dist/ui/field.d.ts +0 -65
  899. package/dist/ui/field.js +0 -1
  900. package/dist/ui/file-uploader.d.ts +0 -103
  901. package/dist/ui/file-uploader.js +0 -3
  902. package/dist/ui/file-uploader.js.map +0 -1
  903. package/dist/ui/form.d.ts +0 -112
  904. package/dist/ui/form.js +0 -2
  905. package/dist/ui/form.js.map +0 -1
  906. package/dist/ui/hover-card.d.ts +0 -37
  907. package/dist/ui/hover-card.js +0 -2
  908. package/dist/ui/hover-card.js.map +0 -1
  909. package/dist/ui/image.cjs.map +0 -1
  910. package/dist/ui/image.d.ts +0 -36
  911. package/dist/ui/image.js +0 -2
  912. package/dist/ui/image.js.map +0 -1
  913. package/dist/ui/input-otp.d.ts +0 -59
  914. package/dist/ui/input-otp.js +0 -2
  915. package/dist/ui/input-otp.js.map +0 -1
  916. package/dist/ui/input.cjs.map +0 -1
  917. package/dist/ui/input.d.ts +0 -44
  918. package/dist/ui/input.js +0 -2
  919. package/dist/ui/input.js.map +0 -1
  920. package/dist/ui/inputs/search-input.d.ts +0 -29
  921. package/dist/ui/inputs/search-input.js +0 -2
  922. package/dist/ui/inputs/search-input.js.map +0 -1
  923. package/dist/ui/item.d.ts +0 -102
  924. package/dist/ui/item.js +0 -2
  925. package/dist/ui/item.js.map +0 -1
  926. package/dist/ui/label.cjs.map +0 -1
  927. package/dist/ui/label.d.ts +0 -24
  928. package/dist/ui/label.js +0 -2
  929. package/dist/ui/label.js.map +0 -1
  930. package/dist/ui/menubar.d.ts +0 -135
  931. package/dist/ui/menubar.js +0 -2
  932. package/dist/ui/menubar.js.map +0 -1
  933. package/dist/ui/multi-select.d.ts +0 -117
  934. package/dist/ui/multi-select.js +0 -2
  935. package/dist/ui/multi-select.js.map +0 -1
  936. package/dist/ui/navigation-menu.d.ts +0 -77
  937. package/dist/ui/navigation-menu.js +0 -2
  938. package/dist/ui/navigation-menu.js.map +0 -1
  939. package/dist/ui/pagination.d.ts +0 -67
  940. package/dist/ui/pagination.js +0 -2
  941. package/dist/ui/pagination.js.map +0 -1
  942. package/dist/ui/popover.cjs.map +0 -1
  943. package/dist/ui/popover.d.ts +0 -52
  944. package/dist/ui/popover.js +0 -2
  945. package/dist/ui/popover.js.map +0 -1
  946. package/dist/ui/progress.cjs.map +0 -1
  947. package/dist/ui/progress.d.ts +0 -23
  948. package/dist/ui/progress.js +0 -2
  949. package/dist/ui/progress.js.map +0 -1
  950. package/dist/ui/radio-group.cjs.map +0 -1
  951. package/dist/ui/radio-group.d.ts +0 -37
  952. package/dist/ui/radio-group.js +0 -2
  953. package/dist/ui/radio-group.js.map +0 -1
  954. package/dist/ui/resizable.cjs.map +0 -1
  955. package/dist/ui/resizable.d.ts +0 -63
  956. package/dist/ui/resizable.js +0 -2
  957. package/dist/ui/resizable.js.map +0 -1
  958. package/dist/ui/scroll-area.d.ts +0 -37
  959. package/dist/ui/scroll-area.js +0 -2
  960. package/dist/ui/scroll-area.js.map +0 -1
  961. package/dist/ui/select.cjs.map +0 -1
  962. package/dist/ui/select.d.ts +0 -77
  963. package/dist/ui/select.js +0 -2
  964. package/dist/ui/select.js.map +0 -1
  965. package/dist/ui/separator.cjs.map +0 -1
  966. package/dist/ui/separator.d.ts +0 -34
  967. package/dist/ui/separator.js +0 -2
  968. package/dist/ui/separator.js.map +0 -1
  969. package/dist/ui/sheet.cjs.map +0 -1
  970. package/dist/ui/sheet.d.ts +0 -69
  971. package/dist/ui/sheet.js +0 -2
  972. package/dist/ui/sheet.js.map +0 -1
  973. package/dist/ui/skeleton.d.ts +0 -27
  974. package/dist/ui/skeleton.js +0 -1
  975. package/dist/ui/slider.d.ts +0 -26
  976. package/dist/ui/slider.js +0 -2
  977. package/dist/ui/slider.js.map +0 -1
  978. package/dist/ui/sonner.d.ts +0 -24
  979. package/dist/ui/sonner.js +0 -2
  980. package/dist/ui/sonner.js.map +0 -1
  981. package/dist/ui/spinner.cjs.map +0 -1
  982. package/dist/ui/spinner.d.ts +0 -25
  983. package/dist/ui/spinner.js +0 -2
  984. package/dist/ui/spinner.js.map +0 -1
  985. package/dist/ui/switch.cjs.map +0 -1
  986. package/dist/ui/switch.d.ts +0 -26
  987. package/dist/ui/switch.js +0 -2
  988. package/dist/ui/switch.js.map +0 -1
  989. package/dist/ui/table.d.ts +0 -73
  990. package/dist/ui/table.js +0 -2
  991. package/dist/ui/table.js.map +0 -1
  992. package/dist/ui/tabs.d.ts +0 -44
  993. package/dist/ui/tabs.js +0 -2
  994. package/dist/ui/tabs.js.map +0 -1
  995. package/dist/ui/textarea.cjs.map +0 -1
  996. package/dist/ui/textarea.d.ts +0 -30
  997. package/dist/ui/textarea.js +0 -2
  998. package/dist/ui/textarea.js.map +0 -1
  999. package/dist/ui/toggle-group.d.ts +0 -39
  1000. package/dist/ui/toggle-group.js +0 -2
  1001. package/dist/ui/toggle-group.js.map +0 -1
  1002. package/dist/ui/toggle.d.ts +0 -32
  1003. package/dist/ui/toggle.js +0 -2
  1004. package/dist/ui/toggle.js.map +0 -1
  1005. package/dist/ui/tooltip.cjs.map +0 -1
  1006. package/dist/ui/tooltip.d.ts +0 -55
  1007. package/dist/ui/tooltip.js +0 -2
  1008. package/dist/ui/tooltip.js.map +0 -1
@@ -1,65 +0,0 @@
1
- import { VariantProps } from "class-variance-authority";
2
- import * as react165 from "react";
3
- import { Label } from "@/components/ui/label";
4
- import * as class_variance_authority_types6 from "class-variance-authority/types";
5
-
6
- //#region packages/components/ui/field.d.ts
7
- declare const FieldSet: react165.MemoExoticComponent<({
8
- className,
9
- ...props
10
- }: React.ComponentProps<"fieldset">) => react165.JSX.Element>;
11
- declare const FieldLegend: react165.MemoExoticComponent<({
12
- className,
13
- variant,
14
- ...props
15
- }: React.ComponentProps<"legend"> & {
16
- variant?: "legend" | "label";
17
- }) => react165.JSX.Element>;
18
- declare const FieldGroup: react165.MemoExoticComponent<({
19
- className,
20
- ...props
21
- }: React.ComponentProps<"div">) => react165.JSX.Element>;
22
- declare const fieldVariants: (props?: ({
23
- orientation?: "vertical" | "horizontal" | "responsive" | null | undefined;
24
- } & class_variance_authority_types6.ClassProp) | undefined) => string;
25
- declare const Field: react165.MemoExoticComponent<({
26
- className,
27
- orientation,
28
- ...props
29
- }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>) => react165.JSX.Element>;
30
- declare const FieldContent: react165.MemoExoticComponent<({
31
- className,
32
- ...props
33
- }: React.ComponentProps<"div">) => react165.JSX.Element>;
34
- declare const FieldLabel: react165.MemoExoticComponent<({
35
- className,
36
- ...props
37
- }: React.ComponentProps<typeof Label>) => react165.JSX.Element>;
38
- declare const FieldTitle: react165.MemoExoticComponent<({
39
- className,
40
- ...props
41
- }: React.ComponentProps<"div">) => react165.JSX.Element>;
42
- declare const FieldDescription: react165.MemoExoticComponent<({
43
- className,
44
- ...props
45
- }: React.ComponentProps<"p">) => react165.JSX.Element>;
46
- declare const FieldSeparator: react165.MemoExoticComponent<({
47
- children,
48
- className,
49
- ...props
50
- }: React.ComponentProps<"div"> & {
51
- children?: React.ReactNode;
52
- }) => react165.JSX.Element>;
53
- declare const FieldError: react165.MemoExoticComponent<({
54
- className,
55
- children,
56
- errors,
57
- ...props
58
- }: React.ComponentProps<"div"> & {
59
- errors?: Array<{
60
- message?: string;
61
- } | undefined>;
62
- }) => react165.JSX.Element | null>;
63
- //#endregion
64
- export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
65
- //# sourceMappingURL=field.d.ts.map
package/dist/ui/field.js DELETED
@@ -1 +0,0 @@
1
- "use client";import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"../field-DG-kX3HU.js";export{c as Field,i as FieldContent,o as FieldDescription,n as FieldError,e as FieldGroup,a as FieldLabel,s as FieldLegend,t as FieldSeparator,r as FieldSet,l as FieldTitle};
@@ -1,103 +0,0 @@
1
- import * as react185 from "react";
2
- import { DropzoneProps } from "react-dropzone";
3
-
4
- //#region packages/components/ui/file-uploader.d.ts
5
-
6
- /**
7
- * Props for the FileUploader component.
8
- *
9
- * @example
10
- * ```tsx
11
- * import { FileUploader } from '@customafk/lunas-ui/ui/file-uploader';
12
- *
13
- * <FileUploader
14
- * accept={{ 'image/*': [] }}
15
- * maxSize={1024 * 1024 * 5}
16
- * maxFileCount={3}
17
- * multiple
18
- * onUpload={async (files) => { await uploadFiles(files); }}
19
- * />
20
- * ```
21
- */
22
- interface FileUploaderProps extends React.HTMLAttributes<HTMLDivElement> {
23
- /**
24
- * Value of the uploader.
25
- * @type File[]
26
- * @default undefined
27
- * @example value={files}
28
- */
29
- value?: File[];
30
- /**
31
- * Function to be called when the value changes.
32
- * @type (files: File[]) => void
33
- * @default undefined
34
- * @example onValueChange={(files) => setFiles(files)}
35
- */
36
- onValueChange?: (files: File[]) => void;
37
- /**
38
- * Function to be called when files are uploaded.
39
- * @type (files: File[]) => Promise<void>
40
- * @default undefined
41
- * @example onUpload={(files) => uploadFiles(files)}
42
- */
43
- onUpload?: (files: File[]) => Promise<void>;
44
- /**
45
- * Progress of the uploaded files.
46
- * @type Record<string, number> | undefined
47
- * @default undefined
48
- * @example progresses={{ "file1.png": 50 }}
49
- */
50
- progresses?: Record<string, number>;
51
- /**
52
- * Accepted file types for the uploader.
53
- * @type { [key: string]: string[]}
54
- * @default
55
- * ```ts
56
- * { "image/*": [] }
57
- * ```
58
- * @example accept={["image/png", "image/jpeg"]}
59
- */
60
- accept?: DropzoneProps['accept'];
61
- /**
62
- * Maximum file size for the uploader.
63
- * @type number | undefined
64
- * @default 1024 * 1024 * 2 // 2MB
65
- * @example maxSize={1024 * 1024 * 2} // 2MB
66
- */
67
- maxSize?: DropzoneProps['maxSize'];
68
- /**
69
- * Maximum number of files for the uploader.
70
- * @type number | undefined
71
- * @default 1
72
- * @example maxFileCount={4}
73
- */
74
- maxFileCount?: DropzoneProps['maxFiles'];
75
- /**
76
- * Whether the uploader should accept multiple files.
77
- * @type boolean
78
- * @default false
79
- * @example multiple
80
- */
81
- multiple?: boolean;
82
- /**
83
- * Whether the uploader is disabled.
84
- * @type boolean
85
- * @default false
86
- * @example disabled
87
- */
88
- disabled?: boolean;
89
- /**
90
- * Whether to show the instructional drag-and-drop text inside the drop zone.
91
- * @default true
92
- */
93
- showText?: boolean;
94
- /** Size in pixels for the upload icon. */
95
- iconSize?: number;
96
- }
97
- /**
98
- * A drag-and-drop file upload zone that manages file selection, validation, preview generation, and optional async upload with progress tracking.
99
- */
100
- declare function FileUploader(props: FileUploaderProps): react185.JSX.Element;
101
- //#endregion
102
- export { FileUploader };
103
- //# sourceMappingURL=file-uploader.d.ts.map
@@ -1,3 +0,0 @@
1
- "use client";import{FileText as e,Image as t,Trash2 as n,Upload as r}from"lucide-react";import{cn as i,formatBytes as a}from"@customafk/react-toolkit/utils";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useCallback as c,useEffect as l}from"react";import{Button as u}from"@/components/ui/button";import{Progress as d}from"@/components/ui/progress";import f from"react-dropzone";import{useControllableState as p}from"@customafk/react-toolkit/hooks/useControllableState";import{toast as m}from"sonner";function h(e){let{value:u,onValueChange:d,onUpload:h,progresses:v,accept:y={"image/*":[]},maxSize:b=1024*1024*2,maxFileCount:x=1,multiple:S=!1,disabled:C=!1,showText:w=!0,iconSize:T,className:E,...D}=e,[O,k]=p({prop:u,onChange:d}),A=c((e,t)=>{if(!S&&x===1&&e.length>1){m.error(`Cannot upload more than 1 file at a time`);return}if((O?.length??0)+e.length>x){m.error(`Cannot upload more than ${x} files`);return}let n=e.map(e=>Object.assign(e,{preview:URL.createObjectURL(e)})),r=O?[...O,...n]:n;if(k(r),t.length>0&&t.forEach(({file:e})=>{m.error(`File ${e.name} was rejected`)}),h&&r.length>0&&r.length<=x){let e=r.length>0?`${r.length} files`:`file`;h(r).then(()=>{k([]),m(`${e} uploaded`)})}},[O,x,S,h,k]);function j(e){if(!O)return;_(O[e])&&URL.revokeObjectURL(O[e].preview);let t=O.filter((t,n)=>n!==e);k(t),d?.(t)}l(()=>()=>{O&&O.forEach(e=>{_(e)&&URL.revokeObjectURL(e.preview)})},[]);let M=C||(O?.length??0)>=x;return s(`div`,{className:`relative flex w-full flex-col gap-6`,children:[o(f,{onDrop:A,accept:y,maxSize:b,maxFiles:x,multiple:x>1||S,disabled:M,children:({getRootProps:e,getInputProps:t,isDragActive:n})=>s(`div`,{...e(),className:i(`group`,`border-border-weak`,`hover:bg-border-weak/20`,`relative grid h-52 w-full cursor-pointer place-items-center rounded-lg border-2 border-dashed px-5 py-2.5 text-center transition`,`ring-offset-background`,`focus-visible:ring-primary-weak`,`focus-visible:ring-2`,`focus-visible:ring-offset-2`,`focus-visible:outline-hidden`,n&&`border-border-primary-strong bg-border-weak/40`,M&&`pointer-events-none opacity-60`,E),...D,children:[o(`input`,{...t()}),n?s(`div`,{className:`flex flex-col items-center justify-center gap-4 sm:px-5`,children:[o(`div`,{className:`rounded-full border border-dashed p-3`,children:o(r,{className:`text-text-positive-muted size-7`,"aria-hidden":`true`})}),o(`p`,{className:`text-text-positive-muted font-medium`,children:`Drop the files here`})]}):s(`div`,{className:`flex flex-col items-center justify-center gap-4 sm:px-5`,children:[o(`div`,{className:`rounded-full border border-dashed p-3`,children:o(r,{size:T||24,className:`text-muted-foreground`,"aria-hidden":`true`})}),w&&s(`div`,{className:`flex flex-col gap-px`,children:[s(`p`,{className:`text-text-positive-weak text-xs font-medium`,children:[`Drag `,`'n'`,` drop files here, or click to select files`]}),s(`p`,{className:`text-text-positive-muted text-xs`,children:[`You can upload`,x>1?` ${x===1/0?`multiple`:x}
2
- files (up to ${a(b)} each)`:` a file with ${a(b)}`]})]})]})]})}),O?.length?s(`div`,{className:`h-fit w-full overflow-y-auto`,children:[s(`div`,{className:`flex items-center justify-between px-3 py-2.5`,children:[s(`div`,{className:`text-text-positive-weak flex items-center gap-1`,children:[o(t,{size:16,"aria-hidden":`true`}),s(`p`,{className:`text-sm`,children:[`Ảnh đã tải lên (`,O.length,`)`]})]}),s(`button`,{className:`hover:text-text-positive text-text-positive-muted flex cursor-pointer items-center gap-1 transition-colors duration-200`,onClick:()=>{O&&(O.forEach(e=>{_(e)&&URL.revokeObjectURL(e.preview)}),k([]),d?.([]))},children:[o(n,{size:16,"aria-hidden":`true`}),o(`p`,{className:`text-sm`,children:`Xóa tất cả`})]})]}),o(`div`,{className:`flex flex-col gap-2.5`,children:O?.map((e,t)=>o(g,{file:e,onRemove:()=>j(t),progress:v?.[e.name]},t))})]}):null]})}function g({file:e,progress:t,onRemove:r}){return s(`div`,{className:`border-border-weak hover:border-border relative flex items-center gap-4 rounded-md border py-2 pr-3 pl-2 shadow-xs transition-colors`,children:[s(`div`,{className:`flex flex-1 gap-2.5`,children:[_(e)?o(v,{file:e}):null,s(`div`,{className:`flex w-full flex-col gap-2`,children:[s(`div`,{className:`flex flex-col gap-y-0.5`,children:[o(`p`,{className:`text-text-positive line-clamp-1 text-sm`,children:e.name}),o(`p`,{className:`text-text-positive-muted text-xs`,children:a(e.size)})]}),t?o(d,{value:t}):null]})]}),o(`div`,{className:`flex items-center gap-2`,children:s(u,{type:`button`,variant:`ghost`,color:`secondary`,size:`icon`,className:`size-7`,onClick:r,children:[o(n,{size:16,className:`text-text-positive-muted`,"aria-hidden":`true`}),o(`span`,{className:`sr-only`,children:`Remove file`})]})})]})}function _(e){return`preview`in e&&typeof e.preview==`string`}function v({file:t}){return t.type.startsWith(`image/`)?o(`img`,{src:t.preview,className:`border-border aspect-square size-10 shrink-0 rounded border object-cover object-top shadow-sm`}):o(e,{className:`text-text-positive-muted size-10 border`,"aria-hidden":`true`})}export{h as FileUploader};
3
- //# sourceMappingURL=file-uploader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-uploader.js","names":[],"sources":["../../packages/components/ui/file-uploader.tsx"],"sourcesContent":["'use client';\nimport { useCallback, useEffect } from 'react';\nimport Dropzone, { type DropzoneProps, type FileRejection } from 'react-dropzone';\nimport { useControllableState } from '@customafk/react-toolkit/hooks/useControllableState';\nimport { cn, formatBytes } from '@customafk/react-toolkit/utils';\n\nimport { FileText, Image, Trash2, Upload } from 'lucide-react';\nimport { toast } from 'sonner';\n\nimport { Button } from '@/components/ui/button';\nimport { Progress } from '@/components/ui/progress';\n\n/**\n * Props for the FileUploader component.\n *\n * @example\n * ```tsx\n * import { FileUploader } from '@customafk/lunas-ui/ui/file-uploader';\n *\n * <FileUploader\n * accept={{ 'image/*': [] }}\n * maxSize={1024 * 1024 * 5}\n * maxFileCount={3}\n * multiple\n * onUpload={async (files) => { await uploadFiles(files); }}\n * />\n * ```\n */\ninterface FileUploaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Value of the uploader.\n * @type File[]\n * @default undefined\n * @example value={files}\n */\n value?: File[];\n\n /**\n * Function to be called when the value changes.\n * @type (files: File[]) => void\n * @default undefined\n * @example onValueChange={(files) => setFiles(files)}\n */\n onValueChange?: (files: File[]) => void;\n\n /**\n * Function to be called when files are uploaded.\n * @type (files: File[]) => Promise<void>\n * @default undefined\n * @example onUpload={(files) => uploadFiles(files)}\n */\n onUpload?: (files: File[]) => Promise<void>;\n\n /**\n * Progress of the uploaded files.\n * @type Record<string, number> | undefined\n * @default undefined\n * @example progresses={{ \"file1.png\": 50 }}\n */\n progresses?: Record<string, number>;\n\n /**\n * Accepted file types for the uploader.\n * @type { [key: string]: string[]}\n * @default\n * ```ts\n * { \"image/*\": [] }\n * ```\n * @example accept={[\"image/png\", \"image/jpeg\"]}\n */\n accept?: DropzoneProps['accept'];\n\n /**\n * Maximum file size for the uploader.\n * @type number | undefined\n * @default 1024 * 1024 * 2 // 2MB\n * @example maxSize={1024 * 1024 * 2} // 2MB\n */\n maxSize?: DropzoneProps['maxSize'];\n\n /**\n * Maximum number of files for the uploader.\n * @type number | undefined\n * @default 1\n * @example maxFileCount={4}\n */\n maxFileCount?: DropzoneProps['maxFiles'];\n\n /**\n * Whether the uploader should accept multiple files.\n * @type boolean\n * @default false\n * @example multiple\n */\n multiple?: boolean;\n\n /**\n * Whether the uploader is disabled.\n * @type boolean\n * @default false\n * @example disabled\n */\n disabled?: boolean;\n\n /**\n * Whether to show the instructional drag-and-drop text inside the drop zone.\n * @default true\n */\n showText?: boolean;\n /** Size in pixels for the upload icon. */\n iconSize?: number;\n}\n\n/**\n * A drag-and-drop file upload zone that manages file selection, validation, preview generation, and optional async upload with progress tracking.\n */\nexport function FileUploader(props: FileUploaderProps) {\n const {\n value: valueProp,\n onValueChange,\n onUpload,\n progresses,\n accept = {\n 'image/*': [],\n },\n maxSize = 1024 * 1024 * 2,\n maxFileCount = 1,\n multiple = false,\n disabled = false,\n showText = true,\n iconSize,\n className,\n ...dropzoneProps\n } = props;\n\n const [files, setFiles] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n });\n\n const onDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n if (!multiple && maxFileCount === 1 && acceptedFiles.length > 1) {\n toast.error('Cannot upload more than 1 file at a time');\n\n return;\n }\n\n if ((files?.length ?? 0) + acceptedFiles.length > maxFileCount) {\n toast.error(`Cannot upload more than ${maxFileCount} files`);\n return;\n }\n\n const newFiles = acceptedFiles.map(file =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n );\n\n const updatedFiles = files ? [...files, ...newFiles] : newFiles;\n\n setFiles(updatedFiles);\n\n if (rejectedFiles.length > 0) {\n rejectedFiles.forEach(({ file }) => {\n toast.error(`File ${file.name} was rejected`);\n });\n }\n\n if (onUpload && updatedFiles.length > 0 && updatedFiles.length <= maxFileCount) {\n const target = updatedFiles.length > 0 ? `${updatedFiles.length} files` : `file`;\n\n onUpload(updatedFiles).then(() => {\n setFiles([]);\n toast(`${target} uploaded`);\n });\n }\n },\n\n [files, maxFileCount, multiple, onUpload, setFiles]\n );\n\n function onRemove(index: number) {\n if (!files) return;\n\n if (isFileWithPreview(files[index])) {\n URL.revokeObjectURL(files[index].preview);\n }\n\n const newFiles = files.filter((_, i) => i !== index);\n setFiles(newFiles);\n onValueChange?.(newFiles);\n }\n\n // Revoke preview url when component unmounts\n useEffect(() => {\n return () => {\n if (!files) return;\n files.forEach(file => {\n if (isFileWithPreview(file)) {\n URL.revokeObjectURL(file.preview);\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isDisabled = disabled || (files?.length ?? 0) >= maxFileCount;\n\n return (\n <div className=\"relative flex w-full flex-col gap-6\">\n <Dropzone onDrop={onDrop} accept={accept} maxSize={maxSize} maxFiles={maxFileCount} multiple={maxFileCount > 1 || multiple} disabled={isDisabled}>\n {({ getRootProps, getInputProps, isDragActive }) => (\n <div\n {...getRootProps()}\n className={cn(\n 'group',\n 'border-border-weak',\n 'hover:bg-border-weak/20',\n 'relative grid h-52 w-full cursor-pointer place-items-center rounded-lg border-2 border-dashed px-5 py-2.5 text-center transition',\n 'ring-offset-background',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-2',\n 'focus-visible:ring-offset-2',\n 'focus-visible:outline-hidden',\n isDragActive && 'border-border-primary-strong bg-border-weak/40',\n isDisabled && 'pointer-events-none opacity-60',\n className\n )}\n {...dropzoneProps}\n >\n <input {...getInputProps()} />\n {isDragActive ? (\n <div className=\"flex flex-col items-center justify-center gap-4 sm:px-5\">\n <div className=\"rounded-full border border-dashed p-3\">\n <Upload className=\"text-text-positive-muted size-7\" aria-hidden=\"true\" />\n </div>\n <p className=\"text-text-positive-muted font-medium\">Drop the files here</p>\n </div>\n ) : (\n <div className=\"flex flex-col items-center justify-center gap-4 sm:px-5\">\n <div className=\"rounded-full border border-dashed p-3\">\n <Upload size={iconSize || 24} className=\"text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n {showText && (\n <div className=\"flex flex-col gap-px\">\n <p className=\"text-text-positive-weak text-xs font-medium\">Drag {`'n'`} drop files here, or click to select files</p>\n <p className=\"text-text-positive-muted text-xs\">\n You can upload\n {maxFileCount > 1\n ? ` ${maxFileCount === Infinity ? 'multiple' : maxFileCount}\n files (up to ${formatBytes(maxSize)} each)`\n : ` a file with ${formatBytes(maxSize)}`}\n </p>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </Dropzone>\n {files?.length ? (\n <div className=\"h-fit w-full overflow-y-auto\">\n <div className=\"flex items-center justify-between px-3 py-2.5\">\n <div className=\"text-text-positive-weak flex items-center gap-1\">\n <Image size={16} aria-hidden=\"true\" />\n <p className=\"text-sm\">Ảnh đã tải lên ({files.length})</p>\n </div>\n <button\n className=\"hover:text-text-positive text-text-positive-muted flex cursor-pointer items-center gap-1 transition-colors duration-200\"\n onClick={() => {\n if (!files) return;\n files.forEach(file => {\n if (!isFileWithPreview(file)) return;\n URL.revokeObjectURL(file.preview);\n });\n setFiles([]);\n onValueChange?.([]);\n }}\n >\n <Trash2 size={16} aria-hidden=\"true\" />\n <p className=\"text-sm\">Xóa tất cả</p>\n </button>\n </div>\n <div className=\"flex flex-col gap-2.5\">\n {files?.map((file, index) => (\n <FileCard key={index} file={file} onRemove={() => onRemove(index)} progress={progresses?.[file.name]} />\n ))}\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\ninterface FileCardProps {\n file: File;\n onRemove: () => void;\n progress?: number;\n}\n\nfunction FileCard({ file, progress, onRemove }: FileCardProps) {\n return (\n <div className=\"border-border-weak hover:border-border relative flex items-center gap-4 rounded-md border py-2 pr-3 pl-2 shadow-xs transition-colors\">\n <div className=\"flex flex-1 gap-2.5\">\n {isFileWithPreview(file) ? <FilePreview file={file} /> : null}\n <div className=\"flex w-full flex-col gap-2\">\n <div className=\"flex flex-col gap-y-0.5\">\n <p className=\"text-text-positive line-clamp-1 text-sm\">{file.name}</p>\n <p className=\"text-text-positive-muted text-xs\">{formatBytes(file.size)}</p>\n </div>\n {progress ? <Progress value={progress} /> : null}\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button type=\"button\" variant=\"ghost\" color=\"secondary\" size=\"icon\" className=\"size-7\" onClick={onRemove}>\n <Trash2 size={16} className=\"text-text-positive-muted\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Remove file</span>\n </Button>\n </div>\n </div>\n );\n}\n\nfunction isFileWithPreview(file: File): file is File & { preview: string } {\n return 'preview' in file && typeof file.preview === 'string';\n}\n\ninterface FilePreviewProps {\n file: File & { preview: string };\n}\n\nfunction FilePreview({ file }: FilePreviewProps) {\n if (file.type.startsWith('image/')) {\n return <img src={file.preview} className=\"border-border aspect-square size-10 shrink-0 rounded border object-cover object-top shadow-sm\" />;\n }\n\n return <FileText className=\"text-text-positive-muted size-10 border\" aria-hidden=\"true\" />;\n}\n"],"mappings":"8fAoHA,SAAgB,EAAa,EAA0B,CACrD,GAAM,CACJ,MAAO,EACP,gBACA,WACA,aACA,SAAS,CACP,UAAW,EAAE,CACd,CACD,UAAU,KAAO,KAAO,EACxB,eAAe,EACf,WAAW,GACX,WAAW,GACX,WAAW,GACX,WACA,YACA,GAAG,GACD,EAEE,CAAC,EAAO,GAAY,EAAqB,CAC7C,KAAM,EACN,SAAU,EACX,CAAC,CAEI,EAAS,GACZ,EAAuB,IAAmC,CACzD,GAAI,CAAC,GAAY,IAAiB,GAAK,EAAc,OAAS,EAAG,CAC/D,EAAM,MAAM,2CAA2C,CAEvD,OAGF,IAAK,GAAO,QAAU,GAAK,EAAc,OAAS,EAAc,CAC9D,EAAM,MAAM,2BAA2B,EAAa,QAAQ,CAC5D,OAGF,IAAM,EAAW,EAAc,IAAI,GACjC,OAAO,OAAO,EAAM,CAClB,QAAS,IAAI,gBAAgB,EAAK,CACnC,CAAC,CACH,CAEK,EAAe,EAAQ,CAAC,GAAG,EAAO,GAAG,EAAS,CAAG,EAUvD,GARA,EAAS,EAAa,CAElB,EAAc,OAAS,GACzB,EAAc,SAAS,CAAE,UAAW,CAClC,EAAM,MAAM,QAAQ,EAAK,KAAK,eAAe,EAC7C,CAGA,GAAY,EAAa,OAAS,GAAK,EAAa,QAAU,EAAc,CAC9E,IAAM,EAAS,EAAa,OAAS,EAAI,GAAG,EAAa,OAAO,QAAU,OAE1E,EAAS,EAAa,CAAC,SAAW,CAChC,EAAS,EAAE,CAAC,CACZ,EAAM,GAAG,EAAO,WAAW,EAC3B,GAIN,CAAC,EAAO,EAAc,EAAU,EAAU,EAAS,CACpD,CAED,SAAS,EAAS,EAAe,CAC/B,GAAI,CAAC,EAAO,OAER,EAAkB,EAAM,GAAO,EACjC,IAAI,gBAAgB,EAAM,GAAO,QAAQ,CAG3C,IAAM,EAAW,EAAM,QAAQ,EAAG,IAAM,IAAM,EAAM,CACpD,EAAS,EAAS,CAClB,IAAgB,EAAS,CAI3B,UACe,CACN,GACL,EAAM,QAAQ,GAAQ,CAChB,EAAkB,EAAK,EACzB,IAAI,gBAAgB,EAAK,QAAQ,EAEnC,EAGH,EAAE,CAAC,CAEN,IAAM,EAAa,IAAa,GAAO,QAAU,IAAM,EAEvD,OACE,EAAC,MAAA,CAAI,UAAU,gDACb,EAAC,EAAA,CAAiB,SAAgB,SAAiB,UAAS,SAAU,EAAc,SAAU,EAAe,GAAK,EAAU,SAAU,YAClI,CAAE,eAAc,gBAAe,kBAC/B,EAAC,MAAA,CACC,GAAI,GAAc,CAClB,UAAW,EACT,QACA,qBACA,0BACA,mIACA,yBACA,kCACA,uBACA,8BACA,+BACA,GAAgB,iDAChB,GAAc,iCACd,EACD,CACD,GAAI,YAEJ,EAAC,QAAA,CAAM,GAAI,GAAe,CAAA,CAAI,CAC7B,EACC,EAAC,MAAA,CAAI,UAAU,oEACb,EAAC,MAAA,CAAI,UAAU,iDACb,EAAC,EAAA,CAAO,UAAU,kCAAkC,cAAY,QAAS,EACrE,CACN,EAAC,IAAA,CAAE,UAAU,gDAAuC,uBAAuB,CAAA,EACvE,CAEN,EAAC,MAAA,CAAI,UAAU,oEACb,EAAC,MAAA,CAAI,UAAU,iDACb,EAAC,EAAA,CAAO,KAAM,GAAY,GAAI,UAAU,wBAAwB,cAAY,QAAS,EACjF,CACL,GACC,EAAC,MAAA,CAAI,UAAU,iCACb,EAAC,IAAA,CAAE,UAAU,wDAA8C,QAAM,MAAM,+CAA8C,CACrH,EAAC,IAAA,CAAE,UAAU,6CAAmC,iBAE7C,EAAe,EACZ,IAAI,IAAiB,IAAW,WAAa,EAAa;qCAC/C,EAAY,EAAQ,CAAC,QAChC,gBAAgB,EAAY,EAAQ,GAAA,EACtC,CAAA,EACA,CAAA,EAEJ,CAAA,EAEJ,EAEC,CACV,GAAO,OACN,EAAC,MAAA,CAAI,UAAU,yCACb,EAAC,MAAA,CAAI,UAAU,0DACb,EAAC,MAAA,CAAI,UAAU,4DACb,EAAC,EAAA,CAAM,KAAM,GAAI,cAAY,QAAS,CACtC,EAAC,IAAA,CAAE,UAAU,oBAAU,mBAAiB,EAAM,OAAO,MAAK,CAAA,EACtD,CACN,EAAC,SAAA,CACC,UAAU,0HACV,YAAe,CACR,IACL,EAAM,QAAQ,GAAQ,CACf,EAAkB,EAAK,EAC5B,IAAI,gBAAgB,EAAK,QAAQ,EACjC,CACF,EAAS,EAAE,CAAC,CACZ,IAAgB,EAAE,CAAC,aAGrB,EAAC,EAAA,CAAO,KAAM,GAAI,cAAY,QAAS,CACvC,EAAC,IAAA,CAAE,UAAU,mBAAU,cAAc,CAAA,EAC9B,CAAA,EACL,CACN,EAAC,MAAA,CAAI,UAAU,iCACZ,GAAO,KAAK,EAAM,IACjB,EAAC,EAAA,CAA2B,OAAM,aAAgB,EAAS,EAAM,CAAE,SAAU,IAAa,EAAK,OAAhF,EAAyF,CACxG,EACE,CAAA,EACF,CACJ,KAAA,EACA,CAUV,SAAS,EAAS,CAAE,OAAM,WAAU,YAA2B,CAC7D,OACE,EAAC,MAAA,CAAI,UAAU,iJACb,EAAC,MAAA,CAAI,UAAU,gCACZ,EAAkB,EAAK,CAAG,EAAC,EAAA,CAAkB,OAAA,CAAQ,CAAG,KACzD,EAAC,MAAA,CAAI,UAAU,uCACb,EAAC,MAAA,CAAI,UAAU,oCACb,EAAC,IAAA,CAAE,UAAU,mDAA2C,EAAK,MAAS,CACtE,EAAC,IAAA,CAAE,UAAU,4CAAoC,EAAY,EAAK,KAAK,EAAK,CAAA,EACxE,CACL,EAAW,EAAC,EAAA,CAAS,MAAO,EAAA,CAAY,CAAG,KAAA,EACxC,CAAA,EACF,CACN,EAAC,MAAA,CAAI,UAAU,mCACb,EAAC,EAAA,CAAO,KAAK,SAAS,QAAQ,QAAQ,MAAM,YAAY,KAAK,OAAO,UAAU,SAAS,QAAS,YAC9F,EAAC,EAAA,CAAO,KAAM,GAAI,UAAU,2BAA2B,cAAY,QAAS,CAC5E,EAAC,OAAA,CAAK,UAAU,mBAAU,eAAkB,CAAA,EACrC,EACL,CAAA,EACF,CAIV,SAAS,EAAkB,EAAgD,CACzE,MAAO,YAAa,GAAQ,OAAO,EAAK,SAAY,SAOtD,SAAS,EAAY,CAAE,QAA0B,CAK/C,OAJI,EAAK,KAAK,WAAW,SAAS,CACzB,EAAC,MAAA,CAAI,IAAK,EAAK,QAAS,UAAU,iGAAkG,CAGtI,EAAC,EAAA,CAAS,UAAU,0CAA0C,cAAY,QAAS"}
package/dist/ui/form.d.ts DELETED
@@ -1,112 +0,0 @@
1
- import * as react156 from "react";
2
- import { Label, Slot } from "radix-ui";
3
- import * as react_hook_form0 from "react-hook-form";
4
- import { ControllerProps, FieldPath, FieldValues } from "react-hook-form";
5
-
6
- //#region packages/components/ui/form.d.ts
7
-
8
- /**
9
- * Re-export of react-hook-form's `FormProvider`; wrap your form with this to give all nested form components access to the form context.
10
- *
11
- * @example
12
- * ```tsx
13
- * import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from '@customafk/lunas-ui/ui/form';
14
- * import { useForm } from 'react-hook-form';
15
- *
16
- * const form = useForm<{ username: string }>();
17
- *
18
- * <Form {...form}>
19
- * <form onSubmit={form.handleSubmit(onSubmit)}>
20
- * <FormField
21
- * control={form.control}
22
- * name="username"
23
- * render={({ field }) => (
24
- * <FormItem>
25
- * <FormLabel>Username</FormLabel>
26
- * <FormControl><input {...field} /></FormControl>
27
- * <FormMessage />
28
- * </FormItem>
29
- * )}
30
- * />
31
- * </form>
32
- * </Form>
33
- * ```
34
- */
35
- declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({
36
- children,
37
- watch,
38
- getValues,
39
- getFieldState,
40
- setError,
41
- clearErrors,
42
- setValue,
43
- setValues,
44
- trigger,
45
- formState,
46
- resetField,
47
- reset,
48
- handleSubmit,
49
- unregister,
50
- control,
51
- register,
52
- setFocus,
53
- subscribe
54
- }: react_hook_form0.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
55
- /**
56
- * Connects a single react-hook-form field to the form context; renders a `Controller` and passes `name` down to nested FormItem, FormLabel, FormControl, and FormMessage.
57
- */
58
- declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({
59
- ...props
60
- }: ControllerProps<TFieldValues, TName>) => react156.JSX.Element;
61
- /**
62
- * Hook that returns the field state and IDs for the enclosing FormField.
63
- * Must be called inside a component rendered within a `<FormField>`.
64
- */
65
- declare const useFormField: () => {
66
- invalid: boolean;
67
- isDirty: boolean;
68
- isTouched: boolean;
69
- isValidating: boolean;
70
- error?: react_hook_form0.FieldError;
71
- id: string;
72
- control: react_hook_form0.Control<FieldValues, any, FieldValues>;
73
- resetField: react_hook_form0.UseFormResetField<FieldValues>;
74
- name: string;
75
- formItemId: string;
76
- formDescriptionId: string;
77
- formMessageId: string;
78
- };
79
- /**
80
- * Container for a single form field — generates a unique ID and provides it via context to FormLabel, FormControl, and FormMessage.
81
- *
82
- * @param orientation - Layout direction: `'vertical'`, `'horizontal'`, or `'responsive'` (default).
83
- */
84
- declare const FormItem: react156.MemoExoticComponent<({
85
- className,
86
- orientation,
87
- ...props
88
- }: React.ComponentProps<"div"> & {
89
- orientation?: "vertical" | "horizontal" | "responsive";
90
- }) => react156.JSX.Element>;
91
- /** Styled label automatically associated with the FormItem's control via `htmlFor`. */
92
- declare const FormLabel: react156.MemoExoticComponent<({
93
- ...props
94
- }: React.ComponentProps<typeof Label.Root>) => react156.JSX.Element>;
95
- /** Radix Slot wrapper that wires the correct `id`, `aria-describedby`, and `aria-invalid` attributes onto the underlying control element. */
96
- declare const FormControl: react156.MemoExoticComponent<({
97
- ...props
98
- }: React.ComponentProps<typeof Slot.Slot>) => react156.JSX.Element>;
99
- /** Helper text displayed below the control that provides additional context about the field. */
100
- declare function FormDescription({
101
- className,
102
- ...props
103
- }: React.ComponentProps<'p'>): react156.JSX.Element;
104
- /** Displays the validation error message for the field, or falls back to `children` when there is no error. */
105
- declare function FormMessage({
106
- className,
107
- children,
108
- ...props
109
- }: React.ComponentProps<'p'>): react156.JSX.Element;
110
- //#endregion
111
- export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField };
112
- //# sourceMappingURL=form.d.ts.map
package/dist/ui/form.js DELETED
@@ -1,2 +0,0 @@
1
- "use client";import{o as e,r as t,t as n}from"../field-DG-kX3HU.js";import{cn as r}from"@customafk/react-toolkit/utils";import{jsx as i}from"react/jsx-runtime";import{createContext as a,memo as o,use as s,useId as c}from"react";import{Slot as l}from"radix-ui";import{Controller as u,FormProvider as d,useFormContext as f,useFormState as p}from"react-hook-form";const m=d,h=a({}),g=({...e})=>i(h.Provider,{value:{name:e.name},children:i(u,{...e})}),_=()=>{let e=s(h),t=s(v),{getFieldState:n,control:r,resetField:i}=f(),a=p({name:e.name}),o=n(e.name,a);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:c}=t;return{id:c,control:r,resetField:i,name:e.name,formItemId:`${c}-form-item`,formDescriptionId:`${c}-form-item-description`,formMessageId:`${c}-form-item-message`,...o}},v=a({}),y=o(({className:e,orientation:t=`responsive`,...r})=>{let a=c();return i(v.Provider,{value:{id:a},children:i(n,{orientation:t,...r,className:e})})});y.displayName=`FormItem`;const b=o(({...t})=>{let{formItemId:n}=_();return i(e,{htmlFor:n,...t})});b.displayName=`FormLabel`;const x=o(({...e})=>{let{error:t,formItemId:n,formDescriptionId:r,formMessageId:a}=_();return i(l.Slot,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${a}`:`${r}`,"aria-invalid":!!t,...e})});x.displayName=`FormControl`;function S({className:e,...n}){let{formDescriptionId:a}=_();return i(t,{id:a,className:r(`text-text-positive-weak text-sm/6 leading-normal font-normal`,`group-has-data-[orientation=horizontal]/field:text-balance`,`last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5`,`[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4`,e),...n})}function C({className:e,children:t,...n}){let{error:a,formMessageId:o}=_();return i(`span`,{"data-slot":`form-message`,id:o,className:r(`text-danger text-xs`,e),...n,children:a?String(a?.message??``):t})}export{m as Form,x as FormControl,S as FormDescription,g as FormField,y as FormItem,b as FormLabel,C as FormMessage,_ as useFormField};
2
- //# sourceMappingURL=form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form.js","names":["SlotPrimitive"],"sources":["../../packages/components/ui/form.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { type Label as LabelPrimitive, Slot as SlotPrimitive } from 'radix-ui';\nimport { createContext, memo, use, useId } from 'react';\nimport type { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\nimport { Field, FieldDescription, FieldLabel } from './field';\n\n/**\n * Re-export of react-hook-form's `FormProvider`; wrap your form with this to give all nested form components access to the form context.\n *\n * @example\n * ```tsx\n * import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from '@customafk/lunas-ui/ui/form';\n * import { useForm } from 'react-hook-form';\n *\n * const form = useForm<{ username: string }>();\n *\n * <Form {...form}>\n * <form onSubmit={form.handleSubmit(onSubmit)}>\n * <FormField\n * control={form.control}\n * name=\"username\"\n * render={({ field }) => (\n * <FormItem>\n * <FormLabel>Username</FormLabel>\n * <FormControl><input {...field} /></FormControl>\n * <FormMessage />\n * </FormItem>\n * )}\n * />\n * </form>\n * </Form>\n * ```\n */\nconst Form = FormProvider;\n\ntype FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {\n name: TName;\n};\n\nconst FormFieldContext = createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\n/**\n * Connects a single react-hook-form field to the form context; renders a `Controller` and passes `name` down to nested FormItem, FormLabel, FormControl, and FormMessage.\n */\nconst FormField = <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\n/**\n * Hook that returns the field state and IDs for the enclosing FormField.\n * Must be called inside a component rendered within a `<FormField>`.\n */\nconst useFormField = () => {\n const fieldContext = use(FormFieldContext);\n const itemContext = use(FormItemContext);\n const { getFieldState, control, resetField } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n control,\n resetField,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = createContext<FormItemContextValue>({} as FormItemContextValue);\n\n/**\n * Container for a single form field — generates a unique ID and provides it via context to FormLabel, FormControl, and FormMessage.\n *\n * @param orientation - Layout direction: `'vertical'`, `'horizontal'`, or `'responsive'` (default).\n */\nconst FormItem = memo(\n ({\n className,\n orientation = 'responsive',\n ...props\n }: React.ComponentProps<'div'> & {\n orientation?: 'vertical' | 'horizontal' | 'responsive';\n }) => {\n const id = useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <Field orientation={orientation} {...props} className={className} />\n </FormItemContext.Provider>\n );\n }\n);\nFormItem.displayName = 'FormItem';\n\n/** Styled label automatically associated with the FormItem's control via `htmlFor`. */\nconst FormLabel = memo(({ ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) => {\n const { formItemId } = useFormField();\n return <FieldLabel htmlFor={formItemId} {...props} />;\n});\nFormLabel.displayName = 'FormLabel';\n\n/** Radix Slot wrapper that wires the correct `id`, `aria-describedby`, and `aria-invalid` attributes onto the underlying control element. */\nconst FormControl = memo(({ ...props }: React.ComponentProps<typeof SlotPrimitive.Slot>) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <SlotPrimitive.Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\n/** Helper text displayed below the control that provides additional context about the field. */\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <FieldDescription\n id={formDescriptionId}\n className={cn(\n 'text-text-positive-weak text-sm/6 leading-normal font-normal',\n 'group-has-data-[orientation=horizontal]/field:text-balance',\n 'last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5',\n '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Displays the validation error message for the field, or falls back to `children` when there is no error. */\nfunction FormMessage({ className, children, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n\n return (\n <span data-slot=\"form-message\" id={formMessageId} className={cn('text-danger text-xs', className)} {...props}>\n {error ? String(error?.message ?? '') : children}\n </span>\n );\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField };\n"],"mappings":"yWAoCA,MAAM,EAAO,EAMP,EAAmB,EAAqC,EAAE,CAA0B,CAKpF,GAA8H,CAClI,GAAG,KAGD,EAAC,EAAiB,SAAA,CAAS,MAAO,CAAE,KAAM,EAAM,KAAM,UACpD,EAAC,EAAA,CAAW,GAAI,EAAA,CAAS,EACC,CAQ1B,MAAqB,CACzB,IAAM,EAAe,EAAI,EAAiB,CACpC,EAAc,EAAI,EAAgB,CAClC,CAAE,gBAAe,UAAS,cAAe,GAAgB,CACzD,EAAY,EAAa,CAAE,KAAM,EAAa,KAAM,CAAC,CACrD,EAAa,EAAc,EAAa,KAAM,EAAU,CAE9D,GAAI,CAAC,EACH,MAAU,MAAM,iDAAiD,CAGnE,GAAM,CAAE,MAAO,EAEf,MAAO,CACL,KACA,UACA,aACA,KAAM,EAAa,KACnB,WAAY,GAAG,EAAG,YAClB,kBAAmB,GAAG,EAAG,wBACzB,cAAe,GAAG,EAAG,oBACrB,GAAG,EACJ,EAOG,EAAkB,EAAoC,EAAE,CAAyB,CAOjF,EAAW,GACd,CACC,YACA,cAAc,aACd,GAAG,KAGC,CACJ,IAAM,EAAK,GAAO,CAElB,OACE,EAAC,EAAgB,SAAA,CAAS,MAAO,CAAE,KAAI,UACrC,EAAC,EAAA,CAAmB,cAAa,GAAI,EAAkB,aAAa,EAC3C,EAGhC,CACD,EAAS,YAAc,WAGvB,MAAM,EAAY,GAAM,CAAE,GAAG,KAA8D,CACzF,GAAM,CAAE,cAAe,GAAc,CACrC,OAAO,EAAC,EAAA,CAAW,QAAS,EAAY,GAAI,GAAS,EACrD,CACF,EAAU,YAAc,YAGxB,MAAM,EAAc,GAAM,CAAE,GAAG,KAA6D,CAC1F,GAAM,CAAE,QAAO,aAAY,oBAAmB,iBAAkB,GAAc,CAE9E,OACE,EAACA,EAAc,KAAA,CACb,YAAU,eACV,GAAI,EACJ,mBAAmB,EAAiC,GAAG,EAAkB,GAAG,IAAjD,GAAG,IAC9B,eAAc,CAAC,CAAC,EAChB,GAAI,GACJ,EAEJ,CACF,EAAY,YAAc,cAG1B,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAoC,CAC3E,GAAM,CAAE,qBAAsB,GAAc,CAE5C,OACE,EAAC,EAAA,CACC,GAAI,EACJ,UAAW,EACT,+DACA,6DACA,+DACA,oEACA,EACD,CACD,GAAI,GACJ,CAKN,SAAS,EAAY,CAAE,YAAW,WAAU,GAAG,GAAoC,CACjF,GAAM,CAAE,QAAO,iBAAkB,GAAc,CAE/C,OACE,EAAC,OAAA,CAAK,YAAU,eAAe,GAAI,EAAe,UAAW,EAAG,sBAAuB,EAAU,CAAE,GAAI,WACpG,EAAQ,OAAO,GAAO,SAAW,GAAG,CAAG,GACnC"}
@@ -1,37 +0,0 @@
1
- import * as react153 from "react";
2
- import { HoverCard as HoverCard$1 } from "radix-ui";
3
-
4
- //#region packages/components/ui/hover-card.d.ts
5
-
6
- /**
7
- * Root provider for the HoverCard — shows a floating card when the trigger is hovered.
8
- *
9
- * @example
10
- * ```tsx
11
- * import { HoverCard, HoverCardTrigger, HoverCardContent } from '@customafk/lunas-ui/ui/hover-card';
12
- *
13
- * <HoverCard>
14
- * <HoverCardTrigger>@username</HoverCardTrigger>
15
- * <HoverCardContent>
16
- * <p>Profile details here</p>
17
- * </HoverCardContent>
18
- * </HoverCard>
19
- * ```
20
- */
21
- declare function HoverCard({
22
- ...props
23
- }: React.ComponentProps<typeof HoverCard$1.Root>): react153.JSX.Element;
24
- /** The element that triggers the HoverCard on pointer enter. */
25
- declare function HoverCardTrigger({
26
- ...props
27
- }: React.ComponentProps<typeof HoverCard$1.Trigger>): react153.JSX.Element;
28
- /** The floating card panel displayed when the trigger is hovered. */
29
- declare function HoverCardContent({
30
- className,
31
- align,
32
- sideOffset,
33
- ...props
34
- }: React.ComponentProps<typeof HoverCard$1.Content>): react153.JSX.Element;
35
- //#endregion
36
- export { HoverCard, HoverCardContent, HoverCardTrigger };
37
- //# sourceMappingURL=hover-card.d.ts.map
@@ -1,2 +0,0 @@
1
- "use client";import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t}from"react/jsx-runtime";import{HoverCard as n}from"radix-ui";function r({...e}){return t(n.Root,{"data-slot":`hover-card`,...e})}function i({...e}){return t(n.Trigger,{"data-slot":`hover-card-trigger`,...e})}function a({className:r,align:i=`center`,sideOffset:a=4,...o}){return t(n.Portal,{"data-slot":`hover-card-portal`,children:t(n.Content,{"data-slot":`hover-card-content`,align:i,sideOffset:a,className:e(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden`,r),...o})})}export{r as HoverCard,a as HoverCardContent,i as HoverCardTrigger};
2
- //# sourceMappingURL=hover-card.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hover-card.js","names":["HoverCardPrimitive"],"sources":["../../packages/components/ui/hover-card.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the HoverCard — shows a floating card when the trigger is hovered.\n *\n * @example\n * ```tsx\n * import { HoverCard, HoverCardTrigger, HoverCardContent } from '@customafk/lunas-ui/ui/hover-card';\n *\n * <HoverCard>\n * <HoverCardTrigger>@username</HoverCardTrigger>\n * <HoverCardContent>\n * <p>Profile details here</p>\n * </HoverCardContent>\n * </HoverCard>\n * ```\n */\nfunction HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\n/** The element that triggers the HoverCard on pointer enter. */\nfunction HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />;\n}\n\n/** The floating card panel displayed when the trigger is hovered. */\nfunction HoverCardContent({ className, align = 'center', sideOffset = 4, ...props }: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n"],"mappings":"8IAoBA,SAAS,EAAU,CAAE,GAAG,GAA+D,CACrF,OAAO,EAACA,EAAmB,KAAA,CAAK,YAAU,aAAa,GAAI,GAAS,CAItE,SAAS,EAAiB,CAAE,GAAG,GAAkE,CAC/F,OAAO,EAACA,EAAmB,QAAA,CAAQ,YAAU,qBAAqB,GAAI,GAAS,CAIjF,SAAS,EAAiB,CAAE,YAAW,QAAQ,SAAU,aAAa,EAAG,GAAG,GAAkE,CAC5I,OACE,EAACA,EAAmB,OAAA,CAAO,YAAU,6BACnC,EAACA,EAAmB,QAAA,CAClB,YAAU,qBACH,QACK,aACZ,UAAW,EACT,oeACA,EACD,CACD,GAAI,GACJ,EACwB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.cjs","names":["Image: React.FC<Props>","AlertCircleIcon","Skeleton"],"sources":["../../packages/components/ui/image.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { AlertCircleIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Skeleton } from './skeleton';\n\n/** Props for the Image component. */\ntype Props = {\n /** URL of the image to display. */\n src?: string;\n /** Accessible alt text for the image. */\n alt?: string;\n /** Width of the image container (number treated as pixels). */\n width?: number | string;\n /** Height of the image container (number treated as pixels). */\n height?: number | string;\n /** Maximum number of retry attempts on load failure before showing an error state. @default 3 */\n maxRetries?: number;\n /** Base delay in milliseconds between retry attempts (multiplied by the attempt count). @default 500 */\n retryDelay?: number;\n /** Class name applied to the outer container div. */\n className?: string;\n /** Class name applied to the `<img>` element. */\n imageClassName?: string;\n /** Click handler for the image container. */\n onClick?: () => void;\n};\n\n/**\n * A lazy-loading image with an automatic retry mechanism, a blurred background placeholder, a skeleton loader, and an error fallback.\n *\n * @example\n * ```tsx\n * import { Image } from '@customafk/lunas-ui/ui/image';\n *\n * <Image src=\"/hero.jpg\" alt=\"Hero\" width={400} height={300} maxRetries={3} />\n * ```\n */\nexport const Image: React.FC<Props> = ({ src, alt, width, height, maxRetries = 3, retryDelay = 500, className, imageClassName, onClick }) => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [currentSrc, setCurrentSrc] = useState<string | undefined>(src);\n const [retryCount, setRetryCount] = useState<number>(0);\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [hasError, setHasError] = useState<boolean>(false);\n\n const handleLoad = useCallback(() => {\n setIsLoaded(true);\n }, []);\n\n const handleError = useCallback(() => {\n if (retryCount < maxRetries) {\n // imageRef.current?.style.setProperty('display', 'none')\n setHasError(false);\n const newRetryCount = retryCount + 1;\n setRetryCount(newRetryCount);\n\n // Retry with exponential backoff and cache busting\n setTimeout(() => {\n const cacheBuster = `?retry=${Date.now()}&attempt=${newRetryCount}`;\n setCurrentSrc(src + cacheBuster);\n }, retryDelay * newRetryCount);\n return;\n }\n\n setHasError(true);\n setIsLoaded(true);\n setCurrentSrc(src);\n }, [maxRetries, retryCount, retryDelay, src]);\n\n if (hasError) {\n return (\n <div style={{ width, height }} className={cn('@container relative inline-block', className)}>\n <div className=\"flex size-full flex-col items-center justify-center gap-y-2 rounded bg-danger-muted shadow-card\">\n <AlertCircleIcon className=\"@max-[52px]:size-6 size-8 text-danger\" />\n <span className=\"@max-[96px]:sr-only text-center text-danger-weak text-xs\">Image failed to load</span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={{ width, height }} className={cn('relative flex items-center justify-center overflow-hidden rounded', className)} onClick={onClick}>\n {!isLoaded && <Skeleton className=\"absolute inset-0 flex size-full animate-pulse items-center justify-center\" />}\n <img src={currentSrc} className=\"absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60\" />\n <img\n id={currentSrc}\n ref={imageRef}\n src={currentSrc}\n alt={alt}\n loading=\"lazy\"\n className={cn(\n 'relative h-6/5 w-auto object-cover shadow-card transition-opacity duration-300',\n isLoaded && 'opacity-100',\n !isLoaded && 'pointer-events-none opacity-0',\n imageClassName\n )}\n onLoad={handleLoad}\n onError={handleError}\n />\n </div>\n );\n};\n"],"mappings":"2MAwCA,MAAaA,GAA0B,CAAE,MAAK,MAAK,QAAO,SAAQ,aAAa,EAAG,aAAa,IAAK,YAAW,iBAAgB,aAAc,CAC3I,IAAM,GAAA,EAAA,EAAA,QAAoC,KAAK,CACzC,CAAC,EAAY,IAAA,EAAA,EAAA,UAA8C,EAAI,CAC/D,CAAC,EAAY,IAAA,EAAA,EAAA,UAAkC,EAAE,CACjD,CAAC,EAAU,IAAA,EAAA,EAAA,UAAiC,GAAM,CAClD,CAAC,EAAU,IAAA,EAAA,EAAA,UAAiC,GAAM,CAElD,GAAA,EAAA,EAAA,iBAA+B,CACnC,EAAY,GAAK,EAChB,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,iBAAgC,CACpC,GAAI,EAAa,EAAY,CAE3B,EAAY,GAAM,CAClB,IAAM,EAAgB,EAAa,EACnC,EAAc,EAAc,CAG5B,eAAiB,CAEf,EAAc,EADM,UAAU,KAAK,KAAK,CAAC,WAAW,IACpB,EAC/B,EAAa,EAAc,CAC9B,OAGF,EAAY,GAAK,CACjB,EAAY,GAAK,CACjB,EAAc,EAAI,EACjB,CAAC,EAAY,EAAY,EAAY,EAAI,CAAC,CAa7C,OAXI,GAEA,EAAA,EAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,WAAA,EAAA,EAAA,IAAc,mCAAoC,EAAU,WACzF,EAAA,EAAA,MAAC,MAAA,CAAI,UAAU,6GACb,EAAA,EAAA,KAACC,EAAAA,gBAAAA,CAAgB,UAAU,wCAAA,CAA0C,EACrE,EAAA,EAAA,KAAC,OAAA,CAAK,UAAU,oEAA2D,wBAA2B,CAAA,EAClG,EACF,EAKR,EAAA,EAAA,MAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,WAAA,EAAA,EAAA,IAAc,oEAAqE,EAAU,CAAW,oBACpI,CAAC,IAAY,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAS,UAAU,4EAAA,CAA8E,EAChH,EAAA,EAAA,KAAC,MAAA,CAAI,IAAK,EAAY,UAAU,+EAAgF,EAChH,EAAA,EAAA,KAAC,MAAA,CACC,GAAI,EACJ,IAAK,EACL,IAAK,EACA,MACL,QAAQ,OACR,WAAA,EAAA,EAAA,IACE,iFACA,GAAY,cACZ,CAAC,GAAY,gCACb,EACD,CACD,OAAQ,EACR,QAAS,GACT,GACE"}
@@ -1,36 +0,0 @@
1
- //#region packages/components/ui/image.d.ts
2
- /** Props for the Image component. */
3
- type Props = {
4
- /** URL of the image to display. */
5
- src?: string;
6
- /** Accessible alt text for the image. */
7
- alt?: string;
8
- /** Width of the image container (number treated as pixels). */
9
- width?: number | string;
10
- /** Height of the image container (number treated as pixels). */
11
- height?: number | string;
12
- /** Maximum number of retry attempts on load failure before showing an error state. @default 3 */
13
- maxRetries?: number;
14
- /** Base delay in milliseconds between retry attempts (multiplied by the attempt count). @default 500 */
15
- retryDelay?: number;
16
- /** Class name applied to the outer container div. */
17
- className?: string;
18
- /** Class name applied to the `<img>` element. */
19
- imageClassName?: string;
20
- /** Click handler for the image container. */
21
- onClick?: () => void;
22
- };
23
- /**
24
- * A lazy-loading image with an automatic retry mechanism, a blurred background placeholder, a skeleton loader, and an error fallback.
25
- *
26
- * @example
27
- * ```tsx
28
- * import { Image } from '@customafk/lunas-ui/ui/image';
29
- *
30
- * <Image src="/hero.jpg" alt="Hero" width={400} height={300} maxRetries={3} />
31
- * ```
32
- */
33
- declare const Image: React.FC<Props>;
34
- //#endregion
35
- export { Image };
36
- //# sourceMappingURL=image.d.ts.map
package/dist/ui/image.js DELETED
@@ -1,2 +0,0 @@
1
- import{t as e}from"../skeleton-DAcbjBGp.js";import{AlertCircleIcon as t}from"lucide-react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{useCallback as a,useRef as o,useState as s}from"react";const c=({src:c,alt:l,width:u,height:d,maxRetries:f=3,retryDelay:p=500,className:m,imageClassName:h,onClick:g})=>{let _=o(null),[v,y]=s(c),[b,x]=s(0),[S,C]=s(!1),[w,T]=s(!1),E=a(()=>{C(!0)},[]),D=a(()=>{if(b<f){T(!1);let e=b+1;x(e),setTimeout(()=>{y(c+`?retry=${Date.now()}&attempt=${e}`)},p*e);return}T(!0),C(!0),y(c)},[f,b,p,c]);return w?r(`div`,{style:{width:u,height:d},className:n(`@container relative inline-block`,m),children:i(`div`,{className:`flex size-full flex-col items-center justify-center gap-y-2 rounded bg-danger-muted shadow-card`,children:[r(t,{className:`@max-[52px]:size-6 size-8 text-danger`}),r(`span`,{className:`@max-[96px]:sr-only text-center text-danger-weak text-xs`,children:`Image failed to load`})]})}):i(`div`,{style:{width:u,height:d},className:n(`relative flex items-center justify-center overflow-hidden rounded`,m),onClick:g,children:[!S&&r(e,{className:`absolute inset-0 flex size-full animate-pulse items-center justify-center`}),r(`img`,{src:v,className:`absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60`}),r(`img`,{id:v,ref:_,src:v,alt:l,loading:`lazy`,className:n(`relative h-6/5 w-auto object-cover shadow-card transition-opacity duration-300`,S&&`opacity-100`,!S&&`pointer-events-none opacity-0`,h),onLoad:E,onError:D})]})};export{c as Image};
2
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","names":["Image: React.FC<Props>"],"sources":["../../packages/components/ui/image.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { AlertCircleIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Skeleton } from './skeleton';\n\n/** Props for the Image component. */\ntype Props = {\n /** URL of the image to display. */\n src?: string;\n /** Accessible alt text for the image. */\n alt?: string;\n /** Width of the image container (number treated as pixels). */\n width?: number | string;\n /** Height of the image container (number treated as pixels). */\n height?: number | string;\n /** Maximum number of retry attempts on load failure before showing an error state. @default 3 */\n maxRetries?: number;\n /** Base delay in milliseconds between retry attempts (multiplied by the attempt count). @default 500 */\n retryDelay?: number;\n /** Class name applied to the outer container div. */\n className?: string;\n /** Class name applied to the `<img>` element. */\n imageClassName?: string;\n /** Click handler for the image container. */\n onClick?: () => void;\n};\n\n/**\n * A lazy-loading image with an automatic retry mechanism, a blurred background placeholder, a skeleton loader, and an error fallback.\n *\n * @example\n * ```tsx\n * import { Image } from '@customafk/lunas-ui/ui/image';\n *\n * <Image src=\"/hero.jpg\" alt=\"Hero\" width={400} height={300} maxRetries={3} />\n * ```\n */\nexport const Image: React.FC<Props> = ({ src, alt, width, height, maxRetries = 3, retryDelay = 500, className, imageClassName, onClick }) => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [currentSrc, setCurrentSrc] = useState<string | undefined>(src);\n const [retryCount, setRetryCount] = useState<number>(0);\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [hasError, setHasError] = useState<boolean>(false);\n\n const handleLoad = useCallback(() => {\n setIsLoaded(true);\n }, []);\n\n const handleError = useCallback(() => {\n if (retryCount < maxRetries) {\n // imageRef.current?.style.setProperty('display', 'none')\n setHasError(false);\n const newRetryCount = retryCount + 1;\n setRetryCount(newRetryCount);\n\n // Retry with exponential backoff and cache busting\n setTimeout(() => {\n const cacheBuster = `?retry=${Date.now()}&attempt=${newRetryCount}`;\n setCurrentSrc(src + cacheBuster);\n }, retryDelay * newRetryCount);\n return;\n }\n\n setHasError(true);\n setIsLoaded(true);\n setCurrentSrc(src);\n }, [maxRetries, retryCount, retryDelay, src]);\n\n if (hasError) {\n return (\n <div style={{ width, height }} className={cn('@container relative inline-block', className)}>\n <div className=\"flex size-full flex-col items-center justify-center gap-y-2 rounded bg-danger-muted shadow-card\">\n <AlertCircleIcon className=\"@max-[52px]:size-6 size-8 text-danger\" />\n <span className=\"@max-[96px]:sr-only text-center text-danger-weak text-xs\">Image failed to load</span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={{ width, height }} className={cn('relative flex items-center justify-center overflow-hidden rounded', className)} onClick={onClick}>\n {!isLoaded && <Skeleton className=\"absolute inset-0 flex size-full animate-pulse items-center justify-center\" />}\n <img src={currentSrc} className=\"absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60\" />\n <img\n id={currentSrc}\n ref={imageRef}\n src={currentSrc}\n alt={alt}\n loading=\"lazy\"\n className={cn(\n 'relative h-6/5 w-auto object-cover shadow-card transition-opacity duration-300',\n isLoaded && 'opacity-100',\n !isLoaded && 'pointer-events-none opacity-0',\n imageClassName\n )}\n onLoad={handleLoad}\n onError={handleError}\n />\n </div>\n );\n};\n"],"mappings":"+PAwCA,MAAaA,GAA0B,CAAE,MAAK,MAAK,QAAO,SAAQ,aAAa,EAAG,aAAa,IAAK,YAAW,iBAAgB,aAAc,CAC3I,IAAM,EAAW,EAAyB,KAAK,CACzC,CAAC,EAAY,GAAiB,EAA6B,EAAI,CAC/D,CAAC,EAAY,GAAiB,EAAiB,EAAE,CACjD,CAAC,EAAU,GAAe,EAAkB,GAAM,CAClD,CAAC,EAAU,GAAe,EAAkB,GAAM,CAElD,EAAa,MAAkB,CACnC,EAAY,GAAK,EAChB,EAAE,CAAC,CAEA,EAAc,MAAkB,CACpC,GAAI,EAAa,EAAY,CAE3B,EAAY,GAAM,CAClB,IAAM,EAAgB,EAAa,EACnC,EAAc,EAAc,CAG5B,eAAiB,CAEf,EAAc,EADM,UAAU,KAAK,KAAK,CAAC,WAAW,IACpB,EAC/B,EAAa,EAAc,CAC9B,OAGF,EAAY,GAAK,CACjB,EAAY,GAAK,CACjB,EAAc,EAAI,EACjB,CAAC,EAAY,EAAY,EAAY,EAAI,CAAC,CAa7C,OAXI,EAEA,EAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,UAAW,EAAG,mCAAoC,EAAU,UACzF,EAAC,MAAA,CAAI,UAAU,4GACb,EAAC,EAAA,CAAgB,UAAU,wCAAA,CAA0C,CACrE,EAAC,OAAA,CAAK,UAAU,oEAA2D,wBAA2B,CAAA,EAClG,EACF,CAKR,EAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,UAAW,EAAG,oEAAqE,EAAU,CAAW,oBACpI,CAAC,GAAY,EAAC,EAAA,CAAS,UAAU,4EAAA,CAA8E,CAChH,EAAC,MAAA,CAAI,IAAK,EAAY,UAAU,+EAAgF,CAChH,EAAC,MAAA,CACC,GAAI,EACJ,IAAK,EACL,IAAK,EACA,MACL,QAAQ,OACR,UAAW,EACT,iFACA,GAAY,cACZ,CAAC,GAAY,gCACb,EACD,CACD,OAAQ,EACR,QAAS,GACT,GACE"}
@@ -1,59 +0,0 @@
1
- import * as react186 from "react";
2
- import { OTPInput } from "input-otp";
3
-
4
- //#region packages/components/ui/input-otp.d.ts
5
-
6
- /**
7
- * One-time password (OTP) input composed of individual character slots.
8
- *
9
- * @example
10
- * ```tsx
11
- * import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from '@customafk/lunas-ui/ui/input-otp';
12
- *
13
- * <InputOTP maxLength={6}>
14
- * <InputOTPGroup>
15
- * <InputOTPSlot index={0} />
16
- * <InputOTPSlot index={1} />
17
- * <InputOTPSlot index={2} />
18
- * </InputOTPGroup>
19
- * <InputOTPSeparator />
20
- * <InputOTPGroup>
21
- * <InputOTPSlot index={3} />
22
- * <InputOTPSlot index={4} />
23
- * <InputOTPSlot index={5} />
24
- * </InputOTPGroup>
25
- * </InputOTP>
26
- * ```
27
- */
28
- declare function InputOTP({
29
- className,
30
- containerClassName,
31
- ...props
32
- }: React.ComponentProps<typeof OTPInput> & {
33
- /** Class name applied to the outer container div. */
34
- containerClassName?: string;
35
- }): react186.JSX.Element;
36
- /** Flex container that groups a sequence of InputOTPSlot elements. */
37
- declare function InputOTPGroup({
38
- className,
39
- ...props
40
- }: React.ComponentProps<'div'>): react186.JSX.Element;
41
- /**
42
- * A single character slot in an InputOTP — displays the typed character and a blinking caret when focused.
43
- *
44
- * @param index - Zero-based position of this slot within the OTP sequence.
45
- */
46
- declare function InputOTPSlot({
47
- index,
48
- className,
49
- ...props
50
- }: React.ComponentProps<'div'> & {
51
- index: number;
52
- }): react186.JSX.Element;
53
- /** Visual separator (dash) placed between InputOTPGroup elements. */
54
- declare function InputOTPSeparator({
55
- ...props
56
- }: React.ComponentProps<'div'>): react186.JSX.Element;
57
- //#endregion
58
- export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
59
- //# sourceMappingURL=input-otp.d.ts.map
@@ -1,2 +0,0 @@
1
- "use client";import{MinusIcon as e}from"lucide-react";import{cn as t}from"@customafk/react-toolkit/utils";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{use as i}from"react";import{OTPInput as a,OTPInputContext as o}from"input-otp";function s({className:e,containerClassName:r,...i}){return n(a,{"data-slot":`input-otp`,containerClassName:t(`flex items-center gap-2 has-disabled:opacity-50`,r),className:t(`disabled:cursor-not-allowed`,e),...i})}function c({className:e,...r}){return n(`div`,{"data-slot":`input-otp-group`,className:t(`flex items-center`,e),...r})}function l({index:e,className:a,...s}){let{char:c,hasFakeCaret:l,isActive:u}=i(o)?.slots[e]??{};return r(`div`,{"data-slot":`input-otp-slot`,"data-active":u,className:t(`data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]`,a),...s,children:[c,l&&n(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:n(`div`,{className:`animate-caret-blink bg-foreground h-4 w-px duration-1000`})})]})}function u({...t}){return n(`div`,{"data-slot":`input-otp-separator`,role:`separator`,...t,children:n(e,{})})}export{s as InputOTP,c as InputOTPGroup,u as InputOTPSeparator,l as InputOTPSlot};
2
- //# sourceMappingURL=input-otp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-otp.js","names":[],"sources":["../../packages/components/ui/input-otp.tsx"],"sourcesContent":["'use client';\nimport { use } from 'react';\n\nimport { MinusIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { OTPInput, OTPInputContext } from 'input-otp';\n\n/**\n * One-time password (OTP) input composed of individual character slots.\n *\n * @example\n * ```tsx\n * import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from '@customafk/lunas-ui/ui/input-otp';\n *\n * <InputOTP maxLength={6}>\n * <InputOTPGroup>\n * <InputOTPSlot index={0} />\n * <InputOTPSlot index={1} />\n * <InputOTPSlot index={2} />\n * </InputOTPGroup>\n * <InputOTPSeparator />\n * <InputOTPGroup>\n * <InputOTPSlot index={3} />\n * <InputOTPSlot index={4} />\n * <InputOTPSlot index={5} />\n * </InputOTPGroup>\n * </InputOTP>\n * ```\n */\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n /** Class name applied to the outer container div. */\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn('flex items-center gap-2 has-disabled:opacity-50', containerClassName)}\n className={cn('disabled:cursor-not-allowed', className)}\n {...props}\n />\n );\n}\n\n/** Flex container that groups a sequence of InputOTPSlot elements. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"input-otp-group\" className={cn('flex items-center', className)} {...props} />;\n}\n\n/**\n * A single character slot in an InputOTP — displays the typed character and a blinking caret when focused.\n *\n * @param index - Zero-based position of this slot within the OTP sequence.\n */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n index: number;\n}) {\n const inputOTPContext = use(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n 'data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]',\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Visual separator (dash) placed between InputOTPGroup elements. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };\n"],"mappings":"kPA+BA,SAAS,EAAS,CAChB,YACA,qBACA,GAAG,GAIF,CACD,OACE,EAAC,EAAA,CACC,YAAU,YACV,mBAAoB,EAAG,kDAAmD,EAAmB,CAC7F,UAAW,EAAG,8BAA+B,EAAU,CACvD,GAAI,GACJ,CAKN,SAAS,EAAc,CAAE,YAAW,GAAG,GAAsC,CAC3E,OAAO,EAAC,MAAA,CAAI,YAAU,kBAAkB,UAAW,EAAG,oBAAqB,EAAU,CAAE,GAAI,GAAS,CAQtG,SAAS,EAAa,CACpB,QACA,YACA,GAAG,GAGF,CAED,GAAM,CAAE,OAAM,eAAc,YADJ,EAAI,EAAgB,EACc,MAAM,IAAU,EAAE,CAE5E,OACE,EAAC,MAAA,CACC,YAAU,iBACV,cAAa,EACb,UAAW,EACT,2fACA,EACD,CACD,GAAI,YAEH,EACA,GACC,EAAC,MAAA,CAAI,UAAU,iFACb,EAAC,MAAA,CAAI,UAAU,2DAAA,CAA6D,EACxE,CAAA,EAEJ,CAKV,SAAS,EAAkB,CAAE,GAAG,GAAsC,CACpE,OACE,EAAC,MAAA,CAAI,YAAU,sBAAsB,KAAK,YAAY,GAAI,WACxD,EAAC,EAAA,EAAA,CAAY,EACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.cjs","names":[],"sources":["../../packages/components/ui/input.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useCallback } from 'react';\n\n/** CVA variant definitions for the `Input` component — controls sizing and visual style. */\nexport const inputVariants = cva(\n [\n 'w-full rounded font-normal text-text-positive caret-primary transition-all tabular-nums',\n 'placeholder:text-text-positive-muted',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n 'read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak',\n ],\n {\n variants: {\n variant: {\n outline: [\n 'outline-1 outline-border -outline-offset-1 bg-transparent shadow-input',\n 'focus-visible:outline-primary-strong',\n 'focus-visible:ring-4',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:outline-danger',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:bg-danger-bg-subtle',\n 'aria-invalid:focus-visible:outline-danger-strong',\n 'aria-invalid:focus-visible:ring-4',\n 'aria-invalid:placeholder:text-text-positive-weak',\n ],\n ghost: '',\n none: '',\n soft: '',\n subtle: '',\n },\n size: {\n xs: 'px-2 py-1 text-xs leading-4',\n sm: 'px-2.5 py-1.5 text-xs leading-4',\n md: 'px-2.5 py-2 text-sm leading-5',\n lg: 'px-3 py-2 text-sm leading-5',\n xl: 'px-3 py-2 text-base leading-6',\n },\n },\n defaultVariants: {\n variant: 'outline',\n size: 'md',\n },\n }\n);\n\nexport type InputVariantProps = VariantProps<typeof inputVariants>;\n\n/**\n * Styled text input field built on the native `<input>` element with CVA-driven size and variant tokens.\n *\n * @example\n * ```tsx\n * import { Input } from '@customafk/lunas-ui/ui/input';\n *\n * <Input\n * placeholder=\"Enter your name\"\n * variant=\"outline\"\n * size=\"md\"\n * onValueChange={(value) => console.log(value)}\n * />\n * ```\n */\nfunction Input({\n className,\n variant,\n size,\n onChange,\n onValueChange,\n ...props\n}: Omit<React.ComponentProps<'input'>, 'size'> & {\n /** Visual style of the input border — `'outline'` (default), `'ghost'`, `'none'`, `'soft'`, or `'subtle'`. */\n variant?: InputVariantProps['variant'];\n /** Controls padding and font size — `'xs'` | `'sm'` | `'md'` (default) | `'lg'` | `'xl'`. */\n size?: InputVariantProps['size'];\n /** Convenience callback that receives the raw string value on every change, bypassing the synthetic event. */\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange]\n );\n return <input data-slot=\"input\" className={inputVariants({ variant, size, className })} {...props} onChange={handleChange} />;\n}\n\nexport { Input };\n"],"mappings":"kJAMA,MAAa,GAAA,EAAA,EAAA,KACX,CACE,0FACA,uCACA,+EACA,uGACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,CACP,yEACA,uCACA,uBACA,kCACA,8BACA,gCACA,mCACA,mDACA,oCACA,mDACD,CACD,MAAO,GACP,KAAM,GACN,KAAM,GACN,OAAQ,GACT,CACD,KAAM,CACJ,GAAI,8BACJ,GAAI,kCACJ,GAAI,gCACJ,GAAI,8BACJ,GAAI,gCACL,CACF,CACD,gBAAiB,CACf,QAAS,UACT,KAAM,KACP,CACF,CACF,CAmBD,SAAS,EAAM,CACb,YACA,UACA,OACA,WACA,gBACA,GAAG,GAQF,CACD,IAAM,GAAA,EAAA,EAAA,aACH,GAA2C,CAC1C,IAAW,EAAE,CACb,IAAgB,EAAE,OAAO,MAAM,EAEjC,CAAC,EAAU,EAAc,CAC1B,CACD,OAAO,EAAA,EAAA,KAAC,QAAA,CAAM,YAAU,QAAQ,UAAW,EAAc,CAAE,UAAS,OAAM,YAAW,CAAC,CAAE,GAAI,EAAO,SAAU,GAAgB"}
@@ -1,44 +0,0 @@
1
- import { VariantProps } from "class-variance-authority";
2
- import * as react190 from "react";
3
- import * as class_variance_authority_types7 from "class-variance-authority/types";
4
-
5
- //#region packages/components/ui/input.d.ts
6
- /** CVA variant definitions for the `Input` component — controls sizing and visual style. */
7
- declare const inputVariants: (props?: ({
8
- variant?: "outline" | "none" | "soft" | "ghost" | "subtle" | null | undefined;
9
- size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
10
- } & class_variance_authority_types7.ClassProp) | undefined) => string;
11
- type InputVariantProps = VariantProps<typeof inputVariants>;
12
- /**
13
- * Styled text input field built on the native `<input>` element with CVA-driven size and variant tokens.
14
- *
15
- * @example
16
- * ```tsx
17
- * import { Input } from '@customafk/lunas-ui/ui/input';
18
- *
19
- * <Input
20
- * placeholder="Enter your name"
21
- * variant="outline"
22
- * size="md"
23
- * onValueChange={(value) => console.log(value)}
24
- * />
25
- * ```
26
- */
27
- declare function Input({
28
- className,
29
- variant,
30
- size,
31
- onChange,
32
- onValueChange,
33
- ...props
34
- }: Omit<React.ComponentProps<'input'>, 'size'> & {
35
- /** Visual style of the input border — `'outline'` (default), `'ghost'`, `'none'`, `'soft'`, or `'subtle'`. */
36
- variant?: InputVariantProps['variant'];
37
- /** Controls padding and font size — `'xs'` | `'sm'` | `'md'` (default) | `'lg'` | `'xl'`. */
38
- size?: InputVariantProps['size'];
39
- /** Convenience callback that receives the raw string value on every change, bypassing the synthetic event. */
40
- onValueChange?: (value: string) => void;
41
- }): react190.JSX.Element;
42
- //#endregion
43
- export { Input, InputVariantProps, inputVariants };
44
- //# sourceMappingURL=input.d.ts.map
package/dist/ui/input.js DELETED
@@ -1,2 +0,0 @@
1
- "use client";import{cva as e}from"class-variance-authority";import{jsx as t}from"react/jsx-runtime";import{useCallback as n}from"react";const r=e([`w-full rounded font-normal text-text-positive caret-primary transition-all tabular-nums`,`placeholder:text-text-positive-muted`,`disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak`],{variants:{variant:{outline:[`outline-1 outline-border -outline-offset-1 bg-transparent shadow-input`,`focus-visible:outline-primary-strong`,`focus-visible:ring-4`,`focus-visible:ring-primary-weak`,`aria-invalid:outline-danger`,`aria-invalid:ring-danger-weak`,`aria-invalid:bg-danger-bg-subtle`,`aria-invalid:focus-visible:outline-danger-strong`,`aria-invalid:focus-visible:ring-4`,`aria-invalid:placeholder:text-text-positive-weak`],ghost:``,none:``,soft:``,subtle:``},size:{xs:`px-2 py-1 text-xs leading-4`,sm:`px-2.5 py-1.5 text-xs leading-4`,md:`px-2.5 py-2 text-sm leading-5`,lg:`px-3 py-2 text-sm leading-5`,xl:`px-3 py-2 text-base leading-6`}},defaultVariants:{variant:`outline`,size:`md`}});function i({className:e,variant:i,size:a,onChange:o,onValueChange:s,...c}){let l=n(e=>{o?.(e),s?.(e.target.value)},[o,s]);return t(`input`,{"data-slot":`input`,className:r({variant:i,size:a,className:e}),...c,onChange:l})}export{i as Input,r as inputVariants};
2
- //# sourceMappingURL=input.js.map