convex-cms 0.0.9-alpha.7 → 0.0.9-alpha.8

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.
Files changed (71) hide show
  1. package/admin/src/embed/components/EmbedLayout.tsx +6 -2
  2. package/admin/src/embed/components/EmbedSidebar.tsx +4 -7
  3. package/admin/src/embed/index.tsx +8 -5
  4. package/admin/src/embed/types.ts +6 -0
  5. package/admin/src/styles/globals.css +9 -0
  6. package/admin/src/styles/theme.css +141 -3
  7. package/admin-dist/nitro.json +1 -1
  8. package/admin-dist/public/assets/{CmsEmptyState-gxhf-b6F.js → CmsEmptyState-DTlpzjOI.js} +1 -1
  9. package/admin-dist/public/assets/{CmsPageHeader-equV7Sd9.js → CmsPageHeader-0REGRH4X.js} +1 -1
  10. package/admin-dist/public/assets/{CmsStatusBadge-DQAslyW4.js → CmsStatusBadge-D_n8u8xa.js} +1 -1
  11. package/admin-dist/public/assets/{CmsSurface-DdC_aGB5.js → CmsSurface-BHmvNai4.js} +1 -1
  12. package/admin-dist/public/assets/{CmsToolbar-Crleacii.js → CmsToolbar-CY6GV2L8.js} +1 -1
  13. package/admin-dist/public/assets/{ContentEntryEditor-RmtIo3lE.js → ContentEntryEditor-CRgcRkk5.js} +1 -1
  14. package/admin-dist/public/assets/{TaxonomyFilter-BsoK90hw.js → TaxonomyFilter-Ohv5Jg9c.js} +1 -1
  15. package/admin-dist/public/assets/{_contentTypeId-Bn2ItET5.js → _contentTypeId-C_vJq22X.js} +1 -1
  16. package/admin-dist/public/assets/{_entryId-CkZWLvOZ.js → _entryId-jPXz4z9T.js} +1 -1
  17. package/admin-dist/public/assets/{alert-C7q0k4u0.js → alert-CG97cMfC.js} +1 -1
  18. package/admin-dist/public/assets/{badge-DiaAY1It.js → badge-C6qt24oj.js} +1 -1
  19. package/admin-dist/public/assets/{circle-check-big-Bl0y10am.js → circle-check-big-PltpxuB1.js} +1 -1
  20. package/admin-dist/public/assets/{command-QyTDg7pa.js → command-CJ8i86fd.js} +1 -1
  21. package/admin-dist/public/assets/{content-D868GT7T.js → content-pKaIL2ru.js} +1 -1
  22. package/admin-dist/public/assets/{content-types-DD7fJA5i.js → content-types-Bl_8I1Re.js} +1 -1
  23. package/admin-dist/public/assets/{index-CMnzrG_D.js → index-CtHq_P5q.js} +1 -1
  24. package/admin-dist/public/assets/{main-DWSY6jZL.js → main-CA-4LyFT.js} +2 -2
  25. package/admin-dist/public/assets/{media-aqxopgtw.js → media-Bl1tBbJQ.js} +1 -1
  26. package/admin-dist/public/assets/{new._contentTypeId-9ji3Hibs.js → new._contentTypeId-qsvo01mH.js} +1 -1
  27. package/admin-dist/public/assets/{pencil-D8GqMaV3.js → pencil-gAL0R34f.js} +1 -1
  28. package/admin-dist/public/assets/{refresh-cw-JipRPLLT.js → refresh-cw-sdVUGJNs.js} +1 -1
  29. package/admin-dist/public/assets/{rotate-ccw-CK11hP79.js → rotate-ccw-6OcXCcxb.js} +1 -1
  30. package/admin-dist/public/assets/{scroll-area-CJS1P20j.js → scroll-area-CJBhf9pf.js} +1 -1
  31. package/admin-dist/public/assets/{search-BT8HTHxb.js → search-WXp6KxDJ.js} +1 -1
  32. package/admin-dist/public/assets/settings-D8crrFCn.js +1 -0
  33. package/admin-dist/public/assets/{switch-Cb-ecsrJ.js → switch-Ck9ecqEX.js} +1 -1
  34. package/admin-dist/public/assets/{tabs-CFEXN2p7.js → tabs-vQYu8rjC.js} +1 -1
  35. package/admin-dist/public/assets/{tanstack-adapter-CGxC-fmP.js → tanstack-adapter-BRt2CUCw.js} +1 -1
  36. package/admin-dist/public/assets/{taxonomies-C21Z8CBa.js → taxonomies-DvILUNvr.js} +1 -1
  37. package/admin-dist/public/assets/{trash-CMRJlzc0.js → trash-YyYaC3L9.js} +1 -1
  38. package/admin-dist/public/assets/{useBreadcrumbLabel-ZZFYdqzi.js → useBreadcrumbLabel-tlSh7dtO.js} +1 -1
  39. package/admin-dist/public/assets/{usePermissions-C2FRye75.js → usePermissions-BTGdTOJS.js} +1 -1
  40. package/admin-dist/server/_ssr/{CmsEmptyState-DWqt3y_O.mjs → CmsEmptyState-CB6e53i5.mjs} +1 -1
  41. package/admin-dist/server/_ssr/{CmsPageHeader-BuN0dOPA.mjs → CmsPageHeader-COUHuECp.mjs} +1 -1
  42. package/admin-dist/server/_ssr/{CmsStatusBadge-CV35-X_8.mjs → CmsStatusBadge-kMTL6koE.mjs} +2 -2
  43. package/admin-dist/server/_ssr/{CmsSurface-DEcWf_aJ.mjs → CmsSurface-D1HDYjRg.mjs} +1 -1
  44. package/admin-dist/server/_ssr/{CmsToolbar-BMBEZVgb.mjs → CmsToolbar-NB014hsd.mjs} +1 -1
  45. package/admin-dist/server/_ssr/{ContentEntryEditor-Db9Sy_0y.mjs → ContentEntryEditor-Bq8FR_uK.mjs} +8 -8
  46. package/admin-dist/server/_ssr/{TaxonomyFilter-D_xDfC8t.mjs → TaxonomyFilter-bm_p4ADg.mjs} +3 -3
  47. package/admin-dist/server/_ssr/{_contentTypeId-HZlfcQi-.mjs → _contentTypeId-B7obLmi_.mjs} +10 -10
  48. package/admin-dist/server/_ssr/{_entryId-Cc_Ry7AV.mjs → _entryId-B4zhQqFg.mjs} +11 -11
  49. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-DndoqCo7.mjs +4 -0
  50. package/admin-dist/server/_ssr/{badge-CmG74mbX.mjs → badge-NOEC9bkk.mjs} +1 -1
  51. package/admin-dist/server/_ssr/{command-DWXiOsOb.mjs → command-h4-OYNBo.mjs} +1 -1
  52. package/admin-dist/server/_ssr/{content-CAgFQzx-.mjs → content-CShtLuhK.mjs} +8 -8
  53. package/admin-dist/server/_ssr/{content-types-CqKvAZ8P.mjs → content-types-PeyRyfbc.mjs} +6 -6
  54. package/admin-dist/server/_ssr/{index--qYdIqvh.mjs → index-CplFXpGg.mjs} +3 -3
  55. package/admin-dist/server/_ssr/index.mjs +2 -2
  56. package/admin-dist/server/_ssr/{media-AXePwPAK.mjs → media-QAkNdX54.mjs} +9 -9
  57. package/admin-dist/server/_ssr/{new._contentTypeId-DNWIl-Ha.mjs → new._contentTypeId-DEJyMphJ.mjs} +10 -10
  58. package/admin-dist/server/_ssr/{router-B_gIkxi2.mjs → router-CQXMuGMF.mjs} +10 -10
  59. package/admin-dist/server/_ssr/{scroll-area-Cz-9ry0J.mjs → scroll-area-B7zoNyWB.mjs} +1 -1
  60. package/admin-dist/server/_ssr/{settings-BjSxo5d6.mjs → settings-CNaqVa4D.mjs} +9 -9
  61. package/admin-dist/server/_ssr/{switch-IsC1gdb1.mjs → switch-BKZhvryc.mjs} +1 -1
  62. package/admin-dist/server/_ssr/{tabs-BdgLwrYe.mjs → tabs-DtIIQxiD.mjs} +1 -1
  63. package/admin-dist/server/_ssr/{tanstack-adapter-CFwjrqRl.mjs → tanstack-adapter-CLavdbUY.mjs} +1 -1
  64. package/admin-dist/server/_ssr/{taxonomies-D5Di9EgA.mjs → taxonomies-vIZYICzr.mjs} +7 -7
  65. package/admin-dist/server/_ssr/{trash-DokZl1yA.mjs → trash-7yGR4-dF.mjs} +7 -7
  66. package/admin-dist/server/_ssr/{useBreadcrumbLabel-C4TsA5z0.mjs → useBreadcrumbLabel-DR5FaAMf.mjs} +1 -1
  67. package/admin-dist/server/_ssr/{usePermissions-COsRlMp-.mjs → usePermissions-DKkpETj_.mjs} +1 -1
  68. package/admin-dist/server/index.mjs +155 -155
  69. package/package.json +1 -1
  70. package/admin-dist/public/assets/settings-DCY0s2hR.js +0 -1
  71. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-DhspKP9e.mjs +0 -4
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * A router-agnostic layout for the embedded admin that uses
5
5
  * EmbedSidebar instead of the router-dependent Sidebar.
