@customafk/lunas-ui 0.0.7 → 0.0.9

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 (584) hide show
  1. package/dist/{add-new-BaABbnol.js → add-new-BaTjxsdU.js} +1 -1
  2. package/dist/{add-new-BaABbnol.js.map → add-new-BaTjxsdU.js.map} +1 -1
  3. package/dist/{add-new-DUoS_-n2.cjs → add-new-aIL8RwI8.cjs} +2 -2
  4. package/dist/{add-new-DUoS_-n2.cjs.map → add-new-aIL8RwI8.cjs.map} +1 -1
  5. package/dist/alert-dialog-0KwdjY-6.js.map +1 -1
  6. package/dist/{alert-dialog-D5ZqgIiC.cjs → alert-dialog-BQv-ZvW9.cjs} +2 -2
  7. package/dist/{alert-dialog-D5ZqgIiC.cjs.map → alert-dialog-BQv-ZvW9.cjs.map} +1 -1
  8. package/dist/badge-D_qEoSL8.js.map +1 -1
  9. package/dist/{badge-CRXT2dH_.cjs → badge-DfSj5nwV.cjs} +2 -2
  10. package/dist/{badge-CRXT2dH_.cjs.map → badge-DfSj5nwV.cjs.map} +1 -1
  11. package/dist/button-Bku3bKv9.js.map +1 -1
  12. package/dist/button-Blg2XhHo.d.ts +23 -0
  13. package/dist/{button-Dzv_nos1.cjs → button-CycE0WzB.cjs} +2 -2
  14. package/dist/{button-Dzv_nos1.cjs.map → button-CycE0WzB.cjs.map} +1 -1
  15. package/dist/button-DThtZ8g0.d.cts +23 -0
  16. package/dist/calendar-5D53vIAn.js +2 -0
  17. package/dist/calendar-5D53vIAn.js.map +1 -0
  18. package/dist/calendar-CPFb8F_s.cjs +2 -0
  19. package/dist/calendar-CPFb8F_s.cjs.map +1 -0
  20. package/dist/{card-Dta5eW8u.cjs → card-D7C05tvk.cjs} +2 -2
  21. package/dist/{card-Dta5eW8u.cjs.map → card-D7C05tvk.cjs.map} +1 -1
  22. package/dist/card-D8cxRC5y.js.map +1 -1
  23. package/dist/cards/simple-card.cjs +1 -1
  24. package/dist/cards/simple-card.cjs.map +1 -1
  25. package/dist/cards/simple-card.d.cts +2 -1
  26. package/dist/cards/simple-card.d.ts +2 -1
  27. package/dist/cards/simple-card.js.map +1 -1
  28. package/dist/chunk-hhQzssFb.cjs +1 -0
  29. package/dist/command-ByvjNMyq.d.cts +53 -0
  30. package/dist/{command-CsntVmEz.cjs → command-D8k85t1c.cjs} +2 -2
  31. package/dist/{command-CsntVmEz.cjs.map → command-D8k85t1c.cjs.map} +1 -1
  32. package/dist/command-DXhsKiMq.d.ts +53 -0
  33. package/dist/{command-_L9bD9a-.js → command-DieInaEN.js} +1 -1
  34. package/dist/{command-_L9bD9a-.js.map → command-DieInaEN.js.map} +1 -1
  35. package/dist/data-display/country.cjs +1 -1
  36. package/dist/data-display/country.cjs.map +1 -1
  37. package/dist/data-display/country.d.ts +1 -1
  38. package/dist/data-display/country.js.map +1 -1
  39. package/dist/data-display/data-list.cjs +1 -1
  40. package/dist/data-display/data-list.cjs.map +1 -1
  41. package/dist/data-display/data-list.js.map +1 -1
  42. package/dist/data-display/date.cjs +1 -1
  43. package/dist/data-display/empty.cjs +1 -1
  44. package/dist/data-display/empty.d.cts +3 -1
  45. package/dist/data-display/empty.d.ts +3 -1
  46. package/dist/data-display/name.cjs +1 -1
  47. package/dist/data-display/name.cjs.map +1 -1
  48. package/dist/data-display/name.js.map +1 -1
  49. package/dist/data-display/phone-number.cjs +1 -1
  50. package/dist/data-display/phone-number.cjs.map +1 -1
  51. package/dist/data-display/phone-number.js.map +1 -1
  52. package/dist/data-display/role-badge.cjs +1 -1
  53. package/dist/data-display/role-badge.cjs.map +1 -1
  54. package/dist/data-display/role-badge.d.ts +1 -1
  55. package/dist/data-display/role-badge.js.map +1 -1
  56. package/dist/data-display/statistic.cjs +1 -1
  57. package/dist/data-display/statistic.cjs.map +1 -1
  58. package/dist/data-display/statistic.d.cts +25 -1
  59. package/dist/data-display/statistic.d.ts +25 -1
  60. package/dist/data-display/statistic.js +1 -1
  61. package/dist/data-display/statistic.js.map +1 -1
  62. package/dist/date-BMq_DNsv.js.map +1 -1
  63. package/dist/{date-nd8WkPlx.cjs → date-ByLOGsKl.cjs} +2 -2
  64. package/dist/{date-nd8WkPlx.cjs.map → date-ByLOGsKl.cjs.map} +1 -1
  65. package/dist/{dialog-MLCAvDJH.d.ts → dialog-B3V9xxdD.d.cts} +12 -11
  66. package/dist/dialog-C4hf-Puw.js.map +1 -1
  67. package/dist/{dialog-W-DmDMEE.cjs → dialog-Cn8cFeu-.cjs} +2 -2
  68. package/dist/{dialog-W-DmDMEE.cjs.map → dialog-Cn8cFeu-.cjs.map} +1 -1
  69. package/dist/{dialog-D3VF5qxy.d.cts → dialog-Dlozd6qY.d.ts} +12 -11
  70. package/dist/dialogs/confirm-dialog.cjs +1 -1
  71. package/dist/dialogs/confirm-dialog.cjs.map +1 -1
  72. package/dist/dialogs/confirm-dialog.js.map +1 -1
  73. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  74. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  75. package/dist/dialogs/detail-dialog/index.js +1 -1
  76. package/dist/dialogs/detail-dialog/index.js.map +1 -1
  77. package/dist/dialogs/error-dialog.cjs +1 -1
  78. package/dist/dialogs/form-dialog.cjs +1 -1
  79. package/dist/dialogs/form-dialog.cjs.map +1 -1
  80. package/dist/dialogs/form-dialog.d.cts +2 -1
  81. package/dist/dialogs/form-dialog.d.ts +2 -1
  82. package/dist/dialogs/form-dialog.js.map +1 -1
  83. package/dist/dialogs/loading-dialog.cjs +1 -1
  84. package/dist/dialogs/loading-dialog.cjs.map +1 -1
  85. package/dist/dialogs/loading-dialog.js.map +1 -1
  86. package/dist/{dropdown-menu-Bv18S56o.cjs → dropdown-menu-D2Kh77uw.cjs} +2 -2
  87. package/dist/{dropdown-menu-Bv18S56o.cjs.map → dropdown-menu-D2Kh77uw.cjs.map} +1 -1
  88. package/dist/{dropdown-menu-jCQwh2rG.js → dropdown-menu-DTFOCPH_.js} +1 -1
  89. package/dist/{dropdown-menu-jCQwh2rG.js.map → dropdown-menu-DTFOCPH_.js.map} +1 -1
  90. package/dist/{error-dialog-DpQgL5Hy.cjs → error-dialog-DO0Bb-pi.cjs} +2 -2
  91. package/dist/{error-dialog-DpQgL5Hy.cjs.map → error-dialog-DO0Bb-pi.cjs.map} +1 -1
  92. package/dist/error-dialog-D_4WL-Hj.js.map +1 -1
  93. package/dist/flex-ILvQrYMJ.js.map +1 -1
  94. package/dist/{flex-CNA_SId-.cjs → flex-yTyoLpgH.cjs} +2 -2
  95. package/dist/{flex-CNA_SId-.cjs.map → flex-yTyoLpgH.cjs.map} +1 -1
  96. package/dist/form-CA4hhSV5.js.map +1 -1
  97. package/dist/{form-CYZkgobJ.cjs → form-C_PCHrpx.cjs} +2 -2
  98. package/dist/{form-CYZkgobJ.cjs.map → form-C_PCHrpx.cjs.map} +1 -1
  99. package/dist/form-wrapper-D-2Uz518.js.map +1 -1
  100. package/dist/{form-wrapper-BYbwt1zC.cjs → form-wrapper-FYiHHas7.cjs} +2 -2
  101. package/dist/{form-wrapper-BYbwt1zC.cjs.map → form-wrapper-FYiHHas7.cjs.map} +1 -1
  102. package/dist/forms/combobox-field.cjs +42 -0
  103. package/dist/forms/combobox-field.cjs.map +1 -0
  104. package/dist/forms/combobox-field.d.cts +28 -0
  105. package/dist/forms/combobox-field.d.ts +28 -0
  106. package/dist/forms/combobox-field.js +42 -0
  107. package/dist/forms/combobox-field.js.map +1 -0
  108. package/dist/forms/date-field.cjs +2 -0
  109. package/dist/forms/date-field.cjs.map +1 -0
  110. package/dist/forms/date-field.d.cts +22 -0
  111. package/dist/forms/date-field.d.ts +22 -0
  112. package/dist/forms/date-field.js +2 -0
  113. package/dist/forms/date-field.js.map +1 -0
  114. package/dist/forms/form-wrapper.cjs +1 -1
  115. package/dist/forms/form-wrapper.d.cts +2 -1
  116. package/dist/forms/form-wrapper.d.ts +2 -1
  117. package/dist/forms/multi-select-field.cjs +2 -0
  118. package/dist/forms/multi-select-field.cjs.map +1 -0
  119. package/dist/forms/multi-select-field.d.cts +30 -0
  120. package/dist/forms/multi-select-field.d.ts +30 -0
  121. package/dist/forms/multi-select-field.js +2 -0
  122. package/dist/forms/multi-select-field.js.map +1 -0
  123. package/dist/forms/number-field.cjs +2 -0
  124. package/dist/forms/number-field.cjs.map +1 -0
  125. package/dist/forms/number-field.d.cts +28 -0
  126. package/dist/forms/number-field.d.ts +28 -0
  127. package/dist/forms/number-field.js +2 -0
  128. package/dist/forms/number-field.js.map +1 -0
  129. package/dist/forms/password-field.cjs +2 -0
  130. package/dist/forms/password-field.cjs.map +1 -0
  131. package/dist/forms/password-field.d.cts +23 -0
  132. package/dist/forms/password-field.d.ts +23 -0
  133. package/dist/forms/password-field.js +2 -0
  134. package/dist/forms/password-field.js.map +1 -0
  135. package/dist/forms/select-field.cjs +2 -0
  136. package/dist/forms/select-field.cjs.map +1 -0
  137. package/dist/forms/select-field.d.cts +33 -0
  138. package/dist/forms/select-field.d.ts +33 -0
  139. package/dist/forms/select-field.js +2 -0
  140. package/dist/forms/select-field.js.map +1 -0
  141. package/dist/forms/switch-field.cjs +2 -0
  142. package/dist/forms/switch-field.cjs.map +1 -0
  143. package/dist/forms/switch-field.d.cts +19 -0
  144. package/dist/forms/switch-field.d.ts +19 -0
  145. package/dist/forms/switch-field.js +2 -0
  146. package/dist/forms/switch-field.js.map +1 -0
  147. package/dist/forms/text-field.cjs +2 -0
  148. package/dist/forms/text-field.cjs.map +1 -0
  149. package/dist/forms/text-field.d.cts +31 -0
  150. package/dist/forms/text-field.d.ts +31 -0
  151. package/dist/forms/text-field.js +2 -0
  152. package/dist/forms/text-field.js.map +1 -0
  153. package/dist/forms/textarea-field.cjs +2 -0
  154. package/dist/forms/textarea-field.cjs.map +1 -0
  155. package/dist/forms/textarea-field.d.cts +27 -0
  156. package/dist/forms/textarea-field.d.ts +27 -0
  157. package/dist/forms/textarea-field.js +2 -0
  158. package/dist/forms/textarea-field.js.map +1 -0
  159. package/dist/{input-DXEBB91E.cjs → input-C8Sebaue.cjs} +2 -2
  160. package/dist/{input-DXEBB91E.cjs.map → input-C8Sebaue.cjs.map} +1 -1
  161. package/dist/{input-D0Phuz25.d.cts → input-DlRU8OGl.d.cts} +3 -2
  162. package/dist/{input-FzKbxUq2.js → input-Dmaq3fzf.js} +1 -1
  163. package/dist/{input-FzKbxUq2.js.map → input-Dmaq3fzf.js.map} +1 -1
  164. package/dist/{input-tHIKXxVS.d.ts → input-yduNlg8y.d.ts} +3 -2
  165. package/dist/label-Cxbctr6x.js.map +1 -1
  166. package/dist/{label-CunjD1rx.cjs → label-i858Jr98.cjs} +2 -2
  167. package/dist/{label-CunjD1rx.cjs.map → label-i858Jr98.cjs.map} +1 -1
  168. package/dist/layouts/flex.cjs +1 -1
  169. package/dist/layouts/flex.d.cts +13 -2
  170. package/dist/layouts/flex.d.ts +13 -2
  171. package/dist/layouts/main/index.cjs +1 -1
  172. package/dist/layouts/main/index.cjs.map +1 -1
  173. package/dist/layouts/main/index.d.cts +14 -4
  174. package/dist/layouts/main/index.d.ts +14 -4
  175. package/dist/layouts/main/index.js +1 -1
  176. package/dist/layouts/main/index.js.map +1 -1
  177. package/dist/multi-select-Bbv0Z0TP.js +2 -0
  178. package/dist/multi-select-Bbv0Z0TP.js.map +1 -0
  179. package/dist/multi-select-EqlnkO5V.cjs +2 -0
  180. package/dist/multi-select-EqlnkO5V.cjs.map +1 -0
  181. package/dist/paragraph-Bey03JkA.js.map +1 -1
  182. package/dist/{paragraph-ZxI8zxuf.cjs → paragraph-DWQ0PZt_.cjs} +2 -2
  183. package/dist/{paragraph-ZxI8zxuf.cjs.map → paragraph-DWQ0PZt_.cjs.map} +1 -1
  184. package/dist/popover-B8j86VQv.js +2 -0
  185. package/dist/popover-B8j86VQv.js.map +1 -0
  186. package/dist/popover-CAokgoc_.cjs +2 -0
  187. package/dist/popover-CAokgoc_.cjs.map +1 -0
  188. package/dist/{progress-BnnOfAZN.cjs → progress-CHh9eRZi.cjs} +2 -2
  189. package/dist/{progress-BnnOfAZN.cjs.map → progress-CHh9eRZi.cjs.map} +1 -1
  190. package/dist/{progress-CBccqUUJ.js → progress-CeXKNvJc.js} +1 -1
  191. package/dist/{progress-CBccqUUJ.js.map → progress-CeXKNvJc.js.map} +1 -1
  192. package/dist/{refresh-BHt_h3N_.js → refresh-B__T7OFC.js} +1 -1
  193. package/dist/{refresh-BHt_h3N_.js.map → refresh-B__T7OFC.js.map} +1 -1
  194. package/dist/{refresh-DrolZxuC.cjs → refresh-BuL5nDf9.cjs} +2 -2
  195. package/dist/{refresh-DrolZxuC.cjs.map → refresh-BuL5nDf9.cjs.map} +1 -1
  196. package/dist/{scroll-area-Bdb_LSFF.js → scroll-area-C0KQbcG0.js} +1 -1
  197. package/dist/{scroll-area-Bdb_LSFF.js.map → scroll-area-C0KQbcG0.js.map} +1 -1
  198. package/dist/{scroll-area-DWWpaz5j.cjs → scroll-area-fNeFxa8L.cjs} +2 -2
  199. package/dist/{scroll-area-DWWpaz5j.cjs.map → scroll-area-fNeFxa8L.cjs.map} +1 -1
  200. package/dist/{search-input-L2sq0eB0.js → search-input-BGmx8sXy.js} +2 -2
  201. package/dist/{search-input-L2sq0eB0.js.map → search-input-BGmx8sXy.js.map} +1 -1
  202. package/dist/{search-input-Bf4-FeWu.cjs → search-input-CWCcWgmA.cjs} +2 -2
  203. package/dist/{search-input-Bf4-FeWu.cjs.map → search-input-CWCcWgmA.cjs.map} +1 -1
  204. package/dist/{select-CWUsisI0.js → select-4IO3vAjO.js} +1 -1
  205. package/dist/{select-CWUsisI0.js.map → select-4IO3vAjO.js.map} +1 -1
  206. package/dist/{select-ZSyt5zCe.cjs → select-UsiicIRo.cjs} +2 -2
  207. package/dist/{select-ZSyt5zCe.cjs.map → select-UsiicIRo.cjs.map} +1 -1
  208. package/dist/{separator-2cwfp8qT.d.ts → separator-C4XPc_2Y.d.cts} +3 -2
  209. package/dist/{separator-DTB3sDNG.cjs → separator-D4iTmsID.cjs} +2 -2
  210. package/dist/{separator-DTB3sDNG.cjs.map → separator-D4iTmsID.cjs.map} +1 -1
  211. package/dist/{separator-BpsL0PlX.js → separator-DMdqEz29.js} +1 -1
  212. package/dist/{separator-BpsL0PlX.js.map → separator-DMdqEz29.js.map} +1 -1
  213. package/dist/{separator-COXs-I-Q.d.cts → separator-o7tKOtGF.d.ts} +3 -2
  214. package/dist/{sheet-C8r2QGpq.js → sheet-2JqHfdYi.js} +1 -1
  215. package/dist/{sheet-C8r2QGpq.js.map → sheet-2JqHfdYi.js.map} +1 -1
  216. package/dist/{sheet-CCwbAaA6.cjs → sheet-Dr-a3-o2.cjs} +2 -2
  217. package/dist/{sheet-CCwbAaA6.cjs.map → sheet-Dr-a3-o2.cjs.map} +1 -1
  218. package/dist/{sidebar-C166f_9B.js → sidebar-COBzB7S8.js} +2 -2
  219. package/dist/{sidebar-C166f_9B.js.map → sidebar-COBzB7S8.js.map} +1 -1
  220. package/dist/{sidebar-BLPMNltJ.cjs → sidebar-gXuaHBie.cjs} +2 -2
  221. package/dist/{sidebar-BLPMNltJ.cjs.map → sidebar-gXuaHBie.cjs.map} +1 -1
  222. package/dist/{skeleton-m3giaF4T.cjs → skeleton-BTQm_mtV.cjs} +2 -2
  223. package/dist/{skeleton-m3giaF4T.cjs.map → skeleton-BTQm_mtV.cjs.map} +1 -1
  224. package/dist/{skeleton-DYmX0k94.js → skeleton-D1_Brnl9.js} +1 -1
  225. package/dist/{skeleton-DYmX0k94.js.map → skeleton-D1_Brnl9.js.map} +1 -1
  226. package/dist/switch-BlK-TC1h.js +2 -0
  227. package/dist/switch-BlK-TC1h.js.map +1 -0
  228. package/dist/switch-CoP3UwNk.cjs +2 -0
  229. package/dist/switch-CoP3UwNk.cjs.map +1 -0
  230. package/dist/table/index.cjs +1 -1
  231. package/dist/table/index.cjs.map +1 -1
  232. package/dist/table/index.d.cts +2 -1
  233. package/dist/table/index.d.ts +2 -1
  234. package/dist/table/index.js +1 -1
  235. package/dist/table/index.js.map +1 -1
  236. package/dist/{table-BSeev7T0.cjs → table-CFqnfTKO.cjs} +2 -2
  237. package/dist/{table-BSeev7T0.cjs.map → table-CFqnfTKO.cjs.map} +1 -1
  238. package/dist/{table-BvA64mE8.js → table-DrnU8YJP.js} +1 -1
  239. package/dist/{table-BvA64mE8.js.map → table-DrnU8YJP.js.map} +1 -1
  240. package/dist/textarea-Dz6npuI4.cjs +2 -0
  241. package/dist/textarea-Dz6npuI4.cjs.map +1 -0
  242. package/dist/textarea-dM1DYNfF.js +2 -0
  243. package/dist/textarea-dM1DYNfF.js.map +1 -0
  244. package/dist/{title-DTkABsIG.js → title-CA6PvqiD.js} +1 -1
  245. package/dist/{title-DTkABsIG.js.map → title-CA6PvqiD.js.map} +1 -1
  246. package/dist/{title-xsPZpQpb.cjs → title-CIQdEGOd.cjs} +2 -2
  247. package/dist/{title-xsPZpQpb.cjs.map → title-CIQdEGOd.cjs.map} +1 -1
  248. package/dist/toggle-BCSHdzP0.d.cts +20 -0
  249. package/dist/{toggle-D_MDMruK.js → toggle-CHJ2edke.js} +1 -1
  250. package/dist/{toggle-D_MDMruK.js.map → toggle-CHJ2edke.js.map} +1 -1
  251. package/dist/{toggle-CfL3GVe2.cjs → toggle-CzMYdDvC.cjs} +2 -2
  252. package/dist/{toggle-CfL3GVe2.cjs.map → toggle-CzMYdDvC.cjs.map} +1 -1
  253. package/dist/toggle-D42pqCTD.d.ts +20 -0
  254. package/dist/tooltip-DZ2Shzgg.d.ts +24 -0
  255. package/dist/tooltip-Dn8AOhc4.d.cts +24 -0
  256. package/dist/tooltip-Dzyf5smh.js.map +1 -1
  257. package/dist/{tooltip-Beb-_EPp.cjs → tooltip-MgToVOzy.cjs} +2 -2
  258. package/dist/{tooltip-Beb-_EPp.cjs.map → tooltip-MgToVOzy.cjs.map} +1 -1
  259. package/dist/{types-DLrIc2fL.d.ts → types-CmcNT14g.d.ts} +1 -1
  260. package/dist/types-CrbWxjnp.cjs.map +1 -1
  261. package/dist/types-DaIHddx7.js.map +1 -1
  262. package/dist/typography/paragraph.cjs +1 -1
  263. package/dist/typography/paragraph.d.cts +2 -1
  264. package/dist/typography/paragraph.d.ts +2 -1
  265. package/dist/typography/title.cjs +1 -1
  266. package/dist/typography/title.d.cts +3 -1
  267. package/dist/typography/title.d.ts +3 -1
  268. package/dist/typography/title.js +1 -1
  269. package/dist/ui/alert-dialog.cjs +1 -1
  270. package/dist/ui/alert-dialog.d.cts +12 -11
  271. package/dist/ui/alert-dialog.d.ts +12 -11
  272. package/dist/ui/alert.cjs +1 -1
  273. package/dist/ui/alert.cjs.map +1 -1
  274. package/dist/ui/alert.d.cts +8 -4
  275. package/dist/ui/alert.d.ts +8 -4
  276. package/dist/ui/alert.js.map +1 -1
  277. package/dist/ui/aspect-ratio.cjs +1 -1
  278. package/dist/ui/aspect-ratio.cjs.map +1 -1
  279. package/dist/ui/aspect-ratio.d.cts +2 -1
  280. package/dist/ui/aspect-ratio.d.ts +2 -1
  281. package/dist/ui/aspect-ratio.js.map +1 -1
  282. package/dist/ui/avatar.cjs +1 -1
  283. package/dist/ui/avatar.cjs.map +1 -1
  284. package/dist/ui/avatar.d.cts +4 -3
  285. package/dist/ui/avatar.d.ts +4 -3
  286. package/dist/ui/avatar.js.map +1 -1
  287. package/dist/ui/badge.cjs +1 -1
  288. package/dist/ui/badge.d.cts +8 -2
  289. package/dist/ui/badge.d.ts +8 -2
  290. package/dist/ui/breadcrumb.cjs +1 -1
  291. package/dist/ui/breadcrumb.cjs.map +1 -1
  292. package/dist/ui/breadcrumb.d.cts +8 -7
  293. package/dist/ui/breadcrumb.d.ts +8 -7
  294. package/dist/ui/breadcrumb.js.map +1 -1
  295. package/dist/ui/button.cjs +1 -1
  296. package/dist/ui/button.d.cts +1 -1
  297. package/dist/ui/button.d.ts +1 -1
  298. package/dist/ui/buttons/add-new.cjs +1 -1
  299. package/dist/ui/buttons/add-new.js +1 -1
  300. package/dist/ui/buttons/refresh.cjs +1 -1
  301. package/dist/ui/buttons/refresh.js +1 -1
  302. package/dist/ui/calendar.cjs +1 -2
  303. package/dist/ui/calendar.d.cts +4 -3
  304. package/dist/ui/calendar.d.ts +4 -3
  305. package/dist/ui/calendar.js +1 -2
  306. package/dist/ui/card.cjs +1 -1
  307. package/dist/ui/card.d.cts +8 -7
  308. package/dist/ui/card.d.ts +8 -7
  309. package/dist/ui/carousel.cjs +1 -1
  310. package/dist/ui/carousel.cjs.map +1 -1
  311. package/dist/ui/carousel.d.cts +7 -6
  312. package/dist/ui/carousel.d.ts +7 -6
  313. package/dist/ui/carousel.js.map +1 -1
  314. package/dist/ui/collapsible.cjs +1 -1
  315. package/dist/ui/collapsible.cjs.map +1 -1
  316. package/dist/ui/collapsible.d.cts +4 -3
  317. package/dist/ui/collapsible.d.ts +4 -3
  318. package/dist/ui/collapsible.js.map +1 -1
  319. package/dist/ui/command.cjs +1 -1
  320. package/dist/ui/command.d.cts +3 -52
  321. package/dist/ui/command.d.ts +3 -52
  322. package/dist/ui/command.js +1 -1
  323. package/dist/ui/context-menu.cjs +1 -1
  324. package/dist/ui/context-menu.cjs.map +1 -1
  325. package/dist/ui/context-menu.d.cts +16 -15
  326. package/dist/ui/context-menu.d.ts +16 -15
  327. package/dist/ui/context-menu.js.map +1 -1
  328. package/dist/ui/dialog.cjs +1 -1
  329. package/dist/ui/dialog.d.cts +1 -1
  330. package/dist/ui/dialog.d.ts +1 -1
  331. package/dist/ui/dropdown-menu.cjs +1 -1
  332. package/dist/ui/dropdown-menu.d.cts +16 -15
  333. package/dist/ui/dropdown-menu.d.ts +16 -15
  334. package/dist/ui/dropdown-menu.js +1 -1
  335. package/dist/ui/file-uploader.cjs +1 -1
  336. package/dist/ui/file-uploader.cjs.map +1 -1
  337. package/dist/ui/file-uploader.d.cts +2 -1
  338. package/dist/ui/file-uploader.d.ts +2 -1
  339. package/dist/ui/file-uploader.js +1 -1
  340. package/dist/ui/file-uploader.js.map +1 -1
  341. package/dist/ui/form.cjs +1 -1
  342. package/dist/ui/form.d.cts +23 -8
  343. package/dist/ui/form.d.ts +23 -8
  344. package/dist/ui/hover-card.cjs +1 -1
  345. package/dist/ui/hover-card.cjs.map +1 -1
  346. package/dist/ui/hover-card.d.cts +4 -3
  347. package/dist/ui/hover-card.d.ts +4 -3
  348. package/dist/ui/hover-card.js.map +1 -1
  349. package/dist/ui/input-otp.cjs +1 -1
  350. package/dist/ui/input-otp.cjs.map +1 -1
  351. package/dist/ui/input-otp.d.cts +5 -4
  352. package/dist/ui/input-otp.d.ts +5 -4
  353. package/dist/ui/input-otp.js.map +1 -1
  354. package/dist/ui/input.cjs +1 -1
  355. package/dist/ui/input.d.cts +1 -1
  356. package/dist/ui/input.d.ts +1 -1
  357. package/dist/ui/input.js +1 -1
  358. package/dist/ui/inputs/search-input.cjs +1 -1
  359. package/dist/ui/inputs/search-input.d.cts +3 -2
  360. package/dist/ui/inputs/search-input.d.ts +3 -2
  361. package/dist/ui/inputs/search-input.js +1 -1
  362. package/dist/ui/label.cjs +1 -1
  363. package/dist/ui/label.d.cts +2 -1
  364. package/dist/ui/label.d.ts +2 -1
  365. package/dist/ui/menubar.cjs +1 -1
  366. package/dist/ui/menubar.cjs.map +1 -1
  367. package/dist/ui/menubar.d.cts +17 -16
  368. package/dist/ui/menubar.d.ts +17 -16
  369. package/dist/ui/menubar.js.map +1 -1
  370. package/dist/ui/multi-select.cjs +1 -2
  371. package/dist/ui/multi-select.d.cts +61 -1
  372. package/dist/ui/multi-select.d.ts +61 -1
  373. package/dist/ui/multi-select.js +1 -2
  374. package/dist/ui/navigation-menu.cjs +1 -1
  375. package/dist/ui/navigation-menu.cjs.map +1 -1
  376. package/dist/ui/navigation-menu.d.cts +11 -9
  377. package/dist/ui/navigation-menu.d.ts +11 -9
  378. package/dist/ui/navigation-menu.js.map +1 -1
  379. package/dist/ui/pagination.cjs +1 -1
  380. package/dist/ui/pagination.cjs.map +1 -1
  381. package/dist/ui/pagination.d.cts +9 -8
  382. package/dist/ui/pagination.d.ts +9 -8
  383. package/dist/ui/pagination.js.map +1 -1
  384. package/dist/ui/popover.cjs +1 -2
  385. package/dist/ui/popover.d.cts +5 -4
  386. package/dist/ui/popover.d.ts +5 -4
  387. package/dist/ui/popover.js +1 -2
  388. package/dist/ui/progress.cjs +1 -1
  389. package/dist/ui/progress.d.cts +2 -1
  390. package/dist/ui/progress.d.ts +2 -1
  391. package/dist/ui/progress.js +1 -1
  392. package/dist/ui/radio-group.cjs +1 -1
  393. package/dist/ui/radio-group.cjs.map +1 -1
  394. package/dist/ui/radio-group.d.cts +3 -2
  395. package/dist/ui/radio-group.d.ts +3 -2
  396. package/dist/ui/radio-group.js.map +1 -1
  397. package/dist/ui/resizable.cjs +1 -1
  398. package/dist/ui/resizable.cjs.map +1 -1
  399. package/dist/ui/resizable.d.cts +4 -3
  400. package/dist/ui/resizable.d.ts +4 -3
  401. package/dist/ui/resizable.js.map +1 -1
  402. package/dist/ui/scroll-area.cjs +1 -1
  403. package/dist/ui/scroll-area.d.cts +3 -2
  404. package/dist/ui/scroll-area.d.ts +3 -2
  405. package/dist/ui/scroll-area.js +1 -1
  406. package/dist/ui/select.cjs +1 -1
  407. package/dist/ui/select.d.cts +11 -10
  408. package/dist/ui/select.d.ts +11 -10
  409. package/dist/ui/select.js +1 -1
  410. package/dist/ui/separator.cjs +1 -1
  411. package/dist/ui/separator.d.cts +1 -1
  412. package/dist/ui/separator.d.ts +1 -1
  413. package/dist/ui/separator.js +1 -1
  414. package/dist/ui/sheet.cjs +1 -1
  415. package/dist/ui/sheet.d.cts +9 -8
  416. package/dist/ui/sheet.d.ts +9 -8
  417. package/dist/ui/sheet.js +1 -1
  418. package/dist/ui/sidebar.cjs +1 -1
  419. package/dist/ui/sidebar.d.cts +43 -29
  420. package/dist/ui/sidebar.d.ts +43 -29
  421. package/dist/ui/sidebar.js +1 -1
  422. package/dist/ui/skeleton.cjs +1 -1
  423. package/dist/ui/skeleton.d.cts +2 -1
  424. package/dist/ui/skeleton.d.ts +2 -1
  425. package/dist/ui/skeleton.js +1 -1
  426. package/dist/ui/slider.cjs +1 -1
  427. package/dist/ui/slider.cjs.map +1 -1
  428. package/dist/ui/slider.d.cts +2 -1
  429. package/dist/ui/slider.d.ts +2 -1
  430. package/dist/ui/slider.js.map +1 -1
  431. package/dist/ui/sonner.cjs +1 -1
  432. package/dist/ui/sonner.cjs.map +1 -1
  433. package/dist/ui/sonner.d.cts +3 -1
  434. package/dist/ui/sonner.d.ts +3 -1
  435. package/dist/ui/sonner.js.map +1 -1
  436. package/dist/ui/switch.cjs +1 -2
  437. package/dist/ui/switch.d.cts +2 -1
  438. package/dist/ui/switch.d.ts +2 -1
  439. package/dist/ui/switch.js +1 -2
  440. package/dist/ui/table.cjs +1 -1
  441. package/dist/ui/table.d.cts +9 -8
  442. package/dist/ui/table.d.ts +9 -8
  443. package/dist/ui/table.js +1 -1
  444. package/dist/ui/tabs.cjs +1 -1
  445. package/dist/ui/tabs.cjs.map +1 -1
  446. package/dist/ui/tabs.d.cts +5 -4
  447. package/dist/ui/tabs.d.ts +5 -4
  448. package/dist/ui/tabs.js.map +1 -1
  449. package/dist/ui/textarea.cjs +1 -2
  450. package/dist/ui/textarea.d.cts +2 -1
  451. package/dist/ui/textarea.d.ts +2 -1
  452. package/dist/ui/textarea.js +1 -2
  453. package/dist/ui/toggle-group.cjs +1 -1
  454. package/dist/ui/toggle-group.cjs.map +1 -1
  455. package/dist/ui/toggle-group.d.cts +4 -3
  456. package/dist/ui/toggle-group.d.ts +4 -3
  457. package/dist/ui/toggle-group.js +1 -1
  458. package/dist/ui/toggle-group.js.map +1 -1
  459. package/dist/ui/toggle.cjs +1 -1
  460. package/dist/ui/toggle.d.cts +1 -1
  461. package/dist/ui/toggle.d.ts +1 -1
  462. package/dist/ui/toggle.js +1 -1
  463. package/dist/ui/tooltip.cjs +1 -1
  464. package/dist/ui/tooltip.d.cts +1 -1
  465. package/dist/ui/tooltip.d.ts +1 -1
  466. package/dist/utils-D9AH0PUV.js +1 -1
  467. package/dist/utils-D9AH0PUV.js.map +1 -1
  468. package/dist/utils-DaJ1XZgX.cjs +2 -0
  469. package/dist/{utils-BsjVK5EW.cjs.map → utils-DaJ1XZgX.cjs.map} +1 -1
  470. package/package.json +51 -4
  471. package/packages/components/cards/simple-card.tsx +37 -0
  472. package/packages/components/data-display/country.tsx +59 -0
  473. package/packages/components/data-display/data-list.tsx +38 -0
  474. package/packages/components/data-display/date.tsx +215 -0
  475. package/packages/components/data-display/empty.tsx +25 -0
  476. package/packages/components/data-display/name.tsx +25 -0
  477. package/packages/components/data-display/phone-number.tsx +22 -0
  478. package/packages/components/data-display/role-badge.tsx +33 -0
  479. package/packages/components/data-display/statistic.tsx +141 -0
  480. package/packages/components/dialogs/confirm-dialog.tsx +51 -0
  481. package/packages/components/dialogs/detail-dialog/component/header.tsx +14 -0
  482. package/packages/components/dialogs/detail-dialog/component/main.tsx +39 -0
  483. package/packages/components/dialogs/detail-dialog/component/sidebar.tsx +747 -0
  484. package/packages/components/dialogs/detail-dialog/component/wrapper.tsx +17 -0
  485. package/packages/components/dialogs/detail-dialog/index.tsx +100 -0
  486. package/packages/components/dialogs/error-dialog.tsx +48 -0
  487. package/packages/components/dialogs/form-dialog.tsx +106 -0
  488. package/packages/components/dialogs/loading-dialog.tsx +23 -0
  489. package/packages/components/forms/combobox-field.tsx +113 -0
  490. package/packages/components/forms/date-field.tsx +65 -0
  491. package/packages/components/forms/form-wrapper.tsx +146 -0
  492. package/packages/components/forms/multi-select-field.tsx +56 -0
  493. package/packages/components/forms/number-field.tsx +56 -0
  494. package/packages/components/forms/password-field.tsx +38 -0
  495. package/packages/components/forms/select-field.tsx +58 -0
  496. package/packages/components/forms/switch-field.tsx +42 -0
  497. package/packages/components/forms/text-field.tsx +80 -0
  498. package/packages/components/forms/textarea-field.tsx +53 -0
  499. package/packages/components/index.tsx +0 -0
  500. package/packages/components/layouts/flex.tsx +110 -0
  501. package/packages/components/layouts/main/content.tsx +11 -0
  502. package/packages/components/layouts/main/header.tsx +53 -0
  503. package/packages/components/layouts/main/index.tsx +3 -0
  504. package/packages/components/layouts/main/wrapper.tsx +5 -0
  505. package/packages/components/table/data-table-pagination.tsx +99 -0
  506. package/packages/components/table/data-table.tsx +328 -0
  507. package/packages/components/table/index.tsx +126 -0
  508. package/packages/components/typography/paragraph.tsx +32 -0
  509. package/packages/components/typography/title.tsx +36 -0
  510. package/packages/components/ui/alert-dialog.tsx +173 -0
  511. package/packages/components/ui/alert.tsx +71 -0
  512. package/packages/components/ui/aspect-ratio.tsx +20 -0
  513. package/packages/components/ui/avatar.tsx +52 -0
  514. package/packages/components/ui/badge.tsx +63 -0
  515. package/packages/components/ui/breadcrumb.tsx +110 -0
  516. package/packages/components/ui/button.tsx +88 -0
  517. package/packages/components/ui/buttons/add-new.tsx +26 -0
  518. package/packages/components/ui/buttons/refresh.tsx +30 -0
  519. package/packages/components/ui/calendar.tsx +209 -0
  520. package/packages/components/ui/card.tsx +95 -0
  521. package/packages/components/ui/carousel.tsx +241 -0
  522. package/packages/components/ui/checkbox.tsx +44 -0
  523. package/packages/components/ui/collapsible.tsx +33 -0
  524. package/packages/components/ui/command.tsx +217 -0
  525. package/packages/components/ui/context-menu.tsx +258 -0
  526. package/packages/components/ui/dialog.tsx +174 -0
  527. package/packages/components/ui/dropdown-menu.tsx +318 -0
  528. package/packages/components/ui/file-uploader.tsx +372 -0
  529. package/packages/components/ui/form.tsx +168 -0
  530. package/packages/components/ui/hover-card.tsx +43 -0
  531. package/packages/components/ui/input-otp.tsx +76 -0
  532. package/packages/components/ui/input.tsx +59 -0
  533. package/packages/components/ui/inputs/number-input.tsx +325 -0
  534. package/packages/components/ui/inputs/password-input.tsx +35 -0
  535. package/packages/components/ui/inputs/search-input.tsx +24 -0
  536. package/packages/components/ui/label.tsx +29 -0
  537. package/packages/components/ui/menubar.tsx +275 -0
  538. package/packages/components/ui/multi-select.tsx +693 -0
  539. package/packages/components/ui/navigation-menu.tsx +170 -0
  540. package/packages/components/ui/pagination.tsx +128 -0
  541. package/packages/components/ui/popover.tsx +64 -0
  542. package/packages/components/ui/progress.tsx +30 -0
  543. package/packages/components/ui/radio-group.tsx +53 -0
  544. package/packages/components/ui/resizable.tsx +55 -0
  545. package/packages/components/ui/scroll-area.tsx +51 -0
  546. package/packages/components/ui/select.tsx +246 -0
  547. package/packages/components/ui/separator.tsx +27 -0
  548. package/packages/components/ui/sheet.tsx +155 -0
  549. package/packages/components/ui/sidebar.tsx +751 -0
  550. package/packages/components/ui/skeleton.tsx +15 -0
  551. package/packages/components/ui/slider.tsx +62 -0
  552. package/packages/components/ui/sonner.tsx +43 -0
  553. package/packages/components/ui/switch.tsx +52 -0
  554. package/packages/components/ui/table.tsx +118 -0
  555. package/packages/components/ui/tabs.tsx +85 -0
  556. package/packages/components/ui/textarea.tsx +47 -0
  557. package/packages/components/ui/toggle-group.tsx +72 -0
  558. package/packages/components/ui/toggle.tsx +47 -0
  559. package/packages/components/ui/tooltip.tsx +71 -0
  560. package/packages/constants.tsx +79 -0
  561. package/packages/hooks/use-callback-ref.ts +27 -0
  562. package/packages/hooks/use-controllable-state.ts +67 -0
  563. package/packages/hooks/use-mobile.ts +21 -0
  564. package/packages/index.css +392 -0
  565. package/packages/lib/utils.ts +28 -0
  566. package/packages/types.ts +50 -0
  567. package/dist/button-D_E_bNRb.d.ts +0 -18
  568. package/dist/button-YHI7I64h.d.cts +0 -18
  569. package/dist/chunk-CUT6urMc.cjs +0 -1
  570. package/dist/toggle-BVkMTVAz.d.ts +0 -15
  571. package/dist/toggle-CW-ZnYMy.d.cts +0 -15
  572. package/dist/tooltip-Cjuu_Ld4.d.ts +0 -23
  573. package/dist/tooltip-Dk4HsZVR.d.cts +0 -23
  574. package/dist/ui/calendar.cjs.map +0 -1
  575. package/dist/ui/calendar.js.map +0 -1
  576. package/dist/ui/multi-select.cjs.map +0 -1
  577. package/dist/ui/multi-select.js.map +0 -1
  578. package/dist/ui/popover.cjs.map +0 -1
  579. package/dist/ui/popover.js.map +0 -1
  580. package/dist/ui/switch.cjs.map +0 -1
  581. package/dist/ui/switch.js.map +0 -1
  582. package/dist/ui/textarea.cjs.map +0 -1
  583. package/dist/ui/textarea.js.map +0 -1
  584. package/dist/utils-BsjVK5EW.cjs +0 -2
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`date-fns`)),a={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 1`,`Tháng 2`,`Tháng 3`,`Tháng 4`,`Tháng 5`,`Tháng 6`,`Tháng 7`,`Tháng 8`,`Tháng 9`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},o={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`},s=Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3}),c=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60}),l=Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60}),u=({date:e,format:s=`medium`,showHoliday:l=!1,showTime:u=!1,className:d=``,title:f})=>{let p=n.default.useMemo(()=>{try{if(e instanceof Date)return(0,i.isValid)(e)?e:null;if(typeof e==`string`){let t=(0,i.parseISO)(e);return(0,i.isValid)(t)?t:new Date(e)}if(typeof e==`number`){let t=new Date(e);return(0,i.isValid)(t)?t:null}return null}catch{return null}},[e]),m=n.default.useCallback(e=>{let t=new Date,n=Math.floor((t.getTime()-e.getTime())/1e3);return n<60?`Vừa xong`:n<3600?`${Math.floor(n/c.MINUTE)} phút trước`:n<86400?`${Math.floor(n/c.HOUR)} giờ trước`:n<604800?`${Math.floor(n/c.DAY)} ngày trước`:n<2592e3?`${Math.floor(n/c.WEEK)} tuần trước`:n<31536e3?`${Math.floor(n/c.MONTH)} tháng trước`:`${Math.floor(n/c.YEAR)} năm trước`},[]),h=n.default.useCallback((e,t=!1)=>{let n=e.getDay();return t?a.weekdaysShort[n]:a.weekdays[n]},[]),g=n.default.useCallback((e,t=!1)=>{let n=e.getMonth();return t?a.monthsShort[n]:a.months[n]},[]),_=n.default.useCallback(e=>{let t=(0,i.format)(e,`MM-dd`);return o[t]||null},[]),v=n.default.useCallback(e=>{if((0,i.isToday)(e))return u?`Hôm nay ${(0,i.format)(e,`HH:mm`)}`:`Hôm nay`;if((0,i.isYesterday)(e))return u?`Hôm qua ${(0,i.format)(e,`HH:mm`)}`:`Hôm qua`;if((0,i.isTomorrow)(e))return u?`Ngày mai ${(0,i.format)(e,`HH:mm`)}`:`Ngày mai`;if((0,i.isThisWeek)(e)){let t=h(e);return u?`${t} ${(0,i.format)(e,`HH:mm`)}`:t}if((0,i.isThisMonth)(e)){let t=(0,i.format)(e,`d`);return u?`${t}/${(0,i.format)(e,`M`)} ${(0,i.format)(e,`HH:mm`)}`:`${t}/${(0,i.format)(e,`M`)}`}return(0,i.isThisYear)(e)?u?(0,i.format)(e,`d/M HH:mm`):(0,i.format)(e,`d/M`):u?(0,i.format)(e,`d/M/yyyy HH:mm`):(0,i.format)(e,`d/M/yyyy`)},[h,u]),y=n.default.useCallback((e,t)=>{let n=u?(0,i.format)(e,`, HH:mm`):``;switch(t){case`short`:return(0,i.format)(e,`d/M/yy`)+n;case`medium`:return(0,i.format)(e,`dd/MM/yyyy`)+n;case`long`:return`${(0,i.format)(e,`d`)} ${g(e)} ${(0,i.format)(e,`yyyy`)}`+n;case`full`:{let t=`${h(e)}, ngày ${(0,i.format)(e,`d`)} ${g(e)} năm ${(0,i.format)(e,`yyyy`)}`;return t+n}case`relative`:return m(e);case`datetime`:return(0,i.format)(e,`d/M/yyyy HH:mm`);case`time`:return(0,i.format)(e,`HH:mm`);case`smart`:return v(e);default:return(0,i.format)(e,`d/M/yyyy`)+n}},[v,g,h,m,u]);if(!p)return(0,r.jsx)(`span`,{className:t.cn(`text-muted-foreground text-sm`,d),children:`--/--/----`});let b=y(p,s),x=l?_(p):null,S=x?`${b} (${x})`:b,C=f||(0,i.format)(p,`EEEE, d MMMM yyyy HH:mm:ss`);return(0,r.jsx)(`time`,{dateTime:p.toISOString(),className:t.cn(`text-accent-foreground font-number text-sm`,d),title:C,children:S})};Object.defineProperty(exports,`DateDisplay`,{enumerable:!0,get:function(){return u}});
2
- //# sourceMappingURL=date-nd8WkPlx.cjs.map
1
+ const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./utils-DaJ1XZgX.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`date-fns`)),a={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 1`,`Tháng 2`,`Tháng 3`,`Tháng 4`,`Tháng 5`,`Tháng 6`,`Tháng 7`,`Tháng 8`,`Tháng 9`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},o={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`},s=Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3}),c=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60}),l=Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60}),u=({date:e,format:s=`medium`,showHoliday:l=!1,showTime:u=!1,className:d=``,title:f})=>{let p=n.default.useMemo(()=>{try{if(e instanceof Date)return(0,i.isValid)(e)?e:null;if(typeof e==`string`){let t=(0,i.parseISO)(e);return(0,i.isValid)(t)?t:new Date(e)}if(typeof e==`number`){let t=new Date(e);return(0,i.isValid)(t)?t:null}return null}catch{return null}},[e]),m=n.default.useCallback(e=>{let t=new Date,n=Math.floor((t.getTime()-e.getTime())/1e3);return n<60?`Vừa xong`:n<3600?`${Math.floor(n/c.MINUTE)} phút trước`:n<86400?`${Math.floor(n/c.HOUR)} giờ trước`:n<604800?`${Math.floor(n/c.DAY)} ngày trước`:n<2592e3?`${Math.floor(n/c.WEEK)} tuần trước`:n<31536e3?`${Math.floor(n/c.MONTH)} tháng trước`:`${Math.floor(n/c.YEAR)} năm trước`},[]),h=n.default.useCallback((e,t=!1)=>{let n=e.getDay();return t?a.weekdaysShort[n]:a.weekdays[n]},[]),g=n.default.useCallback((e,t=!1)=>{let n=e.getMonth();return t?a.monthsShort[n]:a.months[n]},[]),_=n.default.useCallback(e=>{let t=(0,i.format)(e,`MM-dd`);return o[t]||null},[]),v=n.default.useCallback(e=>{if((0,i.isToday)(e))return u?`Hôm nay ${(0,i.format)(e,`HH:mm`)}`:`Hôm nay`;if((0,i.isYesterday)(e))return u?`Hôm qua ${(0,i.format)(e,`HH:mm`)}`:`Hôm qua`;if((0,i.isTomorrow)(e))return u?`Ngày mai ${(0,i.format)(e,`HH:mm`)}`:`Ngày mai`;if((0,i.isThisWeek)(e)){let t=h(e);return u?`${t} ${(0,i.format)(e,`HH:mm`)}`:t}if((0,i.isThisMonth)(e)){let t=(0,i.format)(e,`d`);return u?`${t}/${(0,i.format)(e,`M`)} ${(0,i.format)(e,`HH:mm`)}`:`${t}/${(0,i.format)(e,`M`)}`}return(0,i.isThisYear)(e)?u?(0,i.format)(e,`d/M HH:mm`):(0,i.format)(e,`d/M`):u?(0,i.format)(e,`d/M/yyyy HH:mm`):(0,i.format)(e,`d/M/yyyy`)},[h,u]),y=n.default.useCallback((e,t)=>{let n=u?(0,i.format)(e,`, HH:mm`):``;switch(t){case`short`:return(0,i.format)(e,`d/M/yy`)+n;case`medium`:return(0,i.format)(e,`dd/MM/yyyy`)+n;case`long`:return`${(0,i.format)(e,`d`)} ${g(e)} ${(0,i.format)(e,`yyyy`)}`+n;case`full`:{let t=`${h(e)}, ngày ${(0,i.format)(e,`d`)} ${g(e)} năm ${(0,i.format)(e,`yyyy`)}`;return t+n}case`relative`:return m(e);case`datetime`:return(0,i.format)(e,`d/M/yyyy HH:mm`);case`time`:return(0,i.format)(e,`HH:mm`);case`smart`:return v(e);default:return(0,i.format)(e,`d/M/yyyy`)+n}},[v,g,h,m,u]);if(!p)return(0,r.jsx)(`span`,{className:t.cn(`text-muted-foreground text-sm`,d),children:`--/--/----`});let b=y(p,s),x=l?_(p):null,S=x?`${b} (${x})`:b,C=f||(0,i.format)(p,`EEEE, d MMMM yyyy HH:mm:ss`);return(0,r.jsx)(`time`,{dateTime:p.toISOString(),className:t.cn(`text-accent-foreground font-number text-sm`,d),title:C,children:S})};Object.defineProperty(exports,`DateDisplay`,{enumerable:!0,get:function(){return u}});
2
+ //# sourceMappingURL=date-ByLOGsKl.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-nd8WkPlx.cjs","names":["DateDisplay: React.FC<Props>","React","date","cn"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: [\n \"Chủ Nhật\",\n \"Thứ Hai\",\n \"Thứ Ba\",\n \"Thứ Tư\",\n \"Thứ Năm\",\n \"Thứ Sáu\",\n \"Thứ Bảy\",\n ],\n weekdaysShort: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n months: [\n \"Tháng 1\",\n \"Tháng 2\",\n \"Tháng 3\",\n \"Tháng 4\",\n \"Tháng 5\",\n \"Tháng 6\",\n \"Tháng 7\",\n \"Tháng 8\",\n \"Tháng 9\",\n \"Tháng 10\",\n \"Tháng 11\",\n \"Tháng 12\",\n ],\n monthsShort: [\n \"T1\",\n \"T2\",\n \"T3\",\n \"T4\",\n \"T5\",\n \"T6\",\n \"T7\",\n \"T8\",\n \"T9\",\n \"T10\",\n \"T11\",\n \"T12\",\n ],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n \"01-01\": \"Tết Dương lịch\",\n \"03-08\": \"Quốc tế Phụ nữ\",\n \"04-30\": \"Ngày Giải phóng miền Nam\",\n \"05-01\": \"Quốc tế Lao động\",\n \"09-02\": \"Quốc khánh\",\n \"10-20\": \"Ngày Phụ nữ Việt Nam\",\n \"11-20\": \"Ngày Nhà giáo Việt Nam\",\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","import React from \"react\";\nimport {\n format,\n isThisMonth,\n isThisWeek,\n isThisYear,\n isToday,\n isTomorrow,\n isValid,\n isYesterday,\n parseISO,\n} from \"date-fns\";\n\nimport {\n TIME_IN_SECONDS,\n vietnameseHolidays,\n vietnameseLocale,\n} from \"@/constants\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props {\n date: Date | string | number;\n format?:\n | \"short\" // 15/03/24\n | \"medium\" // 15/03/2024\n | \"long\" // 15 tháng 3, 2024\n | \"full\" // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | \"relative\" // 2 giờ trước\n | \"datetime\" // 15/03/2024 14:30\n | \"time\" // 14:30\n | \"smart\"; // Tự động chọn format phù hợp\n showHoliday?: boolean;\n showTime?: boolean;\n className?: string;\n title?: string; // Tooltip khi hover\n}\n\nexport const DateDisplay: React.FC<Props> = ({\n date,\n format: formatType = \"medium\",\n showHoliday = false,\n showTime = false,\n className = \"\",\n title,\n}) => {\n const parsedDate = React.useMemo(() => {\n try {\n if (date instanceof Date) {\n return isValid(date) ? date : null;\n }\n if (typeof date === \"string\") {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === \"number\") {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n // Format relative time in Vietnamese\n const formatRelativeTime = React.useCallback((date: Date): string => {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n if (diffInSeconds < 60) return \"Vừa xong\";\n if (diffInSeconds < 3600)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n // Vietnamese weekday\n const getVietnameseWeekday = React.useCallback(\n (date: Date, short: boolean = false): string => {\n const dayIndex = date.getDay();\n return short\n ? vietnameseLocale.weekdaysShort[dayIndex]\n : vietnameseLocale.weekdays[dayIndex];\n },\n [],\n );\n\n // Vietnamese month\n const getVietnameseMonth = React.useCallback(\n (date: Date, short: boolean = false): string => {\n const monthIndex = date.getMonth();\n return short\n ? vietnameseLocale.monthsShort[monthIndex]\n : vietnameseLocale.months[monthIndex];\n },\n [],\n );\n\n // Check holiday\n const getHoliday = React.useCallback((date: Date): string | null => {\n const monthDay = format(date, \"MM-dd\") as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n // Smart format - choose appropriate format based on date\n const getSmartFormat = React.useCallback(\n (date: Date): string => {\n if (isToday(date)) {\n return showTime ? `Hôm nay ${format(date, \"HH:mm\")}` : \"Hôm nay\";\n }\n if (isYesterday(date)) {\n return showTime ? `Hôm qua ${format(date, \"HH:mm\")}` : \"Hôm qua\";\n }\n if (isTomorrow(date)) {\n return showTime ? `Ngày mai ${format(date, \"HH:mm\")}` : \"Ngày mai\";\n }\n if (isThisWeek(date)) {\n const weekday = getVietnameseWeekday(date);\n return showTime ? `${weekday} ${format(date, \"HH:mm\")}` : weekday;\n }\n if (isThisMonth(date)) {\n const day = format(date, \"d\");\n return showTime\n ? `${day}/${format(date, \"M\")} ${format(date, \"HH:mm\")}`\n : `${day}/${format(date, \"M\")}`;\n }\n if (isThisYear(date)) {\n return showTime ? format(date, \"d/M HH:mm\") : format(date, \"d/M\");\n }\n return showTime\n ? format(date, \"d/M/yyyy HH:mm\")\n : format(date, \"d/M/yyyy\");\n },\n [getVietnameseWeekday, showTime],\n );\n\n // Main formatting function\n const formatDate = React.useCallback(\n (date: Date, type: string): string => {\n const timeStr = showTime ? format(date, \", HH:mm\") : \"\";\n\n switch (type) {\n case \"short\":\n return format(date, \"d/M/yy\") + timeStr;\n\n case \"medium\":\n return format(date, \"dd/MM/yyyy\") + timeStr;\n\n case \"long\":\n return (\n `${format(date, \"d\")} ${getVietnameseMonth(date)} ${format(date, \"yyyy\")}` +\n timeStr\n );\n\n case \"full\": {\n const data = `${getVietnameseWeekday(date)}, ngày ${format(date, \"d\")} ${getVietnameseMonth(date)} năm ${format(date, \"yyyy\")}`;\n return data + timeStr;\n }\n\n case \"relative\":\n return formatRelativeTime(date);\n\n case \"datetime\":\n return format(date, \"d/M/yyyy HH:mm\");\n\n case \"time\":\n return format(date, \"HH:mm\");\n\n case \"smart\":\n return getSmartFormat(date);\n\n default:\n return format(date, \"d/M/yyyy\") + timeStr;\n }\n },\n [\n getSmartFormat,\n getVietnameseMonth,\n getVietnameseWeekday,\n formatRelativeTime,\n showTime,\n ],\n );\n\n if (!parsedDate) {\n return (\n <span className={cn(\"text-muted-foreground text-sm\", className)}>\n --/--/----\n </span>\n );\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle =\n title || format(parsedDate, \"EEEE, d MMMM yyyy HH:mm:ss\");\n\n return (\n <time\n dateTime={parsedDate.toISOString()}\n className={cn(\"text-accent-foreground font-number text-sm\", className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-ByLOGsKl.cjs","names":["DateDisplay: React.FC<Props>","React","date","cn"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: [\n \"Chủ Nhật\",\n \"Thứ Hai\",\n \"Thứ Ba\",\n \"Thứ Tư\",\n \"Thứ Năm\",\n \"Thứ Sáu\",\n \"Thứ Bảy\",\n ],\n weekdaysShort: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n months: [\n \"Tháng 1\",\n \"Tháng 2\",\n \"Tháng 3\",\n \"Tháng 4\",\n \"Tháng 5\",\n \"Tháng 6\",\n \"Tháng 7\",\n \"Tháng 8\",\n \"Tháng 9\",\n \"Tháng 10\",\n \"Tháng 11\",\n \"Tháng 12\",\n ],\n monthsShort: [\n \"T1\",\n \"T2\",\n \"T3\",\n \"T4\",\n \"T5\",\n \"T6\",\n \"T7\",\n \"T8\",\n \"T9\",\n \"T10\",\n \"T11\",\n \"T12\",\n ],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n \"01-01\": \"Tết Dương lịch\",\n \"03-08\": \"Quốc tế Phụ nữ\",\n \"04-30\": \"Ngày Giải phóng miền Nam\",\n \"05-01\": \"Quốc tế Lao động\",\n \"09-02\": \"Quốc khánh\",\n \"10-20\": \"Ngày Phụ nữ Việt Nam\",\n \"11-20\": \"Ngày Nhà giáo Việt Nam\",\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","import React from \"react\";\nimport {\n format,\n isThisMonth,\n isThisWeek,\n isThisYear,\n isToday,\n isTomorrow,\n isValid,\n isYesterday,\n parseISO,\n} from \"date-fns\";\n\nimport {\n TIME_IN_SECONDS,\n vietnameseHolidays,\n vietnameseLocale,\n} from \"@/constants\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props {\n date: Date | string | number;\n format?:\n | \"short\" // 15/03/24\n | \"medium\" // 15/03/2024\n | \"long\" // 15 tháng 3, 2024\n | \"full\" // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | \"relative\" // 2 giờ trước\n | \"datetime\" // 15/03/2024 14:30\n | \"time\" // 14:30\n | \"smart\"; // Tự động chọn format phù hợp\n showHoliday?: boolean;\n showTime?: boolean;\n className?: string;\n title?: string; // Tooltip khi hover\n}\n\nexport const DateDisplay: React.FC<Props> = ({\n date,\n format: formatType = \"medium\",\n showHoliday = false,\n showTime = false,\n className = \"\",\n title,\n}) => {\n const parsedDate = React.useMemo(() => {\n try {\n if (date instanceof Date) {\n return isValid(date) ? date : null;\n }\n if (typeof date === \"string\") {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === \"number\") {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n // Format relative time in Vietnamese\n const formatRelativeTime = React.useCallback((date: Date): string => {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n if (diffInSeconds < 60) return \"Vừa xong\";\n if (diffInSeconds < 3600)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000)\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n // Vietnamese weekday\n const getVietnameseWeekday = React.useCallback(\n (date: Date, short: boolean = false): string => {\n const dayIndex = date.getDay();\n return short\n ? vietnameseLocale.weekdaysShort[dayIndex]\n : vietnameseLocale.weekdays[dayIndex];\n },\n [],\n );\n\n // Vietnamese month\n const getVietnameseMonth = React.useCallback(\n (date: Date, short: boolean = false): string => {\n const monthIndex = date.getMonth();\n return short\n ? vietnameseLocale.monthsShort[monthIndex]\n : vietnameseLocale.months[monthIndex];\n },\n [],\n );\n\n // Check holiday\n const getHoliday = React.useCallback((date: Date): string | null => {\n const monthDay = format(date, \"MM-dd\") as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n // Smart format - choose appropriate format based on date\n const getSmartFormat = React.useCallback(\n (date: Date): string => {\n if (isToday(date)) {\n return showTime ? `Hôm nay ${format(date, \"HH:mm\")}` : \"Hôm nay\";\n }\n if (isYesterday(date)) {\n return showTime ? `Hôm qua ${format(date, \"HH:mm\")}` : \"Hôm qua\";\n }\n if (isTomorrow(date)) {\n return showTime ? `Ngày mai ${format(date, \"HH:mm\")}` : \"Ngày mai\";\n }\n if (isThisWeek(date)) {\n const weekday = getVietnameseWeekday(date);\n return showTime ? `${weekday} ${format(date, \"HH:mm\")}` : weekday;\n }\n if (isThisMonth(date)) {\n const day = format(date, \"d\");\n return showTime\n ? `${day}/${format(date, \"M\")} ${format(date, \"HH:mm\")}`\n : `${day}/${format(date, \"M\")}`;\n }\n if (isThisYear(date)) {\n return showTime ? format(date, \"d/M HH:mm\") : format(date, \"d/M\");\n }\n return showTime\n ? format(date, \"d/M/yyyy HH:mm\")\n : format(date, \"d/M/yyyy\");\n },\n [getVietnameseWeekday, showTime],\n );\n\n // Main formatting function\n const formatDate = React.useCallback(\n (date: Date, type: string): string => {\n const timeStr = showTime ? format(date, \", HH:mm\") : \"\";\n\n switch (type) {\n case \"short\":\n return format(date, \"d/M/yy\") + timeStr;\n\n case \"medium\":\n return format(date, \"dd/MM/yyyy\") + timeStr;\n\n case \"long\":\n return (\n `${format(date, \"d\")} ${getVietnameseMonth(date)} ${format(date, \"yyyy\")}` +\n timeStr\n );\n\n case \"full\": {\n const data = `${getVietnameseWeekday(date)}, ngày ${format(date, \"d\")} ${getVietnameseMonth(date)} năm ${format(date, \"yyyy\")}`;\n return data + timeStr;\n }\n\n case \"relative\":\n return formatRelativeTime(date);\n\n case \"datetime\":\n return format(date, \"d/M/yyyy HH:mm\");\n\n case \"time\":\n return format(date, \"HH:mm\");\n\n case \"smart\":\n return getSmartFormat(date);\n\n default:\n return format(date, \"d/M/yyyy\") + timeStr;\n }\n },\n [\n getSmartFormat,\n getVietnameseMonth,\n getVietnameseWeekday,\n formatRelativeTime,\n showTime,\n ],\n );\n\n if (!parsedDate) {\n return (\n <span className={cn(\"text-muted-foreground text-sm\", className)}>\n --/--/----\n </span>\n );\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle =\n title || format(parsedDate, \"EEEE, d MMMM yyyy HH:mm:ss\");\n\n return (\n <time\n dateTime={parsedDate.toISOString()}\n className={cn(\"text-accent-foreground font-number text-sm\", className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
@@ -1,23 +1,24 @@
1
+ import * as react_jsx_runtime69 from "react/jsx-runtime";
1
2
  import React from "react";
