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,9 +1,10 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
2
- import { h as api, B as Button, f as cn } from "./router-CQXMuGMF.mjs";
3
- import { C as CmsPageHeader } from "./CmsPageHeader-COUHuECp.mjs";
4
- import { u as useTanStackNavigation, A as Alert, b as AlertTitle, a as AlertDescription } from "./tanstack-adapter-CLavdbUY.mjs";
5
- import { u as useQuery, f as useMutation } from "../_libs/convex.mjs";
6
- import { Q as FileText, O as Image, a as Layers, J as Settings, am as TrendingUp, j as CircleAlert, an as CircleX, a0 as TriangleAlert, ao as RefreshCw } from "../_libs/lucide-react.mjs";
2
+ import { b as api, B as Button, e as cn } from "./router-DxF7GBcO.mjs";
3
+ import { u as useTanStackNavigation, A as Alert, b as AlertTitle, a as AlertDescription } from "./tanstack-adapter-CKknPtcU.mjs";
4
+ import { C as CmsPageHeader } from "./CmsPageHeader-DZ6h7smh.mjs";
5
+ import { C as CmsSurface } from "./CmsSurface-Cv51NBLZ.mjs";
6
+ import { u as useQuery, k as useMutation } from "../_libs/convex.mjs";
7
+ import { Q as FileText, O as Image, a as Layers, J as Settings, an as TrendingUp, j as CircleAlert, ao as CircleX, a0 as TriangleAlert, ap as RefreshCw } from "../_libs/lucide-react.mjs";
7
8
  import "../_chunks/_libs/@tanstack/react-router.mjs";
8
9
  import "../_libs/tiny-warning.mjs";
9
10
  import "../_chunks/_libs/@tanstack/router-core.mjs";
@@ -71,6 +72,51 @@ import "../_chunks/_libs/@radix-ui/react-popover.mjs";
71
72
  import "./index.mjs";
72
73
  import "node:async_hooks";
73
74
  import "../_libs/zod.mjs";
75
+ function CmsStatCard({
76
+ title,
77
+ value,
78
+ description,
79
+ icon,
80
+ trend,
81
+ onClick,
82
+ isLoading,
83
+ className
84
+ }) {
85
+ const content = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
86
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between", children: [
87
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
88
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-muted-foreground", children: title }),
89
+ isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-8 w-16 animate-pulse rounded bg-muted" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-2xl font-semibold text-foreground", children: value }),
90
+ description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: description })
91
+ ] }),
92
+ icon && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary", children: icon })
93
+ ] }),
94
+ trend && !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn(
95
+ "mt-2 text-xs font-medium",
96
+ trend.value >= 0 ? "text-diff-added-foreground" : "text-diff-removed-foreground"
97
+ ), children: [
98
+ trend.value >= 0 ? "+" : "",
99
+ trend.value,
100
+ "% ",
101
+ trend.label
102
+ ] })
103
+ ] });
104
+ if (onClick) {
105
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
106
+ "button",
107
+ {
108
+ type: "button",
109
+ onClick,
110
+ className: cn(
111
+ "text-left w-full cursor-pointer transition-colors hover:bg-accent/50",
112
+ className
113
+ ),
114
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(CmsSurface, { elevation: "base", padding: "md", className: "h-full", children: content })
115
+ }
116
+ );
117
+ }
118
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(CmsSurface, { elevation: "base", padding: "md", className: cn("h-full", className), children: content });
119
+ }
74
120
  function Card({ className, ...props }) {
75
121
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
76
122
  "div",
@@ -127,16 +173,6 @@ function CardContent({ className, ...props }) {
127
173
  }
128
174
  );
129
175
  }
130
- function Skeleton({ className, ...props }) {
131
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
132
- "div",
133
- {
134
- "data-slot": "skeleton",
135
- className: cn("bg-accent animate-pulse rounded-md", className),
136
- ...props
137
- }
138
- );
139
- }
140
176
  function SchemaDriftWarning({ api: api2 }) {
141
177
  const driftResults = useQuery(api2.checkSchemaDrift, {});
142
178
  const syncMutation = useMutation(api2.syncCodeDefinedTypes);
@@ -280,34 +316,34 @@ function DashboardPage({ api: api2, navigation }) {
280
316
  ] }),
281
317
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4", children: [
282
318
  /* @__PURE__ */ jsxRuntimeExports.jsx(
283
- StatCard,
319
+ CmsStatCard,
284
320
  {
285
- label: "Content Types",
286
- value: isLoading ? void 0 : hasError ? "—" : String(stats.contentTypes),
321
+ title: "Content Types",
322
+ value: hasError ? "—" : String(stats?.contentTypes ?? 0),
287
323
  isLoading
288
324
  }
289
325
  ),
