@customafk/lunas-ui 0.2.82 → 0.2.84

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 (410) hide show
  1. package/dist/action-submit-BHY2dndL.mjs +2 -0
  2. package/dist/{action-submit-DVNxnW4-.mjs.map → action-submit-BHY2dndL.mjs.map} +1 -1
  3. package/dist/action-submit-tpgKvZ47.cjs +2 -0
  4. package/dist/{action-submit-kYjq-iPD.cjs.map → action-submit-tpgKvZ47.cjs.map} +1 -1
  5. package/dist/actions-form-PByL8_M5.mjs +2 -0
  6. package/dist/{actions-form-DRrkiGzh.mjs.map → actions-form-PByL8_M5.mjs.map} +1 -1
  7. package/dist/actions-form-X46W7FVa.cjs +2 -0
  8. package/dist/{actions-form-CwicJU89.cjs.map → actions-form-X46W7FVa.cjs.map} +1 -1
  9. package/dist/{analysis-panel-BoKjkPYz.cjs → analysis-panel-B4ynYuwg.cjs} +2 -2
  10. package/dist/{analysis-panel-BoKjkPYz.cjs.map → analysis-panel-B4ynYuwg.cjs.map} +1 -1
  11. package/dist/{analysis-panel-CZ8g9AAO.mjs → analysis-panel-CcM3tBcc.mjs} +2 -2
  12. package/dist/{analysis-panel-CZ8g9AAO.mjs.map → analysis-panel-CcM3tBcc.mjs.map} +1 -1
  13. package/dist/{badge-BPiU1Ss2.d.cts → badge-C_NPjGXe.d.cts} +9 -2
  14. package/dist/{badge-BPiU1Ss2.d.mts → badge-C_NPjGXe.d.mts} +9 -2
  15. package/dist/{badge-display-DHbCN998.cjs → badge-display-C1_Fc3Sj.cjs} +2 -2
  16. package/dist/{badge-display-DHbCN998.cjs.map → badge-display-C1_Fc3Sj.cjs.map} +1 -1
  17. package/dist/{badge-display-B5m09_Hs.mjs → badge-display-DRmVhZ-C.mjs} +2 -2
  18. package/dist/{badge-display-B5m09_Hs.mjs.map → badge-display-DRmVhZ-C.mjs.map} +1 -1
  19. package/dist/{boolean-display-CzHHDfHW.mjs → boolean-display-ByTs3aOa.mjs} +2 -2
  20. package/dist/{boolean-display-CzHHDfHW.mjs.map → boolean-display-ByTs3aOa.mjs.map} +1 -1
  21. package/dist/{boolean-display-D2wjQhNX.cjs → boolean-display-DUA-6Q13.cjs} +2 -2
  22. package/dist/{boolean-display-D2wjQhNX.cjs.map → boolean-display-DUA-6Q13.cjs.map} +1 -1
  23. package/dist/{button-BnoPktln.d.cts → button-BGW-LZ3i.d.cts} +2 -2
  24. package/dist/{button-BnoPktln.d.mts → button-BGW-LZ3i.d.mts} +2 -2
  25. package/dist/{calendar-BkV5hTX2.d.mts → calendar-BNTvKnwd.d.cts} +2 -2
  26. package/dist/{calendar-iDMPT1kI.d.cts → calendar-DbaIaWr0.d.mts} +2 -2
  27. package/dist/{carousel-D7VXWJ3S.d.mts → carousel-Bw-VhPR3.d.mts} +2 -2
  28. package/dist/{carousel-bBvM31sh.d.cts → carousel-DRqMTyKS.d.cts} +2 -2
  29. package/dist/checkbox-field-BG35eKvM.cjs +2 -0
  30. package/dist/{checkbox-field-DBUjQC_4.cjs.map → checkbox-field-BG35eKvM.cjs.map} +1 -1
  31. package/dist/checkbox-field-C-NyMjEm.mjs +2 -0
  32. package/dist/{checkbox-field-BN3Vd9qq.mjs.map → checkbox-field-C-NyMjEm.mjs.map} +1 -1
  33. package/dist/{cms-layout-Ba_5wSnr.mjs → cms-layout-BHLo0_L_.mjs} +2 -2
  34. package/dist/{cms-layout-Ba_5wSnr.mjs.map → cms-layout-BHLo0_L_.mjs.map} +1 -1
  35. package/dist/{cms-layout-DCJhB-GY.cjs → cms-layout-DYEmSqzx.cjs} +2 -2
  36. package/dist/{cms-layout-DCJhB-GY.cjs.map → cms-layout-DYEmSqzx.cjs.map} +1 -1
  37. package/dist/combobox-Bhgo112r.cjs +2 -0
  38. package/dist/{combobox-kp_kPY8o.cjs.map → combobox-Bhgo112r.cjs.map} +1 -1
  39. package/dist/combobox-C0nno01T.mjs +2 -0
  40. package/dist/{combobox-C64Rvd7n.mjs.map → combobox-C0nno01T.mjs.map} +1 -1
  41. package/dist/combobox-field-Cx0A-CD4.mjs +2 -0
  42. package/dist/{combobox-field-Bug1qI5B.mjs.map → combobox-field-Cx0A-CD4.mjs.map} +1 -1
  43. package/dist/combobox-field-ROYquFD8.cjs +2 -0
  44. package/dist/{combobox-field-BE9miJ3D.cjs.map → combobox-field-ROYquFD8.cjs.map} +1 -1
  45. package/dist/{currency-display-B06kc2IG.cjs → currency-display-DefLJLqL.cjs} +2 -2
  46. package/dist/{currency-display-B06kc2IG.cjs.map → currency-display-DefLJLqL.cjs.map} +1 -1
  47. package/dist/{currency-display-7w-ZjVUw.mjs → currency-display-DpbtUluj.mjs} +2 -2
  48. package/dist/{currency-display-7w-ZjVUw.mjs.map → currency-display-DpbtUluj.mjs.map} +1 -1
  49. package/dist/data-display/country.cjs +1 -1
  50. package/dist/data-display/phone-number.cjs +1 -1
  51. package/dist/data-display/phone-number.cjs.map +1 -1
  52. package/dist/data-display/phone-number.d.cts +1 -1
  53. package/dist/data-display/phone-number.d.mts +1 -1
  54. package/dist/data-display/phone-number.mjs +1 -1
  55. package/dist/data-display/phone-number.mjs.map +1 -1
  56. package/dist/{date-display-BO7OY_AC.mjs → date-display-ByvkuSk0.mjs} +2 -2
  57. package/dist/{date-display-BO7OY_AC.mjs.map → date-display-ByvkuSk0.mjs.map} +1 -1
  58. package/dist/{date-display-DHnZr_yf.cjs → date-display-CkPBLlWz.cjs} +2 -2
  59. package/dist/{date-display-DHnZr_yf.cjs.map → date-display-CkPBLlWz.cjs.map} +1 -1
  60. package/dist/date-field-46UtGmEV.cjs +2 -0
  61. package/dist/{date-field-CYoPe74G.cjs.map → date-field-46UtGmEV.cjs.map} +1 -1
  62. package/dist/date-field-zoPch5tC.mjs +2 -0
  63. package/dist/{date-field-D_qpBb-t.mjs.map → date-field-zoPch5tC.mjs.map} +1 -1
  64. package/dist/{description-display-CBfoP3Y2.mjs → description-display-BFTBwDmB.mjs} +2 -2
  65. package/dist/{description-display-CBfoP3Y2.mjs.map → description-display-BFTBwDmB.mjs.map} +1 -1
  66. package/dist/{description-display-Cckihd1s.cjs → description-display-DeEwppdC.cjs} +2 -2
  67. package/dist/{description-display-Cckihd1s.cjs.map → description-display-DeEwppdC.cjs.map} +1 -1
  68. package/dist/descriptions-Bw9GSCjo.mjs +3 -0
  69. package/dist/descriptions-Bw9GSCjo.mjs.map +1 -0
  70. package/dist/descriptions-DUsJjqd2.cjs +3 -0
  71. package/dist/descriptions-DUsJjqd2.cjs.map +1 -0
  72. package/dist/dialog-form-BRV1niqF.mjs +2 -0
  73. package/dist/{dialog-form-CCIcht28.mjs.map → dialog-form-BRV1niqF.mjs.map} +1 -1
  74. package/dist/dialog-form-X9MxC8pq.cjs +2 -0
  75. package/dist/{dialog-form-BTZZwz3T.cjs.map → dialog-form-X9MxC8pq.cjs.map} +1 -1
  76. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +1 -1
  77. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +1 -1
  78. package/dist/{dist-DzA--RwW.cjs → dist-CIdWHwhj.cjs} +2 -2
  79. package/dist/{dist-DzA--RwW.cjs.map → dist-CIdWHwhj.cjs.map} +1 -1
  80. package/dist/{email-display-w-hRYIeL.cjs → email-display-BXw4IbbW.cjs} +2 -2
  81. package/dist/{email-display-w-hRYIeL.cjs.map → email-display-BXw4IbbW.cjs.map} +1 -1
  82. package/dist/{email-display-Bk_furIx.mjs → email-display-qxdrnYmK.mjs} +2 -2
  83. package/dist/{email-display-Bk_furIx.mjs.map → email-display-qxdrnYmK.mjs.map} +1 -1
  84. package/dist/email-field-0UjeYtnM.cjs +2 -0
  85. package/dist/{email-field-DJa7iASY.cjs.map → email-field-0UjeYtnM.cjs.map} +1 -1
  86. package/dist/email-field-CPEVNvn8.mjs +2 -0
  87. package/dist/{email-field-DxSNJ6tf.mjs.map → email-field-CPEVNvn8.mjs.map} +1 -1
  88. package/dist/features/descriptions/index.cjs +1 -2
  89. package/dist/features/descriptions/index.d.cts +2 -2
  90. package/dist/features/descriptions/index.d.mts +2 -2
  91. package/dist/features/descriptions/index.mjs +1 -2
  92. package/dist/features/tables/index.cjs +1 -1
  93. package/dist/features/tables/index.d.cts +1 -1
  94. package/dist/features/tables/index.d.mts +1 -1
  95. package/dist/features/tables/index.mjs +1 -1
  96. package/dist/features/tanstack-form/index.cjs +1 -1
  97. package/dist/features/tanstack-form/index.d.cts +1 -1
  98. package/dist/features/tanstack-form/index.d.mts +1 -1
  99. package/dist/features/tanstack-form/index.mjs +1 -1
  100. package/dist/features/text-editor/index.cjs +1 -1
  101. package/dist/features/text-editor/index.d.cts +1 -1
  102. package/dist/features/text-editor/index.d.mts +1 -1
  103. package/dist/features/text-editor/index.mjs +1 -1
  104. package/dist/{filter-BO7ISTIR.mjs → filter-DM4QLW77.mjs} +2 -2
  105. package/dist/{filter-BO7ISTIR.mjs.map → filter-DM4QLW77.mjs.map} +1 -1
  106. package/dist/{filter-CQ9BD0MV.cjs → filter-DQEjSnOP.cjs} +2 -2
  107. package/dist/{filter-CQ9BD0MV.cjs.map → filter-DQEjSnOP.cjs.map} +1 -1
  108. package/dist/{flex-CrxTaAXE.d.cts → flex-D7IE_cdR.d.cts} +8 -6
  109. package/dist/{flex-CrxTaAXE.d.mts → flex-D7IE_cdR.d.mts} +8 -6
  110. package/dist/group-field-Cs0uWHg0.mjs +2 -0
  111. package/dist/{group-field-gejvx_Td.mjs.map → group-field-Cs0uWHg0.mjs.map} +1 -1
  112. package/dist/group-field-DJXL9sRy.cjs +2 -0
  113. package/dist/{group-field-sVykO2JZ.cjs.map → group-field-DJXL9sRy.cjs.map} +1 -1
  114. package/dist/{index-DvC1inRy.d.cts → index-0HuXxgjQ.d.cts} +13 -10
  115. package/dist/{index-DvC1inRy.d.mts → index-CZ_2KVir.d.mts} +13 -10
  116. package/dist/index-Cp4Db57w.d.cts +598 -0
  117. package/dist/index-CqE3mOHo.d.mts +598 -0
  118. package/dist/{index-DRAyYm8g.d.cts → index-CvFEJoon.d.cts} +12 -3
  119. package/dist/{index-DRAyYm8g.d.mts → index-CvFEJoon.d.mts} +12 -3
  120. package/dist/{index-BPo-Lg3p.d.mts → index-DJY2uC2H.d.mts} +14 -14
  121. package/dist/{index-DaLpXe5l.d.cts → index-UZik7mgS.d.cts} +14 -14
  122. package/dist/index.cjs +1 -1
  123. package/dist/index.d.cts +17 -17
  124. package/dist/index.d.mts +17 -17
  125. package/dist/index.mjs +1 -1
  126. package/dist/{input-DxNK7Wo6.d.cts → input-D73TrUof.d.cts} +2 -2
  127. package/dist/{input-DxNK7Wo6.d.mts → input-D73TrUof.d.mts} +2 -2
  128. package/dist/layouts/cms-layout/index.cjs +1 -1
  129. package/dist/layouts/cms-layout/index.mjs +1 -1
  130. package/dist/layouts/flex.cjs +1 -1
  131. package/dist/layouts/flex.cjs.map +1 -1
  132. package/dist/layouts/flex.d.cts +1 -1
  133. package/dist/layouts/flex.d.mts +1 -1
  134. package/dist/layouts/flex.mjs +1 -1
  135. package/dist/layouts/flex.mjs.map +1 -1
  136. package/dist/layouts/payment-layout/index.cjs +1 -1
  137. package/dist/layouts/payment-layout/index.mjs +1 -1
  138. package/dist/layouts/ui-grid.cjs +1 -1
  139. package/dist/layouts/ui-grid.cjs.map +1 -1
  140. package/dist/layouts/ui-grid.d.cts +1 -1
  141. package/dist/layouts/ui-grid.d.mts +1 -1
  142. package/dist/layouts/ui-grid.mjs +1 -1
  143. package/dist/layouts/ui-grid.mjs.map +1 -1
  144. package/dist/{list-display-DLsm8uAh.mjs → list-display-4tTkV29U.mjs} +2 -2
  145. package/dist/{list-display-DLsm8uAh.mjs.map → list-display-4tTkV29U.mjs.map} +1 -1
  146. package/dist/{list-display-DDeJoneW.cjs → list-display-CJvQ-wwT.cjs} +2 -2
  147. package/dist/{list-display-DDeJoneW.cjs.map → list-display-CJvQ-wwT.cjs.map} +1 -1
  148. package/dist/{name-display-H5HFH1fU.mjs → name-display-BFoDcvt2.mjs} +2 -2
  149. package/dist/{name-display-H5HFH1fU.mjs.map → name-display-BFoDcvt2.mjs.map} +1 -1
  150. package/dist/{name-display-CKnyugrP.cjs → name-display-Br7rcdqi.cjs} +2 -2
  151. package/dist/{name-display-CKnyugrP.cjs.map → name-display-Br7rcdqi.cjs.map} +1 -1
  152. package/dist/number-field-CMskIrWP.cjs +2 -0
  153. package/dist/{number-field-DKZz-27X.cjs.map → number-field-CMskIrWP.cjs.map} +1 -1
  154. package/dist/number-field-DSGwWg7y.mjs +2 -0
  155. package/dist/{number-field-5INgdUUv.mjs.map → number-field-DSGwWg7y.mjs.map} +1 -1
  156. package/dist/{pagination-BRw-yZBY.d.cts → pagination-DDcO-TPf.d.cts} +2 -2
  157. package/dist/{pagination-BlLiOvY9.d.mts → pagination-DWg3Xv34.d.mts} +2 -2
  158. package/dist/{paragraph-CRo5eC7H.d.mts → paragraph--8GcgnQL.d.cts} +3 -3
  159. package/dist/{paragraph-CkCNIsvz.d.cts → paragraph-BOa0VlGX.d.mts} +3 -3
  160. package/dist/password-field-BxJqTPhN.cjs +2 -0
  161. package/dist/{password-field-BuWARi35.cjs.map → password-field-BxJqTPhN.cjs.map} +1 -1
  162. package/dist/password-field-DsmwNZep.mjs +2 -0
  163. package/dist/{password-field-DOIe6wTv.mjs.map → password-field-DsmwNZep.mjs.map} +1 -1
  164. package/dist/{payment-layout-BSl9DYQA.mjs → payment-layout--b7bhmR1.mjs} +2 -2
  165. package/dist/{payment-layout-BSl9DYQA.mjs.map → payment-layout--b7bhmR1.mjs.map} +1 -1
  166. package/dist/payment-layout-C38xIc2X.cjs +2 -0
  167. package/dist/{payment-layout-DDcLanA0.cjs.map → payment-layout-C38xIc2X.cjs.map} +1 -1
  168. package/dist/{permalink-CaCx9fi6.mjs → permalink-BPCF_npZ.mjs} +2 -2
  169. package/dist/{permalink-CaCx9fi6.mjs.map → permalink-BPCF_npZ.mjs.map} +1 -1
  170. package/dist/{permalink-azuGQg2b.cjs → permalink-DCvWlrAT.cjs} +2 -2
  171. package/dist/{permalink-azuGQg2b.cjs.map → permalink-DCvWlrAT.cjs.map} +1 -1
  172. package/dist/phone-CTTjc3mv.mjs +2 -0
  173. package/dist/phone-CTTjc3mv.mjs.map +1 -0
  174. package/dist/phone-CUxXVTg6.cjs +2 -0
  175. package/dist/phone-CUxXVTg6.cjs.map +1 -0
  176. package/dist/{phone-number-D9j5xYDW.d.cts → phone-number-B1bLIt8i.d.cts} +3 -3
  177. package/dist/{phone-number-D9j5xYDW.d.mts → phone-number-B1bLIt8i.d.mts} +3 -3
  178. package/dist/{phone-number-Ba-f4s1Y.mjs → phone-number-DHFLnHWO.mjs} +2 -2
  179. package/dist/{phone-number-Ba-f4s1Y.mjs.map → phone-number-DHFLnHWO.mjs.map} +1 -1
  180. package/dist/{phone-number-BqRhKQdr.cjs → phone-number-YzmDmFBU.cjs} +2 -2
  181. package/dist/{phone-number-BqRhKQdr.cjs.map → phone-number-YzmDmFBU.cjs.map} +1 -1
  182. package/dist/popover-form-BUc5ivCF.mjs +2 -0
  183. package/dist/{popover-form-BsapHJck.mjs.map → popover-form-BUc5ivCF.mjs.map} +1 -1
  184. package/dist/popover-form-CdXVFl0t.cjs +2 -0
  185. package/dist/{popover-form-Bq2GcuZu.cjs.map → popover-form-CdXVFl0t.cjs.map} +1 -1
  186. package/dist/{progress-display-CiYWPOnq.cjs → progress-display-57LT7U37.cjs} +2 -2
  187. package/dist/{progress-display-CiYWPOnq.cjs.map → progress-display-57LT7U37.cjs.map} +1 -1
  188. package/dist/{progress-display-0UsBzt_r.mjs → progress-display-AfoHitiE.mjs} +2 -2
  189. package/dist/{progress-display-0UsBzt_r.mjs.map → progress-display-AfoHitiE.mjs.map} +1 -1
  190. package/dist/radio-group-field-CmCo87tm.mjs +2 -0
  191. package/dist/{radio-group-field-DOJ4jVSr.mjs.map → radio-group-field-CmCo87tm.mjs.map} +1 -1
  192. package/dist/radio-group-field-gHNAwrdr.cjs +2 -0
  193. package/dist/{radio-group-field-kTgtvp1p.cjs.map → radio-group-field-gHNAwrdr.cjs.map} +1 -1
  194. package/dist/{resizable-C3uADYIg.d.cts → resizable-C6JLqxF3.d.cts} +2 -2
  195. package/dist/{resizable-C3uADYIg.d.mts → resizable-C6JLqxF3.d.mts} +2 -2
  196. package/dist/rolldown-runtime-DWNI8pZO.cjs +1 -0
  197. package/dist/{search-input-C8feOKe2.d.cts → search-input-DEvYI6Rm.d.mts} +2 -2
  198. package/dist/{search-input-CoqwakbI.d.mts → search-input-h_3MoMqK.d.cts} +2 -2
  199. package/dist/select-field-8PfksL_U.mjs +2 -0
  200. package/dist/{select-field-BcsFBbNJ.mjs.map → select-field-8PfksL_U.mjs.map} +1 -1
  201. package/dist/select-field-Ce53hZ3J.cjs +2 -0
  202. package/dist/{select-field-CURv37h4.cjs.map → select-field-Ce53hZ3J.cjs.map} +1 -1
  203. package/dist/simple-array-field-BAR4MjDR.cjs +2 -0
  204. package/dist/{simple-array-field-bCUuPMgT.cjs.map → simple-array-field-BAR4MjDR.cjs.map} +1 -1
  205. package/dist/simple-array-field-C0kpO1cq.mjs +2 -0
  206. package/dist/{simple-array-field-wFE_DUOV.mjs.map → simple-array-field-C0kpO1cq.mjs.map} +1 -1
  207. package/dist/simple-boolean-field-36jmOxCR.cjs +2 -0
  208. package/dist/{simple-boolean-field-DRapzNrB.cjs.map → simple-boolean-field-36jmOxCR.cjs.map} +1 -1
  209. package/dist/simple-boolean-field-Bdc4wuUU.mjs +2 -0
  210. package/dist/{simple-boolean-field-GQJyeyVS.mjs.map → simple-boolean-field-Bdc4wuUU.mjs.map} +1 -1
  211. package/dist/simple-combobox-field-BPDtPj1W.cjs +2 -0
  212. package/dist/{simple-combobox-field-Cp5dfQv3.cjs.map → simple-combobox-field-BPDtPj1W.cjs.map} +1 -1
  213. package/dist/simple-combobox-field-CR5Q6Nsd.mjs +2 -0
  214. package/dist/{simple-combobox-field-D6IaMJKl.mjs.map → simple-combobox-field-CR5Q6Nsd.mjs.map} +1 -1
  215. package/dist/simple-date-field-DUPnGa5d.cjs +2 -0
  216. package/dist/{simple-date-field-_PSkIXAt.cjs.map → simple-date-field-DUPnGa5d.cjs.map} +1 -1
  217. package/dist/simple-date-field-DkhG2o7I.mjs +2 -0
  218. package/dist/{simple-date-field-dszQs7Ik.mjs.map → simple-date-field-DkhG2o7I.mjs.map} +1 -1
  219. package/dist/simple-email-field-BTYqiFp8.cjs +2 -0
  220. package/dist/{simple-email-field-DIHwYrhk.cjs.map → simple-email-field-BTYqiFp8.cjs.map} +1 -1
  221. package/dist/simple-email-field-CpxklyKr.mjs +2 -0
  222. package/dist/{simple-email-field-CwyoXqWo.mjs.map → simple-email-field-CpxklyKr.mjs.map} +1 -1
  223. package/dist/simple-number-field-CTFyTMgw.cjs +2 -0
  224. package/dist/{simple-number-field-VdEeaIiC.cjs.map → simple-number-field-CTFyTMgw.cjs.map} +1 -1
  225. package/dist/simple-number-field-DuCvwUG9.mjs +2 -0
  226. package/dist/{simple-number-field-Id1kV5yR.mjs.map → simple-number-field-DuCvwUG9.mjs.map} +1 -1
  227. package/dist/simple-password-field-BaeUvVB1.cjs +2 -0
  228. package/dist/{simple-password-field-7xbVB1H3.cjs.map → simple-password-field-BaeUvVB1.cjs.map} +1 -1
  229. package/dist/simple-password-field-Cu_JvDEE.mjs +2 -0
  230. package/dist/{simple-password-field-DIO9FwQy.mjs.map → simple-password-field-Cu_JvDEE.mjs.map} +1 -1
  231. package/dist/simple-radio-group-field-DiU4eQ_c.cjs +2 -0
  232. package/dist/{simple-radio-group-field-CxVAr6yW.cjs.map → simple-radio-group-field-DiU4eQ_c.cjs.map} +1 -1
  233. package/dist/simple-radio-group-field-RJ_cEsxK.mjs +2 -0
  234. package/dist/{simple-radio-group-field-BmHWRnns.mjs.map → simple-radio-group-field-RJ_cEsxK.mjs.map} +1 -1
  235. package/dist/simple-select-field-B3uEUqvQ.mjs +2 -0
  236. package/dist/{simple-select-field-DfZk0zPa.mjs.map → simple-select-field-B3uEUqvQ.mjs.map} +1 -1
  237. package/dist/simple-select-field-C8vmeHbL.cjs +2 -0
  238. package/dist/{simple-select-field-C9u7Pg9u.cjs.map → simple-select-field-C8vmeHbL.cjs.map} +1 -1
  239. package/dist/simple-text-field-BEoQmd1b.mjs +2 -0
  240. package/dist/{simple-text-field-CT9KFUSK.mjs.map → simple-text-field-BEoQmd1b.mjs.map} +1 -1
  241. package/dist/simple-text-field-zFJt_99J.cjs +2 -0
  242. package/dist/{simple-text-field-BxPjcB4c.cjs.map → simple-text-field-zFJt_99J.cjs.map} +1 -1
  243. package/dist/simple-textarea-field-CzpApMiv.mjs +2 -0
  244. package/dist/{simple-textarea-field-B22rT6zS.mjs.map → simple-textarea-field-CzpApMiv.mjs.map} +1 -1
  245. package/dist/simple-textarea-field-DyQZEDTe.cjs +2 -0
  246. package/dist/{simple-textarea-field-DG9oPtP-.cjs.map → simple-textarea-field-DyQZEDTe.cjs.map} +1 -1
  247. package/dist/{statistic-CE_Jg8SN.cjs → statistic-CXBTEgKI.cjs} +2 -2
  248. package/dist/{statistic-CE_Jg8SN.cjs.map → statistic-CXBTEgKI.cjs.map} +1 -1
  249. package/dist/{statistic-639yMA2d.mjs → statistic-CvgurN5Z.mjs} +2 -2
  250. package/dist/{statistic-639yMA2d.mjs.map → statistic-CvgurN5Z.mjs.map} +1 -1
  251. package/dist/{status-display-BCYpNJmd.mjs → status-display-Caae2aYf.mjs} +2 -2
  252. package/dist/{status-display-BCYpNJmd.mjs.map → status-display-Caae2aYf.mjs.map} +1 -1
  253. package/dist/{status-display-xcCCGpGS.cjs → status-display-EVwkPrm6.cjs} +2 -2
  254. package/dist/{status-display-xcCCGpGS.cjs.map → status-display-EVwkPrm6.cjs.map} +1 -1
  255. package/dist/{summary-bar-C3NAnI3V.mjs → summary-bar-B6B_wmZA.mjs} +2 -2
  256. package/dist/{summary-bar-C3NAnI3V.mjs.map → summary-bar-B6B_wmZA.mjs.map} +1 -1
  257. package/dist/{summary-bar-C08g8bb1.cjs → summary-bar-D36n4fox.cjs} +2 -2
  258. package/dist/{summary-bar-C08g8bb1.cjs.map → summary-bar-D36n4fox.cjs.map} +1 -1
  259. package/dist/switch-field-CsI6eXJu.cjs +2 -0
  260. package/dist/{switch-field-yE4A6EoF.cjs.map → switch-field-CsI6eXJu.cjs.map} +1 -1
  261. package/dist/switch-field-D2SWDM1l.mjs +2 -0
  262. package/dist/{switch-field-Cz4lDf1D.mjs.map → switch-field-D2SWDM1l.mjs.map} +1 -1
  263. package/dist/{tables-Dg3KMBKA.mjs → tables-CuoBQNqx.mjs} +2 -2
  264. package/dist/{tables-Dg3KMBKA.mjs.map → tables-CuoBQNqx.mjs.map} +1 -1
  265. package/dist/{tables-BqZ4Zs6e.cjs → tables-DdLEj1dI.cjs} +2 -2
  266. package/dist/{tables-BqZ4Zs6e.cjs.map → tables-DdLEj1dI.cjs.map} +1 -1
  267. package/dist/tanstack-form-BiOihtxs.cjs +2 -0
  268. package/dist/tanstack-form-BiOihtxs.cjs.map +1 -0
  269. package/dist/tanstack-form-Do6xL2kv.mjs +2 -0
  270. package/dist/tanstack-form-Do6xL2kv.mjs.map +1 -0
  271. package/dist/text-editor-DWZf3yrW.cjs +2 -0
  272. package/dist/text-editor-DWZf3yrW.cjs.map +1 -0
  273. package/dist/text-editor-XBOAwJk-.mjs +2 -0
  274. package/dist/text-editor-XBOAwJk-.mjs.map +1 -0
  275. package/dist/text-field-D9CYYDKM.cjs +2 -0
  276. package/dist/{text-field-BQovKYN-.cjs.map → text-field-D9CYYDKM.cjs.map} +1 -1
  277. package/dist/text-field-wes_PQEd.mjs +2 -0
  278. package/dist/{text-field-B3xlvEUN.mjs.map → text-field-wes_PQEd.mjs.map} +1 -1
  279. package/dist/textarea-field-BiNmDHgL.mjs +2 -0
  280. package/dist/{textarea-field-u2UUwtr_.mjs.map → textarea-field-BiNmDHgL.mjs.map} +1 -1
  281. package/dist/textarea-field-CRf0M2Eb.cjs +2 -0
  282. package/dist/{textarea-field-B38SnNv4.cjs.map → textarea-field-CRf0M2Eb.cjs.map} +1 -1
  283. package/dist/title-field-B9LLoqIi.cjs +2 -0
  284. package/dist/{title-field-B2hM3S_S.cjs.map → title-field-B9LLoqIi.cjs.map} +1 -1
  285. package/dist/title-field-C4BmSDR2.mjs +2 -0
  286. package/dist/{title-field-oAqHRw59.mjs.map → title-field-C4BmSDR2.mjs.map} +1 -1
  287. package/dist/{tooltip-BVzKgxrZ.cjs → tooltip-CUyGXE9e.cjs} +3 -3
  288. package/dist/{tooltip-BVzKgxrZ.cjs.map → tooltip-CUyGXE9e.cjs.map} +1 -1
  289. package/dist/{tooltip-D7U_Nl5c.mjs → tooltip-DSxSeIak.mjs} +3 -3
  290. package/dist/{tooltip-D7U_Nl5c.mjs.map → tooltip-DSxSeIak.mjs.map} +1 -1
  291. package/dist/typography/paragraph.d.cts +1 -1
  292. package/dist/typography/paragraph.d.mts +1 -1
  293. package/dist/ui/badge.cjs +1 -1
  294. package/dist/ui/badge.cjs.map +1 -1
  295. package/dist/ui/badge.d.cts +2 -2
  296. package/dist/ui/badge.d.mts +2 -2
  297. package/dist/ui/badge.mjs +1 -1
  298. package/dist/ui/badge.mjs.map +1 -1
  299. package/dist/ui/breadcrumb.cjs +1 -1
  300. package/dist/ui/button-group.cjs +1 -1
  301. package/dist/ui/button.cjs +1 -1
  302. package/dist/ui/button.d.cts +1 -1
  303. package/dist/ui/button.d.mts +1 -1
  304. package/dist/ui/calendar.d.cts +1 -1
  305. package/dist/ui/calendar.d.mts +1 -1
  306. package/dist/ui/carousel.cjs +1 -1
  307. package/dist/ui/carousel.d.cts +1 -1
  308. package/dist/ui/carousel.d.mts +1 -1
  309. package/dist/ui/combobox.cjs +1 -1
  310. package/dist/ui/combobox.mjs +1 -1
  311. package/dist/ui/dropdown-menu.cjs +1 -1
  312. package/dist/ui/dropdown-menu.cjs.map +1 -1
  313. package/dist/ui/dropdown-menu.mjs +1 -1
  314. package/dist/ui/dropdown-menu.mjs.map +1 -1
  315. package/dist/ui/file-uploader.cjs +1 -1
  316. package/dist/ui/input.d.cts +1 -1
  317. package/dist/ui/input.d.mts +1 -1
  318. package/dist/ui/inputs/search-input.d.cts +1 -1
  319. package/dist/ui/inputs/search-input.d.mts +1 -1
  320. package/dist/ui/item.cjs +1 -1
  321. package/dist/ui/pagination.d.cts +1 -1
  322. package/dist/ui/pagination.d.mts +1 -1
  323. package/dist/ui/resizable.cjs +1 -1
  324. package/dist/ui/resizable.d.cts +1 -1
  325. package/dist/ui/resizable.d.mts +1 -1
  326. package/dist/{ui-grid-CzL5J7cm.d.cts → ui-grid-D1-Ponqs.d.cts} +5 -5
  327. package/dist/{ui-grid-CzL5J7cm.d.mts → ui-grid-D1-Ponqs.d.mts} +5 -5
  328. package/package.json +8 -4
  329. package/styles/text-editor.css +205 -38
  330. package/ai-docs.md +0 -419
  331. package/dist/action-submit-DVNxnW4-.mjs +0 -2
  332. package/dist/action-submit-kYjq-iPD.cjs +0 -2
  333. package/dist/actions-form-CwicJU89.cjs +0 -2
  334. package/dist/actions-form-DRrkiGzh.mjs +0 -2
  335. package/dist/checkbox-field-BN3Vd9qq.mjs +0 -2
  336. package/dist/checkbox-field-DBUjQC_4.cjs +0 -2
  337. package/dist/combobox-C64Rvd7n.mjs +0 -2
  338. package/dist/combobox-field-BE9miJ3D.cjs +0 -2
  339. package/dist/combobox-field-Bug1qI5B.mjs +0 -2
  340. package/dist/combobox-kp_kPY8o.cjs +0 -2
  341. package/dist/date-field-CYoPe74G.cjs +0 -2
  342. package/dist/date-field-D_qpBb-t.mjs +0 -2
  343. package/dist/dialog-form-BTZZwz3T.cjs +0 -2
  344. package/dist/dialog-form-CCIcht28.mjs +0 -2
  345. package/dist/email-field-DJa7iASY.cjs +0 -2
  346. package/dist/email-field-DxSNJ6tf.mjs +0 -2
  347. package/dist/features/descriptions/index.cjs.map +0 -1
  348. package/dist/features/descriptions/index.mjs.map +0 -1
  349. package/dist/field-BSLi-P0Q.cjs +0 -2
  350. package/dist/field-BSLi-P0Q.cjs.map +0 -1
  351. package/dist/field-V2DoD8qL.mjs +0 -2
  352. package/dist/field-V2DoD8qL.mjs.map +0 -1
  353. package/dist/group-field-gejvx_Td.mjs +0 -2
  354. package/dist/group-field-sVykO2JZ.cjs +0 -2
  355. package/dist/index-BMuVmm7f.d.mts +0 -236
  356. package/dist/index-CLx89ATZ.d.cts +0 -236
  357. package/dist/number-field-5INgdUUv.mjs +0 -2
  358. package/dist/number-field-DKZz-27X.cjs +0 -2
  359. package/dist/password-field-BuWARi35.cjs +0 -2
  360. package/dist/password-field-DOIe6wTv.mjs +0 -2
  361. package/dist/payment-layout-DDcLanA0.cjs +0 -2
  362. package/dist/popover-form-Bq2GcuZu.cjs +0 -2
  363. package/dist/popover-form-BsapHJck.mjs +0 -2
  364. package/dist/radio-group-field-DOJ4jVSr.mjs +0 -2
  365. package/dist/radio-group-field-kTgtvp1p.cjs +0 -2
  366. package/dist/rolldown-runtime-CMqjfN_6.cjs +0 -1
  367. package/dist/select-field-BcsFBbNJ.mjs +0 -2
  368. package/dist/select-field-CURv37h4.cjs +0 -2
  369. package/dist/simple-array-field-bCUuPMgT.cjs +0 -2
  370. package/dist/simple-array-field-wFE_DUOV.mjs +0 -2
  371. package/dist/simple-boolean-field-DRapzNrB.cjs +0 -2
  372. package/dist/simple-boolean-field-GQJyeyVS.mjs +0 -2
  373. package/dist/simple-combobox-field-Cp5dfQv3.cjs +0 -2
  374. package/dist/simple-combobox-field-D6IaMJKl.mjs +0 -2
  375. package/dist/simple-date-field-_PSkIXAt.cjs +0 -2
  376. package/dist/simple-date-field-dszQs7Ik.mjs +0 -2
  377. package/dist/simple-email-field-CwyoXqWo.mjs +0 -2
  378. package/dist/simple-email-field-DIHwYrhk.cjs +0 -2
  379. package/dist/simple-number-field-Id1kV5yR.mjs +0 -2
  380. package/dist/simple-number-field-VdEeaIiC.cjs +0 -2
  381. package/dist/simple-password-field-7xbVB1H3.cjs +0 -2
  382. package/dist/simple-password-field-DIO9FwQy.mjs +0 -2
  383. package/dist/simple-radio-group-field-BmHWRnns.mjs +0 -2
  384. package/dist/simple-radio-group-field-CxVAr6yW.cjs +0 -2
  385. package/dist/simple-select-field-C9u7Pg9u.cjs +0 -2
  386. package/dist/simple-select-field-DfZk0zPa.mjs +0 -2
  387. package/dist/simple-text-field-BxPjcB4c.cjs +0 -2
  388. package/dist/simple-text-field-CT9KFUSK.mjs +0 -2
  389. package/dist/simple-textarea-field-B22rT6zS.mjs +0 -2
  390. package/dist/simple-textarea-field-DG9oPtP-.cjs +0 -2
  391. package/dist/switch-field-Cz4lDf1D.mjs +0 -2
  392. package/dist/switch-field-yE4A6EoF.cjs +0 -2
  393. package/dist/tanstack-form-BxqS40rB.cjs +0 -2
  394. package/dist/tanstack-form-BxqS40rB.cjs.map +0 -1
  395. package/dist/tanstack-form-q9hDCc0Y.mjs +0 -2
  396. package/dist/tanstack-form-q9hDCc0Y.mjs.map +0 -1
  397. package/dist/text-editor-BtfyZSgR.cjs +0 -2
  398. package/dist/text-editor-BtfyZSgR.cjs.map +0 -1
  399. package/dist/text-editor-CtR27_PR.mjs +0 -2
  400. package/dist/text-editor-CtR27_PR.mjs.map +0 -1
  401. package/dist/text-editor-field-CQ8tnZFw.mjs +0 -2
  402. package/dist/text-editor-field-CQ8tnZFw.mjs.map +0 -1
  403. package/dist/text-editor-field-CxU-KMMn.cjs +0 -2
  404. package/dist/text-editor-field-CxU-KMMn.cjs.map +0 -1
  405. package/dist/text-field-B3xlvEUN.mjs +0 -2
  406. package/dist/text-field-BQovKYN-.cjs +0 -2
  407. package/dist/textarea-field-B38SnNv4.cjs +0 -2
  408. package/dist/textarea-field-u2UUwtr_.mjs +0 -2
  409. package/dist/title-field-B2hM3S_S.cjs +0 -2
  410. package/dist/title-field-oAqHRw59.mjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"list-display-DDeJoneW.cjs","names":["UITableEmpty","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/list-display.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableListDisplay} component. */\ntype Props = {\n /** Array of strings or numbers to render as inline pills. */\n items: (string | number)[] | null | undefined;\n /**\n * Maximum number of pills shown before a `+N more` overflow badge appears\n * (default: `3`).\n */\n maxVisible?: number;\n};\n\n/**\n * Renders an array of values as compact inline pills in a table cell. When the\n * list exceeds `maxVisible`, a `+N more` badge is shown; hovering it reveals all\n * remaining items in a tooltip. Renders {@link UITableEmpty} for empty or absent\n * arrays.\n *\n * @example\n * import { UITableListDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableListDisplay items={['React', 'TypeScript', 'TailwindCSS', 'Vite']} maxVisible={3} />\n */\nexport const UITableListDisplay: React.FC<Props> = ({ items, maxVisible = 3 }) => {\n if (!items || items.length === 0) return <UITableEmpty />;\n\n const visible = items.slice(0, maxVisible);\n const overflow = items.slice(maxVisible);\n\n return (\n <div className=\"flex flex-wrap gap-1\">\n {visible.map((item, i) => (\n <span\n key={`item-${i.toString()}`}\n className=\"weak inline-flex items-center rounded border border-border bg-white px-2 py-0.5 text-text-positive text-xs\"\n >\n {item}\n </span>\n ))}\n\n {overflow.length > 0 && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs\">\n +{overflow.length} more\n </span>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"flex max-w-64 flex-wrap gap-1 p-2\">\n {overflow.map((item, i) => (\n <span\n key={`item-${i.toString()}`}\n className=\"inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs\"\n >\n {item}\n </span>\n ))}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n );\n};\n"],"mappings":"0GA4BA,MAAa,GAAuC,CAAE,QAAO,aAAa,KAAQ,CAChF,GAAI,CAAC,GAAS,EAAM,SAAW,EAAG,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,EAAD,CAAe,CAAA,EAExD,IAAM,EAAU,EAAM,MAAM,EAAG,CAAU,EACnC,EAAW,EAAM,MAAM,CAAU,EAEvC,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uBAAf,SAAA,CACG,EAAQ,KAAK,EAAM,KAClB,EAAA,EAAA,IAAA,CAAC,OAAD,CAEE,UAAU,6GAET,SAAA,CACG,EAJC,QAAQ,EAAE,SAAS,GAIpB,CACP,EAEA,EAAS,OAAS,IACjB,EAAA,EAAA,IAAA,CAACC,EAAAA,gBAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,QAAA,GACd,UAAA,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,qHAAhB,SAAA,CAAqI,IACjI,EAAS,OAAO,OACd,GACQ,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,oCACrC,SAAA,EAAS,KAAK,EAAM,KACnB,EAAA,EAAA,IAAA,CAAC,OAAD,CAEE,UAAU,oGAET,SAAA,CACG,EAJC,QAAQ,EAAE,SAAS,GAIpB,CACP,CACa,CAAA,CACT,CAAA,CAAA,CACM,CAAA,CAEhB,GAET"}