2
3
  import { Dialog } from "radix-ui";
3
4
 
4
5
  //#region packages/components/ui/dialog.d.ts
5
6
  declare function Dialog$1({
6
7
  ...props
7
- }: React.ComponentProps<typeof Dialog.Root>): any;
8
+ }: React.ComponentProps<typeof Dialog.Root>): react_jsx_runtime69.JSX.Element;
8
9
  declare function DialogTrigger({
9
10
  ...props
10
- }: React.ComponentProps<typeof Dialog.Trigger>): any;
11
+ }: React.ComponentProps<typeof Dialog.Trigger>): react_jsx_runtime69.JSX.Element;
11
12
  declare function DialogPortal({
12
13
  ...props
13
- }: React.ComponentProps<typeof Dialog.Portal>): any;
14
+ }: React.ComponentProps<typeof Dialog.Portal>): react_jsx_runtime69.JSX.Element;
14
15
  declare function DialogClose({
15
16
  ...props
16
- }: React.ComponentProps<typeof Dialog.Close>): any;
17
+ }: React.ComponentProps<typeof Dialog.Close>): react_jsx_runtime69.JSX.Element;
17
18
  declare function DialogOverlay({
18
19
  className,
19
20
  ...props
20
- }: React.ComponentProps<typeof Dialog.Overlay>): any;
21
+ }: React.ComponentProps<typeof Dialog.Overlay>): react_jsx_runtime69.JSX.Element;
21
22
  declare function DialogContent({
22
23
  className,
23
24
  children,
@@ -25,23 +26,23 @@ declare function DialogContent({
25
26
  ...props
26
27
  }: React.ComponentProps<typeof Dialog.Content> & {
27
28
  showCloseButton?: boolean;
28
- }): any;
29
+ }): react_jsx_runtime69.JSX.Element;
29
30
  declare function DialogHeader({
30
31
  className,
31
32
  ...props
32
- }: React.ComponentProps<"div">): any;
33
+ }: React.ComponentProps<"div">): react_jsx_runtime69.JSX.Element;
33
34
  declare function DialogFooter({
34
35
  className,
35
36
  ...props
36
- }: React.ComponentProps<"div">): any;
37
+ }: React.ComponentProps<"div">): react_jsx_runtime69.JSX.Element;
37
38
  declare function DialogTitle({
38
39
  className,
39
40
  ...props
40
- }: React.ComponentProps<typeof Dialog.Title>): any;
41
+ }: React.ComponentProps<typeof Dialog.Title>): react_jsx_runtime69.JSX.Element;
41
42
  declare function DialogDescription({
42
43
  className,
43
44
  ...props
44
- }: React.ComponentProps<typeof Dialog.Description>): any;
45
+ }: React.ComponentProps<typeof Dialog.Description>): react_jsx_runtime69.JSX.Element;
45
46
  //#endregion
