@customafk/lunas-ui 0.2.64 → 0.2.66

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 (772) hide show
  1. package/dist/FeatureDeveloping-zuTTDIh_.d.cts +41 -0
  2. package/dist/FeatureDeveloping-zuTTDIh_.d.mts +41 -0
  3. package/dist/FeatureFixing-DYQlgHPk.d.cts +41 -0
  4. package/dist/FeatureFixing-DYQlgHPk.d.mts +41 -0
  5. package/dist/LoginPage-vMXvwtxf.d.cts +53 -0
  6. package/dist/LoginPage-vMXvwtxf.d.mts +53 -0
  7. package/dist/NotAuthorized-CZIQ6EaA.d.cts +41 -0
  8. package/dist/NotAuthorized-CZIQ6EaA.d.mts +41 -0
  9. package/dist/NotFound-CRSKxhV8.d.cts +41 -0
  10. package/dist/NotFound-CRSKxhV8.d.mts +41 -0
  11. package/dist/RegisterPage-BBtpEzvL.d.cts +50 -0
  12. package/dist/RegisterPage-BBtpEzvL.d.mts +50 -0
  13. package/dist/VerifyEmailPage-CsmIeYLu.d.cts +62 -0
  14. package/dist/VerifyEmailPage-CsmIeYLu.d.mts +62 -0
  15. package/dist/action-submit-42PxGLsR.cjs +2 -0
  16. package/dist/action-submit-42PxGLsR.cjs.map +1 -0
  17. package/dist/action-submit-SviPJW3i.mjs +2 -0
  18. package/dist/action-submit-SviPJW3i.mjs.map +1 -0
  19. package/dist/actions-form-Bo46j_dH.cjs +2 -0
  20. package/dist/actions-form-Bo46j_dH.cjs.map +1 -0
  21. package/dist/actions-form-QdAsKwcQ.mjs +2 -0
  22. package/dist/actions-form-QdAsKwcQ.mjs.map +1 -0
  23. package/dist/activity-heatmap-chart-DufvFndI.mjs +2 -0
  24. package/dist/activity-heatmap-chart-DufvFndI.mjs.map +1 -0
  25. package/dist/activity-heatmap-chart-gDcvIAK_.cjs +2 -0
  26. package/dist/activity-heatmap-chart-gDcvIAK_.cjs.map +1 -0
  27. package/dist/add-new-DkBwXh0Q.d.cts +16 -0
  28. package/dist/add-new-DkBwXh0Q.d.mts +16 -0
  29. package/dist/alert-dialog-Cdhz7jSj.d.cts +88 -0
  30. package/dist/alert-dialog-Cdhz7jSj.d.mts +88 -0
  31. package/dist/analysis-panel-DzsZKA9l.cjs +2 -0
  32. package/dist/analysis-panel-DzsZKA9l.cjs.map +1 -0
  33. package/dist/analysis-panel-ikcRtzG9.mjs +2 -0
  34. package/dist/analysis-panel-ikcRtzG9.mjs.map +1 -0
  35. package/dist/aspect-ratio-huscluwJ.d.cts +22 -0
  36. package/dist/aspect-ratio-huscluwJ.d.mts +22 -0
  37. package/dist/avatar-BpeFwSkQ.d.cts +33 -0
  38. package/dist/avatar-BpeFwSkQ.d.mts +33 -0
  39. package/dist/avatar-name-display-BrpnTqa_.mjs +2 -0
  40. package/dist/avatar-name-display-BrpnTqa_.mjs.map +1 -0
  41. package/dist/avatar-name-display-CLi1DJUs.cjs +2 -0
  42. package/dist/avatar-name-display-CLi1DJUs.cjs.map +1 -0
  43. package/dist/{badge-D0InQSvM.d.cts → badge-MRT40pxM.d.cts} +3 -3
  44. package/dist/{badge-D0InQSvM.d.mts → badge-MRT40pxM.d.mts} +3 -3
  45. package/dist/badge-display-9WXwgQgH.cjs +2 -0
  46. package/dist/badge-display-9WXwgQgH.cjs.map +1 -0
  47. package/dist/badge-display-Dx-dITLB.mjs +2 -0
  48. package/dist/badge-display-Dx-dITLB.mjs.map +1 -0
  49. package/dist/boolean-display-OVCtvzI1.mjs +2 -0
  50. package/dist/boolean-display-OVCtvzI1.mjs.map +1 -0
  51. package/dist/boolean-display-pmzYS-ND.cjs +2 -0
  52. package/dist/boolean-display-pmzYS-ND.cjs.map +1 -0
  53. package/dist/breadcrumb-CSpScKZm.d.cts +69 -0
  54. package/dist/breadcrumb-CSpScKZm.d.mts +69 -0
  55. package/dist/{button-DIqm3YRo.d.cts → button-Bk4Y6_9I.d.cts} +3 -3
  56. package/dist/{button-DIqm3YRo.d.mts → button-Bk4Y6_9I.d.mts} +3 -3
  57. package/dist/button-group-Cd5m5G3p.d.mts +48 -0
  58. package/dist/button-group-CiKhLVCg.d.cts +48 -0
  59. package/dist/calendar-DPKt7D3w.d.mts +43 -0
  60. package/dist/calendar-stv2bJv0.d.cts +43 -0
  61. package/dist/candlestick-chart-CiBiCU3y.mjs +2 -0
  62. package/dist/candlestick-chart-CiBiCU3y.mjs.map +1 -0
  63. package/dist/candlestick-chart-CqmRkfXj.cjs +2 -0
  64. package/dist/candlestick-chart-CqmRkfXj.cjs.map +1 -0
  65. package/dist/card-DOnx7RKz.d.cts +60 -0
  66. package/dist/card-DOnx7RKz.d.mts +60 -0
  67. package/dist/card-form-BR5kDTzB.cjs +2 -0
  68. package/dist/card-form-BR5kDTzB.cjs.map +1 -0
  69. package/dist/card-form-D9fNO-6F.mjs +2 -0
  70. package/dist/card-form-D9fNO-6F.mjs.map +1 -0
  71. package/dist/cards/grid-product-card.d.cts +2 -30
  72. package/dist/cards/grid-product-card.d.mts +2 -30
  73. package/dist/cards/product-card.d.cts +2 -30
  74. package/dist/cards/product-card.d.mts +2 -30
  75. package/dist/cards/simple-card.d.cts +2 -29
  76. package/dist/cards/simple-card.d.mts +2 -29
  77. package/dist/carousel-CV3IZ96x.d.mts +70 -0
  78. package/dist/carousel-c2XuzmYN.d.cts +70 -0
  79. package/dist/chart-sYFksFMk.d.cts +80 -0
  80. package/dist/chart-sYFksFMk.d.mts +80 -0
  81. package/dist/checkbox-XfLNnG0S.d.cts +24 -0
  82. package/dist/checkbox-XfLNnG0S.d.mts +24 -0
  83. package/dist/checkbox-field-B1vCz-Wf.cjs +2 -0
  84. package/dist/checkbox-field-B1vCz-Wf.cjs.map +1 -0
  85. package/dist/checkbox-field-FqCe38_D.mjs +2 -0
  86. package/dist/checkbox-field-FqCe38_D.mjs.map +1 -0
  87. package/dist/{cms-layout-SubgSF72.cjs → cms-layout-CGGJqbr0.cjs} +2 -2
  88. package/dist/{cms-layout-SubgSF72.cjs.map → cms-layout-CGGJqbr0.cjs.map} +1 -1
  89. package/dist/{cms-layout-CuF5ahpj.mjs → cms-layout-ePySxIQN.mjs} +2 -2
  90. package/dist/{cms-layout-CuF5ahpj.mjs.map → cms-layout-ePySxIQN.mjs.map} +1 -1
  91. package/dist/collapsible-liIHmFuw.d.cts +32 -0
  92. package/dist/collapsible-liIHmFuw.d.mts +32 -0
  93. package/dist/combobox-field-D6fiCcvU.mjs +2 -0
  94. package/dist/combobox-field-D6fiCcvU.mjs.map +1 -0
  95. package/dist/combobox-field-DLpH6J9H.cjs +2 -0
  96. package/dist/combobox-field-DLpH6J9H.cjs.map +1 -0
  97. package/dist/command-Bb6SneVI.d.mts +87 -0
  98. package/dist/command-CHSJVU9o.d.cts +87 -0
  99. package/dist/confirm-dialog-B8Vu0z8S.d.cts +142 -0
  100. package/dist/confirm-dialog-B8Vu0z8S.d.mts +142 -0
  101. package/dist/container-form-BdsEX0NH.mjs +2 -0
  102. package/dist/container-form-BdsEX0NH.mjs.map +1 -0
  103. package/dist/container-form-CxxUYctk.cjs +2 -0
  104. package/dist/container-form-CxxUYctk.cjs.map +1 -0
  105. package/dist/context-menu-BOlGSuep.d.cts +123 -0
  106. package/dist/context-menu-BOlGSuep.d.mts +123 -0
  107. package/dist/conversion-funnel-chart-CW_zDfKS.mjs +2 -0
  108. package/dist/conversion-funnel-chart-CW_zDfKS.mjs.map +1 -0
  109. package/dist/conversion-funnel-chart-r2m2QbiQ.cjs +2 -0
  110. package/dist/conversion-funnel-chart-r2m2QbiQ.cjs.map +1 -0
  111. package/dist/correlation-scatter-chart-Djtt7NU7.mjs +2 -0
  112. package/dist/correlation-scatter-chart-Djtt7NU7.mjs.map +1 -0
  113. package/dist/correlation-scatter-chart-HF48YUIB.cjs +2 -0
  114. package/dist/correlation-scatter-chart-HF48YUIB.cjs.map +1 -0
  115. package/dist/country-C8QijcHF.d.mts +21 -0
  116. package/dist/country-CJIaO0I7.d.cts +21 -0
  117. package/dist/currency-display-B91H66HM.cjs +2 -0
  118. package/dist/currency-display-B91H66HM.cjs.map +1 -0
  119. package/dist/currency-display-BN1i8jnU.mjs +2 -0
  120. package/dist/currency-display-BN1i8jnU.mjs.map +1 -0
  121. package/dist/data-display/country.d.cts +2 -21
  122. package/dist/data-display/country.d.mts +2 -21
  123. package/dist/data-display/data-list.d.cts +2 -38
  124. package/dist/data-display/data-list.d.mts +2 -38
  125. package/dist/data-display/date-tooltip.d.cts +2 -18
  126. package/dist/data-display/date-tooltip.d.mts +2 -18
  127. package/dist/data-display/date.d.cts +2 -39
  128. package/dist/data-display/date.d.mts +2 -39
  129. package/dist/data-display/empty.d.cts +2 -19
  130. package/dist/data-display/empty.d.mts +2 -19
  131. package/dist/data-display/name.d.cts +2 -18
  132. package/dist/data-display/name.d.mts +2 -18
  133. package/dist/data-display/phone-number.d.cts +2 -18
  134. package/dist/data-display/phone-number.d.mts +2 -18
  135. package/dist/data-display/role-badge.d.cts +2 -21
  136. package/dist/data-display/role-badge.d.mts +2 -21
  137. package/dist/data-display/statistic.d.cts +2 -45
  138. package/dist/data-display/statistic.d.mts +2 -45
  139. package/dist/data-display/user.d.cts +2 -20
  140. package/dist/data-display/user.d.mts +2 -20
  141. package/dist/data-list-Cg510z2m.d.cts +38 -0
  142. package/dist/data-list-Cg510z2m.d.mts +38 -0
  143. package/dist/date-KANPBbN4.d.cts +39 -0
  144. package/dist/date-KANPBbN4.d.mts +39 -0
  145. package/dist/date-display-BWtvWDHK.mjs +2 -0
  146. package/dist/date-display-BWtvWDHK.mjs.map +1 -0
  147. package/dist/date-display-odcC9NcB.cjs +2 -0
  148. package/dist/date-display-odcC9NcB.cjs.map +1 -0
  149. package/dist/date-field-Cxbrc0Vl.mjs +2 -0
  150. package/dist/date-field-Cxbrc0Vl.mjs.map +1 -0
  151. package/dist/date-field-RvEB9F1r.cjs +2 -0
  152. package/dist/date-field-RvEB9F1r.cjs.map +1 -0
  153. package/dist/date-tooltip-DptxGOj_.d.cts +18 -0
  154. package/dist/date-tooltip-DptxGOj_.d.mts +18 -0
  155. package/dist/description-display-BubAcFan.mjs +2 -0
  156. package/dist/description-display-BubAcFan.mjs.map +1 -0
  157. package/dist/description-display-CKe0j3q-.cjs +2 -0
  158. package/dist/description-display-CKe0j3q-.cjs.map +1 -0
  159. package/dist/dialog-form-C0W5C0u9.mjs +2 -0
  160. package/dist/dialog-form-C0W5C0u9.mjs.map +1 -0
  161. package/dist/dialog-form-CkNCwzWG.cjs +2 -0
  162. package/dist/dialog-form-CkNCwzWG.cjs.map +1 -0
  163. package/dist/dialogs/confirm-dialog.cjs +1 -1
  164. package/dist/dialogs/confirm-dialog.cjs.map +1 -1
  165. package/dist/dialogs/confirm-dialog.d.cts +2 -142
  166. package/dist/dialogs/confirm-dialog.d.mts +2 -142
  167. package/dist/dialogs/confirm-dialog.mjs +1 -1
  168. package/dist/dialogs/confirm-dialog.mjs.map +1 -1
  169. package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
  170. package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +1 -1
  171. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +50 -38
  172. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +50 -38
  173. package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
  174. package/dist/dialogs/detail-dialog/components/sidebar.mjs.map +1 -1
  175. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  176. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  177. package/dist/dialogs/detail-dialog/index.d.cts +2 -36
  178. package/dist/dialogs/detail-dialog/index.d.mts +2 -36
  179. package/dist/dialogs/detail-dialog/index.mjs +1 -1
  180. package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
  181. package/dist/dialogs/error-dialog.d.cts +2 -22
  182. package/dist/dialogs/error-dialog.d.mts +2 -22
  183. package/dist/dialogs/loading-dialog.d.cts +2 -19
  184. package/dist/dialogs/loading-dialog.d.mts +2 -19
  185. package/dist/donut-chart-CsPPKy0G.cjs +2 -0
  186. package/dist/donut-chart-CsPPKy0G.cjs.map +1 -0
  187. package/dist/donut-chart-eKZjuzW0.mjs +2 -0
  188. package/dist/donut-chart-eKZjuzW0.mjs.map +1 -0
  189. package/dist/drawer-Dwx99ff3.d.cts +70 -0
  190. package/dist/drawer-Dwx99ff3.d.mts +70 -0
  191. package/dist/dropdown-menu-CcMccVns.d.cts +125 -0
  192. package/dist/dropdown-menu-CcMccVns.d.mts +125 -0
  193. package/dist/edit-button-0_FLZoT3.cjs +2 -0
  194. package/dist/edit-button-0_FLZoT3.cjs.map +1 -0
  195. package/dist/edit-button-DmMFMzG0.mjs +2 -0
  196. package/dist/edit-button-DmMFMzG0.mjs.map +1 -0
  197. package/dist/edit-qfS5kOtM.d.cts +16 -0
  198. package/dist/edit-qfS5kOtM.d.mts +16 -0
  199. package/dist/email-display-BLt60GQ1.cjs +2 -0
  200. package/dist/email-display-BLt60GQ1.cjs.map +1 -0
  201. package/dist/email-display-CMme47S9.mjs +2 -0
  202. package/dist/email-display-CMme47S9.mjs.map +1 -0
  203. package/dist/email-field-BErx3liY.cjs +2 -0
  204. package/dist/email-field-BErx3liY.cjs.map +1 -0
  205. package/dist/email-field-BtcdBWL4.mjs +2 -0
  206. package/dist/email-field-BtcdBWL4.mjs.map +1 -0
  207. package/dist/empty-CaNJjp05.d.cts +65 -0
  208. package/dist/empty-CaNJjp05.d.mts +65 -0
  209. package/dist/empty-ClQptIZH.d.cts +19 -0
  210. package/dist/empty-ClQptIZH.d.mts +19 -0
  211. package/dist/error-dialog-D4jOPhmw.d.cts +22 -0
  212. package/dist/error-dialog-D4jOPhmw.d.mts +22 -0
  213. package/dist/features/charts/index.cjs +1 -1
  214. package/dist/features/charts/index.cjs.map +1 -1
  215. package/dist/features/charts/index.d.cts +2 -904
  216. package/dist/features/charts/index.d.mts +2 -904
  217. package/dist/features/charts/index.mjs +1 -1
  218. package/dist/features/charts/index.mjs.map +1 -1
  219. package/dist/features/descriptions/index.cjs +1 -1
  220. package/dist/features/descriptions/index.cjs.map +1 -1
  221. package/dist/features/descriptions/index.d.cts +2 -231
  222. package/dist/features/descriptions/index.d.mts +2 -231
  223. package/dist/features/descriptions/index.mjs +1 -1
  224. package/dist/features/descriptions/index.mjs.map +1 -1
  225. package/dist/features/search-modal/index.d.cts +2 -14
  226. package/dist/features/search-modal/index.d.mts +2 -14
  227. package/dist/features/tables/index.cjs +1 -1
  228. package/dist/features/tables/index.d.cts +2 -2
  229. package/dist/features/tables/index.d.mts +2 -2
  230. package/dist/features/tables/index.mjs +1 -1
  231. package/dist/features/tanstack-form/index.cjs +1 -1
  232. package/dist/features/tanstack-form/index.d.cts +1 -1
  233. package/dist/features/tanstack-form/index.d.mts +1 -1
  234. package/dist/features/tanstack-form/index.mjs +1 -1
  235. package/dist/features/text-editor/index.cjs +1 -1
  236. package/dist/features/text-editor/index.d.cts +1 -1
  237. package/dist/features/text-editor/index.d.mts +1 -1
  238. package/dist/features/text-editor/index.mjs +1 -1
  239. package/dist/field-BKyUqvzh.mjs +2 -0
  240. package/dist/field-BKyUqvzh.mjs.map +1 -0
  241. package/dist/field-BV5twmKA.cjs +2 -0
  242. package/dist/field-BV5twmKA.cjs.map +1 -0
  243. package/dist/file-uploader-U64lH0zG.d.cts +101 -0
  244. package/dist/file-uploader-U64lH0zG.d.mts +101 -0
  245. package/dist/filter-CMzD5h0M.mjs +2 -0
  246. package/dist/filter-CMzD5h0M.mjs.map +1 -0
  247. package/dist/filter-Cmg6SHMu.cjs +2 -0
  248. package/dist/filter-Cmg6SHMu.cjs.map +1 -0
  249. package/dist/flex-CT71VV-I.d.cts +114 -0
  250. package/dist/flex-CT71VV-I.d.mts +114 -0
  251. package/dist/form-CMP15S4r.d.cts +109 -0
  252. package/dist/form-CMP15S4r.d.mts +109 -0
  253. package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs +2 -0
  254. package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs.map +1 -0
  255. package/dist/gain-loss-bar-chart-FUzN7DxF.cjs +2 -0
  256. package/dist/gain-loss-bar-chart-FUzN7DxF.cjs.map +1 -0
  257. package/dist/google-Bl-jBW8L.d.cts +48 -0
  258. package/dist/google-Bl-jBW8L.d.mts +48 -0
  259. package/dist/grid-i7Oz2Izf.d.cts +19 -0
  260. package/dist/grid-i7Oz2Izf.d.mts +19 -0
  261. package/dist/grid-product-card-bpADqDOQ.d.cts +30 -0
  262. package/dist/grid-product-card-bpADqDOQ.d.mts +30 -0
  263. package/dist/group-field-0kStiX8n.cjs +2 -0
  264. package/dist/group-field-0kStiX8n.cjs.map +1 -0
  265. package/dist/group-field-bviEXmo4.mjs +2 -0
  266. package/dist/group-field-bviEXmo4.mjs.map +1 -0
  267. package/dist/hover-card-Prwm-0Q4.d.cts +35 -0
  268. package/dist/hover-card-Prwm-0Q4.d.mts +35 -0
  269. package/dist/image-Cln0r7Eb.d.cts +27 -0
  270. package/dist/image-Cln0r7Eb.d.mts +27 -0
  271. package/dist/{index-CGpGIM1H.d.cts → index-BRE7tL8d.d.cts} +121 -500
  272. package/dist/index-C2HFO3a9.d.mts +231 -0
  273. package/dist/index-C9eXmnvk.d.cts +36 -0
  274. package/dist/index-C9eXmnvk.d.mts +36 -0
  275. package/dist/index-CBntsHIg.d.cts +520 -0
  276. package/dist/index-CBntsHIg.d.mts +520 -0
  277. package/dist/{index-DOaKN0wJ.d.cts → index-D9bKlLiM.d.cts} +2 -22
  278. package/dist/{index-DOaKN0wJ.d.mts → index-D9bKlLiM.d.mts} +2 -22
  279. package/dist/{index-C2KjuFXQ.d.cts → index-DDROD2y9.d.cts} +596 -1117
  280. package/dist/{index-C2KjuFXQ.d.mts → index-DDROD2y9.d.mts} +596 -1117
  281. package/dist/index-DJiiPHPf.d.cts +59 -0
  282. package/dist/index-DJiiPHPf.d.mts +59 -0
  283. package/dist/index-DtIL69PB.d.cts +14 -0
  284. package/dist/index-DtIL69PB.d.mts +14 -0
  285. package/dist/{index-DueBB0rP.d.mts → index-DvoLzsh0.d.mts} +121 -500
  286. package/dist/index-fZChR7MS.d.cts +231 -0
  287. package/dist/index.cjs +1 -1
  288. package/dist/index.d.cts +92 -92
  289. package/dist/index.d.mts +92 -92
  290. package/dist/index.mjs +1 -1
  291. package/dist/indexed-performance-line-chart-CT79KOM6.cjs +2 -0
  292. package/dist/indexed-performance-line-chart-CT79KOM6.cjs.map +1 -0
  293. package/dist/indexed-performance-line-chart-D7F-rIMv.mjs +2 -0
  294. package/dist/indexed-performance-line-chart-D7F-rIMv.mjs.map +1 -0
  295. package/dist/{input-BJMvABEL.d.cts → input-BieGEIDf.d.cts} +2 -2
  296. package/dist/{input-BJMvABEL.d.mts → input-BieGEIDf.d.mts} +2 -2
  297. package/dist/input-otp-6hJfhBHX.d.cts +56 -0
  298. package/dist/input-otp-6hJfhBHX.d.mts +56 -0
  299. package/dist/item-DTR2f2CX.d.cts +99 -0
  300. package/dist/item-cIhkI3ZI.d.mts +99 -0
  301. package/dist/label-DPG_GY7h.d.cts +22 -0
  302. package/dist/label-DPG_GY7h.d.mts +22 -0
  303. package/dist/layouts/cms-layout/index.cjs +1 -1
  304. package/dist/layouts/cms-layout/index.mjs +1 -1
  305. package/dist/layouts/flex.d.cts +2 -114
  306. package/dist/layouts/flex.d.mts +2 -114
  307. package/dist/layouts/grid.d.cts +2 -19
  308. package/dist/layouts/grid.d.mts +2 -19
  309. package/dist/layouts/payment-layout/index.cjs +1 -1
  310. package/dist/layouts/payment-layout/index.d.cts +2 -59
  311. package/dist/layouts/payment-layout/index.d.mts +2 -59
  312. package/dist/layouts/payment-layout/index.mjs +1 -1
  313. package/dist/list-display-BuRCso6J.mjs +2 -0
  314. package/dist/list-display-BuRCso6J.mjs.map +1 -0
  315. package/dist/list-display-DEU6yFa9.cjs +2 -0
  316. package/dist/list-display-DEU6yFa9.cjs.map +1 -0
  317. package/dist/loading-dialog-C73EJx9s.d.cts +19 -0
  318. package/dist/loading-dialog-C73EJx9s.d.mts +19 -0
  319. package/dist/menubar-CFrn3S96.d.cts +133 -0
  320. package/dist/menubar-CFrn3S96.d.mts +133 -0
  321. package/dist/metric-radar-chart-6LTGQHsL.mjs +2 -0
  322. package/dist/metric-radar-chart-6LTGQHsL.mjs.map +1 -0
  323. package/dist/metric-radar-chart-DwgbXgJX.cjs +2 -0
  324. package/dist/metric-radar-chart-DwgbXgJX.cjs.map +1 -0
  325. package/dist/mirrored-bar-chart-BT7AYPJB.mjs +2 -0
  326. package/dist/mirrored-bar-chart-BT7AYPJB.mjs.map +1 -0
  327. package/dist/mirrored-bar-chart-BwjtExjh.cjs +2 -0
  328. package/dist/mirrored-bar-chart-BwjtExjh.cjs.map +1 -0
  329. package/dist/more-button-BKBcXz6E.mjs +2 -0
  330. package/dist/more-button-BKBcXz6E.mjs.map +1 -0
  331. package/dist/more-button-RYvZgYiu.cjs +2 -0
  332. package/dist/more-button-RYvZgYiu.cjs.map +1 -0
  333. package/dist/multi-select-BbiKgAYs.d.cts +116 -0
  334. package/dist/multi-select-BoBHt_Z9.d.mts +116 -0
  335. package/dist/name-7aoM5rAW.d.cts +18 -0
  336. package/dist/name-7aoM5rAW.d.mts +18 -0
  337. package/dist/name-display-B6X52ip_.cjs +2 -0
  338. package/dist/name-display-B6X52ip_.cjs.map +1 -0
  339. package/dist/name-display-DXMZ8Lug.mjs +2 -0
  340. package/dist/name-display-DXMZ8Lug.mjs.map +1 -0
  341. package/dist/navigation-menu-B1BY9Zll.d.cts +73 -0
  342. package/dist/navigation-menu-B1BY9Zll.d.mts +73 -0
  343. package/dist/number-field-BjVjf6s4.mjs +2 -0
  344. package/dist/number-field-BjVjf6s4.mjs.map +1 -0
  345. package/dist/number-field-DmKh7bbY.cjs +2 -0
  346. package/dist/number-field-DmKh7bbY.cjs.map +1 -0
  347. package/dist/number-input-CqkegUWs.mjs +2 -0
  348. package/dist/number-input-CqkegUWs.mjs.map +1 -0
  349. package/dist/number-input-kTh9zzr7.cjs +2 -0
  350. package/dist/number-input-kTh9zzr7.cjs.map +1 -0
  351. package/dist/orders-bar-chart-9RmtP6In.cjs +2 -0
  352. package/dist/orders-bar-chart-9RmtP6In.cjs.map +1 -0
  353. package/dist/orders-bar-chart-DQhJGmwY.mjs +2 -0
  354. package/dist/orders-bar-chart-DQhJGmwY.mjs.map +1 -0
  355. package/dist/pages/FeatureDeveloping.d.cts +2 -41
  356. package/dist/pages/FeatureDeveloping.d.mts +2 -41
  357. package/dist/pages/FeatureFixing.d.cts +2 -41
  358. package/dist/pages/FeatureFixing.d.mts +2 -41
  359. package/dist/pages/LoginPage.cjs +1 -1
  360. package/dist/pages/LoginPage.cjs.map +1 -1
  361. package/dist/pages/LoginPage.d.cts +2 -53
  362. package/dist/pages/LoginPage.d.mts +2 -53
  363. package/dist/pages/LoginPage.mjs +1 -1
  364. package/dist/pages/LoginPage.mjs.map +1 -1
  365. package/dist/pages/NotAuthorized.d.cts +2 -41
  366. package/dist/pages/NotAuthorized.d.mts +2 -41
  367. package/dist/pages/NotFound.d.cts +2 -41
  368. package/dist/pages/NotFound.d.mts +2 -41
  369. package/dist/pages/RegisterPage.cjs +1 -1
  370. package/dist/pages/RegisterPage.cjs.map +1 -1
  371. package/dist/pages/RegisterPage.d.cts +2 -50
  372. package/dist/pages/RegisterPage.d.mts +2 -50
  373. package/dist/pages/RegisterPage.mjs +1 -1
  374. package/dist/pages/RegisterPage.mjs.map +1 -1
  375. package/dist/pages/VerifyEmailPage.d.cts +2 -62
  376. package/dist/pages/VerifyEmailPage.d.mts +2 -62
  377. package/dist/pagination-B2fyP0J2.d.cts +64 -0
  378. package/dist/pagination-DY0PBCnI.d.mts +64 -0
  379. package/dist/paragraph-BTmvVS1S.d.mts +46 -0
  380. package/dist/paragraph-DbYYv0A0.d.cts +46 -0
  381. package/dist/password-field-C5FsQUa8.mjs +2 -0
  382. package/dist/password-field-C5FsQUa8.mjs.map +1 -0
  383. package/dist/password-field-gHYDiXWY.cjs +2 -0
  384. package/dist/password-field-gHYDiXWY.cjs.map +1 -0
  385. package/dist/payment-layout-Cb-Q8KD2.cjs +2 -0
  386. package/dist/{payment-layout-BLrXT-oc.cjs.map → payment-layout-Cb-Q8KD2.cjs.map} +1 -1
  387. package/dist/{payment-layout-Dsz6wYT1.mjs → payment-layout-DS5CEH1h.mjs} +2 -2
  388. package/dist/{payment-layout-Dsz6wYT1.mjs.map → payment-layout-DS5CEH1h.mjs.map} +1 -1
  389. package/dist/permalink-CZ3g9daG.mjs +2 -0
  390. package/dist/permalink-CZ3g9daG.mjs.map +1 -0
  391. package/dist/permalink-DeeEKhfc.cjs +2 -0
  392. package/dist/permalink-DeeEKhfc.cjs.map +1 -0
  393. package/dist/phone-number-6b_pkGI1.d.cts +18 -0
  394. package/dist/phone-number-6b_pkGI1.d.mts +18 -0
  395. package/dist/phone-number-C43z68gT.mjs +2 -0
  396. package/dist/phone-number-C43z68gT.mjs.map +1 -0
  397. package/dist/phone-number-DhThJwd6.cjs +2 -0
  398. package/dist/phone-number-DhThJwd6.cjs.map +1 -0
  399. package/dist/popover-CdOCi0xg.d.cts +50 -0
  400. package/dist/popover-CdOCi0xg.d.mts +50 -0
  401. package/dist/popover-form-B2taDBAh.mjs +2 -0
  402. package/dist/popover-form-B2taDBAh.mjs.map +1 -0
  403. package/dist/popover-form-_hQQpfAB.cjs +2 -0
  404. package/dist/popover-form-_hQQpfAB.cjs.map +1 -0
  405. package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs +2 -0
  406. package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs.map +1 -0
  407. package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs +2 -0
  408. package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs.map +1 -0
  409. package/dist/price-range-area-chart-BW6RQb_9.cjs +2 -0
  410. package/dist/price-range-area-chart-BW6RQb_9.cjs.map +1 -0
  411. package/dist/price-range-area-chart-Dy01mhWJ.mjs +2 -0
  412. package/dist/price-range-area-chart-Dy01mhWJ.mjs.map +1 -0
  413. package/dist/product-card-CvXLXbpV.d.cts +30 -0
  414. package/dist/product-card-CvXLXbpV.d.mts +30 -0
  415. package/dist/progress-Bp-5keO8.d.cts +21 -0
  416. package/dist/progress-Bp-5keO8.d.mts +21 -0
  417. package/dist/progress-display-Bp0xVhln.cjs +2 -0
  418. package/dist/progress-display-Bp0xVhln.cjs.map +1 -0
  419. package/dist/progress-display-DYj7vAe9.mjs +2 -0
  420. package/dist/progress-display-DYj7vAe9.mjs.map +1 -0
  421. package/dist/radio-group-field-McpjpLW-.cjs +2 -0
  422. package/dist/radio-group-field-McpjpLW-.cjs.map +1 -0
  423. package/dist/radio-group-field-ZqMrf9Dx.mjs +2 -0
  424. package/dist/radio-group-field-ZqMrf9Dx.mjs.map +1 -0
  425. package/dist/radio-group-ycQQrPGn.d.cts +35 -0
  426. package/dist/radio-group-ycQQrPGn.d.mts +35 -0
  427. package/dist/refresh-BiyrZAXL.d.cts +16 -0
  428. package/dist/refresh-BiyrZAXL.d.mts +16 -0
  429. package/dist/remove-button-B3qFw-M5.cjs +2 -0
  430. package/dist/remove-button-B3qFw-M5.cjs.map +1 -0
  431. package/dist/remove-button-Db5oSj4h.mjs +2 -0
  432. package/dist/remove-button-Db5oSj4h.mjs.map +1 -0
  433. package/dist/{resizable-BLfxHCf4.d.cts → resizable-CAyWR1At.d.cts} +2 -2
  434. package/dist/{resizable-BLfxHCf4.d.mts → resizable-CAyWR1At.d.mts} +2 -2
  435. package/dist/revenue-area-chart-BwzeTRzD.mjs +2 -0
  436. package/dist/revenue-area-chart-BwzeTRzD.mjs.map +1 -0
  437. package/dist/revenue-area-chart-w2FZCl_7.cjs +2 -0
  438. package/dist/revenue-area-chart-w2FZCl_7.cjs.map +1 -0
  439. package/dist/revenue-orders-composed-chart-BttOWYGt.cjs +2 -0
  440. package/dist/revenue-orders-composed-chart-BttOWYGt.cjs.map +1 -0
  441. package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs +2 -0
  442. package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs.map +1 -0
  443. package/dist/role-badge-Bl4Rimpk.d.mts +21 -0
  444. package/dist/role-badge-IdZW0tsN.d.cts +21 -0
  445. package/dist/sales-target-radial-chart-BFLxBT2m.mjs +2 -0
  446. package/dist/sales-target-radial-chart-BFLxBT2m.mjs.map +1 -0
  447. package/dist/sales-target-radial-chart-BoxSk7hW.cjs +2 -0
  448. package/dist/sales-target-radial-chart-BoxSk7hW.cjs.map +1 -0
  449. package/dist/sankey-flow-chart-CDUqIRMZ.cjs +2 -0
  450. package/dist/sankey-flow-chart-CDUqIRMZ.cjs.map +1 -0
  451. package/dist/sankey-flow-chart-bQ3Dffet.mjs +2 -0
  452. package/dist/sankey-flow-chart-bQ3Dffet.mjs.map +1 -0
  453. package/dist/scroll-area-PbkqIAaH.d.cts +35 -0
  454. package/dist/scroll-area-PbkqIAaH.d.mts +35 -0
  455. package/dist/search-input-Bq4enQzR.d.cts +27 -0
  456. package/dist/search-input-D51_mAY-.d.mts +27 -0
  457. package/dist/section-form-B9iTs2we.cjs +2 -0
  458. package/dist/section-form-B9iTs2we.cjs.map +1 -0
  459. package/dist/section-form-B_AZr7jZ.mjs +2 -0
  460. package/dist/section-form-B_AZr7jZ.mjs.map +1 -0
  461. package/dist/select-B5j4WvPM.d.cts +74 -0
  462. package/dist/select-B5j4WvPM.d.mts +74 -0
  463. package/dist/select-field-DG8sQ5iN.cjs +2 -0
  464. package/dist/select-field-DG8sQ5iN.cjs.map +1 -0
  465. package/dist/select-field-Kq5iQCRQ.mjs +2 -0
  466. package/dist/select-field-Kq5iQCRQ.mjs.map +1 -0
  467. package/dist/separator-BlNAFSJv.mjs +2 -0
  468. package/dist/separator-BlNAFSJv.mjs.map +1 -0
  469. package/dist/separator-D6_fMJtM.d.cts +32 -0
  470. package/dist/separator-D6_fMJtM.d.mts +32 -0
  471. package/dist/separator-sBz__BXC.cjs +2 -0
  472. package/dist/separator-sBz__BXC.cjs.map +1 -0
  473. package/dist/sheet-cHLLSvvt.d.cts +66 -0
  474. package/dist/sheet-cHLLSvvt.d.mts +66 -0
  475. package/dist/sidebar-core-Bh0dZXsm.mjs +2 -0
  476. package/dist/sidebar-core-Bh0dZXsm.mjs.map +1 -0
  477. package/dist/sidebar-core-DQE6ymo4.cjs +2 -0
  478. package/dist/sidebar-core-DQE6ymo4.cjs.map +1 -0
  479. package/dist/simple-array-field-4paKpxXk.cjs +2 -0
  480. package/dist/simple-array-field-4paKpxXk.cjs.map +1 -0
  481. package/dist/simple-array-field-C5XdemXa.mjs +2 -0
  482. package/dist/simple-array-field-C5XdemXa.mjs.map +1 -0
  483. package/dist/simple-boolean-field-B9T_fHk9.cjs +2 -0
  484. package/dist/simple-boolean-field-B9T_fHk9.cjs.map +1 -0
  485. package/dist/simple-boolean-field-DpJ-fSQk.mjs +2 -0
  486. package/dist/simple-boolean-field-DpJ-fSQk.mjs.map +1 -0
  487. package/dist/simple-card-6P377r4A.d.cts +29 -0
  488. package/dist/simple-card-6P377r4A.d.mts +29 -0
  489. package/dist/simple-combobox-field-Ch4SBHCH.mjs +2 -0
  490. package/dist/simple-combobox-field-Ch4SBHCH.mjs.map +1 -0
  491. package/dist/simple-combobox-field-ChMKk7xp.cjs +2 -0
  492. package/dist/simple-combobox-field-ChMKk7xp.cjs.map +1 -0
  493. package/dist/simple-date-field-BGGlsHzG.cjs +2 -0
  494. package/dist/simple-date-field-BGGlsHzG.cjs.map +1 -0
  495. package/dist/simple-date-field-CVKqIrEs.mjs +2 -0
  496. package/dist/simple-date-field-CVKqIrEs.mjs.map +1 -0
  497. package/dist/simple-email-field-98w0846B.mjs +2 -0
  498. package/dist/simple-email-field-98w0846B.mjs.map +1 -0
  499. package/dist/simple-email-field-DYqCWprP.cjs +2 -0
  500. package/dist/simple-email-field-DYqCWprP.cjs.map +1 -0
  501. package/dist/simple-number-field-otvv2xq-.cjs +2 -0
  502. package/dist/simple-number-field-otvv2xq-.cjs.map +1 -0
  503. package/dist/simple-number-field-zF3oqS8d.mjs +2 -0
  504. package/dist/simple-number-field-zF3oqS8d.mjs.map +1 -0
  505. package/dist/simple-password-field-CuC10c70.mjs +2 -0
  506. package/dist/simple-password-field-CuC10c70.mjs.map +1 -0
  507. package/dist/simple-password-field-D2UMmghM.cjs +2 -0
  508. package/dist/simple-password-field-D2UMmghM.cjs.map +1 -0
  509. package/dist/simple-radio-group-field-C2DDfIUs.cjs +2 -0
  510. package/dist/simple-radio-group-field-C2DDfIUs.cjs.map +1 -0
  511. package/dist/simple-radio-group-field-CfziNlLf.mjs +2 -0
  512. package/dist/simple-radio-group-field-CfziNlLf.mjs.map +1 -0
  513. package/dist/simple-select-field-CeNnXUHN.cjs +2 -0
  514. package/dist/simple-select-field-CeNnXUHN.cjs.map +1 -0
  515. package/dist/simple-select-field-DIaxhi1-.mjs +2 -0
  516. package/dist/simple-select-field-DIaxhi1-.mjs.map +1 -0
  517. package/dist/simple-text-field-D8jyznSd.mjs +2 -0
  518. package/dist/simple-text-field-D8jyznSd.mjs.map +1 -0
  519. package/dist/simple-text-field-LYWVIAfQ.cjs +2 -0
  520. package/dist/simple-text-field-LYWVIAfQ.cjs.map +1 -0
  521. package/dist/simple-textarea-field-DcEvaizE.cjs +2 -0
  522. package/dist/simple-textarea-field-DcEvaizE.cjs.map +1 -0
  523. package/dist/simple-textarea-field-p9qX_n7m.mjs +2 -0
  524. package/dist/simple-textarea-field-p9qX_n7m.mjs.map +1 -0
  525. package/dist/skeleton-Ct4sYEKk.d.cts +24 -0
  526. package/dist/skeleton-Ct4sYEKk.d.mts +24 -0
  527. package/dist/slider-DwR1MhR8.d.cts +24 -0
  528. package/dist/slider-DwR1MhR8.d.mts +24 -0
  529. package/dist/sonner-B6LxJMYT.d.mts +22 -0
  530. package/dist/sonner-BcNgR0GP.d.cts +22 -0
  531. package/dist/sparkline-chart-TbGzakUl.mjs +2 -0
  532. package/dist/sparkline-chart-TbGzakUl.mjs.map +1 -0
  533. package/dist/sparkline-chart-sPqaJHep.cjs +2 -0
  534. package/dist/sparkline-chart-sPqaJHep.cjs.map +1 -0
  535. package/dist/spinner-CXuqcoB5.d.cts +22 -0
  536. package/dist/spinner-CXuqcoB5.d.mts +22 -0
  537. package/dist/stacked-area-chart-DyxY96_l.cjs +2 -0
  538. package/dist/stacked-area-chart-DyxY96_l.cjs.map +1 -0
  539. package/dist/stacked-area-chart-UIWIxTmq.mjs +2 -0
  540. package/dist/stacked-area-chart-UIWIxTmq.mjs.map +1 -0
  541. package/dist/statistic-8zBJMdRa.d.cts +45 -0
  542. package/dist/statistic-8zBJMdRa.d.mts +45 -0
  543. package/dist/statistic-BUGIRhL9.cjs +2 -0
  544. package/dist/statistic-BUGIRhL9.cjs.map +1 -0
  545. package/dist/statistic-Ug9Zgi3N.mjs +2 -0
  546. package/dist/statistic-Ug9Zgi3N.mjs.map +1 -0
  547. package/dist/status-display-B-6KKttX.mjs +2 -0
  548. package/dist/status-display-B-6KKttX.mjs.map +1 -0
  549. package/dist/status-display-DkI9UwAu.cjs +2 -0
  550. package/dist/status-display-DkI9UwAu.cjs.map +1 -0
  551. package/dist/submit-button-CGBaPzE9.mjs +2 -0
  552. package/dist/submit-button-CGBaPzE9.mjs.map +1 -0
  553. package/dist/submit-button-CvINfld5.cjs +2 -0
  554. package/dist/submit-button-CvINfld5.cjs.map +1 -0
  555. package/dist/summary-bar-CZHeAORf.mjs +2 -0
  556. package/dist/summary-bar-CZHeAORf.mjs.map +1 -0
  557. package/dist/summary-bar-DTFVpBZn.cjs +2 -0
  558. package/dist/summary-bar-DTFVpBZn.cjs.map +1 -0
  559. package/dist/switch-9v4AYqJb.d.cts +24 -0
  560. package/dist/switch-9v4AYqJb.d.mts +24 -0
  561. package/dist/switch-field-CIoNsRWN.mjs +2 -0
  562. package/dist/switch-field-CIoNsRWN.mjs.map +1 -0
  563. package/dist/switch-field-n6a5SaEM.cjs +2 -0
  564. package/dist/switch-field-n6a5SaEM.cjs.map +1 -0
  565. package/dist/systems/google.d.cts +2 -48
  566. package/dist/systems/google.d.mts +2 -48
  567. package/dist/table-Dg2D0v87.d.cts +70 -0
  568. package/dist/table-Dg2D0v87.d.mts +70 -0
  569. package/dist/tables-7aC9WFs9.cjs +2 -0
  570. package/dist/tables-7aC9WFs9.cjs.map +1 -0
  571. package/dist/tables-UikqnT9q.mjs +2 -0
  572. package/dist/tables-UikqnT9q.mjs.map +1 -0
  573. package/dist/tabs-CJ6qZcFU.d.cts +42 -0
  574. package/dist/tabs-CJ6qZcFU.d.mts +42 -0
  575. package/dist/tanstack-form-CNrZQZhn.cjs +2 -0
  576. package/dist/tanstack-form-CNrZQZhn.cjs.map +1 -0
  577. package/dist/tanstack-form-PC9YNeeo.mjs +2 -0
  578. package/dist/tanstack-form-PC9YNeeo.mjs.map +1 -0
  579. package/dist/text-editor-BYE2-G5K.mjs +2 -0
  580. package/dist/text-editor-BYE2-G5K.mjs.map +1 -0
  581. package/dist/text-editor-CfQk5dIx.cjs +2 -0
  582. package/dist/text-editor-CfQk5dIx.cjs.map +1 -0
  583. package/dist/text-editor-field-fso-sw29.mjs +2 -0
  584. package/dist/text-editor-field-fso-sw29.mjs.map +1 -0
  585. package/dist/text-editor-field-gas5r-xy.cjs +2 -0
  586. package/dist/text-editor-field-gas5r-xy.cjs.map +1 -0
  587. package/dist/text-field-B67oTV62.mjs +2 -0
  588. package/dist/text-field-B67oTV62.mjs.map +1 -0
  589. package/dist/text-field-BMo-8rsq.cjs +2 -0
  590. package/dist/text-field-BMo-8rsq.cjs.map +1 -0
  591. package/dist/textarea-C8ZIZh-y.d.cts +26 -0
  592. package/dist/textarea-C8ZIZh-y.d.mts +26 -0
  593. package/dist/textarea-field-BUGcITwp.cjs +2 -0
  594. package/dist/textarea-field-BUGcITwp.cjs.map +1 -0
  595. package/dist/textarea-field-D70rGYIk.mjs +2 -0
  596. package/dist/textarea-field-D70rGYIk.mjs.map +1 -0
  597. package/dist/title-BT9guhSU.d.cts +41 -0
  598. package/dist/title-BT9guhSU.d.mts +41 -0
  599. package/dist/title-field-84EnHPvl.mjs +2 -0
  600. package/dist/title-field-84EnHPvl.mjs.map +1 -0
  601. package/dist/title-field-CKxwzMOM.cjs +2 -0
  602. package/dist/title-field-CKxwzMOM.cjs.map +1 -0
  603. package/dist/toggle-Bh4EazxT.d.cts +30 -0
  604. package/dist/toggle-Bh4EazxT.d.mts +30 -0
  605. package/dist/toggle-button-DNLtfjJC.mjs +2 -0
  606. package/dist/toggle-button-DNLtfjJC.mjs.map +1 -0
  607. package/dist/toggle-button-Dq78v8cH.cjs +2 -0
  608. package/dist/toggle-button-Dq78v8cH.cjs.map +1 -0
  609. package/dist/toggle-group-BpqkL1ds.d.cts +37 -0
  610. package/dist/toggle-group-DzNE38v5.d.mts +37 -0
  611. package/dist/tooltip-B-yLj6pe.mjs +4 -0
  612. package/dist/tooltip-B-yLj6pe.mjs.map +1 -0
  613. package/dist/tooltip-D4U-RhIu.d.cts +53 -0
  614. package/dist/tooltip-D4U-RhIu.d.mts +53 -0
  615. package/dist/tooltip-octglTPf.cjs +4 -0
  616. package/dist/tooltip-octglTPf.cjs.map +1 -0
  617. package/dist/top-products-bar-chart-5EJFSkeo.cjs +2 -0
  618. package/dist/top-products-bar-chart-5EJFSkeo.cjs.map +1 -0
  619. package/dist/top-products-bar-chart-CKYaOGWT.mjs +2 -0
  620. package/dist/top-products-bar-chart-CKYaOGWT.mjs.map +1 -0
  621. package/dist/trash-BfWSqlL4.d.cts +16 -0
  622. package/dist/trash-BfWSqlL4.d.mts +16 -0
  623. package/dist/typography/paragraph.d.cts +2 -46
  624. package/dist/typography/paragraph.d.mts +2 -46
  625. package/dist/typography/title.d.cts +2 -41
  626. package/dist/typography/title.d.mts +2 -41
  627. package/dist/ui/alert-dialog.d.cts +2 -88
  628. package/dist/ui/alert-dialog.d.mts +2 -88
  629. package/dist/ui/aspect-ratio.d.cts +2 -22
  630. package/dist/ui/aspect-ratio.d.mts +2 -22
  631. package/dist/ui/avatar.d.cts +2 -33
  632. package/dist/ui/avatar.d.mts +2 -33
  633. package/dist/ui/badge.cjs +1 -1
  634. package/dist/ui/badge.cjs.map +1 -1
  635. package/dist/ui/badge.d.cts +1 -1
  636. package/dist/ui/badge.d.mts +1 -1
  637. package/dist/ui/badge.mjs +1 -1
  638. package/dist/ui/badge.mjs.map +1 -1
  639. package/dist/ui/breadcrumb.d.cts +2 -69
  640. package/dist/ui/breadcrumb.d.mts +2 -69
  641. package/dist/ui/button-group.d.cts +2 -48
  642. package/dist/ui/button-group.d.mts +2 -48
  643. package/dist/ui/button.d.cts +1 -1
  644. package/dist/ui/button.d.mts +1 -1
  645. package/dist/ui/buttons/add-new.d.cts +2 -16
  646. package/dist/ui/buttons/add-new.d.mts +2 -16
  647. package/dist/ui/buttons/edit.d.cts +2 -16
  648. package/dist/ui/buttons/edit.d.mts +2 -16
  649. package/dist/ui/buttons/refresh.d.cts +2 -16
  650. package/dist/ui/buttons/refresh.d.mts +2 -16
  651. package/dist/ui/buttons/trash.d.cts +2 -16
  652. package/dist/ui/buttons/trash.d.mts +2 -16
  653. package/dist/ui/buttons/upload-image.d.cts +2 -23
  654. package/dist/ui/buttons/upload-image.d.mts +2 -23
  655. package/dist/ui/calendar.d.cts +2 -43
  656. package/dist/ui/calendar.d.mts +2 -43
  657. package/dist/ui/card.d.cts +2 -60
  658. package/dist/ui/card.d.mts +2 -60
  659. package/dist/ui/carousel.d.cts +2 -70
  660. package/dist/ui/carousel.d.mts +2 -70
  661. package/dist/ui/chart.d.cts +2 -80
  662. package/dist/ui/chart.d.mts +2 -80
  663. package/dist/ui/checkbox.d.cts +2 -24
  664. package/dist/ui/checkbox.d.mts +2 -24
  665. package/dist/ui/collapsible.d.cts +2 -32
  666. package/dist/ui/collapsible.d.mts +2 -32
  667. package/dist/ui/command.d.cts +2 -87
  668. package/dist/ui/command.d.mts +2 -87
  669. package/dist/ui/context-menu.d.cts +2 -123
  670. package/dist/ui/context-menu.d.mts +2 -123
  671. package/dist/ui/drawer.d.cts +2 -70
  672. package/dist/ui/drawer.d.mts +2 -70
  673. package/dist/ui/dropdown-menu.d.cts +2 -125
  674. package/dist/ui/dropdown-menu.d.mts +2 -125
  675. package/dist/ui/empty.d.cts +2 -65
  676. package/dist/ui/empty.d.mts +2 -65
  677. package/dist/ui/field.d.cts +1 -1
  678. package/dist/ui/field.d.mts +1 -1
  679. package/dist/ui/file-uploader.d.cts +2 -101
  680. package/dist/ui/file-uploader.d.mts +2 -101
  681. package/dist/ui/form.d.cts +2 -109
  682. package/dist/ui/form.d.mts +2 -109
  683. package/dist/ui/hover-card.d.cts +2 -35
  684. package/dist/ui/hover-card.d.mts +2 -35
  685. package/dist/ui/image.d.cts +2 -27
  686. package/dist/ui/image.d.mts +2 -27
  687. package/dist/ui/input-otp.d.cts +2 -56
  688. package/dist/ui/input-otp.d.mts +2 -56
  689. package/dist/ui/input.d.cts +1 -1
  690. package/dist/ui/input.d.mts +1 -1
  691. package/dist/ui/inputs/search-input.d.cts +2 -27
  692. package/dist/ui/inputs/search-input.d.mts +2 -27
  693. package/dist/ui/item.d.cts +2 -99
  694. package/dist/ui/item.d.mts +2 -99
  695. package/dist/ui/label.d.cts +2 -22
  696. package/dist/ui/label.d.mts +2 -22
  697. package/dist/ui/menubar.d.cts +2 -133
  698. package/dist/ui/menubar.d.mts +2 -133
  699. package/dist/ui/multi-select.d.cts +2 -116
  700. package/dist/ui/multi-select.d.mts +2 -116
  701. package/dist/ui/navigation-menu.d.cts +2 -73
  702. package/dist/ui/navigation-menu.d.mts +2 -73
  703. package/dist/ui/pagination.d.cts +2 -64
  704. package/dist/ui/pagination.d.mts +2 -64
  705. package/dist/ui/popover.d.cts +2 -50
  706. package/dist/ui/popover.d.mts +2 -50
  707. package/dist/ui/progress.d.cts +2 -21
  708. package/dist/ui/progress.d.mts +2 -21
  709. package/dist/ui/radio-group.d.cts +2 -35
  710. package/dist/ui/radio-group.d.mts +2 -35
  711. package/dist/ui/resizable.d.cts +1 -1
  712. package/dist/ui/resizable.d.mts +1 -1
  713. package/dist/ui/scroll-area.d.cts +2 -35
  714. package/dist/ui/scroll-area.d.mts +2 -35
  715. package/dist/ui/select.d.cts +2 -74
  716. package/dist/ui/select.d.mts +2 -74
  717. package/dist/ui/separator.d.cts +2 -32
  718. package/dist/ui/separator.d.mts +2 -32
  719. package/dist/ui/sheet.d.cts +2 -66
  720. package/dist/ui/sheet.d.mts +2 -66
  721. package/dist/ui/skeleton.d.cts +2 -24
  722. package/dist/ui/skeleton.d.mts +2 -24
  723. package/dist/ui/slider.d.cts +2 -24
  724. package/dist/ui/slider.d.mts +2 -24
  725. package/dist/ui/sonner.d.cts +2 -22
  726. package/dist/ui/sonner.d.mts +2 -22
  727. package/dist/ui/spinner.d.cts +2 -22
  728. package/dist/ui/spinner.d.mts +2 -22
  729. package/dist/ui/switch.d.cts +2 -24
  730. package/dist/ui/switch.d.mts +2 -24
  731. package/dist/ui/table.d.cts +2 -70
  732. package/dist/ui/table.d.mts +2 -70
  733. package/dist/ui/tabs.d.cts +2 -42
  734. package/dist/ui/tabs.d.mts +2 -42
  735. package/dist/ui/textarea.d.cts +2 -26
  736. package/dist/ui/textarea.d.mts +2 -26
  737. package/dist/ui/toggle-group.d.cts +2 -37
  738. package/dist/ui/toggle-group.d.mts +2 -37
  739. package/dist/ui/toggle.d.cts +2 -30
  740. package/dist/ui/toggle.d.mts +2 -30
  741. package/dist/ui/tooltip.d.cts +2 -53
  742. package/dist/ui/tooltip.d.mts +2 -53
  743. package/dist/upload-image-D4VZU3IA.d.cts +23 -0
  744. package/dist/upload-image-D4VZU3IA.d.mts +23 -0
  745. package/dist/user-BymzvsYp.mjs +2 -0
  746. package/dist/user-BymzvsYp.mjs.map +1 -0
  747. package/dist/user-CvesQf42.d.cts +20 -0
  748. package/dist/user-CvesQf42.d.mts +20 -0
  749. package/dist/user-Dn53Fu5q.cjs +2 -0
  750. package/dist/user-Dn53Fu5q.cjs.map +1 -0
  751. package/dist/volume-bar-chart-BRpC_8-X.mjs +2 -0
  752. package/dist/volume-bar-chart-BRpC_8-X.mjs.map +1 -0
  753. package/dist/volume-bar-chart-CRxZPZIn.cjs +2 -0
  754. package/dist/volume-bar-chart-CRxZPZIn.cjs.map +1 -0
  755. package/dist/waterfall-chart-CTB2f5eh.cjs +2 -0
  756. package/dist/waterfall-chart-CTB2f5eh.cjs.map +1 -0
  757. package/dist/waterfall-chart-DwetaJFJ.mjs +2 -0
  758. package/dist/waterfall-chart-DwetaJFJ.mjs.map +1 -0
  759. package/package.json +1 -5
  760. package/dist/payment-layout-BLrXT-oc.cjs +0 -2
  761. package/dist/tables-B0Jl8Osc.cjs +0 -4
  762. package/dist/tables-B0Jl8Osc.cjs.map +0 -1
  763. package/dist/tables-Cylalxey.mjs +0 -4
  764. package/dist/tables-Cylalxey.mjs.map +0 -1
  765. package/dist/tanstack-form-BMVn8ai_.cjs +0 -2
  766. package/dist/tanstack-form-BMVn8ai_.cjs.map +0 -1
  767. package/dist/tanstack-form-DTCgWGCA.mjs +0 -2
  768. package/dist/tanstack-form-DTCgWGCA.mjs.map +0 -1
  769. package/dist/text-editor-BQtIXOpM.mjs +0 -2
  770. package/dist/text-editor-BQtIXOpM.mjs.map +0 -1
  771. package/dist/text-editor-DJYQXXtP.cjs +0 -2
  772. package/dist/text-editor-DJYQXXtP.cjs.map +0 -1
