@modern-admin/web 0.3.3 → 0.3.4

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 (236) hide show
  1. package/dist/standalone/assets/action-component-host-CXIbN-8V.js +2 -0
  2. package/dist/standalone/assets/action-component-host-CXIbN-8V.js.br +0 -0
  3. package/dist/standalone/assets/action-component-host-CXIbN-8V.js.gz +0 -0
  4. package/dist/standalone/assets/action-component-host-CXIbN-8V.js.map +1 -0
  5. package/dist/standalone/assets/action-page-OsWfKQ6C.js +2 -0
  6. package/dist/standalone/assets/action-page-OsWfKQ6C.js.br +0 -0
  7. package/dist/standalone/assets/action-page-OsWfKQ6C.js.gz +0 -0
  8. package/dist/standalone/assets/action-page-OsWfKQ6C.js.map +1 -0
  9. package/dist/standalone/assets/{ai-assistant-widget-Dk-VvXD0.js → ai-assistant-widget-Bt4Z7Fmr.js} +2 -2
  10. package/dist/standalone/assets/ai-assistant-widget-Bt4Z7Fmr.js.br +0 -0
  11. package/dist/standalone/assets/ai-assistant-widget-Bt4Z7Fmr.js.gz +0 -0
  12. package/dist/standalone/assets/{ai-assistant-widget-Dk-VvXD0.js.map → ai-assistant-widget-Bt4Z7Fmr.js.map} +1 -1
  13. package/dist/standalone/assets/arrow-left-CI9hUPwJ.js +2 -0
  14. package/dist/standalone/assets/arrow-left-CI9hUPwJ.js.map +1 -0
  15. package/dist/standalone/assets/audit-log-page-2wuGiWg-.js +2 -0
  16. package/dist/standalone/assets/audit-log-page-2wuGiWg-.js.br +0 -0
  17. package/dist/standalone/assets/audit-log-page-2wuGiWg-.js.gz +0 -0
  18. package/dist/standalone/assets/{audit-log-page-BEC79lKy.js.map → audit-log-page-2wuGiWg-.js.map} +1 -1
  19. package/dist/standalone/assets/{calendar-Pq7dP9RH.js → calendar-BZVUWakC.js} +2 -2
  20. package/dist/standalone/assets/calendar-BZVUWakC.js.br +0 -0
  21. package/dist/standalone/assets/calendar-BZVUWakC.js.gz +0 -0
  22. package/dist/standalone/assets/{calendar-Pq7dP9RH.js.map → calendar-BZVUWakC.js.map} +1 -1
  23. package/dist/standalone/assets/chart-widget-BtJb6YXV.js +2 -0
  24. package/dist/standalone/assets/chart-widget-BtJb6YXV.js.br +0 -0
  25. package/dist/standalone/assets/chart-widget-BtJb6YXV.js.gz +0 -0
  26. package/dist/standalone/assets/{chart-widget-B7pIeDCP.js.map → chart-widget-BtJb6YXV.js.map} +1 -1
  27. package/dist/standalone/assets/circle-alert-0EyKeic4.js +2 -0
  28. package/dist/standalone/assets/circle-alert-0EyKeic4.js.map +1 -0
  29. package/dist/standalone/assets/{command-B6-wRF2R.js → command-BNF_evMy.js} +2 -2
  30. package/dist/standalone/assets/command-BNF_evMy.js.br +0 -0
  31. package/dist/standalone/assets/command-BNF_evMy.js.gz +0 -0
  32. package/dist/standalone/assets/{command-B6-wRF2R.js.map → command-BNF_evMy.js.map} +1 -1
  33. package/dist/standalone/assets/{date-picker-BAp85mMa.js → date-picker-LfbUehd1.js} +2 -2
  34. package/dist/standalone/assets/date-picker-LfbUehd1.js.br +0 -0
  35. package/dist/standalone/assets/date-picker-LfbUehd1.js.gz +0 -0
  36. package/dist/standalone/assets/{date-picker-BAp85mMa.js.map → date-picker-LfbUehd1.js.map} +1 -1
  37. package/dist/standalone/assets/{dist-CvKz-wgE.js → dist-BSbFjTlr.js} +2 -2
  38. package/dist/standalone/assets/dist-BSbFjTlr.js.br +0 -0
  39. package/dist/standalone/assets/dist-BSbFjTlr.js.gz +0 -0
  40. package/dist/standalone/assets/dist-BSbFjTlr.js.map +1 -0
  41. package/dist/standalone/assets/{dist-Dkym1-ts.js → dist-BcL2U6dT.js} +2 -2
  42. package/dist/standalone/assets/dist-BcL2U6dT.js.br +0 -0
  43. package/dist/standalone/assets/dist-BcL2U6dT.js.gz +0 -0
  44. package/dist/standalone/assets/{dist-Dkym1-ts.js.map → dist-BcL2U6dT.js.map} +1 -1
  45. package/dist/standalone/assets/edit-page-DCRB9Y_q.js +2 -0
  46. package/dist/standalone/assets/edit-page-DCRB9Y_q.js.br +0 -0
  47. package/dist/standalone/assets/edit-page-DCRB9Y_q.js.gz +0 -0
  48. package/dist/standalone/assets/{edit-page-BVwML9yD.js.map → edit-page-DCRB9Y_q.js.map} +1 -1
  49. package/dist/standalone/assets/ellipsis-lEjcTxo0.js +2 -0
  50. package/dist/standalone/assets/ellipsis-lEjcTxo0.js.map +1 -0
  51. package/dist/standalone/assets/{empty-BmE-qyE9.js → empty-DAEAjFd3.js} +2 -2
  52. package/dist/standalone/assets/empty-DAEAjFd3.js.br +0 -0
  53. package/dist/standalone/assets/empty-DAEAjFd3.js.gz +0 -0
  54. package/dist/standalone/assets/{empty-BmE-qyE9.js.map → empty-DAEAjFd3.js.map} +1 -1
  55. package/dist/standalone/assets/global-search-dialog-HMLztOho.js +2 -0
  56. package/dist/standalone/assets/global-search-dialog-HMLztOho.js.br +0 -0
  57. package/dist/standalone/assets/global-search-dialog-HMLztOho.js.gz +0 -0
  58. package/dist/standalone/assets/{global-search-dialog-C3Ri2VRv.js.map → global-search-dialog-HMLztOho.js.map} +1 -1
  59. package/dist/standalone/assets/{heavy-fields-aI_gOI6-.js → heavy-fields-ZuqfOFMv.js} +2 -2
  60. package/dist/standalone/assets/heavy-fields-ZuqfOFMv.js.br +0 -0
  61. package/dist/standalone/assets/heavy-fields-ZuqfOFMv.js.gz +0 -0
  62. package/dist/standalone/assets/{heavy-fields-aI_gOI6-.js.map → heavy-fields-ZuqfOFMv.js.map} +1 -1
  63. package/dist/standalone/assets/home-page-HmheewiP.js +3 -0
  64. package/dist/standalone/assets/home-page-HmheewiP.js.br +0 -0
  65. package/dist/standalone/assets/home-page-HmheewiP.js.gz +0 -0
  66. package/dist/standalone/assets/{home-page-Xc7HK72H.js.map → home-page-HmheewiP.js.map} +1 -1
  67. package/dist/standalone/assets/icon-registry-BV44--RL.js +2 -0
  68. package/dist/standalone/assets/icon-registry-BV44--RL.js.br +0 -0
  69. package/dist/standalone/assets/icon-registry-BV44--RL.js.gz +0 -0
  70. package/dist/standalone/assets/icon-registry-BV44--RL.js.map +1 -0
  71. package/dist/standalone/assets/{index-OvloY2cG.css → index-95cwJ2RY.css} +1 -1
  72. package/dist/standalone/assets/index-95cwJ2RY.css.br +0 -0
  73. package/dist/standalone/assets/index-95cwJ2RY.css.gz +0 -0
  74. package/dist/standalone/assets/index-t4woXGa-.js +15 -0
  75. package/dist/standalone/assets/index-t4woXGa-.js.br +0 -0
  76. package/dist/standalone/assets/index-t4woXGa-.js.gz +0 -0
  77. package/dist/standalone/assets/index-t4woXGa-.js.map +1 -0
  78. package/dist/standalone/assets/json-editor-sGw4fDoj.js +2 -0
  79. package/dist/standalone/assets/json-editor-sGw4fDoj.js.br +0 -0
  80. package/dist/standalone/assets/json-editor-sGw4fDoj.js.gz +0 -0
  81. package/dist/standalone/assets/{json-editor-DuYj4QGx.js.map → json-editor-sGw4fDoj.js.map} +1 -1
  82. package/dist/standalone/assets/property-renderer-DyCwdVkh.js +7 -0
  83. package/dist/standalone/assets/property-renderer-DyCwdVkh.js.br +0 -0
  84. package/dist/standalone/assets/property-renderer-DyCwdVkh.js.gz +0 -0
  85. package/dist/standalone/assets/property-renderer-DyCwdVkh.js.map +1 -0
  86. package/dist/standalone/assets/reference-Dfd804y3.js +2 -0
  87. package/dist/standalone/assets/reference-Dfd804y3.js.br +0 -0
  88. package/dist/standalone/assets/reference-Dfd804y3.js.gz +0 -0
  89. package/dist/standalone/assets/{reference-CbtDQb7U.js.map → reference-Dfd804y3.js.map} +1 -1
  90. package/dist/standalone/assets/refresh-cw-DHvUQTMb.js +2 -0
  91. package/dist/standalone/assets/refresh-cw-DHvUQTMb.js.map +1 -0
  92. package/dist/standalone/assets/revisions-button-DXZAh2Lu.js +2 -0
  93. package/dist/standalone/assets/revisions-button-DXZAh2Lu.js.br +0 -0
  94. package/dist/standalone/assets/revisions-button-DXZAh2Lu.js.gz +0 -0
  95. package/dist/standalone/assets/{revisions-button-hLRZGkwM.js.map → revisions-button-DXZAh2Lu.js.map} +1 -1
  96. package/dist/standalone/assets/router-wFvtgo77.js +186 -0
  97. package/dist/standalone/assets/router-wFvtgo77.js.br +0 -0
  98. package/dist/standalone/assets/router-wFvtgo77.js.gz +0 -0
  99. package/dist/standalone/assets/router-wFvtgo77.js.map +1 -0
  100. package/dist/standalone/assets/select-BWf6walM.js +2 -0
  101. package/dist/standalone/assets/select-BWf6walM.js.br +0 -0
  102. package/dist/standalone/assets/select-BWf6walM.js.gz +0 -0
  103. package/dist/standalone/assets/{select-BxTIWCco.js.map → select-BWf6walM.js.map} +1 -1
  104. package/dist/standalone/assets/settings-page-Co7sWbbL.js +2 -0
  105. package/dist/standalone/assets/settings-page-Co7sWbbL.js.br +0 -0
  106. package/dist/standalone/assets/settings-page-Co7sWbbL.js.gz +0 -0
  107. package/dist/standalone/assets/{settings-page-FHzVUo4t.js.map → settings-page-Co7sWbbL.js.map} +1 -1
  108. package/dist/standalone/assets/show-page-D-_vldWV.js +2 -0
  109. package/dist/standalone/assets/show-page-D-_vldWV.js.br +0 -0
  110. package/dist/standalone/assets/show-page-D-_vldWV.js.gz +0 -0
  111. package/dist/standalone/assets/show-page-D-_vldWV.js.map +1 -0
  112. package/dist/standalone/assets/{tabs-BrnwAET7.js → tabs-khcHka8W.js} +2 -2
  113. package/dist/standalone/assets/tabs-khcHka8W.js.br +0 -0
  114. package/dist/standalone/assets/tabs-khcHka8W.js.gz +0 -0
  115. package/dist/standalone/assets/{tabs-BrnwAET7.js.map → tabs-khcHka8W.js.map} +1 -1
  116. package/dist/standalone/assets/{zap-Be2c7_cs.js → upload-BVhXhZgn.js} +2 -2
  117. package/dist/standalone/assets/upload-BVhXhZgn.js.br +0 -0
  118. package/dist/standalone/assets/upload-BVhXhZgn.js.gz +0 -0
  119. package/dist/standalone/assets/upload-BVhXhZgn.js.map +1 -0
  120. package/dist/standalone/assets/{useQueries-CX5Gh6HV.js → useQueries-BCUhWYX4.js} +2 -2
  121. package/dist/standalone/assets/useQueries-BCUhWYX4.js.br +0 -0
  122. package/dist/standalone/assets/useQueries-BCUhWYX4.js.gz +0 -0
  123. package/dist/standalone/assets/{useQueries-CX5Gh6HV.js.map → useQueries-BCUhWYX4.js.map} +1 -1
  124. package/dist/standalone/assets/{user-directory-ZxAjN_q9.js → user-directory-9COoW6AO.js} +2 -2
  125. package/dist/standalone/assets/user-directory-9COoW6AO.js.br +0 -0
  126. package/dist/standalone/assets/user-directory-9COoW6AO.js.gz +0 -0
  127. package/dist/standalone/assets/{user-directory-ZxAjN_q9.js.map → user-directory-9COoW6AO.js.map} +1 -1
  128. package/dist/standalone/assets/{value-format-DmXCSwLn.js → value-format-CPnbnlE6.js} +2 -2
  129. package/dist/standalone/assets/value-format-CPnbnlE6.js.br +0 -0
  130. package/dist/standalone/assets/value-format-CPnbnlE6.js.gz +0 -0
  131. package/dist/standalone/assets/{value-format-DmXCSwLn.js.map → value-format-CPnbnlE6.js.map} +1 -1
  132. package/dist/standalone/assets/wand-sparkles-DWaFQeYS.js +2 -0
  133. package/dist/standalone/assets/wand-sparkles-DWaFQeYS.js.map +1 -0
  134. package/dist/standalone/assets/wizard-create-page-CFwMs8E3.js +2 -0
  135. package/dist/standalone/assets/wizard-create-page-CFwMs8E3.js.br +0 -0
  136. package/dist/standalone/assets/wizard-create-page-CFwMs8E3.js.gz +0 -0
  137. package/dist/standalone/assets/{wizard-create-page-Rh4uWxUR.js.map → wizard-create-page-CFwMs8E3.js.map} +1 -1
  138. package/dist/standalone/assets/zap-b3saQVKc.js +2 -0
  139. package/dist/standalone/assets/zap-b3saQVKc.js.map +1 -0
  140. package/dist/standalone/assets/{zod-bSPpBhsj.js → zod-BbfEBA4A.js} +2 -2
  141. package/dist/standalone/assets/zod-BbfEBA4A.js.br +0 -0
  142. package/dist/standalone/assets/zod-BbfEBA4A.js.gz +0 -0
  143. package/dist/standalone/assets/{zod-bSPpBhsj.js.map → zod-BbfEBA4A.js.map} +1 -1
  144. package/dist/standalone/index.html +8 -8
  145. package/dist/standalone/index.html.br +0 -0
  146. package/dist/standalone/index.html.gz +0 -0
  147. package/package.json +5 -5
  148. package/dist/standalone/assets/ai-assistant-widget-Dk-VvXD0.js.br +0 -0
  149. package/dist/standalone/assets/ai-assistant-widget-Dk-VvXD0.js.gz +0 -0
  150. package/dist/standalone/assets/audit-log-page-BEC79lKy.js +0 -2
  151. package/dist/standalone/assets/audit-log-page-BEC79lKy.js.br +0 -0
  152. package/dist/standalone/assets/audit-log-page-BEC79lKy.js.gz +0 -0
  153. package/dist/standalone/assets/calendar-Pq7dP9RH.js.br +0 -0
  154. package/dist/standalone/assets/calendar-Pq7dP9RH.js.gz +0 -0
  155. package/dist/standalone/assets/chart-widget-B7pIeDCP.js +0 -2
  156. package/dist/standalone/assets/chart-widget-B7pIeDCP.js.br +0 -0
  157. package/dist/standalone/assets/chart-widget-B7pIeDCP.js.gz +0 -0
  158. package/dist/standalone/assets/command-B6-wRF2R.js.br +0 -0
  159. package/dist/standalone/assets/command-B6-wRF2R.js.gz +0 -0
  160. package/dist/standalone/assets/date-picker-BAp85mMa.js.br +0 -0
  161. package/dist/standalone/assets/date-picker-BAp85mMa.js.gz +0 -0
  162. package/dist/standalone/assets/dist-CvKz-wgE.js.br +0 -0
  163. package/dist/standalone/assets/dist-CvKz-wgE.js.gz +0 -0
  164. package/dist/standalone/assets/dist-CvKz-wgE.js.map +0 -1
  165. package/dist/standalone/assets/dist-Dkym1-ts.js.br +0 -0
  166. package/dist/standalone/assets/dist-Dkym1-ts.js.gz +0 -0
  167. package/dist/standalone/assets/edit-page-BVwML9yD.js +0 -2
  168. package/dist/standalone/assets/edit-page-BVwML9yD.js.br +0 -0
  169. package/dist/standalone/assets/edit-page-BVwML9yD.js.gz +0 -0
  170. package/dist/standalone/assets/empty-BmE-qyE9.js.br +0 -0
  171. package/dist/standalone/assets/empty-BmE-qyE9.js.gz +0 -0
  172. package/dist/standalone/assets/global-search-dialog-C3Ri2VRv.js +0 -2
  173. package/dist/standalone/assets/global-search-dialog-C3Ri2VRv.js.br +0 -0
  174. package/dist/standalone/assets/global-search-dialog-C3Ri2VRv.js.gz +0 -0
  175. package/dist/standalone/assets/heavy-fields-aI_gOI6-.js.br +0 -0
  176. package/dist/standalone/assets/heavy-fields-aI_gOI6-.js.gz +0 -0
  177. package/dist/standalone/assets/home-page-Xc7HK72H.js +0 -3
  178. package/dist/standalone/assets/home-page-Xc7HK72H.js.br +0 -0
  179. package/dist/standalone/assets/home-page-Xc7HK72H.js.gz +0 -0
  180. package/dist/standalone/assets/icon-registry-AlRIE8PQ.js +0 -2
  181. package/dist/standalone/assets/icon-registry-AlRIE8PQ.js.br +0 -0
  182. package/dist/standalone/assets/icon-registry-AlRIE8PQ.js.gz +0 -0
  183. package/dist/standalone/assets/icon-registry-AlRIE8PQ.js.map +0 -1
  184. package/dist/standalone/assets/index-OvloY2cG.css.br +0 -0
  185. package/dist/standalone/assets/index-OvloY2cG.css.gz +0 -0
  186. package/dist/standalone/assets/index-R1VJOHqq.js +0 -15
  187. package/dist/standalone/assets/index-R1VJOHqq.js.br +0 -0
  188. package/dist/standalone/assets/index-R1VJOHqq.js.gz +0 -0
  189. package/dist/standalone/assets/index-R1VJOHqq.js.map +0 -1
  190. package/dist/standalone/assets/json-editor-DuYj4QGx.js +0 -2
  191. package/dist/standalone/assets/json-editor-DuYj4QGx.js.br +0 -0
  192. package/dist/standalone/assets/json-editor-DuYj4QGx.js.gz +0 -0
  193. package/dist/standalone/assets/property-renderer-U2F_u1LG.js +0 -7
  194. package/dist/standalone/assets/property-renderer-U2F_u1LG.js.br +0 -0
  195. package/dist/standalone/assets/property-renderer-U2F_u1LG.js.gz +0 -0
  196. package/dist/standalone/assets/property-renderer-U2F_u1LG.js.map +0 -1
  197. package/dist/standalone/assets/reference-CbtDQb7U.js +0 -2
  198. package/dist/standalone/assets/reference-CbtDQb7U.js.br +0 -0
  199. package/dist/standalone/assets/reference-CbtDQb7U.js.gz +0 -0
  200. package/dist/standalone/assets/refresh-cw-B2G7AzZh.js +0 -2
  201. package/dist/standalone/assets/refresh-cw-B2G7AzZh.js.map +0 -1
  202. package/dist/standalone/assets/revisions-button-hLRZGkwM.js +0 -2
  203. package/dist/standalone/assets/revisions-button-hLRZGkwM.js.br +0 -0
  204. package/dist/standalone/assets/revisions-button-hLRZGkwM.js.gz +0 -0
  205. package/dist/standalone/assets/router-DmBe_NWn.js +0 -186
  206. package/dist/standalone/assets/router-DmBe_NWn.js.br +0 -0
  207. package/dist/standalone/assets/router-DmBe_NWn.js.gz +0 -0
  208. package/dist/standalone/assets/router-DmBe_NWn.js.map +0 -1
  209. package/dist/standalone/assets/select-BxTIWCco.js +0 -2
  210. package/dist/standalone/assets/select-BxTIWCco.js.br +0 -0
  211. package/dist/standalone/assets/select-BxTIWCco.js.gz +0 -0
  212. package/dist/standalone/assets/settings-page-FHzVUo4t.js +0 -2
  213. package/dist/standalone/assets/settings-page-FHzVUo4t.js.br +0 -0
  214. package/dist/standalone/assets/settings-page-FHzVUo4t.js.gz +0 -0
  215. package/dist/standalone/assets/show-page-Jotfue76.js +0 -2
  216. package/dist/standalone/assets/show-page-Jotfue76.js.br +0 -0
  217. package/dist/standalone/assets/show-page-Jotfue76.js.gz +0 -0
  218. package/dist/standalone/assets/show-page-Jotfue76.js.map +0 -1
  219. package/dist/standalone/assets/tabs-BrnwAET7.js.br +0 -0
  220. package/dist/standalone/assets/tabs-BrnwAET7.js.gz +0 -0
  221. package/dist/standalone/assets/useQueries-CX5Gh6HV.js.br +0 -0
  222. package/dist/standalone/assets/useQueries-CX5Gh6HV.js.gz +0 -0
  223. package/dist/standalone/assets/user-directory-ZxAjN_q9.js.br +0 -0
  224. package/dist/standalone/assets/user-directory-ZxAjN_q9.js.gz +0 -0
  225. package/dist/standalone/assets/value-format-DmXCSwLn.js.br +0 -0
  226. package/dist/standalone/assets/value-format-DmXCSwLn.js.gz +0 -0
  227. package/dist/standalone/assets/wand-sparkles-BDM69Lk9.js +0 -2
  228. package/dist/standalone/assets/wand-sparkles-BDM69Lk9.js.map +0 -1
  229. package/dist/standalone/assets/wizard-create-page-Rh4uWxUR.js +0 -2
  230. package/dist/standalone/assets/wizard-create-page-Rh4uWxUR.js.br +0 -0
  231. package/dist/standalone/assets/wizard-create-page-Rh4uWxUR.js.gz +0 -0
  232. package/dist/standalone/assets/zap-Be2c7_cs.js.br +0 -0
  233. package/dist/standalone/assets/zap-Be2c7_cs.js.gz +0 -0
  234. package/dist/standalone/assets/zap-Be2c7_cs.js.map +0 -1
  235. package/dist/standalone/assets/zod-bSPpBhsj.js.br +0 -0
  236. package/dist/standalone/assets/zod-bSPpBhsj.js.gz +0 -0