46
47
  export { Dialog$1 as Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
47
- //# sourceMappingURL=dialog-MLCAvDJH.d.ts.map
48
+ //# sourceMappingURL=dialog-B3V9xxdD.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-C4hf-Puw.js","names":["Dialog","DialogPrimitive"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background relative dark:border\",\n \"z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]\",\n \"gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-80\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-80\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n tabIndex={-1}\n className={cn(\n \"btnClose\",\n \"absolute top-3 right-3 rounded-full p-2 opacity-70\",\n \"cursor-pointer transition-all\",\n \"outline-0\",\n \"focus:ring-2\",\n \"focus:ring-border\",\n \"hover:opacity-100\",\n \"hover:bg-accent\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-muted-foreground\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:text-accent-foreground/60\",\n \"[&_svg]:hover:text-accent-foreground\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-5\",\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </div>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":"uLAOA,SAASA,EAAO,CACd,GAAG,EAC+C,CAAE,CACpD,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,GACrD,CAED,SAAS,EAAc,CACrB,GAAG,EACkD,CAAE,CACvD,OAAO,EAACA,EAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,GAChE,CAED,SAAS,EAAa,CACpB,GAAG,EACiD,CAAE,CACtD,OAAO,EAACA,EAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,GAC9D,CAED,SAAS,EAAY,CACnB,GAAG,EACgD,CAAE,CACrD,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAC5D,CAED,SAAS,EAAc,CACrB,YACA,GAAG,EACkD,CAAE,CACvD,OACE,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,iCACA,+BACA,8BACA,kCACA,iCACA,GAEF,GAAI,GAGT,CAED,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,EAGJ,CAAE,CACD,OACE,EAAC,EAAA,CAAa,YAAU,0BACtB,EAAC,EAAA,EAAA,EACD,EAAC,MAAA,CAAI,UAAU,+DACb,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,qCACA,yDACA,2DACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,GAEF,GAAI,YAEH,EACA,GACC,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,SAAU,GACV,UAAW,EACT,WACA,qDACA,gCACA,YACA,eACA,oBACA,oBACA,kBACA,8BACA,0CACA,+BACA,oCACA,uCACA,8BACA,mBACA,kDAGF,EAAC,EAAA,EAAA,EACD,EAAC,OAAA,CAAK,UAAU,mBAAU,oBAOvC,CAED,SAAS,EAAa,CAAE,YAAW,GAAG,EAAoC,CAAE,CAC1E,OACE,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,EAAG,+CAAgD,GAC9D,GAAI,GAGT,CAED,SAAS,EAAa,CAAE,YAAW,GAAG,EAAoC,CAAE,CAC1E,OACE,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,EACT,yDACA,GAEF,GAAI,GAGT,CAED,SAAS,EAAY,CACnB,YACA,GAAG,EACgD,CAAE,CACrD,OACE,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EAAG,qCAAsC,GACpD,GAAI,GAGT,CAED,SAAS,EAAkB,CACzB,YACA,GAAG,EACsD,CAAE,CAC3D,OACE,EAACA,EAAgB,YAAA,CACf,YAAU,qBACV,UAAW,EAAG,gCAAiC,GAC/C,GAAI,GAGT"}
1
+ {"version":3,"file":"dialog-C4hf-Puw.js","names":["Dialog","DialogPrimitive"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background relative dark:border\",\n \"z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]\",\n \"gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-80\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-80\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n tabIndex={-1}\n className={cn(\n \"btnClose\",\n \"absolute top-3 right-3 rounded-full p-2 opacity-70\",\n \"cursor-pointer transition-all\",\n \"outline-0\",\n \"focus:ring-2\",\n \"focus:ring-border\",\n \"hover:opacity-100\",\n \"hover:bg-accent\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-muted-foreground\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:text-accent-foreground/60\",\n \"[&_svg]:hover:text-accent-foreground\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-5\",\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </div>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":"uLAOA,SAASA,EAAO,CACd,GAAG,GACiD,CACpD,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,IAGtD,SAAS,EAAc,CACrB,GAAG,GACoD,CACvD,OAAO,EAACA,EAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,IAGjE,SAAS,EAAa,CACpB,GAAG,GACmD,CACtD,OAAO,EAACA,EAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,IAG/D,SAAS,EAAY,CACnB,GAAG,GACkD,CACrD,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,IAG7D,SAAS,EAAc,CACrB,YACA,GAAG,GACoD,CACvD,OACE,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,iCACA,+BACA,8BACA,kCACA,iCACA,GAEF,GAAI,IAKV,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,GAGF,CACD,OACE,EAAC,EAAA,CAAa,YAAU,0BACtB,EAAC,EAAA,IACD,EAAC,MAAA,CAAI,UAAU,+DACb,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,qCACA,yDACA,2DACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,GAEF,GAAI,YAEH,EACA,GACC,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,SAAU,GACV,UAAW,EACT,WACA,qDACA,gCACA,YACA,eACA,oBACA,oBACA,kBACA,8BACA,0CACA,+BACA,oCACA,uCACA,8BACA,mBACA,kDAGF,EAAC,EAAA,IACD,EAAC,OAAA,CAAK,UAAU,mBAAU,qBASxC,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OACE,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,EAAG,+CAAgD,GAC9D,GAAI,IAKV,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OACE,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,EACT,yDACA,GAEF,GAAI,IAKV,SAAS,EAAY,CACnB,YACA,GAAG,GACkD,CACrD,OACE,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EAAG,qCAAsC,GACpD,GAAI,IAKV,SAAS,EAAkB,CACzB,YACA,GAAG,GACwD,CAC3D,OACE,EAACA,EAAgB,YAAA,CACf,YAAU,qBACV,UAAW,EAAG,gCAAiC,GAC/C,GAAI"}
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`lucide-react`)),a=e.__toESM(require(`radix-ui`));function o({...e}){return(0,r.jsx)(a.Dialog.Root,{"data-slot":`dialog`,...e})}function s({...e}){return(0,r.jsx)(a.Dialog.Trigger,{"data-slot":`dialog-trigger`,...e})}function c({...e}){return(0,r.jsx)(a.Dialog.Portal,{"data-slot":`dialog-portal`,...e})}function l({...e}){return(0,r.jsx)(a.Dialog.Close,{"data-slot":`dialog-close`,...e})}function u({className:e,...n}){return(0,r.jsx)(a.Dialog.Overlay,{"data-slot":`dialog-overlay`,className:t.cn(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,e),...n})}function d({className:e,children:n,showCloseButton:o=!0,...s}){return(0,r.jsxs)(c,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(u,{}),(0,r.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:(0,r.jsxs)(a.Dialog.Content,{"data-slot":`dialog-content`,className:t.cn(`bg-background relative dark:border`,`z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]`,`gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-80`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-80`,e),...s,children:[n,o&&(0,r.jsxs)(a.Dialog.Close,{"data-slot":`dialog-close`,tabIndex:-1,className:t.cn(`btnClose`,`absolute top-3 right-3 rounded-full p-2 opacity-70`,`cursor-pointer transition-all`,`outline-0`,`focus:ring-2`,`focus:ring-border`,`hover:opacity-100`,`hover:bg-accent`,`data-[state=open]:bg-accent`,`data-[state=open]:text-muted-foreground`,`disabled:pointer-events-none`,`[&_svg]:text-accent-foreground/60`,`[&_svg]:hover:text-accent-foreground`,`[&_svg]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-5`),children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})})]})}function f({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-header`,className:t.cn(`flex flex-col gap-2 text-center sm:text-left`,e),...n})}function p({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-footer`,className:t.cn(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...n})}function m({className:e,...n}){return(0,r.jsx)(a.Dialog.Title,{"data-slot":`dialog-title`,className:t.cn(`text-lg leading-none font-semibold`,e),...n})}function h({className:e,...n}){return(0,r.jsx)(a.Dialog.Description,{"data-slot":`dialog-description`,className:t.cn(`text-muted-foreground text-sm`,e),...n})}Object.defineProperty(exports,`Dialog`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`DialogClose`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`DialogContent`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`DialogDescription`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`DialogFooter`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`DialogHeader`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`DialogOverlay`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`DialogPortal`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`DialogTitle`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`DialogTrigger`,{enumerable:!0,get:function(){return s}});
2
- //# sourceMappingURL=dialog-W-DmDMEE.cjs.map
1
+ const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./utils-DaJ1XZgX.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`lucide-react`)),a=e.__toESM(require(`radix-ui`));function o({...e}){return(0,r.jsx)(a.Dialog.Root,{"data-slot":`dialog`,...e})}function s({...e}){return(0,r.jsx)(a.Dialog.Trigger,{"data-slot":`dialog-trigger`,...e})}function c({...e}){return(0,r.jsx)(a.Dialog.Portal,{"data-slot":`dialog-portal`,...e})}function l({...e}){return(0,r.jsx)(a.Dialog.Close,{"data-slot":`dialog-close`,...e})}function u({className:e,...n}){return(0,r.jsx)(a.Dialog.Overlay,{"data-slot":`dialog-overlay`,className:t.cn(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,e),...n})}function d({className:e,children:n,showCloseButton:o=!0,...s}){return(0,r.jsxs)(c,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(u,{}),(0,r.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:(0,r.jsxs)(a.Dialog.Content,{"data-slot":`dialog-content`,className:t.cn(`bg-background relative dark:border`,`z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]`,`gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-80`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-80`,e),...s,children:[n,o&&(0,r.jsxs)(a.Dialog.Close,{"data-slot":`dialog-close`,tabIndex:-1,className:t.cn(`btnClose`,`absolute top-3 right-3 rounded-full p-2 opacity-70`,`cursor-pointer transition-all`,`outline-0`,`focus:ring-2`,`focus:ring-border`,`hover:opacity-100`,`hover:bg-accent`,`data-[state=open]:bg-accent`,`data-[state=open]:text-muted-foreground`,`disabled:pointer-events-none`,`[&_svg]:text-accent-foreground/60`,`[&_svg]:hover:text-accent-foreground`,`[&_svg]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-5`),children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})})]})}function f({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-header`,className:t.cn(`flex flex-col gap-2 text-center sm:text-left`,e),...n})}function p({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-footer`,className:t.cn(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...n})}function m({className:e,...n}){return(0,r.jsx)(a.Dialog.Title,{"data-slot":`dialog-title`,className:t.cn(`text-lg leading-none font-semibold`,e),...n})}function h({className:e,...n}){return(0,r.jsx)(a.Dialog.Description,{"data-slot":`dialog-description`,className:t.cn(`text-muted-foreground text-sm`,e),...n})}Object.defineProperty(exports,`Dialog`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`DialogClose`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`DialogContent`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`DialogDescription`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`DialogFooter`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`DialogHeader`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`DialogOverlay`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`DialogPortal`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`DialogTitle`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`DialogTrigger`,{enumerable:!0,get:function(){return s}});
2
+ //# sourceMappingURL=dialog-Cn8cFeu-.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-W-DmDMEE.cjs","names":["DialogPrimitive","cn","XIcon"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background relative dark:border\",\n \"z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]\",\n \"gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-80\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-80\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n tabIndex={-1}\n className={cn(\n \"btnClose\",\n \"absolute top-3 right-3 rounded-full p-2 opacity-70\",\n \"cursor-pointer transition-all\",\n \"outline-0\",\n \"focus:ring-2\",\n \"focus:ring-border\",\n \"hover:opacity-100\",\n \"hover:bg-accent\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-muted-foreground\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:text-accent-foreground/60\",\n \"[&_svg]:hover:text-accent-foreground\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-5\",\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </div>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":"wNAOA,SAAS,EAAO,CACd,GAAG,EAC+C,CAAE,CACpD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,GACrD,CAED,SAAS,EAAc,CACrB,GAAG,EACkD,CAAE,CACvD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,GAChE,CAED,SAAS,EAAa,CACpB,GAAG,EACiD,CAAE,CACtD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,GAC9D,CAED,SAAS,EAAY,CACnB,GAAG,EACgD,CAAE,CACrD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAC5D,CAED,SAAS,EAAc,CACrB,YACA,GAAG,EACkD,CAAE,CACvD,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,UAAWC,EAAAA,GACT,iCACA,+BACA,8BACA,kCACA,iCACA,GAEF,GAAI,GAGT,CAED,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,EAGJ,CAAE,CACD,OACE,EAAA,EAAA,MAAC,EAAA,CAAa,YAAU,2BACtB,EAAA,EAAA,KAAC,EAAA,EAAA,GACD,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,gEACb,EAAA,EAAA,MAACD,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,UAAWC,EAAAA,GACT,qCACA,yDACA,2DACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,GAEF,GAAI,YAEH,EACA,IACC,EAAA,EAAA,MAACD,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,SAAU,GACV,UAAWC,EAAAA,GACT,WACA,qDACA,gCACA,YACA,eACA,oBACA,oBACA,kBACA,8BACA,0CACA,+BACA,oCACA,uCACA,8BACA,mBACA,mDAGF,EAAA,EAAA,KAACC,EAAAA,MAAAA,EAAAA,GACD,EAAA,EAAA,KAAC,OAAA,CAAK,UAAU,mBAAU,oBAOvC,CAED,SAAS,EAAa,CAAE,YAAW,GAAG,EAAoC,CAAE,CAC1E,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,gBACV,UAAWD,EAAAA,GAAG,+CAAgD,GAC9D,GAAI,GAGT,CAED,SAAS,EAAa,CAAE,YAAW,GAAG,EAAoC,CAAE,CAC1E,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,gBACV,UAAWA,EAAAA,GACT,yDACA,GAEF,GAAI,GAGT,CAED,SAAS,EAAY,CACnB,YACA,GAAG,EACgD,CAAE,CACrD,OACE,EAAA,EAAA,KAACD,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,UAAWC,EAAAA,GAAG,qCAAsC,GACpD,GAAI,GAGT,CAED,SAAS,EAAkB,CACzB,YACA,GAAG,EACsD,CAAE,CAC3D,OACE,EAAA,EAAA,KAACD,EAAAA,OAAgB,YAAA,CACf,YAAU,qBACV,UAAWC,EAAAA,GAAG,gCAAiC,GAC/C,GAAI,GAGT"}
1
+ {"version":3,"file":"dialog-Cn8cFeu-.cjs","names":["DialogPrimitive","cn","XIcon"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background relative dark:border\",\n \"z-50 grid max-h-[85svh] w-full max-w-[calc(100%-2rem)]\",\n \"gap-4 rounded-2xl p-6 shadow-lg duration-200 sm:max-w-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-80\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-80\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n tabIndex={-1}\n className={cn(\n \"btnClose\",\n \"absolute top-3 right-3 rounded-full p-2 opacity-70\",\n \"cursor-pointer transition-all\",\n \"outline-0\",\n \"focus:ring-2\",\n \"focus:ring-border\",\n \"hover:opacity-100\",\n \"hover:bg-accent\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-muted-foreground\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:text-accent-foreground/60\",\n \"[&_svg]:hover:text-accent-foreground\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-5\",\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </div>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":"wNAOA,SAAS,EAAO,CACd,GAAG,GACiD,CACpD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,IAGtD,SAAS,EAAc,CACrB,GAAG,GACoD,CACvD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,IAGjE,SAAS,EAAa,CACpB,GAAG,GACmD,CACtD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,IAG/D,SAAS,EAAY,CACnB,GAAG,GACkD,CACrD,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,IAG7D,SAAS,EAAc,CACrB,YACA,GAAG,GACoD,CACvD,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,UAAWC,EAAAA,GACT,iCACA,+BACA,8BACA,kCACA,iCACA,GAEF,GAAI,IAKV,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,GAGF,CACD,OACE,EAAA,EAAA,MAAC,EAAA,CAAa,YAAU,2BACtB,EAAA,EAAA,KAAC,EAAA,KACD,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,gEACb,EAAA,EAAA,MAACD,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,UAAWC,EAAAA,GACT,qCACA,yDACA,2DACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,GAEF,GAAI,YAEH,EACA,IACC,EAAA,EAAA,MAACD,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,SAAU,GACV,UAAWC,EAAAA,GACT,WACA,qDACA,gCACA,YACA,eACA,oBACA,oBACA,kBACA,8BACA,0CACA,+BACA,oCACA,uCACA,8BACA,mBACA,mDAGF,EAAA,EAAA,KAACC,EAAAA,MAAAA,KACD,EAAA,EAAA,KAAC,OAAA,CAAK,UAAU,mBAAU,qBASxC,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,gBACV,UAAWD,EAAAA,GAAG,+CAAgD,GAC9D,GAAI,IAKV,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,gBACV,UAAWA,EAAAA,GACT,yDACA,GAEF,GAAI,IAKV,SAAS,EAAY,CACnB,YACA,GAAG,GACkD,CACrD,OACE,EAAA,EAAA,KAACD,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,UAAWC,EAAAA,GAAG,qCAAsC,GACpD,GAAI,IAKV,SAAS,EAAkB,CACzB,YACA,GAAG,GACwD,CAC3D,OACE,EAAA,EAAA,KAACD,EAAAA,OAAgB,YAAA,CACf,YAAU,qBACV,UAAWC,EAAAA,GAAG,gCAAiC,GAC/C,GAAI"}
@@ -1,23 +1,24 @@
1
1
  import React from "react";
2
+ import * as react_jsx_runtime60 from "react/jsx-runtime";
2
3
  import { Dialog } from "radix-ui";
3
4
 
4
5
  //#region packages/components/ui/dialog.d.ts
5
6
  declare function Dialog$1({
6
7
  ...props
7
- }: React.ComponentProps<typeof Dialog.Root>): any;
8
+ }: React.ComponentProps<typeof Dialog.Root>): react_jsx_runtime60.JSX.Element;
8
9
  declare function DialogTrigger({
9
10
  ...props
10
- }: React.ComponentProps<typeof Dialog.Trigger>): any;
11
+ }: React.ComponentProps<typeof Dialog.Trigger>): react_jsx_runtime60.JSX.Element;
11
12
  declare function DialogPortal({
12
13
  ...props
13
- }: React.ComponentProps<typeof Dialog.Portal>): any;
14
+ }: React.ComponentProps<typeof Dialog.Portal>): react_jsx_runtime60.JSX.Element;
14
15
  declare function DialogClose({
15
16
  ...props
16
- }: React.ComponentProps<typeof Dialog.Close>): any;
17
+ }: React.ComponentProps<typeof Dialog.Close>): react_jsx_runtime60.JSX.Element;
17
18
  declare function DialogOverlay({
18
19
  className,
19
20
  ...props
20
- }: React.ComponentProps<typeof Dialog.Overlay>): any;
21
+ }: React.ComponentProps<typeof Dialog.Overlay>): react_jsx_runtime60.JSX.Element;
21
22
  declare function DialogContent({
22
23
  className,
23
24
  children,
@@ -25,23 +26,23 @@ declare function DialogContent({
25
26
  ...props
26
27
  }: React.ComponentProps<typeof Dialog.Content> & {
27
28
  showCloseButton?: boolean;
28
- }): any;
29
+ }): react_jsx_runtime60.JSX.Element;
29
30
  declare function DialogHeader({
30
31
  className,
31
32
  ...props
32
- }: React.ComponentProps<"div">): any;
33
+ }: React.ComponentProps<"div">): react_jsx_runtime60.JSX.Element;
33
34
  declare function DialogFooter({
34
35
  className,
35
36
  ...props
36
- }: React.ComponentProps<"div">): any;
37
+ }: React.ComponentProps<"div">): react_jsx_runtime60.JSX.Element;
37
38
  declare function DialogTitle({
38
39
  className,
39
40
  ...props
40
- }: React.ComponentProps<typeof Dialog.Title>): any;
41
+ }: React.ComponentProps<typeof Dialog.Title>): react_jsx_runtime60.JSX.Element;
41
42
  declare function DialogDescription({
42
43
  className,
43
44
  ...props
44
- }: React.ComponentProps<typeof Dialog.Description>): any;
45
+ }: React.ComponentProps<typeof Dialog.Description>): react_jsx_runtime60.JSX.Element;
45
46
  //#endregion