@@ -1,20 +1,2 @@
1
- //#region packages/components/data-display/user.d.ts
2
- type UserDataDisplayProps = {
3
- /** Unique identifier used to deterministically generate the avatar background colour. */uuid: string; /** Display name rendered as the primary line of the user card. */
4
- username: string; /** Email address rendered as the secondary, muted line below the username. */
5
- email: string;
6
- };
7
- /**
8
- * Displays a user identity card with a colour-hashed avatar, username, and email address.
9
- *
10
- * @example
11
- * ```tsx
12
- * import { UserDataDisplay } from '@customafk/lunas-ui/data-display/user';
13
- *
14
- * <UserDataDisplay uuid="abc-123" username="Nguyễn Văn An" email="an@example.com" />
15
- * ```
16
- */
17
- declare const UserDataDisplay: React.FC<UserDataDisplayProps>;
18
- //#endregion
19
- export { UserDataDisplay };
20
- //# sourceMappingURL=user.d.mts.map
1
+ import { t as UserDataDisplay } from "../user-CvesQf42.mjs";
2
+ export { UserDataDisplay };
@@ -0,0 +1,38 @@
1
+ //#region packages/components/data-display/data-list.d.ts
2
+ type DataListProps = {
3
+ /** Additional CSS classes applied to the wrapping container. */className?: string;
4
+ };
5
+ /**
6
+ * A vertical container that stacks `DataListItem` rows with consistent spacing.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { DataList, DataListItem } from '@customafk/lunas-ui/data-display/data-list';
11
+ *
12
+ * <DataList>
13
+ * <DataListItem label="Status" value="Active" />
14
+ * <DataListItem label="Created" value="2024-01-15" />
15
+ * </DataList>
16
+ * ```
17
+ */
18
+ declare const DataList: React.FC<React.PropsWithChildren<DataListProps>>;
19
+ type DataListItemProps = {
20
+ /** Descriptive label shown to the left of (or above, on mobile) the value. */label: string; /** The value to display; accepts strings, numbers, or arbitrary React nodes. */
21
+ value: string | number | React.ReactNode; /** Minimum width applied to the label column. Defaults to `'120px'`. */
22
+ minLabelWidth?: string; /** Additional CSS classes applied to the row container. */
23
+ className?: string;
24
+ };
25
+ /**
26
+ * A single label–value row inside a `DataList`, responsive to mobile (stacks vertically) and desktop (inline) layouts.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * import { DataListItem } from '@customafk/lunas-ui/data-display/data-list';
31
+ *
32
+ * <DataListItem label="Email" value="user@example.com" />
33
+ * ```
34
+ */
35
+ declare const DataListItem: React.FC<DataListItemProps>;
36
+ //#endregion
37
+ export { DataListItem as n, DataList as t };
38
+ //# sourceMappingURL=data-list-Cg510z2m.d.cts.map
@@ -0,0 +1,38 @@
1
+ //#region packages/components/data-display/data-list.d.ts
2
+ type DataListProps = {
3
+ /** Additional CSS classes applied to the wrapping container. */className?: string;
4
+ };
5
+ /**
6
+ * A vertical container that stacks `DataListItem` rows with consistent spacing.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { DataList, DataListItem } from '@customafk/lunas-ui/data-display/data-list';
11
+ *
12
+ * <DataList>
13
+ * <DataListItem label="Status" value="Active" />
14
+ * <DataListItem label="Created" value="2024-01-15" />
15
+ * </DataList>
16
+ * ```
17
+ */
18
+ declare const DataList: React.FC<React.PropsWithChildren<DataListProps>>;
19
+ type DataListItemProps = {
20
+ /** Descriptive label shown to the left of (or above, on mobile) the value. */label: string; /** The value to display; accepts strings, numbers, or arbitrary React nodes. */
21
+ value: string | number | React.ReactNode; /** Minimum width applied to the label column. Defaults to `'120px'`. */
22
+ minLabelWidth?: string; /** Additional CSS classes applied to the row container. */
23
+ className?: string;
24
+ };
25
+ /**
26
+ * A single label–value row inside a `DataList`, responsive to mobile (stacks vertically) and desktop (inline) layouts.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * import { DataListItem } from '@customafk/lunas-ui/data-display/data-list';
31
+ *
32
+ * <DataListItem label="Email" value="user@example.com" />
33
+ * ```
34
+ */
35
+ declare const DataListItem: React.FC<DataListItemProps>;
36
+ //#endregion
37
+ export { DataListItem as n, DataList as t };
38
+ //# sourceMappingURL=data-list-Cg510z2m.d.mts.map
@@ -0,0 +1,39 @@
1
+ //#region packages/components/data-display/date.d.ts
2
+ interface DateDisplayProps {
3
+ /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
4
+ date: Date | string | number;
5
+ /**
6
+ * Controls how the date is formatted.
7
+ * - `'short'` — `15/03/24`
8
+ * - `'medium'` — `15/03/2024` (default)
9
+ * - `'long'` — `15 tháng 3, 2024`
10
+ * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`
11
+ * - `'relative'` — `2 giờ trước`
12
+ * - `'datetime'` — `15/03/2024 14:30`
13
+ * - `'time'` — `14:30`
14
+ * - `'smart'` — auto-selects the most human-readable format based on recency
15
+ */
16
+ format?: 'short' | 'medium' | 'long' | 'full' | 'relative' | 'datetime' | 'time' | 'smart';
17
+ /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */
18
+ showHoliday?: boolean;
19
+ /** When `true`, appends the time component to the formatted output. Defaults to `false`. */
20
+ showTime?: boolean;
21
+ /** Additional CSS classes applied to the `<time>` element. */
22
+ className?: string;
23
+ /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */
24
+ title?: string;
25
+ }
26
+ /**
27
+ * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';
32
+ *
33
+ * <DateDisplay date="2024-03-15T14:30:00Z" format="medium" showTime />
34
+ * ```
35
+ */
36
+ declare const DateDisplay: React.FC<DateDisplayProps>;
37
+ //#endregion
38
+ export { DateDisplay as t };
39
+ //# sourceMappingURL=date-KANPBbN4.d.cts.map
@@ -0,0 +1,39 @@
1
+ //#region packages/components/data-display/date.d.ts
2
+ interface DateDisplayProps {
3
+ /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
4
+ date: Date | string | number;
5
+ /**
6
+ * Controls how the date is formatted.
7
+ * - `'short'` — `15/03/24`
8
+ * - `'medium'` — `15/03/2024` (default)
9
+ * - `'long'` — `15 tháng 3, 2024`
10
+ * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`
11
+ * - `'relative'` — `2 giờ trước`
12
+ * - `'datetime'` — `15/03/2024 14:30`
13
+ * - `'time'` — `14:30`
14
+ * - `'smart'` — auto-selects the most human-readable format based on recency
15
+ */
16
+ format?: 'short' | 'medium' | 'long' | 'full' | 'relative' | 'datetime' | 'time' | 'smart';
17
+ /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */
18
+ showHoliday?: boolean;
19
+ /** When `true`, appends the time component to the formatted output. Defaults to `false`. */
20
+ showTime?: boolean;
21
+ /** Additional CSS classes applied to the `<time>` element. */
22
+ className?: string;
23
+ /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */
24
+ title?: string;
25
+ }
26
+ /**
27
+ * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';
32
+ *
33
+ * <DateDisplay date="2024-03-15T14:30:00Z" format="medium" showTime />
34
+ * ```
35
+ */
36
+ declare const DateDisplay: React.FC<DateDisplayProps>;
37
+ //#endregion
38
+ export { DateDisplay as t };
39
+ //# sourceMappingURL=date-KANPBbN4.d.mts.map
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./date-Nsz0Pewe.mjs";import{Badge as t}from"./ui/badge.mjs";import{Tooltip as n,TooltipContent as r,TooltipProvider as i,TooltipTrigger as a}from"./ui/tooltip.mjs";import{Y as o}from"./tables-UikqnT9q.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";const l=({date:l})=>l==null?s(o,{}):s(i,{children:c(n,{children:[s(a,{asChild:!0,children:s(t,{className:`h-fit`,children:s(e,{date:l,format:`medium`,className:`font-normal text-white`})})}),s(r,{className:`rounded px-2`,children:s(e,{date:l,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})});export{l as UITableDateDisplay};
2
+ //# sourceMappingURL=date-display-BWtvWDHK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-display-BWtvWDHK.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/date-display.tsx"],"sourcesContent":["import { Badge } from '@/components/ui/badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from '@/components/data-display/date';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableDateDisplay} component. */\ntype Props = {\n /** The date value to format and display; `null`/`undefined` renders an empty state. */\n date: Date | string | number | null | undefined;\n};\n\n/**\n * Displays a date as a compact badge in a table cell with a tooltip that shows\n * the full date and time on hover; renders {@link UITableEmpty} when `date` is\n * `null` or `undefined`.\n *\n * @example\n * import { UITableDateDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableDateDisplay date={new Date('2024-06-15T10:30:00Z')} />\n */\nexport const UITableDateDisplay: React.FC<Props> = ({ date }) => {\n if (typeof date === 'undefined' || date === null) return <UITableEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge className=\"h-fit\">\n <DateDisplay date={date} format=\"medium\" className=\"font-normal text-white\" />\n </Badge>\n </TooltipTrigger>\n <TooltipContent className=\"rounded px-2\">\n <DateDisplay date={date} format=\"full\" showTime className=\"font-medium text-text-negative text-xs\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n"],"mappings":"mRAsBA,MAAa,GAAuC,CAAE,UACzC,GAAiC,KAAa,EAAC,EAAD,CAAe,CAAA,EAEtE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAgB,QAAA,YACd,EAAC,EAAD,CAAO,UAAU,iBACf,EAAC,EAAD,CAAmB,OAAM,OAAO,SAAS,UAAU,wBAA0B,CAAA,CACxE,CAAA,CACO,CAAA,EAChB,EAAC,EAAD,CAAgB,UAAU,wBACxB,EAAC,EAAD,CAAmB,OAAM,OAAO,OAAO,SAAA,GAAS,UAAU,wCAA0C,CAAA,CACtF,CAAA,CACT,CAAA,CAAA,CACM,CAAA"}
@@ -0,0 +1,2 @@
1
+ const e=require("./date-B3cozmfV.cjs"),t=require("./ui/badge.cjs"),n=require("./ui/tooltip.cjs"),r=require("./tables-7aC9WFs9.cjs");let i=require("react/jsx-runtime");const a=({date:a})=>a==null?(0,i.jsx)(r.Y,{}):(0,i.jsx)(n.TooltipProvider,{children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsx)(t.Badge,{className:`h-fit`,children:(0,i.jsx)(e.t,{date:a,format:`medium`,className:`font-normal text-white`})})}),(0,i.jsx)(n.TooltipContent,{className:`rounded px-2`,children:(0,i.jsx)(e.t,{date:a,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})});exports.UITableDateDisplay=a;
2
+ //# sourceMappingURL=date-display-odcC9NcB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-display-odcC9NcB.cjs","names":["UITableEmpty","TooltipProvider","Tooltip","TooltipTrigger","Badge","DateDisplay","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/date-display.tsx"],"sourcesContent":["import { Badge } from '@/components/ui/badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from '@/components/data-display/date';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableDateDisplay} component. */\ntype Props = {\n /** The date value to format and display; `null`/`undefined` renders an empty state. */\n date: Date | string | number | null | undefined;\n};\n\n/**\n * Displays a date as a compact badge in a table cell with a tooltip that shows\n * the full date and time on hover; renders {@link UITableEmpty} when `date` is\n * `null` or `undefined`.\n *\n * @example\n * import { UITableDateDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableDateDisplay date={new Date('2024-06-15T10:30:00Z')} />\n */\nexport const UITableDateDisplay: React.FC<Props> = ({ date }) => {\n if (typeof date === 'undefined' || date === null) return <UITableEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge className=\"h-fit\">\n <DateDisplay date={date} format=\"medium\" className=\"font-normal text-white\" />\n </Badge>\n </TooltipTrigger>\n <TooltipContent className=\"rounded px-2\">\n <DateDisplay date={date} format=\"full\" showTime className=\"font-medium text-text-negative text-xs\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n"],"mappings":"uKAsBA,MAAa,GAAuC,CAAE,UACzC,GAAiC,MAAa,EAAA,EAAA,IAAA,CAACA,EAAAA,EAAD,CAAe,CAAA,GAEtE,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,aACd,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CAAO,UAAU,kBACf,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAAmB,OAAM,OAAO,SAAS,UAAU,wBAA0B,CAAA,CACxE,CAAA,CACO,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,UAAU,yBACxB,EAAA,EAAA,IAAA,CAACD,EAAAA,EAAD,CAAmB,OAAM,OAAO,OAAO,SAAA,GAAS,UAAU,wCAA0C,CAAA,CACtF,CAAA,CACT,CAAA,CAAA,CACM,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{Button as e}from"./ui/button.mjs";import{G as t}from"./tanstack-form-PC9YNeeo.mjs";import{Popover as n,PopoverContent as r,PopoverTrigger as i}from"./ui/popover.mjs";import{Calendar as a}from"./ui/calendar.mjs";import{Field as o,FieldContent as s,FieldContentMain as c,FieldDescription as l,FieldError as u,FieldGroup as d,FieldLabel as f,FieldNote as p,FieldSeparator as m,FieldTooltip as h}from"./field-BKyUqvzh.mjs";import{CalendarDaysIcon as g}from"lucide-react";import{memo as _,useId as v,useState as y}from"react";import{cn as b}from"@customafk/react-toolkit/utils";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{endOfToday as C,endOfTomorrow as w,endOfYesterday as T,format as E,lastDayOfMonth as D,startOfMonth as O,subDays as k}from"@customafk/react-toolkit/date-fns";import{useStore as A}from"@tanstack/react-form";const j=_(({label:_,description:j,placeholder:M,orientation:N=`responsive`,tooltip:P,helperText:F,showErrorMessage:I=!0,required:L=!1,disabled:R=!1,minDate:z,maxDate:B})=>{let V=v(),H=t(),[U,W]=y(!1),G=A(H.form.store,({isSubmitting:e})=>e),K=R||G,q=H.state.meta.isDirty||H.state.meta.isTouched,J=q&&!H.state.meta.isValid,Y=L&&H.state.value===null,X=e=>{H.handleChange(e),W(!1)};return S(d,{className:`px-4`,children:[S(o,{orientation:N,"data-invalid":J,children:[S(s,{children:[S(f,{htmlFor:H.name,"aria-required":Y,children:[_,P&&x(h,{tooltip:P})]}),x(l,{children:j})]}),x(c,{className:`flex flex-col space-y-1`,children:S(`div`,{className:`flex w-full flex-col`,children:[S(n,{open:U,onOpenChange:e=>{W(e),e||H.handleBlur()},children:[x(i,{asChild:!0,children:S(e,{variant:`outline`,color:`muted`,size:`lg`,disabled:K,"aria-invalid":J?!0:void 0,"aria-describedby":V,className:b(`flex items-center justify-between rounded font-normal outline-border`,`hover:bg-transparent`,`focus:outline-1 focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak`,`data-[state=open]:outline-1 data-[state=open]:outline-primary-strong data-[state=open]:ring-4 data-[state=open]:ring-primary-weak`,H.state.value===null&&`text-text-positive-muted`,J&&`outline-danger bg-danger-bg-subtle ring-4 ring-danger-weak`),children:[x(`p`,{children:H.state.value===null?M??`Select date`:E(H.state.value,`PPPP`)}),x(g,{strokeWidth:1})]})}),S(r,{align:`start`,side:`bottom`,className:`flex w-fit min-w-0 overflow-y-auto rounded p-0`,children:[S(`div`,{className:`flex h-full flex-col space-y-2 border-r border-r-border p-2 [&>button]:justify-start [&>button]:text-sm`,children:[x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(C()),children:`Hôm nay`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(w()),children:`Ngày mai`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(T()),children:`Hôm qua`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(k(C(),3)),children:`3 ngày qua`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(k(C(),7)),children:`7 ngày qua`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(k(C(),30)),children:`30 ngày qua`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(O(C())),children:`Tháng này`}),x(e,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>X(D(C())),children:`Tháng trước`})]}),x(`div`,{className:`flex flex-1 flex-col`,children:x(`div`,{className:`min-w-73 border-b border-b-border p-2`,children:x(a,{mode:`single`,selected:H.state.value??void 0,hidden:{before:z??new Date(1900,0,1),after:B??new Date(2100,11,31)},onSelect:e=>{e&&X(e)}})})})]})]}),q&&I&&x(u,{id:V,className:`mt-1`,errors:H.state.meta.errors}),x(p,{isShow:!!F,children:F})]})})]}),x(m,{})]})});j.displayName=`DateField`;export{j as DateField};
2
+ //# sourceMappingURL=date-field-Cxbrc0Vl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-field-Cxbrc0Vl.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/date-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { CalendarDaysIcon } from 'lucide-react';\n\nimport { endOfToday, endOfTomorrow, endOfYesterday, format, lastDayOfMonth, startOfMonth, subDays } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\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 { DateFieldProps as Props } from '../../types';\n\nexport const DateField = memo<Props>(\n ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n required = false,\n disabled = false,\n minDate,\n maxDate,\n }) => {\n const errorId = useId();\n const field = useTanStackFieldContext<Date | null>();\n const [popoverOpen, setPopoverOpen] = useState(false);\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 _isInvalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n\n const handleSelect = (date: Date) => {\n field.handleChange(date);\n setPopoverOpen(false);\n };\n\n return (\n <FieldGroup className=\"px-4\">\n <Field orientation={orientation} data-invalid={_isInvalid}>\n <FieldContent>\n <FieldLabel htmlFor={field.name} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain className=\"flex flex-col space-y-1\">\n <div className=\"flex w-full flex-col\">\n <Popover\n open={popoverOpen}\n onOpenChange={open => {\n setPopoverOpen(open);\n if (!open) field.handleBlur();\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n color=\"muted\"\n size=\"lg\"\n disabled={isDisabled}\n aria-invalid={_isInvalid ? true : undefined}\n aria-describedby={errorId}\n className={cn(\n 'flex items-center justify-between rounded font-normal outline-border',\n 'hover:bg-transparent',\n 'focus:outline-1 focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak',\n 'data-[state=open]:outline-1 data-[state=open]:outline-primary-strong data-[state=open]:ring-4 data-[state=open]:ring-primary-weak',\n field.state.value === null && 'text-text-positive-muted',\n _isInvalid && 'outline-danger bg-danger-bg-subtle ring-4 ring-danger-weak'\n )}\n >\n <p>{field.state.value === null ? (placeholder ?? 'Select date') : format(field.state.value, 'PPPP')}</p>\n <CalendarDaysIcon strokeWidth={1} />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent align=\"start\" side=\"bottom\" className=\"flex w-fit min-w-0 overflow-y-auto rounded p-0\">\n <div className=\"flex h-full flex-col space-y-2 border-r border-r-border p-2 [&>button]:justify-start [&>button]:text-sm\">\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfToday())}>\n Hôm nay\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfTomorrow())}>\n Ngày mai\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfYesterday())}>\n Hôm qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 3))}>\n 3 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 7))}>\n 7 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 30))}>\n 30 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(startOfMonth(endOfToday()))}>\n Tháng này\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(lastDayOfMonth(endOfToday()))}>\n Tháng trước\n </Button>\n </div>\n <div className=\"flex flex-1 flex-col\">\n <div className=\"min-w-73 border-b border-b-border p-2\">\n <Calendar\n mode=\"single\"\n selected={field.state.value ?? undefined}\n hidden={{\n before: minDate ?? new Date(1900, 0, 1),\n after: maxDate ?? new Date(2100, 11, 31),\n }}\n onSelect={date => {\n if (!date) return;\n handleSelect(date);\n }}\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {_touched && showErrorMessage && <FieldError id={errorId} className=\"mt-1\" errors={field.state.meta.errors} />}\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </div>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./ui/button.cjs"),t=require("./tanstack-form-CNrZQZhn.cjs"),n=require("./ui/popover.cjs"),r=require("./ui/calendar.cjs"),i=require("./field-BV5twmKA.cjs");let a=require("lucide-react"),o=require("react"),s=require("@customafk/react-toolkit/utils"),c=require("react/jsx-runtime"),l=require("@customafk/react-toolkit/date-fns"),u=require("@tanstack/react-form");const d=(0,o.memo)(({label:d,description:f,placeholder:p,orientation:m=`responsive`,tooltip:h,helperText:g,showErrorMessage:_=!0,required:v=!1,disabled:y=!1,minDate:b,maxDate:x})=>{let S=(0,o.useId)(),C=t.G(),[w,T]=(0,o.useState)(!1),E=(0,u.useStore)(C.form.store,({isSubmitting:e})=>e),D=y||E,O=C.state.meta.isDirty||C.state.meta.isTouched,k=O&&!C.state.meta.isValid,A=v&&C.state.value===null,j=e=>{C.handleChange(e),T(!1)};return(0,c.jsxs)(i.FieldGroup,{className:`px-4`,children:[(0,c.jsxs)(i.Field,{orientation:m,"data-invalid":k,children:[(0,c.jsxs)(i.FieldContent,{children:[(0,c.jsxs)(i.FieldLabel,{htmlFor:C.name,"aria-required":A,children:[d,h&&(0,c.jsx)(i.FieldTooltip,{tooltip:h})]}),(0,c.jsx)(i.FieldDescription,{children:f})]}),(0,c.jsx)(i.FieldContentMain,{className:`flex flex-col space-y-1`,children:(0,c.jsxs)(`div`,{className:`flex w-full flex-col`,children:[(0,c.jsxs)(n.Popover,{open:w,onOpenChange:e=>{T(e),e||C.handleBlur()},children:[(0,c.jsx)(n.PopoverTrigger,{asChild:!0,children:(0,c.jsxs)(e.Button,{variant:`outline`,color:`muted`,size:`lg`,disabled:D,"aria-invalid":k?!0:void 0,"aria-describedby":S,className:(0,s.cn)(`flex items-center justify-between rounded font-normal outline-border`,`hover:bg-transparent`,`focus:outline-1 focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak`,`data-[state=open]:outline-1 data-[state=open]:outline-primary-strong data-[state=open]:ring-4 data-[state=open]:ring-primary-weak`,C.state.value===null&&`text-text-positive-muted`,k&&`outline-danger bg-danger-bg-subtle ring-4 ring-danger-weak`),children:[(0,c.jsx)(`p`,{children:C.state.value===null?p??`Select date`:(0,l.format)(C.state.value,`PPPP`)}),(0,c.jsx)(a.CalendarDaysIcon,{strokeWidth:1})]})}),(0,c.jsxs)(n.PopoverContent,{align:`start`,side:`bottom`,className:`flex w-fit min-w-0 overflow-y-auto rounded p-0`,children:[(0,c.jsxs)(`div`,{className:`flex h-full flex-col space-y-2 border-r border-r-border p-2 [&>button]:justify-start [&>button]:text-sm`,children:[(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.endOfToday)()),children:`Hôm nay`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.endOfTomorrow)()),children:`Ngày mai`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.endOfYesterday)()),children:`Hôm qua`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.subDays)((0,l.endOfToday)(),3)),children:`3 ngày qua`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.subDays)((0,l.endOfToday)(),7)),children:`7 ngày qua`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.subDays)((0,l.endOfToday)(),30)),children:`30 ngày qua`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.startOfMonth)((0,l.endOfToday)())),children:`Tháng này`}),(0,c.jsx)(e.Button,{variant:`ghost`,color:`muted`,className:`w-32`,onClick:()=>j((0,l.lastDayOfMonth)((0,l.endOfToday)())),children:`Tháng trước`})]}),(0,c.jsx)(`div`,{className:`flex flex-1 flex-col`,children:(0,c.jsx)(`div`,{className:`min-w-73 border-b border-b-border p-2`,children:(0,c.jsx)(r.Calendar,{mode:`single`,selected:C.state.value??void 0,hidden:{before:b??new Date(1900,0,1),after:x??new Date(2100,11,31)},onSelect:e=>{e&&j(e)}})})})]})]}),O&&_&&(0,c.jsx)(i.FieldError,{id:S,className:`mt-1`,errors:C.state.meta.errors}),(0,c.jsx)(i.FieldNote,{isShow:!!g,children:g})]})})]}),(0,c.jsx)(i.FieldSeparator,{})]})});d.displayName=`DateField`,exports.DateField=d;
2
+ //# sourceMappingURL=date-field-RvEB9F1r.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-field-RvEB9F1r.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","Popover","PopoverTrigger","Button","CalendarDaysIcon","PopoverContent","Calendar","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/date-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { CalendarDaysIcon } from 'lucide-react';\n\nimport { endOfToday, endOfTomorrow, endOfYesterday, format, lastDayOfMonth, startOfMonth, subDays } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\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 { DateFieldProps as Props } from '../../types';\n\nexport const DateField = memo<Props>(\n ({\n label,\n description,\n placeholder,\n orientation = 'responsive',\n tooltip,\n helperText,\n showErrorMessage = true,\n required = false,\n disabled = false,\n minDate,\n maxDate,\n }) => {\n const errorId = useId();\n const field = useTanStackFieldContext<Date | null>();\n const [popoverOpen, setPopoverOpen] = useState(false);\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 _isInvalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n\n const handleSelect = (date: Date) => {\n field.handleChange(date);\n setPopoverOpen(false);\n };\n\n return (\n <FieldGroup className=\"px-4\">\n <Field orientation={orientation} data-invalid={_isInvalid}>\n <FieldContent>\n <FieldLabel htmlFor={field.name} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain className=\"flex flex-col space-y-1\">\n <div className=\"flex w-full flex-col\">\n <Popover\n open={popoverOpen}\n onOpenChange={open => {\n setPopoverOpen(open);\n if (!open) field.handleBlur();\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n color=\"muted\"\n size=\"lg\"\n disabled={isDisabled}\n aria-invalid={_isInvalid ? true : undefined}\n aria-describedby={errorId}\n className={cn(\n 'flex items-center justify-between rounded font-normal outline-border',\n 'hover:bg-transparent',\n 'focus:outline-1 focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak',\n 'data-[state=open]:outline-1 data-[state=open]:outline-primary-strong data-[state=open]:ring-4 data-[state=open]:ring-primary-weak',\n field.state.value === null && 'text-text-positive-muted',\n _isInvalid && 'outline-danger bg-danger-bg-subtle ring-4 ring-danger-weak'\n )}\n >\n <p>{field.state.value === null ? (placeholder ?? 'Select date') : format(field.state.value, 'PPPP')}</p>\n <CalendarDaysIcon strokeWidth={1} />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent align=\"start\" side=\"bottom\" className=\"flex w-fit min-w-0 overflow-y-auto rounded p-0\">\n <div className=\"flex h-full flex-col space-y-2 border-r border-r-border p-2 [&>button]:justify-start [&>button]:text-sm\">\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfToday())}>\n Hôm nay\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfTomorrow())}>\n Ngày mai\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(endOfYesterday())}>\n Hôm qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 3))}>\n 3 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 7))}>\n 7 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(subDays(endOfToday(), 30))}>\n 30 ngày qua\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(startOfMonth(endOfToday()))}>\n Tháng này\n </Button>\n <Button variant=\"ghost\" color=\"muted\" className=\"w-32\" onClick={() => handleSelect(lastDayOfMonth(endOfToday()))}>\n Tháng trước\n </Button>\n </div>\n <div className=\"flex flex-1 flex-col\">\n <div className=\"min-w-73 border-b border-b-border p-2\">\n <Calendar\n mode=\"single\"\n selected={field.state.value ?? undefined}\n hidden={{\n before: minDate ?? new Date(1900, 0, 1),\n after: maxDate ?? new Date(2100, 11, 31),\n }}\n onSelect={date => {\n if (!date) return;\n handleSelect(date);\n }}\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {_touched && showErrorMessage && <FieldError id={errorId} className=\"mt-1\" errors={field.state.meta.errors} />}\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </div>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ //#region packages/components/data-display/date-tooltip.d.ts
2
+ type DateTooltipProps = {
3
+ /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */date: Date | string | number;
4
+ };
5
+ /**
6
+ * Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';
11
+ *
12
+ * <DateTooltip date="2024-03-15T14:30:00Z" />
13
+ * ```
14
+ */
15
+ declare const DateTooltip: React.FC<DateTooltipProps>;
16
+ //#endregion
17
+ export { DateTooltip as t };
18
+ //# sourceMappingURL=date-tooltip-DptxGOj_.d.cts.map
@@ -0,0 +1,18 @@
1
+ //#region packages/components/data-display/date-tooltip.d.ts
2
+ type DateTooltipProps = {
3
+ /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */date: Date | string | number;
4
+ };
5
+ /**
6
+ * Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';
11
+ *
12
+ * <DateTooltip date="2024-03-15T14:30:00Z" />
13
+ * ```
14
+ */
15
+ declare const DateTooltip: React.FC<DateTooltipProps>;
16
+ //#endregion
17
+ export { DateTooltip as t };
18
+ //# sourceMappingURL=date-tooltip-DptxGOj_.d.mts.map
@@ -0,0 +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{Y as i}from"./tables-UikqnT9q.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=({content:s})=>s==null?a(i,{}):o(t,{children:[a(r,{children:a(e,{variant:`sm`,className:`line-clamp-2 whitespace-pre-line break-all`,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(e,{variant:`xs`,className:`whitespace-pre-line text-wrap break-keep text-text-negative-weak`,children:s}),o(`p`,{className:`w-full text-end`,children:[s.toString().length,` chars`]})]})})]});export{s as UITableDescriptionDisplay};
2
+ //# sourceMappingURL=description-display-BubAcFan.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-display-BubAcFan.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/description-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { UITableEmpty } from './empty';\nimport { Paragraph } from '@/components/typography/paragraph';\n\n/**\n * Renders a two-line-clamped description in a table cell with a tooltip that\n * reveals the full text and its character count; falls back to\n * {@link UITableEmpty} when `content` is `null` or `undefined`.\n *\n * @example\n * import { UITableDescriptionDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableDescriptionDisplay content=\"A detailed description of this record.\" />\n */\nexport const UITableDescriptionDisplay: React.FC<{\n /** The text or numeric value to display; `null`/`undefined` renders an empty state. */\n content: string | null | undefined | number;\n}> = ({ content }) => {\n if (content === undefined || content === null) {\n return <UITableEmpty />;\n }\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 whitespace-pre-line break-all\">\n {content}\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 <Paragraph variant=\"xs\" className=\"whitespace-pre-line text-wrap break-keep text-text-negative-weak\">\n {content}\n </Paragraph>\n <p className=\"w-full text-end\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"sOAeA,MAAa,GAGP,CAAE,aACF,GAAqC,KAChC,EAAC,EAAD,CAAe,CAAA,EAGtB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAW,QAAQ,KAAK,UAAU,sDAC/B,CACQ,CAAA,CACG,CAAA,EAChB,EAAC,EAAD,CAAgB,MAAM,QAAQ,UAAU,wCACtC,EAAC,MAAD,CAAK,UAAU,iCAAf,CACE,EAAC,EAAD,CAAW,QAAQ,KAAK,UAAU,4EAC/B,CACQ,CAAA,EACX,EAAC,IAAD,CAAG,UAAU,2BAAb,CAAgC,EAAQ,SAAS,CAAC,CAAC,OAAO,QAAS,GAChE,GACS,CAAA,CACT,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ const e=require("./typography/paragraph.cjs"),t=require("./ui/tooltip.cjs"),n=require("./tables-7aC9WFs9.cjs");let r=require("react/jsx-runtime");const i=({content:i})=>i==null?(0,r.jsx)(n.Y,{}):(0,r.jsxs)(t.Tooltip,{children:[(0,r.jsx)(t.TooltipTrigger,{children:(0,r.jsx)(e.Paragraph,{variant:`sm`,className:`line-clamp-2 whitespace-pre-line break-all`,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)(e.Paragraph,{variant:`xs`,className:`whitespace-pre-line text-wrap break-keep text-text-negative-weak`,children:i}),(0,r.jsxs)(`p`,{className:`w-full text-end`,children:[i.toString().length,` chars`]})]})})]});exports.UITableDescriptionDisplay=i;
2
+ //# sourceMappingURL=description-display-CKe0j3q-.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-display-CKe0j3q-.cjs","names":["UITableEmpty","Tooltip","TooltipTrigger","Paragraph","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/description-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { UITableEmpty } from './empty';\nimport { Paragraph } from '@/components/typography/paragraph';\n\n/**\n * Renders a two-line-clamped description in a table cell with a tooltip that\n * reveals the full text and its character count; falls back to\n * {@link UITableEmpty} when `content` is `null` or `undefined`.\n *\n * @example\n * import { UITableDescriptionDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableDescriptionDisplay content=\"A detailed description of this record.\" />\n */\nexport const UITableDescriptionDisplay: React.FC<{\n /** The text or numeric value to display; `null`/`undefined` renders an empty state. */\n content: string | null | undefined | number;\n}> = ({ content }) => {\n if (content === undefined || content === null) {\n return <UITableEmpty />;\n }\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 whitespace-pre-line break-all\">\n {content}\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 <Paragraph variant=\"xs\" className=\"whitespace-pre-line text-wrap break-keep text-text-negative-weak\">\n {content}\n </Paragraph>\n <p className=\"w-full text-end\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"kJAeA,MAAa,GAGP,CAAE,aACF,GAAqC,MAChC,EAAA,EAAA,IAAA,CAACA,EAAAA,EAAD,CAAe,CAAA,GAGtB,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,sDAC/B,CACQ,CAAA,CACG,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,yCACtC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,iCAAf,EACE,EAAA,EAAA,IAAA,CAACD,EAAAA,UAAD,CAAW,QAAQ,KAAK,UAAU,4EAC/B,CACQ,CAAA,GACX,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAU,2BAAb,CAAgC,EAAQ,SAAS,CAAC,CAAC,OAAO,QAAS,GAChE,GACS,CAAA,CACT,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{Dialog as e,DialogContent as t,DialogOverlay as n,DialogPortal as r,DialogTitle as i}from"./ui/dialog.mjs";import{K as a}from"./tanstack-form-PC9YNeeo.mjs";import{Separator as o}from"./ui/separator.mjs";import{n as s,t as c}from"./submit-button-CGBaPzE9.mjs";import{useCallback as l}from"react";import{cn as u}from"@customafk/react-toolkit/utils";import{jsx as d,jsxs as f}from"react/jsx-runtime";const p=({title:p,submitText:m,width:h,maxWidth:g,className:_,open:v,onOpenChange:y,children:b})=>{let x=a(),S=l(e=>{e||x.reset(),y?.(e)},[x.reset,y]);return d(e,{open:v,onOpenChange:S,children:f(r,{"data-slot":`dialog-portal`,children:[d(n,{}),f(t,{style:{"--width":h,"--max-width":g},className:u(`flex size-full max-h-dvh max-w-dvw flex-col gap-0 overflow-y-auto rounded-none p-0 shadow-dialog sm:h-auto sm:max-h-[85dvh] sm:max-w-5xl sm:rounded-md`,h&&`sm:w-(--width)`,g&&`sm:max-w-(--max-width)`,_),onOpenAutoFocus:e=>{e.preventDefault()},onInteractOutside:e=>{e.preventDefault()},children:[d(`div`,{"data-slot":`dialog-header`,className:`flex items-center justify-center gap-2 px-6 py-5 text-center sm:text-left`,children:d(i,{"data-slot":`dialog-title`,className:`font-semibold text-lg tracking-tight`,children:p})}),d(o,{}),d(`div`,{"data-slot":`dialog-content`,className:`relative flex flex-col overflow-y-auto p-0 pt-4 max-sm:flex-1 sm:p-4`,children:b}),d(o,{}),f(`div`,{"data-slot":`dialog-footer`,className:`flex flex-col-reverse items-center justify-end gap-2 px-6 py-4 sm:flex-row max-sm:[&>button]:w-full`,children:[d(x.Subscribe,{selector:e=>({disabled:e.isSubmitting}),children:({disabled:e})=>d(s,{disabled:e,onClick:()=>{x.reset(),S(!1)}})}),d(x.Subscribe,{selector:e=>({isSubmitting:e.isSubmitting,disabled:e.isPristine||!e.isValid||e.isValidating||e.isSubmitting||!e.canSubmit}),children:({isSubmitting:e,disabled:t})=>d(c,{isSubmitting:e,disabled:t,submitText:m,onClick:()=>x.handleSubmit()})})]})]})]})})};export{p as TanStackDialogForm};
2
+ //# sourceMappingURL=dialog-form-C0W5C0u9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-form-C0W5C0u9.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/forms/dialog-form.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogOverlay, DialogPortal, DialogTitle } from '@/components/ui/dialog';\nimport { Separator } from '@/components/ui/separator';\n\nimport { useTanStackFormContext } from '../form-context';\nimport { CancelButton } from '../ui/cancel-button';\nimport { SubmitButton } from '../ui/submit-button';\n\n/**\n * Renders a modal dialog that wraps a TanStack Form with a title, scrollable content area, and built-in submit/cancel actions.\n *\n * @example\n * import { TanStackDialogForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <TanStackDialogForm\n * title=\"Create User\"\n * submitText=\"Create\"\n * className=\"max-w-lg\"\n * open={isOpen}\n * onOpenChange={setIsOpen}\n * >\n * <NameField />\n * <EmailField />\n * </TanStackDialogForm>\n */\nexport const TanStackDialogForm: React.FC<\n React.PropsWithChildren<{\n /** Heading text displayed in the dialog title bar. */\n title: string;\n /** Custom label for the submit button. Defaults to the `SubmitButton` component's built-in label when omitted. */\n submitText?: string;\n /** Optional fixed width for the dialog content area, as a pixel number (e.g. `600`) or any CSS string (e.g. `'50%'`, `'40rem'`). Omit to let the dialog size itself based on content. */\n width?: number | string;\n /** Optional fixed max-width for the dialog content area, as a pixel number (e.g. `600`) or any CSS string (e.g. `'50%'`, `'40rem'`). Omit to let the dialog size itself based on content and viewport. */\n maxWidth?: number | string;\n /** Optional additional class name(s) to apply to the dialog content container. */\n className?: string;\n /** Controlled open state of the dialog. */\n open?: boolean;\n /** Callback fired when the dialog open state changes; the form is reset on close. */\n onOpenChange?: (open: boolean) => void;\n }>\n> = ({ title, submitText, width, maxWidth, className, open, onOpenChange, children }) => {\n const form = useTanStackFormContext();\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) form.reset();\n onOpenChange?.(open);\n },\n [form.reset, onOpenChange]\n );\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogContent\n style={\n {\n '--width': width,\n '--max-width': maxWidth,\n } as React.CSSProperties\n }\n className={cn(\n 'flex size-full max-h-dvh max-w-dvw flex-col gap-0 overflow-y-auto rounded-none p-0 shadow-dialog sm:h-auto sm:max-h-[85dvh] sm:max-w-5xl sm:rounded-md',\n width && `sm:w-(--width)`,\n maxWidth && `sm:max-w-(--max-width)`,\n className\n )}\n onOpenAutoFocus={event => {\n // Prevents focus from shifting to the content when the dialog opens, which can cause layout shift if the content includes autofocusable elements.\n event.preventDefault();\n }}\n onInteractOutside={event => {\n // Prevents the dialog from closing when clicking outside, since the form may have unsaved changes.\n event.preventDefault();\n }}\n >\n <div data-slot=\"dialog-header\" className=\"flex items-center justify-center gap-2 px-6 py-5 text-center sm:text-left\">\n <DialogTitle data-slot=\"dialog-title\" className=\"font-semibold text-lg tracking-tight\">\n {title}\n </DialogTitle>\n </div>\n <Separator />\n <div data-slot=\"dialog-content\" className=\"relative flex flex-col overflow-y-auto p-0 pt-4 max-sm:flex-1 sm:p-4\">\n {children}\n </div>\n <Separator />\n <div data-slot=\"dialog-footer\" className=\"flex flex-col-reverse items-center justify-end gap-2 px-6 py-4 sm:flex-row max-sm:[&>button]:w-full\">\n <form.Subscribe\n selector={state => ({ disabled: state.isSubmitting })}\n children={({ disabled }) => (\n <CancelButton\n disabled={disabled}\n onClick={() => {\n form.reset();\n handleOpenChange(false);\n }}\n />\n )}\n />\n <form.Subscribe\n selector={state => ({\n isSubmitting: state.isSubmitting,\n disabled: state.isPristine || !state.isValid || state.isValidating || state.isSubmitting || !state.canSubmit,\n })}\n children={({ isSubmitting, disabled }) => (\n <SubmitButton isSubmitting={isSubmitting} disabled={disabled} submitText={submitText} onClick={() => form.handleSubmit()} />\n )}\n />\n </div>\n </DialogContent>\n </DialogPortal>\n </Dialog>\n );\n};\n"],"mappings":"oZA8BA,MAAa,GAiBR,CAAE,QAAO,aAAY,QAAO,WAAU,YAAW,OAAM,eAAc,cAAe,CACvF,IAAM,EAAO,EAAuB,EAE9B,EAAmB,EACtB,GAAkB,CACZ,GAAM,EAAK,MAAM,EACtB,IAAe,CAAI,CACrB,EACA,CAAC,EAAK,MAAO,CAAY,CAC3B,EAEA,OACE,EAAC,EAAD,CAAc,OAAM,aAAc,WAChC,EAAC,EAAD,CAAc,YAAU,yBAAxB,CACE,EAAC,EAAD,CAAgB,CAAA,EAChB,EAAC,EAAD,CACE,MACE,CACE,UAAW,EACX,cAAe,CACjB,EAEF,UAAW,EACT,yJACA,GAAS,iBACT,GAAY,yBACZ,CACF,EACA,gBAAiB,GAAS,CAExB,EAAM,eAAe,CACvB,EACA,kBAAmB,GAAS,CAE1B,EAAM,eAAe,CACvB,WApBF,CAsBE,EAAC,MAAD,CAAK,YAAU,gBAAgB,UAAU,qFACvC,EAAC,EAAD,CAAa,YAAU,eAAe,UAAU,gDAC7C,CACU,CAAA,CACV,CAAA,EACL,EAAC,EAAD,CAAY,CAAA,EACZ,EAAC,MAAD,CAAK,YAAU,iBAAiB,UAAU,uEACvC,UACE,CAAA,EACL,EAAC,EAAD,CAAY,CAAA,EACZ,EAAC,MAAD,CAAK,YAAU,gBAAgB,UAAU,+GAAzC,CACE,EAAC,EAAK,UAAN,CACE,SAAU,IAAU,CAAE,SAAU,EAAM,YAAa,GACnD,UAAW,CAAE,cACX,EAAC,EAAD,CACY,WACV,YAAe,CACb,EAAK,MAAM,EACX,EAAiB,EAAK,CACxB,CACD,CAAA,CAEJ,CAAA,EACD,EAAC,EAAK,UAAN,CACE,SAAU,IAAU,CAClB,aAAc,EAAM,aACpB,SAAU,EAAM,YAAc,CAAC,EAAM,SAAW,EAAM,cAAgB,EAAM,cAAgB,CAAC,EAAM,SACrG,GACA,UAAW,CAAE,eAAc,cACzB,EAAC,EAAD,CAA4B,eAAwB,WAAsB,aAAY,YAAe,EAAK,aAAa,CAAI,CAAA,CAE9H,CAAA,CACE,GACQ,GACH,GACR,CAAA,CAEZ"}
@@ -0,0 +1,2 @@
1
+ const e=require("./ui/dialog.cjs"),t=require("./tanstack-form-CNrZQZhn.cjs"),n=require("./ui/separator.cjs"),r=require("./submit-button-CvINfld5.cjs");let i=require("react"),a=require("@customafk/react-toolkit/utils"),o=require("react/jsx-runtime");const s=({title:s,submitText:c,width:l,maxWidth:u,className:d,open:f,onOpenChange:p,children:m})=>{let h=t.K(),g=(0,i.useCallback)(e=>{e||h.reset(),p?.(e)},[h.reset,p]);return(0,o.jsx)(e.Dialog,{open:f,onOpenChange:g,children:(0,o.jsxs)(e.DialogPortal,{"data-slot":`dialog-portal`,children:[(0,o.jsx)(e.DialogOverlay,{}),(0,o.jsxs)(e.DialogContent,{style:{"--width":l,"--max-width":u},className:(0,a.cn)(`flex size-full max-h-dvh max-w-dvw flex-col gap-0 overflow-y-auto rounded-none p-0 shadow-dialog sm:h-auto sm:max-h-[85dvh] sm:max-w-5xl sm:rounded-md`,l&&`sm:w-(--width)`,u&&`sm:max-w-(--max-width)`,d),onOpenAutoFocus:e=>{e.preventDefault()},onInteractOutside:e=>{e.preventDefault()},children:[(0,o.jsx)(`div`,{"data-slot":`dialog-header`,className:`flex items-center justify-center gap-2 px-6 py-5 text-center sm:text-left`,children:(0,o.jsx)(e.DialogTitle,{"data-slot":`dialog-title`,className:`font-semibold text-lg tracking-tight`,children:s})}),(0,o.jsx)(n.Separator,{}),(0,o.jsx)(`div`,{"data-slot":`dialog-content`,className:`relative flex flex-col overflow-y-auto p-0 pt-4 max-sm:flex-1 sm:p-4`,children:m}),(0,o.jsx)(n.Separator,{}),(0,o.jsxs)(`div`,{"data-slot":`dialog-footer`,className:`flex flex-col-reverse items-center justify-end gap-2 px-6 py-4 sm:flex-row max-sm:[&>button]:w-full`,children:[(0,o.jsx)(h.Subscribe,{selector:e=>({disabled:e.isSubmitting}),children:({disabled:e})=>(0,o.jsx)(r.n,{disabled:e,onClick:()=>{h.reset(),g(!1)}})}),(0,o.jsx)(h.Subscribe,{selector:e=>({isSubmitting:e.isSubmitting,disabled:e.isPristine||!e.isValid||e.isValidating||e.isSubmitting||!e.canSubmit}),children:({isSubmitting:e,disabled:t})=>(0,o.jsx)(r.t,{isSubmitting:e,disabled:t,submitText:c,onClick:()=>h.handleSubmit()})})]})]})]})})};exports.TanStackDialogForm=s;
2
+ //# sourceMappingURL=dialog-form-CkNCwzWG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-form-CkNCwzWG.cjs","names":["useTanStackFormContext","Dialog","DialogPortal","DialogOverlay","DialogContent","DialogTitle","Separator","CancelButton","SubmitButton"],"sources":["../packages/components/features/tanstack-form/components/forms/dialog-form.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogOverlay, DialogPortal, DialogTitle } from '@/components/ui/dialog';\nimport { Separator } from '@/components/ui/separator';\n\nimport { useTanStackFormContext } from '../form-context';\nimport { CancelButton } from '../ui/cancel-button';\nimport { SubmitButton } from '../ui/submit-button';\n\n/**\n * Renders a modal dialog that wraps a TanStack Form with a title, scrollable content area, and built-in submit/cancel actions.\n *\n * @example\n * import { TanStackDialogForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <TanStackDialogForm\n * title=\"Create User\"\n * submitText=\"Create\"\n * className=\"max-w-lg\"\n * open={isOpen}\n * onOpenChange={setIsOpen}\n * >\n * <NameField />\n * <EmailField />\n * </TanStackDialogForm>\n */\nexport const TanStackDialogForm: React.FC<\n React.PropsWithChildren<{\n /** Heading text displayed in the dialog title bar. */\n title: string;\n /** Custom label for the submit button. Defaults to the `SubmitButton` component's built-in label when omitted. */\n submitText?: string;\n /** Optional fixed width for the dialog content area, as a pixel number (e.g. `600`) or any CSS string (e.g. `'50%'`, `'40rem'`). Omit to let the dialog size itself based on content. */\n width?: number | string;\n /** Optional fixed max-width for the dialog content area, as a pixel number (e.g. `600`) or any CSS string (e.g. `'50%'`, `'40rem'`). Omit to let the dialog size itself based on content and viewport. */\n maxWidth?: number | string;\n /** Optional additional class name(s) to apply to the dialog content container. */\n className?: string;\n /** Controlled open state of the dialog. */\n open?: boolean;\n /** Callback fired when the dialog open state changes; the form is reset on close. */\n onOpenChange?: (open: boolean) => void;\n }>\n> = ({ title, submitText, width, maxWidth, className, open, onOpenChange, children }) => {\n const form = useTanStackFormContext();\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) form.reset();\n onOpenChange?.(open);\n },\n [form.reset, onOpenChange]\n );\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogContent\n style={\n {\n '--width': width,\n '--max-width': maxWidth,\n } as React.CSSProperties\n }\n className={cn(\n 'flex size-full max-h-dvh max-w-dvw flex-col gap-0 overflow-y-auto rounded-none p-0 shadow-dialog sm:h-auto sm:max-h-[85dvh] sm:max-w-5xl sm:rounded-md',\n width && `sm:w-(--width)`,\n maxWidth && `sm:max-w-(--max-width)`,\n className\n )}\n onOpenAutoFocus={event => {\n // Prevents focus from shifting to the content when the dialog opens, which can cause layout shift if the content includes autofocusable elements.\n event.preventDefault();\n }}\n onInteractOutside={event => {\n // Prevents the dialog from closing when clicking outside, since the form may have unsaved changes.\n event.preventDefault();\n }}\n >\n <div data-slot=\"dialog-header\" className=\"flex items-center justify-center gap-2 px-6 py-5 text-center sm:text-left\">\n <DialogTitle data-slot=\"dialog-title\" className=\"font-semibold text-lg tracking-tight\">\n {title}\n </DialogTitle>\n </div>\n <Separator />\n <div data-slot=\"dialog-content\" className=\"relative flex flex-col overflow-y-auto p-0 pt-4 max-sm:flex-1 sm:p-4\">\n {children}\n </div>\n <Separator />\n <div data-slot=\"dialog-footer\" className=\"flex flex-col-reverse items-center justify-end gap-2 px-6 py-4 sm:flex-row max-sm:[&>button]:w-full\">\n <form.Subscribe\n selector={state => ({ disabled: state.isSubmitting })}\n children={({ disabled }) => (\n <CancelButton\n disabled={disabled}\n onClick={() => {\n form.reset();\n handleOpenChange(false);\n }}\n />\n )}\n />\n <form.Subscribe\n selector={state => ({\n isSubmitting: state.isSubmitting,\n disabled: state.isPristine || !state.isValid || state.isValidating || state.isSubmitting || !state.canSubmit,\n })}\n children={({ isSubmitting, disabled }) => (\n <SubmitButton isSubmitting={isSubmitting} disabled={disabled} submitText={submitText} onClick={() => form.handleSubmit()} />\n )}\n />\n </div>\n </DialogContent>\n </DialogPortal>\n </Dialog>\n );\n};\n"],"mappings":"yPA8BA,MAAa,GAiBR,CAAE,QAAO,aAAY,QAAO,WAAU,YAAW,OAAM,eAAc,cAAe,CACvF,IAAM,EAAOA,EAAAA,EAAuB,EAE9B,GAAA,EAAA,EAAA,YAAA,CACH,GAAkB,CACZ,GAAM,EAAK,MAAM,EACtB,IAAe,CAAI,CACrB,EACA,CAAC,EAAK,MAAO,CAAY,CAC3B,EAEA,OACE,EAAA,EAAA,IAAA,CAACC,EAAAA,OAAD,CAAc,OAAM,aAAc,YAChC,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAc,YAAU,yBAAxB,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,cAAD,CAAgB,CAAA,GAChB,EAAA,EAAA,KAAA,CAACC,EAAAA,cAAD,CACE,MACE,CACE,UAAW,EACX,cAAe,CACjB,EAEF,WAAA,EAAA,EAAA,GAAA,CACE,yJACA,GAAS,iBACT,GAAY,yBACZ,CACF,EACA,gBAAiB,GAAS,CAExB,EAAM,eAAe,CACvB,EACA,kBAAmB,GAAS,CAE1B,EAAM,eAAe,CACvB,WApBF,EAsBE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,YAAU,gBAAgB,UAAU,sFACvC,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,YAAU,eAAe,UAAU,gDAC7C,CACU,CAAA,CACV,CAAA,GACL,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAY,CAAA,GACZ,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,YAAU,iBAAiB,UAAU,uEACvC,UACE,CAAA,GACL,EAAA,EAAA,IAAA,CAACA,EAAAA,UAAD,CAAY,CAAA,GACZ,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,YAAU,gBAAgB,UAAU,+GAAzC,EACE,EAAA,EAAA,IAAA,CAAC,EAAK,UAAN,CACE,SAAU,IAAU,CAAE,SAAU,EAAM,YAAa,GACnD,UAAW,CAAE,eACX,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CACY,WACV,YAAe,CACb,EAAK,MAAM,EACX,EAAiB,EAAK,CACxB,CACD,CAAA,CAEJ,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAK,UAAN,CACE,SAAU,IAAU,CAClB,aAAc,EAAM,aACpB,SAAU,EAAM,YAAc,CAAC,EAAM,SAAW,EAAM,cAAgB,EAAM,cAAgB,CAAC,EAAM,SACrG,GACA,UAAW,CAAE,eAAc,eACzB,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CAA4B,eAAwB,WAAsB,aAAY,YAAe,EAAK,aAAa,CAAI,CAAA,CAE9H,CAAA,CACE,GACQ,GACH,GACR,CAAA,CAEZ"}
@@ -1,2 +1,2 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ui/alert-dialog.cjs");let t=require("lucide-react"),n=require("react"),r=require("react/jsx-runtime");const i=({open:i,isLoading:a=!1,title:o,description:s,cancelText:c=`Cancel`,submitText:l=`Confirm`,descriptionClassName:u,onOpenChange:d,onConfirm:f})=>{let p=(0,n.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),f?.()},[f]);return(0,r.jsx)(e.AlertDialog,{open:i,onOpenChange:d,children:(0,r.jsxs)(e.AlertDialogContent,{className:`p-4 pb-5`,children:[(0,r.jsxs)(e.AlertDialogHeader,{className:`gap-2`,children:[(0,r.jsxs)(e.AlertDialogTitle,{className:`inline-flex items-center gap-x-1`,children:[(0,r.jsx)(t.TriangleAlert,{size:20}),(0,r.jsx)(`p`,{children:o})]}),(0,r.jsx)(e.AlertDialogDescription,{className:u,children:s})]}),(0,r.jsxs)(e.AlertDialogFooter,{children:[(0,r.jsx)(e.AlertDialogCancel,{children:c}),(0,r.jsx)(e.AlertDialogAction,{type:`button`,className:`min-h-9 w-full md:w-24`,onClick:p,children:a?(0,r.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,r.jsx)(`div`,{className:`loader-spinner text-text-positive-weak`})}):l})]})]})})};exports.ConfirmDialog=i;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ui/alert-dialog.cjs");let t=require("lucide-react"),n=require("react"),r=require("react/jsx-runtime");const i=({open:i,isLoading:a=!1,title:o,description:s,cancelText:c=`Hủy`,submitText:l=`Xác nhận`,descriptionClassName:u,onOpenChange:d,onConfirm:f})=>{let p=(0,n.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),f?.()},[f]);return(0,r.jsx)(e.AlertDialog,{open:i,onOpenChange:d,children:(0,r.jsxs)(e.AlertDialogContent,{className:`p-4 pb-5`,children:[(0,r.jsxs)(e.AlertDialogHeader,{className:`gap-2`,children:[(0,r.jsxs)(e.AlertDialogTitle,{className:`inline-flex items-center gap-x-1`,children:[(0,r.jsx)(t.TriangleAlert,{size:20}),(0,r.jsx)(`p`,{children:o})]}),(0,r.jsx)(e.AlertDialogDescription,{className:u,children:s})]}),(0,r.jsxs)(e.AlertDialogFooter,{children:[(0,r.jsx)(e.AlertDialogCancel,{children:c}),(0,r.jsx)(e.AlertDialogAction,{type:`button`,className:`min-h-9 w-full md:w-24`,onClick:p,children:a?(0,r.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,r.jsx)(`div`,{className:`loader-spinner text-text-positive-weak`})}):l})]})]})})};exports.ConfirmDialog=i;
2
2
  //# sourceMappingURL=confirm-dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirm-dialog.cjs","names":["AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","TriangleAlert","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { TriangleAlert } from 'lucide-react';\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\n\n/**\n * Props for the {@link ConfirmDialog} component.\n */\nexport type ConfirmDialogProps = {\n /**\n * Controls whether the dialog is currently open.\n * This is a **controlled** prop — pair it with `onOpenChange` to manage state.\n */\n open?: boolean;\n\n /**\n * When `true`, shows an animated spinner inside the confirm button and\n * prevents double-submission. Typically bound to a mutation's pending state.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * The dialog heading text. Keep it short and action-oriented,\n * e.g. `\"Delete user?\"` or `\"Unsaved changes\"`.\n */\n title: string;\n\n /**\n * Body copy explaining what will happen if the user confirms.\n * For irreversible actions, state explicitly that the action cannot be undone.\n */\n description: string;\n\n /**\n * Label for the cancel / dismiss button.\n *\n * @default \"Cancel\"\n */\n cancelText?: string;\n\n /**\n * Label for the confirm / submit button.\n *\n * @default \"Confirm\"\n */\n submitText?: string;\n\n /**\n * Additional class names applied to the `AlertDialogDescription` element.\n * Useful for overriding text color or font size for specific contexts.\n */\n descriptionClassName?: string;\n\n /**\n * Callback fired when the dialog open state changes.\n * Required to implement controlled open / close behavior.\n *\n * @param open - `true` when opening, `false` when closing.\n */\n onOpenChange?: (open: boolean) => void;\n\n /**\n * Async-safe callback fired when the user clicks the confirm button.\n * Supports both synchronous and `Promise`-returning functions.\n *\n * The dialog does **not** auto-close after `onConfirm` resolves — the caller\n * is responsible for setting `open` to `false` once the operation completes.\n *\n * @example\n * ```tsx\n * onConfirm={async () => {\n * await deleteUser(userId);\n * setOpen(false);\n * }}\n * ```\n */\n onConfirm?: () => Promise<void> | void;\n};\n\n/**\n * A controlled confirmation dialog for destructive or irreversible actions.\n *\n * Built on Radix UI's `AlertDialog` primitive. Renders a warning icon, title,\n * description, and Cancel / Confirm buttons. The confirm button supports an\n * async loading state to prevent double-submission.\n *\n * **Import:** `import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog'`\n *\n * @example Delete confirmation with React state\n * ```tsx\n * import { useState } from 'react';\n * import { Button } from '@customafk/lunas-ui/ui/button';\n * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';\n *\n * export function DeleteUserButton({ userId }: { userId: string }) {\n * const [open, setOpen] = useState(false);\n * const [isPending, setIsPending] = useState(false);\n *\n * const handleDelete = async () => {\n * setIsPending(true);\n * try {\n * await deleteUser(userId);\n * setOpen(false);\n * } finally {\n * setIsPending(false);\n * }\n * };\n *\n * return (\n * <>\n * <Button variant=\"outline\" color=\"danger\" onClick={() => setOpen(true)}>\n * Delete user\n * </Button>\n * <ConfirmDialog\n * open={open}\n * title=\"Delete user?\"\n * description=\"This action is permanent and cannot be undone.\"\n * submitText=\"Yes, delete\"\n * isLoading={isPending}\n * onOpenChange={setOpen}\n * onConfirm={handleDelete}\n * />\n * </>\n * );\n * }\n * ```\n *\n * @example With TanStack Query mutation\n * ```tsx\n * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';\n * import { useMutation } from '@tanstack/react-query';\n *\n * export function ArchiveDialog({ open, onOpenChange, id }: Props) {\n * const { mutateAsync, isPending } = useMutation({ mutationFn: archiveItem });\n *\n * return (\n * <ConfirmDialog\n * open={open}\n * title=\"Archive item?\"\n * description=\"The item will be hidden but can be restored later.\"\n * submitText=\"Archive\"\n * isLoading={isPending}\n * onOpenChange={onOpenChange}\n * onConfirm={() => mutateAsync(id).then(() => onOpenChange(false))}\n * />\n * );\n * }\n * ```\n */\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n open,\n isLoading = false,\n title,\n description,\n cancelText = 'Cancel',\n submitText = 'Confirm',\n descriptionClassName,\n onOpenChange,\n onConfirm,\n}) => {\n const handleConfirm = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onConfirm?.();\n },\n [onConfirm]\n );\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"p-4 pb-5\">\n <AlertDialogHeader className=\"gap-2\">\n <AlertDialogTitle className=\"inline-flex items-center gap-x-1\">\n <TriangleAlert size={20} />\n <p>{title}</p>\n </AlertDialogTitle>\n <AlertDialogDescription className={descriptionClassName}>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>{cancelText}</AlertDialogCancel>\n <AlertDialogAction type=\"button\" className=\"min-h-9 w-full md:w-24\" onClick={handleConfirm}>\n {isLoading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-text-positive-weak\" />\n </div>\n ) : (\n submitText\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"0MAmKA,MAAa,GAA+C,CAC1D,OACA,YAAY,GACZ,QACA,cACA,aAAa,SACb,aAAa,UACb,uBACA,eACA,eACI,CACJ,IAAM,GAAA,EAAA,EAAA,YAAA,CACH,GAAwB,CACvB,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,IAAY,CACd,EACA,CAAC,CAAS,CACZ,EAEA,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,YAAD,CAAmB,OAAoB,yBACrC,EAAA,EAAA,KAAA,CAACC,EAAAA,mBAAD,CAAoB,UAAU,oBAA9B,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,kBAAD,CAAmB,UAAU,iBAA7B,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAkB,UAAU,4CAA5B,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,cAAD,CAAe,KAAM,EAAK,CAAA,GAC1B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,CAAS,CAAA,CACG,KAClB,EAAA,EAAA,IAAA,CAACC,EAAAA,uBAAD,CAAwB,UAAW,WAAuB,CAAoC,CAAA,CAC7E,KACnB,EAAA,EAAA,KAAA,CAACC,EAAAA,kBAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,kBAAD,CAAA,SAAoB,CAA8B,CAAA,GAClD,EAAA,EAAA,IAAA,CAACC,EAAAA,kBAAD,CAAmB,KAAK,SAAS,UAAU,yBAAyB,QAAS,WAC1E,GACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,8DACb,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,wCAA0C,CAAA,CACtD,CAAA,EAEL,CAEe,CAAA,CACF,CAAA,CAAA,CACD,GACT,CAAA,CAEjB"}
