@customafk/lunas-ui 0.2.65 → 0.2.67

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 (725) hide show
  1. package/dist/FeatureDeveloping-zuTTDIh_.d.cts +41 -0
  2. package/dist/FeatureDeveloping-zuTTDIh_.d.mts +41 -0
  3. package/dist/FeatureFixing-DYQlgHPk.d.cts +41 -0
  4. package/dist/FeatureFixing-DYQlgHPk.d.mts +41 -0
  5. package/dist/LoginPage-vMXvwtxf.d.cts +53 -0
  6. package/dist/LoginPage-vMXvwtxf.d.mts +53 -0
  7. package/dist/NotAuthorized-CZIQ6EaA.d.cts +41 -0
  8. package/dist/NotAuthorized-CZIQ6EaA.d.mts +41 -0
  9. package/dist/NotFound-CRSKxhV8.d.cts +41 -0
  10. package/dist/NotFound-CRSKxhV8.d.mts +41 -0
  11. package/dist/RegisterPage-BBtpEzvL.d.cts +50 -0
  12. package/dist/RegisterPage-BBtpEzvL.d.mts +50 -0
  13. package/dist/VerifyEmailPage-CsmIeYLu.d.cts +62 -0
  14. package/dist/VerifyEmailPage-CsmIeYLu.d.mts +62 -0
  15. package/dist/{action-submit-3kZ7JOop.cjs → action-submit-42PxGLsR.cjs} +2 -2
  16. package/dist/{action-submit-3kZ7JOop.cjs.map → action-submit-42PxGLsR.cjs.map} +1 -1
  17. package/dist/{action-submit-Dg5GvYz5.mjs → action-submit-SviPJW3i.mjs} +2 -2
  18. package/dist/{action-submit-Dg5GvYz5.mjs.map → action-submit-SviPJW3i.mjs.map} +1 -1
  19. package/dist/{actions-form-CE_enCgE.cjs → actions-form-Bo46j_dH.cjs} +2 -2
  20. package/dist/{actions-form-CE_enCgE.cjs.map → actions-form-Bo46j_dH.cjs.map} +1 -1
  21. package/dist/{actions-form-BL_B81Vg.mjs → actions-form-QdAsKwcQ.mjs} +2 -2
  22. package/dist/{actions-form-BL_B81Vg.mjs.map → actions-form-QdAsKwcQ.mjs.map} +1 -1
  23. package/dist/activity-heatmap-chart-DufvFndI.mjs +2 -0
  24. package/dist/activity-heatmap-chart-DufvFndI.mjs.map +1 -0
  25. package/dist/activity-heatmap-chart-gDcvIAK_.cjs +2 -0
  26. package/dist/activity-heatmap-chart-gDcvIAK_.cjs.map +1 -0
  27. package/dist/add-new-DkBwXh0Q.d.cts +16 -0
  28. package/dist/add-new-DkBwXh0Q.d.mts +16 -0
  29. package/dist/alert-dialog-Cdhz7jSj.d.cts +88 -0
  30. package/dist/alert-dialog-Cdhz7jSj.d.mts +88 -0
  31. package/dist/analysis-panel-BD2QvOth.mjs +2 -0
  32. package/dist/analysis-panel-BD2QvOth.mjs.map +1 -0
  33. package/dist/analysis-panel-UlC7cvO2.cjs +2 -0
  34. package/dist/analysis-panel-UlC7cvO2.cjs.map +1 -0
  35. package/dist/aspect-ratio-huscluwJ.d.cts +22 -0
  36. package/dist/aspect-ratio-huscluwJ.d.mts +22 -0
  37. package/dist/avatar-BpeFwSkQ.d.cts +33 -0
  38. package/dist/avatar-BpeFwSkQ.d.mts +33 -0
  39. package/dist/avatar-name-display-BrpnTqa_.mjs +2 -0
  40. package/dist/avatar-name-display-BrpnTqa_.mjs.map +1 -0
  41. package/dist/avatar-name-display-CLi1DJUs.cjs +2 -0
  42. package/dist/avatar-name-display-CLi1DJUs.cjs.map +1 -0
  43. package/dist/{badge-D0InQSvM.d.cts → badge-MRT40pxM.d.cts} +3 -3
  44. package/dist/{badge-D0InQSvM.d.mts → badge-MRT40pxM.d.mts} +3 -3
  45. package/dist/badge-display-Bs0QeCJt.cjs +2 -0
  46. package/dist/badge-display-Bs0QeCJt.cjs.map +1 -0
  47. package/dist/badge-display-Dg5XM66P.mjs +2 -0
  48. package/dist/badge-display-Dg5XM66P.mjs.map +1 -0
  49. package/dist/boolean-display-BnN32_Jd.cjs +2 -0
  50. package/dist/boolean-display-BnN32_Jd.cjs.map +1 -0
  51. package/dist/boolean-display-DVn3UGuZ.mjs +2 -0
  52. package/dist/boolean-display-DVn3UGuZ.mjs.map +1 -0
  53. package/dist/breadcrumb-CSpScKZm.d.cts +69 -0
  54. package/dist/breadcrumb-CSpScKZm.d.mts +69 -0
  55. package/dist/{button-DIqm3YRo.d.cts → button-Bk4Y6_9I.d.cts} +3 -3
  56. package/dist/{button-DIqm3YRo.d.mts → button-Bk4Y6_9I.d.mts} +3 -3
  57. package/dist/button-group-Cd5m5G3p.d.mts +48 -0
  58. package/dist/button-group-CiKhLVCg.d.cts +48 -0
  59. package/dist/calendar-DPKt7D3w.d.mts +43 -0
  60. package/dist/calendar-stv2bJv0.d.cts +43 -0
  61. package/dist/candlestick-chart-CiBiCU3y.mjs +2 -0
  62. package/dist/candlestick-chart-CiBiCU3y.mjs.map +1 -0
  63. package/dist/candlestick-chart-CqmRkfXj.cjs +2 -0
  64. package/dist/candlestick-chart-CqmRkfXj.cjs.map +1 -0
  65. package/dist/card-DOnx7RKz.d.cts +60 -0
  66. package/dist/card-DOnx7RKz.d.mts +60 -0
  67. package/dist/cards/grid-product-card.d.cts +2 -30
  68. package/dist/cards/grid-product-card.d.mts +2 -30
  69. package/dist/cards/product-card.d.cts +2 -30
  70. package/dist/cards/product-card.d.mts +2 -30
  71. package/dist/cards/simple-card.d.cts +2 -29
  72. package/dist/cards/simple-card.d.mts +2 -29
  73. package/dist/carousel-CV3IZ96x.d.mts +70 -0
  74. package/dist/carousel-c2XuzmYN.d.cts +70 -0
  75. package/dist/chart-sYFksFMk.d.cts +80 -0
  76. package/dist/chart-sYFksFMk.d.mts +80 -0
  77. package/dist/checkbox-XfLNnG0S.d.cts +24 -0
  78. package/dist/checkbox-XfLNnG0S.d.mts +24 -0
  79. package/dist/{checkbox-field-DdeohRmi.cjs → checkbox-field-B1vCz-Wf.cjs} +2 -2
  80. package/dist/{checkbox-field-DdeohRmi.cjs.map → checkbox-field-B1vCz-Wf.cjs.map} +1 -1
  81. package/dist/{checkbox-field-CRcfuDu1.mjs → checkbox-field-FqCe38_D.mjs} +2 -2
  82. package/dist/{checkbox-field-CRcfuDu1.mjs.map → checkbox-field-FqCe38_D.mjs.map} +1 -1
  83. package/dist/{cms-layout-SubgSF72.cjs → cms-layout-CGGJqbr0.cjs} +2 -2
  84. package/dist/{cms-layout-SubgSF72.cjs.map → cms-layout-CGGJqbr0.cjs.map} +1 -1
  85. package/dist/{cms-layout-CuF5ahpj.mjs → cms-layout-ePySxIQN.mjs} +2 -2
  86. package/dist/{cms-layout-CuF5ahpj.mjs.map → cms-layout-ePySxIQN.mjs.map} +1 -1
  87. package/dist/collapsible-liIHmFuw.d.cts +32 -0
  88. package/dist/collapsible-liIHmFuw.d.mts +32 -0
  89. package/dist/combobox-field-D6fiCcvU.mjs +2 -0
  90. package/dist/{combobox-field-BGChwajc.mjs.map → combobox-field-D6fiCcvU.mjs.map} +1 -1
  91. package/dist/{combobox-field-D9NdSih1.cjs → combobox-field-DLpH6J9H.cjs} +2 -2
  92. package/dist/{combobox-field-D9NdSih1.cjs.map → combobox-field-DLpH6J9H.cjs.map} +1 -1
  93. package/dist/command-Bb6SneVI.d.mts +87 -0
  94. package/dist/command-CHSJVU9o.d.cts +87 -0
  95. package/dist/confirm-dialog-B8Vu0z8S.d.cts +142 -0
  96. package/dist/confirm-dialog-B8Vu0z8S.d.mts +142 -0
  97. package/dist/context-menu-BOlGSuep.d.cts +123 -0
  98. package/dist/context-menu-BOlGSuep.d.mts +123 -0
  99. package/dist/conversion-funnel-chart-CW_zDfKS.mjs +2 -0
  100. package/dist/conversion-funnel-chart-CW_zDfKS.mjs.map +1 -0
  101. package/dist/conversion-funnel-chart-r2m2QbiQ.cjs +2 -0
  102. package/dist/conversion-funnel-chart-r2m2QbiQ.cjs.map +1 -0
  103. package/dist/correlation-scatter-chart-Djtt7NU7.mjs +2 -0
  104. package/dist/correlation-scatter-chart-Djtt7NU7.mjs.map +1 -0
  105. package/dist/correlation-scatter-chart-HF48YUIB.cjs +2 -0
  106. package/dist/correlation-scatter-chart-HF48YUIB.cjs.map +1 -0
  107. package/dist/country-C8QijcHF.d.mts +21 -0
  108. package/dist/country-CJIaO0I7.d.cts +21 -0
  109. package/dist/currency-display-CKLQ_lxN.mjs +2 -0
  110. package/dist/currency-display-CKLQ_lxN.mjs.map +1 -0
  111. package/dist/currency-display-CZ6PJAzu.cjs +2 -0
  112. package/dist/currency-display-CZ6PJAzu.cjs.map +1 -0
  113. package/dist/data-display/country.d.cts +2 -21
  114. package/dist/data-display/country.d.mts +2 -21
  115. package/dist/data-display/data-list.d.cts +2 -38
  116. package/dist/data-display/data-list.d.mts +2 -38
  117. package/dist/data-display/date-tooltip.d.cts +2 -18
  118. package/dist/data-display/date-tooltip.d.mts +2 -18
  119. package/dist/data-display/date.d.cts +2 -39
  120. package/dist/data-display/date.d.mts +2 -39
  121. package/dist/data-display/empty.d.cts +2 -19
  122. package/dist/data-display/empty.d.mts +2 -19
  123. package/dist/data-display/name.d.cts +2 -18
  124. package/dist/data-display/name.d.mts +2 -18
  125. package/dist/data-display/phone-number.d.cts +2 -18
  126. package/dist/data-display/phone-number.d.mts +2 -18
  127. package/dist/data-display/role-badge.d.cts +2 -21
  128. package/dist/data-display/role-badge.d.mts +2 -21
  129. package/dist/data-display/statistic.d.cts +2 -45
  130. package/dist/data-display/statistic.d.mts +2 -45
  131. package/dist/data-display/user.d.cts +2 -20
  132. package/dist/data-display/user.d.mts +2 -20
  133. package/dist/data-list-Cg510z2m.d.cts +38 -0
  134. package/dist/data-list-Cg510z2m.d.mts +38 -0
  135. package/dist/date-KANPBbN4.d.cts +39 -0
  136. package/dist/date-KANPBbN4.d.mts +39 -0
  137. package/dist/date-display-BQOVmN7S.cjs +2 -0
  138. package/dist/date-display-BQOVmN7S.cjs.map +1 -0
  139. package/dist/date-display-BrCdJkmq.mjs +2 -0
  140. package/dist/date-display-BrCdJkmq.mjs.map +1 -0
  141. package/dist/{date-field-Dm4ki1HS.mjs → date-field-Cxbrc0Vl.mjs} +2 -2
  142. package/dist/{date-field-Dm4ki1HS.mjs.map → date-field-Cxbrc0Vl.mjs.map} +1 -1
  143. package/dist/{date-field-BqAX4M_h.cjs → date-field-RvEB9F1r.cjs} +2 -2
  144. package/dist/{date-field-BqAX4M_h.cjs.map → date-field-RvEB9F1r.cjs.map} +1 -1
  145. package/dist/date-tooltip-DptxGOj_.d.cts +18 -0
  146. package/dist/date-tooltip-DptxGOj_.d.mts +18 -0
  147. package/dist/description-display-BQFLzI2g.mjs +2 -0
  148. package/dist/description-display-BQFLzI2g.mjs.map +1 -0
  149. package/dist/description-display-DnDAB3a1.cjs +2 -0
  150. package/dist/description-display-DnDAB3a1.cjs.map +1 -0
  151. package/dist/{dialog-form-ClWBZbUN.mjs → dialog-form-C0W5C0u9.mjs} +2 -2
  152. package/dist/{dialog-form-ClWBZbUN.mjs.map → dialog-form-C0W5C0u9.mjs.map} +1 -1
  153. package/dist/{dialog-form-DN-NlQFO.cjs → dialog-form-CkNCwzWG.cjs} +2 -2
  154. package/dist/{dialog-form-DN-NlQFO.cjs.map → dialog-form-CkNCwzWG.cjs.map} +1 -1
  155. package/dist/dialogs/confirm-dialog.d.cts +2 -142
  156. package/dist/dialogs/confirm-dialog.d.mts +2 -142
  157. package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
  158. package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +1 -1
  159. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +50 -38
  160. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +50 -38
  161. package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
  162. package/dist/dialogs/detail-dialog/components/sidebar.mjs.map +1 -1
  163. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  164. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  165. package/dist/dialogs/detail-dialog/index.d.cts +2 -36
  166. package/dist/dialogs/detail-dialog/index.d.mts +2 -36
  167. package/dist/dialogs/detail-dialog/index.mjs +1 -1
  168. package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
  169. package/dist/dialogs/error-dialog.d.cts +2 -22
  170. package/dist/dialogs/error-dialog.d.mts +2 -22
  171. package/dist/dialogs/loading-dialog.d.cts +2 -19
  172. package/dist/dialogs/loading-dialog.d.mts +2 -19
  173. package/dist/donut-chart-CsPPKy0G.cjs +2 -0
  174. package/dist/donut-chart-CsPPKy0G.cjs.map +1 -0
  175. package/dist/donut-chart-eKZjuzW0.mjs +2 -0
  176. package/dist/donut-chart-eKZjuzW0.mjs.map +1 -0
  177. package/dist/drawer-Dwx99ff3.d.cts +70 -0
  178. package/dist/drawer-Dwx99ff3.d.mts +70 -0
  179. package/dist/dropdown-menu-CcMccVns.d.cts +125 -0
  180. package/dist/dropdown-menu-CcMccVns.d.mts +125 -0
  181. package/dist/edit-button-0_FLZoT3.cjs +2 -0
  182. package/dist/edit-button-0_FLZoT3.cjs.map +1 -0
  183. package/dist/edit-button-DmMFMzG0.mjs +2 -0
  184. package/dist/edit-button-DmMFMzG0.mjs.map +1 -0
  185. package/dist/edit-qfS5kOtM.d.cts +16 -0
  186. package/dist/edit-qfS5kOtM.d.mts +16 -0
  187. package/dist/email-display-D6ZgA_en.cjs +2 -0
  188. package/dist/email-display-D6ZgA_en.cjs.map +1 -0
  189. package/dist/email-display-m745lUts.mjs +2 -0
  190. package/dist/email-display-m745lUts.mjs.map +1 -0
  191. package/dist/{email-field-lDd9ouFN.cjs → email-field-BErx3liY.cjs} +2 -2
  192. package/dist/{email-field-lDd9ouFN.cjs.map → email-field-BErx3liY.cjs.map} +1 -1
  193. package/dist/{email-field-DZNR_JbT.mjs → email-field-BtcdBWL4.mjs} +2 -2
  194. package/dist/{email-field-DZNR_JbT.mjs.map → email-field-BtcdBWL4.mjs.map} +1 -1
  195. package/dist/empty-CaNJjp05.d.cts +65 -0
  196. package/dist/empty-CaNJjp05.d.mts +65 -0
  197. package/dist/empty-ClQptIZH.d.cts +19 -0
  198. package/dist/empty-ClQptIZH.d.mts +19 -0
  199. package/dist/error-dialog-D4jOPhmw.d.cts +22 -0
  200. package/dist/error-dialog-D4jOPhmw.d.mts +22 -0
  201. package/dist/features/charts/index.cjs +1 -1
  202. package/dist/features/charts/index.cjs.map +1 -1
  203. package/dist/features/charts/index.d.cts +2 -904
  204. package/dist/features/charts/index.d.mts +2 -904
  205. package/dist/features/charts/index.mjs +1 -1
  206. package/dist/features/charts/index.mjs.map +1 -1
  207. package/dist/features/descriptions/index.cjs +1 -1
  208. package/dist/features/descriptions/index.cjs.map +1 -1
  209. package/dist/features/descriptions/index.d.cts +2 -231
  210. package/dist/features/descriptions/index.d.mts +2 -231
  211. package/dist/features/descriptions/index.mjs +1 -1
  212. package/dist/features/descriptions/index.mjs.map +1 -1
  213. package/dist/features/search-modal/index.d.cts +2 -14
  214. package/dist/features/search-modal/index.d.mts +2 -14
  215. package/dist/features/tables/index.cjs +1 -1
  216. package/dist/features/tables/index.d.cts +2 -2
  217. package/dist/features/tables/index.d.mts +2 -2
  218. package/dist/features/tables/index.mjs +1 -1
  219. package/dist/features/tanstack-form/index.cjs +1 -1
  220. package/dist/features/tanstack-form/index.mjs +1 -1
  221. package/dist/features/text-editor/index.cjs +1 -1
  222. package/dist/features/text-editor/index.d.cts +1 -1
  223. package/dist/features/text-editor/index.d.mts +1 -1
  224. package/dist/features/text-editor/index.mjs +1 -1
  225. package/dist/file-uploader-U64lH0zG.d.cts +101 -0
  226. package/dist/file-uploader-U64lH0zG.d.mts +101 -0
  227. package/dist/filter-Bb9_Blk3.cjs +2 -0
  228. package/dist/filter-Bb9_Blk3.cjs.map +1 -0
  229. package/dist/filter-CG6wQHRd.mjs +2 -0
  230. package/dist/filter-CG6wQHRd.mjs.map +1 -0
  231. package/dist/flex-bw7U4hXn.d.cts +114 -0
  232. package/dist/flex-bw7U4hXn.d.mts +114 -0
  233. package/dist/form-CMP15S4r.d.cts +109 -0
  234. package/dist/form-CMP15S4r.d.mts +109 -0
  235. package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs +2 -0
  236. package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs.map +1 -0
  237. package/dist/gain-loss-bar-chart-FUzN7DxF.cjs +2 -0
  238. package/dist/gain-loss-bar-chart-FUzN7DxF.cjs.map +1 -0
  239. package/dist/google-Bl-jBW8L.d.cts +48 -0
  240. package/dist/google-Bl-jBW8L.d.mts +48 -0
  241. package/dist/grid-i7Oz2Izf.d.cts +19 -0
  242. package/dist/grid-i7Oz2Izf.d.mts +19 -0
  243. package/dist/grid-product-card-bpADqDOQ.d.cts +30 -0
  244. package/dist/grid-product-card-bpADqDOQ.d.mts +30 -0
  245. package/dist/hover-card-Prwm-0Q4.d.cts +35 -0
  246. package/dist/hover-card-Prwm-0Q4.d.mts +35 -0
  247. package/dist/image-Cln0r7Eb.d.cts +27 -0
  248. package/dist/image-Cln0r7Eb.d.mts +27 -0
  249. package/dist/{index-C4isgHWG.d.cts → index-BRE7tL8d.d.cts} +121 -500
  250. package/dist/index-C2HFO3a9.d.mts +231 -0
  251. package/dist/index-C9eXmnvk.d.cts +36 -0
  252. package/dist/index-C9eXmnvk.d.mts +36 -0
  253. package/dist/index-CBntsHIg.d.cts +520 -0
  254. package/dist/index-CBntsHIg.d.mts +520 -0
  255. package/dist/{index-DOaKN0wJ.d.mts → index-D9bKlLiM.d.cts} +2 -22
  256. package/dist/{index-DOaKN0wJ.d.cts → index-D9bKlLiM.d.mts} +2 -22
  257. package/dist/index-DJiiPHPf.d.cts +59 -0
  258. package/dist/index-DJiiPHPf.d.mts +59 -0
  259. package/dist/index-DtIL69PB.d.cts +14 -0
  260. package/dist/index-DtIL69PB.d.mts +14 -0
  261. package/dist/{index-C8W56XKm.d.mts → index-DvoLzsh0.d.mts} +121 -500
  262. package/dist/index-fZChR7MS.d.cts +231 -0
  263. package/dist/index.cjs +1 -1
  264. package/dist/index.d.cts +91 -91
  265. package/dist/index.d.mts +91 -91
  266. package/dist/index.mjs +1 -1
  267. package/dist/indexed-performance-line-chart-CT79KOM6.cjs +2 -0
  268. package/dist/indexed-performance-line-chart-CT79KOM6.cjs.map +1 -0
  269. package/dist/indexed-performance-line-chart-D7F-rIMv.mjs +2 -0
  270. package/dist/indexed-performance-line-chart-D7F-rIMv.mjs.map +1 -0
  271. package/dist/{input-go3H4EQz.d.cts → input-BieGEIDf.d.cts} +2 -2
  272. package/dist/{input-go3H4EQz.d.mts → input-BieGEIDf.d.mts} +2 -2
  273. package/dist/input-otp-6hJfhBHX.d.cts +56 -0
  274. package/dist/input-otp-6hJfhBHX.d.mts +56 -0
  275. package/dist/item-DTR2f2CX.d.cts +99 -0
  276. package/dist/item-cIhkI3ZI.d.mts +99 -0
  277. package/dist/label-DPG_GY7h.d.cts +22 -0
  278. package/dist/label-DPG_GY7h.d.mts +22 -0
  279. package/dist/layouts/cms-layout/index.cjs +1 -1
  280. package/dist/layouts/cms-layout/index.mjs +1 -1
  281. package/dist/layouts/flex.d.cts +2 -114
  282. package/dist/layouts/flex.d.mts +2 -114
  283. package/dist/layouts/grid.d.cts +2 -19
  284. package/dist/layouts/grid.d.mts +2 -19
  285. package/dist/layouts/payment-layout/index.cjs +1 -1
  286. package/dist/layouts/payment-layout/index.d.cts +2 -59
  287. package/dist/layouts/payment-layout/index.d.mts +2 -59
  288. package/dist/layouts/payment-layout/index.mjs +1 -1
  289. package/dist/list-display-8Jx6G5nk.mjs +2 -0
  290. package/dist/list-display-8Jx6G5nk.mjs.map +1 -0
  291. package/dist/list-display-BQjNDttz.cjs +2 -0
  292. package/dist/list-display-BQjNDttz.cjs.map +1 -0
  293. package/dist/loading-dialog-C73EJx9s.d.cts +19 -0
  294. package/dist/loading-dialog-C73EJx9s.d.mts +19 -0
  295. package/dist/menubar-CFrn3S96.d.cts +133 -0
  296. package/dist/menubar-CFrn3S96.d.mts +133 -0
  297. package/dist/metric-radar-chart-6LTGQHsL.mjs +2 -0
  298. package/dist/metric-radar-chart-6LTGQHsL.mjs.map +1 -0
  299. package/dist/metric-radar-chart-DwgbXgJX.cjs +2 -0
  300. package/dist/metric-radar-chart-DwgbXgJX.cjs.map +1 -0
  301. package/dist/mirrored-bar-chart-BT7AYPJB.mjs +2 -0
  302. package/dist/mirrored-bar-chart-BT7AYPJB.mjs.map +1 -0
  303. package/dist/mirrored-bar-chart-BwjtExjh.cjs +2 -0
  304. package/dist/mirrored-bar-chart-BwjtExjh.cjs.map +1 -0
  305. package/dist/more-button-BKBcXz6E.mjs +2 -0
  306. package/dist/more-button-BKBcXz6E.mjs.map +1 -0
  307. package/dist/more-button-RYvZgYiu.cjs +2 -0
  308. package/dist/more-button-RYvZgYiu.cjs.map +1 -0
  309. package/dist/multi-select-BbiKgAYs.d.cts +116 -0
  310. package/dist/multi-select-BoBHt_Z9.d.mts +116 -0
  311. package/dist/name-7aoM5rAW.d.cts +18 -0
  312. package/dist/name-7aoM5rAW.d.mts +18 -0
  313. package/dist/name-display-BBJoNnRG.mjs +2 -0
  314. package/dist/name-display-BBJoNnRG.mjs.map +1 -0
  315. package/dist/name-display-scAMZdyr.cjs +2 -0
  316. package/dist/name-display-scAMZdyr.cjs.map +1 -0
  317. package/dist/navigation-menu-B1BY9Zll.d.cts +73 -0
  318. package/dist/navigation-menu-B1BY9Zll.d.mts +73 -0
  319. package/dist/{number-field-Baj9Yhiv.mjs → number-field-BjVjf6s4.mjs} +2 -2
  320. package/dist/{number-field-Baj9Yhiv.mjs.map → number-field-BjVjf6s4.mjs.map} +1 -1
  321. package/dist/{number-field-BqeSbMvE.cjs → number-field-DmKh7bbY.cjs} +2 -2
  322. package/dist/{number-field-BqeSbMvE.cjs.map → number-field-DmKh7bbY.cjs.map} +1 -1
  323. package/dist/orders-bar-chart-9RmtP6In.cjs +2 -0
  324. package/dist/orders-bar-chart-9RmtP6In.cjs.map +1 -0
  325. package/dist/orders-bar-chart-DQhJGmwY.mjs +2 -0
  326. package/dist/orders-bar-chart-DQhJGmwY.mjs.map +1 -0
  327. package/dist/pages/FeatureDeveloping.d.cts +2 -41
  328. package/dist/pages/FeatureDeveloping.d.mts +2 -41
  329. package/dist/pages/FeatureFixing.d.cts +2 -41
  330. package/dist/pages/FeatureFixing.d.mts +2 -41
  331. package/dist/pages/LoginPage.cjs +1 -1
  332. package/dist/pages/LoginPage.cjs.map +1 -1
  333. package/dist/pages/LoginPage.d.cts +2 -53
  334. package/dist/pages/LoginPage.d.mts +2 -53
  335. package/dist/pages/LoginPage.mjs +1 -1
  336. package/dist/pages/LoginPage.mjs.map +1 -1
  337. package/dist/pages/NotAuthorized.d.cts +2 -41
  338. package/dist/pages/NotAuthorized.d.mts +2 -41
  339. package/dist/pages/NotFound.d.cts +2 -41
  340. package/dist/pages/NotFound.d.mts +2 -41
  341. package/dist/pages/RegisterPage.cjs +1 -1
  342. package/dist/pages/RegisterPage.cjs.map +1 -1
  343. package/dist/pages/RegisterPage.d.cts +2 -50
  344. package/dist/pages/RegisterPage.d.mts +2 -50
  345. package/dist/pages/RegisterPage.mjs +1 -1
  346. package/dist/pages/RegisterPage.mjs.map +1 -1
  347. package/dist/pages/VerifyEmailPage.d.cts +2 -62
  348. package/dist/pages/VerifyEmailPage.d.mts +2 -62
  349. package/dist/pagination-B2fyP0J2.d.cts +64 -0
  350. package/dist/pagination-DY0PBCnI.d.mts +64 -0
  351. package/dist/paragraph-BTmvVS1S.d.mts +46 -0
  352. package/dist/paragraph-DbYYv0A0.d.cts +46 -0
  353. package/dist/{password-field-fzpU42sV.mjs → password-field-C5FsQUa8.mjs} +2 -2
  354. package/dist/{password-field-fzpU42sV.mjs.map → password-field-C5FsQUa8.mjs.map} +1 -1
  355. package/dist/{password-field-Cq0S949S.cjs → password-field-gHYDiXWY.cjs} +2 -2
  356. package/dist/{password-field-Cq0S949S.cjs.map → password-field-gHYDiXWY.cjs.map} +1 -1
  357. package/dist/payment-layout-Cb-Q8KD2.cjs +2 -0
  358. package/dist/{payment-layout-BLrXT-oc.cjs.map → payment-layout-Cb-Q8KD2.cjs.map} +1 -1
  359. package/dist/{payment-layout-Dsz6wYT1.mjs → payment-layout-DS5CEH1h.mjs} +2 -2
  360. package/dist/{payment-layout-Dsz6wYT1.mjs.map → payment-layout-DS5CEH1h.mjs.map} +1 -1
  361. package/dist/permalink-CZ3g9daG.mjs +2 -0
  362. package/dist/permalink-CZ3g9daG.mjs.map +1 -0
  363. package/dist/permalink-DeeEKhfc.cjs +2 -0
  364. package/dist/permalink-DeeEKhfc.cjs.map +1 -0
  365. package/dist/phone-number-6b_pkGI1.d.cts +18 -0
  366. package/dist/phone-number-6b_pkGI1.d.mts +18 -0
  367. package/dist/phone-number-C43z68gT.mjs +2 -0
  368. package/dist/phone-number-C43z68gT.mjs.map +1 -0
  369. package/dist/phone-number-DhThJwd6.cjs +2 -0
  370. package/dist/phone-number-DhThJwd6.cjs.map +1 -0
  371. package/dist/popover-CdOCi0xg.d.cts +50 -0
  372. package/dist/popover-CdOCi0xg.d.mts +50 -0
  373. package/dist/{popover-form-DNbBGWVF.mjs → popover-form-B2taDBAh.mjs} +2 -2
  374. package/dist/{popover-form-DNbBGWVF.mjs.map → popover-form-B2taDBAh.mjs.map} +1 -1
  375. package/dist/{popover-form-KLmew1Vd.cjs → popover-form-_hQQpfAB.cjs} +2 -2
  376. package/dist/{popover-form-KLmew1Vd.cjs.map → popover-form-_hQQpfAB.cjs.map} +1 -1
  377. package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs +2 -0
  378. package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs.map +1 -0
  379. package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs +2 -0
  380. package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs.map +1 -0
  381. package/dist/price-range-area-chart-BW6RQb_9.cjs +2 -0
  382. package/dist/price-range-area-chart-BW6RQb_9.cjs.map +1 -0
  383. package/dist/price-range-area-chart-Dy01mhWJ.mjs +2 -0
  384. package/dist/price-range-area-chart-Dy01mhWJ.mjs.map +1 -0
  385. package/dist/product-card-CvXLXbpV.d.cts +30 -0
  386. package/dist/product-card-CvXLXbpV.d.mts +30 -0
  387. package/dist/progress-Bp-5keO8.d.cts +21 -0
  388. package/dist/progress-Bp-5keO8.d.mts +21 -0
  389. package/dist/progress-display-B45TkUcr.cjs +2 -0
  390. package/dist/progress-display-B45TkUcr.cjs.map +1 -0
  391. package/dist/progress-display-DvV-YhkE.mjs +2 -0
  392. package/dist/progress-display-DvV-YhkE.mjs.map +1 -0
  393. package/dist/{radio-group-field-DjzD3i-f.cjs → radio-group-field-McpjpLW-.cjs} +2 -2
  394. package/dist/{radio-group-field-DjzD3i-f.cjs.map → radio-group-field-McpjpLW-.cjs.map} +1 -1
  395. package/dist/{radio-group-field-Ps8yHpnH.mjs → radio-group-field-ZqMrf9Dx.mjs} +2 -2
  396. package/dist/{radio-group-field-Ps8yHpnH.mjs.map → radio-group-field-ZqMrf9Dx.mjs.map} +1 -1
  397. package/dist/radio-group-ycQQrPGn.d.cts +35 -0
  398. package/dist/radio-group-ycQQrPGn.d.mts +35 -0
  399. package/dist/refresh-BiyrZAXL.d.cts +16 -0
  400. package/dist/refresh-BiyrZAXL.d.mts +16 -0
  401. package/dist/remove-button-B3qFw-M5.cjs +2 -0
  402. package/dist/remove-button-B3qFw-M5.cjs.map +1 -0
  403. package/dist/remove-button-Db5oSj4h.mjs +2 -0
  404. package/dist/remove-button-Db5oSj4h.mjs.map +1 -0
  405. package/dist/{resizable-BLfxHCf4.d.cts → resizable-CAyWR1At.d.cts} +2 -2
  406. package/dist/{resizable-BLfxHCf4.d.mts → resizable-CAyWR1At.d.mts} +2 -2
  407. package/dist/revenue-area-chart-BwzeTRzD.mjs +2 -0
  408. package/dist/revenue-area-chart-BwzeTRzD.mjs.map +1 -0
  409. package/dist/revenue-area-chart-w2FZCl_7.cjs +2 -0
  410. package/dist/revenue-area-chart-w2FZCl_7.cjs.map +1 -0
  411. package/dist/revenue-orders-composed-chart-BttOWYGt.cjs +2 -0
  412. package/dist/revenue-orders-composed-chart-BttOWYGt.cjs.map +1 -0
  413. package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs +2 -0
  414. package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs.map +1 -0
  415. package/dist/role-badge-Bl4Rimpk.d.mts +21 -0
  416. package/dist/role-badge-IdZW0tsN.d.cts +21 -0
  417. package/dist/sales-target-radial-chart-BFLxBT2m.mjs +2 -0
  418. package/dist/sales-target-radial-chart-BFLxBT2m.mjs.map +1 -0
  419. package/dist/sales-target-radial-chart-BoxSk7hW.cjs +2 -0
  420. package/dist/sales-target-radial-chart-BoxSk7hW.cjs.map +1 -0
  421. package/dist/sankey-flow-chart-CDUqIRMZ.cjs +2 -0
  422. package/dist/sankey-flow-chart-CDUqIRMZ.cjs.map +1 -0
  423. package/dist/sankey-flow-chart-bQ3Dffet.mjs +2 -0
  424. package/dist/sankey-flow-chart-bQ3Dffet.mjs.map +1 -0
  425. package/dist/scroll-area-PbkqIAaH.d.cts +35 -0
  426. package/dist/scroll-area-PbkqIAaH.d.mts +35 -0
  427. package/dist/search-input-Bq4enQzR.d.cts +27 -0
  428. package/dist/search-input-D51_mAY-.d.mts +27 -0
  429. package/dist/select-B5j4WvPM.d.cts +74 -0
  430. package/dist/select-B5j4WvPM.d.mts +74 -0
  431. package/dist/{select-field-B4eU65OI.cjs → select-field-DG8sQ5iN.cjs} +2 -2
  432. package/dist/{select-field-B4eU65OI.cjs.map → select-field-DG8sQ5iN.cjs.map} +1 -1
  433. package/dist/{select-field-D6Dw-Jwg.mjs → select-field-Kq5iQCRQ.mjs} +2 -2
  434. package/dist/{select-field-D6Dw-Jwg.mjs.map → select-field-Kq5iQCRQ.mjs.map} +1 -1
  435. package/dist/separator-D6_fMJtM.d.cts +32 -0
  436. package/dist/separator-D6_fMJtM.d.mts +32 -0
  437. package/dist/sheet-cHLLSvvt.d.cts +66 -0
  438. package/dist/sheet-cHLLSvvt.d.mts +66 -0
  439. package/dist/sidebar-core-Bh0dZXsm.mjs +2 -0
  440. package/dist/sidebar-core-Bh0dZXsm.mjs.map +1 -0
  441. package/dist/sidebar-core-DQE6ymo4.cjs +2 -0
  442. package/dist/sidebar-core-DQE6ymo4.cjs.map +1 -0
  443. package/dist/{simple-array-field-Bcs2pHdp.cjs → simple-array-field-4paKpxXk.cjs} +2 -2
  444. package/dist/{simple-array-field-Bcs2pHdp.cjs.map → simple-array-field-4paKpxXk.cjs.map} +1 -1
  445. package/dist/{simple-array-field-9oZ-Smzp.mjs → simple-array-field-C5XdemXa.mjs} +2 -2
  446. package/dist/{simple-array-field-9oZ-Smzp.mjs.map → simple-array-field-C5XdemXa.mjs.map} +1 -1
  447. package/dist/{simple-boolean-field-C-qq6Vlt.cjs → simple-boolean-field-B9T_fHk9.cjs} +2 -2
  448. package/dist/{simple-boolean-field-C-qq6Vlt.cjs.map → simple-boolean-field-B9T_fHk9.cjs.map} +1 -1
  449. package/dist/{simple-boolean-field-CkJUMxNU.mjs → simple-boolean-field-DpJ-fSQk.mjs} +2 -2
  450. package/dist/{simple-boolean-field-CkJUMxNU.mjs.map → simple-boolean-field-DpJ-fSQk.mjs.map} +1 -1
  451. package/dist/simple-card-6P377r4A.d.cts +29 -0
  452. package/dist/simple-card-6P377r4A.d.mts +29 -0
  453. package/dist/{simple-combobox-field-5dfMd49B.mjs → simple-combobox-field-Ch4SBHCH.mjs} +2 -2
  454. package/dist/{simple-combobox-field-5dfMd49B.mjs.map → simple-combobox-field-Ch4SBHCH.mjs.map} +1 -1
  455. package/dist/{simple-combobox-field-BtmQGEo5.cjs → simple-combobox-field-ChMKk7xp.cjs} +2 -2
  456. package/dist/{simple-combobox-field-BtmQGEo5.cjs.map → simple-combobox-field-ChMKk7xp.cjs.map} +1 -1
  457. package/dist/{simple-date-field-LVfNhVJi.cjs → simple-date-field-BGGlsHzG.cjs} +2 -2
  458. package/dist/{simple-date-field-LVfNhVJi.cjs.map → simple-date-field-BGGlsHzG.cjs.map} +1 -1
  459. package/dist/{simple-date-field-BXoLb496.mjs → simple-date-field-CVKqIrEs.mjs} +2 -2
  460. package/dist/{simple-date-field-BXoLb496.mjs.map → simple-date-field-CVKqIrEs.mjs.map} +1 -1
  461. package/dist/{simple-email-field-rZZIXu7S.mjs → simple-email-field-98w0846B.mjs} +2 -2
  462. package/dist/{simple-email-field-rZZIXu7S.mjs.map → simple-email-field-98w0846B.mjs.map} +1 -1
  463. package/dist/{simple-email-field-QVUrm8f7.cjs → simple-email-field-DYqCWprP.cjs} +2 -2
  464. package/dist/{simple-email-field-QVUrm8f7.cjs.map → simple-email-field-DYqCWprP.cjs.map} +1 -1
  465. package/dist/{simple-number-field-P9PTwcs4.cjs → simple-number-field-otvv2xq-.cjs} +2 -2
  466. package/dist/{simple-number-field-P9PTwcs4.cjs.map → simple-number-field-otvv2xq-.cjs.map} +1 -1
  467. package/dist/{simple-number-field-PJAyAOMO.mjs → simple-number-field-zF3oqS8d.mjs} +2 -2
  468. package/dist/{simple-number-field-PJAyAOMO.mjs.map → simple-number-field-zF3oqS8d.mjs.map} +1 -1
  469. package/dist/{simple-password-field-BEuFXAsk.mjs → simple-password-field-CuC10c70.mjs} +2 -2
  470. package/dist/{simple-password-field-BEuFXAsk.mjs.map → simple-password-field-CuC10c70.mjs.map} +1 -1
  471. package/dist/{simple-password-field-BW6YkfSP.cjs → simple-password-field-D2UMmghM.cjs} +2 -2
  472. package/dist/{simple-password-field-BW6YkfSP.cjs.map → simple-password-field-D2UMmghM.cjs.map} +1 -1
  473. package/dist/{simple-radio-group-field-BtQHJpOz.cjs → simple-radio-group-field-C2DDfIUs.cjs} +2 -2
  474. package/dist/{simple-radio-group-field-BtQHJpOz.cjs.map → simple-radio-group-field-C2DDfIUs.cjs.map} +1 -1
  475. package/dist/{simple-radio-group-field-DiYQfgts.mjs → simple-radio-group-field-CfziNlLf.mjs} +2 -2
  476. package/dist/{simple-radio-group-field-DiYQfgts.mjs.map → simple-radio-group-field-CfziNlLf.mjs.map} +1 -1
  477. package/dist/{simple-select-field--zJMLBUY.cjs → simple-select-field-CeNnXUHN.cjs} +2 -2
  478. package/dist/{simple-select-field--zJMLBUY.cjs.map → simple-select-field-CeNnXUHN.cjs.map} +1 -1
  479. package/dist/{simple-select-field-Df4DLsbi.mjs → simple-select-field-DIaxhi1-.mjs} +2 -2
  480. package/dist/{simple-select-field-Df4DLsbi.mjs.map → simple-select-field-DIaxhi1-.mjs.map} +1 -1
  481. package/dist/{simple-text-field-zAfkmlhc.mjs → simple-text-field-D8jyznSd.mjs} +2 -2
  482. package/dist/{simple-text-field-zAfkmlhc.mjs.map → simple-text-field-D8jyznSd.mjs.map} +1 -1
  483. package/dist/{simple-text-field-DVkuHrhF.cjs → simple-text-field-LYWVIAfQ.cjs} +2 -2
  484. package/dist/{simple-text-field-DVkuHrhF.cjs.map → simple-text-field-LYWVIAfQ.cjs.map} +1 -1
  485. package/dist/{simple-textarea-field-BaMK0feA.cjs → simple-textarea-field-DcEvaizE.cjs} +2 -2
  486. package/dist/{simple-textarea-field-BaMK0feA.cjs.map → simple-textarea-field-DcEvaizE.cjs.map} +1 -1
  487. package/dist/{simple-textarea-field-q9DeFByl.mjs → simple-textarea-field-p9qX_n7m.mjs} +2 -2
  488. package/dist/{simple-textarea-field-q9DeFByl.mjs.map → simple-textarea-field-p9qX_n7m.mjs.map} +1 -1
  489. package/dist/skeleton-Ct4sYEKk.d.cts +24 -0
  490. package/dist/skeleton-Ct4sYEKk.d.mts +24 -0
  491. package/dist/slider-DwR1MhR8.d.cts +24 -0
  492. package/dist/slider-DwR1MhR8.d.mts +24 -0
  493. package/dist/sonner-B6LxJMYT.d.mts +22 -0
  494. package/dist/sonner-BcNgR0GP.d.cts +22 -0
  495. package/dist/sparkline-chart-TbGzakUl.mjs +2 -0
  496. package/dist/sparkline-chart-TbGzakUl.mjs.map +1 -0
  497. package/dist/sparkline-chart-sPqaJHep.cjs +2 -0
  498. package/dist/sparkline-chart-sPqaJHep.cjs.map +1 -0
  499. package/dist/spinner-CXuqcoB5.d.cts +22 -0
  500. package/dist/spinner-CXuqcoB5.d.mts +22 -0
  501. package/dist/stacked-area-chart-DyxY96_l.cjs +2 -0
  502. package/dist/stacked-area-chart-DyxY96_l.cjs.map +1 -0
  503. package/dist/stacked-area-chart-UIWIxTmq.mjs +2 -0
  504. package/dist/stacked-area-chart-UIWIxTmq.mjs.map +1 -0
  505. package/dist/statistic-8zBJMdRa.d.cts +45 -0
  506. package/dist/statistic-8zBJMdRa.d.mts +45 -0
  507. package/dist/statistic-BHCSCw9Q.cjs +2 -0
  508. package/dist/statistic-BHCSCw9Q.cjs.map +1 -0
  509. package/dist/statistic-DwiUKz02.mjs +2 -0
  510. package/dist/statistic-DwiUKz02.mjs.map +1 -0
  511. package/dist/status-display-BKe0EupF.mjs +2 -0
  512. package/dist/status-display-BKe0EupF.mjs.map +1 -0
  513. package/dist/status-display-BRJX53bQ.cjs +2 -0
  514. package/dist/status-display-BRJX53bQ.cjs.map +1 -0
  515. package/dist/summary-bar-ByYm7uWR.mjs +2 -0
  516. package/dist/summary-bar-ByYm7uWR.mjs.map +1 -0
  517. package/dist/summary-bar-DjdtmsIY.cjs +2 -0
  518. package/dist/summary-bar-DjdtmsIY.cjs.map +1 -0
  519. package/dist/switch-9v4AYqJb.d.cts +24 -0
  520. package/dist/switch-9v4AYqJb.d.mts +24 -0
  521. package/dist/{switch-field-B8HVvc2f.mjs → switch-field-CIoNsRWN.mjs} +2 -2
  522. package/dist/{switch-field-B8HVvc2f.mjs.map → switch-field-CIoNsRWN.mjs.map} +1 -1
  523. package/dist/{switch-field-C1uNuuku.cjs → switch-field-n6a5SaEM.cjs} +2 -2
  524. package/dist/{switch-field-C1uNuuku.cjs.map → switch-field-n6a5SaEM.cjs.map} +1 -1
  525. package/dist/systems/google.d.cts +2 -48
  526. package/dist/systems/google.d.mts +2 -48
  527. package/dist/table-Dg2D0v87.d.cts +70 -0
  528. package/dist/table-Dg2D0v87.d.mts +70 -0
  529. package/dist/tables-9d53sH9E.mjs +2 -0
  530. package/dist/tables-9d53sH9E.mjs.map +1 -0
  531. package/dist/tables-B1O9qy-m.cjs +2 -0
  532. package/dist/tables-B1O9qy-m.cjs.map +1 -0
  533. package/dist/tabs-CJ6qZcFU.d.cts +42 -0
  534. package/dist/tabs-CJ6qZcFU.d.mts +42 -0
  535. package/dist/tanstack-form-CNrZQZhn.cjs +2 -0
  536. package/dist/tanstack-form-CNrZQZhn.cjs.map +1 -0
  537. package/dist/tanstack-form-PC9YNeeo.mjs +2 -0
  538. package/dist/tanstack-form-PC9YNeeo.mjs.map +1 -0
  539. package/dist/text-editor-BYE2-G5K.mjs +2 -0
  540. package/dist/text-editor-BYE2-G5K.mjs.map +1 -0
  541. package/dist/text-editor-CfQk5dIx.cjs +2 -0
  542. package/dist/text-editor-CfQk5dIx.cjs.map +1 -0
  543. package/dist/{text-editor-field-CcsR48Jw.mjs → text-editor-field-fso-sw29.mjs} +2 -2
  544. package/dist/{text-editor-field-CcsR48Jw.mjs.map → text-editor-field-fso-sw29.mjs.map} +1 -1
  545. package/dist/{text-editor-field-BBDgCPuc.cjs → text-editor-field-gas5r-xy.cjs} +2 -2
  546. package/dist/{text-editor-field-BBDgCPuc.cjs.map → text-editor-field-gas5r-xy.cjs.map} +1 -1
  547. package/dist/{text-field-qhiYvQKt.mjs → text-field-B67oTV62.mjs} +2 -2
  548. package/dist/{text-field-qhiYvQKt.mjs.map → text-field-B67oTV62.mjs.map} +1 -1
  549. package/dist/{text-field-BhC_ik5w.cjs → text-field-BMo-8rsq.cjs} +2 -2
  550. package/dist/{text-field-BhC_ik5w.cjs.map → text-field-BMo-8rsq.cjs.map} +1 -1
  551. package/dist/textarea-C8ZIZh-y.d.cts +26 -0
  552. package/dist/textarea-C8ZIZh-y.d.mts +26 -0
  553. package/dist/{textarea-field-C-7ZoUMz.cjs → textarea-field-BUGcITwp.cjs} +2 -2
  554. package/dist/{textarea-field-C-7ZoUMz.cjs.map → textarea-field-BUGcITwp.cjs.map} +1 -1
  555. package/dist/{textarea-field-DqDciVSB.mjs → textarea-field-D70rGYIk.mjs} +2 -2
  556. package/dist/{textarea-field-DqDciVSB.mjs.map → textarea-field-D70rGYIk.mjs.map} +1 -1
  557. package/dist/title-BT9guhSU.d.cts +41 -0
  558. package/dist/title-BT9guhSU.d.mts +41 -0
  559. package/dist/toggle-Bh4EazxT.d.cts +30 -0
  560. package/dist/toggle-Bh4EazxT.d.mts +30 -0
  561. package/dist/toggle-button-DNLtfjJC.mjs +2 -0
  562. package/dist/toggle-button-DNLtfjJC.mjs.map +1 -0
  563. package/dist/toggle-button-Dq78v8cH.cjs +2 -0
  564. package/dist/toggle-button-Dq78v8cH.cjs.map +1 -0
  565. package/dist/toggle-group-BpqkL1ds.d.cts +37 -0
  566. package/dist/toggle-group-DzNE38v5.d.mts +37 -0
  567. package/dist/tooltip-D4U-RhIu.d.cts +53 -0
  568. package/dist/tooltip-D4U-RhIu.d.mts +53 -0
  569. package/dist/tooltip-DVK6xfZ1.cjs +4 -0
  570. package/dist/tooltip-DVK6xfZ1.cjs.map +1 -0
  571. package/dist/tooltip-lvpW5dMi.mjs +4 -0
  572. package/dist/tooltip-lvpW5dMi.mjs.map +1 -0
  573. package/dist/top-products-bar-chart-5EJFSkeo.cjs +2 -0
  574. package/dist/top-products-bar-chart-5EJFSkeo.cjs.map +1 -0
  575. package/dist/top-products-bar-chart-CKYaOGWT.mjs +2 -0
  576. package/dist/top-products-bar-chart-CKYaOGWT.mjs.map +1 -0
  577. package/dist/trash-BfWSqlL4.d.cts +16 -0
  578. package/dist/trash-BfWSqlL4.d.mts +16 -0
  579. package/dist/typography/paragraph.d.cts +2 -46
  580. package/dist/typography/paragraph.d.mts +2 -46
  581. package/dist/typography/title.d.cts +2 -41
  582. package/dist/typography/title.d.mts +2 -41
  583. package/dist/ui/alert-dialog.d.cts +2 -88
  584. package/dist/ui/alert-dialog.d.mts +2 -88
  585. package/dist/ui/aspect-ratio.d.cts +2 -22
  586. package/dist/ui/aspect-ratio.d.mts +2 -22
  587. package/dist/ui/avatar.d.cts +2 -33
  588. package/dist/ui/avatar.d.mts +2 -33
  589. package/dist/ui/badge.d.cts +1 -1
  590. package/dist/ui/badge.d.mts +1 -1
  591. package/dist/ui/breadcrumb.d.cts +2 -69
  592. package/dist/ui/breadcrumb.d.mts +2 -69
  593. package/dist/ui/button-group.d.cts +2 -48
  594. package/dist/ui/button-group.d.mts +2 -48
  595. package/dist/ui/button.d.cts +1 -1
  596. package/dist/ui/button.d.mts +1 -1
  597. package/dist/ui/buttons/add-new.d.cts +2 -16
  598. package/dist/ui/buttons/add-new.d.mts +2 -16
  599. package/dist/ui/buttons/edit.d.cts +2 -16
  600. package/dist/ui/buttons/edit.d.mts +2 -16
  601. package/dist/ui/buttons/refresh.d.cts +2 -16
  602. package/dist/ui/buttons/refresh.d.mts +2 -16
  603. package/dist/ui/buttons/trash.d.cts +2 -16
  604. package/dist/ui/buttons/trash.d.mts +2 -16
  605. package/dist/ui/buttons/upload-image.d.cts +2 -23
  606. package/dist/ui/buttons/upload-image.d.mts +2 -23
  607. package/dist/ui/calendar.d.cts +2 -43
  608. package/dist/ui/calendar.d.mts +2 -43
  609. package/dist/ui/card.d.cts +2 -60
  610. package/dist/ui/card.d.mts +2 -60
  611. package/dist/ui/carousel.d.cts +2 -70
  612. package/dist/ui/carousel.d.mts +2 -70
  613. package/dist/ui/chart.d.cts +2 -80
  614. package/dist/ui/chart.d.mts +2 -80
  615. package/dist/ui/checkbox.d.cts +2 -24
  616. package/dist/ui/checkbox.d.mts +2 -24
  617. package/dist/ui/collapsible.d.cts +2 -32
  618. package/dist/ui/collapsible.d.mts +2 -32
  619. package/dist/ui/command.d.cts +2 -87
  620. package/dist/ui/command.d.mts +2 -87
  621. package/dist/ui/context-menu.d.cts +2 -123
  622. package/dist/ui/context-menu.d.mts +2 -123
  623. package/dist/ui/drawer.d.cts +2 -70
  624. package/dist/ui/drawer.d.mts +2 -70
  625. package/dist/ui/dropdown-menu.d.cts +2 -125
  626. package/dist/ui/dropdown-menu.d.mts +2 -125
  627. package/dist/ui/empty.d.cts +2 -65
  628. package/dist/ui/empty.d.mts +2 -65
  629. package/dist/ui/field.d.cts +1 -1
  630. package/dist/ui/field.d.mts +1 -1
  631. package/dist/ui/file-uploader.d.cts +2 -101
  632. package/dist/ui/file-uploader.d.mts +2 -101
  633. package/dist/ui/form.d.cts +2 -109
  634. package/dist/ui/form.d.mts +2 -109
  635. package/dist/ui/hover-card.d.cts +2 -35
  636. package/dist/ui/hover-card.d.mts +2 -35
  637. package/dist/ui/image.d.cts +2 -27
  638. package/dist/ui/image.d.mts +2 -27
  639. package/dist/ui/input-otp.d.cts +2 -56
  640. package/dist/ui/input-otp.d.mts +2 -56
  641. package/dist/ui/input.d.cts +1 -1
  642. package/dist/ui/input.d.mts +1 -1
  643. package/dist/ui/inputs/search-input.d.cts +2 -27
  644. package/dist/ui/inputs/search-input.d.mts +2 -27
  645. package/dist/ui/item.d.cts +2 -99
  646. package/dist/ui/item.d.mts +2 -99
  647. package/dist/ui/label.d.cts +2 -22
  648. package/dist/ui/label.d.mts +2 -22
  649. package/dist/ui/menubar.d.cts +2 -133
  650. package/dist/ui/menubar.d.mts +2 -133
  651. package/dist/ui/multi-select.d.cts +2 -116
  652. package/dist/ui/multi-select.d.mts +2 -116
  653. package/dist/ui/navigation-menu.d.cts +2 -73
  654. package/dist/ui/navigation-menu.d.mts +2 -73
  655. package/dist/ui/pagination.d.cts +2 -64
  656. package/dist/ui/pagination.d.mts +2 -64
  657. package/dist/ui/popover.d.cts +2 -50
  658. package/dist/ui/popover.d.mts +2 -50
  659. package/dist/ui/progress.d.cts +2 -21
  660. package/dist/ui/progress.d.mts +2 -21
  661. package/dist/ui/radio-group.d.cts +2 -35
  662. package/dist/ui/radio-group.d.mts +2 -35
  663. package/dist/ui/resizable.d.cts +1 -1
  664. package/dist/ui/resizable.d.mts +1 -1
  665. package/dist/ui/scroll-area.d.cts +2 -35
  666. package/dist/ui/scroll-area.d.mts +2 -35
  667. package/dist/ui/select.d.cts +2 -74
  668. package/dist/ui/select.d.mts +2 -74
  669. package/dist/ui/separator.d.cts +2 -32
  670. package/dist/ui/separator.d.mts +2 -32
  671. package/dist/ui/sheet.d.cts +2 -66
  672. package/dist/ui/sheet.d.mts +2 -66
  673. package/dist/ui/skeleton.d.cts +2 -24
  674. package/dist/ui/skeleton.d.mts +2 -24
  675. package/dist/ui/slider.d.cts +2 -24
  676. package/dist/ui/slider.d.mts +2 -24
  677. package/dist/ui/sonner.d.cts +2 -22
  678. package/dist/ui/sonner.d.mts +2 -22
  679. package/dist/ui/spinner.d.cts +2 -22
  680. package/dist/ui/spinner.d.mts +2 -22
  681. package/dist/ui/switch.d.cts +2 -24
  682. package/dist/ui/switch.d.mts +2 -24
  683. package/dist/ui/table.d.cts +2 -70
  684. package/dist/ui/table.d.mts +2 -70
  685. package/dist/ui/tabs.d.cts +2 -42
  686. package/dist/ui/tabs.d.mts +2 -42
  687. package/dist/ui/textarea.d.cts +2 -26
  688. package/dist/ui/textarea.d.mts +2 -26
  689. package/dist/ui/toggle-group.d.cts +2 -37
  690. package/dist/ui/toggle-group.d.mts +2 -37
  691. package/dist/ui/toggle.d.cts +2 -30
  692. package/dist/ui/toggle.d.mts +2 -30
  693. package/dist/ui/tooltip.d.cts +2 -53
  694. package/dist/ui/tooltip.d.mts +2 -53
  695. package/dist/upload-image-D4VZU3IA.d.cts +23 -0
  696. package/dist/upload-image-D4VZU3IA.d.mts +23 -0
  697. package/dist/user-BymzvsYp.mjs +2 -0
  698. package/dist/user-BymzvsYp.mjs.map +1 -0
  699. package/dist/user-CvesQf42.d.cts +20 -0
  700. package/dist/user-CvesQf42.d.mts +20 -0
  701. package/dist/user-Dn53Fu5q.cjs +2 -0
  702. package/dist/user-Dn53Fu5q.cjs.map +1 -0
  703. package/dist/volume-bar-chart-BRpC_8-X.mjs +2 -0
  704. package/dist/volume-bar-chart-BRpC_8-X.mjs.map +1 -0
  705. package/dist/volume-bar-chart-CRxZPZIn.cjs +2 -0
  706. package/dist/volume-bar-chart-CRxZPZIn.cjs.map +1 -0
  707. package/dist/waterfall-chart-CTB2f5eh.cjs +2 -0
  708. package/dist/waterfall-chart-CTB2f5eh.cjs.map +1 -0
  709. package/dist/waterfall-chart-DwetaJFJ.mjs +2 -0
  710. package/dist/waterfall-chart-DwetaJFJ.mjs.map +1 -0
  711. package/package.json +1 -1
  712. package/dist/combobox-field-BGChwajc.mjs +0 -2
  713. package/dist/payment-layout-BLrXT-oc.cjs +0 -2
  714. package/dist/tables-B0Jl8Osc.cjs +0 -4
  715. package/dist/tables-B0Jl8Osc.cjs.map +0 -1
  716. package/dist/tables-Cylalxey.mjs +0 -4
  717. package/dist/tables-Cylalxey.mjs.map +0 -1
  718. package/dist/tanstack-form-CM_Hb3JT.mjs +0 -2
  719. package/dist/tanstack-form-CM_Hb3JT.mjs.map +0 -1
  720. package/dist/tanstack-form-DS_ZvRl8.cjs +0 -2
  721. package/dist/tanstack-form-DS_ZvRl8.cjs.map +0 -1
  722. package/dist/text-editor-BQtIXOpM.mjs +0 -2
  723. package/dist/text-editor-BQtIXOpM.mjs.map +0 -1
  724. package/dist/text-editor-DJYQXXtP.cjs +0 -2
  725. package/dist/text-editor-DJYQXXtP.cjs.map +0 -1