@@ -12,18 +12,18 @@
12
12
  smoke tests), the standalone entry falls back to same-origin defaults.
13
13
  -->
14
14
  <!--MODERN_ADMIN_CONFIG-->
15
- <script type="module" crossorigin src="./assets/index-R1VJOHqq.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-t4woXGa-.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="./assets/createLucideIcon-CUopU_LC.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/with-selector-NDLhu4dT.js">
18
- <link rel="modulepreload" crossorigin href="./assets/dist-CvKz-wgE.js">
18
+ <link rel="modulepreload" crossorigin href="./assets/dist-BSbFjTlr.js">
19
19
  <link rel="modulepreload" crossorigin href="./assets/x-C3kLunD6.js">
20
20
  <link rel="modulepreload" crossorigin href="./assets/dist-Dpg8xy_r.js">
21
- <link rel="modulepreload" crossorigin href="./assets/router-DmBe_NWn.js">
22
- <link rel="modulepreload" crossorigin href="./assets/dist-Dkym1-ts.js">
23
- <link rel="stylesheet" crossorigin href="./assets/index-OvloY2cG.css">
24
- <link rel="prefetch" as="script" href="./assets/home-page-Xc7HK72H.js">
25
- <link rel="prefetch" as="script" href="./assets/icon-registry-AlRIE8PQ.js">
26
- <link rel="prefetch" as="script" href="./assets/property-renderer-U2F_u1LG.js">
21
+ <link rel="modulepreload" crossorigin href="./assets/router-wFvtgo77.js">
22
+ <link rel="modulepreload" crossorigin href="./assets/dist-BcL2U6dT.js">
23
+ <link rel="stylesheet" crossorigin href="./assets/index-95cwJ2RY.css">
24
+ <link rel="prefetch" as="script" href="./assets/home-page-HmheewiP.js">
25
+ <link rel="prefetch" as="script" href="./assets/icon-registry-BV44--RL.js">
26
+ <link rel="prefetch" as="script" href="./assets/property-renderer-DyCwdVkh.js">
27
27
  </head>
28
28
  <body>
29
29
  <div id="root"></div>
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modern-admin/web",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Pre-built React admin SPA. Mount it into a host page or let @modern-admin/nest serve the standalone bundle.",
@@ -57,10 +57,10 @@
57
57
  "react-dom": "^19.2.6"
58
58
  },
59
59
  "dependencies": {
60
- "@modern-admin/core": "^0.3.3",
61
- "@modern-admin/i18n": "^0.3.2",
62
- "@modern-admin/react": "^0.3.3",
63
- "@modern-admin/ui": "^0.3.2",
60
+ "@modern-admin/core": "^0.3.4",
61
+ "@modern-admin/i18n": "^0.3.4",
62
+ "@modern-admin/react": "^0.3.4",
63
+ "@modern-admin/ui": "^0.3.4",
64
64
  "@tanstack/react-query": "^5.100.9"
65
65
  },