1
+ {"version":3,"file":"list-display-CJvQ-wwT.cjs","names":["UITableEmpty","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/list-display.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableListDisplay} component. */\ntype Props = {\n /** Array of strings or numbers to render as inline pills. */\n items: (string | number)[] | null | undefined;\n /**\n * Maximum number of pills shown before a `+N more` overflow badge appears\n * (default: `3`).\n */\n maxVisible?: number;\n};\n\n/**\n * Renders an array of values as compact inline pills in a table cell. When the\n * list exceeds `maxVisible`, a `+N more` badge is shown; hovering it reveals all\n * remaining items in a tooltip. Renders {@link UITableEmpty} for empty or absent\n * arrays.\n *\n * @example\n * import { UITableListDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableListDisplay items={['React', 'TypeScript', 'TailwindCSS', 'Vite']} maxVisible={3} />\n */\nexport const UITableListDisplay: React.FC<Props> = ({ items, maxVisible = 3 }) => {\n if (!items || items.length === 0) return <UITableEmpty />;\n\n const visible = items.slice(0, maxVisible);\n const overflow = items.slice(maxVisible);\n\n return (\n <div className=\"flex flex-wrap gap-1\">\n {visible.map((item, i) => (\n <span\n key={`item-${i.toString()}`}\n className=\"weak inline-flex items-center rounded border border-border bg-white px-2 py-0.5 text-text-positive text-xs\"\n >\n {item}\n </span>\n ))}\n\n {overflow.length > 0 && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs\">\n +{overflow.length} more\n </span>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"flex max-w-64 flex-wrap gap-1 p-2\">\n {overflow.map((item, i) => (\n <span\n key={`item-${i.toString()}`}\n className=\"inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs\"\n >\n {item}\n </span>\n ))}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n );\n};\n"],"mappings":"0GA4BA,MAAa,GAAuC,CAAE,QAAO,aAAa,KAAQ,CAChF,GAAI,CAAC,GAAS,EAAM,SAAW,EAAG,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,EAAD,CAAe,CAAA,EAExD,IAAM,EAAU,EAAM,MAAM,EAAG,CAAU,EACnC,EAAW,EAAM,MAAM,CAAU,EAEvC,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uBAAf,SAAA,CACG,EAAQ,KAAK,EAAM,KAClB,EAAA,EAAA,IAAA,CAAC,OAAD,CAEE,UAAU,6GAET,SAAA,CACG,EAJC,QAAQ,EAAE,SAAS,GAIpB,CACP,EAEA,EAAS,OAAS,IACjB,EAAA,EAAA,IAAA,CAACC,EAAAA,gBAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,QAAA,GACd,UAAA,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,qHAAhB,SAAA,CAAqI,IACjI,EAAS,OAAO,OACd,GACQ,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,oCACrC,SAAA,EAAS,KAAK,EAAM,KACnB,EAAA,EAAA,IAAA,CAAC,OAAD,CAEE,UAAU,oGAET,SAAA,CACG,EAJC,QAAQ,EAAE,SAAS,GAIpB,CACP,CACa,CAAA,CACT,CAAA,CAAA,CACM,CAAA,CAEhB,GAET"}
@@ -1,2 +1,2 @@
1
- import{Paragraph as e}from"./typography/paragraph.mjs";import{Tooltip as t,TooltipContent as n,TooltipTrigger as r}from"./ui/tooltip.mjs";import{Q as i}from"./tables-Dg3KMBKA.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=({name:s})=>s?o(t,{children:[a(r,{children:a(e,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:s})}),a(n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:o(`div`,{className:`flex flex-col gap-y-2`,children:[a(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:s}),o(`p`,{className:`w-full text-end`,children:[s.length,` chars`]})]})})]}):a(i,{});export{s as UITableNameDisplay};
2
- //# sourceMappingURL=name-display-H5HFH1fU.mjs.map
1
+ import{Paragraph as e}from"./typography/paragraph.mjs";import{Tooltip as t,TooltipContent as n,TooltipTrigger as r}from"./ui/tooltip.mjs";import{Q as i}from"./tables-CuoBQNqx.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=({name:s})=>s?o(t,{children:[a(r,{children:a(e,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:s})}),a(n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:o(`div`,{className:`flex flex-col gap-y-2`,children:[a(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:s}),o(`p`,{className:`w-full text-end`,children:[s.length,` chars`]})]})})]}):a(i,{});export{s as UITableNameDisplay};
2
+ //# sourceMappingURL=name-display-BFoDcvt2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-display-H5HFH1fU.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"sOAqBA,MAAa,GAAkD,CAAE,UAC1D,EAEH,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAW,QAAQ,KAAK,UAAU,0DAC/B,SAAA,CACQ,CAAA,CACG,CAAA,EAChB,EAAC,EAAD,CAAgB,MAAM,QAAQ,UAAU,+BACtC,SAAA,EAAC,MAAD,CAAK,UAAU,wBAAf,SAAA,CACE,EAAC,IAAD,CAAG,UAAU,2CAA4C,SAAA,CAAQ,CAAA,EACjE,EAAC,IAAD,CAAG,UAAU,kBAAb,SAAA,CAAgC,EAAK,OAAO,QAAS,CAClD,CAAA,CAAA,GACS,CAAA,CACT,CAAA,CAAA,EAdO,EAAC,EAAD,CAAe,CAAA"}
1
+ {"version":3,"file":"name-display-BFoDcvt2.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"sOAqBA,MAAa,GAAkD,CAAE,UAC1D,EAEH,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAW,QAAQ,KAAK,UAAU,0DAC/B,SAAA,CACQ,CAAA,CACG,CAAA,EAChB,EAAC,EAAD,CAAgB,MAAM,QAAQ,UAAU,+BACtC,SAAA,EAAC,MAAD,CAAK,UAAU,wBAAf,SAAA,CACE,EAAC,IAAD,CAAG,UAAU,2CAA4C,SAAA,CAAQ,CAAA,EACjE,EAAC,IAAD,CAAG,UAAU,kBAAb,SAAA,CAAgC,EAAK,OAAO,QAAS,CAClD,CAAA,CAAA,GACS,CAAA,CACT,CAAA,CAAA,EAdO,EAAC,EAAD,CAAe,CAAA"}
@@ -1,2 +1,2 @@
1
- const e=require("./typography/paragraph.cjs"),t=require("./ui/tooltip.cjs"),n=require("./tables-BqZ4Zs6e.cjs");let r=require("react/jsx-runtime");const i=({name:i})=>i?(0,r.jsxs)(t.Tooltip,{children:[(0,r.jsx)(t.TooltipTrigger,{children:(0,r.jsx)(e.Paragraph,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:i})}),(0,r.jsx)(t.TooltipContent,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,r.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,r.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:i}),(0,r.jsxs)(`p`,{className:`w-full text-end`,children:[i.length,` chars`]})]})})]}):(0,r.jsx)(n.Q,{});exports.UITableNameDisplay=i;
2
- //# sourceMappingURL=name-display-CKnyugrP.cjs.map
1
+ const e=require("./typography/paragraph.cjs"),t=require("./ui/tooltip.cjs"),n=require("./tables-DdLEj1dI.cjs");let r=require("react/jsx-runtime");const i=({name:i})=>i?(0,r.jsxs)(t.Tooltip,{children:[(0,r.jsx)(t.TooltipTrigger,{children:(0,r.jsx)(e.Paragraph,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:i})}),(0,r.jsx)(t.TooltipContent,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,r.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,r.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:i}),(0,r.jsxs)(`p`,{className:`w-full text-end`,children:[i.length,` chars`]})]})})]}):(0,r.jsx)(n.Q,{});exports.UITableNameDisplay=i;
2
+ //# sourceMappingURL=name-display-Br7rcdqi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-display-CKnyugrP.cjs","names":["UITableEmpty","Tooltip","TooltipTrigger","Paragraph","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"kJAqBA,MAAa,GAAkD,CAAE,UAC1D,GAEH,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,QAAQ,KAAK,UAAU,0DAC/B,SAAA,CACQ,CAAA,CACG,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,+BACtC,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,wBAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,2CAA4C,SAAA,CAAQ,CAAA,GACjE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAU,kBAAb,SAAA,CAAgC,EAAK,OAAO,QAAS,CAClD,CAAA,CAAA,GACS,CAAA,CACT,CAAA,CAAA,GAdO,EAAA,EAAA,IAAA,CAACJ,EAAAA,EAAD,CAAe,CAAA"}
1
+ {"version":3,"file":"name-display-Br7rcdqi.cjs","names":["UITableEmpty","Tooltip","TooltipTrigger","Paragraph","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"kJAqBA,MAAa,GAAkD,CAAE,UAC1D,GAEH,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,QAAQ,KAAK,UAAU,0DAC/B,SAAA,CACQ,CAAA,CACG,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,+BACtC,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,wBAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,2CAA4C,SAAA,CAAQ,CAAA,GACjE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAU,kBAAb,SAAA,CAAgC,EAAK,OAAO,QAAS,CAClD,CAAA,CAAA,GACS,CAAA,CACT,CAAA,CAAA,GAdO,EAAA,EAAA,IAAA,CAACJ,EAAAA,EAAD,CAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ const e=require("./tanstack-form-BiOihtxs.cjs"),t=require("./number-input-CAr3JaA-.cjs");let n=require("lucide-react"),r=require("react"),i=require("@customafk/react-toolkit/utils"),a=require("react/jsx-runtime"),o=require("@tanstack/react-form");const s=(0,r.memo)(({label:s,description:c,placeholder:l,tooltip:u,helperText:d,orientation:f=`responsive`,showErrorMessage:p=!0,rounding:m,decimalPlaces:h,precision:g,unit:_,required:v=!1,disabled:y=!1,allowNegative:b})=>{let x=(0,r.useId)(),S=(0,r.useId)(),C=e.rt(),w=(0,o.useStore)(C.form.store,({isSubmitting:e})=>e),T=y||w,E=C.state.meta.isDirty||C.state.meta.isTouched,D=E&&!C.state.meta.isValid,O=v&&C.state.value===null,k=!!C.state.meta.errors.length,A=(0,r.useCallback)(e=>{T||C.handleChange(e)},[T,C.handleChange]);return(0,a.jsxs)(e.X,{className:`gap-y-4 px-4`,children:[(0,a.jsxs)(e.G,{orientation:f,"data-invalid":D,children:[(0,a.jsxs)(e.K,{children:[(0,a.jsxs)(e.Z,{htmlFor:x,"aria-required":O,children:[s,u&&(0,a.jsx)(e.nt,{tooltip:u})]}),(0,a.jsx)(e.J,{children:c})]}),(0,a.jsxs)(e.q,{children:[(0,a.jsxs)(`div`,{className:`relative w-full`,children:[(0,a.jsx)(t.t,{id:x,value:C.state.value,"aria-invalid":D,"aria-describedby":S,placeholder:l,disabled:T,roundingRule:m,numberAfterDecimalPoint:h,precision:g,unitText:_,allowNegative:b,className:(0,i.cn)(T&&`pointer-events-none opacity-60`),onBlur:C.handleBlur,onValueChange:A}),w&&(0,a.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:(0,a.jsx)(n.Loader2Icon,{className:`animate-spin text-primary-strong`})}),!w&&E&&p&&k&&(0,a.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,a.jsx)(n.BanIcon,{})}),(0,a.jsx)(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:E&&p?(0,a.jsx)(e.Y,{id:S,className:`flex-1`,errors:C.state.meta.errors}):(0,a.jsx)(`div`,{})})]}),(0,a.jsx)(e.$,{isShow:!!d,children:d})]})]}),(0,a.jsx)(e.et,{})]})});s.displayName=`NumberField`,exports.NumberField=s;
2
+ //# sourceMappingURL=number-field-CMskIrWP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field-DKZz-27X.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,eAAtB,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,MAAD,CAAoB,cAAa,eAAc,EAA/C,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,QAAS,EAAI,gBAAe,EAAxC,SAAA,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,GAAA,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,kBAAf,SAAA,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,4EACb,UAAA,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,gGACb,UAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAU,CAAA,CACP,CAAA,GAEP,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,uDACZ,SAAA,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,CACL,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
1
+ {"version":3,"file":"number-field-CMskIrWP.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":"uPA+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,GAAuC,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,EAAD,CAAY,UAAU,eAAtB,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAoB,cAAa,eAAc,EAA/C,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAY,QAAS,EAAI,gBAAe,EAAxC,SAAA,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,GAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GAEd,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,kBAAf,SAAA,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,4EACb,UAAA,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,gGACb,UAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAU,CAAA,CACP,CAAA,GAEP,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,uDACZ,SAAA,GAAY,GAAmB,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,CACL,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,GAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
@@ -0,0 +1,2 @@
1
+ import{$ as e,G as t,J as n,K as r,X as i,Y as a,Z as o,et as s,nt as c,q as l,rt as u}from"./tanstack-form-Do6xL2kv.mjs";import{t as d}from"./number-input-CJcEV9Cg.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=u(),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(i,{className:`gap-y-4 px-4`,children:[y(t,{orientation:T,"data-invalid":B,children:[y(r,{children:[y(o,{htmlFor:P,"aria-required":V,children:[m,C&&v(c,{tooltip:C})]}),v(n,{children:x})]}),y(l,{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(e,{isShow:!!w,children:w})]})]}),v(s,{})]})});x.displayName=`NumberField`;export{x as NumberField};
2
+ //# sourceMappingURL=number-field-DSGwWg7y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field-5INgdUUv.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,eAAtB,SAAA,CACE,EAAC,EAAD,CAAoB,cAAa,eAAc,EAA/C,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAAI,gBAAe,EAAxC,SAAA,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,EAAA,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EAEd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAU,kBAAf,SAAA,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,4EACb,SAAA,EAAC,EAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,GAChD,EAAC,MAAD,CAAK,UAAU,gGACb,SAAA,EAAC,EAAD,CAAU,CAAA,CACP,CAAA,EAEP,EAAC,MAAD,CAAK,UAAU,uDACZ,SAAA,GAAY,EAAmB,EAAC,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,EAAI,EAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,CACL,CAAA,EAAA,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,EAAA,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
1
+ {"version":3,"file":"number-field-DSGwWg7y.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":"ibA+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,eAAtB,SAAA,CACE,EAAC,EAAD,CAAoB,cAAa,eAAc,EAA/C,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAAI,gBAAe,EAAxC,SAAA,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,EAAA,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EAEd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAU,kBAAf,SAAA,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,4EACb,SAAA,EAAC,EAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,GAChD,EAAC,MAAD,CAAK,UAAU,gGACb,SAAA,EAAC,EAAD,CAAU,CAAA,CACP,CAAA,EAEP,EAAC,MAAD,CAAK,UAAU,uDACZ,SAAA,GAAY,EAAmB,EAAC,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,EAAI,EAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,CACL,CAAA,EAAA,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,EAAA,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
@@ -1,4 +1,4 @@
1
- import { t as Button } from "./button-BnoPktln.cjs";
1
+ import { t as Button } from "./button-BGW-LZ3i.cjs";
2
2
  //#region packages/components/ui/pagination.d.ts
3
3
  /**
4
4
  * Root `<nav>` wrapper for a Pagination control with accessible ARIA attributes.
@@ -39,4 +39,4 @@ declare function PaginationNext({ className, ...props }: React.ComponentProps<ty
39
39
  declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<'span'>): import("react").JSX.Element;
40
40
  //#endregion
41
41
  export { PaginationLink as a, PaginationItem as i, PaginationContent as n, PaginationNext as o, PaginationEllipsis as r, PaginationPrevious as s, Pagination as t };
42
- //# sourceMappingURL=pagination-BRw-yZBY.d.cts.map
42
+ //# sourceMappingURL=pagination-DDcO-TPf.d.cts.map
@@ -1,4 +1,4 @@
1
- import { t as Button } from "./button-BnoPktln.mjs";
1
+ import { t as Button } from "./button-BGW-LZ3i.mjs";
2
2
  //#region packages/components/ui/pagination.d.ts
3
3
  /**
4
4
  * Root `<nav>` wrapper for a Pagination control with accessible ARIA attributes.
@@ -39,4 +39,4 @@ declare function PaginationNext({ className, ...props }: React.ComponentProps<ty
39
39
  declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<'span'>): import("react").JSX.Element;
40
40
  //#endregion
41
41
  export { PaginationLink as a, PaginationItem as i, PaginationContent as n, PaginationNext as o, PaginationEllipsis as r, PaginationPrevious as s, Pagination as t };
42
- //# sourceMappingURL=pagination-BlLiOvY9.d.mts.map
42
+ //# sourceMappingURL=pagination-DWg3Xv34.d.mts.map
@@ -1,8 +1,8 @@
1
- import { ComponentPropsWithoutRef } from "react";
2
1
  import { VariantProps } from "class-variance-authority";
2
+ import { ComponentPropsWithoutRef } from "react";
3
3
  //#region packages/components/typography/paragraph.d.ts
4
4
  declare const paragraphVariants: (props?: ({
5
- variant?: "xs" | "sm" | "lg" | "muted" | "p" | "lead" | null | undefined;
5
+ variant?: "xs" | "sm" | "lg" | "p" | "muted" | "lead" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  /**
8
8
  * Props for the {@link Paragraph} component.
@@ -38,4 +38,4 @@ type ParagraphProps = ComponentPropsWithoutRef<'p'> & VariantProps<typeof paragr
38
38
  declare const Paragraph: ({ variant, className, ...props }: ParagraphProps) => import("react").JSX.Element;
39
39
  //#endregion
40
40
  export { ParagraphProps as n, paragraphVariants as r, Paragraph as t };
41
- //# sourceMappingURL=paragraph-CRo5eC7H.d.mts.map
41
+ //# sourceMappingURL=paragraph--8GcgnQL.d.cts.map
@@ -1,8 +1,8 @@
1
- import { VariantProps } from "class-variance-authority";
2
1
  import { ComponentPropsWithoutRef } from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
3
  //#region packages/components/typography/paragraph.d.ts
4
4
  declare const paragraphVariants: (props?: ({
5
- variant?: "xs" | "sm" | "lg" | "muted" | "p" | "lead" | null | undefined;
5
+ variant?: "xs" | "sm" | "lg" | "p" | "muted" | "lead" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  /**
8
8
  * Props for the {@link Paragraph} component.
@@ -38,4 +38,4 @@ type ParagraphProps = ComponentPropsWithoutRef<'p'> & VariantProps<typeof paragr
38
38
  declare const Paragraph: ({ variant, className, ...props }: ParagraphProps) => import("react").JSX.Element;
39
39
  //#endregion
40
40
  export { ParagraphProps as n, paragraphVariants as r, Paragraph as t };
41
- //# sourceMappingURL=paragraph-CkCNIsvz.d.cts.map
41
+ //# sourceMappingURL=paragraph-BOa0VlGX.d.mts.map
@@ -0,0 +1,2 @@
1
+ const e=require("./ui/input.cjs"),t=require("./tanstack-form-BiOihtxs.cjs");let n=require("lucide-react"),r=require("react"),i=require("react/jsx-runtime"),a=require("@tanstack/react-form");const o=({label:o,description:s,placeholder:c,orientation:l=`responsive`,tooltip:u,helperText:d,showErrorMessage:f=!0})=>{let p=(0,r.useId)(),{form:m,name:h,state:g,handleBlur:_,handleChange:v}=t.rt(),y=(0,a.useStore)(m.store,({isSubmitting:e})=>e),[b,x]=(0,r.useState)(!1),S=g.meta.isDirty&&g.meta.isTouched&&!g.meta.isValid,C=(0,r.useCallback)(()=>x(e=>!e),[]),w=(0,r.useCallback)(({target:{value:e}})=>{y||v(e||null)},[y,v]);return(0,i.jsxs)(t.X,{className:`gap-y-4 px-4`,children:[(0,i.jsxs)(t.G,{"data-invalid":S,orientation:l,children:[(0,i.jsxs)(t.K,{children:[(0,i.jsxs)(t.Z,{htmlFor:p,children:[o,u&&(0,i.jsx)(t.nt,{tooltip:u})]}),(0,i.jsx)(t.J,{children:s})]}),(0,i.jsxs)(t.q,{children:[(0,i.jsx)(e.Input,{id:p,name:h,type:b?`text`:`password`,placeholder:c,value:g.value??``,"aria-invalid":S,autoComplete:`new-password`,onBlur:_,onChange:w}),(0,i.jsx)(`button`,{className:`absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,type:`button`,onClick:C,"aria-label":b?`Ẩn mật khẩu`:`Hiện mật khẩu`,"aria-pressed":b,"aria-controls":p,children:b?(0,i.jsx)(n.EyeOffIcon,{size:16,"aria-hidden":`true`}):(0,i.jsx)(n.EyeIcon,{size:16,"aria-hidden":`true`})}),(0,i.jsx)(`div`,{className:`mt-1 flex w-full items-start justify-start`,children:f&&g.meta.isDirty&&(0,i.jsx)(t.Y,{errors:g.meta.errors})}),(0,i.jsx)(t.$,{isShow:!!d,children:d})]})]}),(0,i.jsx)(t.et,{})]})};exports.PasswordField=o;
2
+ //# sourceMappingURL=password-field-BxJqTPhN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-field-BuWARi35.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","Input","EyeOffIcon","EyeIcon","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/ui/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 { PasswordFieldProps as Props } from '../../types';\n\n/**\n * A TanStack Form-connected password input field with a show/hide toggle button\n * and inline validation error display.\n *\n * @example\n * import { PasswordField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"password\">\n * {() => (\n * <PasswordField\n * label=\"Password\"\n * placeholder=\"Enter your password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * )}\n * </form.Field>\n */\nexport const PasswordField: React.FC<Props> = ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n}) => {\n const id = useId();\n const { form, name, state, handleBlur, handleChange } = useTanStackFieldContext<string | null>();\n\n const isSubmitting = useStore(form.store, ({ isSubmitting }) => isSubmitting);\n\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const _invalid = state.meta.isDirty && state.meta.isTouched && !state.meta.isValid;\n\n const toggleVisibility = useCallback(() => setIsVisible(prev => !prev), []);\n\n const onChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n ({ target: { value } }) => {\n if (isSubmitting) return;\n handleChange(value || null);\n },\n [isSubmitting, handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field data-invalid={_invalid} orientation={orientation}>\n <FieldContent>\n <FieldLabel htmlFor={id}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n <FieldContentMain>\n <Input\n id={id}\n name={name}\n type={isVisible ? 'text' : 'password'}\n placeholder={placeholder}\n value={state.value ?? ''}\n aria-invalid={_invalid}\n autoComplete=\"new-password\"\n onBlur={handleBlur}\n onChange={onChange}\n />\n\n <button\n className=\"absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n aria-pressed={isVisible}\n aria-controls={id}\n >\n {isVisible ? <EyeOffIcon size={16} aria-hidden=\"true\" /> : <EyeIcon size={16} aria-hidden=\"true\" />}\n </button>\n\n <div className=\"mt-1 flex w-full items-start justify-start\">\n {showErrorMessage && state.meta.isDirty && <FieldError errors={state.meta.errors} />}\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n};\n"],"mappings":"gOA2CA,MAAa,GAAkC,CAC7C,QACA,cACA,cACA,cAAc,aACd,UACA,aACA,mBAAmB,MACf,CACJ,IAAM,GAAA,EAAA,EAAA,MAAA,CAAW,EACX,CAAE,OAAM,OAAM,QAAO,aAAY,gBAAiBA,EAAAA,EAAuC,EAEzF,GAAA,EAAA,EAAA,SAAA,CAAwB,EAAK,OAAQ,CAAE,kBAAmB,CAAY,EAEtE,CAAC,EAAW,IAAA,EAAA,EAAA,SAAA,CAAkC,EAAK,EAEnD,EAAW,EAAM,KAAK,SAAW,EAAM,KAAK,WAAa,CAAC,EAAM,KAAK,QAErE,GAAA,EAAA,EAAA,YAAA,KAAqC,EAAa,GAAQ,CAAC,CAAI,EAAG,CAAC,CAAC,EAEpE,GAAA,EAAA,EAAA,YAAA,EACH,CAAE,OAAQ,CAAE,YAAc,CACrB,GACJ,EAAa,GAAS,IAAI,CAC5B,EACA,CAAC,EAAc,CAAY,CAC7B,EAEA,OACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,UAAU,eAAtB,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,MAAD,CAAO,eAAc,EAAuB,cAA5C,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,QAAS,EAArB,SAAA,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,iBAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GACd,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CACM,KACE,OACN,KAAM,EAAY,OAAS,WACd,cACb,MAAO,EAAM,OAAS,GACtB,eAAc,EACd,aAAa,eACb,OAAQ,EACE,UACX,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,SAAD,CACE,UAAU,kOACV,KAAK,SACL,QAAS,EACT,aAAY,EAAY,cAAgB,gBACxC,eAAc,EACd,gBAAe,EAEd,SAAA,GAAY,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,KAAM,GAAI,cAAY,MAAQ,CAAA,GAAI,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAS,KAAM,GAAI,cAAY,MAAQ,CAAA,CAC5F,CAAA,GAER,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6CACZ,SAAA,GAAoB,EAAM,KAAK,UAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,OAAQ,EAAM,KAAK,MAAS,CAAA,CAChF,CAAA,GACL,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAiB,CAAA,CACP,GAEhB"}
1
+ {"version":3,"file":"password-field-BxJqTPhN.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","Input","EyeOffIcon","EyeIcon","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/ui/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 { PasswordFieldProps as Props } from '../../types';\n\n/**\n * A TanStack Form-connected password input field with a show/hide toggle button\n * and inline validation error display.\n *\n * @example\n * import { PasswordField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"password\">\n * {() => (\n * <PasswordField\n * label=\"Password\"\n * placeholder=\"Enter your password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * )}\n * </form.Field>\n */\nexport const PasswordField: React.FC<Props> = ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n}) => {\n const id = useId();\n const { form, name, state, handleBlur, handleChange } = useTanStackFieldContext<string | null>();\n\n const isSubmitting = useStore(form.store, ({ isSubmitting }) => isSubmitting);\n\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const _invalid = state.meta.isDirty && state.meta.isTouched && !state.meta.isValid;\n\n const toggleVisibility = useCallback(() => setIsVisible(prev => !prev), []);\n\n const onChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n ({ target: { value } }) => {\n if (isSubmitting) return;\n handleChange(value || null);\n },\n [isSubmitting, handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field data-invalid={_invalid} orientation={orientation}>\n <FieldContent>\n <FieldLabel htmlFor={id}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n <FieldContentMain>\n <Input\n id={id}\n name={name}\n type={isVisible ? 'text' : 'password'}\n placeholder={placeholder}\n value={state.value ?? ''}\n aria-invalid={_invalid}\n autoComplete=\"new-password\"\n onBlur={handleBlur}\n onChange={onChange}\n />\n\n <button\n className=\"absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n aria-pressed={isVisible}\n aria-controls={id}\n >\n {isVisible ? <EyeOffIcon size={16} aria-hidden=\"true\" /> : <EyeIcon size={16} aria-hidden=\"true\" />}\n </button>\n\n <div className=\"mt-1 flex w-full items-start justify-start\">\n {showErrorMessage && state.meta.isDirty && <FieldError errors={state.meta.errors} />}\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n};\n"],"mappings":"8LA2CA,MAAa,GAAkC,CAC7C,QACA,cACA,cACA,cAAc,aACd,UACA,aACA,mBAAmB,MACf,CACJ,IAAM,GAAA,EAAA,EAAA,MAAA,CAAW,EACX,CAAE,OAAM,OAAM,QAAO,aAAY,gBAAiBA,EAAAA,GAAuC,EAEzF,GAAA,EAAA,EAAA,SAAA,CAAwB,EAAK,OAAQ,CAAE,kBAAmB,CAAY,EAEtE,CAAC,EAAW,IAAA,EAAA,EAAA,SAAA,CAAkC,EAAK,EAEnD,EAAW,EAAM,KAAK,SAAW,EAAM,KAAK,WAAa,CAAC,EAAM,KAAK,QAErE,GAAA,EAAA,EAAA,YAAA,KAAqC,EAAa,GAAQ,CAAC,CAAI,EAAG,CAAC,CAAC,EAEpE,GAAA,EAAA,EAAA,YAAA,EACH,CAAE,OAAQ,CAAE,YAAc,CACrB,GACJ,EAAa,GAAS,IAAI,CAC5B,EACA,CAAC,EAAc,CAAY,CAC7B,EAEA,OACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAY,UAAU,eAAtB,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAO,eAAc,EAAuB,cAA5C,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAY,QAAS,EAArB,SAAA,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,GAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GACd,EAAA,EAAA,KAAA,CAACC,EAAAA,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CACM,KACE,OACN,KAAM,EAAY,OAAS,WACd,cACb,MAAO,EAAM,OAAS,GACtB,eAAc,EACd,aAAa,eACb,OAAQ,EACE,UACX,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,SAAD,CACE,UAAU,kOACV,KAAK,SACL,QAAS,EACT,aAAY,EAAY,cAAgB,gBACxC,eAAc,EACd,gBAAe,EAEd,SAAA,GAAY,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,KAAM,GAAI,cAAY,MAAQ,CAAA,GAAI,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAS,KAAM,GAAI,cAAY,MAAQ,CAAA,CAC5F,CAAA,GAER,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6CACZ,SAAA,GAAoB,EAAM,KAAK,UAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAY,OAAQ,EAAM,KAAK,MAAS,CAAA,CAChF,CAAA,GACL,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,GAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,GAAD,CAAiB,CAAA,CACP,GAEhB"}
@@ -0,0 +1,2 @@
1
+ import{$ as e,G as t,J as n,K as r,X as i,Y as a,Z as o,et as s,nt as c,q as l,rt as u}from"./tanstack-form-Do6xL2kv.mjs";import{Input as d}from"./ui/input.mjs";import{EyeIcon as f,EyeOffIcon as p}from"lucide-react";import{useCallback as m,useId as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useStore as y}from"@tanstack/react-form";const b=({label:b,description:x,placeholder:S,orientation:C=`responsive`,tooltip:w,helperText:T,showErrorMessage:E=!0})=>{let D=h(),{form:O,name:k,state:A,handleBlur:j,handleChange:M}=u(),N=y(O.store,({isSubmitting:e})=>e),[P,F]=g(!1),I=A.meta.isDirty&&A.meta.isTouched&&!A.meta.isValid,L=m(()=>F(e=>!e),[]),R=m(({target:{value:e}})=>{N||M(e||null)},[N,M]);return v(i,{className:`gap-y-4 px-4`,children:[v(t,{"data-invalid":I,orientation:C,children:[v(r,{children:[v(o,{htmlFor:D,children:[b,w&&_(c,{tooltip:w})]}),_(n,{children:x})]}),v(l,{children:[_(d,{id:D,name:k,type:P?`text`:`password`,placeholder:S,value:A.value??``,"aria-invalid":I,autoComplete:`new-password`,onBlur:j,onChange:R}),_(`button`,{className:`absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,type:`button`,onClick:L,"aria-label":P?`Ẩn mật khẩu`:`Hiện mật khẩu`,"aria-pressed":P,"aria-controls":D,children:_(P?p:f,{size:16,"aria-hidden":`true`})}),_(`div`,{className:`mt-1 flex w-full items-start justify-start`,children:E&&A.meta.isDirty&&_(a,{errors:A.meta.errors})}),_(e,{isShow:!!T,children:T})]})]}),_(s,{})]})};export{b as PasswordField};
2
+ //# sourceMappingURL=password-field-DsmwNZep.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-field-DOIe6wTv.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/ui/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 { PasswordFieldProps as Props } from '../../types';\n\n/**\n * A TanStack Form-connected password input field with a show/hide toggle button\n * and inline validation error display.\n *\n * @example\n * import { PasswordField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"password\">\n * {() => (\n * <PasswordField\n * label=\"Password\"\n * placeholder=\"Enter your password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * )}\n * </form.Field>\n */\nexport const PasswordField: React.FC<Props> = ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n}) => {\n const id = useId();\n const { form, name, state, handleBlur, handleChange } = useTanStackFieldContext<string | null>();\n\n const isSubmitting = useStore(form.store, ({ isSubmitting }) => isSubmitting);\n\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const _invalid = state.meta.isDirty && state.meta.isTouched && !state.meta.isValid;\n\n const toggleVisibility = useCallback(() => setIsVisible(prev => !prev), []);\n\n const onChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n ({ target: { value } }) => {\n if (isSubmitting) return;\n handleChange(value || null);\n },\n [isSubmitting, handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field data-invalid={_invalid} orientation={orientation}>\n <FieldContent>\n <FieldLabel htmlFor={id}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n <FieldContentMain>\n <Input\n id={id}\n name={name}\n type={isVisible ? 'text' : 'password'}\n placeholder={placeholder}\n value={state.value ?? ''}\n aria-invalid={_invalid}\n autoComplete=\"new-password\"\n onBlur={handleBlur}\n onChange={onChange}\n />\n\n <button\n className=\"absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n aria-pressed={isVisible}\n aria-controls={id}\n >\n {isVisible ? <EyeOffIcon size={16} aria-hidden=\"true\" /> : <EyeIcon size={16} aria-hidden=\"true\" />}\n </button>\n\n <div className=\"mt-1 flex w-full items-start justify-start\">\n {showErrorMessage && state.meta.isDirty && <FieldError errors={state.meta.errors} />}\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n};\n"],"mappings":"8fA2CA,MAAa,GAAkC,CAC7C,QACA,cACA,cACA,cAAc,aACd,UACA,aACA,mBAAmB,MACf,CACJ,IAAM,EAAK,EAAM,EACX,CAAE,OAAM,OAAM,QAAO,aAAY,gBAAiB,EAAuC,EAEzF,EAAe,EAAS,EAAK,OAAQ,CAAE,kBAAmB,CAAY,EAEtE,CAAC,EAAW,GAAgB,EAAkB,EAAK,EAEnD,EAAW,EAAM,KAAK,SAAW,EAAM,KAAK,WAAa,CAAC,EAAM,KAAK,QAErE,EAAmB,MAAkB,EAAa,GAAQ,CAAC,CAAI,EAAG,CAAC,CAAC,EAEpE,EAAW,GACd,CAAE,OAAQ,CAAE,YAAc,CACrB,GACJ,EAAa,GAAS,IAAI,CAC5B,EACA,CAAC,EAAc,CAAY,CAC7B,EAEA,OACE,EAAC,EAAD,CAAY,UAAU,eAAtB,SAAA,CACE,EAAC,EAAD,CAAO,eAAc,EAAuB,cAA5C,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAArB,SAAA,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,EAAA,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EACd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CACM,KACE,OACN,KAAM,EAAY,OAAS,WACd,cACb,MAAO,EAAM,OAAS,GACtB,eAAc,EACd,aAAa,eACb,OAAQ,EACE,UACX,CAAA,EAED,EAAC,SAAD,CACE,UAAU,kOACV,KAAK,SACL,QAAS,EACT,aAAY,EAAY,cAAgB,gBACxC,eAAc,EACd,gBAAe,EAEd,SAAY,EAAZ,EAAa,EAA8C,EAA/C,CAAY,KAAM,GAAI,cAAY,MAAQ,CAA2C,CAC5F,CAAA,EAER,EAAC,MAAD,CAAK,UAAU,6CACZ,SAAA,GAAoB,EAAM,KAAK,SAAW,EAAC,EAAD,CAAY,OAAQ,EAAM,KAAK,MAAS,CAAA,CAChF,CAAA,EACL,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,EAAA,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB"}
1
+ {"version":3,"file":"password-field-DsmwNZep.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/ui/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 { PasswordFieldProps as Props } from '../../types';\n\n/**\n * A TanStack Form-connected password input field with a show/hide toggle button\n * and inline validation error display.\n *\n * @example\n * import { PasswordField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"password\">\n * {() => (\n * <PasswordField\n * label=\"Password\"\n * placeholder=\"Enter your password\"\n * helperText=\"Must be at least 8 characters\"\n * />\n * )}\n * </form.Field>\n */\nexport const PasswordField: React.FC<Props> = ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n}) => {\n const id = useId();\n const { form, name, state, handleBlur, handleChange } = useTanStackFieldContext<string | null>();\n\n const isSubmitting = useStore(form.store, ({ isSubmitting }) => isSubmitting);\n\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const _invalid = state.meta.isDirty && state.meta.isTouched && !state.meta.isValid;\n\n const toggleVisibility = useCallback(() => setIsVisible(prev => !prev), []);\n\n const onChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n ({ target: { value } }) => {\n if (isSubmitting) return;\n handleChange(value || null);\n },\n [isSubmitting, handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field data-invalid={_invalid} orientation={orientation}>\n <FieldContent>\n <FieldLabel htmlFor={id}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n <FieldContentMain>\n <Input\n id={id}\n name={name}\n type={isVisible ? 'text' : 'password'}\n placeholder={placeholder}\n value={state.value ?? ''}\n aria-invalid={_invalid}\n autoComplete=\"new-password\"\n onBlur={handleBlur}\n onChange={onChange}\n />\n\n <button\n className=\"absolute inset-e-0 inset-y-0 flex size-9 items-center justify-center rounded-e-md text-muted outline-none transition-[color,box-shadow] focus:z-10 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n type=\"button\"\n onClick={toggleVisibility}\n aria-label={isVisible ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n aria-pressed={isVisible}\n aria-controls={id}\n >\n {isVisible ? <EyeOffIcon size={16} aria-hidden=\"true\" /> : <EyeIcon size={16} aria-hidden=\"true\" />}\n </button>\n\n <div className=\"mt-1 flex w-full items-start justify-start\">\n {showErrorMessage && state.meta.isDirty && <FieldError errors={state.meta.errors} />}\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n};\n"],"mappings":"uXA2CA,MAAa,GAAkC,CAC7C,QACA,cACA,cACA,cAAc,aACd,UACA,aACA,mBAAmB,MACf,CACJ,IAAM,EAAK,EAAM,EACX,CAAE,OAAM,OAAM,QAAO,aAAY,gBAAiB,EAAuC,EAEzF,EAAe,EAAS,EAAK,OAAQ,CAAE,kBAAmB,CAAY,EAEtE,CAAC,EAAW,GAAgB,EAAkB,EAAK,EAEnD,EAAW,EAAM,KAAK,SAAW,EAAM,KAAK,WAAa,CAAC,EAAM,KAAK,QAErE,EAAmB,MAAkB,EAAa,GAAQ,CAAC,CAAI,EAAG,CAAC,CAAC,EAEpE,EAAW,GACd,CAAE,OAAQ,CAAE,YAAc,CACrB,GACJ,EAAa,GAAS,IAAI,CAC5B,EACA,CAAC,EAAc,CAAY,CAC7B,EAEA,OACE,EAAC,EAAD,CAAY,UAAU,eAAtB,SAAA,CACE,EAAC,EAAD,CAAO,eAAc,EAAuB,cAA5C,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAArB,SAAA,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,CACZ,CAAA,EAAA,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EACd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CACM,KACE,OACN,KAAM,EAAY,OAAS,WACd,cACb,MAAO,EAAM,OAAS,GACtB,eAAc,EACd,aAAa,eACb,OAAQ,EACE,UACX,CAAA,EAED,EAAC,SAAD,CACE,UAAU,kOACV,KAAK,SACL,QAAS,EACT,aAAY,EAAY,cAAgB,gBACxC,eAAc,EACd,gBAAe,EAEd,SAAY,EAAZ,EAAa,EAA8C,EAA/C,CAAY,KAAM,GAAI,cAAY,MAAQ,CAA2C,CAC5F,CAAA,EAER,EAAC,MAAD,CAAK,UAAU,6CACZ,SAAA,GAAoB,EAAM,KAAK,SAAW,EAAC,EAAD,CAAY,OAAQ,EAAM,KAAK,MAAS,CAAA,CAChF,CAAA,EACL,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,EAAa,SAAA,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,CACP,CAAA,EAAA,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./dist-CtTonIm8.mjs";import{Button as t}from"./ui/button.mjs";import{Paragraph as n}from"./typography/paragraph.mjs";import"./ui/skeleton.mjs";import{Flex as r}from"./layouts/flex.mjs";import{Tooltip as i,TooltipContent as a,TooltipProvider as o,TooltipTrigger as s}from"./ui/tooltip.mjs";import{Avatar as c,AvatarFallback as l}from"./ui/avatar.mjs";import{LunasLogo as u}from"./features/logo/index.mjs";import{DropdownMenu as d,DropdownMenuContent as f,DropdownMenuGroup as p,DropdownMenuItem as m,DropdownMenuLabel as h,DropdownMenuSeparator as g,DropdownMenuTrigger as _}from"./ui/dropdown-menu.mjs";import"./ui/input.mjs";import"./ui/separator.mjs";import{Sheet as v,SheetContent as y,SheetDescription as b,SheetHeader as x,SheetTitle as S}from"./ui/sheet.mjs";import{LogOutIcon as C,MenuIcon as w,ShoppingCartIcon as T,UserRoundIcon as E}from"lucide-react";import{createContext as D,useCallback as O,useContext as k,useEffect as A,useMemo as j,useState as M}from"react";import{cn as N}from"@customafk/react-toolkit/utils";import{cva as P}from"class-variance-authority";import{jsx as F,jsxs as I}from"react/jsx-runtime";import{colorHashLight as L}from"@customafk/react-toolkit/color-hash";import{useIsMobile as R}from"@customafk/react-toolkit/hooks/useMobile";const z=D(null);function B(){let e=k(z);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function V({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:i,children:a,...s}){let c=R(),[l,u]=M(!1),[d,f]=M(e),p=t??d,m=O(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,p]),h=O(()=>c?u(e=>!e):m(e=>!e),[c,m]);A(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h]);let g=p?`expanded`:`collapsed`,_=j(()=>({state:g,open:p,setOpen:m,isMobile:c,openMobile:l,setOpenMobile:u,toggleSidebar:h}),[g,p,m,c,l,h]);return F(z.Provider,{value:_,children:F(o,{delayDuration:0,children:F(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...i},className:N(`group/sidebar-wrapper flex h-dvh w-full`,r),...s,children:a})})})}function H({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o}){let{isMobile:s,state:c,openMobile:l,setOpenMobile:u,toggleSidebar:d}=B();return r===`none`?F(`aside`,{"data-slot":`sidebar`,className:N(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,i),...o,children:a}):s?F(v,{open:l,onOpenChange:u,...o,children:I(y,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[I(x,{className:`sr-only`,children:[F(S,{children:`Sidebar`}),F(b,{children:`Displays the mobile sidebar.`})]}),I(`div`,{className:`flex size-full flex-col`,children:[I(`div`,{className:`flex flex-0 items-center gap-x-2 border-border-weak border-b p-2 pr-4`,children:[I(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:N(`size-10 rounded-full`,i),onClick:e=>{d(),e.preventDefault(),e.stopPropagation()},children:[F(w,{className:`size-6!`}),F(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),F(`div`,{className:`ml-2 flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:F(T,{size:20})}),I(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[F(`span`,{className:`truncate font-medium`,children:`Lunas Store`}),F(`span`,{className:`truncate text-xs`,children:`Established 2023`})]})]}),F(`div`,{className:`flex flex-1 flex-col p-2`,children:a})]})]})}):I(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":c,"data-collapsible":c===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[F(`div`,{"data-slot":`sidebar-gap`,className:N(`relative`,`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) w-(--sidebar-width)`,`sm:h-[calc(var(--header-height)+0.5rem)]`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,n===`floating`||n===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),F(`div`,{"data-slot":`sidebar-container`,className:N(`hidden md:flex`,`fixed inset-y-0 top-14 z-10 shadow-nav`,`h-[calc(100dvh-3.5rem)] w-(--sidebar-width)`,`transition-[left,right,width] duration-200 ease-linear`,e===`left`&&`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`,e===`right`&&`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,n===`floating`||n===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,i),...o,children:F(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:N(`flex size-full flex-col`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:a})})]})}function U({className:e,children:t,...n}){return I(`main`,{"data-slot":`sidebar-inset`,className:N(`relative flex w-full flex-1 flex-col`,e),...n,children:[F(`div`,{className:`h-(--header-height) w-full sm:h-[calc(var(--header-height)+0.5rem)]`}),F(`div`,{className:`inset-shadow-sm flex-1`,children:t})]})}function W({className:e,...t}){return F(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:N(`flex flex-col gap-2 p-2`,e),...t})}function G({className:e,...t}){return F(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:N(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function K({className:e,...t}){return F(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:N(`relative flex w-full min-w-0 flex-col`,e),...t})}function q({className:t,asChild:n=!1,...r}){return F(n?e:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:N(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r})}function J({className:e,...t}){return F(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:N(`w-full text-sm`,e),...t})}function Y({className:e,...t}){return F(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:N(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function X({className:e,...t}){return F(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:N(`group/menu-item relative`,e),...t})}const Z=P([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,width,height,padding]`,`hover:bg-sidebar-accent`,`hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent`,`active:text-sidebar-accent-foreground`,`disabled:pointer-events-none`,`disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none`,`aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted`,`data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent`,`data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12!`,`group-data-[collapsible=icon]:p-3!`,`group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6`,`[&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function Q({asChild:t=!1,isActive:n=!1,variant:r=`default`,size:o=`default`,tooltip:c,className:l,...u}){let d=t?e:`button`,{isMobile:f,state:p}=B(),m=F(d,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":o,"data-active":n,className:N(Z({variant:r,size:o}),l),...u});return c?(typeof c==`string`&&(c={children:c}),I(i,{children:[F(s,{asChild:!0,children:m}),F(a,{side:`right`,align:`center`,hidden:p!==`collapsed`||f,...c})]})):m}const $=({uuid:e,username:t,email:i})=>I(r,{"data-slot":`user-display`,wrap:!1,gap:`sm`,padding:`none`,children:[F(c,{className:`size-9 shadow-card`,children:F(l,{style:{backgroundColor:L.hex(e)},children:F(E,{size:28,className:`text-white`})})}),I(r,{vertical:!0,padding:`none`,gap:`none`,align:`start`,className:`hidden sm:flex`,children:[F(n,{className:`text-sm font-medium text-text-positive`,children:t}),F(n,{variant:`sm`,className:`mt-0! text-xs text-text-positive-weak`,children:i})]})]}),ee=({user:e,isLogin:n=!0,onLogin:r,onLogout:i,logo:a})=>{let{toggleSidebar:o}=B(),s=O(e=>{e.preventDefault(),e.stopPropagation(),o()},[o]),c=O(e=>{e.preventDefault(),e.stopPropagation(),i?.()},[i]),l=O(e=>{e.preventDefault(),e.stopPropagation(),r?.()},[r]);return I(`header`,{"data-slot":`payment-layout-header`,className:N(`bg-card`,`h-[calc(var(--header-height)+0.5rem)] sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-2.5`,`flex items-center shadow-nav`,`transition-[width,height] ease-linear`),children:[n&&I(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`hidden size-10 rounded-full transition-all hover:text-text-positive md:flex`,onClick:s,children:[F(w,{className:`size-6!`}),F(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),F(`div`,{className:`flex flex-1 items-center sm:ml-2.5`,children:a??F(u,{variant:`horizontal`,size:`xs`})}),e?I(d,{children:[F(_,{asChild:!0,children:F(t,{variant:`ghost`,color:`muted`,className:`gap-x-2 rounded-full px-2 transition-all hover:text-text-positive`,children:F($,{uuid:e?.uuid??``,username:e.fullname,email:e.email})})}),I(f,{align:`end`,className:`w-56`,children:[I(h,{className:`font-normal`,children:[F(`p`,{className:`font-medium`,children:e.fullname}),F(`p`,{className:`text-muted-foreground text-xs`,children:e.email})]}),F(g,{}),F(p,{children:I(m,{onClick:c,children:[F(C,{size:14}),`Đăng xuất`]})})]})]}):F(t,{size:`sm`,onClick:l,children:`Đăng nhập`})]})},te=({items:e,activeNavItemId:t})=>{let{isMobile:n}=B();return!n||e.length===0?null:F(`nav`,{"data-slot":`mobile-bottom-nav`,className:`fixed inset-x-0 bottom-0 z-20 flex h-16 items-stretch border-border border-t bg-card md:hidden`,children:e.slice(0,5).map(e=>I(`button`,{type:`button`,onClick:e.onClick,"data-active":e.id===t,className:N(`flex flex-1 flex-col items-center justify-center gap-0.5`,`text-muted-foreground transition-colors`,`data-[active=true]:text-sidebar-primary`,`[&>svg]:size-5 [&>svg]:shrink-0`),children:[e.icon,F(`span`,{className:`max-w-16 truncate text-[10px] leading-3`,children:e.label})]},e.id))})},ne=({activeNavItemId:e,sidebar:t,user:n,isLogin:r=!0,onLogin:i,onLogout:a,children:o})=>{let s=j(()=>t?.groupcontent||[],[t]),c=j(()=>s.flatMap(e=>e.items),[s]);return I(V,{children:[F(ee,{user:n,isLogin:r,onLogin:i,onLogout:a}),r&&I(H,{variant:`inset`,collapsible:`icon`,children:[F(G,{children:s.map(t=>I(K,{children:[F(q,{children:t.label}),F(J,{children:F(Y,{children:t.items.map(t=>F(X,{children:I(Q,{isActive:t.id===e,onClick:e=>{t.onClick?.(),e.preventDefault(),e.stopPropagation()},children:[t.icon,t.label]})},t.id))})})]},t.id))}),F(W,{children:F(Y,{children:F(X,{className:`mt-2 border-t border-t-border`,children:F(`p`,{className:`pt-2 text-center text-muted-foreground text-xs`,children:`Copyright © 2025, Lunas.`})})})})]}),F(U,{children:F(`section`,{className:`relative size-full`,children:F(`div`,{className:N(`absolute inset-0 overflow-y-auto`,r&&`pb-16 md:pb-0`),children:o})})}),r&&F(te,{items:c,activeNavItemId:e})]})};export{ne as t};
2
- //# sourceMappingURL=payment-layout-BSl9DYQA.mjs.map
1
+ import{t as e}from"./dist-CtTonIm8.mjs";import{Button as t}from"./ui/button.mjs";import{Paragraph as n}from"./typography/paragraph.mjs";import"./ui/skeleton.mjs";import{Flex as r}from"./layouts/flex.mjs";import{Tooltip as i,TooltipContent as a,TooltipProvider as o,TooltipTrigger as s}from"./ui/tooltip.mjs";import{Avatar as c,AvatarFallback as l}from"./ui/avatar.mjs";import{LunasLogo as u}from"./features/logo/index.mjs";import"./ui/input.mjs";import{DropdownMenu as d,DropdownMenuContent as f,DropdownMenuGroup as p,DropdownMenuItem as m,DropdownMenuLabel as h,DropdownMenuSeparator as g,DropdownMenuTrigger as _}from"./ui/dropdown-menu.mjs";import"./ui/separator.mjs";import{Sheet as v,SheetContent as y,SheetDescription as b,SheetHeader as x,SheetTitle as S}from"./ui/sheet.mjs";import{LogOutIcon as C,MenuIcon as w,ShoppingCartIcon as T,UserRoundIcon as E}from"lucide-react";import{createContext as D,useCallback as O,useContext as k,useEffect as A,useMemo as j,useState as M}from"react";import{cn as N}from"@customafk/react-toolkit/utils";import{cva as P}from"class-variance-authority";import{jsx as F,jsxs as I}from"react/jsx-runtime";import{colorHashLight as L}from"@customafk/react-toolkit/color-hash";import{useIsMobile as R}from"@customafk/react-toolkit/hooks/useMobile";const z=D(null);function B(){let e=k(z);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function V({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:i,children:a,...s}){let c=R(),[l,u]=M(!1),[d,f]=M(e),p=t??d,m=O(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,p]),h=O(()=>c?u(e=>!e):m(e=>!e),[c,m]);A(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h]);let g=p?`expanded`:`collapsed`,_=j(()=>({state:g,open:p,setOpen:m,isMobile:c,openMobile:l,setOpenMobile:u,toggleSidebar:h}),[g,p,m,c,l,h]);return F(z.Provider,{value:_,children:F(o,{delayDuration:0,children:F(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...i},className:N(`group/sidebar-wrapper flex h-dvh w-full`,r),...s,children:a})})})}function H({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o}){let{isMobile:s,state:c,openMobile:l,setOpenMobile:u,toggleSidebar:d}=B();return r===`none`?F(`aside`,{"data-slot":`sidebar`,className:N(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,i),...o,children:a}):s?F(v,{open:l,onOpenChange:u,...o,children:I(y,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[I(x,{className:`sr-only`,children:[F(S,{children:`Sidebar`}),F(b,{children:`Displays the mobile sidebar.`})]}),I(`div`,{className:`flex size-full flex-col`,children:[I(`div`,{className:`flex flex-0 items-center gap-x-2 border-border-weak border-b p-2 pr-4`,children:[I(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:N(`size-10 rounded-full`,i),onClick:e=>{d(),e.preventDefault(),e.stopPropagation()},children:[F(w,{className:`size-6!`}),F(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),F(`div`,{className:`ml-2 flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:F(T,{size:20})}),I(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[F(`span`,{className:`truncate font-medium`,children:`Lunas Store`}),F(`span`,{className:`truncate text-xs`,children:`Established 2023`})]})]}),F(`div`,{className:`flex flex-1 flex-col p-2`,children:a})]})]})}):I(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":c,"data-collapsible":c===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[F(`div`,{"data-slot":`sidebar-gap`,className:N(`relative`,`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) w-(--sidebar-width)`,`sm:h-[calc(var(--header-height)+0.5rem)]`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,n===`floating`||n===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),F(`div`,{"data-slot":`sidebar-container`,className:N(`hidden md:flex`,`fixed inset-y-0 top-14 z-10 shadow-nav`,`h-[calc(100dvh-3.5rem)] w-(--sidebar-width)`,`transition-[left,right,width] duration-200 ease-linear`,e===`left`&&`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`,e===`right`&&`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,n===`floating`||n===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,i),...o,children:F(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:N(`flex size-full flex-col`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:a})})]})}function U({className:e,children:t,...n}){return I(`main`,{"data-slot":`sidebar-inset`,className:N(`relative flex w-full flex-1 flex-col`,e),...n,children:[F(`div`,{className:`h-(--header-height) w-full sm:h-[calc(var(--header-height)+0.5rem)]`}),F(`div`,{className:`inset-shadow-sm flex-1`,children:t})]})}function W({className:e,...t}){return F(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:N(`flex flex-col gap-2 p-2`,e),...t})}function G({className:e,...t}){return F(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:N(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function K({className:e,...t}){return F(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:N(`relative flex w-full min-w-0 flex-col`,e),...t})}function q({className:t,asChild:n=!1,...r}){return F(n?e:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:N(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r})}function J({className:e,...t}){return F(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:N(`w-full text-sm`,e),...t})}function Y({className:e,...t}){return F(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:N(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function X({className:e,...t}){return F(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:N(`group/menu-item relative`,e),...t})}const Z=P([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,width,height,padding]`,`hover:bg-sidebar-accent`,`hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent`,`active:text-sidebar-accent-foreground`,`disabled:pointer-events-none`,`disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none`,`aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted`,`data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent`,`data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12!`,`group-data-[collapsible=icon]:p-3!`,`group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6`,`[&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function Q({asChild:t=!1,isActive:n=!1,variant:r=`default`,size:o=`default`,tooltip:c,className:l,...u}){let d=t?e:`button`,{isMobile:f,state:p}=B(),m=F(d,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":o,"data-active":n,className:N(Z({variant:r,size:o}),l),...u});return c?(typeof c==`string`&&(c={children:c}),I(i,{children:[F(s,{asChild:!0,children:m}),F(a,{side:`right`,align:`center`,hidden:p!==`collapsed`||f,...c})]})):m}const $=({uuid:e,username:t,email:i})=>I(r,{"data-slot":`user-display`,wrap:!1,gap:`sm`,padding:`none`,children:[F(c,{className:`size-9 shadow-card`,children:F(l,{style:{backgroundColor:L.hex(e)},children:F(E,{size:28,className:`text-white`})})}),I(r,{vertical:!0,padding:`none`,gap:`none`,align:`start`,className:`hidden sm:flex`,children:[F(n,{className:`text-sm font-medium text-text-positive`,children:t}),F(n,{variant:`sm`,className:`mt-0! text-xs text-text-positive-weak`,children:i})]})]}),ee=({user:e,isLogin:n=!0,onLogin:r,onLogout:i,logo:a})=>{let{toggleSidebar:o}=B(),s=O(e=>{e.preventDefault(),e.stopPropagation(),o()},[o]),c=O(e=>{e.preventDefault(),e.stopPropagation(),i?.()},[i]),l=O(e=>{e.preventDefault(),e.stopPropagation(),r?.()},[r]);return I(`header`,{"data-slot":`payment-layout-header`,className:N(`bg-card`,`h-[calc(var(--header-height)+0.5rem)] sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-2.5`,`flex items-center shadow-nav`,`transition-[width,height] ease-linear`),children:[n&&I(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`hidden size-10 rounded-full transition-all hover:text-text-positive md:flex`,onClick:s,children:[F(w,{className:`size-6!`}),F(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),F(`div`,{className:`flex flex-1 items-center sm:ml-2.5`,children:a??F(u,{variant:`horizontal`,size:`xs`})}),e?I(d,{children:[F(_,{asChild:!0,children:F(t,{variant:`ghost`,color:`muted`,className:`gap-x-2 rounded-full px-2 transition-all hover:text-text-positive`,children:F($,{uuid:e?.uuid??``,username:e.fullname,email:e.email})})}),I(f,{align:`end`,className:`w-56`,children:[I(h,{className:`font-normal`,children:[F(`p`,{className:`font-medium`,children:e.fullname}),F(`p`,{className:`text-muted-foreground text-xs`,children:e.email})]}),F(g,{}),F(p,{children:I(m,{onClick:c,children:[F(C,{size:14}),`Đăng xuất`]})})]})]}):F(t,{size:`sm`,onClick:l,children:`Đăng nhập`})]})},te=({items:e,activeNavItemId:t})=>{let{isMobile:n}=B();return!n||e.length===0?null:F(`nav`,{"data-slot":`mobile-bottom-nav`,className:`fixed inset-x-0 bottom-0 z-20 flex h-16 items-stretch border-border border-t bg-card md:hidden`,children:e.slice(0,5).map(e=>I(`button`,{type:`button`,onClick:e.onClick,"data-active":e.id===t,className:N(`flex flex-1 flex-col items-center justify-center gap-0.5`,`text-muted-foreground transition-colors`,`data-[active=true]:text-sidebar-primary`,`[&>svg]:size-5 [&>svg]:shrink-0`),children:[e.icon,F(`span`,{className:`max-w-16 truncate text-[10px] leading-3`,children:e.label})]},e.id))})},ne=({activeNavItemId:e,sidebar:t,user:n,isLogin:r=!0,onLogin:i,onLogout:a,children:o})=>{let s=j(()=>t?.groupcontent||[],[t]),c=j(()=>s.flatMap(e=>e.items),[s]);return I(V,{children:[F(ee,{user:n,isLogin:r,onLogin:i,onLogout:a}),r&&I(H,{variant:`inset`,collapsible:`icon`,children:[F(G,{children:s.map(t=>I(K,{children:[F(q,{children:t.label}),F(J,{children:F(Y,{children:t.items.map(t=>F(X,{children:I(Q,{isActive:t.id===e,onClick:e=>{t.onClick?.(),e.preventDefault(),e.stopPropagation()},children:[t.icon,t.label]})},t.id))})})]},t.id))}),F(W,{children:F(Y,{children:F(X,{className:`mt-2 border-t border-t-border`,children:F(`p`,{className:`pt-2 text-center text-muted-foreground text-xs`,children:`Copyright © 2025, Lunas.`})})})})]}),F(U,{children:F(`section`,{className:`relative size-full`,children:F(`div`,{className:N(`absolute inset-0 overflow-y-auto`,r&&`pb-16 md:pb-0`),children:o})})}),r&&F(te,{items:c,activeNavItemId:e})]})};export{ne as t};
2
+ //# sourceMappingURL=payment-layout--b7bhmR1.mjs.map