6
+ * Uses CSS Grid for proper container-relative positioning.
6
7
  */
7
8
 
8
9
  import type { ReactNode } from "react";
@@ -18,9 +19,12 @@ export function EmbedLayout({ children }: EmbedLayoutProps) {
18
19
  const { layout } = useAdminConfig();
19
20
 
20
21
  return (
21
- <div className="flex min-h-screen bg-background">
22
+ <div
23
+ className="grid h-full bg-background"
24
+ style={{ gridTemplateColumns: `${layout.sidebarWidth}px 1fr` }}
25
+ >
22
26
  <EmbedSidebar />
23
- <div className="flex flex-1 flex-col" style={{ marginLeft: layout.sidebarWidth }}>
27
+ <div className="flex flex-col overflow-hidden">
24
28
  <EmbedHeader />
25
29
  <main className="flex-1 overflow-auto p-6">{children}</main>
26
30
  </div>
@@ -36,7 +36,9 @@ 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, layout } = config;
39
+ const { navItems, branding,
40
+ // layout
41
+ } = config;
40
42
  const api = useApi();
41
43
 
42
44
  const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
@@ -152,14 +154,9 @@ export function EmbedSidebar() {
152
154
  </Collapsible>
153
155
  );
154
156
 
155
- const sidebarWidth = layout.sidebarWidth;
156
-
157
157
  return (
158
158
  <>
159
- <aside
160
- className="fixed inset-y-0 left-0 z-50 flex flex-col border-r border-sidebar-border bg-sidebar"
161
- style={{ width: sidebarWidth }}
162
- >
159
+ <aside className="sticky top-0 z-40 flex h-full flex-col overflow-hidden border-r border-sidebar-border bg-sidebar">
163
160
  <div className="flex h-14 items-center gap-2 border-b border-sidebar-border px-4">
164
161
  <button
165
162
  type="button"
@@ -46,6 +46,7 @@ import {
46
46
  import { ThemeProvider } from "../contexts/ThemeContext";
47
47
  import { RouteGuard } from "../components/RouteGuard";
48
48
  import { resolveAdminConfig } from "../lib/admin-config";
49
+ import { cn } from "../lib/cn";
49
50
  import type { CmsAdminProps, CmsAdminAuthConfig } from "./types";
50
51
  import { ApiProvider } from "./contexts/ApiContext";
51
52
  import {
@@ -127,6 +128,7 @@ export function CmsAdmin({
127
128
  auth,
128
129
  basePath = "/admin",
129
130
  className,
131
+ themeMode = "isolated",
130
132
  initialRoute = "dashboard",
131
133
  onNavigate,
132
134
  }: CmsAdminProps & {
@@ -143,7 +145,10 @@ export function CmsAdmin({
143
145
 
144
146
  if (!convex) {
145
147
  return (
146
- <div className="flex min-h-full items-center justify-center bg-background p-6">
148
+ <div
149
+ className={cn("flex h-full items-center justify-center bg-background p-6", className)}
150
+ data-cms-admin={themeMode}
151
+ >
147
152
  <div className="diff-modified max-w-lg space-y-4 rounded-lg border p-6 text-center">
148
153
  <h2 className="text-xl font-semibold text-diff-modified">
149
154
  ConvexProvider Required
@@ -158,7 +163,7 @@ export function CmsAdmin({
158
163
  }
159
164
 
160
165
  return (
161
- <div className={className}>
166
+ <div className={cn("h-full", className)} data-cms-admin={themeMode}>
162
167
  <ApiProvider api={api}>
163
168
  <ThemeProvider>
164
169
  <SettingsConfigProvider baseConfig={adminConfig} api={settingsApi}>
@@ -173,9 +178,7 @@ export function CmsAdmin({
173
178
  onNavigate={onNavigate}
174
179
  >
175
180
  <RouteGuard>
176
- <div className="min-h-screen">
177
- <EmbedRouter />
178
- </div>
181
+ <EmbedRouter />
179
182
  </RouteGuard>
180
183
  </EmbedNavigationProvider>
181
184
  </AuthProvider>
@@ -20,4 +20,10 @@ export interface CmsAdminProps {
20
20
  auth: CmsAdminAuthConfig;
21
21
  basePath?: string;
22
22
  className?: string;
23
+ /**
24
+ * Theme mode for CSS variable scoping:
25
+ * - 'isolated' (default): Admin uses its own theme, ignores parent app styles
26
+ * - 'inherit': Admin inherits parent app's CSS variables (for shadcn apps)
27
+ */
28
+ themeMode?: "isolated" | "inherit";
23
29
  }
@@ -12,12 +12,21 @@
12
12
  @apply border-border;
13
13
  }
14
14
 
15
+ /* Standalone mode - admin owns the document */
15
16
  body {
16
17
  @apply bg-background text-foreground;
17
18
  font-feature-settings: 'rlig' 1, 'calt' 1;
18
19
  -webkit-font-smoothing: antialiased;
19
20
  -moz-osx-font-smoothing: grayscale;
20
21
  }
22
+
23
+ /* Embedded mode - scope styles to container */
24
+ [data-cms-admin] {
25
+ @apply bg-background text-foreground;
26
+ font-feature-settings: 'rlig' 1, 'calt' 1;
27
+ -webkit-font-smoothing: antialiased;
28
+ -moz-osx-font-smoothing: grayscale;
29
+ }
21
30
  }
22
31
 
23
32
  @layer utilities {
@@ -2,10 +2,13 @@
2
2
  CMS Admin Theme - CSS Custom Properties
3
3
  Professional & Clean (Linear/Notion aesthetic)
4
4
 
5
- Consumers can import this file and override
6
- any variable in their own :root {} block.
5
+ Theme modes:
6
+ - Standalone: Uses :root for the entire document
7
+ - Isolated (embedded): Admin uses its own theme via [data-cms-admin="isolated"]
8
+ - Inherit (embedded): Admin inherits parent's colors via [data-cms-admin="inherit"]
7
9
  ============================================ */
8
10
 
11
+ /* Standalone mode - admin owns the document */
9
12
  :root {
10
13
  /* Main colors */
11
14
  --background: hsl(0 0% 98%);
@@ -64,7 +67,106 @@
64
67
  --info-foreground: hsl(217 91% 30%);
65
68
  }
66
69
 
67
- .dark {
70
+ /* Isolated mode - forces admin's own theme, ignores parent styles */
71
+ [data-cms-admin="isolated"] {
72
+ /* Main colors */
73
+ --background: hsl(0 0% 98%);
74
+ --foreground: hsl(240 10% 3.9%);
75
+ --card: hsl(0 0% 100%);
76
+ --card-foreground: hsl(240 10% 3.9%);
77
+ --popover: hsl(0 0% 100%);
78
+ --popover-foreground: hsl(240 10% 3.9%);
79
+ --primary: hsl(240 5.9% 10%);
80
+ --primary-foreground: hsl(0 0% 98%);
81
+ --secondary: hsl(240 4.8% 95.9%);
82
+ --secondary-foreground: hsl(240 5.9% 10%);
83
+ --muted: hsl(240 4.8% 95.9%);
84
+ --muted-foreground: hsl(240 3.8% 46.1%);
85
+ --accent: hsl(240 4.8% 95.9%);
86
+ --accent-foreground: hsl(240 5.9% 10%);
87
+ --destructive: hsl(0 84.2% 60.2%);
88
+ --destructive-foreground: hsl(0 0% 98%);
89
+ --border: hsl(240 5.9% 90%);
90
+ --input: hsl(240 5.9% 90%);
91
+ --ring: hsl(240 5.9% 10%);
92
+
93
+ /* Sidebar */
94
+ --sidebar: hsl(0 0% 98%);
95
+ --sidebar-foreground: hsl(240 5.3% 26.1%);
96
+ --sidebar-primary: hsl(240 5.9% 10%);
97
+ --sidebar-primary-foreground: hsl(0 0% 98%);
98
+ --sidebar-accent: hsl(240 4.8% 95.9%);
99
+ --sidebar-accent-foreground: hsl(240 5.9% 10%);
100
+ --sidebar-border: hsl(220 13% 91%);
101
+ --sidebar-ring: hsl(217.2 91.2% 59.8%);
102
+
103
+ /* Semantic: Diff/Change indicators */
104
+ --diff-added: hsl(142 76% 36%);
105
+ --diff-added-bg: hsl(142 76% 95%);
106
+ --diff-added-border: hsl(142 76% 85%);
107
+ --diff-added-foreground: hsl(142 76% 25%);
108
+
109
+ --diff-removed: hsl(0 84% 60%);
110
+ --diff-removed-bg: hsl(0 86% 97%);
111
+ --diff-removed-border: hsl(0 93% 85%);
112
+ --diff-removed-foreground: hsl(0 72% 30%);
113
+
114
+ --diff-modified: hsl(38 92% 50%);
115
+ --diff-modified-bg: hsl(48 96% 97%);
116
+ --diff-modified-border: hsl(48 96% 82%);
117
+ --diff-modified-foreground: hsl(38 92% 25%);
118
+
119
+ /* Semantic: Success/Warning/Info states */
120
+ --success: hsl(142 76% 36%);
121
+ --success-foreground: hsl(0 0% 100%);
122
+ --warning: hsl(38 92% 50%);
123
+ --warning-foreground: hsl(0 0% 100%);
124
+ --info: hsl(217 91% 60%);
125
+ --info-bg: hsl(214 95% 97%);
126
+ --info-foreground: hsl(217 91% 30%);
127
+ }
128
+
129
+ /* Inherit mode - uses parent's colors with fallbacks for layout */
130
+ [data-cms-admin="inherit"] {
131
+ /* Sidebar variables with fallbacks (prevents broken layout) */
132
+ --sidebar: var(--sidebar, hsl(0 0% 98%));
133
+ --sidebar-foreground: var(--sidebar-foreground, hsl(240 5.3% 26.1%));
134
+ --sidebar-primary: var(--sidebar-primary, hsl(240 5.9% 10%));
135
+ --sidebar-primary-foreground: var(--sidebar-primary-foreground, hsl(0 0% 98%));
136
+ --sidebar-accent: var(--sidebar-accent, hsl(240 4.8% 95.9%));
137
+ --sidebar-accent-foreground: var(--sidebar-accent-foreground, hsl(240 5.9% 10%));
138
+ --sidebar-border: var(--sidebar-border, hsl(220 13% 91%));
139
+ --sidebar-ring: var(--sidebar-ring, hsl(217.2 91.2% 59.8%));
140
+
141
+ /* Semantic variables with fallbacks */
142
+ --diff-added: var(--diff-added, hsl(142 76% 36%));
143
+ --diff-added-bg: var(--diff-added-bg, hsl(142 76% 95%));
144
+ --diff-added-border: var(--diff-added-border, hsl(142 76% 85%));
145
+ --diff-added-foreground: var(--diff-added-foreground, hsl(142 76% 25%));
146
+
147
+ --diff-removed: var(--diff-removed, hsl(0 84% 60%));
148
+ --diff-removed-bg: var(--diff-removed-bg, hsl(0 86% 97%));
149
+ --diff-removed-border: var(--diff-removed-border, hsl(0 93% 85%));
150
+ --diff-removed-foreground: var(--diff-removed-foreground, hsl(0 72% 30%));
151
+
152
+ --diff-modified: var(--diff-modified, hsl(38 92% 50%));
153
+ --diff-modified-bg: var(--diff-modified-bg, hsl(48 96% 97%));
154
+ --diff-modified-border: var(--diff-modified-border, hsl(48 96% 82%));
155
+ --diff-modified-foreground: var(--diff-modified-foreground, hsl(38 92% 25%));
156
+
157
+ --success: var(--success, hsl(142 76% 36%));
158
+ --success-foreground: var(--success-foreground, hsl(0 0% 100%));
159
+ --warning: var(--warning, hsl(38 92% 50%));
160
+ --warning-foreground: var(--warning-foreground, hsl(0 0% 100%));
161
+ --info: var(--info, hsl(217 91% 60%));
162
+ --info-bg: var(--info-bg, hsl(214 95% 97%));
163
+ --info-foreground: var(--info-foreground, hsl(217 91% 30%));
164
+ }
165
+
166
+ /* Dark mode - standalone and isolated modes */
167
+ .dark,
168
+ [data-cms-admin="isolated"].dark,
169
+ [data-cms-admin="isolated"] .dark {
68
170
  /* Main colors */
69
171
  --background: hsl(240 10% 3.9%);
70
172
  --foreground: hsl(0 0% 98%);
@@ -121,3 +223,39 @@
121
223
  --info-bg: hsl(217 50% 15%);
122
224
  --info-foreground: hsl(217 80% 80%);
123
225
  }
226
+
227
+ /* Dark mode sidebar fallbacks for inherit mode */
228
+ [data-cms-admin="inherit"].dark,
229
+ [data-cms-admin="inherit"] .dark {
230
+ --sidebar: var(--sidebar, hsl(240 5.9% 10%));
231
+ --sidebar-foreground: var(--sidebar-foreground, hsl(240 4.8% 95.9%));
232
+ --sidebar-primary: var(--sidebar-primary, hsl(224.3 76.3% 48%));
233
+ --sidebar-primary-foreground: var(--sidebar-primary-foreground, hsl(0 0% 100%));
234
+ --sidebar-accent: var(--sidebar-accent, hsl(240 3.7% 15.9%));
235
+ --sidebar-accent-foreground: var(--sidebar-accent-foreground, hsl(240 4.8% 95.9%));
236
+ --sidebar-border: var(--sidebar-border, hsl(240 3.7% 15.9%));
237
+ --sidebar-ring: var(--sidebar-ring, hsl(217.2 91.2% 59.8%));
238
+
239
+ --diff-added: var(--diff-added, hsl(142 70% 50%));
240
+ --diff-added-bg: var(--diff-added-bg, hsl(142 50% 15%));
241
+ --diff-added-border: var(--diff-added-border, hsl(142 50% 25%));
242
+ --diff-added-foreground: var(--diff-added-foreground, hsl(142 70% 80%));
243
+
244
+ --diff-removed: var(--diff-removed, hsl(0 70% 55%));
245
+ --diff-removed-bg: var(--diff-removed-bg, hsl(0 50% 15%));
246
+ --diff-removed-border: var(--diff-removed-border, hsl(0 50% 25%));
247
+ --diff-removed-foreground: var(--diff-removed-foreground, hsl(0 70% 80%));
248
+
249
+ --diff-modified: var(--diff-modified, hsl(38 80% 55%));
250
+ --diff-modified-bg: var(--diff-modified-bg, hsl(38 50% 15%));
251
+ --diff-modified-border: var(--diff-modified-border, hsl(38 50% 25%));
252
+ --diff-modified-foreground: var(--diff-modified-foreground, hsl(38 80% 80%));
253
+
254
+ --success: var(--success, hsl(142 70% 50%));
255
+ --success-foreground: var(--success-foreground, hsl(0 0% 100%));
256
+ --warning: var(--warning, hsl(38 80% 55%));
257
+ --warning-foreground: var(--warning-foreground, hsl(0 0% 100%));
258
+ --info: var(--info, hsl(217 80% 60%));
259
+ --info-bg: var(--info-bg, hsl(217 50% 15%));
260
+ --info-foreground: var(--info-foreground, hsl(217 80% 80%));
261
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "date": "2026-01-28T13:35:47.975Z",
2
+ "date": "2026-01-28T14:07:30.300Z",
3
3
  "preset": "node-server",
4
4
  "framework": {
5
5
  "name": "nitro",
@@ -1 +1 @@
1
- import{j as e,C as n,h as x}from"./main-DWSY6jZL.js";function d({icon:s,title:m,description:r,action:t,className:l,...a}){return e.jsxs("div",{className:x("flex flex-col items-center justify-center py-12 text-center",l),...a,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(n,{variant:t.variant??"primary",onClick:t.onClick,className:"mt-4",children:t.label})]})}export{d as C};
1
+ import{j as e,C as n,h as x}from"./main-CA-4LyFT.js";function d({icon:s,title:m,description:r,action:t,className:l,...a}){return e.jsxs("div",{className:x("flex flex-col items-center justify-center py-12 text-center",l),...a,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(n,{variant:t.variant??"primary",onClick:t.onClick,className:"mt-4",children:t.label})]})}export{d as C};
@@ -1 +1 @@
1
- import{j as e,h as m}from"./main-DWSY6jZL.js";function c({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{c as C};
1
+ import{j as e,h as m}from"./main-CA-4LyFT.js";function c({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{c as C};
@@ -1 +1 @@
1
- import{j as e,h as t}from"./main-DWSY6jZL.js";import{B as a}from"./badge-DiaAY1It.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-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400",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:d,customConfig:s,className:o,...i}){if(s)return e.jsxs(a,{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[d];return r?e.jsxs(a,{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(a,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n.gray,o),...i,children:[l(),d]})}export{x as C};
1
+ import{j as e,h as t}from"./main-CA-4LyFT.js";import{B as a}from"./badge-C6qt24oj.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-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400",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:d,customConfig:s,className:o,...i}){if(s)return e.jsxs(a,{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[d];return r?e.jsxs(a,{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(a,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n.gray,o),...i,children:[l(),d]})}export{x as C};
@@ -1 +1 @@
1
- import{j as r,h as t}from"./main-DWSY6jZL.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};
1
+ import{j as r,h as t}from"./main-CA-4LyFT.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};
@@ -1 +1 @@
1
- import{j as e,I as i,h as o}from"./main-DWSY6jZL.js";import{S as p}from"./search-BT8HTHxb.js";function u({left:t,right:s,search:a,filters:r,actions:l,className:n,children:x,...m}){return e.jsxs("div",{className:o("flex flex-wrap items-center justify-between gap-3 pb-4",n),...m,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(p,{className:"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(i,{type:"search",placeholder:a.placeholder??"Search...",value:a.value,onChange:c=>a.onChange(c.target.value),className:"pl-9"})]}),r,t,x]}),(s||l)&&e.jsx("div",{className:"flex items-center gap-2",children:s??l})]})}export{u as C};
1
+ import{j as e,I as i,h as o}from"./main-CA-4LyFT.js";import{S as p}from"./search-WXp6KxDJ.js";function u({left:t,right:s,search:a,filters:r,actions:l,className:n,children:x,...m}){return e.jsxs("div",{className:o("flex flex-wrap items-center justify-between gap-3 pb-4",n),...m,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(p,{className:"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(i,{type:"search",placeholder:a.placeholder??"Search...",value:a.value,onChange:c=>a.onChange(c.target.value),className:"pl-9"})]}),r,t,x]}),(s||l)&&e.jsx("div",{className:"flex items-center gap-2",children:s??l})]})}export{u as C};