@@ -0,0 +1,73 @@
1
+ import { NavigationMenu } from "radix-ui";
2
+
3
+ //#region packages/components/ui/navigation-menu.d.ts
4
+ /**
5
+ * Root provider for the NavigationMenu — a horizontal nav bar with dropdown content panels.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import {
10
+ * NavigationMenu, NavigationMenuList, NavigationMenuItem,
11
+ * NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink,
12
+ * } from '@customafk/lunas-ui/ui/navigation-menu';
13
+ *
14
+ * <NavigationMenu>
15
+ * <NavigationMenuList>
16
+ * <NavigationMenuItem>
17
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
18
+ * <NavigationMenuContent>
19
+ * <NavigationMenuLink href="/products">All Products</NavigationMenuLink>
20
+ * </NavigationMenuContent>
21
+ * </NavigationMenuItem>
22
+ * </NavigationMenuList>
23
+ * </NavigationMenu>
24
+ * ```
25
+ */
26
+ declare function NavigationMenu$1({
27
+ className,
28
+ children,
29
+ viewport,
30
+ ...props
31
+ }: React.ComponentProps<typeof NavigationMenu.Root> & {
32
+ /** When false, the viewport animation panel is omitted (useful for inline menus). */viewport?: boolean;
33
+ }): import("react").JSX.Element;
34
+ /** Horizontal list that holds NavigationMenuItems. */
35
+ declare function NavigationMenuList({
36
+ className,
37
+ ...props
38
+ }: React.ComponentProps<typeof NavigationMenu.List>): import("react").JSX.Element;
39
+ /** A single navigation entry that may contain a trigger and a dropdown content panel. */
40
+ declare function NavigationMenuItem({
41
+ className,
42
+ ...props
43
+ }: React.ComponentProps<typeof NavigationMenu.Item>): import("react").JSX.Element;
44
+ declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
45
+ /** Button that opens the associated NavigationMenuContent panel on focus or hover. */
46
+ declare function NavigationMenuTrigger({
47
+ className,
48
+ children,
49
+ ...props
50
+ }: React.ComponentProps<typeof NavigationMenu.Trigger>): import("react").JSX.Element;
51
+ /** Dropdown content panel revealed when a NavigationMenuTrigger is activated. */
52
+ declare function NavigationMenuContent({
53
+ className,
54
+ ...props
55
+ }: React.ComponentProps<typeof NavigationMenu.Content>): import("react").JSX.Element;
56
+ /** Animated viewport container that hosts the active NavigationMenuContent. */
57
+ declare function NavigationMenuViewport({
58
+ className,
59
+ ...props
60
+ }: React.ComponentProps<typeof NavigationMenu.Viewport>): import("react").JSX.Element;
61
+ /** A styled link used inside NavigationMenuContent that highlights when active. */
62
+ declare function NavigationMenuLink({
63
+ className,
64
+ ...props
65
+ }: React.ComponentProps<typeof NavigationMenu.Link>): import("react").JSX.Element;
66
+ /** Small arrow indicator that points from the active NavigationMenuTrigger to its content panel. */
67
+ declare function NavigationMenuIndicator({
68
+ className,
69
+ ...props
70
+ }: React.ComponentProps<typeof NavigationMenu.Indicator>): import("react").JSX.Element;
71
+ //#endregion
72
+ export { NavigationMenuLink as a, NavigationMenuViewport as c, NavigationMenuItem as i, navigationMenuTriggerStyle as l, NavigationMenuContent as n, NavigationMenuList as o, NavigationMenuIndicator as r, NavigationMenuTrigger as s, NavigationMenu$1 as t };
73
+ //# sourceMappingURL=navigation-menu-B1BY9Zll.d.mts.map
@@ -1,2 +1,2 @@
1
- import{G as e}from"./tanstack-form-CM_Hb3JT.mjs";import{Field as t,FieldContent as n,FieldContentMain as r,FieldDescription as i,FieldError as a,FieldGroup as o,FieldLabel as s,FieldNote as c,FieldSeparator as l,FieldTooltip as u}from"./field-BKyUqvzh.mjs";import{t as d}from"./number-input-CqkegUWs.mjs";import{BanIcon as f,Loader2Icon as p}from"lucide-react";import{memo as m,useCallback as h,useId as g}from"react";import{cn as _}from"@customafk/react-toolkit/utils";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useStore as b}from"@tanstack/react-form";const x=m(({label:m,description:x,placeholder:S,tooltip:C,helperText:w,orientation:T=`responsive`,showErrorMessage:E=!0,rounding:D,decimalPlaces:O,precision:k,unit:A,required:j=!1,disabled:M=!1,allowNegative:N})=>{let P=g(),F=g(),I=e(),L=b(I.form.store,({isSubmitting:e})=>e),R=M||L,z=I.state.meta.isDirty||I.state.meta.isTouched,B=z&&!I.state.meta.isValid,V=j&&I.state.value===null,H=!!I.state.meta.errors.length,U=h(e=>{R||I.handleChange(e)},[R,I.handleChange]);return y(o,{className:`gap-y-4 px-4`,children:[y(t,{orientation:T,"data-invalid":B,children:[y(n,{children:[y(s,{htmlFor:P,"aria-required":V,children:[m,C&&v(u,{tooltip:C})]}),v(i,{children:x})]}),y(r,{children:[y(`div`,{className:`relative w-full`,children:[v(d,{id:P,value:I.state.value,"aria-invalid":B,"aria-describedby":F,placeholder:S,disabled:R,roundingRule:D,numberAfterDecimalPoint:O,precision:k,unitText:A,allowNegative:N,className:_(R&&`pointer-events-none opacity-60`),onBlur:I.handleBlur,onValueChange:U}),L&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:v(p,{className:`animate-spin text-primary-strong`})}),!L&&z&&E&&H&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:v(f,{})}),v(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:z&&E?v(a,{id:F,className:`flex-1`,errors:I.state.meta.errors}):v(`div`,{})})]}),v(c,{isShow:!!w,children:w})]})]}),v(l,{})]})});x.displayName=`NumberField`;export{x as NumberField};
2
- //# sourceMappingURL=number-field-Baj9Yhiv.mjs.map
1
+ import{G as e}from"./tanstack-form-PC9YNeeo.mjs";import{Field as t,FieldContent as n,FieldContentMain as r,FieldDescription as i,FieldError as a,FieldGroup as o,FieldLabel as s,FieldNote as c,FieldSeparator as l,FieldTooltip as u}from"./field-BKyUqvzh.mjs";import{t as d}from"./number-input-CqkegUWs.mjs";import{BanIcon as f,Loader2Icon as p}from"lucide-react";import{memo as m,useCallback as h,useId as g}from"react";import{cn as _}from"@customafk/react-toolkit/utils";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useStore as b}from"@tanstack/react-form";const x=m(({label:m,description:x,placeholder:S,tooltip:C,helperText:w,orientation:T=`responsive`,showErrorMessage:E=!0,rounding:D,decimalPlaces:O,precision:k,unit:A,required:j=!1,disabled:M=!1,allowNegative:N})=>{let P=g(),F=g(),I=e(),L=b(I.form.store,({isSubmitting:e})=>e),R=M||L,z=I.state.meta.isDirty||I.state.meta.isTouched,B=z&&!I.state.meta.isValid,V=j&&I.state.value===null,H=!!I.state.meta.errors.length,U=h(e=>{R||I.handleChange(e)},[R,I.handleChange]);return y(o,{className:`gap-y-4 px-4`,children:[y(t,{orientation:T,"data-invalid":B,children:[y(n,{children:[y(s,{htmlFor:P,"aria-required":V,children:[m,C&&v(u,{tooltip:C})]}),v(i,{children:x})]}),y(r,{children:[y(`div`,{className:`relative w-full`,children:[v(d,{id:P,value:I.state.value,"aria-invalid":B,"aria-describedby":F,placeholder:S,disabled:R,roundingRule:D,numberAfterDecimalPoint:O,precision:k,unitText:A,allowNegative:N,className:_(R&&`pointer-events-none opacity-60`),onBlur:I.handleBlur,onValueChange:U}),L&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:v(p,{className:`animate-spin text-primary-strong`})}),!L&&z&&E&&H&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:v(f,{})}),v(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:z&&E?v(a,{id:F,className:`flex-1`,errors:I.state.meta.errors}):v(`div`,{})})]}),v(c,{isShow:!!w,children:w})]})]}),v(l,{})]})});x.displayName=`NumberField`;export{x as NumberField};
2
+ //# sourceMappingURL=number-field-BjVjf6s4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field-Baj9Yhiv.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"wjBA+CA,MAAa,EAAc,GACxB,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,EAAK,EAAM,EACX,EAAU,EAAM,EAEhB,EAAQ,EAAuC,EAE/C,EAAe,EAAS,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,EAAgB,EACnB,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAC,EAAD,CAAY,UAAU,wBAAtB,CACE,EAAC,EAAD,CAAoB,cAAa,eAAc,WAA/C,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,IACZ,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EAEd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAU,2BAAf,CACE,EAAC,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,UAAW,EAAG,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,GACC,EAAC,MAAD,CAAK,UAAU,qFACb,EAAC,EAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,GAChD,EAAC,MAAD,CAAK,UAAU,yGACb,EAAC,EAAD,CAAU,CAAA,CACP,CAAA,EAEP,EAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,EAAmB,EAAC,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,EAAI,EAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,IACL,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,IACP,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
1
+ {"version":3,"file":"number-field-BjVjf6s4.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"wjBA+CA,MAAa,EAAc,GACxB,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,EAAK,EAAM,EACX,EAAU,EAAM,EAEhB,EAAQ,EAAuC,EAE/C,EAAe,EAAS,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,EAAgB,EACnB,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAC,EAAD,CAAY,UAAU,wBAAtB,CACE,EAAC,EAAD,CAAoB,cAAa,eAAc,WAA/C,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,IACZ,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EAEd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAU,2BAAf,CACE,EAAC,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,UAAW,EAAG,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,GACC,EAAC,MAAD,CAAK,UAAU,qFACb,EAAC,EAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,GAChD,EAAC,MAAD,CAAK,UAAU,yGACb,EAAC,EAAD,CAAU,CAAA,CACP,CAAA,EAEP,EAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,EAAmB,EAAC,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,EAAI,EAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,IACL,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,IACP,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
@@ -1,2 +1,2 @@
1
- const e=require("./tanstack-form-DS_ZvRl8.cjs"),t=require("./field-BV5twmKA.cjs"),n=require("./number-input-kTh9zzr7.cjs");let r=require("lucide-react"),i=require("react"),a=require("@customafk/react-toolkit/utils"),o=require("react/jsx-runtime"),s=require("@tanstack/react-form");const c=(0,i.memo)(({label:c,description:l,placeholder:u,tooltip:d,helperText:f,orientation:p=`responsive`,showErrorMessage:m=!0,rounding:h,decimalPlaces:g,precision:_,unit:v,required:y=!1,disabled:b=!1,allowNegative:x})=>{let S=(0,i.useId)(),C=(0,i.useId)(),w=e.G(),T=(0,s.useStore)(w.form.store,({isSubmitting:e})=>e),E=b||T,D=w.state.meta.isDirty||w.state.meta.isTouched,O=D&&!w.state.meta.isValid,k=y&&w.state.value===null,A=!!w.state.meta.errors.length,j=(0,i.useCallback)(e=>{E||w.handleChange(e)},[E,w.handleChange]);return(0,o.jsxs)(t.FieldGroup,{className:`gap-y-4 px-4`,children:[(0,o.jsxs)(t.Field,{orientation:p,"data-invalid":O,children:[(0,o.jsxs)(t.FieldContent,{children:[(0,o.jsxs)(t.FieldLabel,{htmlFor:S,"aria-required":k,children:[c,d&&(0,o.jsx)(t.FieldTooltip,{tooltip:d})]}),(0,o.jsx)(t.FieldDescription,{children:l})]}),(0,o.jsxs)(t.FieldContentMain,{children:[(0,o.jsxs)(`div`,{className:`relative w-full`,children:[(0,o.jsx)(n.t,{id:S,value:w.state.value,"aria-invalid":O,"aria-describedby":C,placeholder:u,disabled:E,roundingRule:h,numberAfterDecimalPoint:g,precision:_,unitText:v,allowNegative:x,className:(0,a.cn)(E&&`pointer-events-none opacity-60`),onBlur:w.handleBlur,onValueChange:j}),T&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:(0,o.jsx)(r.Loader2Icon,{className:`animate-spin text-primary-strong`})}),!T&&D&&m&&A&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:(0,o.jsx)(r.BanIcon,{})}),(0,o.jsx)(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:D&&m?(0,o.jsx)(t.FieldError,{id:C,className:`flex-1`,errors:w.state.meta.errors}):(0,o.jsx)(`div`,{})})]}),(0,o.jsx)(t.FieldNote,{isShow:!!f,children:f})]})]}),(0,o.jsx)(t.FieldSeparator,{})]})});c.displayName=`NumberField`,exports.NumberField=c;
2
- //# sourceMappingURL=number-field-BqeSbMvE.cjs.map
1
+ const e=require("./tanstack-form-CNrZQZhn.cjs"),t=require("./field-BV5twmKA.cjs"),n=require("./number-input-kTh9zzr7.cjs");let r=require("lucide-react"),i=require("react"),a=require("@customafk/react-toolkit/utils"),o=require("react/jsx-runtime"),s=require("@tanstack/react-form");const c=(0,i.memo)(({label:c,description:l,placeholder:u,tooltip:d,helperText:f,orientation:p=`responsive`,showErrorMessage:m=!0,rounding:h,decimalPlaces:g,precision:_,unit:v,required:y=!1,disabled:b=!1,allowNegative:x})=>{let S=(0,i.useId)(),C=(0,i.useId)(),w=e.G(),T=(0,s.useStore)(w.form.store,({isSubmitting:e})=>e),E=b||T,D=w.state.meta.isDirty||w.state.meta.isTouched,O=D&&!w.state.meta.isValid,k=y&&w.state.value===null,A=!!w.state.meta.errors.length,j=(0,i.useCallback)(e=>{E||w.handleChange(e)},[E,w.handleChange]);return(0,o.jsxs)(t.FieldGroup,{className:`gap-y-4 px-4`,children:[(0,o.jsxs)(t.Field,{orientation:p,"data-invalid":O,children:[(0,o.jsxs)(t.FieldContent,{children:[(0,o.jsxs)(t.FieldLabel,{htmlFor:S,"aria-required":k,children:[c,d&&(0,o.jsx)(t.FieldTooltip,{tooltip:d})]}),(0,o.jsx)(t.FieldDescription,{children:l})]}),(0,o.jsxs)(t.FieldContentMain,{children:[(0,o.jsxs)(`div`,{className:`relative w-full`,children:[(0,o.jsx)(n.t,{id:S,value:w.state.value,"aria-invalid":O,"aria-describedby":C,placeholder:u,disabled:E,roundingRule:h,numberAfterDecimalPoint:g,precision:_,unitText:v,allowNegative:x,className:(0,a.cn)(E&&`pointer-events-none opacity-60`),onBlur:w.handleBlur,onValueChange:j}),T&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:(0,o.jsx)(r.Loader2Icon,{className:`animate-spin text-primary-strong`})}),!T&&D&&m&&A&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:(0,o.jsx)(r.BanIcon,{})}),(0,o.jsx)(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:D&&m?(0,o.jsx)(t.FieldError,{id:C,className:`flex-1`,errors:w.state.meta.errors}):(0,o.jsx)(`div`,{})})]}),(0,o.jsx)(t.FieldNote,{isShow:!!f,children:f})]})]}),(0,o.jsx)(t.FieldSeparator,{})]})});c.displayName=`NumberField`,exports.NumberField=c;
2
+ //# sourceMappingURL=number-field-DmKh7bbY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field-BqeSbMvE.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","NumberInput","Loader2Icon","BanIcon","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"yRA+CA,MAAa,GAAA,EAAA,EAAA,KAAA,EACV,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,GAAA,EAAA,EAAA,MAAA,CAAW,EACX,GAAA,EAAA,EAAA,MAAA,CAAgB,EAEhB,EAAQA,EAAAA,EAAuC,EAE/C,GAAA,EAAA,EAAA,SAAA,CAAwB,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,GAAA,EAAA,EAAA,YAAA,CACH,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,UAAU,wBAAtB,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,MAAD,CAAoB,cAAa,eAAc,WAA/C,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CAAuB,SAAU,CAAA,CACnC,KACZ,EAAA,EAAA,IAAA,CAACC,EAAAA,iBAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GAEd,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,2BAAf,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,WAAA,EAAA,EAAA,GAAA,CAAc,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,IACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sFACb,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,IAChD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0GACb,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAU,CAAA,CACP,CAAA,GAEP,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,GAAmB,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,KACL,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,KACP,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
1
+ {"version":3,"file":"number-field-DmKh7bbY.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","NumberInput","Loader2Icon","BanIcon","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"yRA+CA,MAAa,GAAA,EAAA,EAAA,KAAA,EACV,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,GAAA,EAAA,EAAA,MAAA,CAAW,EACX,GAAA,EAAA,EAAA,MAAA,CAAgB,EAEhB,EAAQA,EAAAA,EAAuC,EAE/C,GAAA,EAAA,EAAA,SAAA,CAAwB,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,GAAA,EAAA,EAAA,YAAA,CACH,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,UAAU,wBAAtB,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,MAAD,CAAoB,cAAa,eAAc,WAA/C,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CAAuB,SAAU,CAAA,CACnC,KACZ,EAAA,EAAA,IAAA,CAACC,EAAAA,iBAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GAEd,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,2BAAf,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,WAAA,EAAA,EAAA,GAAA,CAAc,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,IACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sFACb,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,IAChD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0GACb,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAU,CAAA,CACP,CAAA,GAEP,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,GAAmB,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,KACL,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,KACP,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
@@ -0,0 +1,2 @@
1
+ const e=require("./features/charts/index.cjs"),t=require("./ui/chart.cjs");let n=require("react"),r=require("@customafk/react-toolkit/utils"),i=require("react/jsx-runtime"),a=require("recharts");const o=({data:o,dataKey:s=`orders`,label:c=`Orders`,statuses:l,color:u=`var(--chart-1)`,valueFormatter:d=e=>e.toLocaleString(`en-US`),dateFormatter:f=e.toDateLabel,showLegend:p=!!l,showGrid:m=!0,className:h,animate:g=!0,height:_})=>(0,i.jsx)(t.ChartContainer,{"data-slot":`orders-bar-chart`,config:(0,n.useMemo)(()=>l?Object.fromEntries(l.map((t,n)=>[t.key,{label:t.label,color:t.color||e.getChartColor(n)}])):{[s]:{label:c,color:u}},[l,s,c,u]),className:(0,r.cn)(`w-full`,h),style:_===void 0?void 0:{height:_,aspectRatio:`auto`},children:(0,i.jsxs)(a.BarChart,{data:o,margin:{top:8,right:12,bottom:0,left:12},children:[m&&(0,i.jsx)(a.CartesianGrid,{vertical:!1}),(0,i.jsx)(a.XAxis,{dataKey:`date`,tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:f}),(0,i.jsx)(a.YAxis,{tickLine:!1,axisLine:!1,tickMargin:8,width:48,allowDecimals:!1,tickFormatter:d}),(0,i.jsx)(t.ChartTooltip,{content:(0,i.jsx)(t.ChartTooltipContent,{labelFormatter:(e,t)=>{let n=t?.[0]?.payload?.date;return n?f(n):null}})}),l?l.map((t,n)=>(0,i.jsx)(a.Bar,{dataKey:t.key,stackId:`orders`,fill:t.color||e.getChartColor(n),radius:n===l.length-1?[4,4,0,0]:[0,0,0,0],isAnimationActive:g},t.key)):(0,i.jsx)(a.Bar,{dataKey:s,fill:u,radius:[4,4,0,0],isAnimationActive:g}),p&&(0,i.jsx)(t.ChartLegend,{content:(0,i.jsx)(t.ChartLegendContent,{})})]})});exports.OrdersBarChart=o;
2
+ //# sourceMappingURL=orders-bar-chart-9RmtP6In.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-bar-chart-9RmtP6In.cjs","names":["toDateLabel","ChartContainer","getChartColor","BarChart","CartesianGrid","XAxis","YAxis","ChartTooltip","ChartTooltipContent","Bar","ChartLegend","ChartLegendContent"],"sources":["../packages/components/features/charts/components/orders-bar-chart.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\n\nimport { Bar, BarChart, CartesianGrid, XAxis, YAxis } from 'recharts';\nimport type { BaseChartProps, ChartSeries } from '../types';\nimport { getChartColor, toDateLabel } from '../utils';\n\nexport type OrdersBarChartProps = BaseChartProps & {\n data: Array<{ date: string | Date } & Record<string, unknown>>;\n /** Simple mode: the key holding each period's count. Defaults to `'orders'`. */\n dataKey?: string;\n /** Series label in simple mode. Defaults to `'Orders'`. */\n label?: string;\n /** Stacked mode: one series per order status; each `key` indexes into the data rows. */\n statuses?: ChartSeries[];\n color?: string;\n valueFormatter?: (value: number) => string;\n dateFormatter?: (date: string | Date) => string;\n /** Defaults to `true` when `statuses` is provided. */\n showLegend?: boolean;\n showGrid?: boolean;\n};\n\n/**\n * A bar chart for order volume per period — a single series by default, or stacked by order\n * status when `statuses` is provided.\n *\n * @example\n * ```tsx\n * import { OrdersBarChart } from '@customafk/lunas-ui/features/charts';\n *\n * <OrdersBarChart\n * data={[{ date: '2026-06-01', completed: 32, pending: 6, cancelled: 2 }]}\n * statuses={[\n * { key: 'completed', label: 'Completed' },\n * { key: 'pending', label: 'Pending' },\n * { key: 'cancelled', label: 'Cancelled' },\n * ]}\n * />\n * ```\n */\nexport const OrdersBarChart = ({\n data,\n dataKey = 'orders',\n label = 'Orders',\n statuses,\n color = 'var(--chart-1)',\n valueFormatter = value => value.toLocaleString('en-US'),\n dateFormatter = toDateLabel,\n showLegend = !!statuses,\n showGrid = true,\n className,\n animate = true,\n height,\n}: OrdersBarChartProps) => {\n const config = useMemo<ChartConfig>(() => {\n if (!statuses) return { [dataKey]: { label, color } };\n return Object.fromEntries(statuses.map((status, index) => [status.key, { label: status.label, color: status.color || getChartColor(index) }]));\n }, [statuses, dataKey, label, color]);\n\n return (\n <ChartContainer\n data-slot=\"orders-bar-chart\"\n config={config}\n className={cn('w-full', className)}\n style={height !== undefined ? { height, aspectRatio: 'auto' } : undefined}\n >\n <BarChart data={data} margin={{ top: 8, right: 12, bottom: 0, left: 12 }}>\n {showGrid && <CartesianGrid vertical={false} />}\n <XAxis dataKey=\"date\" tickLine={false} axisLine={false} tickMargin={8} tickFormatter={dateFormatter} />\n <YAxis tickLine={false} axisLine={false} tickMargin={8} width={48} allowDecimals={false} tickFormatter={valueFormatter} />\n <ChartTooltip\n content={\n <ChartTooltipContent\n labelFormatter={(_, payload) => {\n const date = payload?.[0]?.payload?.date;\n return date ? dateFormatter(date) : null;\n }}\n />\n }\n />\n {statuses ? (\n statuses.map((status, index) => (\n <Bar\n key={status.key}\n dataKey={status.key}\n stackId=\"orders\"\n fill={status.color || getChartColor(index)}\n radius={index === statuses.length - 1 ? [4, 4, 0, 0] : [0, 0, 0, 0]}\n isAnimationActive={animate}\n />\n ))\n ) : (\n <Bar dataKey={dataKey} fill={color} radius={[4, 4, 0, 0]} isAnimationActive={animate} />\n )}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n </BarChart>\n </ChartContainer>\n );\n};\n"],"mappings":"mMA8CA,MAAa,GAAkB,CAC7B,OACA,UAAU,SACV,QAAQ,SACR,WACA,QAAQ,iBACR,iBAAiB,GAAS,EAAM,eAAe,OAAO,EACtD,gBAAgBA,EAAAA,YAChB,aAAa,CAAC,CAAC,EACf,WAAW,GACX,YACA,UAAU,GACV,aAQE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CACE,YAAU,mBACV,QAAA,EAAA,EAAA,QAAA,KAPG,EACE,OAAO,YAAY,EAAS,KAAK,EAAQ,IAAU,CAAC,EAAO,IAAK,CAAE,MAAO,EAAO,MAAO,MAAO,EAAO,OAASC,EAAAA,cAAc,CAAK,CAAE,CAAC,CAAC,CAAC,EADvH,EAAG,GAAU,CAAE,QAAO,OAAM,CAAE,EAEnD,CAAC,EAAU,EAAS,EAAO,CAAK,CAKlB,EACb,WAAA,EAAA,EAAA,GAAA,CAAc,SAAU,CAAS,EACjC,MAAO,IAAW,IAAA,GAA8C,IAAA,GAAlC,CAAE,SAAQ,YAAa,MAAO,YAE5D,EAAA,EAAA,KAAA,CAACC,EAAAA,SAAD,CAAgB,OAAM,OAAQ,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,EAAG,KAAM,EAAG,WAAvE,CACG,IAAY,EAAA,EAAA,IAAA,CAACC,EAAAA,cAAD,CAAe,SAAU,EAAQ,CAAA,GAC9C,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CAAO,QAAQ,OAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,cAAe,CAAgB,CAAA,GACtG,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,MAAO,GAAI,cAAe,GAAO,cAAe,CAAiB,CAAA,GACzH,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CACE,SACE,EAAA,EAAA,IAAA,CAACC,EAAAA,oBAAD,CACE,gBAAiB,EAAG,IAAY,CAC9B,IAAM,EAAO,IAAU,EAAE,EAAE,SAAS,KACpC,OAAO,EAAO,EAAc,CAAI,EAAI,IACtC,CACD,CAAA,CAEJ,CAAA,EACA,EACC,EAAS,KAAK,EAAQ,KACpB,EAAA,EAAA,IAAA,CAACC,EAAAA,IAAD,CAEE,QAAS,EAAO,IAChB,QAAQ,SACR,KAAM,EAAO,OAASP,EAAAA,cAAc,CAAK,EACzC,OAAQ,IAAU,EAAS,OAAS,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAClE,kBAAmB,CACpB,EANM,EAAO,GAMb,CACF,GAED,EAAA,EAAA,IAAA,CAACO,EAAAA,IAAD,CAAc,UAAS,KAAM,EAAO,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,kBAAmB,CAAU,CAAA,EAExF,IAAc,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,SAAS,EAAA,EAAA,IAAA,CAACC,EAAAA,mBAAD,CAAqB,CAAA,CAAI,CAAA,CACtD,GACI,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{getChartColor as e,toDateLabel as t}from"./features/charts/index.mjs";import{ChartContainer as n,ChartLegend as r,ChartLegendContent as i,ChartTooltip as a,ChartTooltipContent as o}from"./ui/chart.mjs";import{useMemo as s}from"react";import{cn as c}from"@customafk/react-toolkit/utils";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{Bar as d,BarChart as f,CartesianGrid as p,XAxis as m,YAxis as h}from"recharts";const g=({data:g,dataKey:_=`orders`,label:v=`Orders`,statuses:y,color:b=`var(--chart-1)`,valueFormatter:x=e=>e.toLocaleString(`en-US`),dateFormatter:S=t,showLegend:C=!!y,showGrid:w=!0,className:T,animate:E=!0,height:D})=>l(n,{"data-slot":`orders-bar-chart`,config:s(()=>y?Object.fromEntries(y.map((t,n)=>[t.key,{label:t.label,color:t.color||e(n)}])):{[_]:{label:v,color:b}},[y,_,v,b]),className:c(`w-full`,T),style:D===void 0?void 0:{height:D,aspectRatio:`auto`},children:u(f,{data:g,margin:{top:8,right:12,bottom:0,left:12},children:[w&&l(p,{vertical:!1}),l(m,{dataKey:`date`,tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:S}),l(h,{tickLine:!1,axisLine:!1,tickMargin:8,width:48,allowDecimals:!1,tickFormatter:x}),l(a,{content:l(o,{labelFormatter:(e,t)=>{let n=t?.[0]?.payload?.date;return n?S(n):null}})}),y?y.map((t,n)=>l(d,{dataKey:t.key,stackId:`orders`,fill:t.color||e(n),radius:n===y.length-1?[4,4,0,0]:[0,0,0,0],isAnimationActive:E},t.key)):l(d,{dataKey:_,fill:b,radius:[4,4,0,0],isAnimationActive:E}),C&&l(r,{content:l(i,{})})]})});export{g as OrdersBarChart};
2
+ //# sourceMappingURL=orders-bar-chart-DQhJGmwY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-bar-chart-DQhJGmwY.mjs","names":[],"sources":["../packages/components/features/charts/components/orders-bar-chart.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\n\nimport { Bar, BarChart, CartesianGrid, XAxis, YAxis } from 'recharts';\nimport type { BaseChartProps, ChartSeries } from '../types';\nimport { getChartColor, toDateLabel } from '../utils';\n\nexport type OrdersBarChartProps = BaseChartProps & {\n data: Array<{ date: string | Date } & Record<string, unknown>>;\n /** Simple mode: the key holding each period's count. Defaults to `'orders'`. */\n dataKey?: string;\n /** Series label in simple mode. Defaults to `'Orders'`. */\n label?: string;\n /** Stacked mode: one series per order status; each `key` indexes into the data rows. */\n statuses?: ChartSeries[];\n color?: string;\n valueFormatter?: (value: number) => string;\n dateFormatter?: (date: string | Date) => string;\n /** Defaults to `true` when `statuses` is provided. */\n showLegend?: boolean;\n showGrid?: boolean;\n};\n\n/**\n * A bar chart for order volume per period — a single series by default, or stacked by order\n * status when `statuses` is provided.\n *\n * @example\n * ```tsx\n * import { OrdersBarChart } from '@customafk/lunas-ui/features/charts';\n *\n * <OrdersBarChart\n * data={[{ date: '2026-06-01', completed: 32, pending: 6, cancelled: 2 }]}\n * statuses={[\n * { key: 'completed', label: 'Completed' },\n * { key: 'pending', label: 'Pending' },\n * { key: 'cancelled', label: 'Cancelled' },\n * ]}\n * />\n * ```\n */\nexport const OrdersBarChart = ({\n data,\n dataKey = 'orders',\n label = 'Orders',\n statuses,\n color = 'var(--chart-1)',\n valueFormatter = value => value.toLocaleString('en-US'),\n dateFormatter = toDateLabel,\n showLegend = !!statuses,\n showGrid = true,\n className,\n animate = true,\n height,\n}: OrdersBarChartProps) => {\n const config = useMemo<ChartConfig>(() => {\n if (!statuses) return { [dataKey]: { label, color } };\n return Object.fromEntries(statuses.map((status, index) => [status.key, { label: status.label, color: status.color || getChartColor(index) }]));\n }, [statuses, dataKey, label, color]);\n\n return (\n <ChartContainer\n data-slot=\"orders-bar-chart\"\n config={config}\n className={cn('w-full', className)}\n style={height !== undefined ? { height, aspectRatio: 'auto' } : undefined}\n >\n <BarChart data={data} margin={{ top: 8, right: 12, bottom: 0, left: 12 }}>\n {showGrid && <CartesianGrid vertical={false} />}\n <XAxis dataKey=\"date\" tickLine={false} axisLine={false} tickMargin={8} tickFormatter={dateFormatter} />\n <YAxis tickLine={false} axisLine={false} tickMargin={8} width={48} allowDecimals={false} tickFormatter={valueFormatter} />\n <ChartTooltip\n content={\n <ChartTooltipContent\n labelFormatter={(_, payload) => {\n const date = payload?.[0]?.payload?.date;\n return date ? dateFormatter(date) : null;\n }}\n />\n }\n />\n {statuses ? (\n statuses.map((status, index) => (\n <Bar\n key={status.key}\n dataKey={status.key}\n stackId=\"orders\"\n fill={status.color || getChartColor(index)}\n radius={index === statuses.length - 1 ? [4, 4, 0, 0] : [0, 0, 0, 0]}\n isAnimationActive={animate}\n />\n ))\n ) : (\n <Bar dataKey={dataKey} fill={color} radius={[4, 4, 0, 0]} isAnimationActive={animate} />\n )}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n </BarChart>\n </ChartContainer>\n );\n};\n"],"mappings":"6aA8CA,MAAa,GAAkB,CAC7B,OACA,UAAU,SACV,QAAQ,SACR,WACA,QAAQ,iBACR,iBAAiB,GAAS,EAAM,eAAe,OAAO,EACtD,gBAAgB,EAChB,aAAa,CAAC,CAAC,EACf,WAAW,GACX,YACA,UAAU,GACV,YAQE,EAAC,EAAD,CACE,YAAU,mBACV,OARW,MACR,EACE,OAAO,YAAY,EAAS,KAAK,EAAQ,IAAU,CAAC,EAAO,IAAK,CAAE,MAAO,EAAO,MAAO,MAAO,EAAO,OAAS,EAAc,CAAK,CAAE,CAAC,CAAC,CAAC,EADvH,EAAG,GAAU,CAAE,QAAO,OAAM,CAAE,EAEnD,CAAC,EAAU,EAAS,EAAO,CAAK,CAKlB,EACb,UAAW,EAAG,SAAU,CAAS,EACjC,MAAO,IAAW,IAAA,GAA8C,IAAA,GAAlC,CAAE,SAAQ,YAAa,MAAO,WAE5D,EAAC,EAAD,CAAgB,OAAM,OAAQ,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,EAAG,KAAM,EAAG,WAAvE,CACG,GAAY,EAAC,EAAD,CAAe,SAAU,EAAQ,CAAA,EAC9C,EAAC,EAAD,CAAO,QAAQ,OAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,cAAe,CAAgB,CAAA,EACtG,EAAC,EAAD,CAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,MAAO,GAAI,cAAe,GAAO,cAAe,CAAiB,CAAA,EACzH,EAAC,EAAD,CACE,QACE,EAAC,EAAD,CACE,gBAAiB,EAAG,IAAY,CAC9B,IAAM,EAAO,IAAU,EAAE,EAAE,SAAS,KACpC,OAAO,EAAO,EAAc,CAAI,EAAI,IACtC,CACD,CAAA,CAEJ,CAAA,EACA,EACC,EAAS,KAAK,EAAQ,IACpB,EAAC,EAAD,CAEE,QAAS,EAAO,IAChB,QAAQ,SACR,KAAM,EAAO,OAAS,EAAc,CAAK,EACzC,OAAQ,IAAU,EAAS,OAAS,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAClE,kBAAmB,CACpB,EANM,EAAO,GAMb,CACF,EAED,EAAC,EAAD,CAAc,UAAS,KAAM,EAAO,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,kBAAmB,CAAU,CAAA,EAExF,GAAc,EAAC,EAAD,CAAa,QAAS,EAAC,EAAD,CAAqB,CAAA,CAAI,CAAA,CACtD,GACI,CAAA"}
@@ -1,41 +1,2 @@
1
- //#region packages/components/pages/FeatureDeveloping.d.ts
2
- interface FeatureDevelopingProps {
3
- /** Main heading shown beneath the construction icon. Defaults to `'Tính năng đang phát triển'`. */
4
- title?: string;
5
- /** Supporting text shown below the title. Defaults to a Vietnamese message asking the user to check back later. */
6
- subtitle?: string;
7
- /** Label for the action button. Defaults to `'Quay lại'`. */
8
- buttonText?: string;
9
- /** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
10
- onButtonClick?: () => void;
11
- /** Additional class names applied to the root container element. */
12
- className?: string;
13
- /** Additional class names applied to the `Construction` icon. */
14
- iconClassName?: string;
15
- }
16
- /**
17
- * Full-page placeholder displayed when a feature is still under active development.
18
- *
19
- * @example
20
- * ```tsx
21
- * import { FeatureDeveloping } from '@customafk/lunas-ui/pages/FeatureDeveloping';
22
- *
23
- * <FeatureDeveloping
24
- * title="Coming Soon"
25
- * subtitle="This feature is not ready yet."
26
- * buttonText="Go Back"
27
- * onButtonClick={() => router.back()}
28
- * />
29
- * ```
30
- */
31
- declare const FeatureDeveloping: ({
32
- title,
33
- subtitle,
34
- buttonText,
35
- onButtonClick,
36
- className,
37
- iconClassName
38
- }: FeatureDevelopingProps) => import("react").JSX.Element;
39
- //#endregion
40
- export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
41
- //# sourceMappingURL=FeatureDeveloping.d.cts.map
1
+ import { n as FeatureDevelopingProps, t as FeatureDeveloping } from "../FeatureDeveloping-zuTTDIh_.cjs";
2
+ export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
@@ -1,41 +1,2 @@
1
- //#region packages/components/pages/FeatureDeveloping.d.ts
2
- interface FeatureDevelopingProps {
3
- /** Main heading shown beneath the construction icon. Defaults to `'Tính năng đang phát triển'`. */
4
- title?: string;
5
- /** Supporting text shown below the title. Defaults to a Vietnamese message asking the user to check back later. */
6
- subtitle?: string;
7
- /** Label for the action button. Defaults to `'Quay lại'`. */
8
- buttonText?: string;
9
- /** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
10
- onButtonClick?: () => void;
11
- /** Additional class names applied to the root container element. */
12
- className?: string;
13
- /** Additional class names applied to the `Construction` icon. */
14
- iconClassName?: string;
15
- }
16
- /**
17
- * Full-page placeholder displayed when a feature is still under active development.
18
- *
19
- * @example
20
- * ```tsx
21
- * import { FeatureDeveloping } from '@customafk/lunas-ui/pages/FeatureDeveloping';
22
- *
23
- * <FeatureDeveloping
24
- * title="Coming Soon"
25
- * subtitle="This feature is not ready yet."
26
- * buttonText="Go Back"
27
- * onButtonClick={() => router.back()}
28
- * />
29
- * ```
30
- */
31
- declare const FeatureDeveloping: ({
32
- title,
33
- subtitle,
34
- buttonText,
35
- onButtonClick,
36
- className,
37
- iconClassName
38
- }: FeatureDevelopingProps) => import("react").JSX.Element;
39
- //#endregion
40
- export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
41
- //# sourceMappingURL=FeatureDeveloping.d.mts.map
1
+ import { n as FeatureDevelopingProps, t as FeatureDeveloping } from "../FeatureDeveloping-zuTTDIh_.mjs";
2
+ export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
@@ -1,41 +1,2 @@
1
- //#region packages/components/pages/FeatureFixing.d.ts
2
- interface FeatureFixingProps {
3
- /** Main heading shown beneath the wrench icon. Defaults to `'Tính năng đang bảo trì'`. */
4
- title?: string;
5
- /** Supporting text shown below the title. Defaults to a Vietnamese maintenance message. */
6
- subtitle?: string;
7
- /** Label for the action button. Defaults to `'Quay lại'`. */
8
- buttonText?: string;
9
- /** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
10
- onButtonClick?: () => void;
11
- /** Additional class names applied to the root container element. */
12
- className?: string;
13
- /** Additional class names applied to the `Wrench` icon. */
14
- iconClassName?: string;
15
- }
16
- /**
17
- * Full-page placeholder displayed when a feature is temporarily unavailable due to maintenance or bug fixes.
18
- *
19
- * @example
20
- * ```tsx
21
- * import { FeatureFixing } from '@customafk/lunas-ui/pages/FeatureFixing';
22
- *
23
- * <FeatureFixing
24
- * title="Under Maintenance"
25
- * subtitle="We are fixing an issue. Please check back later."
26
- * buttonText="Go Back"
27
- * onButtonClick={() => router.back()}
28
- * />
29
- * ```
30
- */
31
- declare const FeatureFixing: ({
32
- title,
33
- subtitle,
34
- buttonText,
35
- onButtonClick,
36
- className,
37
- iconClassName
38
- }: FeatureFixingProps) => import("react").JSX.Element;
39
- //#endregion
40
- export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
41
- //# sourceMappingURL=FeatureFixing.d.cts.map
1
+ import { n as FeatureFixingProps, t as FeatureFixing } from "../FeatureFixing-DYQlgHPk.cjs";
2
+ export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
@@ -1,41 +1,2 @@
1
- //#region packages/components/pages/FeatureFixing.d.ts
2
- interface FeatureFixingProps {
3
- /** Main heading shown beneath the wrench icon. Defaults to `'Tính năng đang bảo trì'`. */
4
- title?: string;
5
- /** Supporting text shown below the title. Defaults to a Vietnamese maintenance message. */
6
- subtitle?: string;
7
- /** Label for the action button. Defaults to `'Quay lại'`. */
8
- buttonText?: string;
9
- /** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
10
- onButtonClick?: () => void;
11
- /** Additional class names applied to the root container element. */
12
- className?: string;
13
- /** Additional class names applied to the `Wrench` icon. */
14
- iconClassName?: string;
15
- }
16
- /**
17
- * Full-page placeholder displayed when a feature is temporarily unavailable due to maintenance or bug fixes.
18
- *
19
- * @example
20
- * ```tsx
21
- * import { FeatureFixing } from '@customafk/lunas-ui/pages/FeatureFixing';
22
- *
23
- * <FeatureFixing
24
- * title="Under Maintenance"
25
- * subtitle="We are fixing an issue. Please check back later."
26
- * buttonText="Go Back"
27
- * onButtonClick={() => router.back()}
28
- * />
29
- * ```
30
- */
31
- declare const FeatureFixing: ({
32
- title,
33
- subtitle,
34
- buttonText,
35
- onButtonClick,
36
- className,
37
- iconClassName
38
- }: FeatureFixingProps) => import("react").JSX.Element;
39
- //#endregion
40
- export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
41
- //# sourceMappingURL=FeatureFixing.d.mts.map
1
+ import { n as FeatureFixingProps, t as FeatureFixing } from "../FeatureFixing-DYQlgHPk.mjs";
2
+ export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
@@ -1,2 +1,2 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ui/button.cjs"),t=require("../features/logo/index.cjs"),n=require("../ui/dialog.cjs"),r=require("../ui/input.cjs"),i=require("../ui/label.cjs"),a=require("../alert-D31c6DLq.cjs");let o=require("lucide-react"),s=require("react"),c=require("react/jsx-runtime"),l=require("zod");const u=l.z.object({email:l.z.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:l.z.string().min(1,`Vui lòng nhập mật khẩu`)}),d=({open:l,onOpenChange:d,onLogin:f,onForgotPassword:p,onRegister:m,isLoading:h=!1,errorMessage:g,title:_=`Đăng nhập`,subtitle:v=`Nhập thông tin để tiếp tục`})=>{let y=(0,s.useId)(),b=(0,s.useId)(),[x,S]=(0,s.useState)(``),[C,w]=(0,s.useState)(``),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)({});return(0,c.jsx)(n.Dialog,{open:l,onOpenChange:d,children:(0,c.jsxs)(n.DialogContent,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[(0,c.jsxs)(n.DialogHeader,{children:[(0,c.jsx)(t.LunasLogo,{variant:`horizontal`,size:`sm`,className:`mx-auto`}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,c.jsx)(n.DialogTitle,{children:_}),(0,c.jsx)(n.DialogDescription,{children:v})]})]}),(0,c.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=u.safeParse({email:x,password:C});if(!t.success){let e=t.error.flatten().fieldErrors;O({email:e.email?.[0],password:e.password?.[0]});return}O({}),await f(x,C)},noValidate:!0,className:`flex flex-col gap-4`,children:[g&&(0,c.jsx)(a.t,{variant:`destructive`,children:(0,c.jsx)(a.n,{children:g})}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(i.Label,{htmlFor:y,children:`Email`}),(0,c.jsx)(r.Input,{id:y,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:x,onChange:e=>S(e.target.value),"aria-invalid":!!D.email,disabled:h}),D.email&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:D.email})]}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,c.jsx)(i.Label,{htmlFor:b,children:`Mật khẩu`}),p&&(0,c.jsx)(e.Button,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:p,children:`Quên mật khẩu?`})]}),(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsx)(r.Input,{id:b,type:T?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:C,onChange:e=>w(e.target.value),"aria-invalid":!!D.password,disabled:h,className:`pr-10`}),(0,c.jsx)(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),E(e=>!e)},"aria-label":T?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:T?(0,c.jsx)(o.EyeOff,{size:16}):(0,c.jsx)(o.Eye,{size:16})})]}),D.password&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:D.password})]}),(0,c.jsx)(e.Button,{type:`submit`,isLoading:h,className:`w-full`,children:`Đăng nhập`}),(0,c.jsx)(e.Button,{type:`button`,variant:`outline`,className:`w-full`,disabled:h,onClick:()=>d(!1),children:`Đóng hộp thoại`})]}),m&&(0,c.jsxs)(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[(0,c.jsx)(`span`,{children:`Chưa có tài khoản?`}),(0,c.jsx)(e.Button,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:m,children:`Đăng ký`})]})]})})};exports.LoginPage=d;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ui/button.cjs"),t=require("../features/logo/index.cjs"),n=require("../ui/dialog.cjs"),r=require("../ui/input.cjs"),i=require("../alert-D31c6DLq.cjs"),a=require("../ui/label.cjs");let o=require("lucide-react"),s=require("react"),c=require("react/jsx-runtime"),l=require("zod/v4");const u=l.z.object({email:l.z.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:l.z.string().min(1,`Vui lòng nhập mật khẩu`)}),d=({open:l,onOpenChange:d,onLogin:f,onForgotPassword:p,onRegister:m,isLoading:h=!1,errorMessage:g,title:_=`Đăng nhập`,subtitle:v=`Nhập thông tin để tiếp tục`})=>{let y=(0,s.useId)(),b=(0,s.useId)(),[x,S]=(0,s.useState)(``),[C,w]=(0,s.useState)(``),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)({});return(0,c.jsx)(n.Dialog,{open:l,onOpenChange:d,children:(0,c.jsxs)(n.DialogContent,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[(0,c.jsxs)(n.DialogHeader,{children:[(0,c.jsx)(t.LunasLogo,{variant:`horizontal`,size:`sm`,className:`mx-auto`}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,c.jsx)(n.DialogTitle,{children:_}),(0,c.jsx)(n.DialogDescription,{children:v})]})]}),(0,c.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=u.safeParse({email:x,password:C});if(!t.success){let e=t.error.flatten().fieldErrors;O({email:e.email?.[0],password:e.password?.[0]});return}O({}),await f(x,C)},noValidate:!0,className:`flex flex-col gap-4`,children:[g&&(0,c.jsx)(i.t,{variant:`destructive`,children:(0,c.jsx)(i.n,{children:g})}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(a.Label,{htmlFor:y,children:`Email`}),(0,c.jsx)(r.Input,{id:y,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:x,onChange:e=>S(e.target.value),"aria-invalid":!!D.email,disabled:h}),D.email&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:D.email})]}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,c.jsx)(a.Label,{htmlFor:b,children:`Mật khẩu`}),p&&(0,c.jsx)(e.Button,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:p,children:`Quên mật khẩu?`})]}),(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsx)(r.Input,{id:b,type:T?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:C,onChange:e=>w(e.target.value),"aria-invalid":!!D.password,disabled:h,className:`pr-10`}),(0,c.jsx)(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),E(e=>!e)},"aria-label":T?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:T?(0,c.jsx)(o.EyeOff,{size:16}):(0,c.jsx)(o.Eye,{size:16})})]}),D.password&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:D.password})]}),(0,c.jsx)(e.Button,{type:`submit`,isLoading:h,className:`w-full`,children:`Đăng nhập`}),(0,c.jsx)(e.Button,{type:`button`,variant:`outline`,className:`w-full`,disabled:h,onClick:()=>d(!1),children:`Đóng hộp thoại`})]}),m&&(0,c.jsxs)(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[(0,c.jsx)(`span`,{children:`Chưa có tài khoản?`}),(0,c.jsx)(e.Button,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:m,children:`Đăng ký`})]})]})})};exports.LoginPage=d;
2
2
  //# sourceMappingURL=LoginPage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginPage.cjs","names":["z","Dialog","DialogContent","DialogHeader","LunasLogo","DialogTitle","DialogDescription","Alert","AlertDescription","Label","Input","Button","EyeOff","Eye"],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { LunasLogo } from '../features/logo';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <LunasLogo variant=\"horizontal\" size=\"sm\" className=\"mx-auto\" />\n <div className=\"flex flex-col gap-0.5\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </div>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" disabled={isLoading} onClick={() => onOpenChange(false)}>\n Đóng hộp thoại\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"LoginPage.cjs","names":["z","Dialog","DialogContent","DialogHeader","LunasLogo","DialogTitle","DialogDescription","Alert","AlertDescription","Label","Input","Button","EyeOff","Eye"],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod/v4';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { LunasLogo } from '../features/logo';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <LunasLogo variant=\"horizontal\" size=\"sm\" className=\"mx-auto\" />\n <div className=\"flex flex-col gap-0.5\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </div>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" disabled={isLoading} onClick={() => onOpenChange(false)}>\n Đóng hộp thoại\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