1
+ {"version":3,"file":"confirm-dialog.cjs","names":["AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","TriangleAlert","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { TriangleAlert } from 'lucide-react';\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\n\n/**\n * Props for the {@link ConfirmDialog} component.\n */\nexport type ConfirmDialogProps = {\n /**\n * Controls whether the dialog is currently open.\n * This is a **controlled** prop — pair it with `onOpenChange` to manage state.\n */\n open?: boolean;\n\n /**\n * When `true`, shows an animated spinner inside the confirm button and\n * prevents double-submission. Typically bound to a mutation's pending state.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * The dialog heading text. Keep it short and action-oriented,\n * e.g. `\"Delete user?\"` or `\"Unsaved changes\"`.\n */\n title: string;\n\n /**\n * Body copy explaining what will happen if the user confirms.\n * For irreversible actions, state explicitly that the action cannot be undone.\n */\n description: string;\n\n /**\n * Label for the cancel / dismiss button.\n *\n * @default \"Cancel\"\n */\n cancelText?: string;\n\n /**\n * Label for the confirm / submit button.\n *\n * @default \"Confirm\"\n */\n submitText?: string;\n\n /**\n * Additional class names applied to the `AlertDialogDescription` element.\n * Useful for overriding text color or font size for specific contexts.\n */\n descriptionClassName?: string;\n\n /**\n * Callback fired when the dialog open state changes.\n * Required to implement controlled open / close behavior.\n *\n * @param open - `true` when opening, `false` when closing.\n */\n onOpenChange?: (open: boolean) => void;\n\n /**\n * Async-safe callback fired when the user clicks the confirm button.\n * Supports both synchronous and `Promise`-returning functions.\n *\n * The dialog does **not** auto-close after `onConfirm` resolves — the caller\n * is responsible for setting `open` to `false` once the operation completes.\n *\n * @example\n * ```tsx\n * onConfirm={async () => {\n * await deleteUser(userId);\n * setOpen(false);\n * }}\n * ```\n */\n onConfirm?: () => Promise<void> | void;\n};\n\n/**\n * A controlled confirmation dialog for destructive or irreversible actions.\n *\n * Built on Radix UI's `AlertDialog` primitive. Renders a warning icon, title,\n * description, and Cancel / Confirm buttons. The confirm button supports an\n * async loading state to prevent double-submission.\n *\n * **Import:** `import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog'`\n *\n * @example Delete confirmation with React state\n * ```tsx\n * import { useState } from 'react';\n * import { Button } from '@customafk/lunas-ui/ui/button';\n * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';\n *\n * export function DeleteUserButton({ userId }: { userId: string }) {\n * const [open, setOpen] = useState(false);\n * const [isPending, setIsPending] = useState(false);\n *\n * const handleDelete = async () => {\n * setIsPending(true);\n * try {\n * await deleteUser(userId);\n * setOpen(false);\n * } finally {\n * setIsPending(false);\n * }\n * };\n *\n * return (\n * <>\n * <Button variant=\"outline\" color=\"danger\" onClick={() => setOpen(true)}>\n * Delete user\n * </Button>\n * <ConfirmDialog\n * open={open}\n * title=\"Delete user?\"\n * description=\"This action is permanent and cannot be undone.\"\n * submitText=\"Yes, delete\"\n * isLoading={isPending}\n * onOpenChange={setOpen}\n * onConfirm={handleDelete}\n * />\n * </>\n * );\n * }\n * ```\n *\n * @example With TanStack Query mutation\n * ```tsx\n * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';\n * import { useMutation } from '@tanstack/react-query';\n *\n * export function ArchiveDialog({ open, onOpenChange, id }: Props) {\n * const { mutateAsync, isPending } = useMutation({ mutationFn: archiveItem });\n *\n * return (\n * <ConfirmDialog\n * open={open}\n * title=\"Archive item?\"\n * description=\"The item will be hidden but can be restored later.\"\n * submitText=\"Archive\"\n * isLoading={isPending}\n * onOpenChange={onOpenChange}\n * onConfirm={() => mutateAsync(id).then(() => onOpenChange(false))}\n * />\n * );\n * }\n * ```\n */\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n open,\n isLoading = false,\n title,\n description,\n cancelText = 'Hủy',\n submitText = 'Xác nhận',\n descriptionClassName,\n onOpenChange,\n onConfirm,\n}) => {\n const handleConfirm = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onConfirm?.();\n },\n [onConfirm]\n );\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"p-4 pb-5\">\n <AlertDialogHeader className=\"gap-2\">\n <AlertDialogTitle className=\"inline-flex items-center gap-x-1\">\n <TriangleAlert size={20} />\n <p>{title}</p>\n </AlertDialogTitle>\n <AlertDialogDescription className={descriptionClassName}>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>{cancelText}</AlertDialogCancel>\n <AlertDialogAction type=\"button\" className=\"min-h-9 w-full md:w-24\" onClick={handleConfirm}>\n {isLoading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-text-positive-weak\" />\n </div>\n ) : (\n submitText\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"0MAmKA,MAAa,GAA+C,CAC1D,OACA,YAAY,GACZ,QACA,cACA,aAAa,MACb,aAAa,WACb,uBACA,eACA,eACI,CACJ,IAAM,GAAA,EAAA,EAAA,YAAA,CACH,GAAwB,CACvB,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,IAAY,CACd,EACA,CAAC,CAAS,CACZ,EAEA,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,YAAD,CAAmB,OAAoB,yBACrC,EAAA,EAAA,KAAA,CAACC,EAAAA,mBAAD,CAAoB,UAAU,oBAA9B,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,kBAAD,CAAmB,UAAU,iBAA7B,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAkB,UAAU,4CAA5B,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,cAAD,CAAe,KAAM,EAAK,CAAA,GAC1B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,CAAS,CAAA,CACG,KAClB,EAAA,EAAA,IAAA,CAACC,EAAAA,uBAAD,CAAwB,UAAW,WAAuB,CAAoC,CAAA,CAC7E,KACnB,EAAA,EAAA,KAAA,CAACC,EAAAA,kBAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,kBAAD,CAAA,SAAoB,CAA8B,CAAA,GAClD,EAAA,EAAA,IAAA,CAACC,EAAAA,kBAAD,CAAmB,KAAK,SAAS,UAAU,yBAAyB,QAAS,WAC1E,GACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,8DACb,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,wCAA0C,CAAA,CACtD,CAAA,EAEL,CAEe,CAAA,CACF,CAAA,CAAA,CACD,GACT,CAAA,CAEjB"}
@@ -1,142 +1,2 @@
1
- //#region packages/components/dialogs/confirm-dialog.d.ts
2
- /**
3
- * Props for the {@link ConfirmDialog} component.
4
- */
5
- type ConfirmDialogProps = {
6
- /**
7
- * Controls whether the dialog is currently open.
8
- * This is a **controlled** prop — pair it with `onOpenChange` to manage state.
9
- */
10
- open?: boolean;
11
- /**
12
- * When `true`, shows an animated spinner inside the confirm button and
13
- * prevents double-submission. Typically bound to a mutation's pending state.
14
- *
15
- * @default false
16
- */
17
- isLoading?: boolean;
18
- /**
19
- * The dialog heading text. Keep it short and action-oriented,
20
- * e.g. `"Delete user?"` or `"Unsaved changes"`.
21
- */
22
- title: string;
23
- /**
24
- * Body copy explaining what will happen if the user confirms.
25
- * For irreversible actions, state explicitly that the action cannot be undone.
26
- */
27
- description: string;
28
- /**
29
- * Label for the cancel / dismiss button.
30
- *
31
- * @default "Cancel"
32
- */
33
- cancelText?: string;
34
- /**
35
- * Label for the confirm / submit button.
36
- *
37
- * @default "Confirm"
38
- */
39
- submitText?: string;
40
- /**
41
- * Additional class names applied to the `AlertDialogDescription` element.
42
- * Useful for overriding text color or font size for specific contexts.
43
- */
44
- descriptionClassName?: string;
45
- /**
46
- * Callback fired when the dialog open state changes.
47
- * Required to implement controlled open / close behavior.
48
- *
49
- * @param open - `true` when opening, `false` when closing.
50
- */
51
- onOpenChange?: (open: boolean) => void;
52
- /**
53
- * Async-safe callback fired when the user clicks the confirm button.
54
- * Supports both synchronous and `Promise`-returning functions.
55
- *
56
- * The dialog does **not** auto-close after `onConfirm` resolves — the caller
57
- * is responsible for setting `open` to `false` once the operation completes.
58
- *
59
- * @example
60
- * ```tsx
61
- * onConfirm={async () => {
62
- * await deleteUser(userId);
63
- * setOpen(false);
64
- * }}
65
- * ```
66
- */
67
- onConfirm?: () => Promise<void> | void;
68
- };
69
- /**
70
- * A controlled confirmation dialog for destructive or irreversible actions.
71
- *
72
- * Built on Radix UI's `AlertDialog` primitive. Renders a warning icon, title,
73
- * description, and Cancel / Confirm buttons. The confirm button supports an
74
- * async loading state to prevent double-submission.
75
- *
76
- * **Import:** `import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog'`
77
- *
78
- * @example Delete confirmation with React state
79
- * ```tsx
80
- * import { useState } from 'react';
81
- * import { Button } from '@customafk/lunas-ui/ui/button';
82
- * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';
83
- *
84
- * export function DeleteUserButton({ userId }: { userId: string }) {
85
- * const [open, setOpen] = useState(false);
86
- * const [isPending, setIsPending] = useState(false);
87
- *
88
- * const handleDelete = async () => {
89
- * setIsPending(true);
90
- * try {
91
- * await deleteUser(userId);
92
- * setOpen(false);
93
- * } finally {
94
- * setIsPending(false);
95
- * }
96
- * };
97
- *
98
- * return (
99
- * <>
100
- * <Button variant="outline" color="danger" onClick={() => setOpen(true)}>
101
- * Delete user
102
- * </Button>
103
- * <ConfirmDialog
104
- * open={open}
105
- * title="Delete user?"
106
- * description="This action is permanent and cannot be undone."
107
- * submitText="Yes, delete"
108
- * isLoading={isPending}
109
- * onOpenChange={setOpen}
110
- * onConfirm={handleDelete}
111
- * />
112
- * </>
113
- * );
114
- * }
115
- * ```
116
- *
117
- * @example With TanStack Query mutation
118
- * ```tsx
119
- * import { ConfirmDialog } from '@customafk/lunas-ui/dialogs/confirm-dialog';
120
- * import { useMutation } from '@tanstack/react-query';
121
- *
122
- * export function ArchiveDialog({ open, onOpenChange, id }: Props) {
123
- * const { mutateAsync, isPending } = useMutation({ mutationFn: archiveItem });
124
- *
125
- * return (
126
- * <ConfirmDialog
127
- * open={open}
128
- * title="Archive item?"
129
- * description="The item will be hidden but can be restored later."
130
- * submitText="Archive"
131
- * isLoading={isPending}
132
- * onOpenChange={onOpenChange}
133
- * onConfirm={() => mutateAsync(id).then(() => onOpenChange(false))}
134
- * />
135
- * );
136
- * }
137
- * ```
138
- */
139
- declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
140
- //#endregion
141
- export { ConfirmDialog, ConfirmDialogProps };
142
- //# sourceMappingURL=confirm-dialog.d.cts.map
1
+ import { n as ConfirmDialogProps, t as ConfirmDialog } from "../confirm-dialog-B8Vu0z8S.cjs";
2
+ export { ConfirmDialog, ConfirmDialogProps };