46
47
  export { Dialog$1 as Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
47
- //# sourceMappingURL=dialog-D3VF5qxy.d.cts.map
48
+ //# sourceMappingURL=dialog-Dlozd6qY.d.ts.map
@@ -1,2 +1,2 @@
1
- const e=require(`../chunk-CUT6urMc.cjs`);require(`../utils-BsjVK5EW.cjs`),require(`../button-Dzv_nos1.cjs`);const t=require(`../alert-dialog-D5ZqgIiC.cjs`),n=e.__toESM(require(`react/jsx-runtime`)),r=({open:e,isLoading:r=!1,title:i,description:a,onOpenChange:o,onConfirm:s})=>(0,n.jsx)(t.AlertDialog,{open:e,onOpenChange:o,children:(0,n.jsxs)(t.AlertDialogContent,{children:[(0,n.jsxs)(t.AlertDialogHeader,{className:`gap-0`,children:[(0,n.jsx)(t.AlertDialogTitle,{children:i}),(0,n.jsx)(t.AlertDialogDescription,{children:a})]}),(0,n.jsxs)(t.AlertDialogFooter,{children:[(0,n.jsx)(t.AlertDialogCancel,{children:`Cancel`}),(0,n.jsx)(t.AlertDialogAction,{className:`w-24`,onClick:s,children:r?(0,n.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,n.jsx)(`div`,{className:`loader-spinner text-muted-foreground`})}):`Confirm`})]})]})});exports.ConfirmDialog=r;
1
+ const e=require(`../chunk-hhQzssFb.cjs`);require(`../utils-DaJ1XZgX.cjs`),require(`../button-CycE0WzB.cjs`);const t=require(`../alert-dialog-BQv-ZvW9.cjs`),n=e.__toESM(require(`react/jsx-runtime`)),r=({open:e,isLoading:r=!1,title:i,description:a,onOpenChange:o,onConfirm:s})=>(0,n.jsx)(t.AlertDialog,{open:e,onOpenChange:o,children:(0,n.jsxs)(t.AlertDialogContent,{children:[(0,n.jsxs)(t.AlertDialogHeader,{className:`gap-0`,children:[(0,n.jsx)(t.AlertDialogTitle,{children:i}),(0,n.jsx)(t.AlertDialogDescription,{children:a})]}),(0,n.jsxs)(t.AlertDialogFooter,{children:[(0,n.jsx)(t.AlertDialogCancel,{children:`Cancel`}),(0,n.jsx)(t.AlertDialogAction,{className:`w-24`,onClick:s,children:r?(0,n.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,n.jsx)(`div`,{className:`loader-spinner text-muted-foreground`})}):`Confirm`})]})]})});exports.ConfirmDialog=r;
2
2
  //# sourceMappingURL=confirm-dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirm-dialog.cjs","names":["ConfirmDialog: React.FC<React.PropsWithChildren<Props>>","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n title: string;\n description: string;\n onOpenChange?: (open: boolean) => void;\n onConfirm?: () => void;\n};\n\nexport const ConfirmDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n title,\n description,\n onOpenChange,\n onConfirm,\n}) => {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader className=\"gap-0\">\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction className=\"w-24\" onClick={onConfirm}>\n {!isLoading ? (\n \"Confirm\"\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-muted-foreground\" />\n </div>\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"sMAoBaA,GAA2D,CACtE,OACA,YAAY,GACZ,QACA,cACA,eACA,YACD,IAEG,EAAA,EAAA,KAACC,EAAAA,YAAAA,CAAkB,OAAoB,yBACrC,EAAA,EAAA,MAACC,EAAAA,mBAAAA,CAAAA,SAAAA,EACC,EAAA,EAAA,MAACC,EAAAA,kBAAAA,CAAkB,UAAU,mBAC3B,EAAA,EAAA,KAACC,EAAAA,iBAAAA,CAAAA,SAAkB,EAAA,GACnB,EAAA,EAAA,KAACC,EAAAA,uBAAAA,CAAAA,SAAwB,EAAA,EAAA,IAE3B,EAAA,EAAA,MAACC,EAAAA,kBAAAA,CAAAA,SAAAA,EACC,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAAA,SAAkB,SAAA,GACnB,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAkB,UAAU,OAAO,QAAS,WACzC,GAGA,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,8DACb,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,uCAAA,IAHjB"}
