convex-cms 0.0.9-alpha.9 → 0.0.10

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