convex-cms 0.0.9-alpha.9 → 0.0.10
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/components/Header.tsx +1 -1
- package/admin/src/components/RouteGuard.tsx +1 -1
- package/admin/src/components/UploadDropzone.tsx +1 -1
- package/admin/src/components/ui/sidebar.tsx +1 -1
- package/admin/src/contexts/AuthContext.tsx +1 -1
- package/admin/src/embed/components/EmbedSidebar.tsx +10 -10
- package/admin/src/embed/contexts/ApiContext.tsx +1 -1
- package/admin/src/hooks/usePermissions.ts +1 -1
- package/admin/src/index.css +432 -0
- package/admin/src/lib/cmsExports.ts +6 -0
- package/admin/src/pages/DashboardPage.tsx +2 -3
- package/admin/src/routes/__root.tsx +1 -1
- package/admin-dist/nitro.json +1 -1
- package/admin-dist/public/assets/{CmsEmptyState-DTlpzjOI.js → CmsEmptyState-BKeL4DBB.js} +1 -1
- package/admin-dist/public/assets/CmsFilterBar-CEpMHd_c.js +1 -0
- package/admin-dist/public/assets/{CmsPageHeader-0REGRH4X.js → CmsPageHeader-CIEkTbyH.js} +1 -1
- package/admin-dist/public/assets/{CmsStatusBadge-D_n8u8xa.js → CmsStatusBadge-BFMOsfMW.js} +1 -1
- package/admin-dist/public/assets/{CmsSurface-BHmvNai4.js → CmsSurface-kqqaFKUI.js} +1 -1
- package/admin-dist/public/assets/CmsTable-Db53Exq0.js +1 -0
- package/admin-dist/public/assets/ContentEntryEditor-Ct7cHayy.js +4 -0
- package/admin-dist/public/assets/TaxonomyFilter-Bm1DI1A7.js +1 -0
- package/admin-dist/public/assets/_contentTypeId-BekeCblX.js +1 -0
- package/admin-dist/public/assets/{_entryId-jPXz4z9T.js → _entryId-CoZDE0l0.js} +1 -1
- package/admin-dist/public/assets/{alert-CG97cMfC.js → alert-CpLdsTGU.js} +1 -1
- package/admin-dist/public/assets/{badge-C6qt24oj.js → badge-BQAotc5B.js} +1 -1
- package/admin-dist/public/assets/{circle-check-big-PltpxuB1.js → circle-check-big-BF3Y5nES.js} +1 -1
- package/admin-dist/public/assets/{command-CJ8i86fd.js → command-lEq6f_Ee.js} +1 -1
- package/admin-dist/public/assets/content-DH6k0dN6.js +1 -0
- package/admin-dist/public/assets/content-types-DHr9tc2V.js +1 -0
- package/admin-dist/public/assets/index-Cf0lbl0G.js +1 -0
- package/admin-dist/public/assets/index-D-4wFfgU.css +1 -0
- package/admin-dist/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/admin-dist/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/admin-dist/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/admin-dist/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/admin-dist/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/admin-dist/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/admin-dist/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/admin-dist/public/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/admin-dist/public/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/admin-dist/public/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/admin-dist/public/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/admin-dist/public/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/admin-dist/public/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/admin-dist/public/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/admin-dist/public/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/admin-dist/public/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/admin-dist/public/assets/main-B-6700eG.js +137 -0
- package/admin-dist/public/assets/media-DY5zD52L.js +1 -0
- package/admin-dist/public/assets/{new._contentTypeId-qsvo01mH.js → new._contentTypeId-Dq_NqTQV.js} +1 -1
- package/admin-dist/public/assets/{pencil-gAL0R34f.js → pencil-CI_KfxSx.js} +1 -1
- package/admin-dist/public/assets/refresh-cw-BrXg9a2r.js +1 -0
- package/admin-dist/public/assets/rotate-ccw-PwzxdPxd.js +1 -0
- package/admin-dist/public/assets/{scroll-area-CJBhf9pf.js → scroll-area-DX_nZYp8.js} +1 -1
- package/admin-dist/public/assets/{search-WXp6KxDJ.js → search-DlwBH4C5.js} +1 -1
- package/admin-dist/public/assets/settings-2mx3_ORG.js +1 -0
- package/admin-dist/public/assets/{switch-Ck9ecqEX.js → switch-CjPi4DKH.js} +1 -1
- package/admin-dist/public/assets/{tabs-vQYu8rjC.js → tabs-B5X37GEM.js} +1 -1
- package/admin-dist/public/assets/tanstack-adapter-KSm-nO5L.js +1 -0
- package/admin-dist/public/assets/{taxonomies-DvILUNvr.js → taxonomies-CHjJKNlR.js} +1 -1
- package/admin-dist/public/assets/trash-Cle-tcqq.js +1 -0
- package/admin-dist/public/assets/{useBreadcrumbLabel-tlSh7dtO.js → useBreadcrumbLabel-yZQG_N_3.js} +1 -1
- package/admin-dist/public/assets/{usePermissions-BTGdTOJS.js → usePermissions-D6vsoaJf.js} +1 -1
- package/admin-dist/server/_libs/convex-helpers.mjs +1077 -2
- package/admin-dist/server/_libs/convex.mjs +222 -13
- package/admin-dist/server/_libs/lucide-react.mjs +57 -51
- package/admin-dist/server/_ssr/{CmsEmptyState-CB6e53i5.mjs → CmsEmptyState-DzzuQG0S.mjs} +1 -1
- package/admin-dist/server/_ssr/CmsFilterBar-C5XADS12.mjs +81 -0
- package/admin-dist/server/_ssr/{CmsPageHeader-COUHuECp.mjs → CmsPageHeader-DZ6h7smh.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsStatusBadge-kMTL6koE.mjs → CmsStatusBadge-D-YFSAa1.mjs} +3 -3
- package/admin-dist/server/_ssr/{CmsSurface-D1HDYjRg.mjs → CmsSurface-Cv51NBLZ.mjs} +1 -1
- package/admin-dist/server/_ssr/CmsTable-DG88C5nO.mjs +189 -0
- package/admin-dist/server/_ssr/{ContentEntryEditor-Bq8FR_uK.mjs → ContentEntryEditor-CRjwXB17.mjs} +10 -10
- package/admin-dist/server/_ssr/{TaxonomyFilter-bm_p4ADg.mjs → TaxonomyFilter-xGwcgtjr.mjs} +3 -3
- package/admin-dist/server/_ssr/{_contentTypeId-B7obLmi_.mjs → _contentTypeId-DRCfeKkm.mjs} +53 -12
- package/admin-dist/server/_ssr/{_entryId-B4zhQqFg.mjs → _entryId-DULm2TDy.mjs} +11 -11
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-iX3K33p1.mjs +4 -0
- package/admin-dist/server/_ssr/{badge-NOEC9bkk.mjs → badge-CbjIvhb6.mjs} +1 -1
- package/admin-dist/server/_ssr/{command-h4-OYNBo.mjs → command-xB2uiYps.mjs} +2 -2
- package/admin-dist/server/_ssr/{content-CShtLuhK.mjs → content-BfLBaJCZ.mjs} +108 -138
- package/admin-dist/server/_ssr/{content-types-PeyRyfbc.mjs → content-types-DZbF6O2q.mjs} +130 -119
- package/admin-dist/server/_ssr/{index-CplFXpGg.mjs → index-Cfe8sZv5.mjs} +65 -39
- package/admin-dist/server/_ssr/index.mjs +2 -2
- package/admin-dist/server/_ssr/{media-QAkNdX54.mjs → media-Bds2AnPC.mjs} +36 -56
- package/admin-dist/server/_ssr/{new._contentTypeId-DEJyMphJ.mjs → new._contentTypeId-DGvz_tlW.mjs} +10 -10
- package/admin-dist/server/_ssr/{router-CQXMuGMF.mjs → router-DxF7GBcO.mjs} +8804 -4995
- package/admin-dist/server/_ssr/{scroll-area-B7zoNyWB.mjs → scroll-area-DLDlXI07.mjs} +1 -1
- package/admin-dist/server/_ssr/{settings-CNaqVa4D.mjs → settings-BbaiS6z9.mjs} +13 -10
- package/admin-dist/server/_ssr/{switch-BKZhvryc.mjs → switch-Bl89Pfxu.mjs} +1 -1
- package/admin-dist/server/_ssr/{tabs-DtIIQxiD.mjs → tabs-QkbR0iir.mjs} +3 -3
- package/admin-dist/server/_ssr/{tanstack-adapter-CLavdbUY.mjs → tanstack-adapter-CKknPtcU.mjs} +19 -1
- package/admin-dist/server/_ssr/{taxonomies-vIZYICzr.mjs → taxonomies-S_Ontd0z.mjs} +9 -9
- package/admin-dist/server/_ssr/{trash-7yGR4-dF.mjs → trash-BzAIsbbN.mjs} +109 -132
- package/admin-dist/server/_ssr/{useBreadcrumbLabel-DR5FaAMf.mjs → useBreadcrumbLabel-BjiR1fM_.mjs} +1 -1
- package/admin-dist/server/_ssr/{usePermissions-DKkpETj_.mjs → usePermissions-CDHN95Nz.mjs} +1 -1
- package/admin-dist/server/index.mjs +284 -165
- package/package.json +3 -2
- package/admin/src/styles/globals.css +0 -82
- package/admin/src/styles/tailwind-config.css +0 -111
- package/admin/src/styles/theme.css +0 -384
- package/admin-dist/public/assets/CmsToolbar-CY6GV2L8.js +0 -1
- package/admin-dist/public/assets/ContentEntryEditor-CRgcRkk5.js +0 -4
- package/admin-dist/public/assets/TaxonomyFilter-Ohv5Jg9c.js +0 -1
- package/admin-dist/public/assets/_contentTypeId-C_vJq22X.js +0 -1
- package/admin-dist/public/assets/content-pKaIL2ru.js +0 -1
- package/admin-dist/public/assets/content-types-Bl_8I1Re.js +0 -1
- package/admin-dist/public/assets/globals-CoCRjt0K.css +0 -1
- package/admin-dist/public/assets/index-CtHq_P5q.js +0 -1
- package/admin-dist/public/assets/main-CA-4LyFT.js +0 -107
- package/admin-dist/public/assets/media-Bl1tBbJQ.js +0 -1
- package/admin-dist/public/assets/refresh-cw-sdVUGJNs.js +0 -1
- package/admin-dist/public/assets/rotate-ccw-6OcXCcxb.js +0 -1
- package/admin-dist/public/assets/settings-D8crrFCn.js +0 -1
- package/admin-dist/public/assets/tanstack-adapter-BRt2CUCw.js +0 -1
- package/admin-dist/public/assets/trash-YyYaC3L9.js +0 -1
- package/admin-dist/server/_ssr/CmsToolbar-NB014hsd.mjs +0 -48
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-DndoqCo7.mjs +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useRouterState, useNavigate, Link } from '@tanstack/react-router'
|
|
2
2
|
import { useAuth, useAdminConfig, useBreadcrumbContext } from '~/contexts'
|
|
3
|
-
import { getRole } from '
|
|
3
|
+
import { getRole } from '~/lib/cmsExports'
|
|
4
4
|
import {
|
|
5
5
|
Breadcrumb,
|
|
6
6
|
BreadcrumbItem,
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
import type { ReactNode } from 'react';
|
|
29
29
|
import { useAuth, type PermissionCheck } from '../contexts/AuthContext';
|
|
30
|
-
import type { RoleName } from '
|
|
30
|
+
import type { RoleName } from '~/lib/cmsExports';
|
|
31
31
|
import { Loader2 } from 'lucide-react';
|
|
32
32
|
|
|
33
33
|
// =============================================================================
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
useMediaUploadQueue,
|
|
4
4
|
type UploadQueueFile,
|
|
5
5
|
type UploadQueueFileStatus,
|
|
6
|
-
} from '
|
|
6
|
+
} from '~/lib/cmsExports'
|
|
7
7
|
import type { FunctionReference } from 'convex/server'
|
|
8
8
|
import { CmsButton } from '~/components/cmsds/CmsButton'
|
|
9
9
|
import { cn } from '~/lib/cn'
|
|
@@ -478,7 +478,7 @@ const sidebarMenuButtonVariants = cva(
|
|
|
478
478
|
variant: {
|
|
479
479
|
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
480
480
|
outline:
|
|
481
|
-
"bg-background shadow-[
|
|
481
|
+
"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]",
|
|
482
482
|
},
|
|
483
483
|
size: {
|
|
484
484
|
default: "h-8 text-sm",
|
|
@@ -77,7 +77,7 @@ export function EmbedSidebar() {
|
|
|
77
77
|
type="button"
|
|
78
78
|
onClick={() => handleNavClick(item)}
|
|
79
79
|
className={cn(
|
|
80
|
-
"flex w-full items-center gap-3 rounded-md px-2 py-2 text-left text-sm font-medium transition-colors",
|
|
80
|
+
"flex w-full hover:cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left text-sm font-medium transition-colors",
|
|
81
81
|
isActive(item.path, item.exact)
|
|
82
82
|
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
83
83
|
: "text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-accent-foreground"
|
|
@@ -98,7 +98,7 @@ export function EmbedSidebar() {
|
|
|
98
98
|
<Collapsible key={item.id} defaultOpen={isContentActive}>
|
|
99
99
|
<CollapsibleTrigger
|
|
100
100
|
className={cn(
|
|
101
|
-
"flex w-full items-center gap-3 rounded-md px-2 py-2 text-sm font-medium transition-colors",
|
|
101
|
+
"flex w-full hover:cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-sm font-medium transition-colors",
|
|
102
102
|
isContentActive
|
|
103
103
|
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
104
104
|
: "text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-accent-foreground",
|
|
@@ -115,7 +115,7 @@ export function EmbedSidebar() {
|
|
|
115
115
|
type="button"
|
|
116
116
|
onClick={() => navigate("content")}
|
|
117
117
|
className={cn(
|
|
118
|
-
"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",
|
|
118
|
+
"flex w-full hover:cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",
|
|
119
119
|
normalizedPath === "/content"
|
|
120
120
|
? "bg-sidebar-accent/60 text-sidebar-accent-foreground"
|
|
121
121
|
: "text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-accent-foreground"
|
|
@@ -129,7 +129,7 @@ export function EmbedSidebar() {
|
|
|
129
129
|
type="button"
|
|
130
130
|
onClick={() => navigateToContentType(type._id)}
|
|
131
131
|
className={cn(
|
|
132
|
-
"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",
|
|
132
|
+
"flex w-full hover:cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",
|
|
133
133
|
normalizedPath === `/entries/type/${type._id}`
|
|
134
134
|
? "bg-sidebar-accent/60 text-sidebar-accent-foreground"
|
|
135
135
|
: "text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-accent-foreground"
|
|
@@ -157,19 +157,19 @@ export function EmbedSidebar() {
|
|
|
157
157
|
return (
|
|
158
158
|
<>
|
|
159
159
|
<aside
|
|
160
|
-
className="fixed inset-y-0 left-0 z-50 flex flex-col border-r
|
|
160
|
+
className="fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-sidebar"
|
|
161
161
|
style={{ width: sidebarWidth }}
|
|
162
162
|
>
|
|
163
|
-
<div className="flex h-14 items-center gap-2
|
|
163
|
+
<div className="flex h-14 items-center gap-2 px-4">
|
|
164
164
|
<button
|
|
165
165
|
type="button"
|
|
166
166
|
onClick={() => navigate("dashboard")}
|
|
167
167
|
className="flex items-center gap-2 font-semibold text-sidebar-foreground"
|
|
168
168
|
>
|
|
169
169
|
{branding.logo ? (
|
|
170
|
-
<img src={branding.logo} alt={branding.appName} className="size-8" />
|
|
170
|
+
<img src={branding.logo} alt={branding.appName} className="size-8 bg-primary" />
|
|
171
171
|
) : (
|
|
172
|
-
<div className="flex size-8 items-center justify-center rounded-lg bg-
|
|
172
|
+
<div className="flex size-8 items-center justify-center rounded-lg bg-primary text-sidebar-primary-foreground">
|
|
173
173
|
<Layers className="size-4" />
|
|
174
174
|
</div>
|
|
175
175
|
)}
|
|
@@ -197,10 +197,10 @@ export function EmbedSidebar() {
|
|
|
197
197
|
)}
|
|
198
198
|
</nav>
|
|
199
199
|
|
|
200
|
-
<div className="
|
|
200
|
+
<div className="p-4">
|
|
201
201
|
<div className="flex items-center justify-between text-xs text-sidebar-foreground/60">
|
|
202
202
|
<span>Version</span>
|
|
203
|
-
<span className="font-mono">0.
|
|
203
|
+
<span className="font-mono">0.0.11</span>
|
|
204
204
|
</div>
|
|
205
205
|
</div>
|
|
206
206
|
</aside>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { createContext, useContext, type ReactNode } from "react";
|
|
10
|
-
import type { BaseAdminAPI } from "
|
|
10
|
+
import type { BaseAdminAPI } from "~/lib/cmsExports";
|
|
11
11
|
|
|
12
12
|
// CmsAdminApi accepts BaseAdminAPI with optional namespaced exports.
|
|
13
13
|
// This allows the API to work with Convex's FilterApi which removes
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "tw-animate-css";
|
|
3
|
+
@import "@fontsource-variable/inter";
|
|
4
|
+
@import "@fontsource/jetbrains-mono";
|
|
5
|
+
|
|
6
|
+
@custom-variant dark (&:is(.dark *));
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
--background: oklch(0.985 0 0);
|
|
10
|
+
--foreground: oklch(0.19 0 286.2);
|
|
11
|
+
--card: oklch(1 0 0);
|
|
12
|
+
--card-foreground: oklch(0.2 0 286.04);
|
|
13
|
+
--popover: oklch(1 0 0);
|
|
14
|
+
--popover-foreground: oklch(0.145 0.005 285);
|
|
15
|
+
--primary: oklch(0.21 0.01 285.89);
|
|
16
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
17
|
+
--secondary: oklch(0.967 0.001 285);
|
|
18
|
+
--secondary-foreground: oklch(0.24 0 286.25);
|
|
19
|
+
--muted: oklch(0.967 0.001 285);
|
|
20
|
+
--muted-foreground: oklch(0.556 0.01 285);
|
|
21
|
+
--accent: oklch(0.967 0.001 285);
|
|
22
|
+
--accent-foreground: oklch(0.205 0.006 285);
|
|
23
|
+
--destructive: oklch(0.637 0.237 25);
|
|
24
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
25
|
+
--border: oklch(0.928 0.002 285);
|
|
26
|
+
--input: oklch(0.928 0.002 285);
|
|
27
|
+
--ring: oklch(0.205 0.006 285);
|
|
28
|
+
|
|
29
|
+
--sidebar: oklch(0.985 0 0);
|
|
30
|
+
--sidebar-foreground: oklch(0.371 0.01 285);
|
|
31
|
+
--sidebar-primary: oklch(0.205 0.006 285);
|
|
32
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
33
|
+
--sidebar-accent: oklch(0.967 0.001 285);
|
|
34
|
+
--sidebar-accent-foreground: oklch(0.205 0.006 285);
|
|
35
|
+
--sidebar-border: oklch(0.937 0.003 253);
|
|
36
|
+
--sidebar-ring: oklch(0.623 0.214 255);
|
|
37
|
+
|
|
38
|
+
--success: oklch(0.527 0.154 152);
|
|
39
|
+
--success-foreground: oklch(1 0 0);
|
|
40
|
+
--warning: oklch(0.769 0.188 70);
|
|
41
|
+
--warning-foreground: oklch(0 0 0);
|
|
42
|
+
--info: oklch(0.623 0.214 255);
|
|
43
|
+
--info-bg: oklch(0.965 0.03 255);
|
|
44
|
+
--info-foreground: oklch(0.5 0.17 255);
|
|
45
|
+
|
|
46
|
+
--diff-added: oklch(0.527 0.154 152);
|
|
47
|
+
--diff-added-bg: oklch(0.965 0.03 152);
|
|
48
|
+
--diff-added-border: oklch(0.85 0.1 152);
|
|
49
|
+
--diff-added-foreground: oklch(0.45 0.13 152);
|
|
50
|
+
--diff-removed: oklch(0.637 0.237 25);
|
|
51
|
+
--diff-removed-bg: oklch(0.965 0.03 25);
|
|
52
|
+
--diff-removed-border: oklch(0.88 0.09 25);
|
|
53
|
+
--diff-removed-foreground: oklch(0.53 0.18 25);
|
|
54
|
+
--diff-modified: oklch(0.769 0.188 70);
|
|
55
|
+
--diff-modified-bg: oklch(0.965 0.03 70);
|
|
56
|
+
--diff-modified-border: oklch(0.88 0.1 70);
|
|
57
|
+
--diff-modified-foreground: oklch(0.53 0.15 70);
|
|
58
|
+
|
|
59
|
+
--purple: oklch(0.628 0.2 303);
|
|
60
|
+
--purple-bg: oklch(0.965 0.03 303);
|
|
61
|
+
--purple-foreground: oklch(0.45 0.13 303);
|
|
62
|
+
|
|
63
|
+
--chart-1: oklch(0.646 0.17 31);
|
|
64
|
+
--chart-2: oklch(0.52 0.105 180);
|
|
65
|
+
--chart-3: oklch(0.37 0.06 230);
|
|
66
|
+
--chart-4: oklch(0.77 0.13 85);
|
|
67
|
+
--chart-5: oklch(0.72 0.17 55);
|
|
68
|
+
|
|
69
|
+
--radius: 0.5rem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.dark {
|
|
73
|
+
--background: oklch(0.145 0.005 285);
|
|
74
|
+
--foreground: oklch(0.985 0 0);
|
|
75
|
+
--card: oklch(0.18 0.005 285);
|
|
76
|
+
--card-foreground: oklch(0.985 0 0);
|
|
77
|
+
--popover: oklch(0.18 0.005 285);
|
|
78
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
79
|
+
--primary: oklch(0.985 0 0);
|
|
80
|
+
--primary-foreground: oklch(0.205 0.006 285);
|
|
81
|
+
--secondary: oklch(0.25 0.006 285);
|
|
82
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
83
|
+
--muted: oklch(0.25 0.006 285);
|
|
84
|
+
--muted-foreground: oklch(0.715 0.008 285);
|
|
85
|
+
--accent: oklch(0.25 0.006 285);
|
|
86
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
87
|
+
--destructive: oklch(0.59 0.2 25);
|
|
88
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
89
|
+
--border: oklch(0.3 0.006 285);
|
|
90
|
+
--input: oklch(0.3 0.006 285);
|
|
91
|
+
--ring: oklch(0.87 0.005 285);
|
|
92
|
+
|
|
93
|
+
--sidebar: oklch(0.205 0.006 285);
|
|
94
|
+
--sidebar-foreground: oklch(0.967 0.001 285);
|
|
95
|
+
--sidebar-primary: oklch(0.55 0.2 255);
|
|
96
|
+
--sidebar-primary-foreground: oklch(1 0 0);
|
|
97
|
+
--sidebar-accent: oklch(0.25 0.006 285);
|
|
98
|
+
--sidebar-accent-foreground: oklch(0.967 0.001 285);
|
|
99
|
+
--sidebar-border: oklch(0.25 0.006 285);
|
|
100
|
+
--sidebar-ring: oklch(0.623 0.214 255);
|
|
101
|
+
|
|
102
|
+
--success: oklch(0.58 0.15 152);
|
|
103
|
+
--success-foreground: oklch(1 0 0);
|
|
104
|
+
--warning: oklch(0.769 0.188 70);
|
|
105
|
+
--warning-foreground: oklch(0 0 0);
|
|
106
|
+
--info: oklch(0.68 0.19 255);
|
|
107
|
+
--info-bg: oklch(0.3 0.08 255);
|
|
108
|
+
--info-foreground: oklch(0.85 0.1 255);
|
|
109
|
+
|
|
110
|
+
--diff-added: oklch(0.58 0.15 152);
|
|
111
|
+
--diff-added-bg: oklch(0.25 0.08 152);
|
|
112
|
+
--diff-added-border: oklch(0.4 0.1 152);
|
|
113
|
+
--diff-added-foreground: oklch(0.75 0.12 152);
|
|
114
|
+
--diff-removed: oklch(0.62 0.18 25);
|
|
115
|
+
--diff-removed-bg: oklch(0.25 0.08 25);
|
|
116
|
+
--diff-removed-border: oklch(0.4 0.1 25);
|
|
117
|
+
--diff-removed-foreground: oklch(0.75 0.12 25);
|
|
118
|
+
--diff-modified: oklch(0.65 0.16 70);
|
|
119
|
+
--diff-modified-bg: oklch(0.25 0.08 70);
|
|
120
|
+
--diff-modified-border: oklch(0.4 0.1 70);
|
|
121
|
+
--diff-modified-foreground: oklch(0.75 0.12 70);
|
|
122
|
+
|
|
123
|
+
--purple: oklch(0.68 0.18 303);
|
|
124
|
+
--purple-bg: oklch(0.3 0.08 303);
|
|
125
|
+
--purple-foreground: oklch(0.85 0.1 303);
|
|
126
|
+
|
|
127
|
+
--chart-1: oklch(0.646 0.17 31);
|
|
128
|
+
--chart-2: oklch(0.52 0.105 180);
|
|
129
|
+
--chart-3: oklch(0.55 0.08 230);
|
|
130
|
+
--chart-4: oklch(0.77 0.13 85);
|
|
131
|
+
--chart-5: oklch(0.72 0.17 55);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[data-cms-admin="isolated"] {
|
|
135
|
+
--background: oklch(0.985 0 0);
|
|
136
|
+
--foreground: oklch(0.145 0.005 285);
|
|
137
|
+
--card: oklch(1 0 0);
|
|
138
|
+
--card-foreground: oklch(0.145 0.005 285);
|
|
139
|
+
--popover: oklch(1 0 0);
|
|
140
|
+
--popover-foreground: oklch(0.145 0.005 285);
|
|
141
|
+
--primary: oklch(0.205 0.006 285);
|
|
142
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
143
|
+
--secondary: oklch(0.967 0.001 285);
|
|
144
|
+
--secondary-foreground: oklch(0.205 0.006 285);
|
|
145
|
+
--muted: oklch(0.967 0.001 285);
|
|
146
|
+
--muted-foreground: oklch(0.556 0.01 285);
|
|
147
|
+
--accent: oklch(0.967 0.001 285);
|
|
148
|
+
--accent-foreground: oklch(0.205 0.006 285);
|
|
149
|
+
--destructive: oklch(0.637 0.237 25);
|
|
150
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
151
|
+
--border: oklch(0.928 0.002 285);
|
|
152
|
+
--input: oklch(0.928 0.002 285);
|
|
153
|
+
--ring: oklch(0.205 0.006 285);
|
|
154
|
+
|
|
155
|
+
--sidebar: oklch(0.985 0 0);
|
|
156
|
+
--sidebar-foreground: oklch(0.371 0.01 285);
|
|
157
|
+
--sidebar-primary: oklch(0.205 0.006 285);
|
|
158
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
159
|
+
--sidebar-accent: oklch(0.967 0.001 285);
|
|
160
|
+
--sidebar-accent-foreground: oklch(0.205 0.006 285);
|
|
161
|
+
--sidebar-border: oklch(0.937 0.003 253);
|
|
162
|
+
--sidebar-ring: oklch(0.623 0.214 255);
|
|
163
|
+
|
|
164
|
+
--success: oklch(0.527 0.154 152);
|
|
165
|
+
--success-foreground: oklch(1 0 0);
|
|
166
|
+
--warning: oklch(0.769 0.188 70);
|
|
167
|
+
--warning-foreground: oklch(0 0 0);
|
|
168
|
+
--info: oklch(0.623 0.214 255);
|
|
169
|
+
--info-bg: oklch(0.965 0.03 255);
|
|
170
|
+
--info-foreground: oklch(0.5 0.17 255);
|
|
171
|
+
|
|
172
|
+
--diff-added: oklch(0.527 0.154 152);
|
|
173
|
+
--diff-added-bg: oklch(0.965 0.03 152);
|
|
174
|
+
--diff-added-border: oklch(0.85 0.1 152);
|
|
175
|
+
--diff-added-foreground: oklch(0.45 0.13 152);
|
|
176
|
+
--diff-removed: oklch(0.637 0.237 25);
|
|
177
|
+
--diff-removed-bg: oklch(0.965 0.03 25);
|
|
178
|
+
--diff-removed-border: oklch(0.88 0.09 25);
|
|
179
|
+
--diff-removed-foreground: oklch(0.53 0.18 25);
|
|
180
|
+
--diff-modified: oklch(0.769 0.188 70);
|
|
181
|
+
--diff-modified-bg: oklch(0.965 0.03 70);
|
|
182
|
+
--diff-modified-border: oklch(0.88 0.1 70);
|
|
183
|
+
--diff-modified-foreground: oklch(0.53 0.15 70);
|
|
184
|
+
|
|
185
|
+
--purple: oklch(0.628 0.2 303);
|
|
186
|
+
--purple-bg: oklch(0.965 0.03 303);
|
|
187
|
+
--purple-foreground: oklch(0.45 0.13 303);
|
|
188
|
+
|
|
189
|
+
--chart-1: oklch(0.646 0.17 31);
|
|
190
|
+
--chart-2: oklch(0.52 0.105 180);
|
|
191
|
+
--chart-3: oklch(0.37 0.06 230);
|
|
192
|
+
--chart-4: oklch(0.77 0.13 85);
|
|
193
|
+
--chart-5: oklch(0.72 0.17 55);
|
|
194
|
+
|
|
195
|
+
--radius: 0.5rem;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
[data-cms-admin="isolated"].dark,
|
|
199
|
+
[data-cms-admin="isolated"] .dark {
|
|
200
|
+
--background: oklch(0.145 0.005 285);
|
|
201
|
+
--foreground: oklch(0.985 0 0);
|
|
202
|
+
--card: oklch(0.18 0.005 285);
|
|
203
|
+
--card-foreground: oklch(0.985 0 0);
|
|
204
|
+
--popover: oklch(0.18 0.005 285);
|
|
205
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
206
|
+
--primary: oklch(0.985 0 0);
|
|
207
|
+
--primary-foreground: oklch(0.205 0.006 285);
|
|
208
|
+
--secondary: oklch(0.25 0.006 285);
|
|
209
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
210
|
+
--muted: oklch(0.25 0.006 285);
|
|
211
|
+
--muted-foreground: oklch(0.715 0.008 285);
|
|
212
|
+
--accent: oklch(0.25 0.006 285);
|
|
213
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
214
|
+
--destructive: oklch(0.59 0.2 25);
|
|
215
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
216
|
+
--border: oklch(0.3 0.006 285);
|
|
217
|
+
--input: oklch(0.3 0.006 285);
|
|
218
|
+
--ring: oklch(0.87 0.005 285);
|
|
219
|
+
|
|
220
|
+
--sidebar: oklch(0.205 0.006 285);
|
|
221
|
+
--sidebar-foreground: oklch(0.967 0.001 285);
|
|
222
|
+
--sidebar-primary: oklch(0.55 0.2 255);
|
|
223
|
+
--sidebar-primary-foreground: oklch(1 0 0);
|
|
224
|
+
--sidebar-accent: oklch(0.25 0.006 285);
|
|
225
|
+
--sidebar-accent-foreground: oklch(0.967 0.001 285);
|
|
226
|
+
--sidebar-border: oklch(0.25 0.006 285);
|
|
227
|
+
--sidebar-ring: oklch(0.623 0.214 255);
|
|
228
|
+
|
|
229
|
+
--success: oklch(0.58 0.15 152);
|
|
230
|
+
--success-foreground: oklch(1 0 0);
|
|
231
|
+
--warning: oklch(0.769 0.188 70);
|
|
232
|
+
--warning-foreground: oklch(0 0 0);
|
|
233
|
+
--info: oklch(0.68 0.19 255);
|
|
234
|
+
--info-bg: oklch(0.3 0.08 255);
|
|
235
|
+
--info-foreground: oklch(0.85 0.1 255);
|
|
236
|
+
|
|
237
|
+
--diff-added: oklch(0.58 0.15 152);
|
|
238
|
+
--diff-added-bg: oklch(0.25 0.08 152);
|
|
239
|
+
--diff-added-border: oklch(0.4 0.1 152);
|
|
240
|
+
--diff-added-foreground: oklch(0.75 0.12 152);
|
|
241
|
+
--diff-removed: oklch(0.62 0.18 25);
|
|
242
|
+
--diff-removed-bg: oklch(0.25 0.08 25);
|
|
243
|
+
--diff-removed-border: oklch(0.4 0.1 25);
|
|
244
|
+
--diff-removed-foreground: oklch(0.75 0.12 25);
|
|
245
|
+
--diff-modified: oklch(0.65 0.16 70);
|
|
246
|
+
--diff-modified-bg: oklch(0.25 0.08 70);
|
|
247
|
+
--diff-modified-border: oklch(0.4 0.1 70);
|
|
248
|
+
--diff-modified-foreground: oklch(0.75 0.12 70);
|
|
249
|
+
|
|
250
|
+
--purple: oklch(0.68 0.18 303);
|
|
251
|
+
--purple-bg: oklch(0.3 0.08 303);
|
|
252
|
+
--purple-foreground: oklch(0.85 0.1 303);
|
|
253
|
+
|
|
254
|
+
--chart-1: oklch(0.646 0.17 31);
|
|
255
|
+
--chart-2: oklch(0.52 0.105 180);
|
|
256
|
+
--chart-3: oklch(0.55 0.08 230);
|
|
257
|
+
--chart-4: oklch(0.77 0.13 85);
|
|
258
|
+
--chart-5: oklch(0.72 0.17 55);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Inherit mode: CSS variables cascade naturally from parent app's :root.
|
|
262
|
+
No definitions needed here - the parent app's variables take precedence. */
|
|
263
|
+
|
|
264
|
+
@theme {
|
|
265
|
+
--font-sans: "Inter Variable", ui-sans-serif, system-ui, sans-serif;
|
|
266
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
267
|
+
|
|
268
|
+
--sidebar-width: 16rem;
|
|
269
|
+
--sidebar-width-icon: 3rem;
|
|
270
|
+
|
|
271
|
+
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
272
|
+
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
273
|
+
|
|
274
|
+
@keyframes accordion-down {
|
|
275
|
+
from {
|
|
276
|
+
height: 0;
|
|
277
|
+
}
|
|
278
|
+
to {
|
|
279
|
+
height: var(--radix-accordion-content-height);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@keyframes accordion-up {
|
|
284
|
+
from {
|
|
285
|
+
height: var(--radix-accordion-content-height);
|
|
286
|
+
}
|
|
287
|
+
to {
|
|
288
|
+
height: 0;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
@theme inline {
|
|
294
|
+
--color-background: var(--background);
|
|
295
|
+
--color-foreground: var(--foreground);
|
|
296
|
+
--color-card: var(--card);
|
|
297
|
+
--color-card-foreground: var(--card-foreground);
|
|
298
|
+
--color-popover: var(--popover);
|
|
299
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
300
|
+
--color-primary: var(--primary);
|
|
301
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
302
|
+
--color-secondary: var(--secondary);
|
|
303
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
304
|
+
--color-muted: var(--muted);
|
|
305
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
306
|
+
--color-accent: var(--accent);
|
|
307
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
308
|
+
--color-destructive: var(--destructive);
|
|
309
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
310
|
+
--color-border: var(--border);
|
|
311
|
+
--color-input: var(--input);
|
|
312
|
+
--color-ring: var(--ring);
|
|
313
|
+
|
|
314
|
+
--color-sidebar: var(--sidebar);
|
|
315
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
316
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
317
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
318
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
319
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
320
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
321
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
322
|
+
|
|
323
|
+
--color-diff-added: var(--diff-added);
|
|
324
|
+
--color-diff-added-bg: var(--diff-added-bg);
|
|
325
|
+
--color-diff-added-border: var(--diff-added-border);
|
|
326
|
+
--color-diff-added-foreground: var(--diff-added-foreground);
|
|
327
|
+
--color-diff-removed: var(--diff-removed);
|
|
328
|
+
--color-diff-removed-bg: var(--diff-removed-bg);
|
|
329
|
+
--color-diff-removed-border: var(--diff-removed-border);
|
|
330
|
+
--color-diff-removed-foreground: var(--diff-removed-foreground);
|
|
331
|
+
--color-diff-modified: var(--diff-modified);
|
|
332
|
+
--color-diff-modified-bg: var(--diff-modified-bg);
|
|
333
|
+
--color-diff-modified-border: var(--diff-modified-border);
|
|
334
|
+
--color-diff-modified-foreground: var(--diff-modified-foreground);
|
|
335
|
+
|
|
336
|
+
--color-success: var(--success);
|
|
337
|
+
--color-success-foreground: var(--success-foreground);
|
|
338
|
+
--color-warning: var(--warning);
|
|
339
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
340
|
+
--color-info: var(--info);
|
|
341
|
+
--color-info-bg: var(--info-bg);
|
|
342
|
+
--color-info-foreground: var(--info-foreground);
|
|
343
|
+
|
|
344
|
+
--color-purple: var(--purple);
|
|
345
|
+
--color-purple-bg: var(--purple-bg);
|
|
346
|
+
--color-purple-foreground: var(--purple-foreground);
|
|
347
|
+
|
|
348
|
+
--color-chart-1: var(--chart-1);
|
|
349
|
+
--color-chart-2: var(--chart-2);
|
|
350
|
+
--color-chart-3: var(--chart-3);
|
|
351
|
+
--color-chart-4: var(--chart-4);
|
|
352
|
+
--color-chart-5: var(--chart-5);
|
|
353
|
+
|
|
354
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
355
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
356
|
+
--radius-lg: var(--radius);
|
|
357
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
358
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
@layer base {
|
|
362
|
+
* {
|
|
363
|
+
@apply border-border outline-ring/50;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
body {
|
|
367
|
+
@apply bg-background text-foreground;
|
|
368
|
+
font-feature-settings: "rlig" 1, "calt" 1;
|
|
369
|
+
-webkit-font-smoothing: antialiased;
|
|
370
|
+
-moz-osx-font-smoothing: grayscale;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
button:not([disabled]),
|
|
374
|
+
[role="button"]:not([disabled]) {
|
|
375
|
+
cursor: pointer;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
[data-cms-admin] {
|
|
379
|
+
@apply bg-background text-foreground;
|
|
380
|
+
font-feature-settings: "rlig" 1, "calt" 1;
|
|
381
|
+
-webkit-font-smoothing: antialiased;
|
|
382
|
+
-moz-osx-font-smoothing: grayscale;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
@layer utilities {
|
|
387
|
+
.status-draft {
|
|
388
|
+
background-color: var(--muted);
|
|
389
|
+
color: var(--muted-foreground);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.status-published {
|
|
393
|
+
background-color: var(--diff-added-bg);
|
|
394
|
+
color: var(--diff-added-foreground);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.status-scheduled {
|
|
398
|
+
background-color: var(--info-bg);
|
|
399
|
+
color: var(--info-foreground);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.status-archived {
|
|
403
|
+
background-color: var(--diff-modified-bg);
|
|
404
|
+
color: var(--diff-modified-foreground);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.surface-base {
|
|
408
|
+
@apply bg-card border border-border;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.surface-elevated {
|
|
412
|
+
@apply bg-card border border-border shadow-sm;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.surface-floating {
|
|
416
|
+
@apply bg-popover border border-border shadow-lg;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.focus-ring {
|
|
420
|
+
@apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.scrollbar-none {
|
|
424
|
+
overflow-y: auto;
|
|
425
|
+
scrollbar-width: none;
|
|
426
|
+
-ms-overflow-style: none;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.scrollbar-none::-webkit-scrollbar {
|
|
430
|
+
display: none;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Re-export CMS utilities that admin components need
|
|
2
|
+
// Using relative imports to avoid circular dependency with convex-cms package
|
|
3
|
+
export { getRole, getRolePermissions } from '../../../src/client/index';
|
|
4
|
+
export type { RoleName, BaseAdminAPI } from '../../../src/client/index';
|
|
5
|
+
export { useMediaUploadQueue } from '../../../src/react/index';
|
|
6
|
+
export type { UploadQueueFile, UploadQueueFileStatus } from '../../../src/react/index';
|
|
@@ -110,9 +110,9 @@ function DashboardCard({
|
|
|
110
110
|
}) {
|
|
111
111
|
return (
|
|
112
112
|
<button type="button" onClick={onClick} className="text-left">
|
|
113
|
-
<Card className="h-full transition-colors hover:
|
|
113
|
+
<Card className="h-full transition-colors hover:border-primary/75 hover:cursor-pointer">
|
|
114
114
|
<CardHeader className="pb-2">
|
|
115
|
-
<div className="mb-2 flex size-10 items-center justify-center rounded-lg bg-primary/
|
|
115
|
+
<div className="mb-2 flex size-10 items-center justify-center rounded-lg bg-primary/5 text-primary">
|
|
116
116
|
{icon}
|
|
117
117
|
</div>
|
|
118
118
|
<CardTitle className="text-base">{title}</CardTitle>
|
|
@@ -124,4 +124,3 @@ function DashboardCard({
|
|
|
124
124
|
</button>
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
|
-
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "@tanstack/react-router";
|
|
7
7
|
import { ConvexProvider, ConvexReactClient } from "convex/react";
|
|
8
8
|
import { useMemo, type ReactNode } from "react";
|
|
9
|
-
import globalsCss from "~/
|
|
9
|
+
import globalsCss from "~/index.css?url";
|
|
10
10
|
import { AdminLayout, RouteGuard } from "~/components";
|
|
11
11
|
import {
|
|
12
12
|
AuthProvider,
|
package/admin-dist/nitro.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,C as n
|
|
1
|
+
import{j as e,C as a,n as x}from"./main-B-6700eG.js";function d({icon:s,title:m,description:r,action:t,className:l,...n}){return e.jsxs("div",{className:x("flex flex-col items-center justify-center py-12 text-center",l),...n,children:[s&&e.jsx("div",{className:"mb-4 flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground",children:s}),e.jsx("h3",{className:"text-base font-semibold text-foreground",children:m}),r&&e.jsx("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:r}),t&&e.jsx(a,{variant:t.variant??"primary",onClick:t.onClick,className:"mt-4",children:t.label})]})}export{d as C};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,S as d,s as x,t as u,n,v as o,w as p,C as v,X as h}from"./main-B-6700eG.js";import{C as j}from"./tanstack-adapter-KSm-nO5L.js";import{S as g}from"./search-DlwBH4C5.js";function C({value:a,onValueChange:m,options:l,placeholder:t="Select...",disabled:i,error:c,className:s}){return e.jsxs(d,{value:a,onValueChange:m,disabled:i,children:[e.jsx(x,{className:n(c&&"border-destructive focus:ring-destructive",s),"aria-invalid":c,children:e.jsx(u,{placeholder:t})}),e.jsx(o,{children:l.map(r=>e.jsx(p,{value:r.value,disabled:r.disabled,children:r.label},r.value))})]})}function b({search:a,filters:m,actions:l,onClearFilters:t,hasActiveFilters:i,className:c}){return e.jsxs("div",{className:n("flex flex-wrap items-center gap-3 pb-4",c),children:[e.jsxs("div",{className:"flex flex-1 flex-wrap items-center gap-2",children:[a&&e.jsxs("div",{className:"relative w-full max-w-xs",children:[e.jsx(g,{className:"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(j,{type:"search",placeholder:a.placeholder??"Search...",value:a.value,onChange:s=>a.onChange(s.target.value),className:n("pl-9",a.className)})]}),m?.map(s=>e.jsx(C,{value:s.value,onValueChange:s.onChange,options:s.options,placeholder:s.placeholder,className:n("w-[150px]",s.className)},s.key)),i&&t&&e.jsxs(v,{variant:"ghost",size:"sm",onClick:t,children:[e.jsx(h,{className:"mr-1 size-4"}),"Clear"]})]}),l&&e.jsx("div",{className:"flex items-center gap-2",children:l})]})}export{b as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,
|
|
1
|
+
import{j as e,n as m}from"./main-B-6700eG.js";function x({title:i,description:s,actions:t,breadcrumbs:a,className:l,...r}){return e.jsxs("div",{className:m("mb-6",l),...r,children:[a&&e.jsx("div",{className:"mb-2",children:a}),e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight text-foreground",children:i}),s&&e.jsx("p",{className:"text-sm text-muted-foreground",children:s})]}),t&&e.jsx("div",{className:"flex items-center gap-2",children:t})]})]})}export{x as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,
|
|
1
|
+
import{j as e,n as t}from"./main-B-6700eG.js";import{B as d}from"./badge-BQAotc5B.js";const c={draft:{label:"Draft",className:"status-draft",icon:e.jsx("svg",{className:"size-3",fill:"currentColor",viewBox:"0 0 8 8",children:e.jsx("circle",{cx:"4",cy:"4",r:"3"})})},published:{label:"Published",className:"status-published",icon:e.jsx("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},scheduled:{label:"Scheduled",className:"status-scheduled",icon:e.jsxs("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{strokeLinecap:"round",d:"M12 6v6l4 2"})]})},archived:{label:"Archived",className:"status-archived",icon:e.jsx("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"})})}},n={gray:"bg-muted text-muted-foreground",yellow:"bg-diff-modified-bg text-diff-modified-foreground",blue:"bg-info-bg text-info-foreground",green:"bg-diff-added-bg text-diff-added-foreground",red:"bg-diff-removed-bg text-diff-removed-foreground",purple:"bg-purple-bg text-purple-foreground",orange:"bg-diff-modified-bg text-diff-modified-foreground"};function l(){return e.jsx("svg",{className:"size-3",fill:"currentColor",viewBox:"0 0 8 8",children:e.jsx("circle",{cx:"4",cy:"4",r:"3"})})}function x({status:a,customConfig:s,className:o,...i}){if(s)return e.jsxs(d,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n[s.color],o),...i,children:[l(),s.displayName]});const r=c[a];return r?e.jsxs(d,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",r.className,o),...i,children:[r.icon,r.label]}):e.jsxs(d,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n.gray,o),...i,children:[l(),a]})}export{x as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r,
|
|
1
|
+
import{j as r,n as t}from"./main-B-6700eG.js";const l={base:"surface-base",elevated:"surface-elevated",floating:"surface-floating"},m={none:"",sm:"p-3",md:"p-4",lg:"p-6"},u={none:"rounded-none",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg"};function f({elevation:e="base",padding:s="md",rounded:n="lg",className:a,children:d,...o}){return r.jsx("div",{className:t(l[e],m[s],u[n],a),...o,children:d})}export{f as C};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as T,j as e,n as r,i as u,a9 as _,l as z}from"./main-B-6700eG.js";const D=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],H=T("chevrons-up-down",D);function U({className:s,...t}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:r("w-full caption-bottom text-sm",s),...t})})}function A({className:s,...t}){return e.jsx("thead",{"data-slot":"table-header",className:r("[&_tr]:border-b",s),...t})}function B({className:s,...t}){return e.jsx("tbody",{"data-slot":"table-body",className:r("[&_tr:last-child]:border-0",s),...t})}function x({className:s,...t}){return e.jsx("tr",{"data-slot":"table-row",className:r("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",s),...t})}function p({className:s,...t}){return e.jsx("th",{"data-slot":"table-head",className:r("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...t})}function m({className:s,...t}){return e.jsx("td",{"data-slot":"table-cell",className:r("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",s),...t})}function L({columns:s,data:t,getRowId:i,selectable:h,selectedIds:d=new Set,onSelectionChange:o,sortColumn:j,sortDirection:f,onSort:N,onRowClick:b,emptyMessage:k="No items found",className:w}){const y=t.length>0&&t.every(a=>d.has(i(a))),v=t.some(a=>d.has(i(a))),g=a=>{o&&o(a?new Set(t.map(i)):new Set)},S=(a,n)=>{if(!o)return;const c=new Set(d);n?c.add(a):c.delete(a),o(c)},C=a=>a.sortable?j!==a.key?e.jsx(H,{className:"ml-1 inline size-3.5 text-muted-foreground"}):f==="asc"?e.jsx(_,{className:"ml-1 inline size-3.5"}):e.jsx(z,{className:"ml-1 inline size-3.5"}):null;return e.jsx("div",{className:r("rounded-lg border",w),children:e.jsxs(U,{children:[e.jsx(A,{children:e.jsxs(x,{className:"hover:bg-transparent",children:[h&&e.jsx(p,{className:"w-12",children:e.jsx(u,{checked:y?!0:v?"indeterminate":!1,onCheckedChange:g,"aria-label":"Select all"})}),s.map(a=>e.jsxs(p,{className:r(a.sortable&&"cursor-pointer select-none",a.className),onClick:()=>a.sortable&&N?.(a.key),children:[a.header,C(a)]},a.key))]})}),e.jsx(B,{children:t.length===0?e.jsx(x,{children:e.jsx(m,{colSpan:s.length+(h?1:0),className:"h-24 text-center text-muted-foreground",children:k})}):t.map(a=>{const n=i(a),c=d.has(n);return e.jsxs(x,{"data-state":c&&"selected",className:r(b&&"cursor-pointer"),onClick:()=>b?.(a),children:[h&&e.jsx(m,{onClick:l=>l.stopPropagation(),className:"w-12",children:e.jsx(u,{checked:c,onCheckedChange:l=>S(n,l===!0),"aria-label":`Select row ${n}`})}),s.map(l=>e.jsx(m,{className:l.className,children:l.cell(a)},l.key))]},n)})})]})})}export{L as C};
|