@shapio/cms 0.4.0 → 0.4.1
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/admin/assets/{AssetTile-C-Mu0BRF.js → AssetTile-CoNClUYS.js} +2 -2
- package/dist/admin/assets/{AssetTile-C-Mu0BRF.js.map → AssetTile-CoNClUYS.js.map} +1 -1
- package/dist/admin/assets/{AssistError-B-bnaHhJ.js → AssistError-BoejyShH.js} +2 -2
- package/dist/admin/assets/{AssistError-B-bnaHhJ.js.map → AssistError-BoejyShH.js.map} +1 -1
- package/dist/admin/assets/{BlockMenuItems-Dn9WULjL.js → BlockMenuItems-B2Jugisa.js} +2 -2
- package/dist/admin/assets/{BlockMenuItems-Dn9WULjL.js.map → BlockMenuItems-B2Jugisa.js.map} +1 -1
- package/dist/admin/assets/{Body-C0SwduLi.js → Body-D3GwLGaB.js} +2 -2
- package/dist/admin/assets/{Body-C0SwduLi.js.map → Body-D3GwLGaB.js.map} +1 -1
- package/dist/admin/assets/Builder-CmT5-8hI.js +2 -0
- package/dist/admin/assets/Builder-CmT5-8hI.js.map +1 -0
- package/dist/admin/assets/{ConfirmDialog-BfpN2MQx.js → ConfirmDialog-HS8Gc2t3.js} +2 -2
- package/dist/admin/assets/{ConfirmDialog-BfpN2MQx.js.map → ConfirmDialog-HS8Gc2t3.js.map} +1 -1
- package/dist/admin/assets/{CopyButton-Dxbzp7hC.js → CopyButton-DS-bAA23.js} +2 -2
- package/dist/admin/assets/{CopyButton-Dxbzp7hC.js.map → CopyButton-DS-bAA23.js.map} +1 -1
- package/dist/admin/assets/{CursorPager-DkZs6rPg.js → CursorPager-C6PyD3wE.js} +2 -2
- package/dist/admin/assets/{CursorPager-DkZs6rPg.js.map → CursorPager-C6PyD3wE.js.map} +1 -1
- package/dist/admin/assets/{FocalPoint-r1MG_y-r.js → FocalPoint-C62fRhmM.js} +2 -2
- package/dist/admin/assets/{FocalPoint-r1MG_y-r.js.map → FocalPoint-C62fRhmM.js.map} +1 -1
- package/dist/admin/assets/{Form-D8vp4Kd_.js → Form-CLEr5Csd.js} +2 -2
- package/dist/admin/assets/{Form-D8vp4Kd_.js.map → Form-CLEr5Csd.js.map} +1 -1
- package/dist/admin/assets/{FormCheckboxGroup-8ObPh9cH.js → FormCheckboxGroup-BrXY6qBg.js} +2 -2
- package/dist/admin/assets/{FormCheckboxGroup-8ObPh9cH.js.map → FormCheckboxGroup-BrXY6qBg.js.map} +1 -1
- package/dist/admin/assets/{FormRadioGroup-CAB3qzVS.js → FormRadioGroup-BjE1Jhar.js} +2 -2
- package/dist/admin/assets/{FormRadioGroup-CAB3qzVS.js.map → FormRadioGroup-BjE1Jhar.js.map} +1 -1
- package/dist/admin/assets/{FormSelectField-C7hE05Wq.js → FormSelectField-g4zrUlhv.js} +2 -2
- package/dist/admin/assets/{FormSelectField-C7hE05Wq.js.map → FormSelectField-g4zrUlhv.js.map} +1 -1
- package/dist/admin/assets/{FormSwitchField-7EEYkGOH.js → FormSwitchField-gciThNGV.js} +2 -2
- package/dist/admin/assets/{FormSwitchField-7EEYkGOH.js.map → FormSwitchField-gciThNGV.js.map} +1 -1
- package/dist/admin/assets/{FormTextareaField-BasuRoXW.js → FormTextareaField-tsS-UXym.js} +2 -2
- package/dist/admin/assets/{FormTextareaField-BasuRoXW.js.map → FormTextareaField-tsS-UXym.js.map} +1 -1
- package/dist/admin/assets/{HintedLabel-BDV81kIT.js → HintedLabel-CVe-PIyv.js} +2 -2
- package/dist/admin/assets/{HintedLabel-BDV81kIT.js.map → HintedLabel-CVe-PIyv.js.map} +1 -1
- package/dist/admin/assets/{InfoHint-DWn9kLf1.js → InfoHint-DtaHU1Cg.js} +2 -2
- package/dist/admin/assets/{InfoHint-DWn9kLf1.js.map → InfoHint-DtaHU1Cg.js.map} +1 -1
- package/dist/admin/assets/{InsertMenuItem-DhJk5BeH.js → InsertMenuItem-DlzaD9zr.js} +2 -2
- package/dist/admin/assets/{InsertMenuItem-DhJk5BeH.js.map → InsertMenuItem-DlzaD9zr.js.map} +1 -1
- package/dist/admin/assets/{Match-Zu4pwfCC.js → Match-ErAxnNAY.js} +2 -2
- package/dist/admin/assets/{Match-Zu4pwfCC.js.map → Match-ErAxnNAY.js.map} +1 -1
- package/dist/admin/assets/{QueryView-Cu-KPtQI.js → QueryView-C630REML.js} +2 -2
- package/dist/admin/assets/{QueryView-Cu-KPtQI.js.map → QueryView-C630REML.js.map} +1 -1
- package/dist/admin/assets/{RadioTile-Ci0LucKI.js → RadioTile-CD4mel7U.js} +2 -2
- package/dist/admin/assets/{RadioTile-Ci0LucKI.js.map → RadioTile-CD4mel7U.js.map} +1 -1
- package/dist/admin/assets/{RichTextField-BcYOFkeW.js → RichTextField-CxeVX6C-.js} +2 -2
- package/dist/admin/assets/{RichTextField-BcYOFkeW.js.map → RichTextField-CxeVX6C-.js.map} +1 -1
- package/dist/admin/assets/{RowTitle-BdDgA5Lb.js → RowTitle-B-7RptyN.js} +2 -2
- package/dist/admin/assets/{RowTitle-BdDgA5Lb.js.map → RowTitle-B-7RptyN.js.map} +1 -1
- package/dist/admin/assets/{SecretReveal-ai1uMW_b.js → SecretReveal-Dhw_dYxe.js} +2 -2
- package/dist/admin/assets/{SecretReveal-ai1uMW_b.js.map → SecretReveal-Dhw_dYxe.js.map} +1 -1
- package/dist/admin/assets/{SharedGlyph-y6ZsA_gz.js → SharedGlyph-97RaO6Bh.js} +2 -2
- package/dist/admin/assets/{SharedGlyph-y6ZsA_gz.js.map → SharedGlyph-97RaO6Bh.js.map} +1 -1
- package/dist/admin/assets/{StepList-xmD9CPZl.js → StepList--0Fiqsq-.js} +2 -2
- package/dist/admin/assets/{StepList-xmD9CPZl.js.map → StepList--0Fiqsq-.js.map} +1 -1
- package/dist/admin/assets/Structure-CoO3iah3.js +2 -0
- package/dist/admin/assets/{Structure-DGt-TDk5.js.map → Structure-CoO3iah3.js.map} +1 -1
- package/dist/admin/assets/{SuggestAltButton-D1-v_0wB.js → SuggestAltButton-Dlyxoypu.js} +2 -2
- package/dist/admin/assets/{SuggestAltButton-D1-v_0wB.js.map → SuggestAltButton-Dlyxoypu.js.map} +1 -1
- package/dist/admin/assets/{Thumbnail-cjA7fSWh.js → Thumbnail-BUYOr4XJ.js} +2 -2
- package/dist/admin/assets/{Thumbnail-cjA7fSWh.js.map → Thumbnail-BUYOr4XJ.js.map} +1 -1
- package/dist/admin/assets/{UnsavedChangesGuard-B57D0278.js → UnsavedChangesGuard-BfzHgUkF.js} +2 -2
- package/dist/admin/assets/{UnsavedChangesGuard-B57D0278.js.map → UnsavedChangesGuard-BfzHgUkF.js.map} +1 -1
- package/dist/admin/assets/{UserAvatar--pMv2i3c.js → UserAvatar-DNOWhSWS.js} +2 -2
- package/dist/admin/assets/{UserAvatar--pMv2i3c.js.map → UserAvatar-DNOWhSWS.js.map} +1 -1
- package/dist/admin/assets/{badge-C5oMRtwJ.js → badge-lJ4Ih_Zn.js} +2 -2
- package/dist/admin/assets/{badge-C5oMRtwJ.js.map → badge-lJ4Ih_Zn.js.map} +1 -1
- package/dist/admin/assets/{changeSets-CObZV8H2.js → changeSets-JmSyu3tu.js} +2 -2
- package/dist/admin/assets/{changeSets-CObZV8H2.js.map → changeSets-JmSyu3tu.js.map} +1 -1
- package/dist/admin/assets/{constants-DT4WPUvz.js → constants-ahk0YSYl.js} +2 -2
- package/dist/admin/assets/{constants-DT4WPUvz.js.map → constants-ahk0YSYl.js.map} +1 -1
- package/dist/admin/assets/content-DcvNzKGe.js +3 -0
- package/dist/admin/assets/content-DcvNzKGe.js.map +1 -0
- package/dist/admin/assets/{contentTypes-ArLEfM29.js → contentTypes-YAd-AzOF.js} +2 -2
- package/dist/admin/assets/{contentTypes-ArLEfM29.js.map → contentTypes-YAd-AzOF.js.map} +1 -1
- package/dist/admin/assets/{develop-DvKYqVeK.js → develop-DYwiTd6R.js} +3 -3
- package/dist/admin/assets/{develop-DvKYqVeK.js.map → develop-DYwiTd6R.js.map} +1 -1
- package/dist/admin/assets/{dropdown-menu-DPzDthV7.js → dropdown-menu-DiYSm-g3.js} +2 -2
- package/dist/admin/assets/{dropdown-menu-DPzDthV7.js.map → dropdown-menu-DiYSm-g3.js.map} +1 -1
- package/dist/admin/assets/{fileRoute-sJvv4Ipn.js → fileRoute-CVQpW8cj.js} +2 -2
- package/dist/admin/assets/{fileRoute-sJvv4Ipn.js.map → fileRoute-CVQpW8cj.js.map} +1 -1
- package/dist/admin/assets/{followPlural-tOh6gDgT.js → followPlural-BdqfEe48.js} +2 -2
- package/dist/admin/assets/{followPlural-tOh6gDgT.js.map → followPlural-BdqfEe48.js.map} +1 -1
- package/dist/admin/assets/{inbox-nfR2K7f6.js → inbox-CnzNfqt9.js} +2 -2
- package/dist/admin/assets/{inbox-nfR2K7f6.js.map → inbox-CnzNfqt9.js.map} +1 -1
- package/dist/admin/assets/index-6iVBpUhu.css +2 -0
- package/dist/admin/assets/index-D9KL7arJ.js +4 -0
- package/dist/admin/assets/index-D9KL7arJ.js.map +1 -0
- package/dist/admin/assets/{media-BzivlEh2.js → media-Cs9LCQcz.js} +2 -2
- package/dist/admin/assets/{media-BzivlEh2.js.map → media-Cs9LCQcz.js.map} +1 -1
- package/dist/admin/assets/{network-Cj04CpFi.js → network-DS8MW3AZ.js} +2 -2
- package/dist/admin/assets/{network-Cj04CpFi.js.map → network-DS8MW3AZ.js.map} +1 -1
- package/dist/admin/assets/{publishing-ChHkrwvr.js → publishing-C4YQ4XKt.js} +2 -2
- package/dist/admin/assets/{publishing-ChHkrwvr.js.map → publishing-C4YQ4XKt.js.map} +1 -1
- package/dist/admin/assets/{radio-group-DSK5LPaM.js → radio-group-zOsGAYRP.js} +2 -2
- package/dist/admin/assets/{radio-group-DSK5LPaM.js.map → radio-group-zOsGAYRP.js.map} +1 -1
- package/dist/admin/assets/{searchSchemas-BdwAFaVO.js → searchSchemas-BCRZ1jyL.js} +2 -2
- package/dist/admin/assets/{searchSchemas-BdwAFaVO.js.map → searchSchemas-BCRZ1jyL.js.map} +1 -1
- package/dist/admin/assets/{sections-iNOzo7pL.js → sections-v5Flaor9.js} +2 -2
- package/dist/admin/assets/{sections-iNOzo7pL.js.map → sections-v5Flaor9.js.map} +1 -1
- package/dist/admin/assets/{select-DyD7qIkJ.js → select-CpHp3YOH.js} +2 -2
- package/dist/admin/assets/{select-DyD7qIkJ.js.map → select-CpHp3YOH.js.map} +1 -1
- package/dist/admin/assets/{seo-uMm2fGPB.js → seo-1n9s7YuX.js} +2 -2
- package/dist/admin/assets/{seo-uMm2fGPB.js.map → seo-1n9s7YuX.js.map} +1 -1
- package/dist/admin/assets/{settings-CJVORrIV.js → settings-CuEO5l07.js} +2 -2
- package/dist/admin/assets/{settings-CJVORrIV.js.map → settings-CuEO5l07.js.map} +1 -1
- package/dist/admin/assets/{skeleton-B5GJgv7y.js → skeleton-DElTumgk.js} +2 -2
- package/dist/admin/assets/skeleton-DElTumgk.js.map +1 -0
- package/dist/admin/assets/src-Be3Ds5Dc.js +4 -0
- package/dist/admin/assets/src-Be3Ds5Dc.js.map +1 -0
- package/dist/admin/assets/{switch-DbIrjP3h.js → switch-CijNGYkG.js} +2 -2
- package/dist/admin/assets/{switch-DbIrjP3h.js.map → switch-CijNGYkG.js.map} +1 -1
- package/dist/admin/assets/tabs-CSqGW9Du.js +5 -0
- package/dist/admin/assets/tabs-CSqGW9Du.js.map +1 -0
- package/dist/admin/assets/{theme-C0Tv6M38.js → theme-CHHVK8Ps.js} +2 -2
- package/dist/admin/assets/{theme-C0Tv6M38.js.map → theme-CHHVK8Ps.js.map} +1 -1
- package/dist/admin/assets/{titles-uL13bpi8.js → titles-CQYc9nDQ.js} +2 -2
- package/dist/admin/assets/{titles-uL13bpi8.js.map → titles-CQYc9nDQ.js.map} +1 -1
- package/dist/admin/assets/{tooltip-BK5FqmJ0.js → tooltip-BXqFQv9N.js} +2 -2
- package/dist/admin/assets/{tooltip-BK5FqmJ0.js.map → tooltip-BXqFQv9N.js.map} +1 -1
- package/dist/admin/assets/{useContentSchema-BCdLYsKa.js → useContentSchema-Cvtes34f.js} +2 -2
- package/dist/admin/assets/{useContentSchema-BCdLYsKa.js.map → useContentSchema-Cvtes34f.js.map} +1 -1
- package/dist/admin/assets/{useDiscardGuard-CGFgC3xY.js → useDiscardGuard-BAEGkGK9.js} +2 -2
- package/dist/admin/assets/{useDiscardGuard-CGFgC3xY.js.map → useDiscardGuard-BAEGkGK9.js.map} +1 -1
- package/dist/admin/assets/{useMediaPickerDialog-BOkGEyG7.js → useMediaPickerDialog-CiN_pias.js} +2 -2
- package/dist/admin/assets/{useMediaPickerDialog-BOkGEyG7.js.map → useMediaPickerDialog-CiN_pias.js.map} +1 -1
- package/dist/admin/assets/{useMediaUploader-D1ouV8jc.js → useMediaUploader-CapEHBIt.js} +2 -2
- package/dist/admin/assets/{useMediaUploader-D1ouV8jc.js.map → useMediaUploader-CapEHBIt.js.map} +1 -1
- package/dist/admin/assets/usePaletteItems-wpn3ms6o.js +2 -0
- package/dist/admin/assets/usePaletteItems-wpn3ms6o.js.map +1 -0
- package/dist/admin/assets/{useResolvedScheme-D0moXjaP.js → useResolvedScheme-i1EwGHuF.js} +2 -2
- package/dist/admin/assets/{useResolvedScheme-D0moXjaP.js.map → useResolvedScheme-i1EwGHuF.js.map} +1 -1
- package/dist/admin/assets/{zod-CS0EvbwG.js → zod-79xzBIrW.js} +2 -2
- package/dist/admin/assets/{zod-CS0EvbwG.js.map → zod-79xzBIrW.js.map} +1 -1
- package/dist/admin/index.html +27 -27
- package/dist/cli.js +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{public-BSbOGbK-.d.ts → public-CTK82y3t.d.ts} +2 -1
- package/dist/{worker-i1rY2TIZ.js → worker-BDYDbaea.js} +404 -201
- package/dist/worker-BDYDbaea.js.map +1 -0
- package/package.json +5 -5
- package/dist/admin/assets/Builder-C11yUgu9.js +0 -2
- package/dist/admin/assets/Builder-C11yUgu9.js.map +0 -1
- package/dist/admin/assets/Structure-DGt-TDk5.js +0 -2
- package/dist/admin/assets/content-HvisCB5m.js +0 -3
- package/dist/admin/assets/content-HvisCB5m.js.map +0 -1
- package/dist/admin/assets/index-Bbb2ER3l.css +0 -2
- package/dist/admin/assets/index-C6FrF34G.js +0 -4
- package/dist/admin/assets/index-C6FrF34G.js.map +0 -1
- package/dist/admin/assets/skeleton-B5GJgv7y.js.map +0 -1
- package/dist/admin/assets/src-B2qcqjNM.js +0 -4
- package/dist/admin/assets/src-B2qcqjNM.js.map +0 -1
- package/dist/admin/assets/tabs-BJhfL-lw.js +0 -5
- package/dist/admin/assets/tabs-BJhfL-lw.js.map +0 -1
- package/dist/admin/assets/usePaletteItems-neKzBlys.js +0 -2
- package/dist/admin/assets/usePaletteItems-neKzBlys.js.map +0 -1
- package/dist/worker-i1rY2TIZ.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{D as e,T as t}from"./auth-YVfK3SxF.js";import{M as n,j as r}from"./badge-
|
|
2
|
-
//# sourceMappingURL=fileRoute-
|
|
1
|
+
import{D as e,T as t}from"./auth-YVfK3SxF.js";import{M as n,j as r}from"./badge-lJ4Ih_Zn.js";import{a as i,c as a,o,s}from"./RowTitle-B-7RptyN.js";var c=class{constructor(c){this.useMatch=e=>n({...e,from:this.options.id}),this.useRouteContext=e=>i({...e,from:this.options.id}),this.useSearch=e=>o({...e,from:this.options.id}),this.useParams=e=>r({...e,from:this.options.id}),this.useLoaderDeps=e=>s({...e,from:this.options.id}),this.useLoaderData=e=>a({...e,from:this.options.id}),this.useNavigate=()=>t({from:e().routesById[this.options.id].fullPath}),this.options=c}};function l(e){return t=>new c({id:e,...t})}export{l as t};
|
|
2
|
+
//# sourceMappingURL=fileRoute-CVQpW8cj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileRoute-
|
|
1
|
+
{"version":3,"file":"fileRoute-CVQpW8cj.js","names":["useRouter","useNavigate","useMatch","useParams","useRouteContext","useLoaderData","LazyRoute","opts","useSearch","useLoaderDeps","createLazyRoute"],"sources":["../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/fileRoute.js"],"sourcesContent":["import { useRouter } from \"./useRouter.js\";\nimport { useMatch } from \"./useMatch.js\";\nimport { useLoaderData } from \"./useLoaderData.js\";\nimport { useLoaderDeps } from \"./useLoaderDeps.js\";\nimport { useParams } from \"./useParams.js\";\nimport { useSearch } from \"./useSearch.js\";\nimport { useNavigate } from \"./useNavigate.js\";\nimport { useRouteContext } from \"./useRouteContext.js\";\nimport { createRoute } from \"./route.js\";\n//#region src/fileRoute.ts\n/**\n* Creates a file-based Route factory for a given path.\n*\n* Used by TanStack Router's file-based routing to associate a file with a\n* route. The returned function accepts standard route options. In normal usage\n* the `path` string is inserted and maintained by the `tsr` generator.\n*\n* @param path File path literal for the route (usually auto-generated).\n* @returns A function that accepts Route options and returns a Route instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createFileRouteFunction\n*/\nfunction createFileRoute(path) {\n\treturn (options) => {\n\t\tconst route = createRoute(options);\n\t\troute.isRoot = false;\n\t\treturn route;\n\t};\n}\n/** \n@deprecated It's no longer recommended to use the `FileRoute` class directly.\nInstead, use `createFileRoute('/path/to/file')(options)` to create a file route.\n*/\nvar FileRoute = class {\n\tconstructor(path, _opts) {\n\t\tthis.path = path;\n\t\tthis.createRoute = (options) => {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (!this.silent) console.warn(\"Warning: FileRoute is deprecated and will be removed in the next major version. Use the createFileRoute(path)(options) function instead.\");\n\t\t\t}\n\t\t\tconst route = createRoute(options);\n\t\t\troute.isRoot = false;\n\t\t\treturn route;\n\t\t};\n\t\tthis.silent = _opts?.silent;\n\t}\n};\n/**\n@deprecated It's recommended not to split loaders into separate files.\nInstead, place the loader function in the main route file via `createFileRoute`.\n*/\nfunction FileRouteLoader(_path) {\n\tif (process.env.NODE_ENV !== \"production\") console.warn(`Warning: FileRouteLoader is deprecated and will be removed in the next major version. Please place the loader function in the main route file, inside the \\`createFileRoute('/path/to/file')(options)\\` options`);\n\treturn (loaderFn) => loaderFn;\n}\nvar LazyRoute = class {\n\tconstructor(opts) {\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.options.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: useRouter().routesById[this.options.id].fullPath });\n\t\t};\n\t\tthis.options = opts;\n\t}\n};\n/**\n* Creates a lazily-configurable code-based route stub by ID.\n*\n* Use this for code-splitting with code-based routes. The returned function\n* accepts only non-critical route options like `component`, `pendingComponent`,\n* `errorComponent`, and `notFoundComponent` which are applied when the route\n* is matched.\n*\n* @param id Route ID string literal to associate with the lazy route.\n* @returns A function that accepts lazy route options and returns a `LazyRoute`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createLazyRouteFunction\n*/\nfunction createLazyRoute(id) {\n\treturn (opts) => {\n\t\treturn new LazyRoute({\n\t\t\tid,\n\t\t\t...opts\n\t\t});\n\t};\n}\n/**\n* Creates a lazily-configurable file-based route stub by file path.\n*\n* Use this for code-splitting with file-based routes (eg. `.lazy.tsx` files).\n* The returned function accepts only non-critical route options like\n* `component`, `pendingComponent`, `errorComponent`, and `notFoundComponent`.\n*\n* @param id File path literal for the route file.\n* @returns A function that accepts lazy route options and returns a `LazyRoute`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createLazyFileRouteFunction\n*/\nfunction createLazyFileRoute(id) {\n\tif (typeof id === \"object\") return new LazyRoute(id);\n\treturn (opts) => new LazyRoute({\n\t\tid,\n\t\t...opts\n\t});\n}\n//#endregion\nexport { FileRoute, FileRouteLoader, LazyRoute, createFileRoute, createLazyFileRoute, createLazyRoute };\n\n//# sourceMappingURL=fileRoute.js.map"],"ignoreList":[0],"mappings":"mJAsDA,IAAIM,EAAY,KAAM,CACrB,YAAY,EAAM,CACjB,KAAK,SAAY,GACTJ,EAAS,CACf,GAAGK,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,gBAAmB,GAChBH,EAAgB,CACtB,GAAGG,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,UAAa,GACVC,EAAU,CAChB,GAAGD,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,UAAa,GACVJ,EAAU,CAChB,GAAGI,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,cAAiB,GACdE,EAAc,CACpB,GAAGF,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,cAAiB,GACdF,EAAc,CACpB,GAAGE,EACH,KAAM,KAAK,QAAQ,EACpB,CAAC,EAEF,KAAK,gBACGN,EAAY,CAAE,KAAMD,EAAU,CAAC,CAAC,WAAW,KAAK,QAAQ,GAAG,CAAC,QAAS,CAAC,EAE9E,KAAK,QAAUO,CAChB,CACD,EAaA,SAASG,EAAgB,EAAI,CAC5B,MAAQ,IACA,IAAIJ,EAAU,CACpB,KACA,GAAGC,CACJ,CAAC,CAEH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./jsx-runtime-DREnUpxT.js";import{j as n}from"./cn-CL1YHRrS.js";import{A as r}from"./badge-
|
|
2
|
-
//# sourceMappingURL=followPlural-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./jsx-runtime-DREnUpxT.js";import{j as n}from"./cn-CL1YHRrS.js";import{A as r}from"./badge-lJ4Ih_Zn.js";import{v as i}from"./src-Be3Ds5Dc.js";import{M as a,N as o}from"./skeleton-DElTumgk.js";import{a as s,o as c,s as l}from"./ConfirmDialog-HS8Gc2t3.js";import{d as u}from"./schema-B7L9OJrX.js";var d=()=>{let e=u();return{locked:e.data?.readOnly??!1,reason:e.data?.readOnlyReason??null}},f=e(t(),1),p=({reason:e})=>{let{t}=n();return(0,f.jsxs)(s,{variant:`warning`,children:[(0,f.jsx)(r,{"aria-hidden":`true`}),(0,f.jsx)(l,{children:t(`models.lock.title`)}),(0,f.jsxs)(c,{children:[(0,f.jsx)(`p`,{children:t(`models.lock.description`)}),e?(0,f.jsx)(`p`,{children:t(`models.lock.reason`,{reason:e})}):null]})]})},m=e=>Object.hasOwn(a.models.issues,e),h=new Set([`API_KEY_COLLISION`,`API_KEY_TAKEN`]),g=e=>e.siteKey&&h.has(e.code)?o.t(`models.issues.apiKeyTakenOnSite`,{site:e.siteKey}):m(e.code)?o.t(`models.issues.${e.code}`):e.message,_=e=>{let t=e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).split(/[^A-Za-z0-9]+/).filter(Boolean).map((e,t)=>t>0?e.charAt(0).toUpperCase()+e.slice(1):e===e.toUpperCase()?e.toLowerCase():e.charAt(0).toLowerCase()+e.slice(1)).join(``);return(/^[0-9]/.test(t)?`_${t}`:t).slice(0,64)},v=(e,t,n)=>n===void 0||n===``||n===i(e)?i(t):n;export{d as a,p as i,_ as n,g as r,v as t};
|
|
2
|
+
//# sourceMappingURL=followPlural-BdqfEe48.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followPlural-
|
|
1
|
+
{"version":3,"file":"followPlural-BdqfEe48.js","names":["en","i18next","__toESM","useTranslation","Lock","suggestPlural","translation_default","instance","Alert","AlertDescription","AlertTitle","useSchemaSettings","useSchemaLock","settings","import_jsx_runtime","require_jsx_runtime","LockNotice","reason","isKnownCode","code","TAKEN_CODES","describeIssue","issue","deriveApiKey","key","label","index","word","followPlural","currentPlural","previousApiKey","nextApiKey"],"sources":["../../src/features/Models/hooks/useSchemaLock.ts","../../src/features/Models/LockNotice/index.tsx","../../src/features/Models/helpers/describeIssue.ts","../../src/features/Models/helpers/deriveApiKey.ts","../../src/features/Models/helpers/followPlural.ts"],"sourcesContent":["import { useSchemaSettings } from '@/api/schema';\n\n/**\n * The opt-in read-only lock (ADR 0002). While it is on, the server refuses model changes from the admin\n * (423 SCHEMA_READ_ONLY), so the builder disables editing and says why.\n */\nexport const useSchemaLock = () => {\n const settings = useSchemaSettings();\n return {\n locked: settings.data?.readOnly ?? false,\n reason: settings.data?.readOnlyReason ?? null,\n };\n};\n","import { Lock } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';\n\ntype LockNoticeProps = { reason: string | null };\n\n/** Why schema editing is disabled on this instance, and where changes come from instead. */\nexport const LockNotice = ({ reason }: LockNoticeProps) => {\n const { t } = useTranslation();\n return (\n <Alert variant=\"warning\">\n <Lock aria-hidden=\"true\" />\n <AlertTitle>{t('models.lock.title')}</AlertTitle>\n <AlertDescription>\n <p>{t('models.lock.description')}</p>\n {reason ? <p>{t('models.lock.reason', { reason })}</p> : null}\n </AlertDescription>\n </Alert>\n );\n};\n","import { i18next } from '@/app/i18n';\nimport en from '@/locales/en/translation.json';\n\ntype IssueCode = keyof typeof en.models.issues;\n\nconst isKnownCode = (code: string): code is IssueCode => Object.hasOwn(en.models.issues, code);\n\n/** Codes for an API ID another definition already uses. */\nconst TAKEN_CODES: ReadonlySet<string> = new Set(['API_KEY_COLLISION', 'API_KEY_TAKEN']);\n\n/**\n * A translated message for a schema validation issue, by its stable code (the server's text otherwise). A\n * taken API ID found in a site's view names that site (`siteKey`, sent to every-site admins only).\n */\nexport const describeIssue = (issue: { code: string; message: string; siteKey?: string }): string => {\n if (issue.siteKey && TAKEN_CODES.has(issue.code)) {\n return i18next.t('models.issues.apiKeyTakenOnSite', { site: issue.siteKey });\n }\n return isKnownCode(issue.code) ? i18next.t(`models.issues.${issue.code}`) : issue.message;\n};\n","import { MAX_API_KEY_LENGTH } from '@shapio/schema';\n\n/**\n * Suggests an API key for a label: camelCase ASCII words (`Blog post` → `blogPost`), a leading `_` when the\n * label starts with a digit, at most MAX_API_KEY_LENGTH characters. Validity is still checked by\n * `checkApiKeySyntax`; this only proposes a value the user can edit.\n */\nexport const deriveApiKey = (label: string): string => {\n const words = label\n .normalize('NFKD')\n .replace(/[̀-ͯ]/g, '')\n .split(/[^A-Za-z0-9]+/)\n .filter(Boolean);\n const key = words\n .map((word, index) => {\n if (index > 0) {\n return word.charAt(0).toUpperCase() + word.slice(1);\n }\n // An acronym leading the label reads better fully lower-cased: `SEO title` → `seoTitle`.\n return word === word.toUpperCase() ? word.toLowerCase() : word.charAt(0).toLowerCase() + word.slice(1);\n })\n .join('');\n const prefixed = /^[0-9]/.test(key) ? `_${key}` : key;\n return prefixed.slice(0, MAX_API_KEY_LENGTH);\n};\n","import { suggestPlural } from '@shapio/schema';\n\n/**\n * The plural API ID after the singular changes from `previousApiKey` to `nextApiKey`: it follows the\n * singular (`suggestPlural`) while it is empty or still the plural suggested for the previous singular,\n * and is kept once the user has typed one of their own.\n */\nexport const followPlural = (\n previousApiKey: string,\n nextApiKey: string,\n currentPlural: string | undefined,\n): string => {\n const followsSingular =\n currentPlural === undefined || currentPlural === '' || currentPlural === suggestPlural(previousApiKey);\n return followsSingular ? suggestPlural(nextApiKey) : currentPlural;\n};\n"],"mappings":"wWAMA,IAAaY,MAAsB,CACjC,IAAMC,EAAWF,EAAkB,EACnC,MAAO,CACL,OAAQE,EAAS,MAAM,UAAY,GACnC,OAAQA,EAAS,MAAM,gBAAkB,IAC3C,CACF,aCLaG,GAAc,CAAE,YAA8B,CACzD,GAAM,CAAE,GAAMb,EAAe,EAC7B,OACE,EAAAW,EAAA,KAAA,CAACN,EAAD,CAAO,QAAQ,UAAf,SAAA,EACE,EAAAM,EAAA,IAAA,CAACV,EAAD,CAAM,cAAY,MAAQ,CAAA,GAC1B,EAAAU,EAAA,IAAA,CAACJ,EAAD,CAAA,SAAa,EAAE,mBAAmB,CAAc,CAAA,GAChD,EAAAI,EAAA,KAAA,CAACL,EAAD,CAAA,SAAA,EACE,EAAAK,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAE,yBAAyB,CAAK,CAAA,EACnCG,GAAS,EAAAH,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAE,qBAAsB,CAAE,QAAO,CAAC,CAAK,CAAA,EAAI,IACzC,CAAA,CAAA,CACb,GAEX,ECdMI,EAAe,GAAoC,OAAO,OAAOlB,EAAG,OAAO,OAAQmB,CAAI,EAGvFC,EAAmC,IAAI,IAAI,CAAC,oBAAqB,eAAe,CAAC,EAM1EC,EAAiB,GACxBC,EAAM,SAAWF,EAAY,IAAIE,EAAM,IAAI,EACtCrB,EAAQ,EAAE,kCAAmC,CAAE,KAAMqB,EAAM,OAAQ,CAAC,EAEtEJ,EAAYI,EAAM,IAAI,EAAIrB,EAAQ,EAAE,iBAAiBqB,EAAM,MAAM,EAAIA,EAAM,QCXvEC,EAAgB,GAA0B,CAMrD,IAAMC,EALQC,EACX,UAAU,MAAM,CAAC,CACjB,QAAQ,SAAU,EAAE,CAAC,CACrB,MAAM,eAAe,CAAC,CACtB,OAAO,OACE,CAAA,CACT,KAAK,EAAM,IACNC,EAAQ,EACHC,EAAK,OAAO,CAAC,CAAC,CAAC,YAAY,EAAIA,EAAK,MAAM,CAAC,EAG7CA,IAASA,EAAK,YAAY,EAAIA,EAAK,YAAY,EAAIA,EAAK,OAAO,CAAC,CAAC,CAAC,YAAY,EAAIA,EAAK,MAAM,CAAC,CACtG,CAAC,CACD,KAAK,EAAE,EAEV,OADiB,SAAS,KAAKH,CAAG,EAAI,IAAIA,IAAQA,EAAA,CAClC,MAAM,EAAA,EAAqB,CAC7C,ECjBaI,GACX,EACA,EACA,IAGEC,IAAkB,IAAA,IAAaA,IAAkB,IAAMA,IAAkBxB,EAAcyB,CAAc,EAC9EzB,EAAc0B,CAAU,EAAIF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{H as r,P as i,bt as a,d as o,i as s,j as c,t as l}from"./cn-CL1YHRrS.js";import{l as u}from"./media-5ks_0Rre.js";import{t as d}from"./useQueries-CYfcxI0Q.js";import{C as f,_ as p,o as m,u as ee,x as h}from"./auth-YVfK3SxF.js";import{O as g,_ as te,a as ne,c as re,d as ie,f as ae,i as oe,l as se,m as ce,n as _,o as v,p as le,r as ue,s as y,t as b,u as de,v as x}from"./badge-C5oMRtwJ.js";import{i as S,n as C,t as w}from"./RowTitle-BdDgA5Lb.js";import{t as fe}from"./fileRoute-sJvv4Ipn.js";import{K as pe}from"./src-B2qcqjNM.js";import{D as me,O as T,i as E,k as he,n as ge,r as _e}from"./skeleton-B5GJgv7y.js";import{n as ve}from"./link-2-off-DbZzRN_w.js";import{t as D}from"./boxes-DRvd25_u.js";import{t as ye}from"./calendar-clock-VENf4s1R.js";import{t as be}from"./circle-check-jmRQz1Jq.js";import{c as xe,d as Se,f as O,i as k,l as A,p as j,s as Ce,u as we}from"./snapshots-DkyyrWX3.js";import{n as Te,t as Ee}from"./usePlaces-6iTN15Xy.js";import{t as De}from"./globe-TooNSp9V.js";import{t as Oe}from"./key-round-CFJ61iCd.js";import{t as ke}from"./plus-BDZHQBlU.js";import{t as Ae}from"./scroll-text-BLThe4Ki.js";import{t as je}from"./send-CbP0Rc9_.js";import{t as Me}from"./sparkles-D88gf3vX.js";import{i as M,n as Ne,r as Pe,t as Fe}from"./useAuditLabels-BJF7M5RY.js";import{t as Ie}from"./users-B01EH47o.js";import{t as Le}from"./UserAvatar--pMv2i3c.js";import{t as Re}from"./TextLink-DIqr5zkJ.js";import{s as N}from"./schema-B7L9OJrX.js";import{t as P}from"./QueryView-Cu-KPtQI.js";import{a as ze,o as Be,r as Ve}from"./titles-uL13bpi8.js";import{r as F}from"./locales-oBD0q1pN.js";import{i as He,n as Ue,o as We,r as Ge,s as Ke,t as qe}from"./AssistError-B-bnaHhJ.js";import{t as I}from"./Panel-ClY9b33D.js";import{r as Je}from"./schedules-DXrBSypK.js";import{n as L,t as R}from"./useContentSchema-BCdLYsKa.js";import{t as z}from"./tokens-C-20gLAT.js";import{c as B,t as V}from"./users-BgTNDPXx.js";var Ye=[`altMissing`,`localeMissing`],H={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};H.node;var Xe=s(H),U=e(t(),1),Ze=new Set([`entry`,`model`,`component`,`admin_user`,`app_user`]),Qe=(e,t)=>e.charAt(0).toLocaleLowerCase(t)+e.slice(1),W=e(n(),1),$e=({event:e})=>{let{t,i18n:n}=c(),{actionLabel:r,targetLabel:i}=Fe(),a=e.actorName??e.actorEmail??t(`audit.actorTypes.${e.actorType}`),o=r(e.action),s=e.targetType&&Ze.has(e.targetType)?Ne(e.metadata):void 0,l=e.targetType?i(e.targetType):void 0;return(0,W.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,W.jsx)(Le,{name:a,size:`sm`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsxs)(`p`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1 text-sm`,title:e.action,children:[(0,W.jsx)(`span`,{className:`font-semibold`,children:a}),o?(0,W.jsx)(`span`,{children:Qe(o,n.language)}):(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:e.action}),e.outcome===`failure`?(0,W.jsx)(_,{tone:`danger`,size:`sm`,label:t(`audit.failure`)}):null]}),s?(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:l?t(`home.activityTarget`,{type:l,name:s}):s}):null]}),(0,W.jsx)(`time`,{dateTime:e.occurredAt,title:C(e.occurredAt),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(e.occurredAt)})]})},et=()=>{let{t:e}=c(),t=Pe({limit:8});return(0,W.jsx)(I,{title:e(`home.activity`),flush:!0,actions:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/network/audit-log`,children:e(`home.viewAuditLog`)})}),children:(0,W.jsx)(P,{query:t,loadingRows:4,isEmpty:e=>e.items.length===0,empty:(0,W.jsx)(v,{size:`panel`,icon:Ae,title:e(`home.noActivity`)}),children:e=>(0,W.jsx)(`ul`,{className:`divide-y`,children:e.items.map(e=>(0,W.jsx)($e,{event:e},e.id))})})})},G=()=>{let e=N(`model`);return{query:e,models:(0,U.useMemo)(()=>e.data?.flatMap(({definition:e,version:t})=>pe(e)?[{id:e.id,label:e.label,apiKey:e.apiKey,kind:e.kind,version:t}]:[]).sort((e,t)=>e.label.localeCompare(t.label)),[e.data])}},tt=e=>{let[t]=e;return e.length!==1||!t?f({to:`/content`}):t.kind===`collection`?f({to:`/content/$modelKey/new`,params:{modelKey:t.apiKey}}):f({to:`/content/$modelKey`,params:{modelKey:t.apiKey}})},nt=e=>{let{t}=c(),n=m(`schema.create`),r=m(`media.write`),i=m(`users.manage`);return[...e&&e.length>0?[{key:`entry`,label:t(`home.createEntry`),icon:Te,link:tt(e)}]:[],...n?[{key:`model`,label:t(`home.newModel`),icon:D,link:f({to:`/content/new`})}]:[],...r?[{key:`media`,label:t(`home.uploadMedia`),icon:Xe,link:f({to:`/media`})}]:[],...i?[{key:`invite`,label:t(`home.invite`),icon:M,link:f({to:`/network/users`})}]:[]]},rt={collection:`home.kinds.collection`,singleton:`home.kinds.singleton`},it=({query:e,models:t})=>{let{t:n}=c(),r=m(`schema.create`);return(0,W.jsx)(I,{title:n(`home.models`),flush:!0,actions:t&&t.length>0?(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/content`,children:n(`home.allModels`)})}):null,children:(0,W.jsx)(P,{query:e,loadingRows:3,isEmpty:()=>t?.length===0,empty:(0,W.jsx)(v,{size:`panel`,icon:D,title:n(`home.noModels`),action:r?(0,W.jsx)(E,{asChild:!0,children:(0,W.jsxs)(h,{to:`/content/new`,children:[(0,W.jsx)(ke,{"aria-hidden":`true`}),n(`home.newModel`)]})}):null}),children:()=>(0,W.jsx)(`ul`,{className:`divide-y`,children:t?.slice(0,6).map(e=>(0,W.jsxs)(`li`,{className:`flex h-11 items-center gap-3 px-5`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-2`,children:[(0,W.jsx)(w,{asChild:!0,className:`truncate`,children:(0,W.jsx)(h,{to:`/content/$modelKey`,params:{modelKey:e.apiKey},search:{tab:`structure`},children:e.label})}),(0,W.jsx)(`span`,{className:`truncate font-mono text-xs text-muted-foreground`,children:e.apiKey})]}),(0,W.jsx)(b,{variant:`secondary`,children:n(rt[e.kind])}),(0,W.jsx)(`span`,{className:`w-10 text-right text-meta text-muted-foreground tabular-nums`,children:n(`home.version`,{version:e.version})})]},e.id))})})})},K=({to:e,icon:t,title:n,description:r})=>(0,W.jsxs)(h,{to:e,className:`group flex items-start gap-4 rounded-xl border bg-card p-5 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:t,size:`lg`}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1 font-semibold`,children:[n,(0,W.jsx)(ve,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":`true`})]}),(0,W.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:r})]})]}),at=()=>{let{t:e}=c(),t=B(),n=V();return t.data!==void 0&&t.data.length<=1&&n.data?.length===0?(0,W.jsx)(K,{to:`/network/users`,icon:M,title:e(`home.inviteTeam`),description:e(`home.inviteTeamDescription`)}):null},ot=()=>{let{t:e}=c(),t=z();return t.data!==void 0&&t.data.every(e=>e.revokedAt!==null)?(0,W.jsx)(K,{to:`/settings/api-tokens`,icon:Oe,title:e(`home.createToken`),description:e(`home.createTokenDescription`)}):null},st=()=>{let e=m(`users.manage`),t=m(`tokens.manage`);return(0,W.jsxs)(`div`,{className:`grid gap-4 empty:hidden md:grid-cols-2`,children:[e?(0,W.jsx)(at,{}):null,t?(0,W.jsx)(ot,{}):null]})},ct=({label:e,icon:t,link:n})=>(0,W.jsxs)(h,{...n,className:`group flex items-center gap-3 rounded-lg px-2 py-1.5 text-sm font-semibold outline-none hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:t,size:`sm`}),(0,W.jsx)(`span`,{className:`flex-1`,children:e}),(0,W.jsx)(me,{"aria-hidden":`true`,className:`size-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),lt=({shortcuts:e})=>{let{t}=c();return e.length===0?null:(0,W.jsx)(I,{title:t(`home.shortcuts`),children:(0,W.jsx)(`ul`,{className:`-mx-2 space-y-0.5`,children:e.map(({key:e,label:t,icon:n,link:r})=>(0,W.jsx)(`li`,{children:(0,W.jsx)(ct,{label:t,icon:n,link:r})},e))})})},ut=()=>{let{t:e}=c(),t=(0,U.useId)(),n=m(`audit.read`),r=G(),i=nt(r.models);return(0,W.jsxs)(`section`,{"aria-labelledby":t,className:`space-y-6 pt-2`,children:[(0,W.jsx)(`h2`,{id:t,className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e(`inbox.overview`)}),(0,W.jsx)(st,{}),(0,W.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 space-y-6 xl:col-span-2`,children:[n?(0,W.jsx)(et,{}):null,(0,W.jsx)(it,{...r})]}),(0,W.jsx)(lt,{shortcuts:i})]})]})},q=({label:e,value:t,icon:n,link:r})=>(0,W.jsxs)(h,{...r,className:`flex items-center gap-3 rounded-xl border bg-card px-4 py-4 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:n,size:`md`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-muted-foreground`,children:e}),(0,W.jsx)(`span`,{className:`text-xl leading-7 font-bold tabular-nums`,children:t??`–`})]}),dt=()=>{let{t:e}=c(),t=B();return(0,W.jsx)(q,{label:e(`home.admins`),value:t.data?.length,icon:Ie,link:f({to:`/network/users`})})},ft=({modelCount:e})=>{let{t}=c(),n=F(),r=m(`users.manage`);return(0,W.jsxs)(`div`,{className:l(`grid gap-3 sm:grid-cols-2`,r&&`sm:grid-cols-3`),children:[(0,W.jsx)(q,{label:t(`home.models`),value:e,icon:D,link:f({to:`/content`})}),(0,W.jsx)(q,{label:t(`home.locales`),value:n.data?.length,icon:De,link:f({to:`/settings/locales`})}),r?(0,W.jsx)(dt,{}):null]})},J=({title:e,description:t,action:n,link:r,done:i})=>{let{t:a}=c(),o=(0,U.useId)();return(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 px-5 py-3.5 [counter-increment:step] sm:flex-nowrap`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:l(`flex size-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold tabular-nums`,i?`border-transparent bg-success-muted text-success`:`text-muted-foreground before:content-[counter(step)]`),children:i?(0,W.jsx)(T,{className:`size-4`}):null}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(`p`,{id:o,className:l(`text-sm font-semibold`,i&&`text-muted-foreground`),children:e}),(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t})]}),(0,W.jsx)(`div`,{className:`basis-full pl-12 sm:basis-auto sm:pl-0`,children:i?(0,W.jsx)(_,{tone:`success`,label:a(`inbox.getStarted.done`)}):(0,W.jsx)(E,{variant:`outline`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{...r,"aria-describedby":o,children:n})})})]})},pt=()=>{let{t:e}=c(),t=B(),n=V(),r=(t.data?.length??0)>1||(n.data?.length??0)>0;return(0,W.jsx)(J,{title:e(`inbox.getStarted.invite.title`),description:e(`inbox.getStarted.invite.description`),action:e(`inbox.getStarted.invite.action`),link:f({to:`/network/users`}),done:r})},mt=()=>{let{t:e}=c(),t=z().data?.some(e=>e.revokedAt===null)??!1;return(0,W.jsx)(J,{title:e(`inbox.getStarted.token.title`),description:e(`inbox.getStarted.token.description`),action:e(`inbox.getStarted.token.action`),link:f({to:`/settings/api-tokens`}),done:t})},ht=({places:e})=>{let{t}=c(),n=m(`schema.create`),r=m(`users.manage`),i=m(`tokens.manage`),a=e.find(e=>e.canCreate),o=e.length>0,s=n||!!a||r||i;return(0,W.jsx)(I,{title:t(`inbox.getStarted.title`),flush:!0,children:s?(0,W.jsxs)(`ol`,{className:`divide-y [counter-reset:step]`,children:[n?(0,W.jsx)(J,{title:t(`inbox.getStarted.type.title`),description:t(`inbox.getStarted.type.description`),action:t(`shell.nav.newType`),link:f({to:`/content/new`}),done:o}):null,o&&a?(0,W.jsx)(J,{title:t(`inbox.getStarted.entry.title`),description:t(`inbox.getStarted.entry.description`,{place:a.label}),action:t(`palette.newEntry`,{name:a.label}),link:a.kind===`collection`?f({to:`/content/$modelKey/new`,params:{modelKey:a.apiKey}}):f({to:`/content/$modelKey`,params:{modelKey:a.apiKey}}),done:!1}):null,r?(0,W.jsx)(pt,{}):null,i?(0,W.jsx)(mt,{}):null]}):(0,W.jsx)(v,{compact:!0,icon:Me,title:t(`inbox.getStarted.waiting`),description:t(`inbox.getStarted.waitingDescription`)})})},gt=()=>{let e=Ce({limit:100}),t=xe();return{findings:e,groups:(0,U.useMemo)(()=>{let n=new Map;for(let t of e.data?.pages.flatMap(e=>e.items)??[])n.set(t.rule,[...n.get(t.rule)??[],t]);let r=new Map(t.data?.rules.map(({rule:e,count:t})=>[e,t]));return Se.flatMap(e=>{let t=n.get(e)??[],i=Math.max(r.get(e)??0,t.length);return t.length>0?[{rule:e,count:i,findings:t}]:[]})},[e.data,t.data]),total:t.data?.rules.reduce((e,{count:t})=>e+t,0)}},_t=e=>{let t=a(),n=Ke(),[r,o]=(0,U.useState)(),s=We(r),[c,l]=(0,U.useState)({}),u=s.data?.status;return{propose:()=>{l({}),n.mutate({rule:e},{onSuccess:({runId:e})=>o(e)})},running:n.isPending||r!==void 0&&(u===void 0||u===`queued`||u===`running`),run:s.data,error:n.error??s.error,decisions:c,decide:(e,t)=>l(n=>({...n,[e]:t})),finishReview:()=>{Object.values(c).includes(`accepted`)&&t.invalidateQueries({queryKey:i.contentHealth.all})}}},vt=({proposal:e,decision:t,onDecide:n})=>{let{t:r}=c(),i=(0,U.useId)(),[a,o]=(0,U.useState)(e.proposedAlt),s=u();return(0,W.jsxs)(`li`,{className:`space-y-2 py-4 first:pt-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`min-w-0 truncate text-sm font-semibold`,children:e.filename}),t?(0,W.jsx)(_,{size:`sm`,tone:t===`accepted`?`success`:`muted`,label:r(t===`accepted`?`assist.fixes.accepted`:`assist.fixes.rejected`)}):null]}),t?null:(0,W.jsxs)(`form`,{className:`space-y-2`,onSubmit:t=>{t.preventDefault(),s.mutate({id:e.assetId,input:{alt:a.trim(),expectedVersion:e.assetVersion}},{onSuccess:()=>n(`accepted`)})},children:[(0,W.jsx)(_e,{htmlFor:i,children:r(`content.media.altLabel`)}),(0,W.jsx)(ge,{id:i,value:a,onChange:e=>o(e.target.value)}),s.error?(0,W.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:he(s.error)}):null,(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsxs)(E,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n(`rejected`),children:[(0,W.jsx)(g,{"aria-hidden":`true`}),r(`assist.fixes.reject`)]}),(0,W.jsxs)(te,{size:`sm`,pending:s.isPending,pendingLabel:r(`common.saving`),disabled:a.trim()===``,children:[(0,W.jsx)(T,{"aria-hidden":`true`}),r(`assist.fixes.accept`)]})]})]})]})},yt=({open:e,onOpenChange:t,model:n,proposals:r,decisions:i,onDecide:a})=>{let{t:o}=c();return(0,W.jsx)(re,{open:e,onOpenChange:t,children:(0,W.jsxs)(de,{size:`md`,children:[(0,W.jsxs)(le,{children:[(0,W.jsx)(ce,{children:o(`assist.fixes.altTitle`)}),(0,W.jsx)(ie,{children:o(`assist.fixes.altDescription`,{model:n})})]}),(0,W.jsx)(se,{children:(0,W.jsx)(`ul`,{"aria-label":o(`assist.fixes.altTitle`),className:`divide-y`,children:r.map(e=>(0,W.jsx)(vt,{proposal:e,decision:i[e.assetId],onDecide:t=>a(e.assetId,t)},e.assetId))})}),(0,W.jsx)(ae,{children:(0,W.jsx)(E,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:o(`common.close`)})})]})})},bt=({result:e})=>{let{t}=c();return(0,W.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-meta text-muted-foreground`,children:[e.changeSetId?(0,W.jsx)(Re,{to:`/changes/$changeSetId`,params:{changeSetId:e.changeSetId},children:t(`assist.fixes.openSet`,{count:e.written.length})}):(0,W.jsx)(`span`,{children:t(`assist.fixes.nothingWritten`)}),e.skipped.length>0?(0,W.jsx)(`span`,{children:t(`assist.fixes.skipped`,{count:e.skipped.length})}):null]})},xt=({rule:e})=>{let{t}=c(),n=_t(e),[r,i]=(0,U.useState)(!1),{run:a}=n,o=a?.status===`succeeded`?a.result:null;return(0,W.jsxs)(`div`,{className:`space-y-1 px-5 pb-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(Ge,{variant:`outline`,pending:n.running,pendingLabel:t(`assist.fixes.running`),onClick:n.propose,children:t(a?`assist.fixes.again`:`assist.fixes.propose`)}),o?.rule===`altMissing`?o.proposals.length>0?(0,W.jsx)(E,{type:`button`,size:`sm`,onClick:()=>i(!0),children:t(`assist.fixes.review`,{count:o.proposals.length})}):(0,W.jsx)(`span`,{className:`text-meta text-muted-foreground`,children:t(`assist.fixes.none`)}):null,o?.rule===`localeMissing`?(0,W.jsx)(bt,{result:o}):null]}),(0,W.jsx)(qe,{error:n.error}),a?.status===`failed`?(0,W.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:Ue(a.error?.code??`INTERNAL_ERROR`)}):null,o?.rule===`altMissing`&&a?(0,W.jsx)(yt,{open:r,onOpenChange:e=>{i(e),e||n.finishReview()},model:a.model,proposals:o.proposals,decisions:n.decisions,onDecide:n.decide}):null]})},Y=(e,t,n,{locale:r,path:i}={})=>{let a=r&&r!==`*`?{locale:r}:{},o=i?i.replace(/^\//,``):void 0;return f(n===`singleton`?{to:`/content/$modelKey`,params:{modelKey:e},search:a,...o?{hash:o}:{}}:{to:`/content/$modelKey/$entryId`,params:{modelKey:e,entryId:t},search:a,...o?{hash:o}:{}})},St=(e,t)=>{let n=t?.split(`/`)[1];if(e&&n)return e.fields.find(e=>e.apiKey===decodeURIComponent(n))?.label},X=(e,t,n,r)=>{let i=typeof e.params.locale==`string`?e.params.locale:e.locale;return{field:St(t,e.path)??r,locale:i===`*`?``:n(i),count:typeof e.params.days==`number`?e.params.days:0}},Ct=({finding:e,model:t,localeLabel:n,showLocale:r})=>{let{t:i}=c(),a=(0,U.useId)(),o=X(e,t,n,i(`inbox.aField`)),s=e.entryTitle??i(`content.untitled`);return(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 px-5 py-3 sm:flex-nowrap`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(`p`,{id:a,className:`truncate text-sm font-semibold`,children:s}),(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t?i(`inbox.findingMeta`,{place:t.label,sentence:i(O[e.rule],o)}):i(O[e.rule],o)})]}),r&&e.locale!==`*`?(0,W.jsx)(b,{variant:`outline`,title:n(e.locale),className:`uppercase`,children:e.locale}):null,(0,W.jsx)(E,{variant:`outline`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{...Y(e.modelKey,e.entryId,t?.kind,{locale:e.locale,...e.path?{path:e.path}:{}}),"aria-describedby":a,children:i(A[e.rule],o)})})]})},wt=e=>Ye.includes(e),Tt=({group:e,models:t,localeLabel:n,showLocale:r})=>{let{t:i}=c(),a=(0,U.useId)(),[o,s]=(0,U.useState)(!1),l=He(),u=o?e.findings:e.findings.slice(0,5),d=e.findings.length-u.length;return(0,W.jsxs)(`section`,{"aria-labelledby":a,className:`py-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-5 pt-3 pb-1`,children:[(0,W.jsx)(y,{icon:we[e.rule],size:`sm`,tone:`warning`}),(0,W.jsx)(`h3`,{id:a,className:`min-w-0 flex-1 truncate text-sm font-semibold`,children:i(j[e.rule])}),(0,W.jsx)(b,{variant:`secondary`,className:`tabular-nums`,children:e.count.toLocaleString()})]}),l&&wt(e.rule)?(0,W.jsx)(xt,{rule:e.rule}):null,(0,W.jsx)(`ul`,{className:`divide-y`,children:u.map(e=>(0,W.jsx)(Ct,{finding:e,model:t?.get(e.modelId),localeLabel:n,showLocale:r},e.id))}),d>0?(0,W.jsx)(`div`,{className:`px-5 pb-2`,children:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,onClick:()=>s(!0),children:i(`inbox.showAll`,{count:e.findings.length})})}):null]})},Et=({findings:e,groups:t})=>{let{t:n}=c(),{schema:r}=L(),i=F(),a=(0,U.useMemo)(()=>new Map((i.data??[]).map(e=>[e.code,e.label])),[i.data]),o=(0,U.useCallback)(e=>a.get(e)??e,[a]),s=a.size>1;return(0,W.jsx)(I,{title:n(`inbox.needsYou`),flush:!0,children:(0,W.jsx)(P,{query:e,loadingRows:4,isEmpty:()=>t.length===0,empty:(0,W.jsx)(v,{compact:!0,icon:be,title:n(`inbox.allClear`),description:n(`inbox.allClearDescription`)}),children:()=>(0,W.jsxs)(`div`,{className:`divide-y`,children:[t.map(e=>(0,W.jsx)(Tt,{group:e,models:r?.models,localeLabel:o,showLocale:s},e.rule)),e.hasNextPage?(0,W.jsx)(`div`,{className:`px-5 py-3`,children:(0,W.jsx)(E,{variant:`outline`,size:`sm`,disabled:e.isFetchingNextPage,onClick:()=>void e.fetchNextPage(),children:e.isFetchingNextPage?n(`common.loading`):n(`inbox.loadMore`)})}):null]})})})},Z=({title:e,meta:t,link:n,at:r})=>(0,W.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(w,{asChild:!0,className:`block truncate text-sm`,children:(0,W.jsx)(h,{...n,children:e})}),(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:t})]}),r?(0,W.jsx)(`time`,{dateTime:r,title:C(r),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(r)}):null]}),Q=e=>{let{t}=c(),{schema:n}=L(),r=(0,U.useMemo)(()=>{let t=new Map;for(let{modelKey:n,entryId:r}of e)t.set(n,[...new Set([...t.get(n)??[],r])]);return[...t].flatMap(([e,t])=>{let r=n?R(n,e):void 0;return r?[{model:r,entryIds:t}]:[]})},[e,n]),i=(0,U.useCallback)(e=>new Map(e.flatMap((e,n)=>{let i=r[n]?.model;return i&&e.data?e.data.items.map(e=>[e.id,Ve(i,e,t(`content.untitled`))]):[]})),[r,t]);return d({queries:r.map(({model:e,entryIds:t})=>{let n=ze(e);return Be(e.apiKey,{filters:{id:{$in:t}},pageSize:t.length,...n?{fields:[n.apiKey]}:{}})}),combine:i})},Dt=()=>{let{schema:e}=L(),t=r({queryKey:i.currentSnapshot,queryFn:()=>o.snapshots.current(),meta:{silent:!0}}),n=t.data?.snapshot??0,a=k(Math.max(0,n-5),n,n>0),s=(0,U.useMemo)(()=>(a.data?.items??[]).flatMap(e=>{let t=e.locales.find(e=>e.change!==`unpublished`)?.change;return t===`published`||t===`updated`?[{item:e,change:t}]:[]}),[a.data]),c=Q((0,U.useMemo)(()=>s.slice(0,6).map(({item:e})=>({modelKey:e.modelKey,entryId:e.id})),[s])),l=(0,U.useMemo)(()=>s.slice(0,6).flatMap(({item:t,change:n})=>{let r=e?.models.get(t.modelId),i=c.get(t.id);return r&&i!==void 0?[{id:t.id,title:i,modelKey:r.apiKey,modelLabel:r.label,kind:r.kind,change:n}]:[]}),[s,e,c]),u=t.error??a.error,d=p(u),f=t.isSuccess&&n===0||d;return{items:d?[]:l,isPending:!f&&(t.isPending||a.isPending||e===void 0),error:d?null:u}},Ot={published:`inbox.wentLive`,updated:`inbox.liveUpdated`},$=()=>{let{t:e}=c(),{items:t,isPending:n,error:r}=Dt();return(0,W.jsx)(I,{title:e(`inbox.recentlyPublished`),flush:!0,children:r?(0,W.jsx)(ue,{error:r}):n?(0,W.jsx)(x,{rows:3,className:`p-5`}):t.length===0?(0,W.jsx)(v,{compact:!0,icon:je,title:e(`inbox.nothingPublished`),description:e(`inbox.nothingPublishedDescription`)}):(0,W.jsx)(`ul`,{className:`divide-y`,children:t.map(t=>(0,W.jsx)(Z,{title:t.title,meta:e(Ot[t.change],{place:t.modelLabel}),link:Y(t.modelKey,t.id,t.kind)},`${t.modelKey}:${t.id}`))})})},kt={publish:`inbox.scheduledPublish`,unpublish:`inbox.scheduledUnpublish`},At=()=>{let{t:e}=c(),t=Je({status:`scheduled`,limit:50}),{schema:n}=L(),r=(0,U.useMemo)(()=>(t.data?.items??[]).filter(e=>e.modelKey!==null).sort((e,t)=>e.runAt.localeCompare(t.runAt)).slice(0,5),[t.data]),i=Q((0,U.useMemo)(()=>r.map(e=>({modelKey:e.modelKey??``,entryId:e.entryId})),[r]));return(0,W.jsx)(I,{title:e(`inbox.scheduledSoon`),flush:!0,actions:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/publishing/scheduled`,children:e(`inbox.viewAll`)})}),children:(0,W.jsx)(P,{query:t,loadingRows:3,isEmpty:()=>r.length===0,empty:(0,W.jsx)(v,{compact:!0,icon:ye,title:e(`inbox.nothingScheduled`),description:e(`inbox.nothingScheduledDescription`)}),children:()=>(0,W.jsx)(`ul`,{className:`divide-y`,children:r.map(t=>{let r=t.modelKey??``,a=n?R(n,r):void 0;return(0,W.jsx)(Z,{title:i.get(t.entryId)??e(`content.untitled`),meta:e(kt[t.action],{place:a?.label??r}),link:Y(r,t.entryId,a?.kind,{locale:t.locale}),at:t.runAt},t.id)})})})})},jt=({isAdmin:e,canSeeSchedules:t,findingGroups:n})=>{let r=(0,W.jsx)(Et,{...n});return e?(0,W.jsxs)(W.Fragment,{children:[r,(0,W.jsxs)(`div`,{className:`grid items-start gap-6 lg:grid-cols-2`,children:[t?(0,W.jsx)(At,{}):null,(0,W.jsx)($,{})]}),(0,W.jsx)(ut,{})]}):(0,W.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,W.jsx)(`div`,{className:`min-w-0 xl:col-span-2`,children:r}),(0,W.jsx)(`div`,{className:`min-w-0`,children:(0,W.jsx)($,{})})]})},Mt=fe(`/app/`)({component:()=>{let{t:e}=c(),{data:t}=ee(),n=N(`model`),r=Ee(),{models:i}=G(),a=gt(),o=m(`publishing.manage`),s=m(`users.manage`),l=o||s,u=t?.user.name,d=n.data?.length===0,{total:f}=a,p=d||f===void 0?void 0:f===0?e(`inbox.metaClear`):e(`inbox.meta`,{count:f});return(0,W.jsxs)(ne,{children:[(0,W.jsx)(oe,{title:u?e(`inbox.title`,{name:u}):e(`inbox.titleFallback`),meta:p}),l?(0,W.jsx)(ft,{modelCount:i?.length}):null,n.isPending||d&&r===void 0?(0,W.jsx)(x,{rows:3}):d?(0,W.jsx)(ht,{places:r??[]}):(0,W.jsx)(jt,{isAdmin:l,canSeeSchedules:o,findingGroups:a})]})}});export{Mt as inboxLazyRoute};
|
|
2
|
-
//# sourceMappingURL=inbox-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{H as r,P as i,bt as a,d as o,i as s,j as c,t as l}from"./cn-CL1YHRrS.js";import{l as u}from"./media-5ks_0Rre.js";import{t as d}from"./useQueries-CYfcxI0Q.js";import{C as f,_ as p,o as m,u as ee,x as h}from"./auth-YVfK3SxF.js";import{O as g,_ as te,a as ne,c as re,d as ie,f as ae,i as oe,l as se,m as ce,n as _,o as v,p as le,r as ue,s as y,t as b,u as de,v as x}from"./badge-lJ4Ih_Zn.js";import{i as S,n as C,t as w}from"./RowTitle-B-7RptyN.js";import{t as fe}from"./fileRoute-CVQpW8cj.js";import{q as pe}from"./src-Be3Ds5Dc.js";import{D as me,O as T,i as E,k as he,n as ge,r as _e}from"./skeleton-DElTumgk.js";import{n as ve}from"./link-2-off-DbZzRN_w.js";import{t as D}from"./boxes-DRvd25_u.js";import{t as ye}from"./calendar-clock-VENf4s1R.js";import{t as be}from"./circle-check-jmRQz1Jq.js";import{c as xe,d as Se,f as O,i as k,l as A,p as j,s as Ce,u as we}from"./snapshots-DkyyrWX3.js";import{n as Te,t as Ee}from"./usePlaces-6iTN15Xy.js";import{t as De}from"./globe-TooNSp9V.js";import{t as Oe}from"./key-round-CFJ61iCd.js";import{t as ke}from"./plus-BDZHQBlU.js";import{t as Ae}from"./scroll-text-BLThe4Ki.js";import{t as je}from"./send-CbP0Rc9_.js";import{t as Me}from"./sparkles-D88gf3vX.js";import{i as M,n as Ne,r as Pe,t as Fe}from"./useAuditLabels-BJF7M5RY.js";import{t as Ie}from"./users-B01EH47o.js";import{t as Le}from"./UserAvatar-DNOWhSWS.js";import{t as Re}from"./TextLink-DIqr5zkJ.js";import{s as N}from"./schema-B7L9OJrX.js";import{t as P}from"./QueryView-C630REML.js";import{a as ze,o as Be,r as Ve}from"./titles-CQYc9nDQ.js";import{r as F}from"./locales-oBD0q1pN.js";import{i as He,n as Ue,o as We,r as Ge,s as Ke,t as qe}from"./AssistError-BoejyShH.js";import{t as I}from"./Panel-ClY9b33D.js";import{r as Je}from"./schedules-DXrBSypK.js";import{n as L,t as R}from"./useContentSchema-Cvtes34f.js";import{t as z}from"./tokens-C-20gLAT.js";import{c as B,t as V}from"./users-BgTNDPXx.js";var Ye=[`altMissing`,`localeMissing`],H={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};H.node;var Xe=s(H),U=e(t(),1),Ze=new Set([`entry`,`model`,`component`,`admin_user`,`app_user`]),Qe=(e,t)=>e.charAt(0).toLocaleLowerCase(t)+e.slice(1),W=e(n(),1),$e=({event:e})=>{let{t,i18n:n}=c(),{actionLabel:r,targetLabel:i}=Fe(),a=e.actorName??e.actorEmail??t(`audit.actorTypes.${e.actorType}`),o=r(e.action),s=e.targetType&&Ze.has(e.targetType)?Ne(e.metadata):void 0,l=e.targetType?i(e.targetType):void 0;return(0,W.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,W.jsx)(Le,{name:a,size:`sm`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsxs)(`p`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1 text-sm`,title:e.action,children:[(0,W.jsx)(`span`,{className:`font-semibold`,children:a}),o?(0,W.jsx)(`span`,{children:Qe(o,n.language)}):(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:e.action}),e.outcome===`failure`?(0,W.jsx)(_,{tone:`danger`,size:`sm`,label:t(`audit.failure`)}):null]}),s?(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:l?t(`home.activityTarget`,{type:l,name:s}):s}):null]}),(0,W.jsx)(`time`,{dateTime:e.occurredAt,title:C(e.occurredAt),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(e.occurredAt)})]})},et=()=>{let{t:e}=c(),t=Pe({limit:8});return(0,W.jsx)(I,{title:e(`home.activity`),flush:!0,actions:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/network/audit-log`,children:e(`home.viewAuditLog`)})}),children:(0,W.jsx)(P,{query:t,loadingRows:4,isEmpty:e=>e.items.length===0,empty:(0,W.jsx)(v,{size:`panel`,icon:Ae,title:e(`home.noActivity`)}),children:e=>(0,W.jsx)(`ul`,{className:`divide-y`,children:e.items.map(e=>(0,W.jsx)($e,{event:e},e.id))})})})},G=()=>{let e=N(`model`);return{query:e,models:(0,U.useMemo)(()=>e.data?.flatMap(({definition:e,version:t})=>pe(e)?[{id:e.id,label:e.label,apiKey:e.apiKey,kind:e.kind,version:t}]:[]).sort((e,t)=>e.label.localeCompare(t.label)),[e.data])}},tt=e=>{let[t]=e;return e.length!==1||!t?f({to:`/content`}):t.kind===`collection`?f({to:`/content/$modelKey/new`,params:{modelKey:t.apiKey}}):f({to:`/content/$modelKey`,params:{modelKey:t.apiKey}})},nt=e=>{let{t}=c(),n=m(`schema.create`),r=m(`media.write`),i=m(`users.manage`);return[...e&&e.length>0?[{key:`entry`,label:t(`home.createEntry`),icon:Te,link:tt(e)}]:[],...n?[{key:`model`,label:t(`home.newModel`),icon:D,link:f({to:`/content/new`})}]:[],...r?[{key:`media`,label:t(`home.uploadMedia`),icon:Xe,link:f({to:`/media`})}]:[],...i?[{key:`invite`,label:t(`home.invite`),icon:M,link:f({to:`/network/users`})}]:[]]},rt={collection:`home.kinds.collection`,singleton:`home.kinds.singleton`},it=({query:e,models:t})=>{let{t:n}=c(),r=m(`schema.create`);return(0,W.jsx)(I,{title:n(`home.models`),flush:!0,actions:t&&t.length>0?(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/content`,children:n(`home.allModels`)})}):null,children:(0,W.jsx)(P,{query:e,loadingRows:3,isEmpty:()=>t?.length===0,empty:(0,W.jsx)(v,{size:`panel`,icon:D,title:n(`home.noModels`),action:r?(0,W.jsx)(E,{asChild:!0,children:(0,W.jsxs)(h,{to:`/content/new`,children:[(0,W.jsx)(ke,{"aria-hidden":`true`}),n(`home.newModel`)]})}):null}),children:()=>(0,W.jsx)(`ul`,{className:`divide-y`,children:t?.slice(0,6).map(e=>(0,W.jsxs)(`li`,{className:`flex h-11 items-center gap-3 px-5`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-2`,children:[(0,W.jsx)(w,{asChild:!0,className:`truncate`,children:(0,W.jsx)(h,{to:`/content/$modelKey`,params:{modelKey:e.apiKey},search:{tab:`structure`},children:e.label})}),(0,W.jsx)(`span`,{className:`truncate font-mono text-xs text-muted-foreground`,children:e.apiKey})]}),(0,W.jsx)(b,{variant:`secondary`,children:n(rt[e.kind])}),(0,W.jsx)(`span`,{className:`w-10 text-right text-meta text-muted-foreground tabular-nums`,children:n(`home.version`,{version:e.version})})]},e.id))})})})},K=({to:e,icon:t,title:n,description:r})=>(0,W.jsxs)(h,{to:e,className:`group flex items-start gap-4 rounded-xl border bg-card p-5 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:t,size:`lg`}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1 font-semibold`,children:[n,(0,W.jsx)(ve,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":`true`})]}),(0,W.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:r})]})]}),at=()=>{let{t:e}=c(),t=B(),n=V();return t.data!==void 0&&t.data.length<=1&&n.data?.length===0?(0,W.jsx)(K,{to:`/network/users`,icon:M,title:e(`home.inviteTeam`),description:e(`home.inviteTeamDescription`)}):null},ot=()=>{let{t:e}=c(),t=z();return t.data!==void 0&&t.data.every(e=>e.revokedAt!==null)?(0,W.jsx)(K,{to:`/settings/api-tokens`,icon:Oe,title:e(`home.createToken`),description:e(`home.createTokenDescription`)}):null},st=()=>{let e=m(`users.manage`),t=m(`tokens.manage`);return(0,W.jsxs)(`div`,{className:`grid gap-4 empty:hidden md:grid-cols-2`,children:[e?(0,W.jsx)(at,{}):null,t?(0,W.jsx)(ot,{}):null]})},ct=({label:e,icon:t,link:n})=>(0,W.jsxs)(h,{...n,className:`group flex items-center gap-3 rounded-lg px-2 py-1.5 text-sm font-semibold outline-none hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:t,size:`sm`}),(0,W.jsx)(`span`,{className:`flex-1`,children:e}),(0,W.jsx)(me,{"aria-hidden":`true`,className:`size-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),lt=({shortcuts:e})=>{let{t}=c();return e.length===0?null:(0,W.jsx)(I,{title:t(`home.shortcuts`),children:(0,W.jsx)(`ul`,{className:`-mx-2 space-y-0.5`,children:e.map(({key:e,label:t,icon:n,link:r})=>(0,W.jsx)(`li`,{children:(0,W.jsx)(ct,{label:t,icon:n,link:r})},e))})})},ut=()=>{let{t:e}=c(),t=(0,U.useId)(),n=m(`audit.read`),r=G(),i=nt(r.models);return(0,W.jsxs)(`section`,{"aria-labelledby":t,className:`space-y-6 pt-2`,children:[(0,W.jsx)(`h2`,{id:t,className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e(`inbox.overview`)}),(0,W.jsx)(st,{}),(0,W.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 space-y-6 xl:col-span-2`,children:[n?(0,W.jsx)(et,{}):null,(0,W.jsx)(it,{...r})]}),(0,W.jsx)(lt,{shortcuts:i})]})]})},q=({label:e,value:t,icon:n,link:r})=>(0,W.jsxs)(h,{...r,className:`flex items-center gap-3 rounded-xl border bg-card px-4 py-4 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,W.jsx)(y,{icon:n,size:`md`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-muted-foreground`,children:e}),(0,W.jsx)(`span`,{className:`text-xl leading-7 font-bold tabular-nums`,children:t??`–`})]}),dt=()=>{let{t:e}=c(),t=B();return(0,W.jsx)(q,{label:e(`home.admins`),value:t.data?.length,icon:Ie,link:f({to:`/network/users`})})},ft=({modelCount:e})=>{let{t}=c(),n=F(),r=m(`users.manage`);return(0,W.jsxs)(`div`,{className:l(`grid gap-3 sm:grid-cols-2`,r&&`sm:grid-cols-3`),children:[(0,W.jsx)(q,{label:t(`home.models`),value:e,icon:D,link:f({to:`/content`})}),(0,W.jsx)(q,{label:t(`home.locales`),value:n.data?.length,icon:De,link:f({to:`/settings/locales`})}),r?(0,W.jsx)(dt,{}):null]})},J=({title:e,description:t,action:n,link:r,done:i})=>{let{t:a}=c(),o=(0,U.useId)();return(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 px-5 py-3.5 [counter-increment:step] sm:flex-nowrap`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:l(`flex size-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold tabular-nums`,i?`border-transparent bg-success-muted text-success`:`text-muted-foreground before:content-[counter(step)]`),children:i?(0,W.jsx)(T,{className:`size-4`}):null}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(`p`,{id:o,className:l(`text-sm font-semibold`,i&&`text-muted-foreground`),children:e}),(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t})]}),(0,W.jsx)(`div`,{className:`basis-full pl-12 sm:basis-auto sm:pl-0`,children:i?(0,W.jsx)(_,{tone:`success`,label:a(`inbox.getStarted.done`)}):(0,W.jsx)(E,{variant:`outline`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{...r,"aria-describedby":o,children:n})})})]})},pt=()=>{let{t:e}=c(),t=B(),n=V(),r=(t.data?.length??0)>1||(n.data?.length??0)>0;return(0,W.jsx)(J,{title:e(`inbox.getStarted.invite.title`),description:e(`inbox.getStarted.invite.description`),action:e(`inbox.getStarted.invite.action`),link:f({to:`/network/users`}),done:r})},mt=()=>{let{t:e}=c(),t=z().data?.some(e=>e.revokedAt===null)??!1;return(0,W.jsx)(J,{title:e(`inbox.getStarted.token.title`),description:e(`inbox.getStarted.token.description`),action:e(`inbox.getStarted.token.action`),link:f({to:`/settings/api-tokens`}),done:t})},ht=({places:e})=>{let{t}=c(),n=m(`schema.create`),r=m(`users.manage`),i=m(`tokens.manage`),a=e.find(e=>e.canCreate),o=e.length>0,s=n||!!a||r||i;return(0,W.jsx)(I,{title:t(`inbox.getStarted.title`),flush:!0,children:s?(0,W.jsxs)(`ol`,{className:`divide-y [counter-reset:step]`,children:[n?(0,W.jsx)(J,{title:t(`inbox.getStarted.type.title`),description:t(`inbox.getStarted.type.description`),action:t(`shell.nav.newType`),link:f({to:`/content/new`}),done:o}):null,o&&a?(0,W.jsx)(J,{title:t(`inbox.getStarted.entry.title`),description:t(`inbox.getStarted.entry.description`,{place:a.label}),action:t(`palette.newEntry`,{name:a.label}),link:a.kind===`collection`?f({to:`/content/$modelKey/new`,params:{modelKey:a.apiKey}}):f({to:`/content/$modelKey`,params:{modelKey:a.apiKey}}),done:!1}):null,r?(0,W.jsx)(pt,{}):null,i?(0,W.jsx)(mt,{}):null]}):(0,W.jsx)(v,{compact:!0,icon:Me,title:t(`inbox.getStarted.waiting`),description:t(`inbox.getStarted.waitingDescription`)})})},gt=()=>{let e=Ce({limit:100}),t=xe();return{findings:e,groups:(0,U.useMemo)(()=>{let n=new Map;for(let t of e.data?.pages.flatMap(e=>e.items)??[])n.set(t.rule,[...n.get(t.rule)??[],t]);let r=new Map(t.data?.rules.map(({rule:e,count:t})=>[e,t]));return Se.flatMap(e=>{let t=n.get(e)??[],i=Math.max(r.get(e)??0,t.length);return t.length>0?[{rule:e,count:i,findings:t}]:[]})},[e.data,t.data]),total:t.data?.rules.reduce((e,{count:t})=>e+t,0)}},_t=e=>{let t=a(),n=Ke(),[r,o]=(0,U.useState)(),s=We(r),[c,l]=(0,U.useState)({}),u=s.data?.status;return{propose:()=>{l({}),n.mutate({rule:e},{onSuccess:({runId:e})=>o(e)})},running:n.isPending||r!==void 0&&(u===void 0||u===`queued`||u===`running`),run:s.data,error:n.error??s.error,decisions:c,decide:(e,t)=>l(n=>({...n,[e]:t})),finishReview:()=>{Object.values(c).includes(`accepted`)&&t.invalidateQueries({queryKey:i.contentHealth.all})}}},vt=({proposal:e,decision:t,onDecide:n})=>{let{t:r}=c(),i=(0,U.useId)(),[a,o]=(0,U.useState)(e.proposedAlt),s=u();return(0,W.jsxs)(`li`,{className:`space-y-2 py-4 first:pt-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`min-w-0 truncate text-sm font-semibold`,children:e.filename}),t?(0,W.jsx)(_,{size:`sm`,tone:t===`accepted`?`success`:`muted`,label:r(t===`accepted`?`assist.fixes.accepted`:`assist.fixes.rejected`)}):null]}),t?null:(0,W.jsxs)(`form`,{className:`space-y-2`,onSubmit:t=>{t.preventDefault(),s.mutate({id:e.assetId,input:{alt:a.trim(),expectedVersion:e.assetVersion}},{onSuccess:()=>n(`accepted`)})},children:[(0,W.jsx)(_e,{htmlFor:i,children:r(`content.media.altLabel`)}),(0,W.jsx)(ge,{id:i,value:a,onChange:e=>o(e.target.value)}),s.error?(0,W.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:he(s.error)}):null,(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsxs)(E,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n(`rejected`),children:[(0,W.jsx)(g,{"aria-hidden":`true`}),r(`assist.fixes.reject`)]}),(0,W.jsxs)(te,{size:`sm`,pending:s.isPending,pendingLabel:r(`common.saving`),disabled:a.trim()===``,children:[(0,W.jsx)(T,{"aria-hidden":`true`}),r(`assist.fixes.accept`)]})]})]})]})},yt=({open:e,onOpenChange:t,model:n,proposals:r,decisions:i,onDecide:a})=>{let{t:o}=c();return(0,W.jsx)(re,{open:e,onOpenChange:t,children:(0,W.jsxs)(de,{size:`md`,children:[(0,W.jsxs)(le,{children:[(0,W.jsx)(ce,{children:o(`assist.fixes.altTitle`)}),(0,W.jsx)(ie,{children:o(`assist.fixes.altDescription`,{model:n})})]}),(0,W.jsx)(se,{children:(0,W.jsx)(`ul`,{"aria-label":o(`assist.fixes.altTitle`),className:`divide-y`,children:r.map(e=>(0,W.jsx)(vt,{proposal:e,decision:i[e.assetId],onDecide:t=>a(e.assetId,t)},e.assetId))})}),(0,W.jsx)(ae,{children:(0,W.jsx)(E,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:o(`common.close`)})})]})})},bt=({result:e})=>{let{t}=c();return(0,W.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-meta text-muted-foreground`,children:[e.changeSetId?(0,W.jsx)(Re,{to:`/changes/$changeSetId`,params:{changeSetId:e.changeSetId},children:t(`assist.fixes.openSet`,{count:e.written.length})}):(0,W.jsx)(`span`,{children:t(`assist.fixes.nothingWritten`)}),e.skipped.length>0?(0,W.jsx)(`span`,{children:t(`assist.fixes.skipped`,{count:e.skipped.length})}):null]})},xt=({rule:e})=>{let{t}=c(),n=_t(e),[r,i]=(0,U.useState)(!1),{run:a}=n,o=a?.status===`succeeded`?a.result:null;return(0,W.jsxs)(`div`,{className:`space-y-1 px-5 pb-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(Ge,{variant:`outline`,pending:n.running,pendingLabel:t(`assist.fixes.running`),onClick:n.propose,children:t(a?`assist.fixes.again`:`assist.fixes.propose`)}),o?.rule===`altMissing`?o.proposals.length>0?(0,W.jsx)(E,{type:`button`,size:`sm`,onClick:()=>i(!0),children:t(`assist.fixes.review`,{count:o.proposals.length})}):(0,W.jsx)(`span`,{className:`text-meta text-muted-foreground`,children:t(`assist.fixes.none`)}):null,o?.rule===`localeMissing`?(0,W.jsx)(bt,{result:o}):null]}),(0,W.jsx)(qe,{error:n.error}),a?.status===`failed`?(0,W.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:Ue(a.error?.code??`INTERNAL_ERROR`)}):null,o?.rule===`altMissing`&&a?(0,W.jsx)(yt,{open:r,onOpenChange:e=>{i(e),e||n.finishReview()},model:a.model,proposals:o.proposals,decisions:n.decisions,onDecide:n.decide}):null]})},Y=(e,t,n,{locale:r,path:i}={})=>{let a=r&&r!==`*`?{locale:r}:{},o=i?i.replace(/^\//,``):void 0;return f(n===`singleton`?{to:`/content/$modelKey`,params:{modelKey:e},search:a,...o?{hash:o}:{}}:{to:`/content/$modelKey/$entryId`,params:{modelKey:e,entryId:t},search:a,...o?{hash:o}:{}})},St=(e,t)=>{let n=t?.split(`/`)[1];if(e&&n)return e.fields.find(e=>e.apiKey===decodeURIComponent(n))?.label},X=(e,t,n,r)=>{let i=typeof e.params.locale==`string`?e.params.locale:e.locale;return{field:St(t,e.path)??r,locale:i===`*`?``:n(i),count:typeof e.params.days==`number`?e.params.days:0}},Ct=({finding:e,model:t,localeLabel:n,showLocale:r})=>{let{t:i}=c(),a=(0,U.useId)(),o=X(e,t,n,i(`inbox.aField`)),s=e.entryTitle??i(`content.untitled`);return(0,W.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 px-5 py-3 sm:flex-nowrap`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(`p`,{id:a,className:`truncate text-sm font-semibold`,children:s}),(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t?i(`inbox.findingMeta`,{place:t.label,sentence:i(O[e.rule],o)}):i(O[e.rule],o)})]}),r&&e.locale!==`*`?(0,W.jsx)(b,{variant:`outline`,title:n(e.locale),className:`uppercase`,children:e.locale}):null,(0,W.jsx)(E,{variant:`outline`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{...Y(e.modelKey,e.entryId,t?.kind,{locale:e.locale,...e.path?{path:e.path}:{}}),"aria-describedby":a,children:i(A[e.rule],o)})})]})},wt=e=>Ye.includes(e),Tt=({group:e,models:t,localeLabel:n,showLocale:r})=>{let{t:i}=c(),a=(0,U.useId)(),[o,s]=(0,U.useState)(!1),l=He(),u=o?e.findings:e.findings.slice(0,5),d=e.findings.length-u.length;return(0,W.jsxs)(`section`,{"aria-labelledby":a,className:`py-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-5 pt-3 pb-1`,children:[(0,W.jsx)(y,{icon:we[e.rule],size:`sm`,tone:`warning`}),(0,W.jsx)(`h3`,{id:a,className:`min-w-0 flex-1 truncate text-sm font-semibold`,children:i(j[e.rule])}),(0,W.jsx)(b,{variant:`secondary`,className:`tabular-nums`,children:e.count.toLocaleString()})]}),l&&wt(e.rule)?(0,W.jsx)(xt,{rule:e.rule}):null,(0,W.jsx)(`ul`,{className:`divide-y`,children:u.map(e=>(0,W.jsx)(Ct,{finding:e,model:t?.get(e.modelId),localeLabel:n,showLocale:r},e.id))}),d>0?(0,W.jsx)(`div`,{className:`px-5 pb-2`,children:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,onClick:()=>s(!0),children:i(`inbox.showAll`,{count:e.findings.length})})}):null]})},Et=({findings:e,groups:t})=>{let{t:n}=c(),{schema:r}=L(),i=F(),a=(0,U.useMemo)(()=>new Map((i.data??[]).map(e=>[e.code,e.label])),[i.data]),o=(0,U.useCallback)(e=>a.get(e)??e,[a]),s=a.size>1;return(0,W.jsx)(I,{title:n(`inbox.needsYou`),flush:!0,children:(0,W.jsx)(P,{query:e,loadingRows:4,isEmpty:()=>t.length===0,empty:(0,W.jsx)(v,{compact:!0,icon:be,title:n(`inbox.allClear`),description:n(`inbox.allClearDescription`)}),children:()=>(0,W.jsxs)(`div`,{className:`divide-y`,children:[t.map(e=>(0,W.jsx)(Tt,{group:e,models:r?.models,localeLabel:o,showLocale:s},e.rule)),e.hasNextPage?(0,W.jsx)(`div`,{className:`px-5 py-3`,children:(0,W.jsx)(E,{variant:`outline`,size:`sm`,disabled:e.isFetchingNextPage,onClick:()=>void e.fetchNextPage(),children:e.isFetchingNextPage?n(`common.loading`):n(`inbox.loadMore`)})}):null]})})})},Z=({title:e,meta:t,link:n,at:r})=>(0,W.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,W.jsx)(w,{asChild:!0,className:`block truncate text-sm`,children:(0,W.jsx)(h,{...n,children:e})}),(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:t})]}),r?(0,W.jsx)(`time`,{dateTime:r,title:C(r),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(r)}):null]}),Q=e=>{let{t}=c(),{schema:n}=L(),r=(0,U.useMemo)(()=>{let t=new Map;for(let{modelKey:n,entryId:r}of e)t.set(n,[...new Set([...t.get(n)??[],r])]);return[...t].flatMap(([e,t])=>{let r=n?R(n,e):void 0;return r?[{model:r,entryIds:t}]:[]})},[e,n]),i=(0,U.useCallback)(e=>new Map(e.flatMap((e,n)=>{let i=r[n]?.model;return i&&e.data?e.data.items.map(e=>[e.id,Ve(i,e,t(`content.untitled`))]):[]})),[r,t]);return d({queries:r.map(({model:e,entryIds:t})=>{let n=ze(e);return Be(e.apiKey,{filters:{id:{$in:t}},pageSize:t.length,...n?{fields:[n.apiKey]}:{}})}),combine:i})},Dt=()=>{let{schema:e}=L(),t=r({queryKey:i.currentSnapshot,queryFn:()=>o.snapshots.current(),meta:{silent:!0}}),n=t.data?.snapshot??0,a=k(Math.max(0,n-5),n,n>0),s=(0,U.useMemo)(()=>(a.data?.items??[]).flatMap(e=>{let t=e.locales.find(e=>e.change!==`unpublished`)?.change;return t===`published`||t===`updated`?[{item:e,change:t}]:[]}),[a.data]),c=Q((0,U.useMemo)(()=>s.slice(0,6).map(({item:e})=>({modelKey:e.modelKey,entryId:e.id})),[s])),l=(0,U.useMemo)(()=>s.slice(0,6).flatMap(({item:t,change:n})=>{let r=e?.models.get(t.modelId),i=c.get(t.id);return r&&i!==void 0?[{id:t.id,title:i,modelKey:r.apiKey,modelLabel:r.label,kind:r.kind,change:n}]:[]}),[s,e,c]),u=t.error??a.error,d=p(u),f=t.isSuccess&&n===0||d;return{items:d?[]:l,isPending:!f&&(t.isPending||a.isPending||e===void 0),error:d?null:u}},Ot={published:`inbox.wentLive`,updated:`inbox.liveUpdated`},$=()=>{let{t:e}=c(),{items:t,isPending:n,error:r}=Dt();return(0,W.jsx)(I,{title:e(`inbox.recentlyPublished`),flush:!0,children:r?(0,W.jsx)(ue,{error:r}):n?(0,W.jsx)(x,{rows:3,className:`p-5`}):t.length===0?(0,W.jsx)(v,{compact:!0,icon:je,title:e(`inbox.nothingPublished`),description:e(`inbox.nothingPublishedDescription`)}):(0,W.jsx)(`ul`,{className:`divide-y`,children:t.map(t=>(0,W.jsx)(Z,{title:t.title,meta:e(Ot[t.change],{place:t.modelLabel}),link:Y(t.modelKey,t.id,t.kind)},`${t.modelKey}:${t.id}`))})})},kt={publish:`inbox.scheduledPublish`,unpublish:`inbox.scheduledUnpublish`},At=()=>{let{t:e}=c(),t=Je({status:`scheduled`,limit:50}),{schema:n}=L(),r=(0,U.useMemo)(()=>(t.data?.items??[]).filter(e=>e.modelKey!==null).sort((e,t)=>e.runAt.localeCompare(t.runAt)).slice(0,5),[t.data]),i=Q((0,U.useMemo)(()=>r.map(e=>({modelKey:e.modelKey??``,entryId:e.entryId})),[r]));return(0,W.jsx)(I,{title:e(`inbox.scheduledSoon`),flush:!0,actions:(0,W.jsx)(E,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,W.jsx)(h,{to:`/publishing/scheduled`,children:e(`inbox.viewAll`)})}),children:(0,W.jsx)(P,{query:t,loadingRows:3,isEmpty:()=>r.length===0,empty:(0,W.jsx)(v,{compact:!0,icon:ye,title:e(`inbox.nothingScheduled`),description:e(`inbox.nothingScheduledDescription`)}),children:()=>(0,W.jsx)(`ul`,{className:`divide-y`,children:r.map(t=>{let r=t.modelKey??``,a=n?R(n,r):void 0;return(0,W.jsx)(Z,{title:i.get(t.entryId)??e(`content.untitled`),meta:e(kt[t.action],{place:a?.label??r}),link:Y(r,t.entryId,a?.kind,{locale:t.locale}),at:t.runAt},t.id)})})})})},jt=({isAdmin:e,canSeeSchedules:t,findingGroups:n})=>{let r=(0,W.jsx)(Et,{...n});return e?(0,W.jsxs)(W.Fragment,{children:[r,(0,W.jsxs)(`div`,{className:`grid items-start gap-6 lg:grid-cols-2`,children:[t?(0,W.jsx)(At,{}):null,(0,W.jsx)($,{})]}),(0,W.jsx)(ut,{})]}):(0,W.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,W.jsx)(`div`,{className:`min-w-0 xl:col-span-2`,children:r}),(0,W.jsx)(`div`,{className:`min-w-0`,children:(0,W.jsx)($,{})})]})},Mt=fe(`/app/`)({component:()=>{let{t:e}=c(),{data:t}=ee(),n=N(`model`),r=Ee(),{models:i}=G(),a=gt(),o=m(`publishing.manage`),s=m(`users.manage`),l=o||s,u=t?.user.name,d=n.data?.length===0,{total:f}=a,p=d||f===void 0?void 0:f===0?e(`inbox.metaClear`):e(`inbox.meta`,{count:f});return(0,W.jsxs)(ne,{children:[(0,W.jsx)(oe,{title:u?e(`inbox.title`,{name:u}):e(`inbox.titleFallback`),meta:p}),l?(0,W.jsx)(ft,{modelCount:i?.length}):null,n.isPending||d&&r===void 0?(0,W.jsx)(x,{rows:3}):d?(0,W.jsx)(ht,{places:r??[]}):(0,W.jsx)(jt,{isAdmin:l,canSeeSchedules:o,findingGroups:a})]})}});export{Mt as inboxLazyRoute};
|
|
2
|
+
//# sourceMappingURL=inbox-CnzNfqt9.js.map
|