290
326
  /* @__PURE__ */ jsxRuntimeExports.jsx(
291
- StatCard,
327
+ CmsStatCard,
292
328
  {
293
- label: "Content Entries",
294
- value: isLoading ? void 0 : hasError ? "—" : String(stats.contentEntries),
329
+ title: "Content Entries",
330
+ value: hasError ? "—" : String(stats?.contentEntries ?? 0),
295
331
  isLoading
296
332
  }
297
333
  ),
298
334
  /* @__PURE__ */ jsxRuntimeExports.jsx(
299
- StatCard,
335
+ CmsStatCard,
300
336
  {
301
- label: "Media Assets",
302
- value: isLoading ? void 0 : hasError ? "—" : String(stats.mediaAssets),
337
+ title: "Media Assets",
338
+ value: hasError ? "—" : String(stats?.mediaAssets ?? 0),
303
339
  isLoading
304
340
  }
305
341
  ),
306
342
  /* @__PURE__ */ jsxRuntimeExports.jsx(
307
- StatCard,
343
+ CmsStatCard,
308
344
  {
309
- label: "Published",
310
- value: isLoading ? void 0 : hasError ? "—" : String(stats.published),
345
+ title: "Published",
346
+ value: hasError ? "—" : String(stats?.published ?? 0),
311
347
  isLoading
312
348
  }
313
349
  )
@@ -321,24 +357,14 @@ function DashboardCard({
321
357
  onClick,
322
358
  icon
323
359
  }) {
324
- return /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", onClick, className: "text-left", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Card, { className: "h-full transition-colors hover:bg-accent/50", children: [
360
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", onClick, className: "text-left", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Card, { className: "h-full transition-colors hover:border-primary/75 hover:cursor-pointer", children: [
325
361
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CardHeader, { className: "pb-2", children: [
326
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-2 flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary", children: icon }),
362
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-2 flex size-10 items-center justify-center rounded-lg bg-primary/5 text-primary", children: icon }),
327
363
  /* @__PURE__ */ jsxRuntimeExports.jsx(CardTitle, { className: "text-base", children: title })
328
364
  ] }),
329
365
  /* @__PURE__ */ jsxRuntimeExports.jsx(CardContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CardDescription, { children: description }) })
330
366
  ] }) });
331
367
  }
332
- function StatCard({
333
- label,
334
- value,
335
- isLoading = false
336
- }) {
337
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Card, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(CardContent, { className: "p-4", children: [
338
- isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { className: "mb-1 h-8 w-16" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl font-bold", children: value }),
339
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm text-muted-foreground", children: label })
340
- ] }) });
341
- }
342
368
  function DashboardRoute() {
343
369
  const navigation = useTanStackNavigation();
344
370
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardPage, { api: api.admin, navigation });
@@ -3838,7 +3838,7 @@ function getResponse() {
3838
3838
  return event.res;
3839
3839
  }
