convex-cms 0.0.9-alpha.8 → 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/README.md +27 -0
- 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/cmsds/CmsFilterBar.tsx +74 -0
- package/admin/src/components/cmsds/CmsInput.tsx +24 -0
- package/admin/src/components/cmsds/CmsPagination.tsx +79 -0
- package/admin/src/components/cmsds/CmsSelect.tsx +59 -0
- package/admin/src/components/cmsds/CmsStatCard.tsx +79 -0
- package/admin/src/components/cmsds/CmsStatusBadge.tsx +1 -1
- package/admin/src/components/cmsds/index.ts +5 -0
- package/admin/src/components/ui/sidebar.tsx +1 -1
- package/admin/src/contexts/AuthContext.tsx +1 -1
- package/admin/src/contexts/ThemeContext.tsx +85 -17
- package/admin/src/embed/components/EmbedHeader.tsx +11 -9
- package/admin/src/embed/components/EmbedLayout.tsx +2 -6
- package/admin/src/embed/components/EmbedSidebar.tsx +16 -13
- package/admin/src/embed/contexts/ApiContext.tsx +1 -1
- package/admin/src/embed/index.tsx +3 -2
- package/admin/src/embed/types.ts +6 -0
- 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/ContentPage.tsx +116 -172
- package/admin/src/pages/ContentTypeEntriesPage.tsx +120 -194
- package/admin/src/pages/ContentTypesPage.tsx +136 -139
- package/admin/src/pages/DashboardPage.tsx +15 -55
- package/admin/src/pages/MediaPage.tsx +31 -57
- package/admin/src/pages/SettingsPage.tsx +5 -1
- package/admin/src/pages/TrashPage.tsx +115 -170
- 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 -104
- package/admin/src/styles/tailwind-config.css +0 -99
- package/admin/src/styles/theme.css +0 -261
- 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
|
@@ -36,9 +36,7 @@ function pathToRoute(path: string): EmbedRoute {
|
|
|
36
36
|
export function EmbedSidebar() {
|
|
37
37
|
const { currentPath, navigate, navigateToContentType } = useEmbedNavigation();
|
|
38
38
|
const config = useAdminConfig();
|
|
39
|
-
const { navItems, branding,
|
|
40
|
-
// layout
|
|
41
|
-
} = config;
|
|
39
|
+
const { navItems, branding, layout } = config;
|
|
42
40
|
const api = useApi();
|
|
43
41
|
|
|
44
42
|
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
|
|
@@ -79,7 +77,7 @@ export function EmbedSidebar() {
|
|
|
79
77
|
type="button"
|
|
80
78
|
onClick={() => handleNavClick(item)}
|
|
81
79
|
className={cn(
|
|
82
|
-
"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",
|
|
83
81
|
isActive(item.path, item.exact)
|
|
84
82
|
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
85
83
|
: "text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-accent-foreground"
|
|
@@ -100,7 +98,7 @@ export function EmbedSidebar() {
|
|
|
100
98
|
<Collapsible key={item.id} defaultOpen={isContentActive}>
|
|
101
99
|
<CollapsibleTrigger
|
|
102
100
|
className={cn(
|
|
103
|
-
"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",
|
|
104
102
|
isContentActive
|
|
105
103
|
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
106
104
|
: "text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-accent-foreground",
|
|
@@ -117,7 +115,7 @@ export function EmbedSidebar() {
|
|
|
117
115
|
type="button"
|
|
118
116
|
onClick={() => navigate("content")}
|
|
119
117
|
className={cn(
|
|
120
|
-
"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",
|
|
121
119
|
normalizedPath === "/content"
|
|
122
120
|
? "bg-sidebar-accent/60 text-sidebar-accent-foreground"
|
|
123
121
|
: "text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-accent-foreground"
|
|
@@ -131,7 +129,7 @@ export function EmbedSidebar() {
|
|
|
131
129
|
type="button"
|
|
132
130
|
onClick={() => navigateToContentType(type._id)}
|
|
133
131
|
className={cn(
|
|
134
|
-
"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",
|
|
135
133
|
normalizedPath === `/entries/type/${type._id}`
|
|
136
134
|
? "bg-sidebar-accent/60 text-sidebar-accent-foreground"
|
|
137
135
|
: "text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-accent-foreground"
|
|
@@ -154,19 +152,24 @@ export function EmbedSidebar() {
|
|
|
154
152
|
</Collapsible>
|
|
155
153
|
);
|
|
156
154
|
|
|
155
|
+
const sidebarWidth = layout.sidebarWidth;
|
|
156
|
+
|
|
157
157
|
return (
|
|
158
158
|
<>
|
|
159
|
-
<aside
|
|
160
|
-
|
|
159
|
+
<aside
|
|
160
|
+
className="fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-sidebar"
|
|
161
|
+
style={{ width: sidebarWidth }}
|
|
162
|
+
>
|
|
163
|
+
<div className="flex h-14 items-center gap-2 px-4">
|
|
161
164
|
<button
|
|
162
165
|
type="button"
|
|
163
166
|
onClick={() => navigate("dashboard")}
|
|
164
167
|
className="flex items-center gap-2 font-semibold text-sidebar-foreground"
|
|
165
168
|
>
|
|
166
169
|
{branding.logo ? (
|
|
167
|
-
<img src={branding.logo} alt={branding.appName} className="size-8" />
|
|
170
|
+
<img src={branding.logo} alt={branding.appName} className="size-8 bg-primary" />
|
|
168
171
|
) : (
|
|
169
|
-
<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">
|
|
170
173
|
<Layers className="size-4" />
|
|
171
174
|
</div>
|
|
172
175
|
)}
|
|
@@ -194,10 +197,10 @@ export function EmbedSidebar() {
|
|
|
194
197
|
)}
|
|
195
198
|
</nav>
|
|
196
199
|
|
|
197
|
-
<div className="
|
|
200
|
+
<div className="p-4">
|
|
198
201
|
<div className="flex items-center justify-between text-xs text-sidebar-foreground/60">
|
|
199
202
|
<span>Version</span>
|
|
200
|
-
<span className="font-mono">0.
|
|
203
|
+
<span className="font-mono">0.0.11</span>
|
|
201
204
|
</div>
|
|
202
205
|
</div>
|
|
203
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
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
import { useConvex } from "convex/react";
|
|
38
38
|
import { useMemo } from "react";
|
|
39
|
+
import { cn } from "../lib/cn";
|
|
39
40
|
import { SettingsConfigProvider } from "../contexts/SettingsConfigContext";
|
|
40
41
|
import {
|
|
41
42
|
AuthProvider,
|
|
@@ -46,7 +47,6 @@ import {
|
|
|
46
47
|
import { ThemeProvider } from "../contexts/ThemeContext";
|
|
47
48
|
import { RouteGuard } from "../components/RouteGuard";
|
|
48
49
|
import { resolveAdminConfig } from "../lib/admin-config";
|
|
49
|
-
import { cn } from "../lib/cn";
|
|
50
50
|
import type { CmsAdminProps, CmsAdminAuthConfig } from "./types";
|
|
51
51
|
import { ApiProvider } from "./contexts/ApiContext";
|
|
52
52
|
import {
|
|
@@ -129,6 +129,7 @@ export function CmsAdmin({
|
|
|
129
129
|
basePath = "/admin",
|
|
130
130
|
className,
|
|
131
131
|
themeMode = "isolated",
|
|
132
|
+
darkModeControl = "independent",
|
|
132
133
|
initialRoute = "dashboard",
|
|
133
134
|
onNavigate,
|
|
134
135
|
}: CmsAdminProps & {
|
|
@@ -165,7 +166,7 @@ export function CmsAdmin({
|
|
|
165
166
|
return (
|
|
166
167
|
<div className={cn("h-full", className)} data-cms-admin={themeMode}>
|
|
167
168
|
<ApiProvider api={api}>
|
|
168
|
-
<ThemeProvider>
|
|
169
|
+
<ThemeProvider themeMode={themeMode} darkModeControl={darkModeControl}>
|
|
169
170
|
<SettingsConfigProvider baseConfig={adminConfig} api={settingsApi}>
|
|
170
171
|
<AuthProvider
|
|
171
172
|
getUser={authConfig.getUser}
|
package/admin/src/embed/types.ts
CHANGED
|
@@ -26,4 +26,10 @@ export interface CmsAdminProps {
|
|
|
26
26
|
* - 'inherit': Admin inherits parent app's CSS variables (for shadcn apps)
|
|
27
27
|
*/
|
|
28
28
|
themeMode?: "isolated" | "inherit";
|
|
29
|
+
/**
|
|
30
|
+
* Dark mode control behavior:
|
|
31
|
+
* - 'independent' (default): Admin has its own dark mode toggle
|
|
32
|
+
* - 'follow-parent': Admin follows parent app's dark mode (hides toggle in inherit mode)
|
|
33
|
+
*/
|
|
34
|
+
darkModeControl?: "independent" | "follow-parent";
|
|
29
35
|
}
|
|
@@ -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';
|