@modern-admin/web 0.5.0 → 0.6.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/vite.js +20 -0
- package/dist/lib/index.js +6 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js +2 -0
- 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-QVowRL_F.js.map → action-component-host-8DE4kuUJ.js.map} +1 -1
- package/dist/standalone/assets/{action-page-CET1s1MA.js → action-page-D6BbXzUo.js} +2 -2
- 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-CET1s1MA.js.map → action-page-D6BbXzUo.js.map} +1 -1
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js +2 -0
- 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-pJHSP1PB.js.map → ai-assistant-widget-BORa8_hT.js.map} +1 -1
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js +2 -0
- package/dist/standalone/assets/{arrow-left-CI9hUPwJ.js.map → arrow-left-yVCaEJJu.js.map} +1 -1
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js +2 -0
- 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-DoZPtbGo.js.map → audit-log-page-uHj9GWfi.js.map} +1 -1
- package/dist/standalone/assets/{badge-8oeWEs3P.js → badge-CdW_Z0lB.js} +2 -2
- package/dist/standalone/assets/{badge-8oeWEs3P.js.map → badge-CdW_Z0lB.js.map} +1 -1
- package/dist/standalone/assets/{bot-DFDgGfNj.js → bot-CuDPD_ZU.js} +2 -2
- package/dist/standalone/assets/{bot-DFDgGfNj.js.map → bot-CuDPD_ZU.js.map} +1 -1
- package/dist/standalone/assets/cache-page-CBKj7WFq.js +2 -0
- 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-CoKusfv-.js.map → cache-page-CBKj7WFq.js.map} +1 -1
- package/dist/standalone/assets/calendar-BuLRvNBg.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/card-BYbadRar.js +2 -0
- package/dist/standalone/assets/card-BYbadRar.js.br +0 -0
- package/dist/standalone/assets/card-BYbadRar.js.gz +0 -0
- package/dist/standalone/assets/{card-MNH_XK0V.js.map → card-BYbadRar.js.map} +1 -1
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js +2 -0
- 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-R2NG5T1y.js.map → chart-widget-Bfk_mvm2.js.map} +1 -1
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js +2 -0
- package/dist/standalone/assets/{chevrons-up-down-BHCs46XQ.js.map → chevrons-up-down-y29_Sm-3.js.map} +1 -1
- package/dist/standalone/assets/{circle-alert-0EyKeic4.js → circle-alert-D1sKnXtO.js} +2 -2
- package/dist/standalone/assets/{circle-alert-0EyKeic4.js.map → circle-alert-D1sKnXtO.js.map} +1 -1
- package/dist/standalone/assets/{clock-OCmX6DtA.js → clock-B9qbSr_k.js} +2 -2
- package/dist/standalone/assets/{clock-OCmX6DtA.js.map → clock-B9qbSr_k.js.map} +1 -1
- package/dist/standalone/assets/command-BAXXxf0P.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/{copy-BexCWf4U.js → copy-5fb4qj-_.js} +2 -2
- package/dist/standalone/assets/{copy-BexCWf4U.js.map → copy-5fb4qj-_.js.map} +1 -1
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js +2 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.gz +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.map +1 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js +2 -0
- 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-DQ4XOgO6.js.map → date-picker-Bxv-yrWf.js.map} +1 -1
- package/dist/standalone/assets/dist-COXu-_Zv.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js +2 -0
- 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-CiXwD0ML.js.map +1 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js +2 -0
- 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-DPxQeZn3.js.map +1 -0
- package/dist/standalone/assets/{edit-page-CVjik6T5.js → edit-page-Dm638D2J.js} +2 -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-CVjik6T5.js.map → edit-page-Dm638D2J.js.map} +1 -1
- package/dist/standalone/assets/{ellipsis-lEjcTxo0.js → ellipsis-BRmOlhsy.js} +2 -2
- package/dist/standalone/assets/{ellipsis-lEjcTxo0.js.map → ellipsis-BRmOlhsy.js.map} +1 -1
- package/dist/standalone/assets/empty-DMs98grx.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/{file-text-CcLZq8HA.js → file-text-MQF--yeB.js} +2 -2
- package/dist/standalone/assets/{file-text-CcLZq8HA.js.map → file-text-MQF--yeB.js.map} +1 -1
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js +2 -0
- 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/floating-layer-BcTp2AMB.js.map +1 -0
- package/dist/standalone/assets/{global-search-dialog-CT30gcRv.js → global-search-dialog-DxwxFDO5.js} +2 -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-CT30gcRv.js.map → global-search-dialog-DxwxFDO5.js.map} +1 -1
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js +174 -0
- 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 +1 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js +61 -0
- 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 +1 -0
- package/dist/standalone/assets/{hooks-DHDUQgzs.js → hooks-BiOfAnEq.js} +11 -11
- 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 +1 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/index-CASCzvYu.js +15 -0
- 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 +1 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css +2 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css.br +0 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css.gz +0 -0
- package/dist/standalone/assets/{info-CGVdWTj1.js → info-ChwYoM77.js} +2 -2
- package/dist/standalone/assets/{info-CGVdWTj1.js.map → info-ChwYoM77.js.map} +1 -1
- package/dist/standalone/assets/json-editor-BD0UhGOT.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/key-BzJFbNbz.js +2 -0
- package/dist/standalone/assets/key-BzJFbNbz.js.map +1 -0
- package/dist/standalone/assets/{key-round-CQLp1Ua9.js → key-round-oSqmVdkQ.js} +2 -2
- package/dist/standalone/assets/{key-round-CQLp1Ua9.js.map → key-round-oSqmVdkQ.js.map} +1 -1
- package/dist/standalone/assets/{minimize-2-Bx2cH_WS.js → minimize-2-iWv98HjE.js} +2 -2
- package/dist/standalone/assets/{minimize-2-Bx2cH_WS.js.map → minimize-2-iWv98HjE.js.map} +1 -1
- package/dist/standalone/assets/{palette-DVP_4RAn.js → palette-jgTV28yN.js} +2 -2
- package/dist/standalone/assets/{palette-DVP_4RAn.js.map → palette-jgTV28yN.js.map} +1 -1
- package/dist/standalone/assets/{pencil-BO-k3yTG.js → pencil-kFOObGrY.js} +2 -2
- package/dist/standalone/assets/{pencil-BO-k3yTG.js.map → pencil-kFOObGrY.js.map} +1 -1
- package/dist/standalone/assets/{pipette-CqHYfQnn.js → pipette-roLBCmPv.js} +2 -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/{pipette-CqHYfQnn.js.map → pipette-roLBCmPv.js.map} +1 -1
- package/dist/standalone/assets/plus-D7PHzena.js +2 -0
- package/dist/standalone/assets/{plus-Dk-FzitW.js.map → plus-D7PHzena.js.map} +1 -1
- package/dist/standalone/assets/property-renderer-ClrVnSny.js +4 -0
- 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 +1 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js +2 -0
- 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-BDP1QYCg.js.map → reference-BMbhUBHD.js.map} +1 -1
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js +2 -0
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js.map +1 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js +2 -0
- 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-CI74_D14.js.map → revisions-button-Csueldv_.js.map} +1 -1
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js +68 -0
- 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/richtext-render-DaiNQPjZ.js.map +1 -0
- package/dist/standalone/assets/{rotate-ccw-BLr0QLAg.js → rotate-ccw-AB1VcvbK.js} +2 -2
- package/dist/standalone/assets/{rotate-ccw-BLr0QLAg.js.map → rotate-ccw-AB1VcvbK.js.map} +1 -1
- package/dist/standalone/assets/{save-Cd3oR3Sj.js → save-BkkrgP5Q.js} +2 -2
- package/dist/standalone/assets/{save-Cd3oR3Sj.js.map → save-BkkrgP5Q.js.map} +1 -1
- package/dist/standalone/assets/schemas-ByMQmMCS.js +65 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.br +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.gz +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.map +1 -0
- package/dist/standalone/assets/select-BOe2daO9.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/{send-D4KHQGYj.js → send-Bzb_4uMT.js} +2 -2
- package/dist/standalone/assets/{send-D4KHQGYj.js.map → send-Bzb_4uMT.js.map} +1 -1
- package/dist/standalone/assets/settings-page-BmphreWj.js +2 -0
- 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-CdIWVeh0.js.map → settings-page-BmphreWj.js.map} +1 -1
- package/dist/standalone/assets/show-page-CDgUXhsx.js +2 -0
- 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-Dgw-9Pmn.js.map → show-page-CDgUXhsx.js.map} +1 -1
- package/dist/standalone/assets/{sparkles-CqF0zjrF.js → sparkles-1tT0H4n4.js} +2 -2
- package/dist/standalone/assets/{sparkles-CqF0zjrF.js.map → sparkles-1tT0H4n4.js.map} +1 -1
- package/dist/standalone/assets/{square-pen-DGT7ekeJ.js → square-pen-ZvVEwkzw.js} +2 -2
- package/dist/standalone/assets/{square-pen-DGT7ekeJ.js.map → square-pen-ZvVEwkzw.js.map} +1 -1
- package/dist/standalone/assets/table-RI-lM4fw.js +2 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.br +1 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.gz +0 -0
- package/dist/standalone/assets/{table-DzBSPeVH.js.map → table-RI-lM4fw.js.map} +1 -1
- package/dist/standalone/assets/tabs-Bj4gQaH2.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/textarea-C2w7TG3h.js +2 -0
- package/dist/standalone/assets/{textarea-T25SXcrC.js.map → textarea-C2w7TG3h.js.map} +1 -1
- package/dist/standalone/assets/{trash-2-DhyKQCKv.js → trash-2-BIJVpWxv.js} +2 -2
- package/dist/standalone/assets/{trash-2-DhyKQCKv.js.map → trash-2-BIJVpWxv.js.map} +1 -1
- package/dist/standalone/assets/{triangle-alert-CyaaNWN8.js → triangle-alert-yljVpQCM.js} +2 -2
- package/dist/standalone/assets/{triangle-alert-CyaaNWN8.js.map → triangle-alert-yljVpQCM.js.map} +1 -1
- package/dist/standalone/assets/{undo-2-DlSB-5DM.js → undo-2-CnH3ScKE.js} +2 -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/{undo-2-DlSB-5DM.js.map → undo-2-CnH3ScKE.js.map} +1 -1
- package/dist/standalone/assets/{upload-BVhXhZgn.js → upload-DrfB-4bU.js} +2 -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/{upload-BVhXhZgn.js.map → upload-DrfB-4bU.js.map} +1 -1
- package/dist/standalone/assets/{use-dashboard-charts-aymvhXUB.js → use-dashboard-charts-D7-ctwCE.js} +2 -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/{use-dashboard-charts-aymvhXUB.js.map → use-dashboard-charts-D7-ctwCE.js.map} +1 -1
- package/dist/standalone/assets/useQueries-DNUnShBb.js +2 -0
- 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 +1 -0
- package/dist/standalone/assets/{user-directory-C33bGZdb.js → user-directory-BvmDzxsG.js} +3 -3
- 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-C33bGZdb.js.map → user-directory-BvmDzxsG.js.map} +1 -1
- package/dist/standalone/assets/{wand-sparkles-DWaFQeYS.js → wand-sparkles-DwseTI5T.js} +2 -2
- package/dist/standalone/assets/{wand-sparkles-DWaFQeYS.js.map → wand-sparkles-DwseTI5T.js.map} +1 -1
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js +2 -0
- 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-BtfveXmP.js.map → wizard-create-page-D4a8FnmI.js.map} +1 -1
- package/dist/standalone/assets/x-c-gfVPJa.js +2 -0
- package/dist/standalone/assets/{x-C3kLunD6.js.map → x-c-gfVPJa.js.map} +1 -1
- package/dist/standalone/assets/zap-BxPAEPtJ.js +2 -0
- package/dist/standalone/assets/zap-BxPAEPtJ.js.map +1 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js +2 -0
- 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 +1 -0
- package/dist/standalone/index.html +12 -12
- package/dist/standalone/index.html.br +0 -0
- package/dist/standalone/index.html.gz +0 -0
- package/package.json +21 -21
- package/src/vite.ts +21 -0
- package/dist/standalone/assets/action-component-host-QVowRL_F.js +0 -2
- package/dist/standalone/assets/action-component-host-QVowRL_F.js.br +0 -0
- package/dist/standalone/assets/action-component-host-QVowRL_F.js.gz +0 -0
- package/dist/standalone/assets/action-page-CET1s1MA.js.br +0 -0
- package/dist/standalone/assets/action-page-CET1s1MA.js.gz +0 -0
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js +0 -2
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.gz +0 -0
- package/dist/standalone/assets/arrow-left-CI9hUPwJ.js +0 -2
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js +0 -2
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.gz +0 -0
- package/dist/standalone/assets/cache-page-CoKusfv-.js +0 -2
- package/dist/standalone/assets/cache-page-CoKusfv-.js.br +0 -0
- package/dist/standalone/assets/cache-page-CoKusfv-.js.gz +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js +0 -2
- package/dist/standalone/assets/calendar-DDv0Qalf.js.br +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js.gz +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js.map +0 -1
- package/dist/standalone/assets/card-MNH_XK0V.js +0 -2
- package/dist/standalone/assets/card-MNH_XK0V.js.br +0 -0
- package/dist/standalone/assets/card-MNH_XK0V.js.gz +0 -0
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js +0 -2
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js.br +0 -0
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js.gz +0 -0
- package/dist/standalone/assets/chevrons-up-down-BHCs46XQ.js +0 -2
- package/dist/standalone/assets/command-Cw-hTtpk.js +0 -2
- package/dist/standalone/assets/command-Cw-hTtpk.js.br +0 -0
- package/dist/standalone/assets/command-Cw-hTtpk.js.gz +0 -0
- package/dist/standalone/assets/command-Cw-hTtpk.js.map +0 -1
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js +0 -2
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.gz +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.map +0 -1
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js +0 -2
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js.br +0 -0
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js.gz +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js +0 -2
- package/dist/standalone/assets/dist-CmyV2PEd.js.br +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js.gz +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js.map +0 -1
- package/dist/standalone/assets/dist-DI9XNddW.js +0 -2
- package/dist/standalone/assets/dist-DI9XNddW.js.br +0 -0
- package/dist/standalone/assets/dist-DI9XNddW.js.gz +0 -0
- package/dist/standalone/assets/dist-DI9XNddW.js.map +0 -1
- package/dist/standalone/assets/dist-jC1pK2zN.js +0 -2
- package/dist/standalone/assets/dist-jC1pK2zN.js.br +0 -0
- package/dist/standalone/assets/dist-jC1pK2zN.js.gz +0 -0
- package/dist/standalone/assets/dist-jC1pK2zN.js.map +0 -1
- package/dist/standalone/assets/edit-page-CVjik6T5.js.br +0 -0
- package/dist/standalone/assets/edit-page-CVjik6T5.js.gz +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js +0 -2
- package/dist/standalone/assets/empty-DcETRWsu.js.br +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js.gz +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js.map +0 -1
- package/dist/standalone/assets/floating-layer-DJGCYMex.js +0 -2
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.br +0 -0
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.gz +0 -0
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.map +0 -1
- package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js +0 -181
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.map +0 -1
- package/dist/standalone/assets/home-page-B3WVGerG.js +0 -3
- package/dist/standalone/assets/home-page-B3WVGerG.js.br +0 -0
- package/dist/standalone/assets/home-page-B3WVGerG.js.gz +0 -0
- package/dist/standalone/assets/home-page-B3WVGerG.js.map +0 -1
- package/dist/standalone/assets/hooks-DHDUQgzs.js.br +0 -0
- package/dist/standalone/assets/hooks-DHDUQgzs.js.gz +0 -0
- package/dist/standalone/assets/hooks-DHDUQgzs.js.map +0 -1
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js +0 -2
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.br +0 -0
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.gz +0 -0
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.map +0 -1
- package/dist/standalone/assets/index-BvESJd1R.js +0 -15
- package/dist/standalone/assets/index-BvESJd1R.js.br +0 -0
- package/dist/standalone/assets/index-BvESJd1R.js.gz +0 -0
- package/dist/standalone/assets/index-BvESJd1R.js.map +0 -1
- package/dist/standalone/assets/index-DSYyF4Ah.css +0 -2
- package/dist/standalone/assets/index-DSYyF4Ah.css.br +0 -0
- package/dist/standalone/assets/index-DSYyF4Ah.css.gz +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js +0 -2
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.br +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.gz +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.map +0 -1
- package/dist/standalone/assets/key-lbuX0yk_.js +0 -2
- package/dist/standalone/assets/key-lbuX0yk_.js.map +0 -1
- package/dist/standalone/assets/pipette-CqHYfQnn.js.br +0 -0
- package/dist/standalone/assets/pipette-CqHYfQnn.js.gz +0 -0
- package/dist/standalone/assets/plus-Dk-FzitW.js +0 -2
- package/dist/standalone/assets/property-renderer-DeykD9hp.js +0 -7
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.br +0 -0
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.gz +0 -0
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.map +0 -1
- package/dist/standalone/assets/reference-BDP1QYCg.js +0 -2
- package/dist/standalone/assets/reference-BDP1QYCg.js.br +0 -0
- package/dist/standalone/assets/reference-BDP1QYCg.js.gz +0 -0
- package/dist/standalone/assets/refresh-cw-DHvUQTMb.js +0 -2
- package/dist/standalone/assets/refresh-cw-DHvUQTMb.js.map +0 -1
- package/dist/standalone/assets/revisions-button-CI74_D14.js +0 -2
- package/dist/standalone/assets/revisions-button-CI74_D14.js.br +0 -0
- package/dist/standalone/assets/revisions-button-CI74_D14.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js +0 -67
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.br +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.map +0 -1
- package/dist/standalone/assets/schemas-twnCb1uT.js +0 -65
- package/dist/standalone/assets/schemas-twnCb1uT.js.br +0 -0
- package/dist/standalone/assets/schemas-twnCb1uT.js.gz +0 -0
- package/dist/standalone/assets/schemas-twnCb1uT.js.map +0 -1
- package/dist/standalone/assets/select-BR1RMqsn.js +0 -2
- package/dist/standalone/assets/select-BR1RMqsn.js.br +0 -0
- package/dist/standalone/assets/select-BR1RMqsn.js.gz +0 -0
- package/dist/standalone/assets/select-BR1RMqsn.js.map +0 -1
- package/dist/standalone/assets/settings-page-CdIWVeh0.js +0 -2
- package/dist/standalone/assets/settings-page-CdIWVeh0.js.br +0 -0
- package/dist/standalone/assets/settings-page-CdIWVeh0.js.gz +0 -0
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js +0 -2
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js.br +0 -0
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js.gz +0 -0
- package/dist/standalone/assets/table-DzBSPeVH.js +0 -2
- package/dist/standalone/assets/table-DzBSPeVH.js.br +0 -0
- package/dist/standalone/assets/table-DzBSPeVH.js.gz +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js +0 -2
- package/dist/standalone/assets/tabs-Dr7UA219.js.br +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js.gz +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js.map +0 -1
- package/dist/standalone/assets/textarea-T25SXcrC.js +0 -2
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.br +0 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.gz +0 -0
- package/dist/standalone/assets/upload-BVhXhZgn.js.br +0 -0
- package/dist/standalone/assets/upload-BVhXhZgn.js.gz +0 -0
- package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.br +0 -0
- package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.gz +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js +0 -2
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.br +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.gz +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.map +0 -1
- package/dist/standalone/assets/user-directory-C33bGZdb.js.br +0 -0
- package/dist/standalone/assets/user-directory-C33bGZdb.js.gz +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js +0 -60
- package/dist/standalone/assets/value-format-CLzWct9Y.js.br +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js.gz +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js.map +0 -1
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js +0 -2
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.gz +0 -0
- package/dist/standalone/assets/x-C3kLunD6.js +0 -2
- package/dist/standalone/assets/zap-b3saQVKc.js +0 -2
- package/dist/standalone/assets/zap-b3saQVKc.js.map +0 -1
- package/dist/standalone/assets/zod-N7mHo7BX.js +0 -2
- package/dist/standalone/assets/zod-N7mHo7BX.js.br +0 -0
- package/dist/standalone/assets/zod-N7mHo7BX.js.gz +0 -0
- package/dist/standalone/assets/zod-N7mHo7BX.js.map +0 -1
package/dist/standalone/assets/{global-search-dialog-CT30gcRv.js → global-search-dialog-DxwxFDO5.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,n as t}from"./createLucideIcon-
|
|
2
|
-
//# sourceMappingURL=global-search-dialog-
|
|
1
|
+
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n}from"./floating-layer-BcTp2AMB.js";import{n as r,t as i}from"./clock-B9qbSr_k.js";import{t as a}from"./triangle-alert-yljVpQCM.js";import{t as o}from"./x-c-gfVPJa.js";import{N as s,f as c}from"./hooks-BiOfAnEq.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h}from"./command-BAXXxf0P.js";import{G as g,H as _,mt as v,o as y}from"./index-CASCzvYu.js";var b=e(t(),1),x=n(),S=300,C=`modern-admin:global-search:recent:v1`,w=6,T=()=>{if(typeof window>`u`)return[];try{let e=window.localStorage.getItem(C);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).slice(0,w):[]}catch{return[]}},E=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(C,JSON.stringify(e.slice(0,w)))}catch{}},D=(e,t)=>{if(!t)return e;let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0,o=0;for(;a<e.length;){let t=n.indexOf(r,a);if(t===-1){i.push(e.slice(a));break}t>a&&i.push(e.slice(a,t)),i.push((0,x.jsx)(`mark`,{className:`rounded-sm bg-primary/20 px-0.5 text-foreground`,children:e.slice(t,t+r.length)},o++)),a=t+r.length}return i};function O({open:e,onOpenChange:t}){let{t:n}=s(),C=y(),[O,k]=b.useState(``),[A,j]=b.useState(``),[M,N]=b.useState(()=>T());b.useEffect(()=>{e&&(k(``),j(``),N(T()))},[e]),b.useEffect(()=>{let e=window.setTimeout(()=>j(O.trim()),S);return()=>window.clearTimeout(e)},[O]);let{data:P,isFetching:F,isError:I}=c(A,e),L=b.useCallback(e=>{e&&N(t=>{let n=[e,...t.filter(t=>t!==e)].slice(0,w);return E(n),n})},[]),R=P?.groups??[],z=A.length>0,B=z&&!F&&!I&&R.length===0,V=b.useCallback((e,n)=>{L(A),t(!1),C({name:`show`,resourceId:e,recordId:n})},[A,C,t,L]),H=b.useCallback(e=>{L(A),t(!1),C({name:`list`,resourceId:e})},[A,C,t,L]),U=b.useCallback(e=>{k(e),j(e)},[]),W=b.useCallback(()=>{N([]),E([])},[]);return(0,x.jsxs)(f,{open:e,onOpenChange:t,children:[(0,x.jsx)(g,{className:`sr-only`,children:n(`globalSearch:title`)}),(0,x.jsx)(_,{className:`sr-only`,children:n(`globalSearch:description`)}),(0,x.jsx)(l,{placeholder:n(`globalSearch:placeholder`),value:O,onValueChange:k}),(0,x.jsxs)(h,{children:[!z&&M.length===0&&(0,x.jsx)(`div`,{className:`py-6 text-center text-sm text-muted-foreground`,children:n(`globalSearch:hint`)}),!z&&M.length>0&&(0,x.jsx)(d,{heading:(0,x.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,x.jsx)(`span`,{children:n(`globalSearch:recent`)}),(0,x.jsxs)(`button`,{type:`button`,className:`text-xs text-muted-foreground hover:text-foreground`,onClick:W,children:[(0,x.jsx)(o,{className:`mr-1 inline size-3`,"aria-hidden":`true`}),n(`globalSearch:clearRecent`)]})]}),children:M.map(e=>(0,x.jsxs)(p,{value:`recent:${e}`,onSelect:()=>U(e),children:[(0,x.jsx)(i,{className:`mr-2 size-4 text-muted-foreground`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{className:`flex-1 truncate`,children:e})]},`recent:${e}`))}),z&&I&&(0,x.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-sm text-destructive`,role:`alert`,children:[(0,x.jsx)(a,{className:`size-4`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{children:n(`globalSearch:error`)})]}),B&&(0,x.jsx)(m,{children:n(`globalSearch:noResults`)}),z&&!I&&F&&R.length===0&&(0,x.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground`,role:`status`,"aria-live":`polite`,children:[(0,x.jsx)(v,{className:`size-4 animate-spin`,"aria-hidden":`true`}),(0,x.jsx)(`span`,{children:n(`common:loading`)})]}),R.map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[t>0&&(0,x.jsx)(u,{}),(0,x.jsxs)(d,{heading:e.resourceName,children:[e.records.map(e=>(0,x.jsxs)(p,{value:`${e.resourceId}:${e.recordId} ${e.title} ${e.snippet??``}`,onSelect:()=>V(e.resourceId,e.recordId),className:`flex-col items-start gap-0.5`,children:[(0,x.jsxs)(`div`,{className:`flex w-full items-baseline gap-2`,children:[(0,x.jsx)(`span`,{className:`flex-1 truncate font-medium`,children:D(e.title,A)}),e.matchedField&&(0,x.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:n(`globalSearch:matchedIn`).replace(`{field}`,e.matchedField)})]}),e.snippet&&(0,x.jsx)(`div`,{className:`line-clamp-1 text-xs text-muted-foreground`,children:D(e.snippet,A)})]},`${e.resourceId}:${e.recordId}`)),(0,x.jsxs)(p,{value:`${e.resourceId}:show-all`,forceMount:!0,onSelect:()=>H(e.resourceId),className:`text-xs text-muted-foreground`,children:[(0,x.jsx)(r,{className:`mr-2 size-3.5`,"aria-hidden":`true`}),n(`globalSearch:showAllIn`).replace(`{resource}`,e.resourceName)]},`${e.resourceId}:show-all`)]})]},e.resourceId))]})]})}export{O as GlobalSearchDialog};
|
|
2
|
+
//# sourceMappingURL=global-search-dialog-DxwxFDO5.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-search-dialog-CT30gcRv.js","names":[],"sources":["../../../../react/src/components/global-search-dialog.tsx"],"sourcesContent":["// Cross-resource command palette. Backed by `useGlobalSearch`, which fans\n// the query out to every registered resource's `search` action server-side.\n// Results are grouped by resource; selecting an entry navigates to the\n// record's show page and closes the palette.\n//\n// Designed as a controlled component — the parent (typically the header)\n// holds the `open` state so it can pair the trigger button with the\n// `mod+k` hotkey.\n\nimport * as React from 'react'\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n DialogDescription,\n DialogTitle,\n} from '@modern-admin/ui'\nimport { AlertTriangle, ArrowRight, Clock, Loader2, X } from 'lucide-react'\nimport { useGlobalSearch } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { useNavigate } from '../router.js'\n\nconst DEBOUNCE_MS = 300\nconst RECENT_STORAGE_KEY = 'modern-admin:global-search:recent:v1'\nconst RECENT_MAX = 6\n\nexport interface GlobalSearchDialogProps {\n open: boolean\n\n onOpenChange(open: boolean): void\n}\n\nconst readRecent = (): string[] => {\n if (typeof window === 'undefined') return []\n try {\n const raw = window.localStorage.getItem(RECENT_STORAGE_KEY)\n if (!raw) return []\n const parsed = JSON.parse(raw) as unknown\n if (!Array.isArray(parsed)) return []\n return parsed.filter((v): v is string => typeof v === 'string').slice(0, RECENT_MAX)\n } catch {\n return []\n }\n}\n\nconst writeRecent = (entries: string[]): void => {\n if (typeof window === 'undefined') return\n try {\n window.localStorage.setItem(RECENT_STORAGE_KEY, JSON.stringify(entries.slice(0, RECENT_MAX)))\n } catch {\n /* quota exceeded — recent list is best-effort */\n }\n}\n\n/**\n * Highlight every case-insensitive occurrence of `needle` in `text` with\n * `<mark>`. Returns an array of React nodes ready to render inside any\n * inline container. Empty `needle` falls back to the raw string.\n */\nconst highlightMatch = (text: string, needle: string): React.ReactNode => {\n if (!needle) return text\n const lower = text.toLowerCase()\n const target = needle.toLowerCase()\n const nodes: React.ReactNode[] = []\n let cursor = 0\n let key = 0\n while (cursor < text.length) {\n const idx = lower.indexOf(target, cursor)\n if (idx === -1) {\n nodes.push(text.slice(cursor))\n break\n }\n if (idx > cursor) nodes.push(text.slice(cursor, idx))\n nodes.push(\n <mark\n key={key++}\n className=\"rounded-sm bg-primary/20 px-0.5 text-foreground\"\n >\n {text.slice(idx, idx + target.length)}\n </mark>,\n )\n cursor = idx + target.length\n }\n return nodes\n}\n\nexport function GlobalSearchDialog({\n open,\n onOpenChange,\n}: GlobalSearchDialogProps): React.ReactElement {\n const { t } = useI18n()\n const navigate = useNavigate()\n const [query, setQuery] = React.useState('')\n const [debounced, setDebounced] = React.useState('')\n const [recent, setRecent] = React.useState<string[]>(() => readRecent())\n\n // Reset query each time the dialog opens so it starts empty, and rehydrate\n // the recent list (other tabs may have appended entries while we were idle).\n React.useEffect(() => {\n if (open) {\n setQuery('')\n setDebounced('')\n setRecent(readRecent())\n }\n }, [open])\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => setDebounced(query.trim()), DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n }, [query])\n\n const { data, isFetching, isError } = useGlobalSearch(debounced, open)\n\n // Capture the most recent successful query so it's available for the\n // \"recent\" list. We only persist on user-driven navigation (not every\n // keystroke) to keep the list signal-to-noise high.\n const persistRecent = React.useCallback((value: string): void => {\n if (!value) return\n setRecent((prev) => {\n const next = [value, ...prev.filter((q) => q !== value)].slice(0, RECENT_MAX)\n writeRecent(next)\n return next\n })\n }, [])\n\n const groups = data?.groups ?? []\n const hasQuery = debounced.length > 0\n const showEmpty = hasQuery && !isFetching && !isError && groups.length === 0\n\n const handleSelect = React.useCallback(\n (resourceId: string, recordId: string): void => {\n persistRecent(debounced)\n onOpenChange(false)\n navigate({ name: 'show', resourceId, recordId })\n },\n [debounced, navigate, onOpenChange, persistRecent],\n )\n\n const handleShowAll = React.useCallback(\n (resourceId: string): void => {\n persistRecent(debounced)\n onOpenChange(false)\n navigate({ name: 'list', resourceId })\n },\n [debounced, navigate, onOpenChange, persistRecent],\n )\n\n const handlePickRecent = React.useCallback((value: string): void => {\n setQuery(value)\n setDebounced(value)\n }, [])\n\n const handleClearRecent = React.useCallback((): void => {\n setRecent([])\n writeRecent([])\n }, [])\n\n return (\n <CommandDialog open={open} onOpenChange={onOpenChange}>\n {/* Visually-hidden title + description keep Radix Dialog accessibility\n warnings quiet and provide a label for screen readers. */}\n <DialogTitle className=\"sr-only\">{t('globalSearch:title')}</DialogTitle>\n <DialogDescription className=\"sr-only\">\n {t('globalSearch:description')}\n </DialogDescription>\n <CommandInput\n placeholder={t('globalSearch:placeholder')}\n value={query}\n onValueChange={setQuery}\n />\n {/* cmdk dedupes by item value — prefix each value with `resourceId:recordId`\n so identical record ids across resources keep distinct entries.\n shouldFilter is left on (default) so cmdk re-orders by relevance against\n the typed query — server already narrowed the set down. */}\n <CommandList>\n {!hasQuery && recent.length === 0 && (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('globalSearch:hint')}\n </div>\n )}\n {!hasQuery && recent.length > 0 && (\n <CommandGroup\n heading={\n <span className=\"flex items-center justify-between gap-2\">\n <span>{t('globalSearch:recent')}</span>\n <button\n type=\"button\"\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n onClick={handleClearRecent}\n >\n <X className=\"mr-1 inline size-3\" aria-hidden=\"true\" />\n {t('globalSearch:clearRecent')}\n </button>\n </span>\n }\n >\n {recent.map((entry) => (\n <CommandItem\n key={`recent:${entry}`}\n value={`recent:${entry}`}\n onSelect={() => handlePickRecent(entry)}\n >\n <Clock className=\"mr-2 size-4 text-muted-foreground\" aria-hidden=\"true\" />\n <span className=\"flex-1 truncate\">{entry}</span>\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n {hasQuery && isError && (\n <div\n className=\"flex items-center justify-center gap-2 py-6 text-sm text-destructive\"\n role=\"alert\"\n >\n <AlertTriangle className=\"size-4\" aria-hidden=\"true\" />\n <span>{t('globalSearch:error')}</span>\n </div>\n )}\n {showEmpty && <CommandEmpty>{t('globalSearch:noResults')}</CommandEmpty>}\n {hasQuery && !isError && isFetching && groups.length === 0 && (\n <div\n className=\"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Loader2 className=\"size-4 animate-spin\" aria-hidden=\"true\"/>\n <span>{t('common:loading')}</span>\n </div>\n )}\n {groups.map((group, idx) => (\n <React.Fragment key={group.resourceId}>\n {idx > 0 && <CommandSeparator/>}\n <CommandGroup heading={group.resourceName}>\n {group.records.map((hit) => (\n <CommandItem\n key={`${hit.resourceId}:${hit.recordId}`}\n value={`${hit.resourceId}:${hit.recordId} ${hit.title} ${hit.snippet ?? ''}`}\n onSelect={() => handleSelect(hit.resourceId, hit.recordId)}\n className=\"flex-col items-start gap-0.5\"\n >\n <div className=\"flex w-full items-baseline gap-2\">\n <span className=\"flex-1 truncate font-medium\">\n {highlightMatch(hit.title, debounced)}\n </span>\n {hit.matchedField && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {t('globalSearch:matchedIn').replace('{field}', hit.matchedField)}\n </span>\n )}\n </div>\n {hit.snippet && (\n <div className=\"line-clamp-1 text-xs text-muted-foreground\">\n {highlightMatch(hit.snippet, debounced)}\n </div>\n )}\n </CommandItem>\n ))}\n {/* `forceMount` keeps this row visible regardless of the current\n query — cmdk's default fuzzy filter would otherwise drop it\n because the value `${id}:show-all` rarely contains the typed\n needle. */}\n <CommandItem\n key={`${group.resourceId}:show-all`}\n value={`${group.resourceId}:show-all`}\n forceMount\n onSelect={() => handleShowAll(group.resourceId)}\n className=\"text-xs text-muted-foreground\"\n >\n <ArrowRight className=\"mr-2 size-3.5\" aria-hidden=\"true\" />\n {t('globalSearch:showAllIn').replace('{resource}', group.resourceName)}\n </CommandItem>\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"global-search-dialog-DxwxFDO5.js","names":[],"sources":["../../../../react/src/components/global-search-dialog.tsx"],"sourcesContent":["// Cross-resource command palette. Backed by `useGlobalSearch`, which fans\n// the query out to every registered resource's `search` action server-side.\n// Results are grouped by resource; selecting an entry navigates to the\n// record's show page and closes the palette.\n//\n// Designed as a controlled component — the parent (typically the header)\n// holds the `open` state so it can pair the trigger button with the\n// `mod+k` hotkey.\n\nimport * as React from 'react'\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n DialogDescription,\n DialogTitle,\n} from '@modern-admin/ui'\nimport { AlertTriangle, ArrowRight, Clock, Loader2, X } from 'lucide-react'\nimport { useGlobalSearch } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { useNavigate } from '../router.js'\n\nconst DEBOUNCE_MS = 300\nconst RECENT_STORAGE_KEY = 'modern-admin:global-search:recent:v1'\nconst RECENT_MAX = 6\n\nexport interface GlobalSearchDialogProps {\n open: boolean\n\n onOpenChange(open: boolean): void\n}\n\nconst readRecent = (): string[] => {\n if (typeof window === 'undefined') return []\n try {\n const raw = window.localStorage.getItem(RECENT_STORAGE_KEY)\n if (!raw) return []\n const parsed = JSON.parse(raw) as unknown\n if (!Array.isArray(parsed)) return []\n return parsed.filter((v): v is string => typeof v === 'string').slice(0, RECENT_MAX)\n } catch {\n return []\n }\n}\n\nconst writeRecent = (entries: string[]): void => {\n if (typeof window === 'undefined') return\n try {\n window.localStorage.setItem(RECENT_STORAGE_KEY, JSON.stringify(entries.slice(0, RECENT_MAX)))\n } catch {\n /* quota exceeded — recent list is best-effort */\n }\n}\n\n/**\n * Highlight every case-insensitive occurrence of `needle` in `text` with\n * `<mark>`. Returns an array of React nodes ready to render inside any\n * inline container. Empty `needle` falls back to the raw string.\n */\nconst highlightMatch = (text: string, needle: string): React.ReactNode => {\n if (!needle) return text\n const lower = text.toLowerCase()\n const target = needle.toLowerCase()\n const nodes: React.ReactNode[] = []\n let cursor = 0\n let key = 0\n while (cursor < text.length) {\n const idx = lower.indexOf(target, cursor)\n if (idx === -1) {\n nodes.push(text.slice(cursor))\n break\n }\n if (idx > cursor) nodes.push(text.slice(cursor, idx))\n nodes.push(\n <mark\n key={key++}\n className=\"rounded-sm bg-primary/20 px-0.5 text-foreground\"\n >\n {text.slice(idx, idx + target.length)}\n </mark>,\n )\n cursor = idx + target.length\n }\n return nodes\n}\n\nexport function GlobalSearchDialog({\n open,\n onOpenChange,\n}: GlobalSearchDialogProps): React.ReactElement {\n const { t } = useI18n()\n const navigate = useNavigate()\n const [query, setQuery] = React.useState('')\n const [debounced, setDebounced] = React.useState('')\n const [recent, setRecent] = React.useState<string[]>(() => readRecent())\n\n // Reset query each time the dialog opens so it starts empty, and rehydrate\n // the recent list (other tabs may have appended entries while we were idle).\n React.useEffect(() => {\n if (open) {\n setQuery('')\n setDebounced('')\n setRecent(readRecent())\n }\n }, [open])\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => setDebounced(query.trim()), DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n }, [query])\n\n const { data, isFetching, isError } = useGlobalSearch(debounced, open)\n\n // Capture the most recent successful query so it's available for the\n // \"recent\" list. We only persist on user-driven navigation (not every\n // keystroke) to keep the list signal-to-noise high.\n const persistRecent = React.useCallback((value: string): void => {\n if (!value) return\n setRecent((prev) => {\n const next = [value, ...prev.filter((q) => q !== value)].slice(0, RECENT_MAX)\n writeRecent(next)\n return next\n })\n }, [])\n\n const groups = data?.groups ?? []\n const hasQuery = debounced.length > 0\n const showEmpty = hasQuery && !isFetching && !isError && groups.length === 0\n\n const handleSelect = React.useCallback(\n (resourceId: string, recordId: string): void => {\n persistRecent(debounced)\n onOpenChange(false)\n navigate({ name: 'show', resourceId, recordId })\n },\n [debounced, navigate, onOpenChange, persistRecent],\n )\n\n const handleShowAll = React.useCallback(\n (resourceId: string): void => {\n persistRecent(debounced)\n onOpenChange(false)\n navigate({ name: 'list', resourceId })\n },\n [debounced, navigate, onOpenChange, persistRecent],\n )\n\n const handlePickRecent = React.useCallback((value: string): void => {\n setQuery(value)\n setDebounced(value)\n }, [])\n\n const handleClearRecent = React.useCallback((): void => {\n setRecent([])\n writeRecent([])\n }, [])\n\n return (\n <CommandDialog open={open} onOpenChange={onOpenChange}>\n {/* Visually-hidden title + description keep Radix Dialog accessibility\n warnings quiet and provide a label for screen readers. */}\n <DialogTitle className=\"sr-only\">{t('globalSearch:title')}</DialogTitle>\n <DialogDescription className=\"sr-only\">\n {t('globalSearch:description')}\n </DialogDescription>\n <CommandInput\n placeholder={t('globalSearch:placeholder')}\n value={query}\n onValueChange={setQuery}\n />\n {/* cmdk dedupes by item value — prefix each value with `resourceId:recordId`\n so identical record ids across resources keep distinct entries.\n shouldFilter is left on (default) so cmdk re-orders by relevance against\n the typed query — server already narrowed the set down. */}\n <CommandList>\n {!hasQuery && recent.length === 0 && (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('globalSearch:hint')}\n </div>\n )}\n {!hasQuery && recent.length > 0 && (\n <CommandGroup\n heading={\n <span className=\"flex items-center justify-between gap-2\">\n <span>{t('globalSearch:recent')}</span>\n <button\n type=\"button\"\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n onClick={handleClearRecent}\n >\n <X className=\"mr-1 inline size-3\" aria-hidden=\"true\" />\n {t('globalSearch:clearRecent')}\n </button>\n </span>\n }\n >\n {recent.map((entry) => (\n <CommandItem\n key={`recent:${entry}`}\n value={`recent:${entry}`}\n onSelect={() => handlePickRecent(entry)}\n >\n <Clock className=\"mr-2 size-4 text-muted-foreground\" aria-hidden=\"true\" />\n <span className=\"flex-1 truncate\">{entry}</span>\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n {hasQuery && isError && (\n <div\n className=\"flex items-center justify-center gap-2 py-6 text-sm text-destructive\"\n role=\"alert\"\n >\n <AlertTriangle className=\"size-4\" aria-hidden=\"true\" />\n <span>{t('globalSearch:error')}</span>\n </div>\n )}\n {showEmpty && <CommandEmpty>{t('globalSearch:noResults')}</CommandEmpty>}\n {hasQuery && !isError && isFetching && groups.length === 0 && (\n <div\n className=\"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Loader2 className=\"size-4 animate-spin\" aria-hidden=\"true\"/>\n <span>{t('common:loading')}</span>\n </div>\n )}\n {groups.map((group, idx) => (\n <React.Fragment key={group.resourceId}>\n {idx > 0 && <CommandSeparator/>}\n <CommandGroup heading={group.resourceName}>\n {group.records.map((hit) => (\n <CommandItem\n key={`${hit.resourceId}:${hit.recordId}`}\n value={`${hit.resourceId}:${hit.recordId} ${hit.title} ${hit.snippet ?? ''}`}\n onSelect={() => handleSelect(hit.resourceId, hit.recordId)}\n className=\"flex-col items-start gap-0.5\"\n >\n <div className=\"flex w-full items-baseline gap-2\">\n <span className=\"flex-1 truncate font-medium\">\n {highlightMatch(hit.title, debounced)}\n </span>\n {hit.matchedField && (\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {t('globalSearch:matchedIn').replace('{field}', hit.matchedField)}\n </span>\n )}\n </div>\n {hit.snippet && (\n <div className=\"line-clamp-1 text-xs text-muted-foreground\">\n {highlightMatch(hit.snippet, debounced)}\n </div>\n )}\n </CommandItem>\n ))}\n {/* `forceMount` keeps this row visible regardless of the current\n query — cmdk's default fuzzy filter would otherwise drop it\n because the value `${id}:show-all` rarely contains the typed\n needle. */}\n <CommandItem\n key={`${group.resourceId}:show-all`}\n value={`${group.resourceId}:show-all`}\n forceMount\n onSelect={() => handleShowAll(group.resourceId)}\n className=\"text-xs text-muted-foreground\"\n >\n <ArrowRight className=\"mr-2 size-3.5\" aria-hidden=\"true\" />\n {t('globalSearch:showAllIn').replace('{resource}', group.resourceName)}\n </CommandItem>\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n )\n}\n"],"mappings":"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"}
|