3840
3840
  async function getStartManifest(matchedRoutes) {
3841
- const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-DndoqCo7.mjs");
3841
+ const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-iX3K33p1.mjs");
3842
3842
  const startManifest = tsrStartManifest();
3843
3843
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
3844
3844
  rootRoute.assets = rootRoute.assets || [];
@@ -4313,7 +4313,7 @@ function getStartResponseHeaders(opts) {
4313
4313
  let entriesPromise;
4314
4314
  let manifestPromise;
4315
4315
  async function loadEntries() {
4316
- const routerEntry = await import("./router-CQXMuGMF.mjs").then((n2) => n2.N);
4316
+ const routerEntry = await import("./router-DxF7GBcO.mjs").then((n2) => n2.N);
4317
4317
  const startEntry = await import("./start-HYkvq4Ni.mjs");
4318
4318
  return { startEntry, routerEntry };
4319
4319
  }
@@ -1,15 +1,15 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
2
- import { v as useSettingsConfig, h as api, f as cn, C as CmsButton, I as Input, S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem, e as Checkbox, D as Dialog, l as DialogContent, s as DialogHeader, m as DialogTitle, L as Label, t as DialogFooter, g as CmsConfirmDialog, n as DropdownMenu, o as DropdownMenuTrigger, p as DropdownMenuContent, q as DropdownMenuItem, r as DropdownMenuSeparator, u as useApi, i as CmsDialog, T as Textarea, B as Button } from "./router-CQXMuGMF.mjs";
3
- import { B as Badge } from "./badge-NOEC9bkk.mjs";
4
- import { u as useTanStackNavigation } from "./tanstack-adapter-CLavdbUY.mjs";
5
- import { T as Tabs, a as TabsList, b as TabsTrigger, U as UploadDropzone } from "./tabs-DtIIQxiD.mjs";
6
- import { C as CmsPageHeader } from "./CmsPageHeader-COUHuECp.mjs";
7
- import { C as CmsToolbar } from "./CmsToolbar-NB014hsd.mjs";
8
- import { C as CmsEmptyState } from "./CmsEmptyState-CB6e53i5.mjs";
9
- import { T as TaxonomyFilter } from "./TaxonomyFilter-bm_p4ADg.mjs";
2
+ import { v as useSettingsConfig, b as api, e as cn, d as Checkbox, C as CmsButton, D as Dialog, l as DialogContent, s as DialogHeader, m as DialogTitle, L as Label, I as Input, t as DialogFooter, a as CmsConfirmDialog, n as DropdownMenu, o as DropdownMenuTrigger, p as DropdownMenuContent, q as DropdownMenuItem, r as DropdownMenuSeparator, u as useApi, c as CmsDialog, T as Textarea, B as Button } from "./router-DxF7GBcO.mjs";
3
+ import { B as Badge } from "./badge-CbjIvhb6.mjs";
4
+ import { u as useTanStackNavigation } from "./tanstack-adapter-CKknPtcU.mjs";
5
+ import { T as Tabs, a as TabsList, b as TabsTrigger, U as UploadDropzone } from "./tabs-QkbR0iir.mjs";
6
+ import { C as CmsEmptyState } from "./CmsEmptyState-DzzuQG0S.mjs";
7
+ import { C as CmsPageHeader } from "./CmsPageHeader-DZ6h7smh.mjs";
8
+ import { C as CmsFilterBar } from "./CmsFilterBar-C5XADS12.mjs";
9
+ import { T as TaxonomyFilter } from "./TaxonomyFilter-xGwcgtjr.mjs";
10
10
  import { a as VisuallyHidden } from "../_chunks/_libs/@radix-ui/react-visually-hidden.mjs";
11
- import { u as useQuery, f as useMutation } from "../_libs/convex.mjs";
12
- import { O as Image, I as Trash2, H as House, a9 as ChevronLeft, aa as FolderPlus, ab as Upload, a1 as Search, X, s as Folder, a2 as RotateCcw, ac as Ellipsis, a3 as Pencil, ad as FolderInput, ae as EllipsisVertical, k as Eye, af as Download, Z as Link2, ag as File, Q as FileText, ah as Music, ai as Video, aj as Copy, h as ChevronRight, W as Tag, L as LoaderCircle, P as Plus } from "../_libs/lucide-react.mjs";
11
+ import { u as useQuery, k as useMutation } from "../_libs/convex.mjs";
12
+ import { O as Image, I as Trash2, H as House, a8 as ChevronLeft, a9 as FolderPlus, aa as Upload, s as Folder, a1 as RotateCcw, ab as Search, ac as Ellipsis, a2 as Pencil, ad as FolderInput, ae as EllipsisVertical, k as Eye, af as Download, Z as Link2, ag as File, Q as FileText, ah as Music, ai as Video, aj as Copy, X, h as ChevronRight, W as Tag, L as LoaderCircle, P as Plus } from "../_libs/lucide-react.mjs";
13
13
  import "../_chunks/_libs/@tanstack/react-router.mjs";
14
14
  import "../_libs/tiny-warning.mjs";
15
15
  import "../_chunks/_libs/@tanstack/router-core.mjs";
@@ -77,7 +77,7 @@ import "./index.mjs";
77
77
  import "node:async_hooks";
78
78
  import "../_libs/zod.mjs";
79
79
  import "../_chunks/_libs/@radix-ui/react-tabs.mjs";
80
- import "./command-h4-OYNBo.mjs";
80
+ import "./command-xB2uiYps.mjs";
81
81
  import "../_libs/cmdk.mjs";
82
82
  function CmsField({
83
83
  label,
@@ -1651,49 +1651,31 @@ function MediaPage({ api: api2, navigation, settings }) {
1651
1651
  ] }, folder._id))
1652
1652
  ] }),
