convex-cms 0.0.3 → 0.0.5-alpha.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/README.md +109 -13
- package/admin-dist/nitro.json +1 -1
- package/admin-dist/public/assets/{CmsEmptyState-CRswfTzk.js → CmsEmptyState-CiMQwSQV.js} +2 -2
- package/admin-dist/public/assets/{CmsPageHeader-CirpXndm.js → CmsPageHeader-ohOq0luT.js} +1 -1
- package/admin-dist/public/assets/{CmsStatusBadge-CbEUpQu-.js → CmsStatusBadge-BdNf0V9v.js} +1 -1
- package/admin-dist/public/assets/CmsSurface-CWup6Jh7.js +1 -0
- package/admin-dist/public/assets/{CmsToolbar-BI2nZOXp.js → CmsToolbar-cEBlCHa3.js} +1 -1
- package/admin-dist/public/assets/{ContentEntryEditor-CBeCyK_m.js → ContentEntryEditor-BY5ypfUs.js} +1 -1
- package/admin-dist/public/assets/{ErrorState-BIVaWmom.js → ErrorState-C4nJ-ml4.js} +1 -1
- package/admin-dist/public/assets/{TaxonomyFilter-ChaY6Y_x.js → TaxonomyFilter-BgE_SR_O.js} +1 -1
- package/admin-dist/public/assets/{_contentTypeId-DQ8k_Rvw.js → _contentTypeId-DtZectcC.js} +1 -1
- package/admin-dist/public/assets/{_entryId-CKU_glsK.js → _entryId-BpSmrfAm.js} +1 -1
- package/admin-dist/public/assets/alert-Bf2l8kxw.js +1 -0
- package/admin-dist/public/assets/{badge-hvUOzpVZ.js → badge-qPrc4AUM.js} +1 -1
- package/admin-dist/public/assets/{circle-check-big-CF_pR17r.js → circle-check-big-Dgozy3vV.js} +1 -1
- package/admin-dist/public/assets/{command-DU82cJlt.js → command-QOmNhlb0.js} +1 -1
- package/admin-dist/public/assets/content-OEBGlxg1.js +1 -0
- package/admin-dist/public/assets/content-types-CjQliqVV.js +2 -0
- package/admin-dist/public/assets/{globals-CS6BZ0zp.css → globals-hAmgC66w.css} +1 -1
- package/admin-dist/public/assets/index-BH_ECMhv.js +1 -0
- package/admin-dist/public/assets/{label-KNtpL71g.js → label-DCsUdvFh.js} +1 -1
- package/admin-dist/public/assets/{link-2-Bw2aI4V4.js → link-2-Czw1N61H.js} +1 -1
- package/admin-dist/public/assets/{list-sYepHjt_.js → list-DtCsXj8-.js} +1 -1
- package/admin-dist/public/assets/{main-CKj5yfEi.js → main-CXgkZMhe.js} +3 -3
- package/admin-dist/public/assets/{media-Bkrkffm7.js → media-DTJ3-ViE.js} +1 -1
- package/admin-dist/public/assets/{new._contentTypeId-C3LstjNs.js → new._contentTypeId-CoTDxKzf.js} +1 -1
- package/admin-dist/public/assets/{plus-DUn8v_Xf.js → plus-xCFJK0RC.js} +1 -1
- package/admin-dist/public/assets/{rotate-ccw-DJEoHcRI.js → rotate-ccw-DIqK63wY.js} +1 -1
- package/admin-dist/public/assets/scroll-area-B-yrE66a.js +1 -0
- package/admin-dist/public/assets/{search-MuAUDJKR.js → search-CbCbboeU.js} +1 -1
- package/admin-dist/public/assets/select-Co3TZFJb.js +1 -0
- package/admin-dist/public/assets/settings-BspTTv_o.js +1 -0
- package/admin-dist/public/assets/switch-CfavASmR.js +1 -0
- package/admin-dist/public/assets/tabs-CN5s5u2W.js +1 -0
- package/admin-dist/public/assets/tanstack-adapter-npeE3RdY.js +1 -0
- package/admin-dist/public/assets/taxonomies-CgG46fIF.js +1 -0
- package/admin-dist/public/assets/{textarea-BTy7nwzR.js → textarea-BJ0XFZpT.js} +1 -1
- package/admin-dist/public/assets/trash-B3daldm5.js +1 -0
- package/admin-dist/public/assets/{triangle-alert-E52Vfeuh.js → triangle-alert-BZRcqsUg.js} +1 -1
- package/admin-dist/public/assets/useBreadcrumbLabel-DwZlwvFF.js +1 -0
- package/admin-dist/public/assets/{usePermissions-Basjs9BT.js → usePermissions-C1JQhfqb.js} +1 -1
- package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +7 -0
- package/admin-dist/server/_ssr/{badge-6BsP37vG.mjs → CmsButton-B45JAKR1.mjs} +33 -33
- package/admin-dist/server/_ssr/{CmsEmptyState-DU7-7-mV.mjs → CmsEmptyState-D_BQFAVR.mjs} +2 -2
- package/admin-dist/server/_ssr/{CmsPageHeader-CseW0AHm.mjs → CmsPageHeader-CrUZA59A.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsStatusBadge-B_pi4KCp.mjs → CmsStatusBadge-B-sj6yaj.mjs} +2 -2
- package/admin-dist/server/_ssr/CmsSurface-DKJZhpjk.mjs +44 -0
- package/admin-dist/server/_ssr/{CmsToolbar-X75ex6ek.mjs → CmsToolbar-ByaW5iXf.mjs} +2 -2
- package/admin-dist/server/_ssr/{ContentEntryEditor-CepusRsA.mjs → ContentEntryEditor-D3_Jb1dq.mjs} +11 -11
- package/admin-dist/server/_ssr/{TaxonomyFilter-Bwrq0-cz.mjs → TaxonomyFilter-BRJkuCtA.mjs} +4 -4
- package/admin-dist/server/_ssr/{_contentTypeId-BqYKEcLr.mjs → _contentTypeId-B9kA6CaM.mjs} +11 -11
- package/admin-dist/server/_ssr/{_entryId-CRfnqeDf.mjs → _entryId-BddcMkZN.mjs} +14 -14
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-Dd7AmelK.mjs +4 -0
- package/admin-dist/server/_ssr/{command-fy8epIKf.mjs → command-CGtVr8Gb.mjs} +1 -1
- package/admin-dist/server/_ssr/{content-B5RhL7uW.mjs → content-D1tbeOd0.mjs} +201 -86
- package/admin-dist/server/_ssr/{content-types-BIOqCQYN.mjs → content-types-BZqY_BER.mjs} +279 -103
- package/admin-dist/server/_ssr/{index-DHSHDPt1.mjs → index-BIdq4xaC.mjs} +88 -17
- package/admin-dist/server/_ssr/index.mjs +2 -2
- package/admin-dist/server/_ssr/{label-C8Dko1j7.mjs → label-T-QNKAr6.mjs} +1 -1
- package/admin-dist/server/_ssr/{media-CSx3XttC.mjs → media-C-xqjBrl.mjs} +40 -40
- package/admin-dist/server/_ssr/{new._contentTypeId-DzanEZQM.mjs → new._contentTypeId-DWic9cRq.mjs} +13 -13
- package/admin-dist/server/_ssr/{router-DDWcF-kt.mjs → router-D1BMAMJT.mjs} +11 -11
- package/admin-dist/server/_ssr/{scroll-area-bjPYwhXN.mjs → scroll-area-C0pic_WA.mjs} +1 -1
- package/admin-dist/server/_ssr/{select-BUhDDf4T.mjs → select-CqmuN2F6.mjs} +1 -1
- package/admin-dist/server/_ssr/{settings-DAsxnw2q.mjs → settings-CAkncGGV.mjs} +211 -129
- package/admin-dist/server/_ssr/{switch-BgyRtQ1Z.mjs → switch-CgmuJkT9.mjs} +1 -1
- package/admin-dist/server/_ssr/{tabs-DzMdRB1A.mjs → tabs-CnMj0aRy.mjs} +5 -3
- package/admin-dist/server/_ssr/tanstack-adapter-BXZrMauE.mjs +119 -0
- package/admin-dist/server/_ssr/{taxonomies-C8j8g5Q5.mjs → taxonomies-thl3BfVm.mjs} +168 -68
- package/admin-dist/server/_ssr/{textarea-9jNeYJSc.mjs → textarea-4K5OJgeh.mjs} +1 -1
- package/admin-dist/server/_ssr/{trash-DYMxwhZB.mjs → trash-B40Gx5zP.mjs} +206 -86
- package/admin-dist/server/_ssr/{useBreadcrumbLabel-FNSAr2Ha.mjs → useBreadcrumbLabel-rn-fL4zV.mjs} +1 -1
- package/admin-dist/server/_ssr/{usePermissions-BJGGahrJ.mjs → usePermissions-CKeM6_Vw.mjs} +1 -1
- package/admin-dist/server/index.mjs +194 -180
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +156 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/client/admin-config.d.ts +2 -2
- package/dist/client/admin-config.js +2 -2
- package/dist/client/adminApi.d.ts +1877 -1851
- package/dist/client/adminApi.d.ts.map +1 -1
- package/dist/client/adminApi.js +649 -629
- package/dist/client/adminApi.js.map +1 -1
- package/dist/client/agentTools.d.ts +7 -17
- package/dist/client/agentTools.d.ts.map +1 -1
- package/dist/client/agentTools.js +4 -4
- package/dist/client/index.d.ts +4 -4
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/schema/codegen.d.ts +2 -2
- package/dist/client/schema/codegen.d.ts.map +1 -1
- package/dist/client/schema/codegen.js +3 -3
- package/dist/client/schema/codegen.js.map +1 -1
- package/dist/client/schema/defineContentType.d.ts +3 -3
- package/dist/client/schema/defineContentType.js +3 -3
- package/dist/client/schema/index.d.ts +7 -7
- package/dist/client/schema/index.d.ts.map +1 -1
- package/dist/client/schema/index.js +5 -5
- package/dist/client/schema/index.js.map +1 -1
- package/dist/client/schema/schemaDrift.d.ts +1 -1
- package/dist/client/schema/schemaDrift.js +1 -1
- package/dist/client/schema/typedClient.d.ts +2 -2
- package/dist/client/schema/typedClient.js +2 -2
- package/dist/client/schema/types.d.ts +1 -1
- package/dist/client/schema/types.js +1 -1
- package/dist/client/wrapper.d.ts +108 -65
- package/dist/client/wrapper.d.ts.map +1 -1
- package/dist/client/wrapper.js +22 -22
- package/dist/client/wrapper.js.map +1 -1
- package/dist/component/convex.config.d.ts +2 -2
- package/dist/component/convex.config.js +2 -2
- package/dist/component/index.d.ts +1 -1
- package/dist/component/index.js +1 -1
- package/dist/component/lib/ragContentChunker.d.ts +1 -1
- package/dist/component/lib/ragContentChunker.js +1 -1
- package/dist/component/roles.d.ts +1 -1
- package/dist/component/roles.js +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +13 -7
- package/dist/react/index.js.map +1 -1
- package/dist/test.d.ts +2 -2
- package/dist/test.js +2 -2
- package/package.json +31 -11
- package/admin-dist/public/assets/alert-BXjTqrwQ.js +0 -1
- package/admin-dist/public/assets/content-_LXl3pp7.js +0 -1
- package/admin-dist/public/assets/content-types-KjxaXGxY.js +0 -2
- package/admin-dist/public/assets/index-DNGIZHL-.js +0 -1
- package/admin-dist/public/assets/scroll-area-DfIlT0in.js +0 -1
- package/admin-dist/public/assets/select-BD29IXCI.js +0 -1
- package/admin-dist/public/assets/settings-DmMyn_6A.js +0 -1
- package/admin-dist/public/assets/switch-h3Rrnl5i.js +0 -1
- package/admin-dist/public/assets/tabs-imc8h-Dp.js +0 -1
- package/admin-dist/public/assets/taxonomies-dAsrT65H.js +0 -1
- package/admin-dist/public/assets/trash-SAWKZZHv.js +0 -1
- package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +0 -1
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +0 -4
- package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +0 -92
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { B as Badge, C as CmsButton } from "./
|
|
4
|
-
import { L as Label } from "./label-
|
|
5
|
-
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem } from "./select-
|
|
6
|
-
import { u as usePermissions } from "./usePermissions-
|
|
7
|
-
import { C as CmsPageHeader } from "./CmsPageHeader-
|
|
8
|
-
import {
|
|
9
|
-
import { S as Switch } from "./switch-
|
|
1
|
+
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
+
import { a as api, u as useSettingsConfig, R as RouteGuard, b as useTheme, c as cn } from "./router-D1BMAMJT.mjs";
|
|
3
|
+
import { B as Badge, C as CmsButton } from "./CmsButton-B45JAKR1.mjs";
|
|
4
|
+
import { L as Label } from "./label-T-QNKAr6.mjs";
|
|
5
|
+
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem } from "./select-CqmuN2F6.mjs";
|
|
6
|
+
import { u as usePermissions } from "./usePermissions-CKeM6_Vw.mjs";
|
|
7
|
+
import { C as CmsPageHeader } from "./CmsPageHeader-CrUZA59A.mjs";
|
|
8
|
+
import { C as CmsSurface } from "./CmsSurface-DKJZhpjk.mjs";
|
|
9
|
+
import { S as Switch } from "./switch-CgmuJkT9.mjs";
|
|
10
|
+
import { u as useTanStackNavigation, A as Alert, a as AlertDescription } from "./tanstack-adapter-BXZrMauE.mjs";
|
|
10
11
|
import { u as useQuery, d as useMutation } from "../_libs/convex.mjs";
|
|
11
12
|
import { O as TriangleAlert, Z as Check, X, _ as Sun, $ as Moon, a0 as Monitor } from "../_libs/lucide-react.mjs";
|
|
12
13
|
import "../_chunks/_libs/@tanstack/react-router.mjs";
|
|
@@ -84,49 +85,23 @@ import "../_chunks/_libs/@radix-ui/number.mjs";
|
|
|
84
85
|
import "../_chunks/_libs/@radix-ui/react-use-previous.mjs";
|
|
85
86
|
import "../_chunks/_libs/@radix-ui/react-visually-hidden.mjs";
|
|
86
87
|
import "../_chunks/_libs/@radix-ui/react-switch.mjs";
|
|
87
|
-
const LOCALE_OPTIONS = [
|
|
88
|
-
value: "en",
|
|
89
|
-
label: "
|
|
90
|
-
},
|
|
91
|
-
value: "
|
|
92
|
-
label: "
|
|
93
|
-
},
|
|
94
|
-
value: "
|
|
95
|
-
label: "
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
label: "
|
|
99
|
-
|
|
100
|
-
value: "
|
|
101
|
-
|
|
102
|
-
}, {
|
|
103
|
-
value: "pt",
|
|
104
|
-
label: "Portuguese (pt)"
|
|
105
|
-
}, {
|
|
106
|
-
value: "zh",
|
|
107
|
-
label: "Chinese (zh)"
|
|
108
|
-
}, {
|
|
109
|
-
value: "ja",
|
|
110
|
-
label: "Japanese (ja)"
|
|
111
|
-
}];
|
|
112
|
-
const THEME_OPTIONS = [{
|
|
113
|
-
value: "light",
|
|
114
|
-
label: "Light",
|
|
115
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Sun, { className: "size-4" })
|
|
116
|
-
}, {
|
|
117
|
-
value: "dark",
|
|
118
|
-
label: "Dark",
|
|
119
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Moon, { className: "size-4" })
|
|
120
|
-
}, {
|
|
121
|
-
value: "system",
|
|
122
|
-
label: "System",
|
|
123
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Monitor, { className: "size-4" })
|
|
124
|
-
}];
|
|
88
|
+
const LOCALE_OPTIONS = [
|
|
89
|
+
{ value: "en", label: "English (en)" },
|
|
90
|
+
{ value: "es", label: "Spanish (es)" },
|
|
91
|
+
{ value: "fr", label: "French (fr)" },
|
|
92
|
+
{ value: "de", label: "German (de)" },
|
|
93
|
+
{ value: "it", label: "Italian (it)" },
|
|
94
|
+
{ value: "pt", label: "Portuguese (pt)" },
|
|
95
|
+
{ value: "zh", label: "Chinese (zh)" },
|
|
96
|
+
{ value: "ja", label: "Japanese (ja)" }
|
|
97
|
+
];
|
|
98
|
+
const THEME_OPTIONS = [
|
|
99
|
+
{ value: "light", label: "Light", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Sun, { className: "size-4" }) },
|
|
100
|
+
{ value: "dark", label: "Dark", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Moon, { className: "size-4" }) },
|
|
101
|
+
{ value: "system", label: "System", icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Monitor, { className: "size-4" }) }
|
|
102
|
+
];
|
|
125
103
|
function AppearanceSection() {
|
|
126
|
-
const {
|
|
127
|
-
theme,
|
|
128
|
-
setTheme
|
|
129
|
-
} = useTheme();
|
|
104
|
+
const { theme, setTheme } = useTheme();
|
|
130
105
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
131
106
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "mb-4 text-lg font-semibold text-foreground", children: "Appearance" }),
|
|
132
107
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -134,24 +109,32 @@ function AppearanceSection() {
|
|
|
134
109
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Theme" }),
|
|
135
110
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Choose your preferred color theme for the admin interface." })
|
|
136
111
|
] }),
|
|
137
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex gap-1 rounded-lg border bg-muted/50 p-1", children: THEME_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
112
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex gap-1 rounded-lg border bg-muted/50 p-1", children: THEME_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
113
|
+
"button",
|
|
114
|
+
{
|
|
115
|
+
type: "button",
|
|
116
|
+
onClick: () => setTheme(option.value),
|
|
117
|
+
className: cn(
|
|
118
|
+
"flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors",
|
|
119
|
+
theme === option.value ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
|
|
120
|
+
),
|
|
121
|
+
children: [
|
|
122
|
+
option.icon,
|
|
123
|
+
option.label
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
option.value
|
|
127
|
+
)) })
|
|
141
128
|
] }) })
|
|
142
129
|
] });
|
|
143
130
|
}
|
|
144
|
-
function SettingsPage() {
|
|
145
|
-
const {
|
|
146
|
-
canManageSettings
|
|
147
|
-
} = usePermissions();
|
|
131
|
+
function SettingsPage({ api: api2, navigation: _navigation }) {
|
|
132
|
+
const { canManageSettings } = usePermissions();
|
|
148
133
|
const canEdit = canManageSettings();
|
|
149
|
-
const {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
const updateSettings = useMutation(api.settings.update);
|
|
154
|
-
const resetSettings = useMutation(api.settings.reset);
|
|
134
|
+
const { baseConfig } = useSettingsConfig();
|
|
135
|
+
const settings = useQuery(api2.settings.get);
|
|
136
|
+
const updateSettings = useMutation(api2.settings.update);
|
|
137
|
+
const resetSettings = useMutation(api2.settings.reset);
|
|
155
138
|
const [formData, setFormData] = reactExports.useState(null);
|
|
156
139
|
const [isDirty, setIsDirty] = reactExports.useState(false);
|
|
157
140
|
const [feedbackStatus, setFeedbackStatus] = reactExports.useState("idle");
|
|
@@ -166,27 +149,33 @@ function SettingsPage() {
|
|
|
166
149
|
setFormData(settings);
|
|
167
150
|
}
|
|
168
151
|
}, [settings, isDirty]);
|
|
169
|
-
const handleLocaleChange = reactExports.useCallback(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
152
|
+
const handleLocaleChange = reactExports.useCallback(
|
|
153
|
+
(value) => {
|
|
154
|
+
if (!formData) return;
|
|
155
|
+
setFormData({
|
|
156
|
+
...formData,
|
|
157
|
+
defaultLocale: value
|
|
158
|
+
});
|
|
159
|
+
setIsDirty(true);
|
|
160
|
+
setFeedbackStatus("idle");
|
|
161
|
+
},
|
|
162
|
+
[formData]
|
|
163
|
+
);
|
|
164
|
+
const handleFeatureChange = reactExports.useCallback(
|
|
165
|
+
(feature) => {
|
|
166
|
+
if (!formData) return;
|
|
167
|
+
setFormData({
|
|
168
|
+
...formData,
|
|
169
|
+
features: {
|
|
170
|
+
...formData.features,
|
|
171
|
+
[feature]: !formData.features[feature]
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
setIsDirty(true);
|
|
175
|
+
setFeedbackStatus("idle");
|
|
176
|
+
},
|
|
177
|
+
[formData]
|
|
178
|
+
);
|
|
190
179
|
const handleSave = reactExports.useCallback(async () => {
|
|
191
180
|
if (!formData || !isDirty) return;
|
|
192
181
|
setFeedbackStatus("saving");
|
|
@@ -203,11 +192,15 @@ function SettingsPage() {
|
|
|
203
192
|
}, 3e3);
|
|
204
193
|
} catch (error) {
|
|
205
194
|
setFeedbackStatus("error");
|
|
206
|
-
setErrorMessage(
|
|
195
|
+
setErrorMessage(
|
|
196
|
+
error instanceof Error ? error.message : "Failed to save settings"
|
|
197
|
+
);
|
|
207
198
|
}
|
|
208
199
|
}, [formData, isDirty, updateSettings]);
|
|
209
200
|
const handleReset = reactExports.useCallback(async () => {
|
|
210
|
-
const confirmed = window.confirm(
|
|
201
|
+
const confirmed = window.confirm(
|
|
202
|
+
"Are you sure you want to reset all settings to their defaults? This action cannot be undone."
|
|
203
|
+
);
|
|
211
204
|
if (!confirmed) return;
|
|
212
205
|
setFeedbackStatus("saving");
|
|
213
206
|
setErrorMessage(null);
|
|
@@ -221,7 +214,9 @@ function SettingsPage() {
|
|
|
221
214
|
}, 3e3);
|
|
222
215
|
} catch (error) {
|
|
223
216
|
setFeedbackStatus("error");
|
|
224
|
-
setErrorMessage(
|
|
217
|
+
setErrorMessage(
|
|
218
|
+
error instanceof Error ? error.message : "Failed to reset settings"
|
|
219
|
+
);
|
|
225
220
|
}
|
|
226
221
|
}, [resetSettings]);
|
|
227
222
|
const handleDiscard = reactExports.useCallback(() => {
|
|
@@ -233,11 +228,14 @@ function SettingsPage() {
|
|
|
233
228
|
}
|
|
234
229
|
}, [settings]);
|
|
235
230
|
if (settings === void 0) {
|
|
236
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
231
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: { resource: "settings", action: "manage" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
232
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
233
|
+
CmsPageHeader,
|
|
234
|
+
{
|
|
235
|
+
title: "Settings",
|
|
236
|
+
description: "Configure your CMS settings and preferences."
|
|
237
|
+
}
|
|
238
|
+
),
|
|
241
239
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center py-12", children: [
|
|
242
240
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "size-8 animate-spin rounded-full border-2 border-muted border-t-primary" }),
|
|
243
241
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-4 text-sm text-muted-foreground", children: "Loading settings..." })
|
|
@@ -245,34 +243,63 @@ function SettingsPage() {
|
|
|
245
243
|
] }) });
|
|
246
244
|
}
|
|
247
245
|
if (settings === null && !formData) {
|
|
248
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
246
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: { resource: "settings", action: "manage" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
247
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
248
|
+
CmsPageHeader,
|
|
249
|
+
{
|
|
250
|
+
title: "Settings",
|
|
251
|
+
description: "Configure your CMS settings and preferences."
|
|
252
|
+
}
|
|
253
|
+
),
|
|
253
254
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { variant: "destructive", children: [
|
|
254
255
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-4" }),
|
|
255
256
|
/* @__PURE__ */ jsxRuntimeExports.jsx(AlertDescription, { children: "Failed to load settings. Please try refreshing the page." })
|
|
256
257
|
] })
|
|
257
258
|
] }) });
|
|
258
259
|
}
|
|
259
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: {
|
|
260
|
-
resource: "settings",
|
|
261
|
-
action: "manage"
|
|
262
|
-
}, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
260
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: { resource: "settings", action: "manage" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
263
261
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between", children: [
|
|
264
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
262
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
263
|
+
CmsPageHeader,
|
|
264
|
+
{
|
|
265
|
+
title: "Settings",
|
|
266
|
+
description: "Configure your CMS settings and preferences."
|
|
267
|
+
}
|
|
268
|
+
),
|
|
265
269
|
canEdit && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
266
|
-
feedbackStatus === "saved" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
+
feedbackStatus === "saved" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
271
|
+
Badge,
|
|
272
|
+
{
|
|
273
|
+
variant: "secondary",
|
|
274
|
+
className: "gap-1 bg-emerald-100 text-emerald-700",
|
|
275
|
+
children: [
|
|
276
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3" }),
|
|
277
|
+
"Settings saved successfully"
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
),
|
|
270
281
|
feedbackStatus === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
271
282
|
/* @__PURE__ */ jsxRuntimeExports.jsx(X, { className: "size-3" }),
|
|
272
283
|
errorMessage || "An error occurred"
|
|
273
284
|
] }),
|
|
274
|
-
isDirty && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
275
|
-
|
|
285
|
+
isDirty && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
286
|
+
CmsButton,
|
|
287
|
+
{
|
|
288
|
+
variant: "secondary",
|
|
289
|
+
onClick: handleDiscard,
|
|
290
|
+
disabled: feedbackStatus === "saving",
|
|
291
|
+
children: "Discard Changes"
|
|
292
|
+
}
|
|
293
|
+
),
|
|
294
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
295
|
+
CmsButton,
|
|
296
|
+
{
|
|
297
|
+
onClick: handleSave,
|
|
298
|
+
disabled: !isDirty,
|
|
299
|
+
loading: feedbackStatus === "saving",
|
|
300
|
+
children: "Save Changes"
|
|
301
|
+
}
|
|
302
|
+
)
|
|
276
303
|
] })
|
|
277
304
|
] }),
|
|
278
305
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
|
|
@@ -284,10 +311,18 @@ function SettingsPage() {
|
|
|
284
311
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Default Locale" }),
|
|
285
312
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "The default language for new content entries." })
|
|
286
313
|
] }),
|
|
287
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
314
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
315
|
+
Select,
|
|
316
|
+
{
|
|
317
|
+
value: formData?.defaultLocale || "en",
|
|
318
|
+
onValueChange: handleLocaleChange,
|
|
319
|
+
disabled: !canEdit || feedbackStatus === "saving",
|
|
320
|
+
children: [
|
|
321
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "w-48", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {}) }),
|
|
322
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectContent, { children: LOCALE_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: option.value, children: option.label }, option.value)) })
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
)
|
|
291
326
|
] }) })
|
|
292
327
|
] }),
|
|
293
328
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
@@ -298,28 +333,56 @@ function SettingsPage() {
|
|
|
298
333
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Enable Versioning" }),
|
|
299
334
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Track content history and enable rollback to previous versions" })
|
|
300
335
|
] }),
|
|
301
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
336
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
337
|
+
Switch,
|
|
338
|
+
{
|
|
339
|
+
checked: formData?.features.versioning ?? true,
|
|
340
|
+
onCheckedChange: () => handleFeatureChange("versioning"),
|
|
341
|
+
disabled: !canEdit || feedbackStatus === "saving"
|
|
342
|
+
}
|
|
343
|
+
)
|
|
302
344
|
] }),
|
|
303
345
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
304
346
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
305
347
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Enable Scheduling" }),
|
|
306
348
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Schedule content to publish at a future date and time" })
|
|
307
349
|
] }),
|
|
308
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
350
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
351
|
+
Switch,
|
|
352
|
+
{
|
|
353
|
+
checked: formData?.features.scheduling ?? true,
|
|
354
|
+
onCheckedChange: () => handleFeatureChange("scheduling"),
|
|
355
|
+
disabled: !canEdit || feedbackStatus === "saving"
|
|
356
|
+
}
|
|
357
|
+
)
|
|
309
358
|
] }),
|
|
310
359
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
311
360
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
312
361
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Enable Localization" }),
|
|
313
362
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Support multiple languages for content entries" })
|
|
314
363
|
] }),
|
|
315
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
364
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
365
|
+
Switch,
|
|
366
|
+
{
|
|
367
|
+
checked: formData?.features.localization ?? false,
|
|
368
|
+
onCheckedChange: () => handleFeatureChange("localization"),
|
|
369
|
+
disabled: !canEdit || feedbackStatus === "saving"
|
|
370
|
+
}
|
|
371
|
+
)
|
|
316
372
|
] }),
|
|
317
373
|
baseConfig.navigation.showMedia && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
318
374
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
319
375
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Enable Media Management" }),
|
|
320
376
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Use the built-in media library for image and file uploads" })
|
|
321
377
|
] }),
|
|
322
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
378
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
379
|
+
Switch,
|
|
380
|
+
{
|
|
381
|
+
checked: formData?.features.mediaManagement ?? true,
|
|
382
|
+
onCheckedChange: () => handleFeatureChange("mediaManagement"),
|
|
383
|
+
disabled: !canEdit || feedbackStatus === "saving"
|
|
384
|
+
}
|
|
385
|
+
)
|
|
323
386
|
] })
|
|
324
387
|
] })
|
|
325
388
|
] }),
|
|
@@ -330,19 +393,38 @@ function SettingsPage() {
|
|
|
330
393
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "mt-1 block rounded-md bg-muted px-3 py-2 text-sm", children: "https://majestic-beagle-49.convex.cloud" })
|
|
331
394
|
] }) })
|
|
332
395
|
] }),
|
|
333
|
-
canEdit && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
396
|
+
canEdit && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
397
|
+
CmsSurface,
|
|
398
|
+
{
|
|
399
|
+
elevation: "base",
|
|
400
|
+
className: "border-red-200 p-6 dark:border-red-900",
|
|
401
|
+
children: [
|
|
402
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "mb-4 text-lg font-semibold text-red-600", children: "Danger Zone" }),
|
|
403
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
404
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
405
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Reset to Defaults" }),
|
|
406
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Reset all settings to their default values. This cannot be undone." })
|
|
407
|
+
] }),
|
|
408
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
409
|
+
CmsButton,
|
|
410
|
+
{
|
|
411
|
+
variant: "danger",
|
|
412
|
+
onClick: handleReset,
|
|
413
|
+
disabled: feedbackStatus === "saving",
|
|
414
|
+
children: "Reset Settings"
|
|
415
|
+
}
|
|
416
|
+
)
|
|
417
|
+
] })
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
)
|
|
343
421
|
] })
|
|
344
422
|
] }) });
|
|
345
423
|
}
|
|
424
|
+
function SettingsRoute() {
|
|
425
|
+
const navigation = useTanStackNavigation();
|
|
426
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsPage, { api, navigation });
|
|
427
|
+
}
|
|
346
428
|
export {
|
|
347
|
-
|
|
429
|
+
SettingsRoute as component
|
|
348
430
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
|
|
2
2
|
import { R as Root, T as Thumb } from "../_chunks/_libs/@radix-ui/react-switch.mjs";
|
|
3
|
-
import { c as cn } from "./router-
|
|
3
|
+
import { c as cn } from "./router-D1BMAMJT.mjs";
|
|
4
4
|
function Switch({
|
|
5
5
|
className,
|
|
6
6
|
...props
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { C as CmsButton } from "./
|
|
3
|
-
import { c as cn } from "./router-
|
|
2
|
+
import { C as CmsButton } from "./CmsButton-B45JAKR1.mjs";
|
|
3
|
+
import { c as cn } from "./router-D1BMAMJT.mjs";
|
|
4
4
|
import { R as Root2, L as List, T as Trigger, C as Content } from "../_chunks/_libs/@radix-ui/react-tabs.mjs";
|
|
5
5
|
import { g as CircleAlert, a3 as Upload, X, am as RefreshCw, Z as Check } from "../_libs/lucide-react.mjs";
|
|
6
6
|
import { d as useMutation } from "../_libs/convex.mjs";
|
|
@@ -54,7 +54,9 @@ function uploadWithXHR(url, file, signal, onProgress) {
|
|
|
54
54
|
reject(new Error("Invalid response from upload server"));
|
|
55
55
|
}
|
|
56
56
|
} else {
|
|
57
|
-
reject(
|
|
57
|
+
reject(
|
|
58
|
+
new Error(`Upload failed: ${xhr.statusText || `HTTP ${xhr.status}`}`)
|
|
59
|
+
);
|
|
58
60
|
}
|
|
59
61
|
};
|
|
60
62
|
xhr.onerror = () => {
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { r as reactExports, j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
+
import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
3
|
+
import { c as cn } from "./router-D1BMAMJT.mjs";
|
|
4
|
+
import { d as useNavigate, e as useLocation, f as useParams } from "../_chunks/_libs/@tanstack/react-router.mjs";
|
|
5
|
+
const alertVariants = cva(
|
|
6
|
+
"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
|
|
7
|
+
{
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "bg-card text-card-foreground",
|
|
11
|
+
destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
variant: "default"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
function Alert({
|
|
20
|
+
className,
|
|
21
|
+
variant,
|
|
22
|
+
...props
|
|
23
|
+
}) {
|
|
24
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
"data-slot": "alert",
|
|
28
|
+
role: "alert",
|
|
29
|
+
className: cn(alertVariants({ variant }), className),
|
|
30
|
+
...props
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
function AlertDescription({
|
|
35
|
+
className,
|
|
36
|
+
...props
|
|
37
|
+
}) {
|
|
38
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
39
|
+
"div",
|
|
40
|
+
{
|
|
41
|
+
"data-slot": "alert-description",
|
|
42
|
+
className: cn(
|
|
43
|
+
"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
|
|
44
|
+
className
|
|
45
|
+
),
|
|
46
|
+
...props
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
function useTanStackNavigation() {
|
|
51
|
+
const navigate = useNavigate();
|
|
52
|
+
const location = useLocation();
|
|
53
|
+
const params = useParams({ strict: false });
|
|
54
|
+
const handleNavigate = reactExports.useCallback(
|
|
55
|
+
(route, routeParams) => {
|
|
56
|
+
let path = route;
|
|
57
|
+
if (routeParams) {
|
|
58
|
+
for (const [key, value] of Object.entries(routeParams)) {
|
|
59
|
+
path = path.replace(`:${key}`, value).replace(`$${key}`, value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
navigate({ to: path });
|
|
63
|
+
},
|
|
64
|
+
[navigate]
|
|
65
|
+
);
|
|
66
|
+
const navigateToEntry = reactExports.useCallback(
|
|
67
|
+
(entryId) => {
|
|
68
|
+
navigate({ to: "/entries/$entryId", params: { entryId } });
|
|
69
|
+
},
|
|
70
|
+
[navigate]
|
|
71
|
+
);
|
|
72
|
+
const navigateToContentType = reactExports.useCallback(
|
|
73
|
+
(contentTypeId) => {
|
|
74
|
+
navigate({
|
|
75
|
+
to: "/entries/type/$contentTypeId",
|
|
76
|
+
params: { contentTypeId }
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
[navigate]
|
|
80
|
+
);
|
|
81
|
+
const navigateToNewEntry = reactExports.useCallback(
|
|
82
|
+
(contentTypeId) => {
|
|
83
|
+
navigate({
|
|
84
|
+
to: "/entries/new/$contentTypeId",
|
|
85
|
+
params: { contentTypeId }
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
[navigate]
|
|
89
|
+
);
|
|
90
|
+
const goBack = reactExports.useCallback(() => {
|
|
91
|
+
window.history.back();
|
|
92
|
+
}, []);
|
|
93
|
+
return reactExports.useMemo(
|
|
94
|
+
() => ({
|
|
95
|
+
navigate: handleNavigate,
|
|
96
|
+
currentRoute: location.pathname,
|
|
97
|
+
params: params ?? {},
|
|
98
|
+
canGoBack: window.history.length > 1,
|
|
99
|
+
goBack,
|
|
100
|
+
navigateToEntry,
|
|
101
|
+
navigateToContentType,
|
|
102
|
+
navigateToNewEntry
|
|
103
|
+
}),
|
|
104
|
+
[
|
|
105
|
+
handleNavigate,
|
|
106
|
+
location.pathname,
|
|
107
|
+
params,
|
|
108
|
+
goBack,
|
|
109
|
+
navigateToEntry,
|
|
110
|
+
navigateToContentType,
|
|
111
|
+
navigateToNewEntry
|
|
112
|
+
]
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
Alert as A,
|
|
117
|
+
AlertDescription as a,
|
|
118
|
+
useTanStackNavigation as u
|
|
119
|
+
};
|