convex-cms 0.0.9-alpha.6 → 0.0.9-alpha.7
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/admin/src/contexts/SettingsConfigContext.tsx +67 -11
- package/admin/src/pages/SettingsPage.tsx +124 -80
- package/admin/src/routes/__root.tsx +4 -1
- package/admin-dist/nitro.json +1 -1
- package/admin-dist/public/assets/{CmsEmptyState-la_kLGHv.js → CmsEmptyState-gxhf-b6F.js} +1 -1
- package/admin-dist/public/assets/{CmsPageHeader-Cf0SafVG.js → CmsPageHeader-equV7Sd9.js} +1 -1
- package/admin-dist/public/assets/{CmsStatusBadge-BovugIHH.js → CmsStatusBadge-DQAslyW4.js} +1 -1
- package/admin-dist/public/assets/{CmsSurface-Dp1TegU4.js → CmsSurface-DdC_aGB5.js} +1 -1
- package/admin-dist/public/assets/{CmsToolbar-B1zdfMu0.js → CmsToolbar-Crleacii.js} +1 -1
- package/admin-dist/public/assets/{ContentEntryEditor-CB--8SC3.js → ContentEntryEditor-RmtIo3lE.js} +1 -1
- package/admin-dist/public/assets/{TaxonomyFilter-fmZxxbdA.js → TaxonomyFilter-BsoK90hw.js} +1 -1
- package/admin-dist/public/assets/{_contentTypeId-vT09P77i.js → _contentTypeId-Bn2ItET5.js} +1 -1
- package/admin-dist/public/assets/{_entryId-Dhq6ybYt.js → _entryId-CkZWLvOZ.js} +1 -1
- package/admin-dist/public/assets/{alert-DfdkD-ZZ.js → alert-C7q0k4u0.js} +1 -1
- package/admin-dist/public/assets/{badge-Cmc3T9vs.js → badge-DiaAY1It.js} +1 -1
- package/admin-dist/public/assets/{circle-check-big-B8AJAcBi.js → circle-check-big-Bl0y10am.js} +1 -1
- package/admin-dist/public/assets/{command-BsmkQ6_j.js → command-QyTDg7pa.js} +1 -1
- package/admin-dist/public/assets/{content-DdQ1u7T4.js → content-D868GT7T.js} +1 -1
- package/admin-dist/public/assets/{content-types-QYcwm0Sy.js → content-types-DD7fJA5i.js} +1 -1
- package/admin-dist/public/assets/{index-kxLB3e43.js → index-CMnzrG_D.js} +1 -1
- package/admin-dist/public/assets/{main-BrFRroF1.js → main-DWSY6jZL.js} +19 -19
- package/admin-dist/public/assets/{media-Cx9IyZvU.js → media-aqxopgtw.js} +1 -1
- package/admin-dist/public/assets/{new._contentTypeId-2HsDwzy_.js → new._contentTypeId-9ji3Hibs.js} +1 -1
- package/admin-dist/public/assets/{pencil-PaJhpDeC.js → pencil-D8GqMaV3.js} +1 -1
- package/admin-dist/public/assets/{refresh-cw-D_KNzBUN.js → refresh-cw-JipRPLLT.js} +1 -1
- package/admin-dist/public/assets/{rotate-ccw-I3wzW1RQ.js → rotate-ccw-CK11hP79.js} +1 -1
- package/admin-dist/public/assets/{scroll-area-t72-FBB4.js → scroll-area-CJS1P20j.js} +1 -1
- package/admin-dist/public/assets/{search-BsuImjd-.js → search-BT8HTHxb.js} +1 -1
- package/admin-dist/public/assets/settings-DCY0s2hR.js +1 -0
- package/admin-dist/public/assets/{switch-DWN_fx2n.js → switch-Cb-ecsrJ.js} +1 -1
- package/admin-dist/public/assets/{tabs-BG0vukFH.js → tabs-CFEXN2p7.js} +1 -1
- package/admin-dist/public/assets/{tanstack-adapter-DHsy8Fjs.js → tanstack-adapter-CGxC-fmP.js} +1 -1
- package/admin-dist/public/assets/{taxonomies-WG8YV2pR.js → taxonomies-C21Z8CBa.js} +1 -1
- package/admin-dist/public/assets/{trash-C3Lt5m9d.js → trash-CMRJlzc0.js} +1 -1
- package/admin-dist/public/assets/{useBreadcrumbLabel-BC8wl3jQ.js → useBreadcrumbLabel-ZZFYdqzi.js} +1 -1
- package/admin-dist/public/assets/{usePermissions-BM1Vv1YJ.js → usePermissions-C2FRye75.js} +1 -1
- package/admin-dist/server/_ssr/{CmsEmptyState-NKmyUWD9.mjs → CmsEmptyState-DWqt3y_O.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsPageHeader-CngxPIOg.mjs → CmsPageHeader-BuN0dOPA.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsStatusBadge-D4fiHjJD.mjs → CmsStatusBadge-CV35-X_8.mjs} +2 -2
- package/admin-dist/server/_ssr/{CmsSurface-DN9I2iuX.mjs → CmsSurface-DEcWf_aJ.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsToolbar-ux-veU96.mjs → CmsToolbar-BMBEZVgb.mjs} +1 -1
- package/admin-dist/server/_ssr/{ContentEntryEditor-BiY9bJr9.mjs → ContentEntryEditor-Db9Sy_0y.mjs} +8 -8
- package/admin-dist/server/_ssr/{TaxonomyFilter-BdtKJie2.mjs → TaxonomyFilter-D_xDfC8t.mjs} +3 -3
- package/admin-dist/server/_ssr/{_contentTypeId-CRo5WQVu.mjs → _contentTypeId-HZlfcQi-.mjs} +10 -10
- package/admin-dist/server/_ssr/{_entryId-FnG3uc_Y.mjs → _entryId-Cc_Ry7AV.mjs} +11 -11
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-DhspKP9e.mjs +4 -0
- package/admin-dist/server/_ssr/{badge-D3SGS0Jp.mjs → badge-CmG74mbX.mjs} +1 -1
- package/admin-dist/server/_ssr/{command-2t7uTBKt.mjs → command-DWXiOsOb.mjs} +1 -1
- package/admin-dist/server/_ssr/{content-CCsSzXeb.mjs → content-CAgFQzx-.mjs} +8 -8
- package/admin-dist/server/_ssr/{content-types-CuVG3uSt.mjs → content-types-CqKvAZ8P.mjs} +6 -6
- package/admin-dist/server/_ssr/{index-CLwCLoco.mjs → index--qYdIqvh.mjs} +3 -3
- package/admin-dist/server/_ssr/index.mjs +2 -2
- package/admin-dist/server/_ssr/{media-D3duVWkk.mjs → media-AXePwPAK.mjs} +9 -9
- package/admin-dist/server/_ssr/{new._contentTypeId-6uKYdgGO.mjs → new._contentTypeId-DNWIl-Ha.mjs} +10 -10
- package/admin-dist/server/_ssr/{router-D9Zk56-q.mjs → router-B_gIkxi2.mjs} +59 -16
- package/admin-dist/server/_ssr/{scroll-area-vbjKsfFu.mjs → scroll-area-Cz-9ry0J.mjs} +1 -1
- package/admin-dist/server/_ssr/{settings-D7-vwjqD.mjs → settings-BjSxo5d6.mjs} +95 -80
- package/admin-dist/server/_ssr/{switch-CbKuV4Qh.mjs → switch-IsC1gdb1.mjs} +1 -1
- package/admin-dist/server/_ssr/{tabs-C_IfqLiu.mjs → tabs-BdgLwrYe.mjs} +1 -1
- package/admin-dist/server/_ssr/{tanstack-adapter-yhyAcBi-.mjs → tanstack-adapter-CFwjrqRl.mjs} +1 -1
- package/admin-dist/server/_ssr/{taxonomies-C15s_nvM.mjs → taxonomies-D5Di9EgA.mjs} +7 -7
- package/admin-dist/server/_ssr/{trash-BPIjmAUh.mjs → trash-DokZl1yA.mjs} +7 -7
- package/admin-dist/server/_ssr/{useBreadcrumbLabel-BC7plG0L.mjs → useBreadcrumbLabel-C4TsA5z0.mjs} +1 -1
- package/admin-dist/server/_ssr/{usePermissions-DJ8a7bZU.mjs → usePermissions-COsRlMp-.mjs} +1 -1
- package/admin-dist/server/index.mjs +153 -153
- package/package.json +1 -1
- package/admin-dist/public/assets/settings-DB6TvceQ.js +0 -1
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BbSNqRIw.mjs +0 -4
|
@@ -5396,14 +5396,15 @@ function useAdminConfig() {
|
|
|
5396
5396
|
}
|
|
5397
5397
|
return config;
|
|
5398
5398
|
}
|
|
5399
|
-
const SettingsConfigContext = reactExports.createContext(
|
|
5400
|
-
|
|
5399
|
+
const SettingsConfigContext = reactExports.createContext(
|
|
5400
|
+
null
|
|
5401
|
+
);
|
|
5402
|
+
function SettingsConfigProviderWithQuery({
|
|
5401
5403
|
baseConfig,
|
|
5402
5404
|
children,
|
|
5403
5405
|
api: api2
|
|
5404
5406
|
}) {
|
|
5405
|
-
const
|
|
5406
|
-
const settings = useQuery(queryArg);
|
|
5407
|
+
const settings = useQuery(api2.getSettings, {}) ?? void 0;
|
|
5407
5408
|
const mergedConfig = reactExports.useMemo(() => {
|
|
5408
5409
|
if (!settings) return baseConfig;
|
|
5409
5410
|
return {
|
|
@@ -5420,10 +5421,45 @@ function SettingsConfigProvider({
|
|
|
5420
5421
|
);
|
|
5421
5422
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsConfigContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntimeExports.jsx(AdminConfigProvider, { config: mergedConfig, children }) });
|
|
5422
5423
|
}
|
|
5424
|
+
function SettingsConfigProviderWithoutQuery({
|
|
5425
|
+
baseConfig,
|
|
5426
|
+
children
|
|
5427
|
+
}) {
|
|
5428
|
+
const contextValue = reactExports.useMemo(
|
|
5429
|
+
() => ({ baseConfig, settings: void 0 }),
|
|
5430
|
+
[baseConfig]
|
|
5431
|
+
);
|
|
5432
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsConfigContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntimeExports.jsx(AdminConfigProvider, { config: baseConfig, children }) });
|
|
5433
|
+
}
|
|
5434
|
+
function SettingsConfigProvider({
|
|
5435
|
+
baseConfig,
|
|
5436
|
+
children,
|
|
5437
|
+
api: api2
|
|
5438
|
+
}) {
|
|
5439
|
+
if (api2) {
|
|
5440
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5441
|
+
SettingsConfigProviderWithQuery,
|
|
5442
|
+
{
|
|
5443
|
+
baseConfig,
|
|
5444
|
+
api: api2,
|
|
5445
|
+
children
|
|
5446
|
+
}
|
|
5447
|
+
);
|
|
5448
|
+
}
|
|
5449
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5450
|
+
SettingsConfigProviderWithoutQuery,
|
|
5451
|
+
{
|
|
5452
|
+
baseConfig,
|
|
5453
|
+
children
|
|
5454
|
+
}
|
|
5455
|
+
);
|
|
5456
|
+
}
|
|
5423
5457
|
function useSettingsConfig() {
|
|
5424
5458
|
const ctx = reactExports.useContext(SettingsConfigContext);
|
|
5425
5459
|
if (!ctx) {
|
|
5426
|
-
throw new Error(
|
|
5460
|
+
throw new Error(
|
|
5461
|
+
"useSettingsConfig must be used within SettingsConfigProvider"
|
|
5462
|
+
);
|
|
5427
5463
|
}
|
|
5428
5464
|
return ctx;
|
|
5429
5465
|
}
|
|
@@ -7805,7 +7841,14 @@ function ConvexProviderWrapper({
|
|
|
7805
7841
|
] })
|
|
7806
7842
|
] }) });
|
|
7807
7843
|
}
|
|
7808
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(ConvexProvider, { client: convex, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ApiProvider, { api: api.admin, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7844
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ConvexProvider, { client: convex, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ApiProvider, { api: api.admin, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7845
|
+
SettingsConfigProvider,
|
|
7846
|
+
{
|
|
7847
|
+
baseConfig: adminConfig,
|
|
7848
|
+
api: { getSettings: api.admin.getSettings },
|
|
7849
|
+
children
|
|
7850
|
+
}
|
|
7851
|
+
) }) });
|
|
7809
7852
|
}
|
|
7810
7853
|
function RootDocument({ children }) {
|
|
7811
7854
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("html", { lang: "en", children: [
|
|
@@ -7816,43 +7859,43 @@ function RootDocument({ children }) {
|
|
|
7816
7859
|
] })
|
|
7817
7860
|
] });
|
|
7818
7861
|
}
|
|
7819
|
-
const $$splitComponentImporter$9 = () => import("./trash-
|
|
7862
|
+
const $$splitComponentImporter$9 = () => import("./trash-DokZl1yA.mjs");
|
|
7820
7863
|
const Route$9 = createFileRoute("/trash")({
|
|
7821
7864
|
component: lazyRouteComponent($$splitComponentImporter$9, "component")
|
|
7822
7865
|
});
|
|
7823
|
-
const $$splitComponentImporter$8 = () => import("./taxonomies-
|
|
7866
|
+
const $$splitComponentImporter$8 = () => import("./taxonomies-D5Di9EgA.mjs");
|
|
7824
7867
|
const Route$8 = createFileRoute("/taxonomies")({
|
|
7825
7868
|
component: lazyRouteComponent($$splitComponentImporter$8, "component")
|
|
7826
7869
|
});
|
|
7827
|
-
const $$splitComponentImporter$7 = () => import("./settings-
|
|
7870
|
+
const $$splitComponentImporter$7 = () => import("./settings-BjSxo5d6.mjs");
|
|
7828
7871
|
const Route$7 = createFileRoute("/settings")({
|
|
7829
7872
|
component: lazyRouteComponent($$splitComponentImporter$7, "component")
|
|
7830
7873
|
});
|
|
7831
|
-
const $$splitComponentImporter$6 = () => import("./media-
|
|
7874
|
+
const $$splitComponentImporter$6 = () => import("./media-AXePwPAK.mjs");
|
|
7832
7875
|
const Route$6 = createFileRoute("/media")({
|
|
7833
7876
|
component: lazyRouteComponent($$splitComponentImporter$6, "component")
|
|
7834
7877
|
});
|
|
7835
|
-
const $$splitComponentImporter$5 = () => import("./content-types-
|
|
7878
|
+
const $$splitComponentImporter$5 = () => import("./content-types-CqKvAZ8P.mjs");
|
|
7836
7879
|
const Route$5 = createFileRoute("/content-types")({
|
|
7837
7880
|
component: lazyRouteComponent($$splitComponentImporter$5, "component")
|
|
7838
7881
|
});
|
|
7839
|
-
const $$splitComponentImporter$4 = () => import("./content-
|
|
7882
|
+
const $$splitComponentImporter$4 = () => import("./content-CAgFQzx-.mjs");
|
|
7840
7883
|
const Route$4 = createFileRoute("/content")({
|
|
7841
7884
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
7842
7885
|
});
|
|
7843
|
-
const $$splitComponentImporter$3 = () => import("./index
|
|
7886
|
+
const $$splitComponentImporter$3 = () => import("./index--qYdIqvh.mjs");
|
|
7844
7887
|
const Route$3 = createFileRoute("/")({
|
|
7845
7888
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
7846
7889
|
});
|
|
7847
|
-
const $$splitComponentImporter$2 = () => import("./_entryId-
|
|
7890
|
+
const $$splitComponentImporter$2 = () => import("./_entryId-Cc_Ry7AV.mjs");
|
|
7848
7891
|
const Route$2 = createFileRoute("/entries/$entryId")({
|
|
7849
7892
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
7850
7893
|
});
|
|
7851
|
-
const $$splitComponentImporter$1 = () => import("./_contentTypeId-
|
|
7894
|
+
const $$splitComponentImporter$1 = () => import("./_contentTypeId-HZlfcQi-.mjs");
|
|
7852
7895
|
const Route$1 = createFileRoute("/entries/type/$contentTypeId")({
|
|
7853
7896
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
7854
7897
|
});
|
|
7855
|
-
const $$splitComponentImporter = () => import("./new._contentTypeId-
|
|
7898
|
+
const $$splitComponentImporter = () => import("./new._contentTypeId-DNWIl-Ha.mjs");
|
|
7856
7899
|
const Route = createFileRoute("/entries/new/$contentTypeId")({
|
|
7857
7900
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
7858
7901
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
|
|
2
2
|
import { R as Root, V as Viewport, C as Corner, S as ScrollAreaScrollbar, a as ScrollAreaThumb } from "../_chunks/_libs/@radix-ui/react-scroll-area.mjs";
|
|
3
|
-
import { f as cn } from "./router-
|
|
3
|
+
import { f as cn } from "./router-B_gIkxi2.mjs";
|
|
4
4
|
function ScrollArea({
|
|
5
5
|
className,
|
|
6
6
|
children,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { h as api, j as useAdminConfig, R as RouteGuard,
|
|
3
|
-
import { B as Badge } from "./badge-
|
|
4
|
-
import { u as useTanStackNavigation, A as Alert, a as AlertDescription } from "./tanstack-adapter-
|
|
5
|
-
import { u as usePermissions } from "./usePermissions-
|
|
6
|
-
import { C as CmsPageHeader } from "./CmsPageHeader-
|
|
7
|
-
import { C as CmsSurface } from "./CmsSurface-
|
|
8
|
-
import { S as Switch } from "./switch-
|
|
2
|
+
import { h as api, j as useAdminConfig, R as RouteGuard, C as CmsButton, L as Label, S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem, k as useTheme, f as cn } from "./router-B_gIkxi2.mjs";
|
|
3
|
+
import { B as Badge } from "./badge-CmG74mbX.mjs";
|
|
4
|
+
import { u as useTanStackNavigation, A as Alert, a as AlertDescription } from "./tanstack-adapter-CFwjrqRl.mjs";
|
|
5
|
+
import { u as usePermissions } from "./usePermissions-COsRlMp-.mjs";
|
|
6
|
+
import { C as CmsPageHeader } from "./CmsPageHeader-BuN0dOPA.mjs";
|
|
7
|
+
import { C as CmsSurface } from "./CmsSurface-DEcWf_aJ.mjs";
|
|
8
|
+
import { S as Switch } from "./switch-IsC1gdb1.mjs";
|
|
9
9
|
import { u as useQuery, f as useMutation } from "../_libs/convex.mjs";
|
|
10
|
-
import {
|
|
10
|
+
import { i as Check, X, z as Lock, a5 as Info, a6 as Sun, a7 as Moon, a8 as Monitor } from "../_libs/lucide-react.mjs";
|
|
11
11
|
import "../_chunks/_libs/@tanstack/react-router.mjs";
|
|
12
12
|
import "../_libs/tiny-warning.mjs";
|
|
13
13
|
import "../_chunks/_libs/@tanstack/router-core.mjs";
|
|
@@ -131,20 +131,81 @@ function AppearanceSection() {
|
|
|
131
131
|
] }) })
|
|
132
132
|
] });
|
|
133
133
|
}
|
|
134
|
-
function
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
function SettingsPageUnconfigured() {
|
|
135
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(RouteGuard, { requiredPermission: { resource: "settings", action: "manage" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
136
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
137
|
+
CmsPageHeader,
|
|
138
|
+
{
|
|
139
|
+
title: "Settings",
|
|
140
|
+
description: "Configure your CMS settings and preferences."
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
|
|
144
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(AppearanceSection, {}),
|
|
145
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { children: [
|
|
146
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Info, { className: "size-4" }),
|
|
147
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(AlertDescription, { children: [
|
|
148
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Settings not configured." }),
|
|
149
|
+
" To enable CMS settings, export",
|
|
150
|
+
" ",
|
|
151
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "getSettings" }),
|
|
152
|
+
",",
|
|
153
|
+
" ",
|
|
154
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "updateSettings" }),
|
|
155
|
+
", and",
|
|
156
|
+
" ",
|
|
157
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "resetSettings" }),
|
|
158
|
+
" ",
|
|
159
|
+
"from your",
|
|
160
|
+
" ",
|
|
161
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "convex/admin.ts" }),
|
|
162
|
+
" ",
|
|
163
|
+
"file."
|
|
164
|
+
] })
|
|
165
|
+
] }),
|
|
166
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
167
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-4 flex items-center gap-2", children: [
|
|
168
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Features" }),
|
|
169
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
170
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Lock, { className: "size-3" }),
|
|
171
|
+
"Default values"
|
|
172
|
+
] })
|
|
173
|
+
] }),
|
|
174
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Showing default feature flags. Configure settings in your admin API to customize." }),
|
|
175
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: [
|
|
176
|
+
"versioning",
|
|
177
|
+
"scheduling",
|
|
178
|
+
"localization",
|
|
179
|
+
"mediaManagement"
|
|
180
|
+
].map((feature) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
181
|
+
"div",
|
|
182
|
+
{
|
|
183
|
+
className: "flex items-center justify-between opacity-75",
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium capitalize", children: feature }) }),
|
|
186
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Switch, { checked: DEFAULT_FEATURES[feature], disabled: true })
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
feature
|
|
190
|
+
)) })
|
|
191
|
+
] }),
|
|
192
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
193
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "mb-4 text-lg font-semibold text-foreground", children: "API" }),
|
|
194
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
195
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Convex Deployment URL" }),
|
|
196
|
+
/* @__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" })
|
|
197
|
+
] }) })
|
|
198
|
+
] })
|
|
199
|
+
] })
|
|
200
|
+
] }) });
|
|
201
|
+
}
|
|
202
|
+
function SettingsPageConfigured({
|
|
203
|
+
api: api2
|
|
137
204
|
}) {
|
|
138
205
|
const { canManageSettings } = usePermissions();
|
|
139
206
|
const canEdit = canManageSettings();
|
|
140
207
|
const adminConfig = useAdminConfig();
|
|
141
|
-
const
|
|
142
|
-
return api2.getSettings != null;
|
|
143
|
-
}, [api2]);
|
|
144
|
-
const settings = useQuery(
|
|
145
|
-
isConfigured ? api2.getSettings : "skip",
|
|
146
|
-
isConfigured ? {} : "skip"
|
|
147
|
-
);
|
|
208
|
+
const settings = useQuery(api2.getSettings, {});
|
|
148
209
|
const updateSettingsMutation = useMutation(
|
|
149
210
|
api2.updateSettings ?? (() => {
|
|
150
211
|
})
|
|
@@ -194,7 +255,7 @@ function SettingsPage({
|
|
|
194
255
|
[formData]
|
|
195
256
|
);
|
|
196
257
|
const handleSave = reactExports.useCallback(async () => {
|
|
197
|
-
if (!formData || !isDirty || !
|
|
258
|
+
if (!formData || !isDirty || !api2.updateSettings) return;
|
|
198
259
|
setFeedbackStatus("saving");
|
|
199
260
|
setErrorMessage(null);
|
|
200
261
|
try {
|
|
@@ -244,7 +305,7 @@ function SettingsPage({
|
|
|
244
305
|
error instanceof Error ? error.message : "Failed to reset settings"
|
|
245
306
|
);
|
|
246
307
|
}
|
|
247
|
-
}, [
|
|
308
|
+
}, [api2.resetSettings, resetSettingsMutation]);
|
|
248
309
|
const handleDiscard = reactExports.useCallback(() => {
|
|
249
310
|
if (normalizedSettings) {
|
|
250
311
|
setFormData(normalizedSettings);
|
|
@@ -253,66 +314,6 @@ function SettingsPage({
|
|
|
253
314
|
setErrorMessage(null);
|
|
254
315
|
}
|
|
255
316
|
}, [normalizedSettings]);
|
|
256
|
-
if (!isConfigured) {
|
|
257
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
258
|
-
RouteGuard,
|
|
259
|
-
{
|
|
260
|
-
requiredPermission: { resource: "settings", action: "manage" },
|
|
261
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6 p-6", children: [
|
|
262
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
263
|
-
CmsPageHeader,
|
|
264
|
-
{
|
|
265
|
-
title: "Settings",
|
|
266
|
-
description: "Configure your CMS settings and preferences."
|
|
267
|
-
}
|
|
268
|
-
),
|
|
269
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
|
|
270
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(AppearanceSection, {}),
|
|
271
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { children: [
|
|
272
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Info, { className: "size-4" }),
|
|
273
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(AlertDescription, { children: [
|
|
274
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Settings not configured." }),
|
|
275
|
-
" To enable CMS settings, export",
|
|
276
|
-
" ",
|
|
277
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "getSettings" }),
|
|
278
|
-
",",
|
|
279
|
-
" ",
|
|
280
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "updateSettings" }),
|
|
281
|
-
", and",
|
|
282
|
-
" ",
|
|
283
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "resetSettings" }),
|
|
284
|
-
" from your",
|
|
285
|
-
" ",
|
|
286
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: "convex/admin.ts" }),
|
|
287
|
-
" file."
|
|
288
|
-
] })
|
|
289
|
-
] }),
|
|
290
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
291
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-4 flex items-center gap-2", children: [
|
|
292
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Features" }),
|
|
293
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
294
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Lock, { className: "size-3" }),
|
|
295
|
-
"Default values"
|
|
296
|
-
] })
|
|
297
|
-
] }),
|
|
298
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Showing default feature flags. Configure settings in your admin API to customize." }),
|
|
299
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: ["versioning", "scheduling", "localization", "mediaManagement"].map((feature) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between opacity-75", children: [
|
|
300
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium capitalize", children: feature }) }),
|
|
301
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Switch, { checked: DEFAULT_FEATURES[feature], disabled: true })
|
|
302
|
-
] }, feature)) })
|
|
303
|
-
] }),
|
|
304
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(CmsSurface, { elevation: "base", className: "p-6", children: [
|
|
305
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "mb-4 text-lg font-semibold text-foreground", children: "API" }),
|
|
306
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
307
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { className: "text-sm font-medium", children: "Convex Deployment URL" }),
|
|
308
|
-
/* @__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" })
|
|
309
|
-
] }) })
|
|
310
|
-
] })
|
|
311
|
-
] })
|
|
312
|
-
] })
|
|
313
|
-
}
|
|
314
|
-
);
|
|
315
|
-
}
|
|
316
317
|
if (settings === void 0) {
|
|
317
318
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
318
319
|
RouteGuard,
|
|
@@ -479,6 +480,20 @@ function SettingsPage({
|
|
|
479
480
|
] })
|
|
480
481
|
] }) });
|
|
481
482
|
}
|
|
483
|
+
function SettingsPage({
|
|
484
|
+
api: api2,
|
|
485
|
+
navigation: _navigation
|
|
486
|
+
}) {
|
|
487
|
+
if (api2.getSettings) {
|
|
488
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
489
|
+
SettingsPageConfigured,
|
|
490
|
+
{
|
|
491
|
+
api: api2
|
|
492
|
+
}
|
|
493
|
+
);
|
|
494
|
+
}
|
|
495
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsPageUnconfigured, {});
|
|
496
|
+
}
|
|
482
497
|
function SettingsRoute() {
|
|
483
498
|
const navigation = useTanStackNavigation();
|
|
484
499
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SettingsPage, { api: api.admin, navigation });
|
|
@@ -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 { f as cn } from "./router-
|
|
3
|
+
import { f as cn } from "./router-B_gIkxi2.mjs";
|
|
4
4
|
function Switch({
|
|
5
5
|
className,
|
|
6
6
|
...props
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { f as cn, C as CmsButton } from "./router-
|
|
2
|
+
import { f as cn, C as CmsButton } from "./router-B_gIkxi2.mjs";
|
|
3
3
|
import { R as Root2, L as List, T as Trigger, C as Content } from "../_chunks/_libs/@radix-ui/react-tabs.mjs";
|
|
4
4
|
import { j as CircleAlert, ab as Upload, X, ao as RefreshCw, i as Check } from "../_libs/lucide-react.mjs";
|
|
5
5
|
import { f as useMutation } from "../_libs/convex.mjs";
|
package/admin-dist/server/_ssr/{tanstack-adapter-yhyAcBi-.mjs → tanstack-adapter-CFwjrqRl.mjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
|
|
2
2
|
import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
3
|
-
import { f as cn } from "./router-
|
|
3
|
+
import { f as cn } from "./router-B_gIkxi2.mjs";
|
|
4
4
|
import { d as useNavigate, e as useLocation, f as useParams } from "../_chunks/_libs/@tanstack/react-router.mjs";
|
|
5
5
|
const alertVariants = cva(
|
|
6
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",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { h as api, C as CmsButton, f as cn, g as CmsConfirmDialog, u as useApi, i as CmsDialog, L as Label, I as Input, T as Textarea, e as Checkbox } from "./router-
|
|
3
|
-
import { B as Badge } from "./badge-
|
|
4
|
-
import { u as useTanStackNavigation } from "./tanstack-adapter-
|
|
5
|
-
import { C as CmsEmptyState } from "./CmsEmptyState-
|
|
6
|
-
import { C as CmsPageHeader } from "./CmsPageHeader-
|
|
7
|
-
import { C as CmsSurface } from "./CmsSurface-
|
|
8
|
-
import { S as ScrollArea } from "./scroll-area-
|
|
2
|
+
import { h as api, C as CmsButton, f as cn, g as CmsConfirmDialog, u as useApi, i as CmsDialog, L as Label, I as Input, T as Textarea, e as Checkbox } from "./router-B_gIkxi2.mjs";
|
|
3
|
+
import { B as Badge } from "./badge-CmG74mbX.mjs";
|
|
4
|
+
import { u as useTanStackNavigation } from "./tanstack-adapter-CFwjrqRl.mjs";
|
|
5
|
+
import { C as CmsEmptyState } from "./CmsEmptyState-DWqt3y_O.mjs";
|
|
6
|
+
import { C as CmsPageHeader } from "./CmsPageHeader-BuN0dOPA.mjs";
|
|
7
|
+
import { C as CmsSurface } from "./CmsSurface-DEcWf_aJ.mjs";
|
|
8
|
+
import { S as ScrollArea } from "./scroll-area-Cz-9ry0J.mjs";
|
|
9
9
|
import { u as useQuery, f as useMutation } from "../_libs/convex.mjs";
|
|
10
10
|
import { P as Plus, W as Tag, a3 as Pencil, I as Trash2, a4 as FolderTree, N as Tags, d as ChevronDown, h as ChevronRight } from "../_libs/lucide-react.mjs";
|
|
11
11
|
import "../_chunks/_libs/@tanstack/react-router.mjs";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { h as api, C as CmsButton, I as Input, S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem, e as Checkbox, f as cn, g as CmsConfirmDialog } from "./router-
|
|
3
|
-
import { B as Badge } from "./badge-
|
|
4
|
-
import { u as useTanStackNavigation, A as Alert, a as AlertDescription } from "./tanstack-adapter-
|
|
5
|
-
import { C as CmsPageHeader } from "./CmsPageHeader-
|
|
6
|
-
import { C as CmsToolbar } from "./CmsToolbar-
|
|
7
|
-
import { C as CmsEmptyState } from "./CmsEmptyState-
|
|
8
|
-
import { C as CmsSurface } from "./CmsSurface-
|
|
2
|
+
import { h as api, C as CmsButton, I as Input, S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem, e as Checkbox, f as cn, g as CmsConfirmDialog } from "./router-B_gIkxi2.mjs";
|
|
3
|
+
import { B as Badge } from "./badge-CmG74mbX.mjs";
|
|
4
|
+
import { u as useTanStackNavigation, A as Alert, a as AlertDescription } from "./tanstack-adapter-CFwjrqRl.mjs";
|
|
5
|
+
import { C as CmsPageHeader } from "./CmsPageHeader-BuN0dOPA.mjs";
|
|
6
|
+
import { C as CmsToolbar } from "./CmsToolbar-BMBEZVgb.mjs";
|
|
7
|
+
import { C as CmsEmptyState } from "./CmsEmptyState-DWqt3y_O.mjs";
|
|
8
|
+
import { C as CmsSurface } from "./CmsSurface-DEcWf_aJ.mjs";
|
|
9
9
|
import { u as useQuery, f as useMutation } from "../_libs/convex.mjs";
|
|
10
10
|
import { I as Trash2, a1 as Search, a0 as TriangleAlert, X, a2 as RotateCcw } from "../_libs/lucide-react.mjs";
|
|
11
11
|
import "../_chunks/_libs/@tanstack/react-router.mjs";
|
package/admin-dist/server/_ssr/{useBreadcrumbLabel-BC7plG0L.mjs → useBreadcrumbLabel-C4TsA5z0.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { M as useBreadcrumbContext } from "./router-
|
|
2
|
+
import { M as useBreadcrumbContext } from "./router-B_gIkxi2.mjs";
|
|
3
3
|
function useBreadcrumbLabel(path, label) {
|
|
4
4
|
const { setOverride, clearOverride } = useBreadcrumbContext();
|
|
5
5
|
reactExports.useEffect(() => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports } from "../_chunks/_libs/react.mjs";
|
|
2
|
-
import { E as useAuth, F as getResourcePermissions, G as canAccessResource, H as hasPermission } from "./router-
|
|
2
|
+
import { E as useAuth, F as getResourcePermissions, G as canAccessResource, H as hasPermission } from "./router-B_gIkxi2.mjs";
|
|
3
3
|
function usePermissions() {
|
|
4
4
|
const { role } = useAuth();
|
|
5
5
|
return reactExports.useMemo(() => {
|