1653
1653
  /* @__PURE__ */ jsxRuntimeExports.jsx(
1654
- CmsToolbar,
1654
+ CmsFilterBar,
1655
1655
  {
1656
- left: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
1657
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
1658
- /* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
1659
- /* @__PURE__ */ jsxRuntimeExports.jsx(
1660
- Input,
1661
- {
1662
- type: "search",
1663
- placeholder: "Search files...",
1664
- value: searchQuery,
1665
- onChange: (e) => setSearchQuery(e.target.value),
1666
- className: "w-64 pl-9"
1667
- }
1668
- ),
1669
- searchQuery && /* @__PURE__ */ jsxRuntimeExports.jsx(
1670
- "button",
1671
- {
1672
- className: "absolute right-2 top-1/2 -translate-y-1/2 rounded p-0.5 hover:bg-muted",
1673
- onClick: () => setSearchQuery(""),
1674
- "aria-label": "Clear search",
1675
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(X, { className: "size-4 text-muted-foreground" })
1676
- }
1677
- )
1678
- ] }),
1679
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
1680
- Select,
1681
- {
1682
- value: typeFilter || "all",
1683
- onValueChange: (v) => setTypeFilter(v === "all" ? "" : v),
1684
- children: [
1685
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "w-36", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "All Types" }) }),
1686
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
1687
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "all", children: "All Types" }),
1688
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "image", children: "Images" }),
1689
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "video", children: "Videos" }),
1690
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "audio", children: "Audio" }),
1691
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "document", children: "Documents" }),
1692
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "other", children: "Other" })
1693
- ] })
1694
- ]
1695
- }
1696
- ),
1656
+ search: {
1657
+ value: searchQuery,
1658
+ onChange: setSearchQuery,
1659
+ placeholder: "Search files...",
1660
+ className: "w-64"
1661
+ },
1662
+ filters: [
1663
+ {
1664
+ key: "type",
1665
+ value: typeFilter || "all",
1666
+ onChange: (v) => setTypeFilter(v === "all" ? "" : v),
1667
+ options: [
1668
+ { value: "all", label: "All Types" },
1669
+ { value: "image", label: "Images" },
1670
+ { value: "video", label: "Videos" },
1671
+ { value: "audio", label: "Audio" },
1672
+ { value: "document", label: "Documents" },
1673
+ { value: "other", label: "Other" }
1674
+ ],
1675
+ className: "w-36"
1676
+ }
1677
+ ],
1678
+ actions: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
1697
1679
  /* @__PURE__ */ jsxRuntimeExports.jsx(
1698
1680
  TaxonomyFilter,
1699
1681
  {
@@ -1716,9 +1698,7 @@ function MediaPage({ api: api2, navigation, settings }) {
1716
1698
  }
1717
1699
  ),
1718
1700
  "Selection Mode"
1719
- ] })
1720
- ] }),
1721
- right: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
1701
+ ] }),
1722
1702
  isSelectionMode && selectedAssets.size > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-muted-foreground", children: [
1723
1703
  selectedAssets.size,
1724
1704
  " selected"
@@ -1,9 +1,9 @@
1
1
  import { j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
2
2
  import { d as useNavigate } from "../_chunks/_libs/@tanstack/react-router.mjs";
3
- import { J as Route, h as api } from "./router-CQXMuGMF.mjs";
4
- import { C as ContentEntryEditor } from "./ContentEntryEditor-Bq8FR_uK.mjs";
5
- import { u as useBreadcrumbLabel } from "./useBreadcrumbLabel-DR5FaAMf.mjs";
6
- import { C as CmsEmptyState } from "./CmsEmptyState-CB6e53i5.mjs";
3
+ import { J as Route, b as api } from "./router-DxF7GBcO.mjs";
4
+ import { C as ContentEntryEditor } from "./ContentEntryEditor-CRjwXB17.mjs";
5
+ import { u as useBreadcrumbLabel } from "./useBreadcrumbLabel-BjiR1fM_.mjs";
6
+ import { C as CmsEmptyState } from "./CmsEmptyState-DzzuQG0S.mjs";
7
7
  import { u as useQuery } from "../_libs/convex.mjs";
8
8
  import { Q as FileText } from "../_libs/lucide-react.mjs";
9
9
  import "../_libs/tiny-warning.mjs";
@@ -72,16 +72,16 @@ import "../_chunks/_libs/@radix-ui/react-popover.mjs";
72
72
  import "./index.mjs";
73
73
  import "node:async_hooks";
74
74
  import "../_libs/zod.mjs";
75
- import "./switch-BKZhvryc.mjs";
75
+ import "./switch-Bl89Pfxu.mjs";
76
76
  import "../_chunks/_libs/@radix-ui/react-switch.mjs";
77
77
  import "../_chunks/_libs/@radix-ui/react-separator.mjs";
78
- import "./tabs-DtIIQxiD.mjs";
78
+ import "./tabs-QkbR0iir.mjs";
79
79
  import "../_chunks/_libs/@radix-ui/react-tabs.mjs";
80
- import "./command-h4-OYNBo.mjs";
80
+ import "./command-xB2uiYps.mjs";
81
81
  import "../_libs/cmdk.mjs";
82
- import "./badge-NOEC9bkk.mjs";
83
- import "./CmsStatusBadge-kMTL6koE.mjs";
84
- import "./scroll-area-B7zoNyWB.mjs";
82
+ import "./badge-CbjIvhb6.mjs";
83
+ import "./CmsStatusBadge-D-YFSAa1.mjs";
84
+ import "./scroll-area-DLDlXI07.mjs";
85
85
  import "../_chunks/_libs/@radix-ui/react-scroll-area.mjs";
86
86
  import "../_libs/react-day-picker.mjs";
87
87
  import "../_libs/date-fns.mjs";