1
+ {"version":3,"file":"confirm-dialog.cjs","names":["ConfirmDialog: React.FC<React.PropsWithChildren<Props>>","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n title: string;\n description: string;\n onOpenChange?: (open: boolean) => void;\n onConfirm?: () => void;\n};\n\nexport const ConfirmDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n title,\n description,\n onOpenChange,\n onConfirm,\n}) => {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader className=\"gap-0\">\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction className=\"w-24\" onClick={onConfirm}>\n {!isLoading ? (\n \"Confirm\"\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-muted-foreground\" />\n </div>\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"sMAoBaA,GAA2D,CACtE,OACA,YAAY,GACZ,QACA,cACA,eACA,gBAGE,EAAA,EAAA,KAACC,EAAAA,YAAAA,CAAkB,OAAoB,yBACrC,EAAA,EAAA,MAACC,EAAAA,mBAAAA,CAAAA,SAAAA,EACC,EAAA,EAAA,MAACC,EAAAA,kBAAAA,CAAkB,UAAU,mBAC3B,EAAA,EAAA,KAACC,EAAAA,iBAAAA,CAAAA,SAAkB,KACnB,EAAA,EAAA,KAACC,EAAAA,uBAAAA,CAAAA,SAAwB,QAE3B,EAAA,EAAA,MAACC,EAAAA,kBAAAA,CAAAA,SAAAA,EACC,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAAA,SAAkB,YACnB,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAkB,UAAU,OAAO,QAAS,WACzC,GAGA,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,8DACb,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,2CAHjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"confirm-dialog.js","names":["ConfirmDialog: React.FC<React.PropsWithChildren<Props>>"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n title: string;\n description: string;\n onOpenChange?: (open: boolean) => void;\n onConfirm?: () => void;\n};\n\nexport const ConfirmDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n title,\n description,\n onOpenChange,\n onConfirm,\n}) => {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader className=\"gap-0\">\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction className=\"w-24\" onClick={onConfirm}>\n {!isLoading ? (\n \"Confirm\"\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-muted-foreground\" />\n </div>\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"6UAoBA,MAAaA,GAA2D,CACtE,OACA,YAAY,GACZ,QACA,cACA,eACA,YACD,GAEG,EAAC,EAAA,CAAkB,OAAoB,wBACrC,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAkB,UAAU,kBAC3B,EAAC,EAAA,CAAA,SAAkB,EAAA,EACnB,EAAC,EAAA,CAAA,SAAwB,EAAA,EAAA,GAE3B,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAA,SAAkB,SAAA,EACnB,EAAC,EAAA,CAAkB,UAAU,OAAO,QAAS,WACzC,EAGA,EAAC,MAAA,CAAI,UAAU,6DACb,EAAC,MAAA,CAAI,UAAU,uCAAA,IAHjB"}
1
+ {"version":3,"file":"confirm-dialog.js","names":["ConfirmDialog: React.FC<React.PropsWithChildren<Props>>"],"sources":["../../packages/components/dialogs/confirm-dialog.tsx"],"sourcesContent":["import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n title: string;\n description: string;\n onOpenChange?: (open: boolean) => void;\n onConfirm?: () => void;\n};\n\nexport const ConfirmDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n title,\n description,\n onOpenChange,\n onConfirm,\n}) => {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader className=\"gap-0\">\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction className=\"w-24\" onClick={onConfirm}>\n {!isLoading ? (\n \"Confirm\"\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"loader-spinner text-muted-foreground\" />\n </div>\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"6UAoBA,MAAaA,GAA2D,CACtE,OACA,YAAY,GACZ,QACA,cACA,eACA,eAGE,EAAC,EAAA,CAAkB,OAAoB,wBACrC,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAkB,UAAU,kBAC3B,EAAC,EAAA,CAAA,SAAkB,IACnB,EAAC,EAAA,CAAA,SAAwB,OAE3B,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAA,SAAkB,WACnB,EAAC,EAAA,CAAkB,UAAU,OAAO,QAAS,WACzC,EAGA,EAAC,MAAA,CAAI,UAAU,6DACb,EAAC,MAAA,CAAI,UAAU,2CAHjB"}
@@ -1,2 +1,2 @@
1
- const e=require(`../../chunk-CUT6urMc.cjs`),t=require(`../../utils-BsjVK5EW.cjs`),n=require(`../../flex-CNA_SId-.cjs`),r=require(`../../date-nd8WkPlx.cjs`),i=require(`../../tooltip-Beb-_EPp.cjs`),a=require(`../../button-Dzv_nos1.cjs`),o=require(`../../dialog-W-DmDMEE.cjs`);require(`../../input-DXEBB91E.cjs`);const s=require(`../../title-xsPZpQpb.cjs`);require(`../../separator-DTB3sDNG.cjs`),require(`../../skeleton-m3giaF4T.cjs`);const c=e.__toESM(require(`react`)),l=e.__toESM(require(`react/jsx-runtime`)),u=e.__toESM(require(`class-variance-authority`)),d=e.__toESM(require(`lucide-react`)),f=e.__toESM(require(`radix-ui`)),p=()=>(0,l.jsxs)(o.DialogHeader,{className:`sr-only`,children:[(0,l.jsx)(o.DialogTitle,{className:`sr-only`}),(0,l.jsx)(o.DialogDescription,{className:`sr-only`})]}),m=`detai_dialog_sidebar_state`,h=3600*24*7,g=`16rem`,_=`3rem`,v=`p`,y=c.default.createContext(null);function b(){let e=c.default.useContext(y);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function x({defaultOpen:e=!0,open:n,onOpenChange:r,className:a,style:o,children:s,...u}){let[d,f]=c.default.useState(!1),[p,m]=c.default.useState(e),h=n??p,g=c.default.useCallback(e=>{let t=typeof e==`function`?e(h):e;r?r(t):m(t),document.cookie=`detai_dialog_sidebar_state=${t}; path=/; max-age=604800`},[r,h]),_=c.default.useCallback(()=>g(e=>!e),[g]);c.default.useEffect(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),_())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_]);let v=h?`expanded`:`collapsed`,b=c.default.useMemo(()=>({state:v,open:h,setOpen:g,openMobile:d,setOpenMobile:f,toggleSidebar:_}),[v,h,g,d,f,_]);return(0,l.jsx)(y.Provider,{value:b,children:(0,l.jsx)(i.TooltipProvider,{delayDuration:0,children:(0,l.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...o},className:t.cn(`group/sidebar-wrapper`,`has-data-[variant=inset]:bg-sidebar`,`flex min-h-svh w-full`,a),...u,children:s})})})}function S({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o}){let{state:s}=b();return r===`none`?(0,l.jsx)(`div`,{"data-slot":`sidebar`,className:t.cn(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,i),...o,children:a}):(0,l.jsxs)(`div`,{className:`group peer text-sidebar-foreground hidden md:block`,"data-state":s,"data-collapsible":s===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[(0,l.jsx)(`div`,{"data-slot":`sidebar-gap`,className:t.cn(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,n===`floating`||n===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,l.jsx)(`div`,{"data-slot":`sidebar-container`,className:t.cn(`absolute inset-y-0 z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,n===`floating`||n===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,i),...o,children:(0,l.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:t.cn(`flex h-full w-full flex-col`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:shadow-sm`),children:a})})]})}function C({className:e,onClick:n,...r}){let{toggleSidebar:i}=b();return(0,l.jsxs)(a.Button,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,className:t.cn(`size-10 rounded-full [&_svg]:!size-6`,e),onClick:e=>{n?.(e),i()},...r,children:[(0,l.jsx)(d.MenuIcon,{}),(0,l.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function w({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:t.cn(`flex flex-col gap-2 p-2`,e),...n})}function T({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:t.cn(`flex flex-col gap-2 p-2`,e),...n})}function E({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:t.cn(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto`,`group-data-[collapsible=icon]:overflow-hidden`,e),...n})}function D({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:t.cn(`relative flex w-full min-w-0 flex-col p-2`,e),...n})}function O({className:e,...n}){return(0,l.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:t.cn(`flex w-full min-w-0 flex-col gap-1`,e),...n})}function k({className:e,...n}){return(0,l.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:t.cn(`group/menu-item relative`,e),...n})}const A=(0,u.cva)(`peer/menu-button cursor-pointer flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background border shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function j({asChild:e=!1,isActive:n=!1,variant:r=`default`,size:a=`default`,tooltip:o,className:s,...c}){let u=e?f.Slot.Slot:`button`,{state:d}=b(),p=(0,l.jsx)(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":a,"data-active":n,className:t.cn(A({variant:r,size:a}),s),...c});return o?(typeof o==`string`&&(o={children:o}),(0,l.jsxs)(i.Tooltip,{children:[(0,l.jsx)(i.TooltipTrigger,{asChild:!0,children:p}),(0,l.jsx)(i.TooltipContent,{side:`right`,align:`center`,hidden:d!==`collapsed`,...o})]})):p}const M=({children:e})=>(0,l.jsx)(`main`,{className:`relative flex h-full flex-1 flex-col`,children:(0,l.jsx)(`div`,{className:`absolute inset-0 flex size-full flex-col`,children:e})}),N=({title:e,createdAt:t})=>(0,l.jsxs)(`header`,{className:`relative flex items-start gap-x-2.5 border-b px-2 py-2.5`,children:[(0,l.jsx)(C,{}),(0,l.jsxs)(n.Flex,{vertical:!0,align:`start`,padding:`none`,className:`flex-1`,children:[(0,l.jsx)(s.Title,{level:5,children:e||`Detail Dialog`}),(0,l.jsxs)(n.Flex,{padding:`none`,className:`text-muted-foreground`,children:[(0,l.jsx)(d.CalendarIcon,{size:12}),!!t&&(0,l.jsx)(r.DateDisplay,{showTime:!0,showHoliday:!0,date:t,format:`full`})]})]})]}),P=({children:e})=>(0,l.jsx)(o.DialogContent,{className:`relative h-full max-h-[90svh] overflow-hidden rounded-lg border-none p-0 sm:max-w-[calc(100svw-2rem)]`,onInteractOutside:e=>{e.preventDefault(),e.stopPropagation()},children:e}),F=({title:e,sidebarFooter:t,children:n})=>(0,l.jsxs)(S,{collapsible:`icon`,className:`hidden border-r md:flex`,children:[(0,l.jsx)(w,{children:(0,l.jsx)(O,{children:(0,l.jsx)(k,{children:(0,l.jsxs)(j,{size:`lg`,tabIndex:-1,children:[(0,l.jsx)(`div`,{className:`bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg`,children:(0,l.jsx)(d.CatIcon,{size:16})}),(0,l.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,l.jsx)(`span`,{className:`truncate font-medium`,children:e||`Detail Dialog`}),(0,l.jsx)(`span`,{className:`truncate text-xs`,children:`Lunas Enterprise`})]})]})})})}),(0,l.jsx)(E,{children:(0,l.jsx)(D,{children:n})}),t&&(0,l.jsx)(T,{children:t})]}),I=({open:e,isLoading:t=!1,sidebarTitle:r,sidebar:i,sidebarFooter:a,title:s,createdAt:c,onOpenChange:u,children:d})=>(0,l.jsx)(o.Dialog,{open:e,onOpenChange:u,children:(0,l.jsxs)(P,{children:[(0,l.jsx)(p,{}),(0,l.jsxs)(x,{className:`h-full min-h-[85svh] items-start`,children:[(0,l.jsx)(F,{title:r,sidebarFooter:a,children:i}),(0,l.jsxs)(M,{children:[(0,l.jsx)(N,{title:s,createdAt:c}),t?(0,l.jsx)(n.Flex,{justify:`center`,className:`bg-muted/50 size-full`,children:(0,l.jsx)(`div`,{className:`loader`})}):(0,l.jsx)(`section`,{className:`bg-muted/50 relative flex-1 overflow-y-auto inset-shadow-sm`,children:d})]})]})]})});exports.DetailDialog=I;
1
+ const e=require(`../../chunk-hhQzssFb.cjs`),t=require(`../../utils-DaJ1XZgX.cjs`),n=require(`../../flex-yTyoLpgH.cjs`),r=require(`../../date-ByLOGsKl.cjs`),i=require(`../../tooltip-MgToVOzy.cjs`),a=require(`../../button-CycE0WzB.cjs`),o=require(`../../dialog-Cn8cFeu-.cjs`);require(`../../input-C8Sebaue.cjs`);const s=require(`../../title-CIQdEGOd.cjs`);require(`../../separator-D4iTmsID.cjs`),require(`../../skeleton-BTQm_mtV.cjs`);const c=e.__toESM(require(`react`)),l=e.__toESM(require(`react/jsx-runtime`)),u=e.__toESM(require(`class-variance-authority`)),d=e.__toESM(require(`lucide-react`)),f=e.__toESM(require(`radix-ui`)),p=()=>(0,l.jsxs)(o.DialogHeader,{className:`sr-only`,children:[(0,l.jsx)(o.DialogTitle,{className:`sr-only`}),(0,l.jsx)(o.DialogDescription,{className:`sr-only`})]}),m=`detai_dialog_sidebar_state`,h=3600*24*7,g=`16rem`,_=`3rem`,v=`p`,y=c.default.createContext(null);function b(){let e=c.default.useContext(y);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function x({defaultOpen:e=!0,open:n,onOpenChange:r,className:a,style:o,children:s,...u}){let[d,f]=c.default.useState(!1),[p,m]=c.default.useState(e),h=n??p,g=c.default.useCallback(e=>{let t=typeof e==`function`?e(h):e;r?r(t):m(t),document.cookie=`detai_dialog_sidebar_state=${t}; path=/; max-age=604800`},[r,h]),_=c.default.useCallback(()=>g(e=>!e),[g]);c.default.useEffect(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),_())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_]);let v=h?`expanded`:`collapsed`,b=c.default.useMemo(()=>({state:v,open:h,setOpen:g,openMobile:d,setOpenMobile:f,toggleSidebar:_}),[v,h,g,d,f,_]);return(0,l.jsx)(y.Provider,{value:b,children:(0,l.jsx)(i.TooltipProvider,{delayDuration:0,children:(0,l.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...o},className:t.cn(`group/sidebar-wrapper`,`has-data-[variant=inset]:bg-sidebar`,`flex min-h-svh w-full`,a),...u,children:s})})})}function S({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o}){let{state:s}=b();return r===`none`?(0,l.jsx)(`div`,{"data-slot":`sidebar`,className:t.cn(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,i),...o,children:a}):(0,l.jsxs)(`div`,{className:`group peer text-sidebar-foreground hidden md:block`,"data-state":s,"data-collapsible":s===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[(0,l.jsx)(`div`,{"data-slot":`sidebar-gap`,className:t.cn(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,n===`floating`||n===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,l.jsx)(`div`,{"data-slot":`sidebar-container`,className:t.cn(`absolute inset-y-0 z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,n===`floating`||n===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,i),...o,children:(0,l.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:t.cn(`flex h-full w-full flex-col`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:shadow-sm`),children:a})})]})}function C({className:e,onClick:n,...r}){let{toggleSidebar:i}=b();return(0,l.jsxs)(a.Button,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,className:t.cn(`size-10 rounded-full [&_svg]:!size-6`,e),onClick:e=>{n?.(e),i()},...r,children:[(0,l.jsx)(d.MenuIcon,{}),(0,l.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function w({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:t.cn(`flex flex-col gap-2 p-2`,e),...n})}function T({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:t.cn(`flex flex-col gap-2 p-2`,e),...n})}function E({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:t.cn(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto`,`group-data-[collapsible=icon]:overflow-hidden`,e),...n})}function D({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:t.cn(`relative flex w-full min-w-0 flex-col p-2`,e),...n})}function O({className:e,...n}){return(0,l.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:t.cn(`flex w-full min-w-0 flex-col gap-1`,e),...n})}function k({className:e,...n}){return(0,l.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:t.cn(`group/menu-item relative`,e),...n})}const A=(0,u.cva)(`peer/menu-button cursor-pointer flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background border shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function j({asChild:e=!1,isActive:n=!1,variant:r=`default`,size:a=`default`,tooltip:o,className:s,...c}){let u=e?f.Slot.Slot:`button`,{state:d}=b(),p=(0,l.jsx)(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":a,"data-active":n,className:t.cn(A({variant:r,size:a}),s),...c});return o?(typeof o==`string`&&(o={children:o}),(0,l.jsxs)(i.Tooltip,{children:[(0,l.jsx)(i.TooltipTrigger,{asChild:!0,children:p}),(0,l.jsx)(i.TooltipContent,{side:`right`,align:`center`,hidden:d!==`collapsed`,...o})]})):p}const M=({children:e})=>(0,l.jsx)(`main`,{className:`relative flex h-full flex-1 flex-col`,children:(0,l.jsx)(`div`,{className:`absolute inset-0 flex size-full flex-col`,children:e})}),N=({title:e,createdAt:t})=>(0,l.jsxs)(`header`,{className:`relative flex items-start gap-x-2.5 border-b px-2 py-2.5`,children:[(0,l.jsx)(C,{}),(0,l.jsxs)(n.Flex,{vertical:!0,align:`start`,padding:`none`,className:`flex-1`,children:[(0,l.jsx)(s.Title,{level:5,children:e||`Detail Dialog`}),(0,l.jsxs)(n.Flex,{padding:`none`,className:`text-muted-foreground`,children:[(0,l.jsx)(d.CalendarIcon,{size:12}),!!t&&(0,l.jsx)(r.DateDisplay,{showTime:!0,showHoliday:!0,date:t,format:`full`})]})]})]}),P=({children:e})=>(0,l.jsx)(o.DialogContent,{className:`relative h-full max-h-[90svh] overflow-hidden rounded-lg border-none p-0 sm:max-w-[calc(100svw-2rem)]`,onInteractOutside:e=>{e.preventDefault(),e.stopPropagation()},children:e}),F=({title:e,sidebarFooter:t,children:n})=>(0,l.jsxs)(S,{collapsible:`icon`,className:`hidden border-r md:flex`,children:[(0,l.jsx)(w,{children:(0,l.jsx)(O,{children:(0,l.jsx)(k,{children:(0,l.jsxs)(j,{size:`lg`,tabIndex:-1,children:[(0,l.jsx)(`div`,{className:`bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg`,children:(0,l.jsx)(d.CatIcon,{size:16})}),(0,l.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,l.jsx)(`span`,{className:`truncate font-medium`,children:e||`Detail Dialog`}),(0,l.jsx)(`span`,{className:`truncate text-xs`,children:`Lunas Enterprise`})]})]})})})}),(0,l.jsx)(E,{children:(0,l.jsx)(D,{children:n})}),t&&(0,l.jsx)(T,{children:t})]}),I=({open:e,isLoading:t=!1,sidebarTitle:r,sidebar:i,sidebarFooter:a,title:s,createdAt:c,onOpenChange:u,children:d})=>(0,l.jsx)(o.Dialog,{open:e,onOpenChange:u,children:(0,l.jsxs)(P,{children:[(0,l.jsx)(p,{}),(0,l.jsxs)(x,{className:`h-full min-h-[85svh] items-start`,children:[(0,l.jsx)(F,{title:r,sidebarFooter:a,children:i}),(0,l.jsxs)(M,{children:[(0,l.jsx)(N,{title:s,createdAt:c}),t?(0,l.jsx)(n.Flex,{justify:`center`,className:`bg-muted/50 size-full`,children:(0,l.jsx)(`div`,{className:`loader`})}):(0,l.jsx)(`section`,{className:`bg-muted/50 relative flex-1 overflow-y-auto inset-shadow-sm`,children:d})]})]})]})});exports.DetailDialog=I;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["DialogHeader","DialogTitle","DialogDescription","React","open","TooltipProvider","cn","Button","MenuIcon","SlotPrimitive","Tooltip","TooltipTrigger","TooltipContent","DetailDialogMain: React.FC<React.PropsWithChildren>","DetailDialogMainHeader: React.FC<\n React.PropsWithChildren<{\n title: string;\n createdAt: string | Date | number;\n }>\n>","Flex","Title","CalendarIcon","DateDisplay","DetailDialogWrapper: React.FC<React.PropsWithChildren>","DialogContent","DetailDialogSidebar: React.FC<\n React.PropsWithChildren<{ title?: string; sidebarFooter?: React.ReactNode }>\n>","CatIcon","DetailDialog: React.FC<React.PropsWithChildren<Props>>","Dialog","Flex"],"sources":["../../../packages/components/dialogs/detail-dialog/component/header.tsx","../../../packages/components/dialogs/detail-dialog/component/sidebar.tsx","../../../packages/components/dialogs/detail-dialog/component/main.tsx","../../../packages/components/dialogs/detail-dialog/component/wrapper.tsx","../../../packages/components/dialogs/detail-dialog/index.tsx"],"sourcesContent":["import {\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\n\nexport const DetailDialogHeader = () => {\n return (\n <DialogHeader className=\"sr-only\">\n <DialogTitle className=\"sr-only\"></DialogTitle>\n <DialogDescription className=\"sr-only\"></DialogDescription>\n </DialogHeader>\n );\n};\n","import React from \"react\";\nimport { Slot as SlotPrimitive } from \"radix-ui\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { MenuIcon } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"detai_dialog_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"p\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return setOpen((open) => !open);\n }, [setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper\",\n \"has-data-[variant=inset]:bg-sidebar\",\n \"flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { state } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"absolute inset-y-0 z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n \"flex h-full w-full flex-col\",\n \"group-data-[variant=floating]:border-sidebar-border\",\n \"group-data-[variant=floating]:rounded-lg\",\n \"group-data-[variant=floating]:border\",\n \"group-data-[variant=floating]:shadow-sm\",\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-10 rounded-full [&_svg]:!size-6\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex\",\n \"after:absolute\",\n \"after:inset-y-0\",\n \"after:left-1/2 after:w-0.5\",\n \"hover:after:bg-sidebar-border\",\n \"group-data-[side=left]:-right-4\",\n \"group-data-[side=right]:left-0\",\n \"in-data-[side=left]:cursor-w-resize\",\n \"in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize\",\n \"[[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n \"group-data-[collapsible=offcanvas]:translate-x-0\",\n \"group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2\",\n \"md:peer-data-[variant=inset]:ml-0\",\n \"md:peer-data-[variant=inset]:rounded-xl\",\n \"md:peer-data-[variant=inset]:shadow-sm\",\n \"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto\",\n \"group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8\",\n \"group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform\",\n \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute\",\n \"after:-inset-2\",\n \"md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button cursor-pointer flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background border shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring\",\n \"hover:bg-sidebar-accent\",\n \"hover:text-sidebar-accent-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n showOnHover && \"$group-focus-within/menu-item:opacity-100\",\n showOnHover && \"group-hover/menu-item:opacity-100\",\n showOnHover && \"data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring\",\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden\",\n \"hover:bg-sidebar-accent\",\n \"hover:text-sidebar-accent-foreground\",\n \"active:bg-sidebar-accent\",\n \"active:text-sidebar-accent-foreground\",\n \"focus-visible:ring-2\",\n \"disabled:pointer-events-none\",\n \"disabled:opacity-50\",\n \"aria-disabled:pointer-events-none\",\n \"aria-disabled:opacity-50\",\n \"[&>span:last-child]:truncate\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n \"[&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent\",\n \"data-[active=true]:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:hidden\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n};\n","import { CalendarIcon } from \"lucide-react\";\n\nimport { DateDisplay } from \"@/components/data-display/date\";\nimport { Flex } from \"@/components/layouts/flex\";\nimport { Title } from \"@/components/typography/title\";\n\nimport { SidebarTrigger } from \"./sidebar\";\n\nexport const DetailDialogMain: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n return (\n <main className=\"relative flex h-full flex-1 flex-col\">\n <div className=\"absolute inset-0 flex size-full flex-col\">{children}</div>\n </main>\n );\n};\n\nexport const DetailDialogMainHeader: React.FC<\n React.PropsWithChildren<{\n title: string;\n createdAt: string | Date | number;\n }>\n> = ({ title, createdAt }) => {\n return (\n <header className=\"relative flex items-start gap-x-2.5 border-b px-2 py-2.5\">\n <SidebarTrigger />\n <Flex vertical align=\"start\" padding=\"none\" className=\"flex-1\">\n <Title level={5}>{title || \"Detail Dialog\"}</Title>\n <Flex padding=\"none\" className=\"text-muted-foreground\">\n <CalendarIcon size={12} />\n {!!createdAt && (\n <DateDisplay showTime showHoliday date={createdAt} format=\"full\" />\n )}\n </Flex>\n </Flex>\n </header>\n );\n};\n","import { DialogContent } from \"@/components/ui/dialog\";\n\nexport const DetailDialogWrapper: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n return (\n <DialogContent\n className=\"relative h-full max-h-[90svh] overflow-hidden rounded-lg border-none p-0 sm:max-w-[calc(100svw-2rem)]\"\n onInteractOutside={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {children}\n </DialogContent>\n );\n};\n","import { CatIcon } from \"lucide-react\";\n\nimport { Flex } from \"@/components/layouts/flex\";\nimport { Dialog } from \"@/components/ui/dialog\";\n\nimport { DetailDialogHeader } from \"./component/header\";\nimport { DetailDialogMain, DetailDialogMainHeader } from \"./component/main\";\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n} from \"./component/sidebar\";\nimport { DetailDialogWrapper } from \"./component/wrapper\";\n\nconst DetailDialogSidebar: React.FC<\n React.PropsWithChildren<{ title?: string; sidebarFooter?: React.ReactNode }>\n> = ({ title, sidebarFooter, children }) => {\n return (\n <Sidebar collapsible=\"icon\" className=\"hidden border-r md:flex\">\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton size=\"lg\" tabIndex={-1}>\n <div className=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg\">\n <CatIcon size={16} />\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">\n {title || \"Detail Dialog\"}\n </span>\n <span className=\"truncate text-xs\">Lunas Enterprise</span>\n </div>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n <SidebarContent>\n <SidebarGroup>{children}</SidebarGroup>\n </SidebarContent>\n {sidebarFooter && <SidebarFooter>{sidebarFooter}</SidebarFooter>}\n </Sidebar>\n );\n};\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n sidebarTitle?: string;\n sidebar?: React.ReactNode;\n sidebarFooter?: React.ReactNode;\n title: string;\n createdAt: string | Date | number;\n onOpenChange?: (open: boolean) => void | Promise<void>;\n};\nexport const DetailDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n sidebarTitle,\n sidebar,\n sidebarFooter,\n title,\n createdAt,\n onOpenChange,\n children,\n}) => {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DetailDialogWrapper>\n <DetailDialogHeader />\n\n <SidebarProvider className=\"h-full min-h-[85svh] items-start\">\n <DetailDialogSidebar\n title={sidebarTitle}\n sidebarFooter={sidebarFooter}\n >\n {sidebar}\n </DetailDialogSidebar>\n <DetailDialogMain>\n <DetailDialogMainHeader title={title} createdAt={createdAt} />\n {isLoading ? (\n <Flex justify=\"center\" className=\"bg-muted/50 size-full\">\n <div className=\"loader\" />\n </Flex>\n ) : (\n <section className=\"bg-muted/50 relative flex-1 overflow-y-auto inset-shadow-sm\">\n {children}\n </section>\n )}\n </DetailDialogMain>\n </SidebarProvider>\n </DetailDialogWrapper>\n </Dialog>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["DialogHeader","DialogTitle","DialogDescription","React","open","TooltipProvider","cn","Button","MenuIcon","SlotPrimitive","Tooltip","TooltipTrigger","TooltipContent","DetailDialogMain: React.FC<React.PropsWithChildren>","DetailDialogMainHeader: React.FC<\n React.PropsWithChildren<{\n title: string;\n createdAt: string | Date | number;\n }>\n>","Flex","Title","CalendarIcon","DateDisplay","DetailDialogWrapper: React.FC<React.PropsWithChildren>","DialogContent","DetailDialogSidebar: React.FC<\n React.PropsWithChildren<{ title?: string; sidebarFooter?: React.ReactNode }>\n>","CatIcon","DetailDialog: React.FC<React.PropsWithChildren<Props>>","Dialog","Flex"],"sources":["../../../packages/components/dialogs/detail-dialog/component/header.tsx","../../../packages/components/dialogs/detail-dialog/component/sidebar.tsx","../../../packages/components/dialogs/detail-dialog/component/main.tsx","../../../packages/components/dialogs/detail-dialog/component/wrapper.tsx","../../../packages/components/dialogs/detail-dialog/index.tsx"],"sourcesContent":["import {\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\n\nexport const DetailDialogHeader = () => {\n return (\n <DialogHeader className=\"sr-only\">\n <DialogTitle className=\"sr-only\"></DialogTitle>\n <DialogDescription className=\"sr-only\"></DialogDescription>\n </DialogHeader>\n );\n};\n","\"use client\"\nimport React from \"react\";\nimport { Slot as SlotPrimitive } from \"radix-ui\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { MenuIcon } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"detai_dialog_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"p\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return setOpen((open) => !open);\n }, [setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper\",\n \"has-data-[variant=inset]:bg-sidebar\",\n \"flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { state } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"absolute inset-y-0 z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n \"flex h-full w-full flex-col\",\n \"group-data-[variant=floating]:border-sidebar-border\",\n \"group-data-[variant=floating]:rounded-lg\",\n \"group-data-[variant=floating]:border\",\n \"group-data-[variant=floating]:shadow-sm\",\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-10 rounded-full [&_svg]:!size-6\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex\",\n \"after:absolute\",\n \"after:inset-y-0\",\n \"after:left-1/2 after:w-0.5\",\n \"hover:after:bg-sidebar-border\",\n \"group-data-[side=left]:-right-4\",\n \"group-data-[side=right]:left-0\",\n \"in-data-[side=left]:cursor-w-resize\",\n \"in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize\",\n \"[[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar\",\n \"group-data-[collapsible=offcanvas]:translate-x-0\",\n \"group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2\",\n \"md:peer-data-[variant=inset]:ml-0\",\n \"md:peer-data-[variant=inset]:rounded-xl\",\n \"md:peer-data-[variant=inset]:shadow-sm\",\n \"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto\",\n \"group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8\",\n \"group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform\",\n \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute\",\n \"after:-inset-2\",\n \"md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button cursor-pointer flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background border shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring\",\n \"hover:bg-sidebar-accent\",\n \"hover:text-sidebar-accent-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform\",\n \"focus-visible:ring-2\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n showOnHover && \"$group-focus-within/menu-item:opacity-100\",\n showOnHover && \"group-hover/menu-item:opacity-100\",\n showOnHover && \"data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring\",\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden\",\n \"hover:bg-sidebar-accent\",\n \"hover:text-sidebar-accent-foreground\",\n \"active:bg-sidebar-accent\",\n \"active:text-sidebar-accent-foreground\",\n \"focus-visible:ring-2\",\n \"disabled:pointer-events-none\",\n \"disabled:opacity-50\",\n \"aria-disabled:pointer-events-none\",\n \"aria-disabled:opacity-50\",\n \"[&>span:last-child]:truncate\",\n \"[&>svg]:size-4\",\n \"[&>svg]:shrink-0\",\n \"[&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent\",\n \"data-[active=true]:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:hidden\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n};\n","import { CalendarIcon } from \"lucide-react\";\n\nimport { DateDisplay } from \"@/components/data-display/date\";\nimport { Flex } from \"@/components/layouts/flex\";\nimport { Title } from \"@/components/typography/title\";\n\nimport { SidebarTrigger } from \"./sidebar\";\n\nexport const DetailDialogMain: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n return (\n <main className=\"relative flex h-full flex-1 flex-col\">\n <div className=\"absolute inset-0 flex size-full flex-col\">{children}</div>\n </main>\n );\n};\n\nexport const DetailDialogMainHeader: React.FC<\n React.PropsWithChildren<{\n title: string;\n createdAt: string | Date | number;\n }>\n> = ({ title, createdAt }) => {\n return (\n <header className=\"relative flex items-start gap-x-2.5 border-b px-2 py-2.5\">\n <SidebarTrigger />\n <Flex vertical align=\"start\" padding=\"none\" className=\"flex-1\">\n <Title level={5}>{title || \"Detail Dialog\"}</Title>\n <Flex padding=\"none\" className=\"text-muted-foreground\">\n <CalendarIcon size={12} />\n {!!createdAt && (\n <DateDisplay showTime showHoliday date={createdAt} format=\"full\" />\n )}\n </Flex>\n </Flex>\n </header>\n );\n};\n","import { DialogContent } from \"@/components/ui/dialog\";\n\nexport const DetailDialogWrapper: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n return (\n <DialogContent\n className=\"relative h-full max-h-[90svh] overflow-hidden rounded-lg border-none p-0 sm:max-w-[calc(100svw-2rem)]\"\n onInteractOutside={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {children}\n </DialogContent>\n );\n};\n","import { CatIcon } from \"lucide-react\";\n\nimport { Flex } from \"@/components/layouts/flex\";\nimport { Dialog } from \"@/components/ui/dialog\";\n\nimport { DetailDialogHeader } from \"./component/header\";\nimport { DetailDialogMain, DetailDialogMainHeader } from \"./component/main\";\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n} from \"./component/sidebar\";\nimport { DetailDialogWrapper } from \"./component/wrapper\";\n\nconst DetailDialogSidebar: React.FC<\n React.PropsWithChildren<{ title?: string; sidebarFooter?: React.ReactNode }>\n> = ({ title, sidebarFooter, children }) => {\n return (\n <Sidebar collapsible=\"icon\" className=\"hidden border-r md:flex\">\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton size=\"lg\" tabIndex={-1}>\n <div className=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg\">\n <CatIcon size={16} />\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">\n {title || \"Detail Dialog\"}\n </span>\n <span className=\"truncate text-xs\">Lunas Enterprise</span>\n </div>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n <SidebarContent>\n <SidebarGroup>{children}</SidebarGroup>\n </SidebarContent>\n {sidebarFooter && <SidebarFooter>{sidebarFooter}</SidebarFooter>}\n </Sidebar>\n );\n};\n\ntype Props = {\n open?: boolean;\n isLoading?: boolean;\n sidebarTitle?: string;\n sidebar?: React.ReactNode;\n sidebarFooter?: React.ReactNode;\n title: string;\n createdAt: string | Date | number;\n onOpenChange?: (open: boolean) => void | Promise<void>;\n};\nexport const DetailDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n isLoading = false,\n sidebarTitle,\n sidebar,\n sidebarFooter,\n title,\n createdAt,\n onOpenChange,\n children,\n}) => {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DetailDialogWrapper>\n <DetailDialogHeader />\n\n <SidebarProvider className=\"h-full min-h-[85svh] items-start\">\n <DetailDialogSidebar\n title={sidebarTitle}\n sidebarFooter={sidebarFooter}\n >\n {sidebar}\n </DetailDialogSidebar>\n <DetailDialogMain>\n <DetailDialogMainHeader title={title} createdAt={createdAt} />\n {isLoading ? (\n <Flex justify=\"center\" className=\"bg-muted/50 size-full\">\n <div className=\"loader\" />\n </Flex>\n ) : (\n <section className=\"bg-muted/50 relative flex-1 overflow-y-auto inset-shadow-sm\">\n {children}\n </section>\n )}\n </DetailDialogMain>\n </SidebarProvider>\n </DetailDialogWrapper>\n </Dialog>\n );\n};\n"],"mappings":"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"}