@@ -1,53 +1,2 @@
1
- //#region packages/components/pages/LoginPage.d.ts
2
- interface LoginPageProps {
3
- /** Controls whether the dialog is open */
4
- open: boolean;
5
- /** Called when the dialog open state changes */
6
- onOpenChange: (open: boolean) => void;
7
- /** Called when the user submits login credentials */
8
- onLogin: (email: string, password: string) => Promise<void> | void;
9
- /** Called when the "Quên mật khẩu?" link is clicked */
10
- onForgotPassword?: () => void;
11
- /** Called when the "Đăng ký" link is clicked */
12
- onRegister?: () => void;
13
- /** Disables the form and shows a spinner on the submit button */
14
- isLoading?: boolean;
15
- /** Server-side error message rendered in a destructive Alert */
16
- errorMessage?: string;
17
- /** Dialog heading. Default: "Đăng nhập" */
18
- title?: string;
19
- /** Dialog subheading. Default: "Nhập thông tin để tiếp tục" */
20
- subtitle?: string;
21
- }
22
- /**
23
- * Modal login dialog for the client authentication flow.
24
- *
25
- * @example
26
- * ```tsx
27
- * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';
28
- *
29
- * <LoginPage
30
- * open={open}
31
- * onOpenChange={setOpen}
32
- * onLogin={async (email, password) => {
33
- * await authService.login(email, password);
34
- * setOpen(false);
35
- * }}
36
- * onRegister={() => { setOpen(false); setRegisterOpen(true); }}
37
- * />
38
- * ```
39
- */
40
- declare const LoginPage: ({
41
- open,
42
- onOpenChange,
43
- onLogin,
44
- onForgotPassword,
45
- onRegister,
46
- isLoading,
47
- errorMessage,
48
- title,
49
- subtitle
50
- }: LoginPageProps) => import("react").JSX.Element;
51
- //#endregion
52
- export { LoginPage, LoginPageProps };
53
- //# sourceMappingURL=LoginPage.d.cts.map
1
+ import { n as LoginPageProps, t as LoginPage } from "../LoginPage-vMXvwtxf.cjs";
2
+ export { LoginPage, LoginPageProps };
@@ -1,53 +1,2 @@
1
- //#region packages/components/pages/LoginPage.d.ts
2
- interface LoginPageProps {
3
- /** Controls whether the dialog is open */
4
- open: boolean;
5
- /** Called when the dialog open state changes */
6
- onOpenChange: (open: boolean) => void;
7
- /** Called when the user submits login credentials */
8
- onLogin: (email: string, password: string) => Promise<void> | void;
9
- /** Called when the "Quên mật khẩu?" link is clicked */
10
- onForgotPassword?: () => void;
11
- /** Called when the "Đăng ký" link is clicked */
12
- onRegister?: () => void;
13
- /** Disables the form and shows a spinner on the submit button */
14
- isLoading?: boolean;
15
- /** Server-side error message rendered in a destructive Alert */
16
- errorMessage?: string;
17
- /** Dialog heading. Default: "Đăng nhập" */
18
- title?: string;
19
- /** Dialog subheading. Default: "Nhập thông tin để tiếp tục" */
20
- subtitle?: string;
21
- }
22
- /**
23
- * Modal login dialog for the client authentication flow.
24
- *
25
- * @example
26
- * ```tsx
27
- * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';
28
- *
29
- * <LoginPage
30
- * open={open}
31
- * onOpenChange={setOpen}
32
- * onLogin={async (email, password) => {
33
- * await authService.login(email, password);
34
- * setOpen(false);
35
- * }}
36
- * onRegister={() => { setOpen(false); setRegisterOpen(true); }}
37
- * />
38
- * ```
39
- */
40
- declare const LoginPage: ({
41
- open,
42
- onOpenChange,
43
- onLogin,
44
- onForgotPassword,
45
- onRegister,
46
- isLoading,
47
- errorMessage,
48
- title,
49
- subtitle
50
- }: LoginPageProps) => import("react").JSX.Element;
51
- //#endregion
52
- export { LoginPage, LoginPageProps };
53
- //# sourceMappingURL=LoginPage.d.mts.map
1
+ import { n as LoginPageProps, t as LoginPage } from "../LoginPage-vMXvwtxf.mjs";
2
+ export { LoginPage, LoginPageProps };
@@ -1,2 +1,2 @@
1
- "use client";import{Button as e}from"../ui/button.mjs";import{LunasLogo as t}from"../features/logo/index.mjs";import{Dialog as n,DialogContent as r,DialogDescription as i,DialogHeader as a,DialogTitle as o}from"../ui/dialog.mjs";import{Input as s}from"../ui/input.mjs";import{Label as c}from"../ui/label.mjs";import{n as l,t as u}from"../alert-OD1KJTEV.mjs";import{Eye as d,EyeOff as f}from"lucide-react";import{useId as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{z as _}from"zod";const v=_.object({email:_.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:_.string().min(1,`Vui lòng nhập mật khẩu`)}),y=({open:_,onOpenChange:y,onLogin:b,onForgotPassword:x,onRegister:S,isLoading:C=!1,errorMessage:w,title:T=`Đăng nhập`,subtitle:E=`Nhập thông tin để tiếp tục`})=>{let D=p(),O=p(),[k,A]=m(``),[j,M]=m(``),[N,P]=m(!1),[F,I]=m({});return h(n,{open:_,onOpenChange:y,children:g(r,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[g(a,{children:[h(t,{variant:`horizontal`,size:`sm`,className:`mx-auto`}),g(`div`,{className:`flex flex-col gap-0.5`,children:[h(o,{children:T}),h(i,{children:E})]})]}),g(`form`,{onSubmit:async e=>{e.preventDefault();let t=v.safeParse({email:k,password:j});if(!t.success){let e=t.error.flatten().fieldErrors;I({email:e.email?.[0],password:e.password?.[0]});return}I({}),await b(k,j)},noValidate:!0,className:`flex flex-col gap-4`,children:[w&&h(u,{variant:`destructive`,children:h(l,{children:w})}),g(`div`,{className:`flex flex-col gap-1.5`,children:[h(c,{htmlFor:D,children:`Email`}),h(s,{id:D,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:k,onChange:e=>A(e.target.value),"aria-invalid":!!F.email,disabled:C}),F.email&&h(`p`,{className:`text-destructive text-xs`,children:F.email})]}),g(`div`,{className:`flex flex-col gap-1.5`,children:[g(`div`,{className:`flex items-center justify-between`,children:[h(c,{htmlFor:O,children:`Mật khẩu`}),x&&h(e,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:x,children:`Quên mật khẩu?`})]}),g(`div`,{className:`relative`,children:[h(s,{id:O,type:N?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:j,onChange:e=>M(e.target.value),"aria-invalid":!!F.password,disabled:C,className:`pr-10`}),h(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),P(e=>!e)},"aria-label":N?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:h(N?f:d,{size:16})})]}),F.password&&h(`p`,{className:`text-destructive text-xs`,children:F.password})]}),h(e,{type:`submit`,isLoading:C,className:`w-full`,children:`Đăng nhập`}),h(e,{type:`button`,variant:`outline`,className:`w-full`,disabled:C,onClick:()=>y(!1),children:`Đóng hộp thoại`})]}),S&&g(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[h(`span`,{children:`Chưa có tài khoản?`}),h(e,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:S,children:`Đăng ký`})]})]})})};export{y as LoginPage};
1
+ "use client";import{Button as e}from"../ui/button.mjs";import{LunasLogo as t}from"../features/logo/index.mjs";import{Dialog as n,DialogContent as r,DialogDescription as i,DialogHeader as a,DialogTitle as o}from"../ui/dialog.mjs";import{Input as s}from"../ui/input.mjs";import{n as c,t as l}from"../alert-OD1KJTEV.mjs";import{Label as u}from"../ui/label.mjs";import{Eye as d,EyeOff as f}from"lucide-react";import{useId as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{z as _}from"zod/v4";const v=_.object({email:_.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:_.string().min(1,`Vui lòng nhập mật khẩu`)}),y=({open:_,onOpenChange:y,onLogin:b,onForgotPassword:x,onRegister:S,isLoading:C=!1,errorMessage:w,title:T=`Đăng nhập`,subtitle:E=`Nhập thông tin để tiếp tục`})=>{let D=p(),O=p(),[k,A]=m(``),[j,M]=m(``),[N,P]=m(!1),[F,I]=m({});return h(n,{open:_,onOpenChange:y,children:g(r,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[g(a,{children:[h(t,{variant:`horizontal`,size:`sm`,className:`mx-auto`}),g(`div`,{className:`flex flex-col gap-0.5`,children:[h(o,{children:T}),h(i,{children:E})]})]}),g(`form`,{onSubmit:async e=>{e.preventDefault();let t=v.safeParse({email:k,password:j});if(!t.success){let e=t.error.flatten().fieldErrors;I({email:e.email?.[0],password:e.password?.[0]});return}I({}),await b(k,j)},noValidate:!0,className:`flex flex-col gap-4`,children:[w&&h(l,{variant:`destructive`,children:h(c,{children:w})}),g(`div`,{className:`flex flex-col gap-1.5`,children:[h(u,{htmlFor:D,children:`Email`}),h(s,{id:D,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:k,onChange:e=>A(e.target.value),"aria-invalid":!!F.email,disabled:C}),F.email&&h(`p`,{className:`text-destructive text-xs`,children:F.email})]}),g(`div`,{className:`flex flex-col gap-1.5`,children:[g(`div`,{className:`flex items-center justify-between`,children:[h(u,{htmlFor:O,children:`Mật khẩu`}),x&&h(e,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:x,children:`Quên mật khẩu?`})]}),g(`div`,{className:`relative`,children:[h(s,{id:O,type:N?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:j,onChange:e=>M(e.target.value),"aria-invalid":!!F.password,disabled:C,className:`pr-10`}),h(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),P(e=>!e)},"aria-label":N?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:h(N?f:d,{size:16})})]}),F.password&&h(`p`,{className:`text-destructive text-xs`,children:F.password})]}),h(e,{type:`submit`,isLoading:C,className:`w-full`,children:`Đăng nhập`}),h(e,{type:`button`,variant:`outline`,className:`w-full`,disabled:C,onClick:()=>y(!1),children:`Đóng hộp thoại`})]}),S&&g(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[h(`span`,{children:`Chưa có tài khoản?`}),h(e,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:S,children:`Đăng ký`})]})]})})};export{y as LoginPage};
2
2
  //# sourceMappingURL=LoginPage.mjs.map