convex-cms 0.0.9-alpha.9 → 0.0.11-alpha.2
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 +25 -5
- 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/dist/client/admin/contentTypes.d.ts +102 -0
- package/dist/client/admin/contentTypes.d.ts.map +1 -1
- package/dist/client/admin/index.d.ts +204 -0
- package/dist/client/admin/index.d.ts.map +1 -1
- package/dist/client/admin/media.d.ts.map +1 -1
- package/dist/client/admin/taxonomies.d.ts.map +1 -1
- package/dist/client/admin/trash.d.ts.map +1 -1
- package/dist/client/admin/validators.d.ts +570 -94
- package/dist/client/admin/validators.d.ts.map +1 -1
- package/dist/component/_generated/component.d.ts +102 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/contentTypeMutations.d.ts +68 -0
- package/dist/component/contentTypeMutations.d.ts.map +1 -1
- package/dist/component/contentTypes.d.ts +34 -0
- package/dist/component/contentTypes.d.ts.map +1 -1
- package/dist/component/ragContentIndexer.d.ts +17 -0
- package/dist/component/ragContentIndexer.d.ts.map +1 -1
- package/dist/component/schema.d.ts +399 -76
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +17 -0
- package/dist/component/schema.js.map +1 -1
- package/dist/component/taxonomies.d.ts +5 -5
- package/dist/component/validators.d.ts +362 -56
- package/dist/component/validators.d.ts.map +1 -1
- package/dist/test.d.ts +122 -20
- package/dist/test.d.ts.map +1 -1
- 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
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/convex-cms)
|
|
4
4
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
5
|
|
|
6
|
-
> **Alpha (v0.0.
|
|
6
|
+
> **Alpha (v0.0.10)** Actively developed. APIs & docs may change. [Report issues](https://github.com/obkaro/convex-cms/issues).
|
|
7
7
|
|
|
8
8
|
A headless CMS built as a [Convex Component](https://docs.convex.dev/components). Content management that runs inside your Convex app.
|
|
9
9
|
|
|
@@ -11,6 +11,7 @@ A headless CMS built as a [Convex Component](https://docs.convex.dev/components)
|
|
|
11
11
|
|
|
12
12
|
[Live Demo](https://convex-cms-example.vercel.app)
|
|
13
13
|
|
|
14
|
+
|
|
14
15
|
## Quick Start
|
|
15
16
|
|
|
16
17
|
### 1. Install
|
|
@@ -51,6 +52,8 @@ If you're building on Convex and need content management without the overhead of
|
|
|
51
52
|
- **Data independence:** CMS that lives in your own convex deployment, extendable and customizable with your convex functions
|
|
52
53
|
- **Agent-native content management:** Pre-built tools useful for AI agent integration with `@convex-dev/agent`
|
|
53
54
|
|
|
55
|
+
|
|
56
|
+
|
|
54
57
|
## Features
|
|
55
58
|
|
|
56
59
|
| Feature | What it does |
|
|
@@ -62,6 +65,8 @@ If you're building on Convex and need content management without the overhead of
|
|
|
62
65
|
| **CLI Admin UI** | Run for local development, content entry, and management |
|
|
63
66
|
| **Embedded Admin UI** | Ship the admin interface as part of your React app |
|
|
64
67
|
|
|
68
|
+
|
|
69
|
+
|
|
65
70
|
## In Practice
|
|
66
71
|
|
|
67
72
|
**Full control over the editorial experience?**
|
|
@@ -79,7 +84,8 @@ CMS Client + agent tools. Pre-built tools for AI-driven workflows.
|
|
|
79
84
|
*Any combination of these features works together seamlessly. Pick what fits your workflow.*
|
|
80
85
|
|
|
81
86
|
|
|
82
|
-
|
|
87
|
+
|
|
88
|
+
## Included Batteries
|
|
83
89
|
|
|
84
90
|
Leverage included features or extend and customize within your own convex functions to your desire.
|
|
85
91
|
|
|
@@ -107,6 +113,9 @@ Leverage included features or extend and customize within your own convex functi
|
|
|
107
113
|
- **Agent tools.** 23 pre-built tools with Zod schemas for AI integration
|
|
108
114
|
- **Query builder.** Fluent API for complex content queries
|
|
109
115
|
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
110
119
|
### Admin UI
|
|
111
120
|
- **Pre-built React interface.** CLI mode for development, embeddable for production
|
|
112
121
|
- **Visual content editing.** Rich text, media picker, reference selector
|
|
@@ -137,8 +146,6 @@ When embedding CmsAdmin in your React app, you can control how it handles CSS va
|
|
|
137
146
|
| `isolated` | Admin defines all CSS variables, ignoring parent app styles |
|
|
138
147
|
| `inherit` | Admin inherits parent's shadcn variables, only defines sidebar fallbacks |
|
|
139
148
|
|
|
140
|
-
**Critical for Tailwind 4 apps:** If Tailwind utility classes aren't applying to the embedded admin, add a `@source` directive to your app's CSS:
|
|
141
|
-
|
|
142
149
|
```css
|
|
143
150
|
/* your-app/src/index.css */
|
|
144
151
|
@import "tailwindcss";
|
|
@@ -147,6 +154,9 @@ When embedding CmsAdmin in your React app, you can control how it handles CSS va
|
|
|
147
154
|
|
|
148
155
|
This tells Tailwind to scan the admin's compiled JavaScript for utility classes.
|
|
149
156
|
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
150
160
|
## Documentation
|
|
151
161
|
|
|
152
162
|
| Guide | Description |
|
|
@@ -161,23 +171,33 @@ This tells Tailwind to scan the admin's compiled JavaScript for utility classes.
|
|
|
161
171
|
| [Agent Tools](./docs/guides/agent-tools.md) | AI agent integration with Zod schemas |
|
|
162
172
|
| [Integration Patterns](./docs/guides/integration-patterns.md) | Common setups and when to use each |
|
|
163
173
|
|
|
174
|
+
|
|
164
175
|
| Reference | Description |
|
|
165
176
|
|-----------|-------------|
|
|
166
177
|
| [Client API](./docs/api/client-api.md) | createCmsClient methods |
|
|
167
|
-
| [Admin API](./docs/api/admin-api.md) |
|
|
178
|
+
| [Admin API](./docs/api/admin-api.md) | 100+ defineAdminAPI functions |
|
|
168
179
|
| [Code-First Schema](./docs/api/code-first-schema.md) | TypeScript-first content types |
|
|
169
180
|
| [Field Types](./docs/api/field-types.md) | All 13 field types |
|
|
170
181
|
| [Configuration](./docs/api/configuration.md) | All config options |
|
|
171
182
|
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
172
186
|
## Requirements
|
|
173
187
|
|
|
174
188
|
- Convex ^1.17.0
|
|
175
189
|
- Node.js 18+
|
|
176
190
|
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
177
194
|
## License
|
|
178
195
|
|
|
179
196
|
Apache-2.0
|
|
180
197
|
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
181
201
|
## Support
|
|
182
202
|
|
|
183
203
|
- [GitHub Issues](https://github.com/obkaro/convex-cms/issues): Bug reports and feature requests
|
|
@@ -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';
|