66
66
  "devDependencies": {
@@ -1,2 +0,0 @@
1
- import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n,s as r}from"./with-selector-NDLhu4dT.js";import{n as i,r as a,t as o}from"./key-lbuX0yk_.js";import{n as s,t as c}from"./trash-2-DhyKQCKv.js";import{n as l,t as u}from"./pencil-BO-k3yTG.js";import{t as d}from"./file-text-CcLZq8HA.js";import{t as f}from"./key-round-CQLp1Ua9.js";import{t as p}from"./x-C3kLunD6.js";import{s as m}from"./dist-Dpg8xy_r.js";import{a as h,i as g,n as _,r as v,t as y}from"./select-BxTIWCco.js";import{a as b,c as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./calendar-Pq7dP9RH.js";import{$ as O,G as k,H as A,I as j,K as M,U as N,n as P}from"./router-DmBe_NWn.js";import{a as ee,i as te,n as ne}from"./useQueries-CX5Gh6HV.js";import{a as F,i as I,n as L,t as R}from"./card-4cS4uWCP.js";import{a as z,i as B,n as re,r as ie,t as V}from"./user-directory-ZxAjN_q9.js";import{H,J as U,_t as ae,at as oe,it as se}from"./index-R1VJOHqq.js";var W=e(t(),1),G=n(),K=`yyyy-MM-dd`,q=`MMM d, yyyy`;function J(e){if(!e)return;let t=e.length<=10?S(e,K,new Date):C(e);return E(t)?t:void 0}function Y({from:e,to:t,onChange:n,disabled:i,className:o,labels:s={}}){let c=s.placeholder??`Select date range`,l=s.apply??`Apply`,u=s.clear??`Clear`,[d,f]=W.useState(!1),[h,g]=W.useState(()=>{let n=J(e),r=J(t);return n&&r?{from:n,to:r}:void 0});W.useEffect(()=>{let n=J(e),r=J(t);g(n??r?{from:n,to:r}:void 0)},[e,t]);let[_,v]=W.useState(()=>typeof window<`u`&&window.innerWidth>=640?2:1);W.useEffect(()=>{let e=window.matchMedia(`(min-width: 640px)`),t=e=>v(e.matches?2:1);return v(e.matches?2:1),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[y,S]=W.useState(()=>w(J(e)??new Date)),[C,E]=W.useState(()=>{let n=J(e),r=J(t),i=w(n??new Date);return r&&!T(i,r)?w(r):x(i,1)}),O=n=>{if(n){let n=J(e),r=J(t);g(n&&r?{from:n,to:r}:void 0);let i=w(n??new Date),a=r&&!T(i,r)?w(r):x(i,1);S(i),E(a)}else{let n=J(e),r=J(t);g(n??r?{from:n,to:r}:void 0)}f(n)},k=e=>{S(e),!T(e,C)&&e>C&&E(x(e,1))},A=e=>{E(e),!T(e,y)&&e<y&&S(x(e,-1))},j=e=>{g(e)},M=()=>{h?.from&&n(b(h.from,K),h.to?b(h.to,K):``),f(!1)},N=()=>{g(void 0),n(``,``),f(!1)},P=e=>{e.stopPropagation(),g(void 0),n(``,``)},F=J(e),I=J(t),L=!!(e||t),R=L?[F?b(F,q):`…`,I?b(I,q):`…`].join(` – `):null;return(0,G.jsxs)(ne,{open:d,onOpenChange:O,children:[(0,G.jsx)(ee,{asChild:!0,children:(0,G.jsxs)(m,{type:`button`,variant:`outline`,disabled:i,className:r(`h-9 w-full justify-start gap-2 px-3 font-normal`,!L&&`text-muted-foreground`,o),children:[(0,G.jsx)(a,{className:`size-4 shrink-0 opacity-60`}),(0,G.jsx)(`span`,{className:`flex-1 truncate text-left text-sm`,children:R??c}),L&&(0,G.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":u,onClick:P,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&P(e)},className:`ml-1 rounded-sm p-0.5 opacity-50 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:(0,G.jsx)(p,{className:`size-3.5`})})]})}),(0,G.jsxs)(te,{className:`w-auto p-0`,align:`start`,children:[_===2?(0,G.jsxs)(`div`,{className:`flex flex-col sm:flex-row`,children:[(0,G.jsx)(D,{mode:`range`,selected:h,onSelect:j,numberOfMonths:1,month:y,onMonthChange:k,endMonth:C,autoFocus:!0}),(0,G.jsx)(D,{mode:`range`,selected:h,onSelect:j,numberOfMonths:1,month:C,onMonthChange:A,startMonth:y})]}):(0,G.jsx)(D,{mode:`range`,selected:h,onSelect:j,numberOfMonths:1,defaultMonth:h?.from??h?.to??void 0,autoFocus:!0}),(0,G.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-3 py-2`,children:[(0,G.jsx)(m,{variant:`ghost`,size:`sm`,onClick:N,children:u}),(0,G.jsx)(m,{size:`sm`,onClick:M,disabled:!h?.from,children:l})]})]})]})}Y.displayName=`DateRangeInput`;var X=`__all__`,ce=[`new`,`edit`,`delete`,`bulkDelete`,`login`,`apiKey.create`,`apiKey.update`,`apiKey.delete`],Z={__auth__:`audit:virtualResource.auth`,__api_keys__:`audit:virtualResource.apiKeys`},le={Icon:d,iconClass:`text-muted-foreground`,bgClass:`bg-muted`,titleKey:``},Q={new:{Icon:i,iconClass:`text-blue-600 dark:text-blue-300`,bgClass:`bg-blue-100 dark:bg-blue-950/40`,titleKey:`audit:action.new`},edit:{Icon:u,iconClass:`text-emerald-600 dark:text-emerald-300`,bgClass:`bg-emerald-100 dark:bg-emerald-950/40`,titleKey:`audit:action.edit`},delete:{Icon:c,iconClass:`text-rose-600 dark:text-rose-300`,bgClass:`bg-rose-100 dark:bg-rose-950/40`,titleKey:`audit:action.delete`},bulkDelete:{Icon:c,iconClass:`text-rose-600 dark:text-rose-300`,bgClass:`bg-rose-100 dark:bg-rose-950/40`,titleKey:`audit:action.bulkDelete`},login:{Icon:se,iconClass:`text-violet-600 dark:text-violet-300`,bgClass:`bg-violet-100 dark:bg-violet-950/40`,titleKey:`audit:action.login`},"apiKey.create":{Icon:o,iconClass:`text-amber-600 dark:text-amber-300`,bgClass:`bg-amber-100 dark:bg-amber-950/40`,titleKey:`audit:action.apiKeyCreate`},"apiKey.update":{Icon:f,iconClass:`text-amber-600 dark:text-amber-300`,bgClass:`bg-amber-100 dark:bg-amber-950/40`,titleKey:`audit:action.apiKeyUpdate`},"apiKey.delete":{Icon:c,iconClass:`text-rose-600 dark:text-rose-300`,bgClass:`bg-rose-100 dark:bg-rose-950/40`,titleKey:`audit:action.apiKeyDelete`}};function ue(e){let t=W.useMemo(()=>new Intl.RelativeTimeFormat(e,{numeric:`auto`}),[e]),n=W.useMemo(()=>new Intl.DateTimeFormat(e,{dateStyle:`medium`,timeStyle:`short`}),[e]);return W.useCallback((e,r)=>{let i=Math.round((r-e)/1e3);return i<45?t.format(-Math.max(i,0),`second`):i<3600?t.format(-Math.round(i/60),`minute`):i<86400?t.format(-Math.round(i/3600),`hour`):i<86400*7?t.format(-Math.round(i/86400),`day`):n.format(new Date(e))},[n,t])}var de=e=>{let t=e.split(/\s+|[._@-]/).filter(Boolean);return t.length===0?`?`:t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[1][0]).toUpperCase()},$=25;function fe(){let{t:e,locale:t}=O(),n=M(),[r,i]=W.useState({}),a=j(r,$),o=W.useMemo(()=>(a.data?.pages??[]).flatMap(e=>e.events.slice(0,$)),[a.data]),s=re(W.useMemo(()=>Array.from(new Set(o.map(e=>e.userId).filter(e=>!!e))),[o])),c=W.useMemo(()=>{let e={};for(let t of n)e[t.id]=t;return e},[n]),l=n.some(e=>e.id===V),u=ue(t),d=W.useCallback(e=>new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)),[t]),f=W.useMemo(()=>Date.now(),[o]),p=W.useRef(null),{hasNextPage:m,isFetchingNextPage:b,fetchNextPage:x}=a;W.useEffect(()=>{let e=p.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&m&&!b&&x()},{rootMargin:`200px`});return t.observe(e),()=>t.disconnect()},[m,b,x]);let S=e=>{i(t=>({...t,...e}))};return(0,G.jsxs)(`div`,{className:`space-y-2 sm:space-y-4`,children:[(0,G.jsxs)(R,{children:[(0,G.jsx)(I,{children:(0,G.jsx)(F,{children:e(`audit:title`)})}),(0,G.jsxs)(L,{className:`grid gap-3 sm:grid-cols-2 md:grid-cols-4`,children:[(0,G.jsxs)(y,{value:r.resourceId??X,onValueChange:e=>S({resourceId:e===X?void 0:e}),children:[(0,G.jsx)(g,{"aria-label":e(`audit:resource`),children:(0,G.jsx)(h,{})}),(0,G.jsxs)(_,{children:[(0,G.jsx)(v,{value:X,children:e(`audit:allResources`)}),Object.entries(Z).map(([t,n])=>(0,G.jsx)(v,{value:t,children:e(n)},t)),n.map(e=>(0,G.jsxs)(v,{value:e.id,children:[e.name,e.name!==e.id&&(0,G.jsxs)(`span`,{className:`ml-1.5 text-xs text-muted-foreground`,children:[`(`,e.id,`)`]})]},e.id))]})]}),(0,G.jsxs)(y,{value:r.actions?.[0]??X,onValueChange:e=>S({actions:e===X?void 0:[e]}),children:[(0,G.jsx)(g,{"aria-label":e(`audit:action`),children:(0,G.jsx)(h,{})}),(0,G.jsxs)(_,{children:[(0,G.jsx)(v,{value:X,children:e(`audit:allActions`)}),ce.map(t=>{let n=Q[t];return(0,G.jsx)(v,{value:t,children:n?.titleKey?e(n.titleKey):t},t)})]})]}),(0,G.jsx)(U,{value:r.recordId??``,placeholder:e(`audit:recordId`),onChange:e=>S({recordId:e.target.value||void 0})}),(0,G.jsx)(U,{value:r.userId??``,placeholder:e(`audit:userId`),onChange:e=>S({userId:e.target.value||void 0})}),(0,G.jsx)(Y,{from:r.from,to:r.to,onChange:(e,t)=>S({from:e||void 0,to:t||void 0}),className:`sm:col-span-2 md:col-span-4`,labels:{placeholder:e(`audit:dateRangePlaceholder`),apply:e(`common:apply`),clear:e(`common:clear`)}})]})]}),(0,G.jsx)(R,{children:(0,G.jsxs)(L,{children:[a.isLoading?(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsx)(H,{className:`h-20 w-full`}),(0,G.jsx)(H,{className:`h-20 w-full`}),(0,G.jsx)(H,{className:`h-20 w-full`})]}):a.isError?(0,G.jsx)(`div`,{className:`rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive`,children:e(`audit:loadError`)}):o.length===0?(0,G.jsx)(`div`,{className:`rounded-md border border-dashed border-border p-6 text-center text-sm text-muted-foreground`,children:e(`audit:noEvents`)}):(0,G.jsx)(`ol`,{className:`space-y-3`,children:o.map((e,t)=>(0,G.jsx)(pe,{entry:e,resource:c[e.resourceId],user:e.userId?s.get(e.userId)??null:null,userResourceId:l?V:void 0,now:f,formatRelative:u,formatAbsolute:d},e.id??`${e.at}:${t}`))}),(0,G.jsx)(`div`,{ref:p,className:`h-1`,"aria-hidden":!0}),a.isFetchingNextPage&&(0,G.jsx)(`div`,{className:`flex justify-center py-4`,children:(0,G.jsx)(oe,{className:`size-5 animate-spin text-muted-foreground`})})]})})]})}function pe({entry:e,resource:t,user:n,userResourceId:i,now:a,formatRelative:o,formatAbsolute:c}){let{t:u}=O(),[d,f]=W.useState(!1),p=Q[e.action]??le,h=p.Icon,g=p.titleKey?u(p.titleKey):e.action,_=ie(n,e.userId??u(`history:unknownUser`)),v=u(`audit:by`,{user:`\0`}).split(`\0`),y=v[0]??``,b=v[1]??``,x=Z[e.resourceId],S=x?u(x):t?.name??e.resourceId,C=e.action===`edit`&&!!e.recordId;return(0,G.jsx)(`li`,{className:`rounded-lg border border-border bg-card p-4 shadow-sm`,children:(0,G.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,G.jsx)(`span`,{className:r(`flex size-10 shrink-0 items-center justify-center rounded-full`,p.bgClass),children:(0,G.jsx)(h,{className:r(`size-5`,p.iconClass)})}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`truncate text-sm font-semibold`,children:g}),(0,G.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-muted-foreground`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:S}),e.recordId&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{"aria-hidden":!0,children:`·`}),t?(0,G.jsxs)(P,{to:{name:`show`,resourceId:e.resourceId,recordId:e.recordId},className:`inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground hover:underline`,title:e.recordId,children:[(0,G.jsx)(`span`,{className:`truncate max-w-[12rem]`,children:e.recordTitle??`#${e.recordId}`}),(0,G.jsx)(l,{className:`size-3 shrink-0`})]}):e.recordTitle?(0,G.jsx)(`span`,{className:`truncate max-w-[12rem] rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground`,title:e.recordId,children:e.recordTitle}):null]}),!e.recordId&&e.recordIds?.length?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,G.jsxs)(`span`,{children:[e.recordIds.length,` `,u(`audit:records`)]})]}):null]}),(0,G.jsxs)(`p`,{className:`mt-1 flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,G.jsx)(`span`,{"aria-hidden":!0,className:`inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-[10px] font-semibold text-primary`,children:de(_)}),(0,G.jsxs)(`span`,{className:`truncate`,children:[y,i&&e.userId?(0,G.jsx)(P,{to:{name:`show`,resourceId:i,recordId:e.userId},className:`font-medium text-foreground hover:underline`,children:_}):_,b]})]})]}),(0,G.jsx)(`time`,{className:`shrink-0 text-xs text-muted-foreground`,dateTime:new Date(e.at).toISOString(),title:c(e.at),children:o(e.at,a)})]}),C&&(0,G.jsxs)(`div`,{className:`mt-3`,children:[(0,G.jsxs)(m,{variant:`ghost`,size:`sm`,className:`-ml-2 h-7 px-2 text-xs`,onClick:()=>f(e=>!e),"aria-expanded":d,children:[d?(0,G.jsx)(s,{className:`size-3.5`}):(0,G.jsx)(ae,{className:`size-3.5`}),u(d?`audit:hideChanges`:`audit:viewChanges`)]}),d&&(0,G.jsx)(`div`,{className:`mt-2`,children:(0,G.jsx)(me,{resourceId:e.resourceId,recordId:e.recordId,atMs:e.at})})]})]})]})})}function me({resourceId:e,recordId:t,atMs:n}){let{t:r}=O(),i=k(e),a=N(e,t,{limit:50}),o=A(e,t),s=W.useMemo(()=>{let e={};for(let t of i?.properties??[])e[t.path]=t.label;return e},[i]);if(a.isLoading)return(0,G.jsx)(H,{className:`h-16 w-full`});if(a.isError)return(0,G.jsx)(`div`,{className:`rounded-md border border-destructive/50 bg-destructive/10 p-3 text-xs text-destructive`,children:r(`audit:loadDiffError`)});let c=ge(a.data?.revisions??[],n);if(!c)return(0,G.jsx)(`div`,{className:`rounded-md border border-dashed border-border p-3 text-xs text-muted-foreground`,children:r(`audit:noDiff`)});let l=B(c.snapshotBefore??{},c.snapshot).map(e=>({...e,label:s[e.path]})),u=o.data?.record?.title;return(0,G.jsxs)(`div`,{className:`space-y-2`,children:[u&&u!==t&&(0,G.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,title:u,children:u}),(0,G.jsx)(z,{fields:l,labels:{added:r(`diff:added`),changed:r(`diff:changed`),removed:r(`diff:removed`),before:r(`diff:before`),after:r(`diff:after`),noChanges:r(`diff:noChanges`)}})]})}var he=6e4,ge=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=new Date(i.createdAt).getTime();if(Number.isNaN(e))continue;let a=Math.abs(e-t);a<r&&a<=he&&(r=a,n=i)}return n};export{fe as AuditLogPage};
2
- //# sourceMappingURL=audit-log-page-BEC79lKy.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n}from"./with-selector-NDLhu4dT.js";import{a as r,i,n as a,t as o}from"./refresh-cw-B2G7AzZh.js";import{t as ee}from"./trash-2-DhyKQCKv.js";import{n as te,r as ne,t as re}from"./minimize-2-Bx2cH_WS.js";import{t as ie}from"./copy-BexCWf4U.js";import{t as ae}from"./pencil-BO-k3yTG.js";import{n as oe,t as se}from"./palette-DVP_4RAn.js";import{t as ce}from"./triangle-alert-CyaaNWN8.js";import{s}from"./dist-Dpg8xy_r.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-BxTIWCco.js";import{$ as p,G as le,X as ue}from"./router-DmBe_NWn.js";import{t as m}from"./date-picker-BAp85mMa.js";import{a as de,i as fe,n as pe,t as me}from"./card-4cS4uWCP.js";import{a as h,c as he,i as g,l as ge,n as _e,o as _,r as ve,s as v,t as y}from"./value-format-DmXCSwLn.js";import{r as ye}from"./use-dashboard-charts-Cr3OUSL5.js";import{t as b}from"./reference-CbtDQb7U.js";import{H as be,I as x,J as S,L as C,M as xe,N as w,O as Se,P as T,R as E,S as Ce,T as D,vt as O,w as we}from"./index-R1VJOHqq.js";var k=e(t(),1);function A(e,t,n){if(n===`all`)return[e.slice(0,10)];let r=[],i=N(new Date(e),n),a=N(new Date(t),n);for(;i.getTime()<=a.getTime();)r.push(M(i)),P(i,n);return r}function j(e,t,n,r){let i=A(t,n,r);return e.map(e=>{let t=new Map(e.points.map(e=>[e.date,e.value])),n=i.map(e=>({date:e,value:t.get(e)??0}));return{key:e.key,points:n}})}function Te(e,t=`en-US`){let n=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`2-digit`}),r=new Intl.DateTimeFormat(t,{month:`2-digit`,year:`numeric`}),i=new Intl.DateTimeFormat(t,{year:`numeric`});return t=>{let a=new Date(t);return e===`year`?i.format(a):e===`month`?r.format(a):n.format(a)}}function Ee(e,t=`en-US`){let n=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`long`,year:`numeric`}),r=new Intl.DateTimeFormat(t,{month:`long`,year:`numeric`}),i=new Intl.DateTimeFormat(t,{year:`numeric`}),a=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`short`});return t=>{let o=new Date(t);if(e===`year`)return i.format(o);if(e===`month`)return r.format(o);if(e===`week`){let e=new Date(o);return e.setDate(e.getDate()+6),`${a.format(o)} – ${a.format(e)}`}return n.format(o)}}function M(e){return e.toISOString().slice(0,10)}function N(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()));if(t===`week`){let e=(n.getUTCDay()+6)%7;n.setUTCDate(n.getUTCDate()-e)}else t===`month`?n.setUTCDate(1):t===`year`&&n.setUTCMonth(0,1);return n}function P(e,t){t===`day`?e.setUTCDate(e.getUTCDate()+1):t===`week`?e.setUTCDate(e.getUTCDate()+7):t===`month`?e.setUTCMonth(e.getUTCMonth()+1):t===`year`&&e.setUTCFullYear(e.getUTCFullYear()+1)}var F=`__prev__:`;function De(e){let t=Date.parse(`${e.from}T00:00:00.000Z`),n=Date.parse(`${e.to}T00:00:00.000Z`);if(Number.isNaN(t)||Number.isNaN(n)||n<t)return null;let r=Math.round((n-t)/864e5)+1;return{from:L(new Date(t-r*864e5)),to:L(new Date(t-864e5))}}function Oe(e,t,n,r){if(n.length===0)return[];let i=A(t.from,t.to,r),a=n.length-i.length;return e.map(e=>{let t=new Map(e.points.map(e=>[e.date,e.value])),r=n.map((e,n)=>{let r=i[n-a];return r===void 0?{date:e,value:0}:{date:e,value:t.get(r)??0,sourceDate:r}});return{key:`${F}${e.key}`,sourceKey:e.key,points:r}})}function I(e){if(!e||e.length===0)return null;let t=0;for(let n of e)for(let e of n.points)t+=e.value;return t}function ke(e,t){if(e==null||t==null||t===0)return null;let n=Math.round((e-t)/Math.abs(t)*1e3)/10;return{percent:n,direction:n>0?`up`:n<0?`down`:`flat`}}var L=e=>e.toISOString().slice(0,10),R=n();function Ae({items:e,onSave:t,onClose:n}){let{t:r}=p(),[i,a]=k.useState(()=>Object.fromEntries(e.map(e=>[e.key,e.override])));return(0,R.jsx)(w,{open:!0,onOpenChange:e=>{e||n()},children:(0,R.jsxs)(T,{className:`w-full max-w-lg`,children:[(0,R.jsx)(C,{children:(0,R.jsx)(E,{children:r(`dashboard:widget.colorsTitle`)})}),(0,R.jsx)(`div`,{className:`max-h-[60vh] space-y-4 overflow-y-auto py-1`,children:e.map(e=>(0,R.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,R.jsx)(`span`,{className:`size-3 shrink-0 rounded-full`,style:{backgroundColor:i[e.key]??e.auto}}),(0,R.jsx)(`span`,{className:`truncate font-medium`,children:e.label})]}),(0,R.jsx)(h,{value:i[e.key],onChange:t=>a(n=>({...n,[e.key]:t})),presets:_,labels:{custom:r(`dashboard:widget.colorCustom`),pick:r(`dashboard:widget.colorPick`),auto:r(`dashboard:widget.colorAuto`)}})]},e.key))}),(0,R.jsxs)(x,{children:[(0,R.jsx)(s,{variant:`outline`,onClick:n,children:r(`common:cancel`)}),(0,R.jsx)(s,{onClick:()=>{let e={};for(let[t,n]of Object.entries(i))n&&(e[t]=n);t(e)},children:r(`common:save`)})]})]})})}var je=[`7d`,`30d`,`90d`,`1y`,`all`,`custom`],Me=[`day`,`week`,`month`,`year`];function z({config:e,onEdit:t,onDelete:n,onMove:h,onUpdate:_}){let{t:v,locale:y}=p(),b=e.visualisation===`kpi`,x=b?`all`:e.timeRange.preset===`all`&&(e.step===`day`||e.step===`week`)?`month`:e.timeRange.preset===`1y`&&e.step===`day`?`week`:e.step,S=k.useMemo(()=>ye(e.timeRange),[e.timeRange]),C=!b&&e.comparePrevious===!0&&!e.groupBy,w=le(e.resource),T=k.useMemo(()=>{if(e.groupByLabelResource)return e.groupByLabelResource;if(!e.groupBy||!w)return;let t=w.properties,n=t.find(t=>t.path===e.groupBy);if(!n)return;if(n.reference)return n.reference;let r=n.path.endsWith(`_id`)?n.path.slice(0,-3):n.path.endsWith(`Id`)?n.path.slice(0,-2):``;if(r){let e=t.find(e=>e.path===r&&e.reference);if(e?.reference)return e.reference}},[e.groupBy,e.groupByLabelResource,w]),{data:E,isLoading:j,isError:M,refetch:N,isFetching:P}=ue(k.useMemo(()=>({resource:e.resource,dateField:e.dateField,step:x,metric:e.metric,from:S.from,to:S.to,...e.field?{field:e.field}:{},...!b&&e.groupBy?{groupBy:e.groupBy}:{},...!b&&e.groupBy?{topN:e.topN}:{},...!b&&e.groupBy&&T?{groupByLabelResource:T}:{},...Object.keys(e.filters).length?{filters:e.filters}:{},...b||C?{comparePrevious:!0}:{}}),[e,S,b,C,x,T])),[F,L]=k.useState(!1),[z,B]=k.useState(!1),[H,U]=k.useState(S.from),[W,Re]=k.useState(S.to),G=e.quickFilters??[],[K,ze]=k.useState(()=>V(G,e.filters)),Be=G.join(`|`),Ve=k.useMemo(()=>Object.entries(e.filters).map(([e,t])=>`${e}=${t}`).sort().join(`|`),[e.filters]);k.useEffect(()=>{ze(V(G,e.filters))},[Be,Ve]);let He=()=>{let t={...e.filters};for(let e of G){let n=K[e]??``;n===``?delete t[e]:t[e]=n}q({filters:t})},Ue=G.some(t=>(K[t]??``)!==(e.filters[t]??``)),q=t=>{_({...e,...t,updatedAt:new Date().toISOString()})},We=e=>{e===`custom`?(U(S.from),Re(S.to),q({timeRange:{preset:`custom`,from:S.from,to:S.to}})):q({timeRange:{preset:e}})},Ge=()=>{H&&W&&q({timeRange:{preset:`custom`,from:H,to:W}})},Ke=e=>{e!==`all`&&q({step:e})},qe=()=>{q({width:e.width===`full`?`half`:`full`})},J=b?`h-32`:`h-[320px]`,Je=E?.resolvedLabels,Y=k.useCallback(e=>e===`__total__`?v(`dashboard:seriesTotal`):e===`__other__`?v(`dashboard:seriesOther`):e===`__null__`?v(`dashboard:seriesNull`):Je?.[e]??e,[Je,v]),Ye=k.useMemo(()=>ve(e.format,y),[e.format,y]),Xe=k.useMemo(()=>_e(e.format,y),[e.format,y]),X=k.useMemo(()=>{let t=g(Fe(E?.series??[],S,x,Y),e.transform).map(t=>{let n=e.series?.[t.key]?.color;return n?{...t,color:n}:t});if(!C||!E?.previous?.length)return t;let n=De(S);if(!n)return t;let r=A(S.from,S.to,x),i=g(Oe(E.previous,n,r,x),e.transform).map(e=>({key:e.key,label:v(`dashboard:widget.previousSeries`).replace(`{label}`,Y(e.sourceKey)),points:e.points,dashed:!0,hiddenWith:e.sourceKey}));return[...t,...i]},[E?.series,E?.previous,S.from,S.to,x,Y,C,e.transform,e.series,v]),Z=k.useMemo(()=>C&&E?ke(I(E.series),I(E.previous)):null,[C,E]),[Ze,Q]=k.useState(!1),Qe=k.useMemo(()=>{let t=X.filter(e=>!(`dashed`in e)||!e.dashed),n=ge(t.length);return t.map((t,r)=>({key:t.key,label:t.label,override:e.series?.[t.key]?.color,auto:n[r]}))},[X,e.series]),$e=t=>{let n={...e.series};for(let e of Qe)delete n[e.key];for(let[e,r]of Object.entries(t))n[e]={color:r};q({series:n}),Q(!1)},$=E&&E.supported===!1;return(0,R.jsxs)(me,{className:`flex flex-col`,children:[(0,R.jsxs)(fe,{className:`flex flex-row items-center justify-between gap-2 p-3 pb-2 space-y-0 sm:p-6 sm:pb-2`,children:[(0,R.jsxs)(de,{className:`flex min-w-0 items-center gap-2 text-sm font-medium pr-2`,children:[(0,R.jsx)(`span`,{className:`truncate`,children:e.title||v(`chart:untitled`)}),Z&&(0,R.jsxs)(`span`,{title:v(`dashboard:widget.previousPeriod`),className:`inline-flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums ${Z.direction===`up`?`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:Z.direction===`down`?`bg-rose-500/10 text-rose-600 dark:text-rose-400`:`bg-muted text-muted-foreground`}`,children:[Z.direction===`up`?(0,R.jsx)(i,{className:`size-3`}):Z.direction===`down`?(0,R.jsx)(r,{className:`size-3`}):null,Math.abs(Z.percent),`%`]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,R.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,onClick:qe,"aria-label":e.width===`full`?v(`dashboard:widget.shrink`):v(`dashboard:widget.expand`),children:e.width===`full`?(0,R.jsx)(re,{className:`size-3.5`}):(0,R.jsx)(te,{className:`size-3.5`})}),E?.sql&&(0,R.jsx)(s,{variant:F?`secondary`:`ghost`,size:`icon`,className:`size-7`,onClick:()=>L(e=>!e),"aria-label":v(`dashboard:widget.toggleSql`),children:(0,R.jsx)(ne,{className:`size-3.5`})}),(0,R.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,onClick:()=>N(),disabled:P,"aria-label":v(`common:refresh`),children:(0,R.jsx)(o,{className:`size-3.5 ${P?`animate-spin`:``}`})}),(0,R.jsxs)(Ce,{children:[(0,R.jsx)(xe,{asChild:!0,children:(0,R.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,"aria-label":v(`common:openMenu`),children:(0,R.jsx)(a,{className:`size-3.5`})})}),(0,R.jsxs)(we,{align:`end`,children:[(0,R.jsxs)(D,{onClick:t,children:[(0,R.jsx)(ae,{className:`size-4 mr-2`}),v(`chart:editChart`)]}),!b&&(0,R.jsxs)(D,{onClick:()=>Q(!0),children:[(0,R.jsx)(se,{className:`size-4 mr-2`}),v(`dashboard:widget.editColors`)]}),h&&(0,R.jsxs)(D,{onClick:h,children:[(0,R.jsx)(oe,{className:`size-4 mr-2`}),v(`chart:moveToGroup`)]}),(0,R.jsx)(Se,{}),(0,R.jsxs)(D,{onClick:n,className:`text-destructive focus:text-destructive`,children:[(0,R.jsx)(ee,{className:`size-4 mr-2`}),v(`chart:deleteChart`)]})]})]})]})]}),(0,R.jsxs)(pe,{className:`flex-1 p-3 pt-0 space-y-3 sm:p-6 sm:pt-0`,children:[!$&&G.length>0&&w&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[G.map(e=>{let t=w.properties.find(t=>t.path===e);return t?(0,R.jsx)(Pe,{property:t,placeholder:t.label,value:K[e]??``,onChange:t=>ze(n=>({...n,[e]:t}))},e):null}),(0,R.jsxs)(s,{size:`sm`,className:`h-8 px-3 text-xs shrink-0`,onClick:He,disabled:!Ue,children:[(0,R.jsx)(O,{className:`size-3.5 mr-1`}),v(`common:apply`)]})]}),!$&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[!b&&(0,R.jsxs)(f,{value:e.step===`all`?`day`:e.step,onValueChange:e=>Ke(e),children:[(0,R.jsx)(l,{className:`h-8 px-2 text-xs w-auto`,"aria-label":v(`chart:step`),children:(0,R.jsx)(c,{})}),(0,R.jsx)(u,{children:Me.map(e=>(0,R.jsx)(d,{value:e,children:v(`chart:step${Ne(e)}`)},e))})]}),(0,R.jsxs)(f,{value:e.timeRange.preset,onValueChange:e=>We(e),children:[(0,R.jsx)(l,{className:`h-8 px-2 text-xs w-auto`,"aria-label":v(`dashboard:builder.range`),children:(0,R.jsx)(c,{})}),(0,R.jsx)(u,{children:je.map(e=>(0,R.jsx)(d,{value:e,children:v(`dashboard:range.${e}`)},e))})]}),e.timeRange.preset===`custom`?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(m,{value:H,onChange:U,ariaLabel:v(`common:from`),openCalendarLabel:v(`common:openCalendar`),className:`w-[130px]`,inputClassName:`h-8 text-xs`}),(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:`—`}),(0,R.jsx)(m,{value:W,onChange:Re,ariaLabel:v(`common:to`),openCalendarLabel:v(`common:openCalendar`),className:`w-[130px]`,inputClassName:`h-8 text-xs`}),(0,R.jsxs)(s,{size:`sm`,className:`h-8 px-3 shrink-0`,onClick:Ge,disabled:!H||!W,"aria-label":v(`common:apply`),children:[(0,R.jsx)(O,{className:`size-3.5 mr-1`}),v(`common:apply`)]})]}):(0,R.jsxs)(`span`,{className:`ml-auto tabular-nums`,children:[S.from,` — `,S.to]})]}),!$&&!M&&E?.truncated&&(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-400`,children:[(0,R.jsx)(ce,{className:`size-3.5 mt-0.5 shrink-0`}),(0,R.jsx)(`span`,{children:v(`dashboard:widget.truncatedWarning`)})]}),j?(0,R.jsx)(be,{className:`${J} w-full rounded-md`}):M?(0,R.jsx)(`div`,{className:`flex items-center justify-center text-sm text-muted-foreground ${J}`,children:v(`chart:loadError`)}):$?(0,R.jsx)(`div`,{className:`flex items-center justify-center text-center text-sm text-muted-foreground px-4 ${J}`,children:v(`dashboard:widget.unsupported`)}):b?(0,R.jsx)(Ie,{data:E,transform:e.transform,formatNumber:Ye,labels:Le(v)}):(0,R.jsx)(he,{series:X,height:320,visualisation:e.visualisation===`kpi`?void 0:e.visualisation,tickFormatter:Te(x,y),labelFormatter:Ee(x,y),valueFormatter:Ye,axisValueFormatter:Xe,labels:{noData:v(`chart:noData`),showAll:v(`dashboard:widget.showAll`),hideAll:v(`dashboard:widget.hideAll`)}}),E?.sql&&F&&(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(s,{variant:`ghost`,size:`icon`,className:`absolute top-1 right-1 size-6`,onClick:()=>{navigator.clipboard.writeText(E.sql??``),B(!0),setTimeout(()=>B(!1),2e3)},"aria-label":v(z?`common:copied`:`common:copy`),children:z?(0,R.jsx)(O,{className:`size-3 text-green-500`}):(0,R.jsx)(ie,{className:`size-3`})}),(0,R.jsx)(`pre`,{className:`text-[11px] leading-snug bg-muted/50 border border-border rounded-md p-2 pr-8 overflow-x-auto whitespace-pre`,children:E.sql})]})]}),Ze&&(0,R.jsx)(Ae,{items:Qe,onSave:$e,onClose:()=>Q(!1)})]})}var Ne=e=>e.charAt(0).toUpperCase()+e.slice(1),B=`__none__`;function V(e,t){let n={};for(let r of e)n[r]=t[r]??``;return n}function Pe({property:e,placeholder:t,value:n,onChange:r}){let i=t??e.label;return e.reference?(0,R.jsx)(`div`,{className:`w-36`,children:(0,R.jsx)(b,{referenceResourceId:e.reference,value:n||null,onChange:e=>r(e==null?``:String(e)),placeholder:i,className:`h-8 text-xs`})}):e.availableValues&&e.availableValues.length>0?(0,R.jsxs)(f,{value:n||B,onValueChange:e=>r(e===B?``:e),children:[(0,R.jsx)(l,{className:`h-8 px-2 text-xs w-36`,children:(0,R.jsx)(c,{placeholder:i})}),(0,R.jsxs)(u,{children:[(0,R.jsx)(d,{value:B,children:i}),e.availableValues.map(e=>(0,R.jsx)(d,{value:e.value,children:e.label},e.value))]})]}):e.type===`boolean`?(0,R.jsxs)(f,{value:n||B,onValueChange:e=>r(e===B?``:e),children:[(0,R.jsx)(l,{className:`h-8 px-2 text-xs w-36`,children:(0,R.jsx)(c,{placeholder:i})}),(0,R.jsxs)(u,{children:[(0,R.jsx)(d,{value:B,children:i}),(0,R.jsx)(d,{value:`true`,children:`true`}),(0,R.jsx)(d,{value:`false`,children:`false`})]})]}):(0,R.jsx)(S,{type:e.type===`number`||e.type===`float`||e.type===`currency`?`number`:`text`,className:`h-8 px-2 text-xs w-36`,value:n,placeholder:i,onChange:e=>r(e.target.value)})}function Fe(e,t,n,r){return j(e.map(e=>({key:e.key,points:e.points})),t.from,t.to,n).map(e=>({key:e.key,label:r(e.key),points:[...e.points]}))}function Ie({data:e,transform:t,formatNumber:n,labels:r}){let i=H(e?.series),a=H(e?.previous);return(0,R.jsx)(v,{value:i==null?i:y(i,t),previousValue:a==null?a:y(a,t),formatNumber:n,labels:r})}function H(e){if(!e||e.length===0)return null;let t=0;for(let n of e)for(let e of n.points)t+=e.value;return t}function Le(e){return{noData:e(`chart:noData`),deltaUp:e(`dashboard:widget.deltaUp`),deltaDown:e(`dashboard:widget.deltaDown`),deltaFlat:e(`dashboard:widget.deltaFlat`),previousPeriod:e(`dashboard:widget.previousPeriod`)}}export{z as ChartWidget};
2
- //# sourceMappingURL=chart-widget-B7pIeDCP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-CvKz-wgE.js","names":[],"sources":["../../../../../node_modules/.bun/@radix-ui+react-collection@1.1.12+ae2b4604ef263bc9/node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../../node_modules/.bun/@radix-ui+react-direction@1.1.2+93dbe784b8baa420/node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../../node_modules/.bun/@radix-ui+number@1.1.2/node_modules/@radix-ui/number/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/collection-legacy.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport * as React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0,1,2],"mappings":"oJAQA,SAAS,EAAiB,EAAM,CAC9B,IAAM,EAAgB,EAAO,qBACvB,CAAC,EAAyB,GAAyB,EAAmB,CAAa,EACnF,CAAC,EAAwB,GAAwB,EACrD,EACA,CAAE,cAAe,CAAE,QAAS,IAAK,EAAG,QAAyB,IAAI,GAAM,CACzE,EACM,EAAsB,GAAU,CACpC,GAAM,CAAE,QAAO,YAAa,EACtB,EAAA,EAAY,OAAO,IAAI,EACvB,EAAA,EAAgB,OAAuB,IAAI,GAAK,CAAC,CAAC,QACxD,OAAuB,EAAA,EAAA,IAAA,CAAI,EAAwB,CAAE,QAAO,UAAS,cAAe,EAAK,UAAS,CAAC,CACrG,EACA,EAAmB,YAAc,EACjC,IAAM,EAAuB,EAAO,iBAC9B,EAAqB,EAAW,CAAoB,EACpD,EAAA,EAAuB,YAC1B,EAAO,IAAiB,CACvB,GAAM,CAAE,QAAO,YAAa,EAEtB,EAAe,EAAgB,EADrB,EAAqB,EAAsB,CACF,CAAC,CAAC,aAAa,EACxE,OAAuB,EAAA,EAAA,IAAA,CAAI,EAAoB,CAAE,IAAK,EAAc,UAAS,CAAC,CAChF,CACF,EACA,EAAe,YAAc,EAC7B,IAAM,EAAiB,EAAO,qBACxB,EAAiB,6BACjB,EAAyB,EAAW,CAAc,EAClD,EAAA,EAA2B,YAC9B,EAAO,IAAiB,CACvB,GAAM,CAAE,QAAO,WAAU,GAAG,GAAa,EACnC,EAAA,EAAY,OAAO,IAAI,EACvB,EAAe,EAAgB,EAAc,CAAG,EAChD,EAAU,EAAqB,EAAgB,CAAK,EAK1D,OAJA,EAAM,eACJ,EAAQ,QAAQ,IAAI,EAAK,CAAE,MAAK,GAAG,CAAS,CAAC,MAChC,KAAK,EAAQ,QAAQ,OAAO,CAAG,EAC7C,GACsB,EAAA,EAAA,IAAA,CAAI,EAAwB,EAAQ,GAAiB,GAAM,IAAK,EAAc,UAAS,CAAC,CACjH,CACF,EACA,EAAmB,YAAc,EACjC,SAAS,EAAc,EAAO,CAC5B,IAAM,EAAU,EAAqB,EAAO,qBAAsB,CAAK,EAWvE,OAAA,EAVuB,gBAAkB,CACvC,IAAM,EAAiB,EAAQ,cAAc,QAC7C,GAAI,CAAC,EAAgB,MAAO,CAAC,EAC7B,IAAM,EAAe,MAAM,KAAK,EAAe,iBAAiB,IAAI,EAAe,EAAE,CAAC,EAKtF,OAJc,MAAM,KAAK,EAAQ,QAAQ,OAAO,CACvB,CAAC,CAAC,MACxB,EAAG,IAAM,EAAa,QAAQ,EAAE,IAAI,OAAO,EAAI,EAAa,QAAQ,EAAE,IAAI,OAAO,CAElE,CACpB,EAAG,CAAC,EAAQ,cAAe,EAAQ,OAAO,CAC5B,CAChB,CACA,MAAO,CACL,CAAE,SAAU,EAAoB,KAAM,EAAgB,SAAU,CAAmB,EACnF,EACA,CACF,CACF,CChEA,IAAI,EAAA,EAAyB,cAAc,IAAK,EAAC,EAKjD,SAAS,EAAa,EAAU,CAC9B,IAAM,EAAA,EAAkB,WAAW,CAAgB,EACnD,OAAO,GAAY,GAAa,KAClC,CCZA,SAAS,EAAM,EAAO,CAAC,EAAK,GAAM,CAChC,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,CAAK,CAAC,CAC3C"}
@@ -1,2 +0,0 @@
1
- import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n}from"./with-selector-NDLhu4dT.js";import{t as r}from"./trash-2-DhyKQCKv.js";import{n as i}from"./wand-sparkles-BDM69Lk9.js";import{t as a}from"./plus-Dk-FzitW.js";import{t as o}from"./save-Cd3oR3Sj.js";import{t as s}from"./sparkles-CqF0zjrF.js";import{t as c}from"./x-C3kLunD6.js";import{s as l}from"./dist-Dpg8xy_r.js";import{s as u}from"./empty-BmE-qyE9.js";import{$ as d,A as f,G as p,H as m,M as h,P as g,St as _,Z as v,i as ee,n as y,nt as b}from"./router-DmBe_NWn.js";import{d as x,l as S,n as te,s as ne,u as C}from"./property-renderer-U2F_u1LG.js";import{a as w,i as T,n as re,t as ie}from"./card-4cS4uWCP.js";import{a as ae,c as E,i as D,n as oe,o as se,r as O,s as ce,t as le}from"./zod-bSPpBhsj.js";import{t as ue}from"./revisions-button-hLRZGkwM.js";import{F as k,I as A,L as j,N as M,P as N,R as P,_ as F,at as I,b as de,dt as fe,g as pe,h as me,i as L,m as he,n as ge,r as _e,v as ve,x as ye,y as be}from"./index-R1VJOHqq.js";var R=e(t(),1),z=n();function xe({resourceId:e,onClose:t,onFilled:n}){let{t:r}=d(),i=b(),a=L(),[o,c]=R.useState(null),[u,f]=R.useState(!1),p=R.useRef(null),[m,h]=R.useState(null);R.useEffect(()=>{if(!o){h(null);return}let e=URL.createObjectURL(o);return h(e),()=>URL.revokeObjectURL(e)},[o]),R.useEffect(()=>()=>{p.current?.abort(`dialog unmounted`)},[]);let g=async()=>{if(!o||u)return;let r=new AbortController;p.current=r,f(!0);try{let{values:s}=await i.aiFillFromImage(e,o,{signal:r.signal});if(Object.keys(s).length===0){a.error({key:`aiFill:noValues`});return}n(s),t()}catch(e){if(r.signal.aborted)return;let{message:t}=_(e);a.error({key:`aiFill:errorGeneric`,params:{message:t}},{description:t})}finally{f(!1),p.current=null}},v=()=>{u&&p.current?.abort(`dialog closed`),t()};return(0,z.jsx)(M,{open:!0,onOpenChange:e=>{e||v()},children:(0,z.jsxs)(N,{className:`w-full max-w-md`,children:[(0,z.jsxs)(j,{children:[(0,z.jsxs)(P,{className:`flex items-center gap-2`,children:[(0,z.jsx)(s,{className:`size-4`}),r(`aiFill:dialogTitle`)]}),(0,z.jsx)(k,{children:r(`aiFill:dialogDescription`)})]}),(0,z.jsx)(x,{accept:`image/*`,value:o?o.name:null,displayName:o?.name??null,previewUrl:m,uploading:u,uploadingName:o?.name,disabled:u,onFileSelect:e=>c(e),onRemove:()=>c(null),labels:{chooseFile:r(`common:chooseFile`),dragAndDrop:r(`common:dragAndDrop`),chooseAFile:r(`common:chooseAFile`),uploading:r(`aiFill:processing`),uploadingFile:r(`aiFill:processing`),removeFile:r(`common:removeFile`)}}),(0,z.jsxs)(A,{children:[(0,z.jsx)(l,{variant:`outline`,onClick:v,children:r(`common:cancel`)}),(0,z.jsxs)(l,{onClick:()=>void g(),disabled:!o||u,children:[u?(0,z.jsx)(I,{className:`size-4 animate-spin`}):(0,z.jsx)(s,{className:`size-4`}),r(`aiFill:fillButton`)]})]})]})})}function Se(e,t){if(t!=null){if(e.availableValues?.length){if(typeof t!=`string`)return;let n=t.trim();if(n===``)return;let r=n.toLowerCase();return(e.availableValues.find(e=>e.value===n)??e.availableValues.find(e=>e.value.toLowerCase()===r)??e.availableValues.find(e=>e.label.toLowerCase()===r))?.value}if(e.reference)return typeof t==`string`||typeof t==`number`?t:void 0;switch(e.type){case`bigint`:case`biginteger`:{if(typeof t==`bigint`)return t.toString();if(typeof t==`number`)return!Number.isFinite(t)||!Number.isInteger(t)?void 0:String(t);if(typeof t!=`string`)return;let e=t.trim().replace(/[\s_]/g,``);return/^-?\d+$/.test(e)?e:void 0}case`number`:case`float`:case`currency`:case`money`:case`decimal`:case`integer`:{if(typeof t==`number`)return Number.isFinite(t)?t:void 0;if(typeof t!=`string`)return;let n=t.trim().replace(/[^\d.,\-+eE]/g,``);if(n===``||n===`-`||n===`+`)return;let r=n.lastIndexOf(`.`)>=n.lastIndexOf(`,`)?n.replace(/,/g,``):n.replace(/\./g,``).replace(`,`,`.`),i=Number(r);return Number.isFinite(i)?e.type===`integer`?Math.trunc(i):i:void 0}case`boolean`:if(typeof t==`boolean`)return t;if(typeof t==`number`)return t!==0;if(typeof t==`string`){let e=t.trim().toLowerCase();if([`true`,`yes`,`y`,`1`,`on`].includes(e))return!0;if([`false`,`no`,`n`,`0`,`off`].includes(e))return!1}return;case`date`:case`datetime`:case`datetime-local`:return typeof t==`string`&&/^\d{4}-\d{2}-\d{2}/.test(t.trim())?t.trim():void 0;default:return t}}}function B({resourceId:e,recordId:t}){let n=p(e),b=m(e,t),x=f(e),E=v(e),D=h(e),k=g(),A=ee(),{t:j,locale:M}=d(),N=L(),P=_e(),I=R.useMemo(()=>n?ne(n.properties,`edit`,n.propertyOrder?.edit).filter(e=>!e.isDisabled):[],[n]),B=R.useRef(()=>({})),Te=R.useMemo(()=>oe(I,j,()=>B.current()),[I,M]),V=R.useMemo(()=>{let e={};for(let t of I)e[t.path]=O(t);return e},[I]),H=ce({resolver:le(Te),defaultValues:V});B.current=H.getValues;let U=R.useRef(void 0),W=!t,G=W?`modern-admin:draft:${e}`:null,K=R.useRef(void 0),q=R.useRef(!1),J=R.useRef(!1);R.useEffect(()=>{if(!t){if(U.current=void 0,K.current===e||I.length===0)return;K.current=e,J.current=!1;let t=null;if(G&&typeof window<`u`)try{let e=window.localStorage.getItem(G);e&&(t=JSON.parse(e))}catch{}if(t&&typeof t==`object`){let e={...V};for(let n of I)Object.prototype.hasOwnProperty.call(t,n.path)&&(e[n.path]=t[n.path]);q.current=!0,H.reset(e),N.raw(j(`common:draftRestored`),{position:`bottom-center`,duration:8e3,action:{label:j(`common:undoDraftRestore`),onClick:()=>{q.current=!0,H.reset(V);try{G&&window.localStorage.removeItem(G)}catch{}}}})}else H.reset(V);return}if(I.length===0||!b.data||U.current===t)return;U.current=t,K.current=void 0;let n=b.data.record.params,r={...V};for(let e of I){let t=n[e.path];e.type===`boolean`?r[e.path]=!!t:t==null?r[e.path]=O(e):r[e.path]=t}H.reset(r)},[t,b.data,I,V,H,G,e,N,j]),R.useEffect(()=>{if(!W||!G||I.length===0||typeof window>`u`)return;let e=H.watch(e=>{if(J.current)return;if(q.current){q.current=!1;return}let t=!1,n={};for(let r of I){let i=e[r.path];r.type!==`password`&&(i instanceof File||Array.isArray(i)&&i.some(e=>e instanceof File)||(n[r.path]=i,we(i,V[r.path])||(t=!0)))}try{t?window.localStorage.setItem(G,JSON.stringify(n)):window.localStorage.removeItem(G)}catch{}});return()=>e.unsubscribe()},[W,G,I,V,H]);let Ee=R.useCallback(()=>{if(K.current=void 0,J.current=!0,!(!G||typeof window>`u`))try{window.localStorage.removeItem(G)}catch{}},[G]),[Y,X]=R.useState(null),[De,Z]=R.useState(!1),Oe=R.useMemo(()=>!!n?.actions.find(e=>e.custom?.aiFill===!0),[n]),ke=R.useCallback(e=>{let t=new Map(I.map(e=>[e.path,e])),n={},r=H.getValues(),i=[];for(let[a,o]of Object.entries(e)){let e=t.get(a);if(!e)continue;let s=Se(e,o);s!==void 0&&(i.push([a,s]),n[a]=r[a])}for(let[e,t]of i)H.setValue(e,t,{shouldDirty:!0,shouldValidate:!0});if(i.length===0){N.error({key:`aiFill:noValues`});return}N.raw(j(`aiFill:applied`,{count:i.length}),{position:`bottom-center`,duration:8e3,action:{label:j(`common:undoDraftRestore`),onClick:()=>{for(let[e,t]of Object.entries(n))H.setValue(e,t,{shouldDirty:!0,shouldValidate:!0})}}})},[I,H,N,j]),Q=async n=>{X(null);try{let r=W?await x.mutateAsync(n):await E.mutateAsync({id:t,payload:n}),i=r.record.errors;if(i&&Object.keys(i).length>0){for(let[e,t]of Object.entries(i)){let n=typeof t==`string`?t:t?.message??j(`common:invalidValue`);H.setError(e,{type:`server`,message:n})}r.record.baseError&&X(String(r.record.baseError)),N.error({key:`toast:validationFailed`});return}W&&Ee(),N.success({key:W?`toast:created`:`toast:saved`}),A({name:`show`,resourceId:e,recordId:String(r.record.id)})}catch(e){let t=e instanceof Error?e.message:String(e);X(t),N.error({key:W?`toast:createFailed`:`toast:saveFailed`},{description:t})}},Ae=()=>{N.error({key:`toast:validationFailed`})},je=async()=>{t&&await P.confirm({title:j(`common:confirmDelete`),confirmLabel:j(`common:delete`),destructive:!0})&&(await D.mutateAsync(t),A({name:`list`,resourceId:e}))},$=!W&&(b.isLoading||U.current!==t);if(ge(`mod+s`,()=>{H.formState.isSubmitting||$||H.handleSubmit(Q,Ae)()},{description:j(W?`common:create`:`common:save`)}),!n)return(0,z.jsx)(`div`,{className:`p-6`,children:j(`common:loading`)});if(!W&&b.isError){let{status:r,message:a}=_(b.error),o=j(r===404?`errors:notFound`:r===403?`errors:forbidden`:`errors:server`);return(0,z.jsxs)(`div`,{className:`flex min-h-full flex-col gap-4`,children:[(0,z.jsx)(S,{items:[C(j(`common:home`)),{label:n.name,to:{name:`list`,resourceId:e}},{label:t??``}]}),(0,z.jsxs)(ie,{children:[(0,z.jsxs)(T,{className:`flex flex-row items-center justify-between gap-3`,children:[(0,z.jsxs)(w,{className:`truncate`,children:[n.name,` #`,t]}),(0,z.jsx)(y,{to:{name:`list`,resourceId:e},children:(0,z.jsx)(l,{variant:`ghost`,size:`sm`,children:j(`common:back`)})})]}),(0,z.jsx)(re,{children:(0,z.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4 dark:bg-destructive/15`,children:[(0,z.jsx)(i,{className:`mt-0.5 size-5 shrink-0 text-destructive`}),(0,z.jsxs)(`div`,{className:`space-y-1 text-sm`,children:[(0,z.jsx)(`p`,{className:`font-semibold text-destructive`,children:o}),(0,z.jsx)(`p`,{className:`text-destructive/90`,children:a})]})]})})]})]})}let Me=ve(),Ne=b.data?.record.title||t;return(0,z.jsxs)(`div`,{className:`flex min-h-full flex-col gap-4`,children:[(0,z.jsx)(S,{items:[C(j(`common:home`)),{label:n.name,to:{name:`list`,resourceId:e}},...W?[{label:j(`common:new`)}]:[{label:Ne??``,to:{name:`show`,resourceId:e,recordId:t}},{label:j(`common:edit`)}]]}),(0,z.jsxs)(ie,{className:`flex-1`,children:[(0,z.jsxs)(T,{className:`flex flex-row items-center justify-between gap-3`,children:[(0,z.jsx)(w,{className:`truncate`,children:W?j(`common:newRecord`,{name:n.name}):j(`common:editRecord`,{name:n.name,id:t??``})}),(0,z.jsxs)(`div`,{className:`flex shrink-0 gap-2`,children:[Oe&&(0,z.jsxs)(l,{type:`button`,variant:`outline`,size:`sm`,disabled:H.formState.isSubmitting||$,onClick:()=>Z(!0),children:[(0,z.jsx)(s,{className:`size-4`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:j(`aiFill:button`)})]}),!W&&(0,z.jsxs)(z.Fragment,{children:[k.history&&(0,z.jsx)(ue,{resourceId:e,recordId:t}),(0,z.jsx)(y,{to:{name:`show`,resourceId:e,recordId:t},children:(0,z.jsxs)(l,{variant:`outline`,size:`sm`,"aria-label":j(`common:show`),children:[(0,z.jsx)(fe,{className:`size-4`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:j(`common:show`)})]})}),(0,z.jsxs)(l,{variant:`destructive`,size:`sm`,disabled:D.isPending||H.formState.isSubmitting||$,onClick:()=>void je(),"aria-label":j(`common:delete`),children:[(0,z.jsx)(r,{className:`size-4`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:j(`common:delete`)})]})]})]})]}),(0,z.jsx)(ae,{...H,children:(0,z.jsx)(`form`,{id:`edit-record-form`,onSubmit:H.handleSubmit(Q,Ae),children:(0,z.jsx)(re,{className:`gap-4 pb-6 [column-fill:_balance] md:columns-2`,children:I.map(t=>(0,z.jsx)(Ce,{control:H.control,property:t,children:(0,z.jsx)(se,{control:H.control,name:t.path,render:({field:n,fieldState:r})=>(0,z.jsxs)(he,{"data-invalid":r.error?!0:void 0,className:`mb-8 break-inside-avoid`,children:[(0,z.jsxs)(pe,{htmlFor:n.name,children:[t.label,t.description?(0,z.jsx)(u,{content:t.description,ariaLabel:t.description}):null,t.isRequired&&(0,z.jsx)(`span`,{className:`ml-1 text-destructive`,children:`*`})]}),(0,z.jsx)(te,{property:t,value:n.value,onChange:n.onChange,disabled:H.formState.isSubmitting,resourceId:e}),r.error?.message&&(0,z.jsx)(me,{children:r.error.message})]})})},t.path))})})})]}),De&&(0,z.jsx)(xe,{resourceId:e,onClose:()=>Z(!1),onFilled:ke}),(0,z.jsx)(`div`,{className:`sticky bottom-0 -mb-px z-20 -mx-2 border-t border-border bg-card px-2 py-3 pr-14 sm:-mx-6 sm:px-6 sm:pr-16`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsx)(`div`,{children:Y&&(0,z.jsx)(`span`,{className:`text-sm text-destructive`,children:Y})}),(0,z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,z.jsxs)(l,{type:`button`,variant:`ghost`,onClick:()=>A(W?{name:`list`,resourceId:e}:{name:`show`,resourceId:e,recordId:t}),"aria-label":j(`common:cancel`),children:[(0,z.jsx)(c,{className:`size-4`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:j(`common:cancel`)})]}),(0,z.jsxs)(be,{children:[(0,z.jsx)(ye,{asChild:!0,children:(0,z.jsxs)(l,{type:`submit`,form:`edit-record-form`,disabled:H.formState.isSubmitting||$,"aria-label":j(W?`common:create`:`common:save`),children:[W?(0,z.jsx)(a,{className:`size-4`}):(0,z.jsx)(o,{className:`size-4`}),(0,z.jsx)(`span`,{className:`hidden sm:inline`,children:j(W?`common:create`:`common:save`)})]})}),(0,z.jsxs)(de,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(`span`,{children:j(W?`common:create`:`common:save`)}),(0,z.jsxs)(`span`,{className:`inline-flex items-center gap-0.5`,children:[(0,z.jsx)(F,{children:Me}),(0,z.jsx)(`span`,{className:`text-muted-foreground`,children:`+`}),(0,z.jsx)(F,{children:`S`})]})]})]})]})]})})]})}function Ce({control:e,property:t,children:n}){let r=t.showWhen,i=E({control:e,name:r?.field??t.path});return r?D(r,{[r.field]:i})?(0,z.jsx)(z.Fragment,{children:n}):null:(0,z.jsx)(z.Fragment,{children:n})}function we(e,t){if(e===t)return!0;let n=e==null||e===``,r=t==null||t===``;if(n&&r)return!0;if(n||r||typeof e!=typeof t)return!1;if(typeof e==`object`)try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}return!1}export{B as ResourceEditPage};
2
- //# sourceMappingURL=edit-page-BVwML9yD.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n}from"./with-selector-NDLhu4dT.js";import{n as r,t as i}from"./clock-OCmX6DtA.js";import{t as a}from"./triangle-alert-CyaaNWN8.js";import{t as o}from"./x-C3kLunD6.js";import{$ as s,F as c,i as l}from"./router-DmBe_NWn.js";import{a as u,c as d,i as f,n as p,o as m,r as h,s as g}from"./command-B6-wRF2R.js";import{F as _,R as v,at as y}from"./index-R1VJOHqq.js";var b=e(t(),1),x=n(),S=300,C=`modern-admin:global-search:recent:v1`,w=6,T=()=>{if(typeof window>`u`)return[];try{let e=window.localStorage.getItem(C);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).slice(0,w):[]}catch{return[]}},E=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(C,JSON.stringify(e.slice(0,w)))}catch{}},D=(e,t)=>{if(!t)return e;let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0,o=0;for(;a<e.length;){let t=n.indexOf(r,a);if(t===-1){i.push(e.slice(a));break}t>a&&i.push(e.slice(a,t)),i.push((0,x.jsx)(`mark`,{className:`rounded-sm bg-primary/20 px-0.5 text-foreground`,children:e.slice(t,t+r.length)},o++)),a=t+r.length}return i};function O({open:e,onOpenChange:t}){let{t:n}=s(),C=l(),[O,k]=b.useState(``),[A,j]=b.useState(``),[M,N]=b.useState(()=>T());b.useEffect(()=>{e&&(k(``),j(``),N(T()))},[e]),b.useEffect(()=>{let e=window.setTimeout(()=>j(O.trim()),S);return()=>window.clearTimeout(e)},[O]);let{data:P,isFetching:F,isError:I}=c(A,e),L=b.useCallback(e=>{e&&N(t=>{let n=[e,...t.filter(t=>t!==e)].slice(0,w);return E(n),n})},[]),R=P?.groups??[],z=A.length>0,B=z&&!F&&!I&&R.length===0,V=b.useCallback((e,n)=>{L(A),t(!1),C({name:`show`,resourceId:e,recordId:n})},[A,C,t,L]),H=b.useCallback(e=>{L(A),t(!1),C({name:`list`,resourceId:e})},[A,C,t,L]),U=b.useCallback(e=>{k(e),j(e)},[]),W=b.useCallback(()=>{N([]),E([])},[]);return(0,x.jsxs)(p,{open:e,onOpenChange:t,children:[(0,x.jsx)(v,{className:`sr-only`,children:n(`globalSearch:title`)}),(0,x.jsx)(_,{className:`sr-only`,children:n(`globalSearch:description`)}),(0,x.jsx)(u,{placeholder:n(`globalSearch:placeholder`),value:O,onValueChange:k}),(0,x.jsxs)(g,{children:[!z&&M.length===0&&(0,x.jsx)(`div`,{className:`py-6 text-center text-sm text-muted-foreground`,children:n(`globalSearch:hint`)}),!z&&M.length>0&&(0,x.jsx)(f,{heading:(0,x.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,x.jsx)(`span`,{children:n(`globalSearch:recent`)}),(0,x.jsxs)(`button`,{type:`button`,className:`text-xs text-muted-foreground hover:text-foreground`,onClick:W,children:[(0,x.jsx)(o,{className:`mr-1 inline size-3`,"aria-hidden":`true`}),n(`globalSearch:clearRecent`)]})]}),children:M.map(e=>(0,x.jsxs)(m,{value:`recent:${e}`,onSelect:()=>U(e),children:[(0,x.jsx)(i,{className:`mr-2 size-4 text-muted-foreground`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{className:`flex-1 truncate`,children:e})]},`recent:${e}`))}),z&&I&&(0,x.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-sm text-destructive`,role:`alert`,children:[(0,x.jsx)(a,{className:`size-4`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{children:n(`globalSearch:error`)})]}),B&&(0,x.jsx)(h,{children:n(`globalSearch:noResults`)}),z&&!I&&F&&R.length===0&&(0,x.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground`,role:`status`,"aria-live":`polite`,children:[(0,x.jsx)(y,{className:`size-4 animate-spin`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{children:n(`common:loading`)})]}),R.map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[t>0&&(0,x.jsx)(d,{}),(0,x.jsxs)(f,{heading:e.resourceName,children:[e.records.map(e=>(0,x.jsxs)(m,{value:`${e.resourceId}:${e.recordId} ${e.title} ${e.snippet??``}`,onSelect:()=>V(e.resourceId,e.recordId),className:`flex-col items-start gap-0.5`,children:[(0,x.jsxs)(`div`,{className:`flex w-full items-baseline gap-2`,children:[(0,x.jsx)(`span`,{className:`flex-1 truncate font-medium`,children:D(e.title,A)}),e.matchedField&&(0,x.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:n(`globalSearch:matchedIn`).replace(`{field}`,e.matchedField)})]}),e.snippet&&(0,x.jsx)(`div`,{className:`line-clamp-1 text-xs text-muted-foreground`,children:D(e.snippet,A)})]},`${e.resourceId}:${e.recordId}`)),(0,x.jsxs)(m,{value:`${e.resourceId}:show-all`,forceMount:!0,onSelect:()=>H(e.resourceId),className:`text-xs text-muted-foreground`,children:[(0,x.jsx)(r,{className:`mr-2 size-3.5`,"aria-hidden":`true`}),n(`globalSearch:showAllIn`).replace(`{resource}`,e.resourceName)]},`${e.resourceId}:show-all`)]})]},e.resourceId))]})]})}export{O as GlobalSearchDialog};
2
- //# sourceMappingURL=global-search-dialog-C3Ri2VRv.js.map
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./chart-widget-B7pIeDCP.js","./createLucideIcon-CUopU_LC.js","./with-selector-NDLhu4dT.js","./refresh-cw-B2G7AzZh.js","./trash-2-DhyKQCKv.js","./minimize-2-Bx2cH_WS.js","./copy-BexCWf4U.js","./pencil-BO-k3yTG.js","./palette-DVP_4RAn.js","./triangle-alert-CyaaNWN8.js","./dist-Dpg8xy_r.js","./select-BxTIWCco.js","./dist-CvKz-wgE.js","./router-DmBe_NWn.js","./index-R1VJOHqq.js","./x-C3kLunD6.js","./dist-Dkym1-ts.js","./index-OvloY2cG.css","./date-picker-BAp85mMa.js","./calendar-Pq7dP9RH.js","./calendar-Chw94eNX.css","./useQueries-CX5Gh6HV.js","./card-4cS4uWCP.js","./value-format-DmXCSwLn.js","./pipette-CqHYfQnn.js","./use-dashboard-charts-Cr3OUSL5.js","./schemas-twnCb1uT.js","./uuid-DLSnbsz2.js","./reference-CbtDQb7U.js","./chevrons-up-down-BHCs46XQ.js","./badge-6nyM5Jft.js","./command-B6-wRF2R.js"])))=>i.map(i=>d[i]);
2
- import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{S as n}from"./with-selector-NDLhu4dT.js";import{a as r,i,n as a,o,r as s}from"./pipette-CqHYfQnn.js";import{t as c}from"./trash-2-DhyKQCKv.js";import{t as l}from"./pencil-BO-k3yTG.js";import{t as u}from"./plus-Dk-FzitW.js";import{t as d}from"./x-C3kLunD6.js";import{s as f}from"./dist-Dpg8xy_r.js";import{a as p,i as m,n as h,r as g,t as _}from"./select-BxTIWCco.js";import{a as v,c as y,i as ee,o as b,r as x,s as S,t as C}from"./empty-BmE-qyE9.js";import{$ as w,K as te,j as ne,n as re,nt as ie}from"./router-DmBe_NWn.js";import{a as T,i as E,n as D,t as O}from"./card-4cS4uWCP.js";import{i as k,n as A,r as ae,t as oe}from"./tabs-BrnwAET7.js";import{a as se,o as ce,r as le,t as j}from"./value-format-DmXCSwLn.js";import{t as M}from"./uuid-DLSnbsz2.js";import{a as N,i as ue,t as de}from"./use-dashboard-charts-Cr3OUSL5.js";import{t as P}from"./reference-CbtDQb7U.js";import{H as F,I,J as L,K as R,L as z,N as B,P as V,R as H,pt as fe,r as pe,t as U}from"./index-R1VJOHqq.js";var W=e(t(),1),G=n(),me=[{value:`kpi`,icon:(0,G.jsx)(o,{className:`size-4`}),labelKey:`dashboard:visKpi`},{value:`line`,icon:(0,G.jsx)(i,{className:`size-4`}),labelKey:`dashboard:visLine`},{value:`area`,icon:(0,G.jsx)(r,{className:`size-4`}),labelKey:`dashboard:visArea`},{value:`bar`,icon:(0,G.jsx)(s,{className:`size-4`}),labelKey:`dashboard:visBar`}],K=`__none__`,he=[`count`,`sum`,`avg`,`min`,`max`],ge=[`divide`,`multiply`,`add`,`subtract`],_e=[`number`,`currency`,`percent`],ve=[`7d`,`30d`,`90d`,`1y`,`all`];function ye(e){if(e.type===`date`||e.type===`datetime`)return!0;let t=e.path.toLowerCase();return t.endsWith(`at`)||t.endsWith(`_at`)||t.endsWith(`date`)}function be(e){if(ye(e))return!1;if(e.type===`reference`&&!e.isArray){let t=e.path;return t.endsWith(`Id`)||t.endsWith(`_id`)}return!(e.type===`json`||e.type===`mixed`||e.type===`richtext`||e.type===`markdown`||e.type===`textarea`||e.type===`previewMedia`||e.type===`file`)}function q({initial:e,onSave:t,onClose:n}){let{t:r,locale:i}=w(),a=te(),[o,s]=W.useState(e?.title??``),[c,l]=W.useState(e?.visualisation??`area`),[v,ee]=W.useState(e?.resource??a[0]?.id??``),[b,x]=W.useState(e?.dateField??``),[C,ne]=W.useState(e?.metric??`count`),[re,ie]=W.useState(e?.field??``),[T,E]=W.useState(e?.groupBy??``),[D,O]=W.useState(e?.groupByLabelResource??``),[ue,de]=W.useState(e?.topN??10),[P,F]=W.useState(e&&e.timeRange.preset!==`custom`?e.timeRange.preset:`30d`),[fe,pe]=W.useState(e?.filters??{}),[U,q]=W.useState(e?.quickFilters??[]),[Te,Ee]=W.useState(e?.order??0),[De,Oe]=W.useState(e?.comparePrevious??!1),[J,Y]=W.useState(()=>e?.transform?.map(e=>({...e}))??[]),[X,ke]=W.useState(e?.format?.style??`number`),[Ae,je]=W.useState(e?.format?.currency??``),[Me,Ne]=W.useState(e?.format?.decimals==null?``:String(e.format.decimals)),[Pe,Fe]=W.useState(e?.format?.compact??!1),[Ie,Le]=W.useState(e?.format?.prefix??``),[Re,ze]=W.useState(e?.format?.suffix??``),[Be,Ve]=W.useState(e?.series?.__total__?.color),[Z,He]=W.useState({}),[Ue,We]=W.useState(`data`),Ge=a.find(e=>e.id===v),Q=Ge?.properties??[],Ke=Q.filter(ye),qe=Q.filter(e=>e.type===`number`||e.type===`float`||e.type===`currency`);W.useEffect(()=>{e?.resource!==v&&(x(Ke[0]?.path??``),ie(``),E(``),O(``),pe({}),q([]))},[v]),W.useEffect(()=>{D||!T||Q.length===0||O(we(T,Q))},[T,Q]);let $=c===`kpi`,Je=()=>({preset:P}),Ye=()=>{let e=Me===``?void 0:Math.max(0,Math.min(6,Math.trunc(Number(Me)))),t={style:X,...X===`currency`&&Ae.trim().length===3?{currency:Ae.trim().toUpperCase()}:{},...e!=null&&Number.isFinite(e)?{decimals:e}:{},...Ie?{prefix:Ie.slice(0,8)}:{},...Re?{suffix:Re.slice(0,8)}:{},...Pe?{compact:!0}:{}};return t.style===`number`&&Object.keys(t).length===1?void 0:t},Xe=()=>{let t={...e?.series};return!$&&!T&&(Be?t.__total__={color:Be}:delete t.__total__),Object.keys(t).length?t:void 0},Ze=W.useMemo(()=>le(Ye(),i),[X,Ae,Me,Pe,Ie,Re,i]),Qe=1234,$e=`${Qe} → ${Ze(j(Qe,J))}`,et=(e,t)=>{pe(n=>{let r={...n};return t===``?delete r[e]:r[e]=t,r})},tt=e=>{q(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])};return(0,G.jsx)(B,{open:!0,onOpenChange:e=>{e||n()},children:(0,G.jsxs)(V,{className:`w-full max-w-2xl max-h-[90vh] overflow-y-auto`,children:[(0,G.jsx)(z,{children:(0,G.jsx)(H,{children:r(e?`chart:editChart`:`chart:newChart`)})}),(0,G.jsxs)(oe,{value:Ue,onValueChange:e=>We(e),className:`py-1`,children:[(0,G.jsxs)(ae,{children:[(0,G.jsx)(k,{value:`data`,children:r(`dashboard:builder.tabData`)}),(0,G.jsx)(k,{value:`display`,children:r(`dashboard:builder.tabDisplay`)}),(0,G.jsx)(k,{value:`filters`,children:r(`dashboard:builder.tabFilters`)})]}),(0,G.jsxs)(A,{value:`data`,className:`space-y-4`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-[1fr_8rem]`,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-title`,children:r(`chart:title`)}),(0,G.jsx)(L,{id:`chart-title`,placeholder:r(`chart:titlePlaceholder`),value:o,onChange:e=>s(e.target.value)})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-order`,children:r(`chart:order`)}),(0,G.jsx)(S,{content:r(`chart:orderHint`)})]}),(0,G.jsx)(L,{id:`chart-order`,type:`number`,step:1,value:Te,onChange:e=>Ee(Number.isFinite(Number(e.target.value))?Math.trunc(Number(e.target.value)):0)})]})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:vis`)}),(0,G.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:me.map(({value:e,icon:t,labelKey:n})=>(0,G.jsxs)(f,{type:`button`,variant:c===e?`default`:`outline`,size:`sm`,className:`flex-1 min-w-[5rem] gap-1.5 capitalize`,onClick:()=>l(e),children:[t,(0,G.jsx)(`span`,{className:`hidden sm:inline`,children:r(n)})]},e))})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-resource`,children:r(`chart:resource`)}),(0,G.jsxs)(_,{value:v,onValueChange:e=>ee(e),children:[(0,G.jsx)(m,{id:`chart-resource`,children:(0,G.jsx)(p,{})}),(0,G.jsx)(h,{children:a.map(e=>(0,G.jsxs)(g,{value:e.id,children:[e.name,e.name!==e.id&&(0,G.jsxs)(`span`,{className:`ml-1.5 text-xs text-muted-foreground`,children:[`(`,e.id,`)`]})]},e.id))})]}),Z.resource&&(0,G.jsx)(`p`,{className:`text-xs text-destructive`,children:Z.resource})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-datefield`,children:r(`dashboard:builder.dateField`)}),(0,G.jsxs)(_,{value:b||K,onValueChange:e=>x(e===K?``:e),children:[(0,G.jsx)(m,{id:`chart-datefield`,children:(0,G.jsx)(p,{placeholder:r(`chart:selectField`)})}),(0,G.jsxs)(h,{children:[(0,G.jsx)(g,{value:K,children:r(`chart:selectField`)}),(Ke.length>0?Ke:Q).map(e=>(0,G.jsx)(g,{value:e.path,children:e.label},e.path))]})]}),(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.dateFieldHint`)}),Z.dateField&&(0,G.jsx)(`p`,{className:`text-xs text-destructive`,children:Z.dateField})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-metric`,children:r(`chart:metric`)}),(0,G.jsxs)(_,{value:C,onValueChange:e=>ne(e),children:[(0,G.jsx)(m,{id:`chart-metric`,children:(0,G.jsx)(p,{})}),(0,G.jsx)(h,{children:he.map(e=>(0,G.jsx)(g,{value:e,children:r(`dashboard:metric${xe(e)}`)},e))})]})]}),C!==`count`&&(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-field`,children:r(`chart:aggregateField`)}),(0,G.jsxs)(_,{value:re||K,onValueChange:e=>ie(e===K?``:e),children:[(0,G.jsx)(m,{id:`chart-field`,children:(0,G.jsx)(p,{placeholder:r(`chart:selectField`)})}),(0,G.jsxs)(h,{children:[(0,G.jsx)(g,{value:K,children:r(`chart:selectField`)}),qe.map(e=>(0,G.jsx)(g,{value:e.path,children:e.label},e.path))]})]}),Z.field&&(0,G.jsx)(`p`,{className:`text-xs text-destructive`,children:Z.field})]})]}),!$&&(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-groupby`,children:r(`dashboard:builder.secondaryGroupBy`)}),(0,G.jsxs)(_,{value:T||K,onValueChange:e=>{let t=e===K?``:e;E(t),O(we(t,Q))},children:[(0,G.jsx)(m,{id:`chart-groupby`,children:(0,G.jsx)(p,{})}),(0,G.jsxs)(h,{children:[(0,G.jsx)(g,{value:K,children:r(`dashboard:builder.noBreakdown`)}),Q.filter(e=>be(e)&&e.path!==b).map(e=>(0,G.jsx)(g,{value:e.path,children:e.label},e.path))]})]})]}),T&&(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-topn`,children:r(`dashboard:builder.topN`)}),(0,G.jsx)(L,{id:`chart-topn`,type:`number`,min:1,max:50,value:ue,onChange:e=>de(Math.max(1,Math.min(50,Number(e.target.value)||10)))})]})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:builder.range`)}),(0,G.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:ve.map(e=>(0,G.jsx)(f,{type:`button`,variant:P===e?`default`:`outline`,size:`sm`,className:`flex-1 min-w-[4rem]`,onClick:()=>F(e),children:r(`dashboard:range.${e}`)},e))})]})]}),(0,G.jsxs)(A,{value:`display`,className:`space-y-4`,children:[!$&&(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(R,{htmlFor:`chart-compare`,children:r(`dashboard:builder.comparePrevious`)}),(0,G.jsx)(S,{content:r(`dashboard:builder.comparePreviousHint`)})]}),(0,G.jsx)(y,{id:`chart-compare`,checked:!T&&De,disabled:!!T,onCheckedChange:Oe,"aria-label":r(`dashboard:builder.comparePrevious`)})]}),!!T&&(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.comparePreviousDisabled`)})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:builder.transform`)}),(0,G.jsx)(S,{content:r(`dashboard:builder.transformHint`)})]}),J.map((e,t)=>(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(_,{value:e.op,onValueChange:e=>Y(n=>n.map((n,r)=>r===t?{...n,op:e}:n)),children:[(0,G.jsx)(m,{className:`w-40`,"aria-label":r(`dashboard:builder.transform`),children:(0,G.jsx)(p,{})}),(0,G.jsx)(h,{children:ge.map(e=>(0,G.jsx)(g,{value:e,children:r(`dashboard:builder.op${xe(e)}`)},e))})]}),(0,G.jsx)(L,{type:`number`,className:`w-28`,value:Number.isFinite(e.value)?e.value:``,onChange:e=>Y(n=>n.map((n,r)=>r===t?{...n,value:Number(e.target.value)}:n))}),(0,G.jsx)(f,{type:`button`,variant:`ghost`,size:`icon`,className:`size-8`,onClick:()=>Y(e=>e.filter((e,n)=>n!==t)),"aria-label":r(`dashboard:builder.transformRemove`),children:(0,G.jsx)(d,{className:`size-4`})})]},t)),J.length<8&&(0,G.jsxs)(f,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>Y(e=>[...e,{op:`divide`,value:100}]),children:[(0,G.jsx)(u,{className:`size-4 mr-1`}),r(`dashboard:builder.transformAdd`)]})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:builder.format`)}),(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsx)(R,{htmlFor:`chart-format-style`,className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.formatStyle`)}),(0,G.jsxs)(_,{value:X,onValueChange:e=>ke(e),children:[(0,G.jsx)(m,{id:`chart-format-style`,children:(0,G.jsx)(p,{})}),(0,G.jsx)(h,{children:_e.map(e=>(0,G.jsx)(g,{value:e,children:r(`dashboard:builder.format${xe(e)}`)},e))})]})]}),X===`currency`&&(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsx)(R,{htmlFor:`chart-format-currency`,className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.formatCurrencyCode`)}),(0,G.jsx)(L,{id:`chart-format-currency`,placeholder:`USD`,maxLength:3,value:Ae,onChange:e=>je(e.target.value.toUpperCase())})]}),(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsx)(R,{htmlFor:`chart-format-decimals`,className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.formatDecimals`)}),(0,G.jsx)(L,{id:`chart-format-decimals`,type:`number`,min:0,max:6,value:Me,onChange:e=>Ne(e.target.value)})]}),(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(R,{htmlFor:`chart-format-prefix`,className:`text-xs text-muted-foreground`,children:[r(`dashboard:builder.formatPrefix`),` / `,r(`dashboard:builder.formatSuffix`)]}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsx)(L,{id:`chart-format-prefix`,maxLength:8,placeholder:r(`dashboard:builder.formatPrefix`),value:Ie,onChange:e=>Le(e.target.value)}),(0,G.jsx)(L,{maxLength:8,placeholder:r(`dashboard:builder.formatSuffix`),value:Re,onChange:e=>ze(e.target.value),"aria-label":r(`dashboard:builder.formatSuffix`)})]})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2 sm:col-span-2`,children:[(0,G.jsx)(R,{htmlFor:`chart-format-compact`,children:r(`dashboard:builder.formatCompact`)}),(0,G.jsx)(y,{id:`chart-format-compact`,checked:Pe,onCheckedChange:Fe})]})]}),(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground tabular-nums`,children:$e})]}),!$&&!T&&(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:builder.color`)}),(0,G.jsx)(se,{value:Be,onChange:Ve,presets:ce,labels:{custom:r(`dashboard:widget.colorCustom`),pick:r(`dashboard:widget.colorPick`),auto:r(`dashboard:widget.colorAuto`)}})]})]}),(0,G.jsx)(A,{value:`filters`,className:`space-y-4`,children:Q.length>0?(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{children:r(`dashboard:builder.filters`)}),(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`dashboard:builder.filtersHint`)}),(0,G.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-3`,children:Q.filter(Se).map(e=>{let t=U.includes(e.path);return(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsx)(R,{htmlFor:`flt-${e.path}`,className:`text-xs text-muted-foreground`,children:e.label}),(0,G.jsx)(y,{checked:t,onCheckedChange:()=>tt(e.path),"aria-label":r(`dashboard:builder.quickFilterToggle`).replace(`{field}`,e.label),title:r(`dashboard:builder.quickFilterHint`)})]}),(0,G.jsx)(Ce,{property:e,value:fe[e.path]??``,onChange:t=>et(e.path,t)})]},e.path)})})]}):(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`dashboard:builder.filtersEmpty`)})})]}),(0,G.jsxs)(I,{children:[(0,G.jsx)(f,{variant:`outline`,onClick:n,children:r(`common:cancel`)}),(0,G.jsx)(f,{onClick:()=>{let n=new Date().toISOString(),r=$?`all`:e&&e.step!==`all`?e.step:`day`,i={id:e?.id??M(),title:o.trim()||Ge?.name||v,resource:v,visualisation:c,dateField:b,step:r,metric:C,width:e?.width??`half`,topN:ue,filters:fe,quickFilters:U.filter(e=>Q.some(t=>t.path===e)),timeRange:Je(),order:Te,...e?.groupId?{groupId:e.groupId}:{},createdAt:e?.createdAt??n,updatedAt:n,...C!==`count`&&re?{field:re}:{},...!$&&T?{groupBy:T}:{},...!$&&T&&D?{groupByLabelResource:D}:{},transform:J,comparePrevious:!$&&!T&&De,...Ye()?{format:Ye()}:{},...Xe()?{series:Xe()}:{}},a=N.safeParse(i);if(!a.success){let e={};for(let t of a.error.issues){let n=t.path[0];typeof n==`string`&&!e[n]&&(e[n]=t.message)}He(e),We(`data`);return}He({}),t(i)},disabled:!v||!b,children:r(`chart:saveChart`)})]})]})})}var xe=e=>e.charAt(0).toUpperCase()+e.slice(1);function Se(e){if(e.isId||e.isArray||e.type===`json`||e.type===`mixed`||e.type===`richtext`||e.type===`markdown`||e.type===`textarea`||e.type===`previewMedia`||e.type===`file`)return!1;if(e.type===`reference`&&!e.isArray){let t=e.path;if(!(t.endsWith(`Id`)||t.endsWith(`_id`)))return!1}return!0}function Ce({property:e,value:t,onChange:n}){if(e.reference)return(0,G.jsx)(P,{referenceResourceId:e.reference,value:t||null,onChange:e=>n(e==null?``:String(e))});if(e.availableValues&&e.availableValues.length>0)return(0,G.jsxs)(_,{value:t||K,onValueChange:e=>n(e===K?``:e),children:[(0,G.jsx)(m,{id:`flt-${e.path}`,children:(0,G.jsx)(p,{})}),(0,G.jsxs)(h,{children:[(0,G.jsx)(g,{value:K,children:`—`}),e.availableValues.map(e=>(0,G.jsx)(g,{value:e.value,children:e.label},e.value))]})]});if(e.type===`boolean`)return(0,G.jsxs)(_,{value:t||K,onValueChange:e=>n(e===K?``:e),children:[(0,G.jsx)(m,{id:`flt-${e.path}`,children:(0,G.jsx)(p,{})}),(0,G.jsxs)(h,{children:[(0,G.jsx)(g,{value:K,children:`—`}),(0,G.jsx)(g,{value:`true`,children:`true`}),(0,G.jsx)(g,{value:`false`,children:`false`})]})]});let r=e.type===`number`||e.type===`float`||e.type===`currency`;return(0,G.jsx)(L,{id:`flt-${e.path}`,type:r?`number`:`text`,value:t,onChange:e=>n(e.target.value)})}function we(e,t){if(!e)return``;let n=t.find(t=>t.path===e);if(!n)return``;if(n.reference)return n.reference;let r=n.path.endsWith(`_id`)?n.path.slice(0,-3):n.path.endsWith(`Id`)?n.path.slice(0,-2):``;if(r){let e=t.find(e=>e.path===r&&e.reference);if(e?.reference)return e.reference}return``}function Te({initial:e,onSave:t,onClose:n}){let{t:r}=w(),[i,a]=W.useState(e?.name??``),[o,s]=W.useState(e?.order??0),[c,l]=W.useState(``);return(0,G.jsx)(B,{open:!0,onOpenChange:e=>{e||n()},children:(0,G.jsxs)(V,{className:`w-full max-w-md`,children:[(0,G.jsx)(z,{children:(0,G.jsx)(H,{children:r(e?`chart:editGroup`:`chart:newGroup`)})}),(0,G.jsxs)(`div`,{className:`space-y-4 py-1`,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`group-name`,children:r(`chart:groupName`)}),(0,G.jsx)(L,{id:`group-name`,placeholder:r(`chart:groupNamePlaceholder`),value:i,onChange:e=>a(e.target.value),autoFocus:!0}),c&&(0,G.jsx)(`p`,{className:`text-xs text-destructive`,children:c})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(R,{htmlFor:`group-order`,children:r(`chart:groupOrder`)}),(0,G.jsx)(S,{content:r(`chart:orderHint`)})]}),(0,G.jsx)(L,{id:`group-order`,type:`number`,step:1,value:o,onChange:e=>s(Number.isFinite(Number(e.target.value))?Math.trunc(Number(e.target.value)):0)})]})]}),(0,G.jsxs)(I,{children:[(0,G.jsx)(f,{variant:`outline`,onClick:n,children:r(`common:cancel`)}),(0,G.jsx)(f,{onClick:()=>{let e=i.trim();if(!e){l(r(`chart:groupNameRequired`));return}l(``),t({name:e,order:Number.isFinite(o)?Math.trunc(o):0})},children:r(`chart:saveGroup`)})]})]})})}function Ee({groups:e,initialGroupId:t,initialOrder:n,onSave:r,onClose:i,onCreateGroup:o}){let{t:s}=w(),c=W.useMemo(()=>[...e].sort((e,t)=>e.order-t.order),[e]),l=t??c[0]?.id??``,[u,d]=W.useState(l),[v,y]=W.useState(n??0);return(0,G.jsx)(B,{open:!0,onOpenChange:e=>{e||i()},children:(0,G.jsxs)(V,{className:`w-full max-w-md`,children:[(0,G.jsx)(z,{children:(0,G.jsx)(H,{children:s(`chart:moveChart`)})}),c.length===0?(0,G.jsxs)(`div`,{className:`space-y-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-sm font-medium`,children:s(`chart:moveNoGroups`)}),(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`chart:moveNoGroupsHint`)}),(0,G.jsxs)(f,{variant:`outline`,className:`w-full`,onClick:()=>{i(),o()},children:[(0,G.jsx)(a,{className:`size-4 mr-2`}),s(`chart:addGroup`)]})]}):(0,G.jsxs)(`div`,{className:`space-y-4 py-1`,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(R,{htmlFor:`move-group`,children:s(`chart:moveGroup`)}),(0,G.jsxs)(_,{value:u,onValueChange:d,children:[(0,G.jsx)(m,{id:`move-group`,className:`w-full`,children:(0,G.jsx)(p,{})}),(0,G.jsx)(h,{children:c.map(e=>(0,G.jsx)(g,{value:e.id,children:e.name},e.id))})]})]}),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(R,{htmlFor:`move-order`,children:s(`chart:order`)}),(0,G.jsx)(S,{content:s(`chart:orderHint`)})]}),(0,G.jsx)(L,{id:`move-order`,type:`number`,step:1,value:v,onChange:e=>y(Number.isFinite(Number(e.target.value))?Math.trunc(Number(e.target.value)):0)})]})]}),(0,G.jsxs)(I,{children:[(0,G.jsx)(f,{variant:`outline`,onClick:i,children:s(`common:cancel`)}),c.length>0&&(0,G.jsx)(f,{onClick:()=>{u&&r({groupId:u,order:Number.isFinite(v)?Math.trunc(v):0})},disabled:!u,children:s(`chart:moveToGroup`)})]})]})})}var De=W.lazy(()=>U(()=>import(`./chart-widget-B7pIeDCP.js`).then(e=>({default:e.ChartWidget})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),import.meta.url));function Oe(e){return(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(F,{className:`h-[320px] w-full rounded-md`}),children:(0,G.jsx)(De,{...e})})}function J(){let{t:e}=w(),t=te(),{user:n}=ne(),r=ie(),i=pe(),o=W.useMemo(()=>new de(r),[r]),{charts:d,groups:p,addChart:m,updateChart:h,removeChart:g,addGroup:_,updateGroup:y,removeGroup:S}=ue({userId:n?.id??null,store:o}),A=W.useMemo(()=>t.filter(e=>e.navigation!==null),[t]),[se,ce]=W.useState(!1),[le,j]=W.useState(null),[M,N]=W.useState(null),[P,F]=W.useState(null),[I,L]=W.useState(null);W.useEffect(()=>{if(p.length===0){F(null);return}(!P||!p.some(e=>e.id===P))&&F(p[0].id)},[p,P]);let R=le?d.find(e=>e.id===le):void 0,z=p[0]?.id??null,B=W.useMemo(()=>p.length===0?[...d].sort(Y):P?d.filter(e=>e.groupId?e.groupId===P:P===z).sort(Y):[],[d,p.length,P,z]),V=P?p.find(e=>e.id===P)??null:null,H=async t=>{await i.confirm({title:e(`chart:deleteChartConfirm`),description:e(`chart:deleteChartConfirmHint`),confirmLabel:e(`common:delete`),destructive:!0})&&g(t.id)},U=async t=>{let n=d.filter(e=>e.groupId?e.groupId===t.id:t.id===z).length;await i.confirm({title:e(`chart:deleteGroupConfirm`),description:e(`chart:deleteGroupConfirmHint`).replace(`{count}`,String(n)),confirmLabel:e(`common:delete`),destructive:!0})&&S(t.id)};return(0,G.jsxs)(`div`,{className:`space-y-3 sm:space-y-6`,children:[(0,G.jsxs)(O,{children:[(0,G.jsxs)(E,{className:`flex flex-row items-center justify-between p-3 pb-2 space-y-0 gap-2 sm:p-6 sm:pb-2`,children:[(0,G.jsx)(T,{children:e(`chart:dashboard`)}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(f,{size:`sm`,variant:`outline`,onClick:()=>N(`new`),children:[(0,G.jsx)(a,{className:`size-4`}),(0,G.jsx)(`span`,{className:`hidden sm:inline ml-1.5`,children:e(`chart:addGroup`)})]}),(0,G.jsxs)(f,{size:`sm`,onClick:()=>ce(!0),disabled:A.length===0,children:[(0,G.jsx)(u,{className:`size-4`}),(0,G.jsx)(`span`,{className:`hidden sm:inline ml-1.5`,children:e(`chart:addChart`)})]})]})]}),(0,G.jsxs)(D,{className:`p-3 pt-0 sm:p-6 sm:pt-0`,children:[p.length>0&&P&&(0,G.jsx)(oe,{value:P,onValueChange:e=>F(e),className:`mb-4`,children:(0,G.jsxs)(`div`,{className:`flex items-end justify-between gap-2`,children:[(0,G.jsx)(ae,{className:`flex-1`,children:p.map(e=>(0,G.jsx)(k,{value:e.id,children:e.name},e.id))}),V&&(0,G.jsxs)(`div`,{className:`mb-1 flex shrink-0 items-center gap-1`,children:[(0,G.jsxs)(f,{size:`sm`,variant:`ghost`,onClick:()=>N(V),"aria-label":e(`chart:editGroup`),children:[(0,G.jsx)(l,{className:`size-3.5`}),(0,G.jsx)(`span`,{className:`hidden sm:inline ml-1.5`,children:e(`chart:editGroup`)})]}),(0,G.jsxs)(f,{size:`sm`,variant:`ghost`,onClick:()=>void U(V),"aria-label":e(`chart:deleteGroup`),children:[(0,G.jsx)(c,{className:`size-3.5`}),(0,G.jsx)(`span`,{className:`hidden sm:inline ml-1.5`,children:e(`chart:deleteGroup`)})]})]})]})}),B.length===0?(0,G.jsx)(C,{className:`border-0 py-4`,children:(0,G.jsxs)(ee,{children:[(0,G.jsx)(v,{children:(0,G.jsx)(s,{})}),(0,G.jsx)(b,{children:e(`chart:noCharts`)}),(0,G.jsx)(x,{children:e(`chart:noChartsHint`)})]})}):(0,G.jsx)(`div`,{className:`grid gap-3 grid-cols-1 sm:gap-4 md:grid-cols-2`,children:B.map(e=>(0,G.jsx)(`div`,{className:e.width===`full`?`md:col-span-2`:void 0,children:(0,G.jsx)(Oe,{config:e,onEdit:()=>j(e.id),onDelete:()=>void H(e),onMove:()=>L(e),onUpdate:t=>h(e.id,t)})},e.id))})]})]}),(0,G.jsxs)(O,{children:[(0,G.jsx)(E,{children:(0,G.jsx)(T,{children:e(`common:resources`)})}),(0,G.jsx)(D,{children:A.length===0?(0,G.jsx)(C,{className:`border-0`,children:(0,G.jsxs)(ee,{children:[(0,G.jsx)(v,{children:(0,G.jsx)(fe,{})}),(0,G.jsx)(b,{children:e(`common:noRecords`)}),(0,G.jsx)(x,{children:e(`common:noRecordsHint`,{resource:`resource`})})]})}):(0,G.jsx)(`ul`,{className:`grid gap-2 sm:grid-cols-2 md:grid-cols-3`,children:A.map(e=>(0,G.jsx)(`li`,{children:(0,G.jsxs)(re,{to:{name:`list`,resourceId:e.id},className:`block rounded-md border border-border bg-card p-4 hover:border-primary/40 hover:shadow-sm transition-shadow`,children:[(0,G.jsx)(`div`,{className:`font-semibold`,children:e.name}),e.name!==e.id&&(0,G.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.id})]})},e.id))})})]}),se&&(0,G.jsx)(q,{onSave:e=>{m(P?{...e,groupId:P}:e),ce(!1)},onClose:()=>ce(!1)}),R&&(0,G.jsx)(q,{initial:R,onSave:e=>{h(R.id,e),j(null)},onClose:()=>j(null)}),I&&(0,G.jsx)(Ee,{groups:p,initialGroupId:I.groupId,initialOrder:I.order,onSave:({groupId:e,order:t})=>{h(I.id,{...I,groupId:e,order:t}),L(null)},onClose:()=>L(null),onCreateGroup:()=>{L(null),N(`new`)}}),M&&(0,G.jsx)(Te,{initial:M===`new`?void 0:M,onSave:e=>{if(M===`new`){let t=_(e);F(t)}else y(M.id,e);N(null)},onClose:()=>N(null)})]})}function Y(e,t){return e.order===t.order?e.createdAt.localeCompare(t.createdAt):e.order-t.order}export{J as HomePage};
3
- //# sourceMappingURL=home-page-Xc7HK72H.js.map