@modern-admin/web 0.6.0 → 0.8.0
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.
- package/dist/config/runtime-config.d.ts +31 -3
- package/dist/config/vite.d.ts +14 -0
- package/dist/config/vite.js +2 -2
- package/dist/lib/index.js +6 -2
- package/dist/lib/runtime-config.d.ts +31 -3
- package/dist/standalone/assets/{action-component-host-8DE4kuUJ.js → action-component-host-BhkBbvy5.js} +1 -2
- package/dist/standalone/assets/action-component-host-BhkBbvy5.js.br +0 -0
- package/dist/standalone/assets/action-component-host-BhkBbvy5.js.gz +0 -0
- package/dist/standalone/assets/{action-page-D6BbXzUo.js → action-page-cwWF8qzs.js} +1 -2
- package/dist/standalone/assets/action-page-cwWF8qzs.js.br +0 -0
- package/dist/standalone/assets/action-page-cwWF8qzs.js.gz +0 -0
- package/dist/standalone/assets/{ai-assistant-widget-BORa8_hT.js → ai-assistant-widget-DaFf7V1n.js} +1 -2
- package/dist/standalone/assets/ai-assistant-widget-DaFf7V1n.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-DaFf7V1n.js.gz +0 -0
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js +1 -2
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js +1 -0
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js.gz +0 -0
- package/dist/standalone/assets/badge-CdW_Z0lB.js +1 -2
- package/dist/standalone/assets/bot-CuDPD_ZU.js +1 -2
- package/dist/standalone/assets/{cache-page-CBKj7WFq.js → cache-page-Ddt6pCFn.js} +1 -2
- package/dist/standalone/assets/cache-page-Ddt6pCFn.js.br +0 -0
- package/dist/standalone/assets/cache-page-Ddt6pCFn.js.gz +0 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js +1 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js.br +0 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js.gz +0 -0
- package/dist/standalone/assets/card-BYbadRar.js +1 -2
- package/dist/standalone/assets/card-BYbadRar.js.br +0 -0
- package/dist/standalone/assets/card-BYbadRar.js.gz +0 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js +1 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js.br +0 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js.gz +0 -0
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js +1 -2
- package/dist/standalone/assets/circle-alert-D1sKnXtO.js +1 -2
- package/dist/standalone/assets/clock-B9qbSr_k.js +1 -2
- package/dist/standalone/assets/{command-BAXXxf0P.js → command-Cv4kMka4.js} +1 -2
- package/dist/standalone/assets/command-Cv4kMka4.js.br +0 -0
- package/dist/standalone/assets/command-Cv4kMka4.js.gz +0 -0
- package/dist/standalone/assets/copy-5fb4qj-_.js +1 -2
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js +1 -2
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.gz +0 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js +1 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js.br +0 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js.gz +0 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js +1 -2
- package/dist/standalone/assets/dist-CiXwD0ML.js.br +0 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js.gz +0 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js +1 -2
- package/dist/standalone/assets/dist-DPxQeZn3.js.br +0 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js.gz +0 -0
- package/dist/standalone/assets/{dist-COXu-_Zv.js → dist-DfV3IWyn.js} +1 -2
- package/dist/standalone/assets/dist-DfV3IWyn.js.br +0 -0
- package/dist/standalone/assets/dist-DfV3IWyn.js.gz +0 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js +1 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js.br +0 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js.gz +0 -0
- package/dist/standalone/assets/ellipsis-BRmOlhsy.js +1 -2
- package/dist/standalone/assets/{empty-DMs98grx.js → empty-BR6YtCo2.js} +1 -2
- package/dist/standalone/assets/empty-BR6YtCo2.js.br +0 -0
- package/dist/standalone/assets/empty-BR6YtCo2.js.gz +0 -0
- package/dist/standalone/assets/file-text-MQF--yeB.js +1 -2
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js +1 -2
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.br +0 -0
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.gz +0 -0
- package/dist/standalone/assets/global-search-dialog-B3nZbtR3.js +1 -0
- package/dist/standalone/assets/global-search-dialog-B3nZbtR3.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-B3nZbtR3.js.gz +0 -0
- package/dist/standalone/assets/{heavy-fields-LnhreUPp.js → heavy-fields-i9EcYH8r.js} +26 -27
- package/dist/standalone/assets/heavy-fields-i9EcYH8r.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-i9EcYH8r.js.gz +0 -0
- package/dist/standalone/assets/{home-page-DiDOzuic.js → home-page-9caZ0Yg1.js} +3 -4
- package/dist/standalone/assets/home-page-9caZ0Yg1.js.br +0 -0
- package/dist/standalone/assets/home-page-9caZ0Yg1.js.gz +0 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js +185 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js.br +0 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js.gz +0 -0
- package/dist/standalone/assets/{icon-registry-s31CNk7M.js → icon-registry-BCvzitKu.js} +1 -2
- package/dist/standalone/assets/icon-registry-BCvzitKu.js.br +0 -0
- package/dist/standalone/assets/icon-registry-BCvzitKu.js.gz +0 -0
- package/dist/standalone/assets/index-SG_6EpY3.js +14 -0
- package/dist/standalone/assets/index-SG_6EpY3.js.br +0 -0
- package/dist/standalone/assets/index-SG_6EpY3.js.gz +0 -0
- package/dist/standalone/assets/info-ChwYoM77.js +1 -2
- package/dist/standalone/assets/{json-editor-BD0UhGOT.js → json-editor-TAtTB6fV.js} +1 -2
- package/dist/standalone/assets/json-editor-TAtTB6fV.js.br +0 -0
- package/dist/standalone/assets/json-editor-TAtTB6fV.js.gz +0 -0
- package/dist/standalone/assets/key-BzJFbNbz.js +1 -2
- package/dist/standalone/assets/key-round-oSqmVdkQ.js +1 -2
- package/dist/standalone/assets/minimize-2-iWv98HjE.js +1 -2
- package/dist/standalone/assets/palette-jgTV28yN.js +1 -2
- package/dist/standalone/assets/pencil-kFOObGrY.js +1 -2
- package/dist/standalone/assets/pipette-roLBCmPv.js +1 -2
- package/dist/standalone/assets/pipette-roLBCmPv.js.br +0 -0
- package/dist/standalone/assets/pipette-roLBCmPv.js.gz +0 -0
- package/dist/standalone/assets/plus-D7PHzena.js +1 -2
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js +3 -0
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js.br +0 -0
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js.gz +0 -0
- package/dist/standalone/assets/reference-BibBrgjx.js +1 -0
- package/dist/standalone/assets/reference-BibBrgjx.js.br +0 -0
- package/dist/standalone/assets/reference-BibBrgjx.js.gz +0 -0
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js +1 -2
- package/dist/standalone/assets/{revisions-button-Csueldv_.js → revisions-button-B6PmW0BY.js} +1 -2
- package/dist/standalone/assets/revisions-button-B6PmW0BY.js.br +0 -0
- package/dist/standalone/assets/revisions-button-B6PmW0BY.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js +1 -2
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.br +0 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.gz +0 -0
- package/dist/standalone/assets/rotate-ccw-AB1VcvbK.js +1 -2
- package/dist/standalone/assets/save-BkkrgP5Q.js +1 -2
- package/dist/standalone/assets/schemas-ByMQmMCS.js +1 -2
- package/dist/standalone/assets/schemas-ByMQmMCS.js.br +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.gz +0 -0
- package/dist/standalone/assets/{select-BOe2daO9.js → select-Bs49X1wg.js} +1 -2
- package/dist/standalone/assets/select-Bs49X1wg.js.br +0 -0
- package/dist/standalone/assets/select-Bs49X1wg.js.gz +0 -0
- package/dist/standalone/assets/send-Bzb_4uMT.js +1 -2
- package/dist/standalone/assets/settings-page-CSb9z_qM.js +1 -0
- package/dist/standalone/assets/settings-page-CSb9z_qM.js.br +0 -0
- package/dist/standalone/assets/settings-page-CSb9z_qM.js.gz +0 -0
- package/dist/standalone/assets/{show-page-CDgUXhsx.js → show-page-DsBH63Hr.js} +1 -2
- package/dist/standalone/assets/show-page-DsBH63Hr.js.br +0 -0
- package/dist/standalone/assets/show-page-DsBH63Hr.js.gz +0 -0
- package/dist/standalone/assets/sparkles-1tT0H4n4.js +1 -2
- package/dist/standalone/assets/square-pen-ZvVEwkzw.js +1 -2
- package/dist/standalone/assets/table-RI-lM4fw.js +1 -2
- package/dist/standalone/assets/table-RI-lM4fw.js.br +0 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.gz +0 -0
- package/dist/standalone/assets/{tabs-Bj4gQaH2.js → tabs-XOuUmhl0.js} +1 -2
- package/dist/standalone/assets/tabs-XOuUmhl0.js.br +0 -0
- package/dist/standalone/assets/tabs-XOuUmhl0.js.gz +0 -0
- package/dist/standalone/assets/textarea-C2w7TG3h.js +1 -2
- package/dist/standalone/assets/trash-2-BIJVpWxv.js +1 -2
- package/dist/standalone/assets/triangle-alert-yljVpQCM.js +1 -2
- package/dist/standalone/assets/undo-2-CnH3ScKE.js +1 -2
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.br +0 -0
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.gz +0 -0
- package/dist/standalone/assets/upload-DrfB-4bU.js +1 -2
- package/dist/standalone/assets/upload-DrfB-4bU.js.br +0 -0
- package/dist/standalone/assets/upload-DrfB-4bU.js.gz +0 -0
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js +1 -2
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.br +0 -0
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.gz +0 -0
- package/dist/standalone/assets/{useQueries-DNUnShBb.js → useQueries-BIIIiVKJ.js} +1 -2
- package/dist/standalone/assets/useQueries-BIIIiVKJ.js.br +0 -0
- package/dist/standalone/assets/useQueries-BIIIiVKJ.js.gz +0 -0
- package/dist/standalone/assets/{user-directory-BvmDzxsG.js → user-directory-Cs4iA6fu.js} +2 -3
- package/dist/standalone/assets/user-directory-Cs4iA6fu.js.br +0 -0
- package/dist/standalone/assets/user-directory-Cs4iA6fu.js.gz +0 -0
- package/dist/standalone/assets/uuid-DLSnbsz2.js +1 -2
- package/dist/standalone/assets/wand-sparkles-DwseTI5T.js +1 -2
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js +1 -0
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js.gz +0 -0
- package/dist/standalone/assets/x-c-gfVPJa.js +1 -2
- package/dist/standalone/assets/zap-BxPAEPtJ.js +1 -2
- package/dist/standalone/assets/zod-CL5c4fuD.js +1 -0
- package/dist/standalone/assets/zod-CL5c4fuD.js.br +0 -0
- package/dist/standalone/assets/zod-CL5c4fuD.js.gz +0 -0
- package/dist/standalone/index.html +6 -6
- package/dist/standalone/index.html.br +0 -0
- package/dist/standalone/index.html.gz +0 -0
- package/package.json +6 -5
- package/src/app.tsx +4 -0
- package/src/runtime-config.ts +31 -3
- package/src/vite.ts +16 -1
- package/dist/lib/app.d.ts.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/mount.d.ts.map +0 -1
- package/dist/lib/runtime-config.d.ts.map +0 -1
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js.br +0 -0
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js.gz +0 -0
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js.map +0 -1
- package/dist/standalone/assets/action-page-D6BbXzUo.js.br +0 -0
- package/dist/standalone/assets/action-page-D6BbXzUo.js.gz +0 -0
- package/dist/standalone/assets/action-page-D6BbXzUo.js.map +0 -1
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js.gz +0 -0
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js.map +0 -1
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js.map +0 -1
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js +0 -2
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js.gz +0 -0
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js.map +0 -1
- package/dist/standalone/assets/badge-CdW_Z0lB.js.map +0 -1
- package/dist/standalone/assets/bot-CuDPD_ZU.js.map +0 -1
- package/dist/standalone/assets/cache-page-CBKj7WFq.js.br +0 -0
- package/dist/standalone/assets/cache-page-CBKj7WFq.js.gz +0 -0
- package/dist/standalone/assets/cache-page-CBKj7WFq.js.map +0 -1
- package/dist/standalone/assets/calendar-BuLRvNBg.js +0 -2
- package/dist/standalone/assets/calendar-BuLRvNBg.js.br +0 -0
- package/dist/standalone/assets/calendar-BuLRvNBg.js.gz +0 -0
- package/dist/standalone/assets/calendar-BuLRvNBg.js.map +0 -1
- package/dist/standalone/assets/card-BYbadRar.js.map +0 -1
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js +0 -2
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js.br +0 -0
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js.gz +0 -0
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js.map +0 -1
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js.map +0 -1
- package/dist/standalone/assets/circle-alert-D1sKnXtO.js.map +0 -1
- package/dist/standalone/assets/clock-B9qbSr_k.js.map +0 -1
- package/dist/standalone/assets/command-BAXXxf0P.js.br +0 -0
- package/dist/standalone/assets/command-BAXXxf0P.js.gz +0 -0
- package/dist/standalone/assets/command-BAXXxf0P.js.map +0 -1
- package/dist/standalone/assets/copy-5fb4qj-_.js.map +0 -1
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.map +0 -1
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js +0 -2
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js.br +0 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js.gz +0 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js.map +0 -1
- package/dist/standalone/assets/dist-COXu-_Zv.js.br +0 -0
- package/dist/standalone/assets/dist-COXu-_Zv.js.gz +0 -0
- package/dist/standalone/assets/dist-COXu-_Zv.js.map +0 -1
- package/dist/standalone/assets/dist-CiXwD0ML.js.map +0 -1
- package/dist/standalone/assets/dist-DPxQeZn3.js.map +0 -1
- package/dist/standalone/assets/edit-page-Dm638D2J.js +0 -2
- package/dist/standalone/assets/edit-page-Dm638D2J.js.br +0 -0
- package/dist/standalone/assets/edit-page-Dm638D2J.js.gz +0 -0
- package/dist/standalone/assets/edit-page-Dm638D2J.js.map +0 -1
- package/dist/standalone/assets/ellipsis-BRmOlhsy.js.map +0 -1
- package/dist/standalone/assets/empty-DMs98grx.js.br +0 -0
- package/dist/standalone/assets/empty-DMs98grx.js.gz +0 -0
- package/dist/standalone/assets/empty-DMs98grx.js.map +0 -1
- package/dist/standalone/assets/file-text-MQF--yeB.js.map +0 -1
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.map +0 -1
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js +0 -2
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js.gz +0 -0
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js.map +0 -1
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.map +0 -1
- package/dist/standalone/assets/home-page-DiDOzuic.js.br +0 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js.gz +0 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js.map +0 -1
- package/dist/standalone/assets/hooks-BiOfAnEq.js +0 -186
- package/dist/standalone/assets/hooks-BiOfAnEq.js.br +0 -0
- package/dist/standalone/assets/hooks-BiOfAnEq.js.gz +0 -0
- package/dist/standalone/assets/hooks-BiOfAnEq.js.map +0 -1
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.br +0 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.gz +0 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.map +0 -1
- package/dist/standalone/assets/index-CASCzvYu.js +0 -15
- package/dist/standalone/assets/index-CASCzvYu.js.br +0 -0
- package/dist/standalone/assets/index-CASCzvYu.js.gz +0 -0
- package/dist/standalone/assets/index-CASCzvYu.js.map +0 -1
- package/dist/standalone/assets/info-ChwYoM77.js.map +0 -1
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.br +0 -0
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.gz +0 -0
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.map +0 -1
- package/dist/standalone/assets/key-BzJFbNbz.js.map +0 -1
- package/dist/standalone/assets/key-round-oSqmVdkQ.js.map +0 -1
- package/dist/standalone/assets/minimize-2-iWv98HjE.js.map +0 -1
- package/dist/standalone/assets/palette-jgTV28yN.js.map +0 -1
- package/dist/standalone/assets/pencil-kFOObGrY.js.map +0 -1
- package/dist/standalone/assets/pipette-roLBCmPv.js.map +0 -1
- package/dist/standalone/assets/plus-D7PHzena.js.map +0 -1
- package/dist/standalone/assets/property-renderer-ClrVnSny.js +0 -4
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.br +0 -0
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.gz +0 -0
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.map +0 -1
- package/dist/standalone/assets/reference-BMbhUBHD.js +0 -2
- package/dist/standalone/assets/reference-BMbhUBHD.js.br +0 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js.gz +0 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js.map +0 -1
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js.map +0 -1
- package/dist/standalone/assets/revisions-button-Csueldv_.js.br +0 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js.gz +0 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js.map +0 -1
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.map +0 -1
- package/dist/standalone/assets/rotate-ccw-AB1VcvbK.js.map +0 -1
- package/dist/standalone/assets/save-BkkrgP5Q.js.map +0 -1
- package/dist/standalone/assets/schemas-ByMQmMCS.js.map +0 -1
- package/dist/standalone/assets/select-BOe2daO9.js.br +0 -0
- package/dist/standalone/assets/select-BOe2daO9.js.gz +0 -0
- package/dist/standalone/assets/select-BOe2daO9.js.map +0 -1
- package/dist/standalone/assets/send-Bzb_4uMT.js.map +0 -1
- package/dist/standalone/assets/settings-page-BmphreWj.js +0 -2
- package/dist/standalone/assets/settings-page-BmphreWj.js.br +0 -0
- package/dist/standalone/assets/settings-page-BmphreWj.js.gz +0 -0
- package/dist/standalone/assets/settings-page-BmphreWj.js.map +0 -1
- package/dist/standalone/assets/show-page-CDgUXhsx.js.br +0 -0
- package/dist/standalone/assets/show-page-CDgUXhsx.js.gz +0 -0
- package/dist/standalone/assets/show-page-CDgUXhsx.js.map +0 -1
- package/dist/standalone/assets/sparkles-1tT0H4n4.js.map +0 -1
- package/dist/standalone/assets/square-pen-ZvVEwkzw.js.map +0 -1
- package/dist/standalone/assets/table-RI-lM4fw.js.map +0 -1
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.br +0 -0
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.gz +0 -0
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.map +0 -1
- package/dist/standalone/assets/textarea-C2w7TG3h.js.map +0 -1
- package/dist/standalone/assets/trash-2-BIJVpWxv.js.map +0 -1
- package/dist/standalone/assets/triangle-alert-yljVpQCM.js.map +0 -1
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.map +0 -1
- package/dist/standalone/assets/upload-DrfB-4bU.js.map +0 -1
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.map +0 -1
- package/dist/standalone/assets/useQueries-DNUnShBb.js.br +0 -0
- package/dist/standalone/assets/useQueries-DNUnShBb.js.gz +0 -0
- package/dist/standalone/assets/useQueries-DNUnShBb.js.map +0 -1
- package/dist/standalone/assets/user-directory-BvmDzxsG.js.br +0 -0
- package/dist/standalone/assets/user-directory-BvmDzxsG.js.gz +0 -0
- package/dist/standalone/assets/user-directory-BvmDzxsG.js.map +0 -1
- package/dist/standalone/assets/uuid-DLSnbsz2.js.map +0 -1
- package/dist/standalone/assets/wand-sparkles-DwseTI5T.js.map +0 -1
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js +0 -2
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js.gz +0 -0
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js.map +0 -1
- package/dist/standalone/assets/x-c-gfVPJa.js.map +0 -1
- package/dist/standalone/assets/zap-BxPAEPtJ.js.map +0 -1
- package/dist/standalone/assets/zod-2-ubQvxh.js +0 -2
- package/dist/standalone/assets/zod-2-ubQvxh.js.br +0 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js.gz +0 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"show-page-CDgUXhsx.js","names":[],"sources":["../../../../react/src/components/related-records-tabs.tsx","../../../../react/src/pages/show-page.tsx"],"sourcesContent":["// Tabs of records that reference the open record through a foreign key.\n// Each tab embeds the full ResourceListPage filtered by a locked\n// `{ [foreignKey]: parentRecordId }` so it gets the same table, filters,\n// bulk actions, pagination, and row-click behaviour as the main list.\n//\n// Designed to live below the property card on the show page.\n\nimport * as React from 'react'\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from '@modern-admin/ui'\nimport { useResources } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { ResourceListPage } from '../pages/list-page.js'\nimport { resolveRelatedResources } from '../relations.js'\nimport type { ListQueryState } from '../router.js'\nimport type { RelatedResource, ResourceJSON } from '../types.js'\n\ninterface RelatedRecordsTabProps {\n parentRecordId: string\n related: RelatedResource\n active: boolean\n}\n\nfunction RelatedRecordsTab({\n parentRecordId,\n related,\n active,\n}: RelatedRecordsTabProps): React.ReactElement | null {\n // Each tab keeps its own page/sort/filter state. Defaults: page 1, perPage 10\n // so embedded tables stay compact compared to the main list (default 20).\n const [query, setQuery] = React.useState<ListQueryState>({ perPage: 10 })\n\n // Lazy-load tab content: only mount the (heavy) ResourceListPage once the\n // user actually visits the tab. Subsequent toggles keep state thanks to\n // Radix's mount-on-activate semantics on TabsContent (we don't force unmount).\n const [hasBeenActive, setHasBeenActive] = React.useState(active)\n React.useEffect(() => {\n if (active) setHasBeenActive(true)\n }, [active])\n\n if (!hasBeenActive) return null\n\n return (\n <ResourceListPage\n resourceId={related.resourceId}\n query={query}\n onQueryChange={setQuery}\n lockedFilters={{ [related.foreignKey]: parentRecordId }}\n // The host `CardContent` already pads the tab body — don't double it,\n // or the table stops spanning the block's full width.\n embedPadding={false}\n features={{\n breadcrumbs: false,\n title: false,\n create: false,\n export: false,\n card: false,\n }}\n />\n )\n}\n\nexport interface RelatedRecordsTabsProps {\n resource: ResourceJSON\n recordId: string\n}\n\nexport function RelatedRecordsTabs({\n resource,\n recordId,\n}: RelatedRecordsTabsProps): React.ReactElement | null {\n const { t } = useI18n()\n const allResources = useResources()\n // Master switch: `showRelatedResources: false` in the resource config hides\n // the whole section regardless of configured/auto-discovered relations.\n const enabled = resource.showRelatedResources !== false\n const tabs = React.useMemo(\n () => (enabled ? resolveRelatedResources(resource, allResources) : []),\n [enabled, resource, allResources],\n )\n // Hooks must run before any early return — call useState unconditionally.\n const [active, setActive] = React.useState<string>(\n () => tabs[0] ? `${tabs[0].resourceId}::${tabs[0].foreignKey}` : '',\n )\n React.useEffect(() => {\n if (tabs.length === 0) return\n if (tabs.some((r) => `${r.resourceId}::${r.foreignKey}` === active)) return\n setActive(`${tabs[0]!.resourceId}::${tabs[0]!.foreignKey}`)\n }, [active, tabs])\n if (tabs.length === 0) return null\n\n const labelFor = (r: RelatedResource): string =>\n r.label ?? allResources.find((x) => x.id === r.resourceId)?.name ?? r.resourceId\n\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">{t('common:relatedRecords')}</CardTitle>\n </CardHeader>\n <CardContent>\n <Tabs value={active} onValueChange={setActive}>\n <TabsList className=\"w-full justify-start\">\n {tabs.map((r) => {\n const key = `${r.resourceId}::${r.foreignKey}`\n return (\n <TabsTrigger key={key} value={key}>\n {labelFor(r)}\n </TabsTrigger>\n )\n })}\n </TabsList>\n {tabs.map((r) => {\n const key = `${r.resourceId}::${r.foreignKey}`\n return (\n <TabsContent key={key} value={key} className=\"mt-4\">\n <RelatedRecordsTab\n parentRecordId={recordId}\n related={r}\n active={active === key}\n />\n </TabsContent>\n )\n })}\n </Tabs>\n </CardContent>\n </Card>\n )\n}\n","import * as React from 'react'\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Kbd,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n getModKeyLabel,\n} from '@modern-admin/ui'\nimport { AlertCircle, Pencil, Trash2, Zap } from 'lucide-react'\nimport { useDeleteRecord, useFeatures, useInvokeRecordAction, useRecord, useResource } from '../hooks.js'\nimport { confirmGuard } from '../action-guard.js'\nimport { showActionNotice } from '../action-notice.js'\nimport { hasActionComponent, useActionLauncher } from '../action-launcher.js'\nimport { parseApiError } from '../client.js'\nimport { PropertyDisplay } from '../property-renderer.js'\nimport { Link, useNavigate } from '../router.js'\nimport { useI18n } from '../i18n.js'\nimport { useHotkey } from '../use-hotkey.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { RelatedRecordsTabs } from '../components/related-records-tabs.js'\nimport { useDialogs } from '../dialogs.js'\nimport { useNotify } from '../notify.js'\nimport { ActionMenu, isActionAllowedForRecord, visibleRecordActions } from '../action-menu.js'\nimport { RevisionsButton } from '../components/revisions-button.js'\nimport { visibleRecordProperties } from '../relations.js'\n\nfunction PageError({\n error,\n t,\n}: {\n error: unknown\n t: (key: string) => string\n}): React.ReactElement {\n const { status, message } = parseApiError(error)\n const title =\n status === 404\n ? t('errors:notFound')\n : status === 403\n ? t('errors:forbidden')\n : t('errors:server')\n return (\n <div className=\"flex items-start gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4 dark:bg-destructive/15\">\n <AlertCircle className=\"mt-0.5 size-5 shrink-0 text-destructive\" />\n <div className=\"space-y-1 text-sm\">\n <p className=\"font-semibold text-destructive\">{title}</p>\n <p className=\"text-destructive/90\">{message}</p>\n </div>\n </div>\n )\n}\n\nexport interface ResourceShowPageProps {\n resourceId: string\n recordId: string\n}\n\nexport function ResourceShowPage({\n resourceId,\n recordId,\n}: ResourceShowPageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const record = useRecord(resourceId, recordId)\n const remove = useDeleteRecord(resourceId)\n const invokeRecord = useInvokeRecordAction(resourceId)\n const features = useFeatures()\n const { t } = useI18n()\n const navigate = useNavigate()\n const dialogs = useDialogs()\n const notify = useNotify()\n const openActionComponent = useActionLauncher(resourceId)\n\n // `recordActions` on the loaded record carries the server's per-record\n // `isVisible`/`isAccessible` verdict, which `resource.actions` cannot —\n // it is serialized without any record in context.\n const loadedRecord = record.data?.record\n const customRecordActions = visibleRecordActions(\n (resource?.actions ?? []).filter(\n (a) => a.actionType === 'record' && !['show', 'edit', 'delete'].includes(a.name),\n ),\n loadedRecord,\n )\n const canEdit = isActionAllowedForRecord('edit', loadedRecord)\n const canDelete = isActionAllowedForRecord('delete', loadedRecord)\n\n // ── Keyboard shortcuts ──\n // Ctrl/Cmd+E jumps into edit. Discoverable via the action-button tooltip.\n useHotkey(\n 'mod+e',\n () => {\n if (!record.data || !canEdit) return\n navigate({ name: 'edit', resourceId, recordId })\n },\n { description: t('common:edit') },\n )\n\n const handleDelete = async (): Promise<void> => {\n const ok = await dialogs.confirm({\n title: t('common:confirmDelete'),\n confirmLabel: t('common:delete'),\n destructive: true,\n })\n if (!ok) return\n await remove.mutateAsync(recordId)\n navigate({ name: 'list', resourceId })\n }\n\n if (!resource) return <div className=\"p-6\">{t('common:loading')}</div>\n\n const modLabel = getModKeyLabel()\n const recordLabel = record.data?.record?.title || recordId\n\n return (\n <div className=\"space-y-2 sm:space-y-4\">\n <PageBreadcrumbs\n items={[\n homeCrumb(t('common:home')),\n { label: resource.name, to: { name: 'list', resourceId } },\n { label: recordLabel },\n ]}\n />\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between gap-3\">\n <CardTitle className=\"truncate\">\n {resource.name} #{recordId}\n </CardTitle>\n {record.data && (\n <div className=\"flex shrink-0 flex-wrap gap-2\">\n {features.history && (\n <RevisionsButton resourceId={resourceId} recordId={recordId} />\n )}\n {canEdit && (\n <Tooltip>\n <TooltipTrigger asChild>\n {/* `asChild` + Link-as-Button keeps the rendered DOM a\n * single `<a>` so it picks up the Button's `h-8` from\n * `size=\"sm\"` instead of stacking a Link wrapper that\n * collapses to its anchor default height. */}\n <Button variant=\"outline-primary\" size=\"sm\" asChild>\n <Link to={{ name: 'edit', resourceId, recordId }} aria-label={t('common:edit')}>\n <Pencil className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:edit')}</span>\n </Link>\n </Button>\n </TooltipTrigger>\n <TooltipContent className=\"flex items-center gap-1.5\">\n <span>{t('common:edit')}</span>\n <span className=\"inline-flex items-center gap-0.5\">\n <Kbd>{modLabel}</Kbd>\n <span className=\"text-muted-foreground\">+</span>\n <Kbd>E</Kbd>\n </span>\n </TooltipContent>\n </Tooltip>\n )}\n {canDelete && (\n <Button\n variant=\"outline-destructive\"\n size=\"sm\"\n disabled={remove.isPending}\n onClick={() => void handleDelete()}\n aria-label={t('common:delete')}\n >\n <Trash2 className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:delete')}</span>\n </Button>\n )}\n {customRecordActions.length > 0 && (\n <ActionMenu\n actions={customRecordActions}\n onAction={async (action) => {\n if (hasActionComponent(action)) {\n openActionComponent(action, { recordId })\n return\n }\n if (!await confirmGuard(action, dialogs)) return\n void invokeRecord\n .mutateAsync({ recordId, actionName: action.name })\n .then((res) => showActionNotice(notify, res.notice))\n .catch((err: Error) =>\n notify.error({ message: err.message }),\n )\n }}\n t={t}\n trigger={(\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={invokeRecord.isPending}\n aria-label={t('common:actions')}\n >\n <Zap className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:actions')}</span>\n </Button>\n )}\n />\n )}\n </div>\n )}\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {record.isLoading && <p className=\"text-muted-foreground\">{t('common:loading')}</p>}\n {record.isError && <PageError error={record.error} t={t} />}\n {record.data && (\n <dl className=\"[column-fill:_balance] md:columns-2\">\n {visibleRecordProperties(resource.properties, 'show', resource.propertyOrder?.show)\n .map((p) => (\n <div key={p.path} className=\"mb-8 break-inside-avoid\">\n <dt className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {p.label}\n </dt>\n <dd className=\"mt-1\">\n <PropertyDisplay\n property={p}\n value={record.data!.record.params[p.path]}\n view=\"show\"\n populated={record.data!.record.populated as Record<string, unknown> | undefined}\n />\n </dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n </CardContent>\n </Card>\n {record.data && <RelatedRecordsTabs resource={resource} recordId={recordId} />}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sparkles-1tT0H4n4.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/sparkles.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n key: \"1s2grr\"\n }\n ],\n [\"path\", { d: \"M20 2v4\", key: \"1rf3ol\" }],\n [\"path\", { d: \"M22 4h-4\", key: \"gwowj6\" }],\n [\"circle\", { cx: \"4\", cy: \"20\", r: \"2\", key: \"6kqj1y\" }]\n];\nconst Sparkles = createLucideIcon(\"sparkles\", __iconNode);\n\nexport { __iconNode, Sparkles as default };\n//# sourceMappingURL=sparkles.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAqBA,IAAM,EAAW,EAAiB,WAAY,CAX5C,CACE,OACA,CACE,EAAG,yQACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,KAAM,EAAG,IAAK,IAAK,QAAS,CAAC,CAEX,CAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"square-pen-ZvVEwkzw.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/square-pen.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\", key: \"1m0v6g\" }],\n [\n \"path\",\n {\n d: \"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\",\n key: \"ohrbg2\"\n }\n ]\n];\nconst SquarePen = createLucideIcon(\"square-pen\", __iconNode);\n\nexport { __iconNode, SquarePen as default };\n//# sourceMappingURL=square-pen.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAmBA,IAAM,EAAY,EAAiB,aAAc,CAT/C,CAAC,OAAQ,CAAE,EAAG,6DAA8D,IAAK,QAAS,CAAC,EAC3F,CACE,OACA,CACE,EAAG,0HACH,IAAK,QACP,CACF,CAE+C,CAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table-RI-lM4fw.js","names":[],"sources":["../../../../ui/src/components/table.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n)\nTable.displayName = 'Table'\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b [&_tr]:border-border bg-muted/40', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('border-t bg-muted/40 font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n))\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-3 text-left align-middle text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r border-border last:border-r-0',\n className,\n )}\n {...props}\n />\n))\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('px-3 py-2 align-middle border-r border-border last:border-r-0', className)}\n {...props}\n />\n))\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nTableCaption.displayName = 'TableCaption'\n"],"mappings":"uIAGa,EAAA,EAAc,YACxB,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gCACb,UAAA,EAAA,EAAA,IAAA,CAAC,QAAD,CAAY,MAAK,UAAW,EAAG,gCAAiC,CAAS,EAAG,GAAI,CAAQ,CAAA,CACrF,CAAA,CAET,EACA,EAAM,YAAc,QAEpB,IAAa,EAAA,EAAoB,YAG9B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,QAAD,CAAY,MAAK,UAAW,EAAG,mDAAoD,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC5G,EACD,EAAY,YAAc,cAE1B,IAAa,EAAA,EAAkB,YAG5B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,QAAD,CAAY,MAAK,UAAW,EAAG,6BAA8B,CAAS,EAAG,GAAI,CAAQ,CAAA,CACtF,EACD,EAAU,YAAc,YAExB,IAAa,EAAA,EAAoB,YAG9B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,QAAD,CACO,MACL,UAAW,EAAG,0DAA2D,CAAS,EAClF,GAAI,CACL,CAAA,CACF,EACD,EAAY,YAAc,cAE1B,IAAa,EAAA,EAAiB,YAG3B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,KAAD,CACO,MACL,UAAW,EACT,4FACA,CACF,EACA,GAAI,CACL,CAAA,CACF,EACD,EAAS,YAAc,WAEvB,IAAa,EAAA,EAAkB,YAG5B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,KAAD,CACO,MACL,UAAW,EACT,8IACA,CACF,EACA,GAAI,CACL,CAAA,CACF,EACD,EAAU,YAAc,YAExB,IAAa,EAAA,EAAkB,YAG5B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,KAAD,CACO,MACL,UAAW,EAAG,gEAAiE,CAAS,EACxF,GAAI,CACL,CAAA,CACF,EACD,EAAU,YAAc,YAExB,IAAa,EAAA,EAAqB,YAG/B,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,UAAD,CACO,MACL,UAAW,EAAG,qCAAsC,CAAS,EAC7D,GAAI,CACL,CAAA,CACF,EACD,EAAa,YAAc"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-Bj4gQaH2.js","names":["Tabs","TabsList","RovingFocusGroup.Root","TabsTrigger","RovingFocusGroup.Item","TabsContent"],"sources":["../../../../../node_modules/.bun/@radix-ui+react-tabs@1.1.21+c32617ced709d283/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../../ui/src/components/tabs.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Tabs2(props, forwardedRef) {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }, \"Tabs\")\n);\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function TabsList2(props, forwardedRef) {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }, \"TabsList\")\n);\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TabsTrigger2(props, forwardedRef) {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled || event.target !== event.currentTarget) {\n return;\n }\n if ([\" \", \"Enter\"].includes(event.key)) {\n context.onValueChange(value);\n }\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }, \"TabsTrigger\")\n);\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TabsContent2(props, forwardedRef) {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }, \"TabsContent\")\n);\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\n__name(makeTriggerId, \"makeTriggerId\");\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\n__name(makeContentId, \"makeContentId\");\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../lib/utils.js'\n\nexport const Tabs = TabsPrimitive.Root\n\n// Underline-style tab strip — works visually even with a single tab because\n// the active item has a clearly drawn bottom indicator that anchors it to the\n// content below.\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-start gap-1 overflow-x-auto border-b border-border text-muted-foreground',\n className,\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'relative -mb-px inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap border-b-2 border-transparent px-4 py-2 text-sm font-medium ring-offset-background transition-all',\n 'hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:border-primary data-[state=active]:text-foreground',\n className,\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-3 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-C2w7TG3h.js","names":[],"sources":["../../../../ui/src/components/textarea.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n ),\n)\nTextarea.displayName = 'Textarea'\n"],"mappings":"uIAKa,EAAA,EAAiB,YAC3B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,WAAD,CACO,MACL,UAAW,EACT,8PACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,EACA,EAAS,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trash-2-BIJVpWxv.js","names":["__iconNode"],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/chevron-up.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/trash-2.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.mjs.map\n"],"x_google_ignoreList":[0,1],"mappings":"mDAUA,IAAM,EAAY,EAAiB,aAAcA,CAD7B,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAS,CAAC,CAClBA,CAAU,ECMrD,EAAS,EAAiB,UAAW,CANzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,2CAA4C,IAAK,QAAS,CAAC,EACzE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,yCAA0C,IAAK,QAAS,CAAC,CAE9B,CAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"triangle-alert-yljVpQCM.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAoBA,IAAM,EAAgB,EAAiB,iBAAkB,CAVvD,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,CAEY,CAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"undo-2-CnH3ScKE.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/bold.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/code-xml.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/columns-2.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/heading-1.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/heading-2.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/heading-3.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/italic.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/link.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/list-ordered.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/list.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/minus.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/quote.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/redo-2.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/strikethrough.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/undo-2.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 16 4-4-4-4\", key: \"1inbqp\" }],\n [\"path\", { d: \"m6 8-4 4 4 4\", key: \"15zrgr\" }],\n [\"path\", { d: \"m14.5 4-5 16\", key: \"e7oirm\" }]\n];\nconst CodeXml = createLucideIcon(\"code-xml\", __iconNode);\n\nexport { __iconNode, CodeXml as default };\n//# sourceMappingURL=code-xml.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M12 3v18\", key: \"108xh3\" }]\n];\nconst Columns2 = createLucideIcon(\"columns-2\", __iconNode);\n\nexport { __iconNode, Columns2 as default };\n//# sourceMappingURL=columns-2.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 12h8\", key: \"17cfdx\" }],\n [\"path\", { d: \"M4 18V6\", key: \"1rz3zl\" }],\n [\"path\", { d: \"M12 18V6\", key: \"zqpxq5\" }],\n [\"path\", { d: \"m17 12 3-2v8\", key: \"1hhhft\" }]\n];\nconst Heading1 = createLucideIcon(\"heading-1\", __iconNode);\n\nexport { __iconNode, Heading1 as default };\n//# sourceMappingURL=heading-1.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 12h8\", key: \"17cfdx\" }],\n [\"path\", { d: \"M4 18V6\", key: \"1rz3zl\" }],\n [\"path\", { d: \"M12 18V6\", key: \"zqpxq5\" }],\n [\"path\", { d: \"M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1\", key: \"9jr5yi\" }]\n];\nconst Heading2 = createLucideIcon(\"heading-2\", __iconNode);\n\nexport { __iconNode, Heading2 as default };\n//# sourceMappingURL=heading-2.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 12h8\", key: \"17cfdx\" }],\n [\"path\", { d: \"M4 18V6\", key: \"1rz3zl\" }],\n [\"path\", { d: \"M12 18V6\", key: \"zqpxq5\" }],\n [\"path\", { d: \"M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2\", key: \"68ncm8\" }],\n [\"path\", { d: \"M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2\", key: \"1ejuhz\" }]\n];\nconst Heading3 = createLucideIcon(\"heading-3\", __iconNode);\n\nexport { __iconNode, Heading3 as default };\n//# sourceMappingURL=heading-3.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\", key: \"1cjeqo\" }],\n [\"path\", { d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\", key: \"19qd67\" }]\n];\nconst Link = createLucideIcon(\"link\", __iconNode);\n\nexport { __iconNode, Link as default };\n//# sourceMappingURL=link.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 5h10\", key: \"1cz7ny\" }],\n [\"path\", { d: \"M11 12h10\", key: \"1438ji\" }],\n [\"path\", { d: \"M11 19h10\", key: \"11t30w\" }],\n [\"path\", { d: \"M4 4h1v5\", key: \"10yrso\" }],\n [\"path\", { d: \"M4 9h2\", key: \"r1h2o0\" }],\n [\"path\", { d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\", key: \"xtkcd5\" }]\n];\nconst ListOrdered = createLucideIcon(\"list-ordered\", __iconNode);\n\nexport { __iconNode, ListOrdered as default };\n//# sourceMappingURL=list-ordered.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 5h.01\", key: \"18ugdj\" }],\n [\"path\", { d: \"M3 12h.01\", key: \"nlz23k\" }],\n [\"path\", { d: \"M3 19h.01\", key: \"noohij\" }],\n [\"path\", { d: \"M8 5h13\", key: \"1pao27\" }],\n [\"path\", { d: \"M8 12h13\", key: \"1za7za\" }],\n [\"path\", { d: \"M8 19h13\", key: \"m83p4d\" }]\n];\nconst List = createLucideIcon(\"list\", __iconNode);\n\nexport { __iconNode, List as default };\n//# sourceMappingURL=list.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }]];\nconst Minus = createLucideIcon(\"minus\", __iconNode);\n\nexport { __iconNode, Minus as default };\n//# sourceMappingURL=minus.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"rib7q0\"\n }\n ],\n [\n \"path\",\n {\n d: \"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"1ymkrd\"\n }\n ]\n];\nconst Quote = createLucideIcon(\"quote\", __iconNode);\n\nexport { __iconNode, Quote as default };\n//# sourceMappingURL=quote.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m15 14 5-5-5-5\", key: \"12vg1m\" }],\n [\"path\", { d: \"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13\", key: \"6uklza\" }]\n];\nconst Redo2 = createLucideIcon(\"redo-2\", __iconNode);\n\nexport { __iconNode, Redo2 as default };\n//# sourceMappingURL=redo-2.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M16 4H9a3 3 0 0 0-2.83 4\", key: \"43sutm\" }],\n [\"path\", { d: \"M14 12a4 4 0 0 1 0 8H6\", key: \"nlfj13\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }]\n];\nconst Strikethrough = createLucideIcon(\"strikethrough\", __iconNode);\n\nexport { __iconNode, Strikethrough as default };\n//# sourceMappingURL=strikethrough.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 14 4 9l5-5\", key: \"102s5s\" }],\n [\"path\", { d: \"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\", key: \"f3b9sd\" }]\n];\nconst Undo2 = createLucideIcon(\"undo-2\", __iconNode);\n\nexport { __iconNode, Undo2 as default };\n//# sourceMappingURL=undo-2.mjs.map\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-DrfB-4bU.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/arrow-up-down.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/chevrons-left.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/chevrons-right.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/download.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/file-braces.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/inbox.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/list-filter.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.mjs","../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/upload.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n];\nconst ArrowUpDown = createLucideIcon(\"arrow-up-down\", __iconNode);\n\nexport { __iconNode, ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m11 17-5-5 5-5\", key: \"13zhaf\" }],\n [\"path\", { d: \"m18 17-5-5 5-5\", key: \"h8a8et\" }]\n];\nconst ChevronsLeft = createLucideIcon(\"chevrons-left\", __iconNode);\n\nexport { __iconNode, ChevronsLeft as default };\n//# sourceMappingURL=chevrons-left.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m6 17 5-5-5-5\", key: \"xnjwq\" }],\n [\"path\", { d: \"m13 17 5-5-5-5\", key: \"17xmmf\" }]\n];\nconst ChevronsRight = createLucideIcon(\"chevrons-right\", __iconNode);\n\nexport { __iconNode, ChevronsRight as default };\n//# sourceMappingURL=chevrons-right.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 15V3\", key: \"m9g1x1\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"path\", { d: \"m7 10 5 5 5-5\", key: \"brsn70\" }]\n];\nconst Download = createLucideIcon(\"download\", __iconNode);\n\nexport { __iconNode, Download as default };\n//# sourceMappingURL=download.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n { d: \"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1\", key: \"1oajmo\" }\n ],\n [\n \"path\",\n { d: \"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1\", key: \"mpwhp6\" }\n ]\n];\nconst FileBraces = createLucideIcon(\"file-braces\", __iconNode);\n\nexport { __iconNode, FileBraces as default };\n//# sourceMappingURL=file-braces.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 13h2\", key: \"yr2amv\" }],\n [\"path\", { d: \"M14 13h2\", key: \"un5t4a\" }],\n [\"path\", { d: \"M8 17h2\", key: \"2yhykz\" }],\n [\"path\", { d: \"M14 17h2\", key: \"10kma7\" }]\n];\nconst FileSpreadsheet = createLucideIcon(\"file-spreadsheet\", __iconNode);\n\nexport { __iconNode, FileSpreadsheet as default };\n//# sourceMappingURL=file-spreadsheet.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"polyline\", { points: \"22 12 16 12 14 15 10 15 8 12 2 12\", key: \"o97t9d\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ]\n];\nconst Inbox = createLucideIcon(\"inbox\", __iconNode);\n\nexport { __iconNode, Inbox as default };\n//# sourceMappingURL=inbox.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M2 5h20\", key: \"1fs1ex\" }],\n [\"path\", { d: \"M6 12h12\", key: \"8npq4p\" }],\n [\"path\", { d: \"M9 19h6\", key: \"456am0\" }]\n];\nconst ListFilter = createLucideIcon(\"list-filter\", __iconNode);\n\nexport { __iconNode, ListFilter as default };\n//# sourceMappingURL=list-filter.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 5H3\", key: \"1qgfaw\" }],\n [\"path\", { d: \"M12 19H3\", key: \"yhmn1j\" }],\n [\"path\", { d: \"M14 3v4\", key: \"1sua03\" }],\n [\"path\", { d: \"M16 17v4\", key: \"1q0r14\" }],\n [\"path\", { d: \"M21 12h-9\", key: \"1o4lsq\" }],\n [\"path\", { d: \"M21 19h-5\", key: \"1rlt1p\" }],\n [\"path\", { d: \"M21 5h-7\", key: \"1oszz2\" }],\n [\"path\", { d: \"M8 10v4\", key: \"tgpxqk\" }],\n [\"path\", { d: \"M8 12H3\", key: \"a7s4jb\" }]\n];\nconst SlidersHorizontal = createLucideIcon(\"sliders-horizontal\", __iconNode);\n\nexport { __iconNode, SlidersHorizontal as default };\n//# sourceMappingURL=sliders-horizontal.mjs.map\n","/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n];\nconst Upload = createLucideIcon(\"upload\", __iconNode);\n\nexport { __iconNode, Upload as default };\n//# sourceMappingURL=upload.mjs.map\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-dashboard-charts-D7-ctwCE.js","names":[],"sources":["../../../../core/src/dashboard/store.ts","../../../../react/src/use-dashboard-charts.ts"],"sourcesContent":["// Dashboard / chart-builder schemas and storage port.\n//\n// Source of truth for the on-disk shape of saved dashboards. Both the\n// frontend (localStorage default) and any future server-side store\n// implement the same `IDashboardStore` interface, so the UI is agnostic\n// to where the data actually lives.\n\nimport { z } from 'zod'\n\n// Pie removed in Phase 10 — time-series first means category-only charts\n// don't fit the model.\nexport const chartVisualisationZ = z.enum(['kpi', 'line', 'area', 'bar'])\nexport type ChartVisualisation = z.infer<typeof chartVisualisationZ>\n\nexport const aggregationOpZ = z.enum(['count', 'sum', 'avg', 'min', 'max'])\nexport type AggregationOpName = z.infer<typeof aggregationOpZ>\n\n// `'all'` collapses the whole window into one bucket (KPI mode).\nexport const aggregationStepZ = z.enum(['day', 'week', 'month', 'year', 'all'])\nexport type AggregationStep = z.infer<typeof aggregationStepZ>\n\nexport const timeRangePresetZ = z.enum(['7d', '30d', '90d', '1y', 'all', 'custom'])\nexport type TimeRangePreset = z.infer<typeof timeRangePresetZ>\n\n/** Tile width on the dashboard grid. `'half'` = 1 of 2 columns at md+, `'full'` = full row. */\nexport const chartWidthZ = z.enum(['half', 'full'])\nexport type ChartWidth = z.infer<typeof chartWidthZ>\n\n/**\n * Time range stored on a chart. Presets resolve to concrete from/to at\n * render time so cards always reflect \"now\" without re-saving.\n */\nexport const timeRangeZ = z.discriminatedUnion('preset', [\n z.object({ preset: z.enum(['7d', '30d', '90d', '1y', 'all']) }),\n z.object({\n preset: z.literal('custom'),\n from: z.iso.date(),\n to: z.iso.date(),\n }),\n])\nexport type TimeRange = z.infer<typeof timeRangeZ>\n\n/**\n * One step of the presentation-only value pipeline applied client-side\n * before charting (so axis, tooltip and KPI values agree), e.g.\n * `{ op: 'divide', value: 100 }` to show cents as dollars.\n */\nexport const chartTransformStepZ = z.object({\n op: z.enum(['divide', 'multiply', 'add', 'subtract']),\n value: z.number().finite(),\n})\nexport type ChartTransformStep = z.infer<typeof chartTransformStepZ>\n\n/**\n * Display formatting applied at render time via `Intl.NumberFormat`.\n * Note: `percent` follows Intl semantics (0.42 → \"42%\"). `compact`\n * abbreviates large values (12.5k / 1.2M).\n */\nexport const chartFormatZ = z.object({\n style: z.enum(['number', 'currency', 'percent']).default('number'),\n /** ISO 4217 code; render layer falls back to 'USD' when absent. */\n currency: z.string().length(3).optional(),\n decimals: z.number().int().min(0).max(6).optional(),\n prefix: z.string().max(8).optional(),\n suffix: z.string().max(8).optional(),\n compact: z.boolean().optional(),\n})\nexport type ChartFormat = z.infer<typeof chartFormatZ>\n\n/**\n * Per-series style overrides, keyed by the stable series key\n * (`__total__`, a groupBy value, `__other__`, …) — never by display label.\n * Absent series fall back to the palette color for their index.\n */\nexport const seriesStyleZ = z.object({\n color: z\n .string()\n .regex(/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/)\n .optional(),\n})\nexport type SeriesStyle = z.infer<typeof seriesStyleZ>\n\nexport const chartDefZ = z\n .object({\n id: z.uuid(),\n title: z.string().max(120).default(''),\n resource: z.string().min(1),\n visualisation: chartVisualisationZ,\n /** Property path of the date/datetime column used for X-axis bucketing. */\n dateField: z.string().min(1),\n /** Time bucket granularity. KPI charts always use `'all'`. */\n step: aggregationStepZ,\n metric: aggregationOpZ,\n /** Required for non-count metrics. */\n field: z.string().min(1).optional(),\n /** Optional secondary breakdown — produces one series per distinct value. */\n groupBy: z.string().min(1).optional(),\n /** Maximum series count for `groupBy`-charts; rest collapses to \"other\". */\n topN: z.number().int().min(1).max(50).default(10),\n /**\n * When `groupBy` produces FK ids (reference property), the analytics\n * endpoint resolves them to human-readable titles via `findMany` on this\n * resource id. Auto-set by the chart builder when it detects a reference\n * property in the `groupBy` selector.\n */\n groupByLabelResource: z.string().min(1).optional(),\n width: chartWidthZ.default('half'),\n filters: z.record(z.string(), z.string()).default({}),\n /**\n * Property paths exposed as \"quick filters\" above the chart on the\n * dashboard tile. Their values are taken from `filters` but the widget\n * lets the user tweak them inline and apply via a dedicated Apply button.\n */\n quickFilters: z.array(z.string()).default([]),\n timeRange: timeRangeZ,\n /** Per-series style overrides keyed by stable series key. */\n series: z.record(z.string(), seriesStyleZ).optional(),\n /** Presentation-only value pipeline, applied in order before charting. */\n transform: z.array(chartTransformStepZ).max(8).default([]),\n /** Display number format for axis / tooltip / KPI values. */\n format: chartFormatZ.optional(),\n /**\n * Overlay the equal-length preceding window as a dashed series and show\n * the period-over-period delta next to the title. Only honoured for\n * charts without `groupBy` (top-N keys are not stable across windows).\n */\n comparePrevious: z.boolean().default(false),\n /**\n * Optional group membership. `undefined` means the chart is not assigned\n * to any group yet — when at least one group exists, ungrouped charts\n * are bucketed into the first group (by `order`) at display time.\n */\n groupId: z.uuid().optional(),\n /** Sort key within a group; lower numbers come first. Defaults to 0. */\n order: z.number().int().default(0),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n })\n .refine((c) => c.metric === 'count' || !!c.field, {\n message: 'field is required when metric is not count',\n path: ['field'],\n })\n .refine((c) => c.visualisation !== 'kpi' || c.step === 'all', {\n message: \"KPI charts must use step 'all'\",\n path: ['step'],\n })\n .refine((c) => c.visualisation === 'kpi' || c.step !== 'all', {\n message: \"non-KPI charts cannot use step 'all'\",\n path: ['step'],\n })\n\nexport type ChartDef = z.infer<typeof chartDefZ>\nexport type ChartDefInput = z.input<typeof chartDefZ>\n\n/**\n * Group of charts on the dashboard. Groups are rendered as tabs above the\n * charts grid. When the user creates the very first group, all existing\n * (ungrouped) charts are auto-assigned to it.\n */\nexport const chartGroupZ = z.object({\n id: z.uuid(),\n name: z.string().min(1).max(120),\n /** Sort key for the tab strip; lower numbers come first. */\n order: z.number().int().default(0),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n})\nexport type ChartGroup = z.infer<typeof chartGroupZ>\nexport type ChartGroupInput = z.input<typeof chartGroupZ>\n\nexport const dashboardBlobZ = z.object({\n version: z.literal(1),\n charts: z.array(chartDefZ),\n /** Optional — legacy blobs without `groups` parse cleanly via `.default([])`. */\n groups: z.array(chartGroupZ).default([]),\n})\nexport type DashboardBlob = z.infer<typeof dashboardBlobZ>\n\nexport const EMPTY_DASHBOARD: DashboardBlob = { version: 1, charts: [], groups: [] }\n\n/**\n * Per-user dashboard storage port. Default implementation in\n * `@modern-admin/react` is browser-localStorage; a server-side store\n * implementing this same shape can be plugged in later without UI changes.\n */\nexport interface IDashboardStore {\n load(userId: string): Promise<DashboardBlob> | DashboardBlob\n\n save(userId: string, blob: DashboardBlob): Promise<void> | void\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n EMPTY_DASHBOARD,\n dashboardBlobZ,\n uuidv7,\n type ChartDef,\n type ChartDefInput,\n type ChartGroup,\n type DashboardBlob,\n type IDashboardStore,\n type TimeRange,\n} from '@modern-admin/core'\nimport type { AdminClient, TimeSeriesMetric, TimeSeriesStep } from './client.js'\n\nconst STORAGE_PREFIX = 'modern-admin:dashboard:v1:'\nconst ANON_USER = '__anon__'\n\n/**\n * localStorage-backed `IDashboardStore`. Persists one blob per user under\n * `modern-admin:dashboard:v1:<userId>` so multiple admins on the same\n * browser do not see each other's charts.\n *\n * SSR-safe: `typeof window` checks gate every access; on the server load()\n * returns `EMPTY_DASHBOARD` and save() is a no-op.\n */\nexport class LocalStorageDashboardStore implements IDashboardStore {\n load(userId: string): DashboardBlob {\n if (typeof window === 'undefined') return EMPTY_DASHBOARD\n try {\n const raw = window.localStorage.getItem(STORAGE_PREFIX + (userId || ANON_USER))\n if (!raw) return EMPTY_DASHBOARD\n const parsed = JSON.parse(raw) as unknown\n const result = dashboardBlobZ.safeParse(parsed)\n // Legacy bare-array shapes and other malformed blobs reset to empty\n // rather than crashing the dashboard.\n return result.success ? result.data : EMPTY_DASHBOARD\n } catch {\n return EMPTY_DASHBOARD\n }\n }\n\n save(userId: string, blob: DashboardBlob): void {\n if (typeof window === 'undefined') return\n try {\n window.localStorage.setItem(\n STORAGE_PREFIX + (userId || ANON_USER),\n JSON.stringify(blob),\n )\n } catch {\n // Quota exceeded / private mode — silently drop.\n }\n }\n}\n\nconst defaultStore = new LocalStorageDashboardStore()\n\n/**\n * Server-backed `IDashboardStore` that persists per-user dashboard layouts\n * via `GET/PUT /admin/api/dashboard`. Requires `configStore` to be wired in\n * `ModernAdminModule.forRoot()`. Falls back gracefully when the endpoint\n * returns an empty dashboard (e.g. first load or missing configStore).\n */\nexport class ServerDashboardStore implements IDashboardStore {\n constructor(private readonly client: AdminClient) {}\n\n async load(_userId: string): Promise<DashboardBlob> {\n try {\n const res = await this.client.loadDashboard()\n return res.dashboard\n } catch {\n return EMPTY_DASHBOARD\n }\n }\n\n async save(_userId: string, blob: DashboardBlob): Promise<void> {\n try {\n await this.client.saveDashboard(blob)\n } catch {\n // Server unavailable — silently drop. The next save attempt will retry.\n }\n }\n}\n\n// ─── Time-range helpers ──────────────────────────────────────────────────\n\n/**\n * Resolve a `TimeRange` (preset or explicit custom) into concrete\n * inclusive `from`/`to` `YYYY-MM-DD` strings. Presets are anchored to\n * `now` so cards always reflect \"the last N days\" without re-saving.\n *\n * `'all'` resolves to a 10-year window ending at `now`, which is wide\n * enough for any realistic admin dataset while keeping the server's\n * date-range constraint satisfied.\n */\nexport function resolveRange(\n range: TimeRange,\n now: Date = new Date(),\n): { from: string; to: string } {\n if (range.preset === 'custom') return { from: range.from, to: range.to }\n const days =\n range.preset === '7d' ? 7\n : range.preset === '30d' ? 30\n : range.preset === '90d' ? 90\n : range.preset === '1y' ? 365\n : 3650 // 'all' → 10 years\n const to = new Date(now)\n const from = new Date(now)\n from.setDate(from.getDate() - days)\n return { from: ymd(from), to: ymd(to) }\n}\n\n/**\n * Equal-length window immediately preceding `[from, to]`.\n */\nexport function previousRangeOf(\n range: { from: string; to: string },\n): { from: string; to: string } | null {\n const f = new Date(range.from).getTime()\n const t = new Date(range.to).getTime()\n if (isNaN(f) || isNaN(t) || t < f) return null\n const span = t - f\n const prevTo = new Date(f - 86_400_000)\n const prevFrom = new Date(prevTo.getTime() - span)\n return { from: ymd(prevFrom), to: ymd(prevTo) }\n}\n\nconst ymd = (d: Date): string => d.toISOString().slice(0, 10)\n\n// ─── Reload signal ───────────────────────────────────────────────────────\n\n/**\n * Module-scoped pub/sub so external code (e.g. AI assistant widget after a\n * chart mutation) can force the dashboard to reload its blob from the store\n * without lifting state up. Subscribers are notified asynchronously.\n */\nconst dashboardReloadListeners = new Set<() => void>()\n\n/** Signal every mounted `useDashboardCharts` hook to reload from its store. */\nexport function emitDashboardReload(): void {\n for (const listener of dashboardReloadListeners) {\n try {\n listener()\n } catch {\n // Listener errors must not block sibling listeners.\n }\n }\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────────\n\nexport interface UseDashboardChartsOptions {\n /** Used to scope the storage key. `null`/`undefined` defers loading. */\n userId: string | null | undefined\n /** Override the default localStorage store (e.g. server-backed in future). */\n store?: IDashboardStore\n}\n\nexport interface UseDashboardChartsResult {\n charts: ChartDef[]\n /** Groups defined on the dashboard, sorted by `order` ascending. */\n groups: ChartGroup[]\n /** True until the initial load has resolved (relevant for async stores). */\n isLoading: boolean\n /** Append a new chart. Auto-assigns to the first group when groups exist and no `groupId` is provided. */\n addChart(input: ChartDefInput): void\n updateChart(id: string, input: ChartDefInput): void\n removeChart(id: string): void\n /**\n * Create a new group. When this is the very first group, every existing\n * (ungrouped) chart is moved into it so the user keeps the same view.\n * Returns the new group id so callers can switch to it.\n */\n addGroup(input: { name: string; order?: number }): string\n updateGroup(id: string, patch: { name?: string; order?: number }): void\n /** Remove a group AND every chart assigned to it. */\n removeGroup(id: string): void\n}\n\n/**\n * Per-user dashboard chart registry backed by `IDashboardStore` (default:\n * `LocalStorageDashboardStore`). When `userId` is null/undefined the hook\n * returns an empty list and ignores writes — used while\n * `useCurrentUser()` is still loading.\n */\nexport function useDashboardCharts(\n options: UseDashboardChartsOptions,\n): UseDashboardChartsResult {\n const { userId, store = defaultStore } = options\n const [charts, setCharts] = useState<ChartDef[]>([])\n const [groups, setGroups] = useState<ChartGroup[]>([])\n const [isLoading, setIsLoading] = useState(true)\n // Bumping this counter re-runs the load effect; used by external\n // `emitDashboardReload()` callers (e.g. AI assistant widget) so the hook\n // can pick up changes other actors made to the underlying store.\n const [reloadTick, setReloadTick] = useState(0)\n\n // Reload whenever `userId` flips (login / logout / switch) or an external\n // reload is signalled.\n useEffect(() => {\n if (!userId) {\n setCharts([])\n setIsLoading(false)\n return\n }\n let cancelled = false\n setIsLoading(true)\n Promise.resolve(store.load(userId)).then((blob) => {\n if (cancelled) return\n setCharts(blob.charts)\n setGroups([...blob.groups].sort(byOrderThenCreated))\n setIsLoading(false)\n })\n return () => {\n cancelled = true\n }\n }, [userId, store, reloadTick])\n\n // Subscribe to module-scoped reload signal.\n useEffect(() => {\n const listener = (): void => setReloadTick((tick) => tick + 1)\n dashboardReloadListeners.add(listener)\n return () => {\n dashboardReloadListeners.delete(listener)\n }\n }, [])\n\n // Single persist that writes BOTH charts and groups so a partial update\n // never strands one in localStorage while overwriting the other.\n const persist = useCallback(\n (nextCharts: ChartDef[], nextGroups: ChartGroup[]): void => {\n setCharts(nextCharts)\n setGroups([...nextGroups].sort(byOrderThenCreated))\n if (!userId) return\n void Promise.resolve(\n store.save(userId, { version: 1, charts: nextCharts, groups: nextGroups }),\n )\n },\n [userId, store],\n )\n\n const addChart = useCallback(\n (input: ChartDefInput): void => {\n const now = new Date().toISOString()\n // When groups exist and the caller didn't pick one, fall back to the\n // first-ordered group so the new chart is visible somewhere.\n const fallbackGroupId = input.groupId ?? groups[0]?.id\n const def = {\n ...input,\n id: uuidv7(),\n title: input.title ?? '',\n filters: input.filters ?? {},\n ...(fallbackGroupId ? { groupId: fallbackGroupId } : {}),\n createdAt: now,\n updatedAt: now,\n } as ChartDef\n persist([...charts, def], groups)\n },\n [charts, groups, persist],\n )\n\n const updateChart = useCallback(\n (id: string, input: ChartDefInput): void => {\n persist(\n charts.map((c) =>\n c.id === id\n ? ({\n ...c,\n ...input,\n id,\n title: input.title ?? '',\n filters: input.filters ?? {},\n createdAt: c.createdAt,\n updatedAt: new Date().toISOString(),\n } as ChartDef)\n : c,\n ),\n groups,\n )\n },\n [charts, groups, persist],\n )\n\n const removeChart = useCallback(\n (id: string): void => {\n persist(charts.filter((c) => c.id !== id), groups)\n },\n [charts, groups, persist],\n )\n\n const addGroup = useCallback(\n (input: { name: string; order?: number }): string => {\n const now = new Date().toISOString()\n const id = uuidv7()\n const next: ChartGroup = {\n id,\n name: input.name,\n order: input.order ?? groups.length,\n createdAt: now,\n updatedAt: now,\n }\n // First-group rule: existing ungrouped charts join this group so the\n // user does not lose their current dashboard view.\n const isFirstGroup = groups.length === 0\n const nextCharts = isFirstGroup\n ? charts.map((c) => (c.groupId ? c : { ...c, groupId: id, updatedAt: now }))\n : charts\n persist(nextCharts, [...groups, next])\n return id\n },\n [charts, groups, persist],\n )\n\n const updateGroup = useCallback(\n (id: string, patch: { name?: string; order?: number }): void => {\n const now = new Date().toISOString()\n persist(\n charts,\n groups.map((g) =>\n g.id === id\n ? {\n ...g,\n ...(patch.name !== undefined ? { name: patch.name } : {}),\n ...(patch.order !== undefined ? { order: patch.order } : {}),\n updatedAt: now,\n }\n : g,\n ),\n )\n },\n [charts, groups, persist],\n )\n\n const removeGroup = useCallback(\n (id: string): void => {\n // Cascading delete: every chart assigned to the group disappears with it.\n persist(charts.filter((c) => c.groupId !== id), groups.filter((g) => g.id !== id))\n },\n [charts, groups, persist],\n )\n\n return {\n charts,\n groups,\n isLoading,\n addChart,\n updateChart,\n removeChart,\n addGroup,\n updateGroup,\n removeGroup,\n }\n}\n\n/** Stable sort: by `order` ascending, then by `createdAt` for tie-breaking. */\nfunction byOrderThenCreated(a: { order: number; createdAt: string }, b: { order: number; createdAt: string }): number {\n if (a.order !== b.order) return a.order - b.order\n return a.createdAt.localeCompare(b.createdAt)\n}\n\n// Re-export types from client for convenience so consumers import from one place.\nexport type { TimeSeriesMetric, TimeSeriesStep }\nexport type { ChartDef, ChartDefInput, ChartGroup } from '@modern-admin/core'\n"],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQueries-DNUnShBb.js","names":["Popover","PopperPrimitive.Root","PopoverAnchor","PopperPrimitive.Anchor","PopoverTrigger","PortalPrimitive","PopoverContent","RemoveScroll","PopperPrimitive.Content","#client","#options","#queries","#observers","#result","#onUpdate","#findMatchingObservers","#observerMatches","#notify","#combineResult","#trackResult","#lastQueryHashes","#combinedResult","#lastResult","#lastCombine","#shouldSkipCombine"],"sources":["../../../../../node_modules/.bun/@radix-ui+react-popover@1.1.23+c32617ced709d283/node_modules/@radix-ui/react-popover/dist/index.mjs","../../../../ui/src/components/popover.tsx","../../../../../node_modules/.bun/@tanstack+query-core@5.101.4/node_modules/@tanstack/query-core/build/modern/queriesObserver.js","../../../../../node_modules/.bun/@tanstack+react-query@5.101.4+0f58469d5b3bd39f/node_modules/@tanstack/react-query/build/modern/useQueries.js"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = /* @__PURE__ */ __name((props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n}, \"Popover\");\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverAnchor2(props, forwardedRef) {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }, \"PopoverAnchor\")\n);\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverTrigger2(props, forwardedRef) {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }, \"PopoverTrigger\")\n);\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = /* @__PURE__ */ __name((props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"PopoverPortal\");\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContent2(props, forwardedRef) {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }, \"PopoverContent\")\n);\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentModal2(props, forwardedRef) {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }, \"PopoverContentModal\")\n);\nvar PopoverContentNonModal = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentNonModal2(props, forwardedRef) {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }, \"PopoverContentNonModal\")\n);\nvar PopoverContentImpl = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentImpl2(props, forwardedRef) {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n deferPointerDownOutside: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }, \"PopoverContentImpl\")\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverClose2(props, forwardedRef) {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }, \"PopoverClose\")\n);\nvar PopoverArrow = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverArrow2(props, forwardedRef) {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }, \"PopoverArrow\")\n);\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\n__name(getState, \"getState\");\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../lib/utils.js'\nimport { usePortalContainer, useViewportCollisionPadding } from '../lib/floating-layer.js'\n\nexport const Popover = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\n\nexport interface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n /** Override the portal target. Defaults to the enclosing Dialog/Sheet\n * content (so touch-scroll works inside it) or `document.body`. */\n container?: HTMLElement | null\n}\n\nexport const PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, align = 'center', sideOffset = 4, collisionPadding, container, ...props }, ref) => {\n const portalContainer = usePortalContainer()\n const viewportPadding = useViewportCollisionPadding()\n return (\n <PopoverPrimitive.Portal container={container ?? portalContainer}>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding ?? viewportPadding}\n className={cn(\n 'z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n})\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n","// src/queriesObserver.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { replaceEqualDeep, shallowEqualObjects } from \"./utils.js\";\nfunction difference(array1, array2) {\n const excludeSet = new Set(array2);\n return array1.filter((x) => !excludeSet.has(x));\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nvar QueriesObserver = class extends Subscribable {\n #client;\n #result;\n #queries;\n #options;\n #observers;\n #combinedResult;\n #lastCombine;\n #lastResult;\n #lastQueryHashes;\n #observerMatches = [];\n constructor(client, queries, options) {\n super();\n this.#client = client;\n this.#options = options;\n this.#queries = [];\n this.#observers = [];\n this.#result = [];\n this.setQueries(queries);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n }\n }\n onUnsubscribe() {\n if (!this.listeners.size) {\n this.destroy();\n }\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#observers.forEach((observer) => {\n observer.destroy();\n });\n }\n setQueries(queries, options) {\n this.#queries = queries;\n this.#options = options;\n if (process.env.NODE_ENV !== \"production\") {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash\n );\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n \"[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.\"\n );\n }\n }\n notifyManager.batch(() => {\n const prevObservers = this.#observers;\n const newObserverMatches = this.#findMatchingObservers(this.#queries);\n newObserverMatches.forEach(\n (match) => match.observer.setOptions(match.defaultedQueryOptions)\n );\n const newObservers = newObserverMatches.map((match) => match.observer);\n const newResult = newObservers.map(\n (observer) => observer.getCurrentResult()\n );\n const hasLengthChange = prevObservers.length !== newObservers.length;\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index]\n );\n const hasStructuralChange = hasLengthChange || hasIndexChange;\n const hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {\n const prev = this.#result[index];\n return !prev || !shallowEqualObjects(result, prev);\n });\n if (!hasStructuralChange && !hasResultChange) return;\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches;\n this.#observers = newObservers;\n }\n this.#result = newResult;\n if (!this.hasListeners()) return;\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy();\n });\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n }\n this.#notify();\n });\n }\n getCurrentResult() {\n return this.#result;\n }\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery());\n }\n getObservers() {\n return this.#observers;\n }\n getOptimisticResult(queries, combine) {\n const matches = this.#findMatchingObservers(queries);\n const result = matches.map(\n (match) => match.observer.getOptimisticResult(match.defaultedQueryOptions)\n );\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash\n );\n return [\n result,\n (r) => {\n return this.#combineResult(r ?? result, combine, queryHashes);\n },\n () => {\n return this.#trackResult(result, matches);\n }\n ];\n }\n #trackResult(result, matches) {\n return matches.map((match, index) => {\n const observerResult = result[index];\n return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp);\n });\n }) : observerResult;\n });\n }\n #combineResult(input, combine, queryHashes) {\n if (combine) {\n const lastHashes = this.#lastQueryHashes;\n const queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));\n if (!this.#combinedResult || this.#result !== this.#lastResult || queryHashesChanged || combine !== this.#lastCombine) {\n this.#lastCombine = combine;\n this.#lastResult = this.#result;\n if (queryHashes !== void 0) {\n this.#lastQueryHashes = queryHashes;\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input)\n );\n }\n return this.#combinedResult;\n }\n return input;\n }\n #shouldSkipCombine() {\n return this.#options?.combine !== void 0 && this.#observers.some((observer, index) => {\n return observer.options.suspense && this.#result[index]?.data === void 0;\n });\n }\n #findMatchingObservers(queries) {\n const prevObserversMap = /* @__PURE__ */ new Map();\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash;\n if (!key) return;\n const previousObservers = prevObserversMap.get(key);\n if (previousObservers) {\n previousObservers.push(observer);\n } else {\n prevObserversMap.set(key, [observer]);\n }\n });\n const observers = [];\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift();\n const observer = match ?? new QueryObserver(this.#client, defaultedOptions);\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer\n });\n });\n return observers;\n }\n #onUpdate(observer, result) {\n const index = this.#observers.indexOf(observer);\n if (index !== -1) {\n this.#result = replaceAt(this.#result, index, result);\n this.#notify();\n }\n }\n #notify() {\n if (this.hasListeners()) {\n const newTracked = this.#trackResult(this.#result, this.#observerMatches);\n const shouldSkipCombine = this.#shouldSkipCombine();\n const previousResult = this.#combinedResult;\n const newResult = shouldSkipCombine ? previousResult : this.#combineResult(newTracked, this.#options?.combine);\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result);\n });\n });\n }\n }\n }\n};\nexport {\n QueriesObserver\n};\n//# sourceMappingURL=queriesObserver.js.map","\"use client\";\n\n// src/useQueries.ts\nimport * as React from \"react\";\nimport {\n QueriesObserver,\n QueryObserver,\n noop,\n notifyManager\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend\n} from \"./suspense.js\";\nfunction useQueries({\n queries,\n ...options\n}, queryClient) {\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedQueries = React.useMemo(\n () => queries.map((opts) => {\n const defaultedOptions = client.defaultQueryOptions(\n opts\n );\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n return defaultedOptions;\n }),\n [queries, client, isRestoring]\n );\n defaultedQueries.forEach((queryOptions) => {\n ensureSuspenseTimers(queryOptions);\n const query = client.getQueryCache().get(queryOptions.queryHash);\n ensurePreventErrorBoundaryRetry(queryOptions, errorResetBoundary, query);\n });\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new QueriesObserver(\n client,\n defaultedQueries,\n options\n )\n );\n const [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(\n defaultedQueries,\n options.combine\n );\n const shouldSubscribe = !isRestoring && options.subscribed !== false;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop,\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setQueries(\n defaultedQueries,\n options\n );\n }, [defaultedQueries, options, observer]);\n const shouldAtLeastOneSuspend = optimisticResult.some(\n (result, index) => shouldSuspend(defaultedQueries[index], result)\n );\n const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {\n const opts = defaultedQueries[index];\n if (opts && shouldSuspend(opts, result)) {\n const queryObserver = new QueryObserver(client, opts);\n return fetchOptimistic(opts, queryObserver, errorResetBoundary);\n }\n return [];\n }) : [];\n if (suspensePromises.length > 0) {\n throw Promise.all(suspensePromises);\n }\n const firstSingleResultWhichShouldThrow = optimisticResult.find(\n (result, index) => {\n const query = defaultedQueries[index];\n return query && getHasError({\n result,\n errorResetBoundary,\n throwOnError: query.throwOnError,\n query: client.getQueryCache().get(query.queryHash),\n suspense: query.suspense\n });\n }\n );\n if (firstSingleResultWhichShouldThrow?.error) {\n throw firstSingleResultWhichShouldThrow.error;\n }\n return getCombinedResult(trackResult());\n}\nexport {\n useQueries\n};\n//# sourceMappingURL=useQueries.js.map"],"x_google_ignoreList":[0,2,3],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-directory-BvmDzxsG.js","names":[],"sources":["../../../../ui/src/components/diff-view.tsx","../../../../core/src/diff/index.ts","../../../../react/src/user-directory.ts"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport interface DiffField {\n path: string\n /** Human-readable property label. When present, shown before the path. */\n label?: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nexport interface DiffViewLabels {\n added?: string\n changed?: string\n removed?: string\n before?: string\n after?: string\n noChanges?: string\n}\n\nexport interface DiffViewProps {\n fields: ReadonlyArray<DiffField>\n labels?: DiffViewLabels\n className?: string\n}\n\nconst DEFAULT_LABELS: Required<DiffViewLabels> = {\n added: 'Added',\n changed: 'Changed',\n removed: 'Removed',\n before: 'Before',\n after: 'After',\n noChanges: 'No changes',\n}\n\nconst formatValue = (value: unknown): string => {\n if (value === undefined) return ''\n if (value === null) return 'null'\n if (typeof value === 'string') return value\n return JSON.stringify(value, null, 2)\n}\n\nconst isMultiline = (text: string): boolean => text.includes('\\n') || text.length > 80\n\nexport function DiffView({ fields, labels, className }: DiffViewProps): React.ReactElement {\n const l = { ...DEFAULT_LABELS, ...labels }\n if (fields.length === 0) {\n return (\n <div className={cn('rounded-md border border-dashed border-border p-4 text-sm text-muted-foreground', className)}>\n {l.noChanges}\n </div>\n )\n }\n return (\n <ul\n className={cn(\n 'divide-y divide-border overflow-hidden rounded-md border border-border bg-card text-xs',\n className,\n )}\n >\n {fields.map((field) => (\n <FieldDiff key={field.path} field={field} labels={l} />\n ))}\n </ul>\n )\n}\n\nfunction FieldDiff({\n field,\n labels,\n}: {\n field: DiffField\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n const beforeText = field.kind === 'added' ? '' : formatValue(field.before)\n const afterText = field.kind === 'removed' ? '' : formatValue(field.after)\n const compact = !isMultiline(beforeText) && !isMultiline(afterText)\n return (\n <li className=\"grid grid-cols-[8rem_1fr] gap-x-3 px-3 py-1.5 sm:grid-cols-[10rem_1fr]\">\n <div className=\"min-w-0 pt-0.5\">\n {field.label && (\n <p className=\"truncate text-[11px] font-medium text-foreground\" title={field.label}>\n {field.label}\n </p>\n )}\n <code\n className=\"truncate font-mono text-[10px] text-muted-foreground\"\n title={field.path}\n >\n {field.path}\n </code>\n </div>\n {compact ? (\n <CompactValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n ) : (\n <StackedValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n )}\n </li>\n )\n}\n\nfunction CompactValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"flex min-w-0 flex-col gap-0.5 font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <span\n aria-label={labels.before}\n className=\"truncate rounded bg-red-50 px-1.5 text-red-900 line-through decoration-red-400/60 dark:bg-red-950/40 dark:text-red-100\"\n title={before}\n >\n {before || '\\u00A0'}\n </span>\n )}\n {kind !== 'removed' && (\n <span\n aria-label={labels.after}\n className=\"truncate rounded bg-green-50 px-1.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n title={after}\n >\n {after || '\\u00A0'}\n </span>\n )}\n </div>\n )\n}\n\nfunction StackedValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"min-w-0 overflow-hidden rounded font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <pre\n aria-label={labels.before}\n className=\"overflow-x-auto whitespace-pre-wrap bg-red-50 px-2 py-0.5 text-red-900 dark:bg-red-950/40 dark:text-red-100\"\n >\n {prefixed('-', before)}\n </pre>\n )}\n {kind !== 'removed' && (\n <pre\n aria-label={labels.after}\n className=\"overflow-x-auto whitespace-pre-wrap bg-green-50 px-2 py-0.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n >\n {prefixed('+', after)}\n </pre>\n )}\n </div>\n )\n}\n\nconst prefixed = (sign: '+' | '-', text: string): string =>\n text.split('\\n').map((l) => `${sign} ${l}`).join('\\n')\n","/**\n * Snapshot diff utilities — shared between server-side history capture\n * (feature-history) and the client-side revisions UI (`packages/react`).\n *\n * Kept transport- and ORM-agnostic so both layers can render exactly the\n * same diff without round-tripping every entry through the network.\n */\n\nexport interface FieldDiffEntry {\n /** Top-level field name. (Nested paths are not split — the value is\n * compared structurally via `valuesEqual`.) */\n path: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nconst has = (obj: Record<string, unknown>, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * JSON.stringify with deterministic key ordering for stable structural\n * equality. Used by `valuesEqual` and as a hash for the side-by-side\n * revision viewer.\n */\nexport const stableStringify = (value: unknown): string => {\n if (value === null || typeof value !== 'object') return JSON.stringify(value)\n if (value instanceof Date) return JSON.stringify(value.toISOString())\n // Honour custom `toJSON` (e.g. Decimal.js, Day.js, Mongo ObjectId) so\n // values that round-trip through JSON keep stable identity.\n if (typeof (value as { toJSON?: unknown }).toJSON === 'function') {\n return stableStringify((value as { toJSON: () => unknown }).toJSON())\n }\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${JSON.stringify(k)}:${stableStringify(v)}`)\n return `{${entries.join(',')}}`\n}\n\n/** Structural equality based on `stableStringify`. */\nexport const valuesEqual = (a: unknown, b: unknown): boolean =>\n stableStringify(a) === stableStringify(b)\n\n/**\n * Compare two record snapshots and return the field-level diff.\n *\n * Excluded fields are dropped from both sides before comparison. The\n * output is sorted alphabetically by `path` for stable rendering.\n */\nexport function computeFieldDiff(\n before: Record<string, unknown>,\n after: Record<string, unknown>,\n excludeFields: ReadonlySet<string> = new Set(),\n): FieldDiffEntry[] {\n const keys = new Set([...Object.keys(before), ...Object.keys(after)])\n const out: FieldDiffEntry[] = []\n for (const path of [...keys].sort((a, b) => a.localeCompare(b))) {\n if (excludeFields.has(path)) continue\n const beforeHas = has(before, path)\n const afterHas = has(after, path)\n if (!beforeHas && afterHas) {\n out.push({ path, after: after[path], kind: 'added' })\n } else if (beforeHas && !afterHas) {\n out.push({ path, before: before[path], kind: 'removed' })\n } else if (!valuesEqual(before[path], after[path])) {\n out.push({ path, before: before[path], after: after[path], kind: 'changed' })\n }\n }\n return out\n}\n\n/** Convenience alias used by the React revisions side panel. */\nexport const diffSnapshots = computeFieldDiff\n\n/** Return a shallow copy of `value` with `excludeFields` removed. */\nexport function omitFields(\n value: Record<string, unknown>,\n excludeFields: ReadonlySet<string>,\n): Record<string, unknown> {\n if (excludeFields.size === 0) return { ...value }\n const out: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n if (!excludeFields.has(key)) out[key] = item\n }\n return out\n}\n","import { useQueries } from '@tanstack/react-query'\nimport { useAdminClient } from './provider.js'\nimport type { RecordJSON } from './types.js'\n\n/** Convention: the host app exposes panel administrators under the\n * `admins` resource id (backed by Better Auth's `ma_user` table). When\n * absent or the lookup fails we fall back to the raw id string. */\nexport const USERS_RESOURCE_ID = 'admins'\n\n/** Resolve admin user records by id via the conventional `users` resource.\n * Failed lookups (404 / no users resource) cache as `null` so we don't keep\n * retrying them on every re-render.\n *\n * NOTE: uses the `'user-dir'` segment (not `'show'`) so the cached value\n * (`RecordJSON | null`) doesn't collide with `useRecord`'s cache which stores\n * the full `RecordResponse` shape under `['modern-admin', id, 'show', ...]`. */\nexport function useUserDirectory(\n userIds: ReadonlyArray<string>,\n): Map<string, RecordJSON | null> {\n const client = useAdminClient()\n const queries = useQueries({\n queries: userIds.map((id) => ({\n queryKey: ['modern-admin', 'user-dir', USERS_RESOURCE_ID, id] as const,\n queryFn: async (): Promise<RecordJSON | null> => {\n try {\n const res = await client.show(USERS_RESOURCE_ID, id)\n return res.record\n } catch {\n return null\n }\n },\n staleTime: 60_000,\n retry: false,\n })),\n })\n const map = new Map<string, RecordJSON | null>()\n userIds.forEach((id, i) => map.set(id, queries[i]?.data ?? null))\n return map\n}\n\n/** Pick a human-readable label for an admin record. Checks explicit name\n * fields first — `record.title` may be the id fallback when the resource\n * has no matching TITLE_COLUMN_NAMES property. */\nexport function userLabelOf(\n record: RecordJSON | null | undefined,\n fallback: string,\n): string {\n if (!record) return fallback\n const params = record.params ?? {}\n const candidates = [params.name, params.fullName, params.email, record.title]\n for (const candidate of candidates) {\n const s = typeof candidate === 'string' ? candidate.trim() : ''\n if (s && s !== record.id) return s\n }\n return fallback\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid-DLSnbsz2.js","names":[],"sources":["../../../../core/src/utils/uuid.ts"],"sourcesContent":["/**\n * UUID v7 (RFC 9562) generator.\n *\n * UUID v7 is time-ordered: the first 48 bits encode a Unix-ms timestamp,\n * followed by version + random bits. This keeps inserts cache- and\n * index-friendly and yields naturally sortable identifiers — ideal for\n * primary keys, log entry ids, queue job ids, etc.\n *\n * The project-wide rule (see `CLAUDE.md` → \"Identifier policy\") is to use\n * this function for **all** generated identifiers. Never use\n * `crypto.randomUUID()` (which produces v4) or third-party libraries.\n *\n * Layout (16 bytes):\n *\n * 0..5 unix_ts_ms (big-endian)\n * 6 version=7 (high nibble) | rand (low nibble)\n * 7 rand\n * 8 variant=10 (top 2 bits) | rand\n * 9..15 rand\n */\nexport function uuidv7(): string {\n const ms = Date.now()\n const random = globalThis.crypto.getRandomValues(new Uint8Array(10))\n const bytes = new Uint8Array(16)\n // Unix-ms timestamp (48 bits, big-endian).\n // Date.now() fits comfortably in 48 bits until year ~10889.\n bytes[0] = (ms / 0x10000000000) & 0xff\n bytes[1] = (ms / 0x100000000) & 0xff\n bytes[2] = (ms >>> 24) & 0xff\n bytes[3] = (ms >>> 16) & 0xff\n bytes[4] = (ms >>> 8) & 0xff\n bytes[5] = ms & 0xff\n // Random bits.\n bytes.set(random, 6)\n // Version 7 in high nibble of byte 6.\n bytes[6] = (bytes[6]! & 0x0f) | 0x70\n // Variant 10 in top 2 bits of byte 8.\n bytes[8] = (bytes[8]! & 0x3f) | 0x80\n\n const hex: string[] = []\n for (let i = 0; i < 16; i++) hex.push(bytes[i]!.toString(16).padStart(2, '0'))\n const s = hex.join('')\n return `${s.slice(0, 8)}-${s.slice(8, 12)}-${s.slice(12, 16)}-${s.slice(16, 20)}-${s.slice(20)}`\n}\n"],"mappings":"AAoBA,SAAgB,GAAiB,CAC/B,IAAM,EAAK,KAAK,IAAI,EACd,EAAS,WAAW,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAC7D,EAAQ,IAAI,WAAW,EAAE,EAG/B,EAAM,GAAM,EAAK,cAAiB,IAClC,EAAM,GAAM,EAAK,WAAe,IAChC,EAAM,GAAM,IAAO,GAAM,IACzB,EAAM,GAAM,IAAO,GAAM,IACzB,EAAM,GAAM,IAAO,EAAK,IACxB,EAAM,GAAK,EAAK,IAEhB,EAAM,IAAI,EAAQ,CAAC,EAEnB,EAAM,GAAM,EAAM,GAAM,GAAQ,IAEhC,EAAM,GAAM,EAAM,GAAM,GAAQ,IAEhC,IAAM,EAAgB,CAAC,EACvB,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,EAAI,KAAK,EAAM,EAAE,CAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAG,GAAG,CAAC,EAC7E,IAAM,EAAI,EAAI,KAAK,EAAE,EACrB,MAAO,GAAG,EAAE,MAAM,EAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAG,EAAE,EAAE,GAAG,EAAE,MAAM,GAAI,EAAE,EAAE,GAAG,EAAE,MAAM,GAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAC/F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wand-sparkles-DwseTI5T.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/wand-sparkles.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\",\n key: \"ul74o6\"\n }\n ],\n [\"path\", { d: \"m14 7 3 3\", key: \"1r5n42\" }],\n [\"path\", { d: \"M5 6v4\", key: \"ilb8ba\" }],\n [\"path\", { d: \"M19 14v4\", key: \"blhpug\" }],\n [\"path\", { d: \"M10 2v2\", key: \"7u0qdc\" }],\n [\"path\", { d: \"M7 8H3\", key: \"zfb6yr\" }],\n [\"path\", { d: \"M21 16h-4\", key: \"1cnmox\" }],\n [\"path\", { d: \"M11 3H9\", key: \"1obp7u\" }]\n];\nconst WandSparkles = createLucideIcon(\"wand-sparkles\", __iconNode);\n\nexport { __iconNode, WandSparkles as default };\n//# sourceMappingURL=wand-sparkles.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAyBA,IAAM,EAAe,EAAiB,gBAAiB,CAfrD,CACE,OACA,CACE,EAAG,gJACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,EAC1C,CAAC,OAAQ,CAAE,EAAG,SAAU,IAAK,QAAS,CAAC,EACvC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,SAAU,IAAK,QAAS,CAAC,EACvC,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,EAC1C,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,CAEa,CAAU"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n,l as r}from"./floating-layer-BcTp2AMB.js";import{t as i}from"./plus-D7PHzena.js";import{t as a}from"./x-c-gfVPJa.js";import{o}from"./dist-DPxQeZn3.js";import{s}from"./empty-DMs98grx.js";import{N as c,T as l,s as u}from"./hooks-BiOfAnEq.js";import{c as d,l as f}from"./action-component-host-8DE4kuUJ.js";import{a as p,i as m,t as h}from"./card-BYbadRar.js";import{a as g,c as _,i as v,n as y,o as b,r as x,s as S,t as C}from"./zod-2-ubQvxh.js";import{l as w,n as T}from"./property-renderer-ClrVnSny.js";import{C as E,Dt as D,S as O,Tt as k,l as A,o as j,wt as M,x as N}from"./index-CASCzvYu.js";var P=e(t(),1),F=n();function I({steps:e,properties:t,resourceId:n,control:c,trigger:l,onSubmit:u,onCancel:d,isSubmitting:f=!1,submitError:p,labels:m={}}){let h=m.back??`Back`,g=m.next??`Next`,_=m.submit??`Create`,v=m.cancel??`Cancel`,y=m.stepOf??`Step {current} of {total}`,[x,S]=P.useState(0),C=P.useMemo(()=>{let n=new Set(e.flatMap(e=>e.properties??[])),r=t.filter(e=>!n.has(e.path));return e.map(e=>e.properties?e.properties.map(e=>t.find(t=>t.path===e)).filter(e=>e!=null):r)},[e,t]),w=e.length,A=x===0,j=x===w-1,I=async()=>{let e=(C[x]??[]).map(e=>e.path);(e.length===0||await l(e))&&S(e=>Math.min(e+1,w-1))},R=e[x],z=C[x]??[],B=y.replace(`{current}`,String(x+1)).replace(`{total}`,String(w));return(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(`div`,{className:`px-6 pt-6 pb-5`,children:[(0,F.jsx)(`div`,{className:`flex w-full max-w-xl items-start mx-auto`,children:e.map((t,n)=>(0,F.jsxs)(P.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center`,children:[(0,F.jsx)(`div`,{className:r(`flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors`,n<x&&`border-primary bg-primary text-primary-foreground`,n===x&&`border-primary bg-background text-primary`,n>x&&`border-border bg-background text-muted-foreground`),children:n<x?(0,F.jsx)(D,{className:`size-3.5`}):n+1}),(0,F.jsx)(`span`,{className:r(`mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block`,n===x?`font-medium text-foreground`:n<x?`text-primary`:`text-muted-foreground`),children:t.label})]}),n<e.length-1&&(0,F.jsx)(`div`,{className:r(`mx-2 mt-3.5 h-0.5 flex-1 transition-colors`,n<x?`bg-primary`:`bg-border`)})]},n))}),(0,F.jsxs)(`p`,{className:`mt-2 text-center text-xs text-muted-foreground sm:hidden`,children:[B,R.label?` · ${R.label}`:``]})]}),R.description&&(0,F.jsx)(`p`,{className:`px-6 pb-2 text-sm text-muted-foreground`,children:R.description}),(0,F.jsx)(`div`,{className:`gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2`,children:z.map(e=>(0,F.jsx)(L,{control:c,property:e,children:(0,F.jsx)(b,{control:c,name:e.path,render:({field:t,fieldState:r})=>(0,F.jsxs)(N,{"data-invalid":r.error?!0:void 0,className:`mb-8 break-inside-avoid`,children:[(0,F.jsxs)(E,{htmlFor:t.name,children:[e.label,e.description?(0,F.jsx)(s,{content:e.description,ariaLabel:e.description}):null,e.isRequired&&(0,F.jsx)(`span`,{className:`ml-1 text-destructive`,children:`*`})]}),(0,F.jsx)(T,{property:e,value:t.value,onChange:t.onChange,disabled:f,resourceId:n}),r.error?.message&&(0,F.jsx)(O,{children:r.error.message})]})})},e.path))}),(0,F.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-6 py-4`,children:[(0,F.jsx)(`div`,{children:p&&(0,F.jsx)(`span`,{className:`text-sm text-destructive`,children:p})}),(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[A?(0,F.jsxs)(o,{type:`button`,variant:`ghost`,onClick:d,disabled:f,children:[(0,F.jsx)(a,{className:`size-4`}),v]}):(0,F.jsxs)(o,{type:`button`,variant:`outline`,onClick:()=>S(e=>e-1),disabled:f,children:[(0,F.jsx)(k,{className:`size-4`}),h]}),j?(0,F.jsxs)(o,{type:`button`,onClick:u,disabled:f,children:[(0,F.jsx)(i,{className:`size-4`}),_]}):(0,F.jsxs)(o,{type:`button`,onClick:()=>void I(),disabled:f,children:[g,(0,F.jsx)(M,{className:`size-4`})]})]})]})]})}I.displayName=`WizardForm`;function L({control:e,property:t,children:n}){let r=t.showWhen,i=_({control:e,name:r?.field??t.path});return r?v(r,{[r.field]:i})?(0,F.jsx)(F.Fragment,{children:n}):null:(0,F.jsx)(F.Fragment,{children:n})}function R({resourceId:e,steps:t,labels:n}){let r=l(e),i=u(e),a=j(),{t:o,locale:s}=c(),_=A(),v=P.useMemo(()=>r?w(r.properties,`edit`,r.propertyOrder?.edit).filter(e=>!e.isDisabled):[],[r]),b=P.useRef(()=>({})),T=P.useMemo(()=>y(v,o,()=>b.current()),[v,s]),E=P.useMemo(()=>{let e={};for(let t of v)e[t.path]=x(t);return e},[v]),D=S({resolver:C(T),defaultValues:E});b.current=D.getValues,P.useEffect(()=>{D.reset(E)},[E]);let[O,k]=P.useState(null),M=async t=>{k(null);try{let n=await i.mutateAsync(t),r=n.record.errors;if(r&&Object.keys(r).length>0){for(let[e,t]of Object.entries(r)){let n=typeof t==`string`?t:t?.message??`Invalid value`;D.setError(e,{type:`server`,message:n})}n.record.baseError&&k(String(n.record.baseError)),_.error({key:`toast:validationFailed`});return}_.success({key:`toast:created`}),a({name:`show`,resourceId:e,recordId:String(n.record.id)})}catch(e){let t=e instanceof Error?e.message:String(e);k(t),_.error({key:`toast:createFailed`},{description:t})}},N=()=>{D.handleSubmit(M,()=>{_.error({key:`toast:validationFailed`})})()};if(!r)return(0,F.jsx)(`div`,{className:`p-6`,children:o(`common:loading`)});let L={back:o(`common:back`),next:o(`common:next`),submit:o(`common:create`),cancel:o(`common:cancel`),stepOf:o(`wizard:stepOf`),...n},R=[f(o(`common:home`)),{label:r.name,to:{name:`list`,resourceId:e}},{label:o(`common:new`)}];return(0,F.jsxs)(`div`,{className:`flex min-h-full flex-col gap-4`,children:[(0,F.jsx)(d,{items:R}),(0,F.jsxs)(h,{className:`flex-1`,children:[(0,F.jsx)(m,{children:(0,F.jsx)(p,{className:`truncate`,children:o(`common:newRecord`,{name:r.name})})}),(0,F.jsx)(g,{...D,children:(0,F.jsx)(I,{steps:t,properties:v,resourceId:e,control:D.control,trigger:D.trigger,onSubmit:N,onCancel:()=>a({name:`list`,resourceId:e}),isSubmitting:D.formState.isSubmitting,submitError:O,labels:L})})]})]})}export{R as ResourceWizardCreatePage};
|
|
2
|
-
//# sourceMappingURL=wizard-create-page-D4a8FnmI.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-create-page-D4a8FnmI.js","names":[],"sources":["../../../../react/src/components/wizard-form.tsx","../../../../react/src/pages/wizard-create-page.tsx"],"sourcesContent":["// WizardForm — multi-step create form. Each step shows a subset of the\n// resource's editable properties. Clicking \"Next\" validates only the current\n// step's fields before advancing; \"Back\" never re-validates. \"Create\" on the\n// final step triggers the caller-supplied submit handler.\n//\n// The component is i18n-unaware: all visible strings are passed via the\n// `labels` prop with English defaults. The ResourceWizardCreatePage calls\n// t() and wires the results in.\n\nimport * as React from 'react'\nimport { useWatch, type Control, type UseFormTrigger } from 'react-hook-form'\nimport {\n Button,\n Field,\n FieldError,\n FieldLabel,\n FormField,\n InfoTooltip,\n cn,\n} from '@modern-admin/ui'\nimport { Check, ChevronLeft, ChevronRight, Plus, X } from 'lucide-react'\nimport { PropertyEditor } from '../property-renderer.js'\nimport { evaluateShowWhen } from '../show-when.js'\nimport type { PropertyJSON } from '../types.js'\n\n// ── Public types ──────────────────────────────────────────────────────────────\n\nexport interface WizardStep {\n /** Short label shown in the step indicator circles */\n label: string\n /** Optional longer description rendered below the step indicator */\n description?: string\n /**\n * Property paths (from the resource) to show in this step.\n * If omitted on exactly one step, that step receives all properties not\n * claimed by the other steps (catch-all).\n */\n properties?: string[]\n}\n\nexport interface WizardFormLabels {\n back?: string\n next?: string\n submit?: string\n cancel?: string\n /** Template: 'Step {current} of {total}' — shown only on mobile */\n stepOf?: string\n}\n\ntype FormValues = Record<string, unknown>\n\nexport interface WizardFormProps {\n steps: WizardStep[]\n /** All editable properties of the resource. */\n properties: PropertyJSON[]\n resourceId: string\n control: Control<FormValues>\n trigger: UseFormTrigger<FormValues>\n onSubmit: () => void\n onCancel: () => void\n isSubmitting?: boolean\n submitError?: string | null\n labels?: WizardFormLabels\n}\n\n// ── WizardForm ────────────────────────────────────────────────────────────────\n\nexport function WizardForm({\n steps,\n properties,\n resourceId,\n control,\n trigger,\n onSubmit,\n onCancel,\n isSubmitting = false,\n submitError,\n labels = {},\n}: WizardFormProps): React.ReactElement {\n const backLabel = labels.back ?? 'Back'\n const nextLabel = labels.next ?? 'Next'\n const submitLabel = labels.submit ?? 'Create'\n const cancelLabel = labels.cancel ?? 'Cancel'\n const stepOfTemplate = labels.stepOf ?? 'Step {current} of {total}'\n\n const [currentStep, setCurrentStep] = React.useState(0)\n\n // ── Distribute properties across steps ───────────────────────────────────\n const stepProperties = React.useMemo<PropertyJSON[][]>(() => {\n const claimedPaths = new Set(steps.flatMap((s) => s.properties ?? []))\n const unclaimed = properties.filter((p) => !claimedPaths.has(p.path))\n return steps.map((step) => {\n if (step.properties) {\n return step.properties\n .map((path) => properties.find((p) => p.path === path))\n .filter((p): p is PropertyJSON => p != null)\n }\n return unclaimed\n })\n }, [steps, properties])\n\n const totalSteps = steps.length\n const isFirst = currentStep === 0\n const isLast = currentStep === totalSteps - 1\n\n const handleNext = async (): Promise<void> => {\n const paths = (stepProperties[currentStep] ?? []).map((p) => p.path)\n // When the step has no properties, advance without validation.\n const valid =\n paths.length === 0 ||\n (await trigger(paths as Parameters<typeof trigger>[0]))\n if (valid) setCurrentStep((s) => Math.min(s + 1, totalSteps - 1))\n }\n\n const currentStepDef = steps[currentStep]!\n const currentProperties = stepProperties[currentStep] ?? []\n\n const stepOfLabel = stepOfTemplate\n .replace('{current}', String(currentStep + 1))\n .replace('{total}', String(totalSteps))\n\n return (\n <div>\n {/* ── Step indicator ──────────────────────────────────────────── */}\n <div className=\"px-6 pt-6 pb-5\">\n <div className=\"flex w-full max-w-xl items-start mx-auto\">\n {steps.map((step, index) => (\n <React.Fragment key={index}>\n {/* Step node */}\n <div className=\"flex shrink-0 flex-col items-center\">\n <div\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors',\n index < currentStep &&\n 'border-primary bg-primary text-primary-foreground',\n index === currentStep &&\n 'border-primary bg-background text-primary',\n index > currentStep &&\n 'border-border bg-background text-muted-foreground',\n )}\n >\n {index < currentStep ? (\n <Check className=\"size-3.5\" />\n ) : (\n index + 1\n )}\n </div>\n <span\n className={cn(\n 'mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block',\n index === currentStep\n ? 'font-medium text-foreground'\n : index < currentStep\n ? 'text-primary'\n : 'text-muted-foreground',\n )}\n >\n {step.label}\n </span>\n </div>\n {/* Connector line between nodes */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'mx-2 mt-3.5 h-0.5 flex-1 transition-colors',\n index < currentStep ? 'bg-primary' : 'bg-border',\n )}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n {/* Mobile: compact \"Step N of M · Label\" summary */}\n <p className=\"mt-2 text-center text-xs text-muted-foreground sm:hidden\">\n {stepOfLabel}\n {currentStepDef.label ? ` · ${currentStepDef.label}` : ''}\n </p>\n </div>\n\n {/* ── Step description ────────────────────────────────────────── */}\n {currentStepDef.description && (\n <p className=\"px-6 pb-2 text-sm text-muted-foreground\">\n {currentStepDef.description}\n </p>\n )}\n\n {/* ── Fields ──────────────────────────────────────────────────── */}\n <div className=\"gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2\">\n {currentProperties.map((property) => (\n <WizardConditionalField\n key={property.path}\n control={control}\n property={property}\n >\n <FormField\n control={control}\n name={property.path}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.error ? true : undefined}\n className=\"mb-8 break-inside-avoid\"\n >\n <FieldLabel htmlFor={field.name}>\n {property.label}\n {property.description ? (\n <InfoTooltip\n content={property.description}\n ariaLabel={property.description}\n />\n ) : null}\n {property.isRequired && (\n <span className=\"ml-1 text-destructive\">*</span>\n )}\n </FieldLabel>\n <PropertyEditor\n property={property}\n value={field.value}\n onChange={field.onChange}\n disabled={isSubmitting}\n resourceId={resourceId}\n />\n {fieldState.error?.message && (\n <FieldError>{fieldState.error.message}</FieldError>\n )}\n </Field>\n )}\n />\n </WizardConditionalField>\n ))}\n </div>\n\n {/* ── Navigation footer ───────────────────────────────────────── */}\n <div className=\"flex items-center justify-between border-t border-border px-6 py-4\">\n <div>\n {submitError && (\n <span className=\"text-sm text-destructive\">{submitError}</span>\n )}\n </div>\n <div className=\"flex gap-2\">\n {isFirst ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n disabled={isSubmitting}\n >\n <X className=\"size-4\" />\n {cancelLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setCurrentStep((s) => s - 1)}\n disabled={isSubmitting}\n >\n <ChevronLeft className=\"size-4\" />\n {backLabel}\n </Button>\n )}\n {isLast ? (\n <Button type=\"button\" onClick={onSubmit} disabled={isSubmitting}>\n <Plus className=\"size-4\" />\n {submitLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n onClick={() => void handleNext()}\n disabled={isSubmitting}\n >\n {nextLabel}\n <ChevronRight className=\"size-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nWizardForm.displayName = 'WizardForm'\n\n// ── WizardConditionalField ────────────────────────────────────────────────────\n// Same showWhen evaluation as ConditionalField in edit-page, scoped here.\n\ninterface WizardConditionalFieldProps {\n control: Control<FormValues>\n property: PropertyJSON\n children: React.ReactNode\n}\n\nfunction WizardConditionalField({\n control,\n property,\n children,\n}: WizardConditionalFieldProps): React.ReactElement | null {\n const rule = property.showWhen\n const watched = useWatch({ control, name: rule?.field ?? property.path })\n if (!rule) return <>{children}</>\n return evaluateShowWhen(rule, { [rule.field]: watched }) ? <>{children}</> : null\n}\n","// ResourceWizardCreatePage — multi-step creation form for a resource.\n// Analogous to ResourceEditPage but splits the fields across declarative\n// `steps`, each validated independently before advancing. Submit on the final\n// step creates the record and navigates to its show page.\n\nimport * as React from 'react'\nimport { useForm, type SubmitHandler } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { Card, CardHeader, CardTitle, Form } from '@modern-admin/ui'\nimport { useCreateRecord, useResource } from '../hooks.js'\nimport { useNavigate } from '../router.js'\nimport { useI18n } from '../i18n.js'\nimport { useNotify } from '../notify.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { buildValidationSchema, defaultValueFor } from '../validation.js'\nimport type { PropertyJSON } from '../types.js'\nimport { visibleRecordProperties } from '../relations.js'\nimport {\n WizardForm,\n type WizardStep,\n type WizardFormLabels,\n} from '../components/wizard-form.js'\n\nexport interface ResourceWizardCreatePageProps {\n resourceId: string\n /** Step definitions. Each step declares which property paths it shows. */\n steps: WizardStep[]\n /**\n * Override wizard button labels. Falls back to locale translations.\n * Useful when embedding the page with a custom i18n setup.\n */\n labels?: WizardFormLabels\n}\n\ntype FormValues = Record<string, unknown>\n\nexport function ResourceWizardCreatePage({\n resourceId,\n steps,\n labels: labelsProp,\n}: ResourceWizardCreatePageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const create = useCreateRecord(resourceId)\n const navigate = useNavigate()\n const { t, locale } = useI18n()\n const notify = useNotify()\n\n const editable = React.useMemo<PropertyJSON[]>(\n () =>\n resource\n ? visibleRecordProperties(resource.properties, 'edit', resource.propertyOrder?.edit).filter(\n (p) => !p.isDisabled,\n )\n : [],\n [resource],\n )\n\n // Route live form values into the validation schema (same pattern as edit-page).\n const getValuesRef = React.useRef<() => FormValues>(() => ({}))\n\n const schema = React.useMemo(\n () => buildValidationSchema(editable, t, () => getValuesRef.current()),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [editable, locale],\n )\n\n const defaults = React.useMemo<FormValues>(() => {\n const out: FormValues = {}\n for (const p of editable) out[p.path] = defaultValueFor(p)\n return out\n }, [editable])\n\n const form = useForm<FormValues>({\n resolver: zodResolver(schema),\n defaultValues: defaults,\n })\n\n getValuesRef.current = form.getValues\n\n // Reset when the resource schema arrives (resource loaded after mount).\n React.useEffect(() => {\n form.reset(defaults)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaults])\n\n const [submitError, setSubmitError] = React.useState<string | null>(null)\n\n const onSubmit: SubmitHandler<FormValues> = async (values) => {\n setSubmitError(null)\n try {\n const result = await create.mutateAsync(values)\n const errors = result.record.errors as Record<\n string,\n { message?: string } | string\n >\n if (errors && Object.keys(errors).length > 0) {\n for (const [path, err] of Object.entries(errors)) {\n const message =\n typeof err === 'string' ? err : (err?.message ?? 'Invalid value')\n form.setError(path, { type: 'server', message })\n }\n if (result.record.baseError) setSubmitError(String(result.record.baseError))\n notify.error({ key: 'toast:validationFailed' })\n return\n }\n notify.success({ key: 'toast:created' })\n navigate({ name: 'show', resourceId, recordId: String(result.record.id) })\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n setSubmitError(message)\n notify.error({ key: 'toast:createFailed' }, { description: message })\n }\n }\n\n const handleSubmit = (): void => {\n void form.handleSubmit(onSubmit, () => {\n notify.error({ key: 'toast:validationFailed' })\n })()\n }\n\n if (!resource) return <div className=\"p-6\">{t('common:loading')}</div>\n\n const labels: WizardFormLabels = {\n back: t('common:back'),\n next: t('common:next'),\n submit: t('common:create'),\n cancel: t('common:cancel'),\n stepOf: t('wizard:stepOf'),\n ...labelsProp,\n }\n\n const crumbs = [\n homeCrumb(t('common:home')),\n { label: resource.name, to: { name: 'list' as const, resourceId } },\n { label: t('common:new') },\n ]\n\n return (\n <div className=\"flex min-h-full flex-col gap-4\">\n <PageBreadcrumbs items={crumbs} />\n <Card className=\"flex-1\">\n <CardHeader>\n <CardTitle className=\"truncate\">\n {t('common:newRecord', { name: resource.name })}\n </CardTitle>\n </CardHeader>\n <Form {...form}>\n <WizardForm\n steps={steps}\n properties={editable}\n resourceId={resourceId}\n control={form.control}\n trigger={form.trigger}\n onSubmit={handleSubmit}\n onCancel={() => navigate({ name: 'list', resourceId })}\n isSubmitting={form.formState.isSubmitting}\n submitError={submitError}\n labels={labels}\n />\n </Form>\n </Card>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"x-c-gfVPJa.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/x.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAaA,IAAM,EAAI,EAAiB,IAAK,CAH9B,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,EAC3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,CAEb,CAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zap-BxPAEPtJ.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/zap.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\",\n key: \"1v7up4\"\n }\n ]\n];\nconst Zap = createLucideIcon(\"zap\", __iconNode);\n\nexport { __iconNode, Zap as default };\n//# sourceMappingURL=zap.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAkBA,IAAM,EAAM,EAAiB,MAAO,CARlC,CACE,OACA,CACE,EAAG,yKACH,IAAK,QACP,CACF,CAEkC,CAAU"}
|