convex-cms 0.0.3 → 0.0.5-alpha.0

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 (142) hide show
  1. package/README.md +109 -13
  2. package/admin-dist/nitro.json +1 -1
  3. package/admin-dist/public/assets/{CmsEmptyState-CRswfTzk.js → CmsEmptyState-CiMQwSQV.js} +2 -2
  4. package/admin-dist/public/assets/{CmsPageHeader-CirpXndm.js → CmsPageHeader-ohOq0luT.js} +1 -1
  5. package/admin-dist/public/assets/{CmsStatusBadge-CbEUpQu-.js → CmsStatusBadge-BdNf0V9v.js} +1 -1
  6. package/admin-dist/public/assets/CmsSurface-CWup6Jh7.js +1 -0
  7. package/admin-dist/public/assets/{CmsToolbar-BI2nZOXp.js → CmsToolbar-cEBlCHa3.js} +1 -1
  8. package/admin-dist/public/assets/{ContentEntryEditor-CBeCyK_m.js → ContentEntryEditor-BY5ypfUs.js} +1 -1
  9. package/admin-dist/public/assets/{ErrorState-BIVaWmom.js → ErrorState-C4nJ-ml4.js} +1 -1
  10. package/admin-dist/public/assets/{TaxonomyFilter-ChaY6Y_x.js → TaxonomyFilter-BgE_SR_O.js} +1 -1
  11. package/admin-dist/public/assets/{_contentTypeId-DQ8k_Rvw.js → _contentTypeId-DtZectcC.js} +1 -1
  12. package/admin-dist/public/assets/{_entryId-CKU_glsK.js → _entryId-BpSmrfAm.js} +1 -1
  13. package/admin-dist/public/assets/alert-Bf2l8kxw.js +1 -0
  14. package/admin-dist/public/assets/{badge-hvUOzpVZ.js → badge-qPrc4AUM.js} +1 -1
  15. package/admin-dist/public/assets/{circle-check-big-CF_pR17r.js → circle-check-big-Dgozy3vV.js} +1 -1
  16. package/admin-dist/public/assets/{command-DU82cJlt.js → command-QOmNhlb0.js} +1 -1
  17. package/admin-dist/public/assets/content-OEBGlxg1.js +1 -0
  18. package/admin-dist/public/assets/content-types-CjQliqVV.js +2 -0
  19. package/admin-dist/public/assets/{globals-CS6BZ0zp.css → globals-hAmgC66w.css} +1 -1
  20. package/admin-dist/public/assets/index-BH_ECMhv.js +1 -0
  21. package/admin-dist/public/assets/{label-KNtpL71g.js → label-DCsUdvFh.js} +1 -1
  22. package/admin-dist/public/assets/{link-2-Bw2aI4V4.js → link-2-Czw1N61H.js} +1 -1
  23. package/admin-dist/public/assets/{list-sYepHjt_.js → list-DtCsXj8-.js} +1 -1
  24. package/admin-dist/public/assets/{main-CKj5yfEi.js → main-CXgkZMhe.js} +3 -3
  25. package/admin-dist/public/assets/{media-Bkrkffm7.js → media-DTJ3-ViE.js} +1 -1
  26. package/admin-dist/public/assets/{new._contentTypeId-C3LstjNs.js → new._contentTypeId-CoTDxKzf.js} +1 -1
  27. package/admin-dist/public/assets/{plus-DUn8v_Xf.js → plus-xCFJK0RC.js} +1 -1
  28. package/admin-dist/public/assets/{rotate-ccw-DJEoHcRI.js → rotate-ccw-DIqK63wY.js} +1 -1
  29. package/admin-dist/public/assets/scroll-area-B-yrE66a.js +1 -0
  30. package/admin-dist/public/assets/{search-MuAUDJKR.js → search-CbCbboeU.js} +1 -1
  31. package/admin-dist/public/assets/select-Co3TZFJb.js +1 -0
  32. package/admin-dist/public/assets/settings-BspTTv_o.js +1 -0
  33. package/admin-dist/public/assets/switch-CfavASmR.js +1 -0
  34. package/admin-dist/public/assets/tabs-CN5s5u2W.js +1 -0
  35. package/admin-dist/public/assets/tanstack-adapter-npeE3RdY.js +1 -0
  36. package/admin-dist/public/assets/taxonomies-CgG46fIF.js +1 -0
  37. package/admin-dist/public/assets/{textarea-BTy7nwzR.js → textarea-BJ0XFZpT.js} +1 -1
  38. package/admin-dist/public/assets/trash-B3daldm5.js +1 -0
  39. package/admin-dist/public/assets/{triangle-alert-E52Vfeuh.js → triangle-alert-BZRcqsUg.js} +1 -1
  40. package/admin-dist/public/assets/useBreadcrumbLabel-DwZlwvFF.js +1 -0
  41. package/admin-dist/public/assets/{usePermissions-Basjs9BT.js → usePermissions-C1JQhfqb.js} +1 -1
  42. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +7 -0
  43. package/admin-dist/server/_ssr/{badge-6BsP37vG.mjs → CmsButton-B45JAKR1.mjs} +33 -33
  44. package/admin-dist/server/_ssr/{CmsEmptyState-DU7-7-mV.mjs → CmsEmptyState-D_BQFAVR.mjs} +2 -2
  45. package/admin-dist/server/_ssr/{CmsPageHeader-CseW0AHm.mjs → CmsPageHeader-CrUZA59A.mjs} +1 -1
  46. package/admin-dist/server/_ssr/{CmsStatusBadge-B_pi4KCp.mjs → CmsStatusBadge-B-sj6yaj.mjs} +2 -2
  47. package/admin-dist/server/_ssr/CmsSurface-DKJZhpjk.mjs +44 -0
  48. package/admin-dist/server/_ssr/{CmsToolbar-X75ex6ek.mjs → CmsToolbar-ByaW5iXf.mjs} +2 -2
  49. package/admin-dist/server/_ssr/{ContentEntryEditor-CepusRsA.mjs → ContentEntryEditor-D3_Jb1dq.mjs} +11 -11
  50. package/admin-dist/server/_ssr/{TaxonomyFilter-Bwrq0-cz.mjs → TaxonomyFilter-BRJkuCtA.mjs} +4 -4
  51. package/admin-dist/server/_ssr/{_contentTypeId-BqYKEcLr.mjs → _contentTypeId-B9kA6CaM.mjs} +11 -11
  52. package/admin-dist/server/_ssr/{_entryId-CRfnqeDf.mjs → _entryId-BddcMkZN.mjs} +14 -14
  53. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-Dd7AmelK.mjs +4 -0
  54. package/admin-dist/server/_ssr/{command-fy8epIKf.mjs → command-CGtVr8Gb.mjs} +1 -1
  55. package/admin-dist/server/_ssr/{content-B5RhL7uW.mjs → content-D1tbeOd0.mjs} +201 -86
  56. package/admin-dist/server/_ssr/{content-types-BIOqCQYN.mjs → content-types-BZqY_BER.mjs} +279 -103
  57. package/admin-dist/server/_ssr/{index-DHSHDPt1.mjs → index-BIdq4xaC.mjs} +88 -17
  58. package/admin-dist/server/_ssr/index.mjs +2 -2
  59. package/admin-dist/server/_ssr/{label-C8Dko1j7.mjs → label-T-QNKAr6.mjs} +1 -1
  60. package/admin-dist/server/_ssr/{media-CSx3XttC.mjs → media-C-xqjBrl.mjs} +40 -40
  61. package/admin-dist/server/_ssr/{new._contentTypeId-DzanEZQM.mjs → new._contentTypeId-DWic9cRq.mjs} +13 -13
  62. package/admin-dist/server/_ssr/{router-DDWcF-kt.mjs → router-D1BMAMJT.mjs} +11 -11
  63. package/admin-dist/server/_ssr/{scroll-area-bjPYwhXN.mjs → scroll-area-C0pic_WA.mjs} +1 -1
  64. package/admin-dist/server/_ssr/{select-BUhDDf4T.mjs → select-CqmuN2F6.mjs} +1 -1
  65. package/admin-dist/server/_ssr/{settings-DAsxnw2q.mjs → settings-CAkncGGV.mjs} +211 -129
  66. package/admin-dist/server/_ssr/{switch-BgyRtQ1Z.mjs → switch-CgmuJkT9.mjs} +1 -1
  67. package/admin-dist/server/_ssr/{tabs-DzMdRB1A.mjs → tabs-CnMj0aRy.mjs} +5 -3
  68. package/admin-dist/server/_ssr/tanstack-adapter-BXZrMauE.mjs +119 -0
  69. package/admin-dist/server/_ssr/{taxonomies-C8j8g5Q5.mjs → taxonomies-thl3BfVm.mjs} +168 -68
  70. package/admin-dist/server/_ssr/{textarea-9jNeYJSc.mjs → textarea-4K5OJgeh.mjs} +1 -1
  71. package/admin-dist/server/_ssr/{trash-DYMxwhZB.mjs → trash-B40Gx5zP.mjs} +206 -86
  72. package/admin-dist/server/_ssr/{useBreadcrumbLabel-FNSAr2Ha.mjs → useBreadcrumbLabel-rn-fL4zV.mjs} +1 -1
  73. package/admin-dist/server/_ssr/{usePermissions-BJGGahrJ.mjs → usePermissions-CKeM6_Vw.mjs} +1 -1
  74. package/admin-dist/server/index.mjs +194 -180
  75. package/dist/cli/commands/init.d.ts +6 -0
  76. package/dist/cli/commands/init.d.ts.map +1 -0
  77. package/dist/cli/commands/init.js +156 -0
  78. package/dist/cli/commands/init.js.map +1 -0
  79. package/dist/cli/index.js +6 -0
  80. package/dist/cli/index.js.map +1 -1
  81. package/dist/client/admin-config.d.ts +2 -2
  82. package/dist/client/admin-config.js +2 -2
  83. package/dist/client/adminApi.d.ts +1877 -1851
  84. package/dist/client/adminApi.d.ts.map +1 -1
  85. package/dist/client/adminApi.js +649 -629
  86. package/dist/client/adminApi.js.map +1 -1
  87. package/dist/client/agentTools.d.ts +7 -17
  88. package/dist/client/agentTools.d.ts.map +1 -1
  89. package/dist/client/agentTools.js +4 -4
  90. package/dist/client/index.d.ts +4 -4
  91. package/dist/client/index.d.ts.map +1 -1
  92. package/dist/client/index.js +4 -4
  93. package/dist/client/index.js.map +1 -1
  94. package/dist/client/schema/codegen.d.ts +2 -2
  95. package/dist/client/schema/codegen.d.ts.map +1 -1
  96. package/dist/client/schema/codegen.js +3 -3
  97. package/dist/client/schema/codegen.js.map +1 -1
  98. package/dist/client/schema/defineContentType.d.ts +3 -3
  99. package/dist/client/schema/defineContentType.js +3 -3
  100. package/dist/client/schema/index.d.ts +7 -7
  101. package/dist/client/schema/index.d.ts.map +1 -1
  102. package/dist/client/schema/index.js +5 -5
  103. package/dist/client/schema/index.js.map +1 -1
  104. package/dist/client/schema/schemaDrift.d.ts +1 -1
  105. package/dist/client/schema/schemaDrift.js +1 -1
  106. package/dist/client/schema/typedClient.d.ts +2 -2
  107. package/dist/client/schema/typedClient.js +2 -2
  108. package/dist/client/schema/types.d.ts +1 -1
  109. package/dist/client/schema/types.js +1 -1
  110. package/dist/client/wrapper.d.ts +108 -65
  111. package/dist/client/wrapper.d.ts.map +1 -1
  112. package/dist/client/wrapper.js +22 -22
  113. package/dist/client/wrapper.js.map +1 -1
  114. package/dist/component/convex.config.d.ts +2 -2
  115. package/dist/component/convex.config.js +2 -2
  116. package/dist/component/index.d.ts +1 -1
  117. package/dist/component/index.js +1 -1
  118. package/dist/component/lib/ragContentChunker.d.ts +1 -1
  119. package/dist/component/lib/ragContentChunker.js +1 -1
  120. package/dist/component/roles.d.ts +1 -1
  121. package/dist/component/roles.js +1 -1
  122. package/dist/react/index.d.ts +2 -2
  123. package/dist/react/index.d.ts.map +1 -1
  124. package/dist/react/index.js +13 -7
  125. package/dist/react/index.js.map +1 -1
  126. package/dist/test.d.ts +2 -2
  127. package/dist/test.js +2 -2
  128. package/package.json +31 -11
  129. package/admin-dist/public/assets/alert-BXjTqrwQ.js +0 -1
  130. package/admin-dist/public/assets/content-_LXl3pp7.js +0 -1
  131. package/admin-dist/public/assets/content-types-KjxaXGxY.js +0 -2
  132. package/admin-dist/public/assets/index-DNGIZHL-.js +0 -1
  133. package/admin-dist/public/assets/scroll-area-DfIlT0in.js +0 -1
  134. package/admin-dist/public/assets/select-BD29IXCI.js +0 -1
  135. package/admin-dist/public/assets/settings-DmMyn_6A.js +0 -1
  136. package/admin-dist/public/assets/switch-h3Rrnl5i.js +0 -1
  137. package/admin-dist/public/assets/tabs-imc8h-Dp.js +0 -1
  138. package/admin-dist/public/assets/taxonomies-dAsrT65H.js +0 -1
  139. package/admin-dist/public/assets/trash-SAWKZZHv.js +0 -1
  140. package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +0 -1
  141. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +0 -4
  142. package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +0 -92
@@ -1,14 +1,15 @@
1
- import { r as reactExports, j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
2
- import { a as api, c as cn } from "./router-DDWcF-kt.mjs";
3
- import { C as CmsEmptyState, b as CmsConfirmDialog, c as CmsDialog, I as Input, a as Checkbox } from "./CmsEmptyState-DU7-7-mV.mjs";
4
- import { C as CmsButton, B as Badge } from "./badge-6BsP37vG.mjs";
5
- import { L as Label } from "./label-C8Dko1j7.mjs";
6
- import { T as Textarea } from "./textarea-9jNeYJSc.mjs";
7
- import { C as CmsPageHeader } from "./CmsPageHeader-CseW0AHm.mjs";
8
- import { C as CmsSurface, A as Alert, a as AlertDescription } from "./alert-CVt45UUP.mjs";
9
- import { S as ScrollArea } from "./scroll-area-bjPYwhXN.mjs";
1
+ import { j as jsxRuntimeExports, r as reactExports } from "../_chunks/_libs/react.mjs";
2
+ import { a as api, c as cn } from "./router-D1BMAMJT.mjs";
3
+ import { C as CmsButton, B as Badge } from "./CmsButton-B45JAKR1.mjs";
4
+ import { u as useTanStackNavigation } from "./tanstack-adapter-BXZrMauE.mjs";
5
+ import { C as CmsEmptyState, b as CmsConfirmDialog, c as CmsDialog, I as Input, a as Checkbox } from "./CmsEmptyState-D_BQFAVR.mjs";
6
+ import { L as Label } from "./label-T-QNKAr6.mjs";
7
+ import { T as Textarea } from "./textarea-4K5OJgeh.mjs";
8
+ import { C as CmsPageHeader } from "./CmsPageHeader-CrUZA59A.mjs";
9
+ import { C as CmsSurface } from "./CmsSurface-DKJZhpjk.mjs";
10
+ import { S as ScrollArea } from "./scroll-area-C0pic_WA.mjs";
10
11
  import { u as useQuery, d as useMutation } from "../_libs/convex.mjs";
11
- import { Q as Plus, V as Tag, W as Pencil, w as Trash2, O as TriangleAlert, Y as FolderTree, z as Tags, d as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
12
+ import { Q as Plus, V as Tag, W as Pencil, w as Trash2, Y as FolderTree, z as Tags, d as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
12
13
  import "../_chunks/_libs/@tanstack/react-router.mjs";
13
14
  import "../_libs/tiny-warning.mjs";
14
15
  import "../_chunks/_libs/@tanstack/router-core.mjs";
@@ -801,17 +802,21 @@ function TermEditModal({
801
802
  }
802
803
  );
803
804
  }
804
- function TaxonomiesPage() {
805
- const [selectedTaxonomy, setSelectedTaxonomy] = reactExports.useState(null);
805
+ function TaxonomiesPage({ api: api2, navigation: _navigation }) {
806
+ const [selectedTaxonomy, setSelectedTaxonomy] = reactExports.useState(
807
+ null
808
+ );
806
809
  const [showCreateModal, setShowCreateModal] = reactExports.useState(false);
807
810
  const [editingTaxonomy, setEditingTaxonomy] = reactExports.useState(null);
808
- const [showDeleteConfirm, setShowDeleteConfirm] = reactExports.useState(null);
811
+ const [showDeleteConfirm, setShowDeleteConfirm] = reactExports.useState(
812
+ null
813
+ );
809
814
  const [deleteError, setDeleteError] = reactExports.useState(null);
810
- const taxonomiesQuery = useQuery(api.taxonomies.list, {
815
+ const taxonomiesQuery = useQuery(api2.taxonomies.list, {
811
816
  isActive: void 0,
812
817
  includeDeleted: false
813
818
  });
814
- const deleteTaxonomy = useMutation(api.taxonomies.deleteTaxonomy);
819
+ const deleteTaxonomy = useMutation(api2.taxonomies.deleteTaxonomy);
815
820
  const taxonomies = taxonomiesQuery?.page ?? [];
816
821
  const isLoading = taxonomiesQuery === void 0;
817
822
  const handleCreate = reactExports.useCallback(() => {
@@ -822,21 +827,22 @@ function TaxonomiesPage() {
822
827
  setEditingTaxonomy(taxonomy);
823
828
  setShowCreateModal(true);
824
829
  }, []);
825
- const handleDelete = reactExports.useCallback(async (taxonomyId) => {
826
- setDeleteError(null);
827
- try {
828
- await deleteTaxonomy({
829
- id: taxonomyId
830
- });
831
- setShowDeleteConfirm(null);
832
- if (selectedTaxonomy?._id === taxonomyId) {
833
- setSelectedTaxonomy(null);
830
+ const handleDelete = reactExports.useCallback(
831
+ async (taxonomyId) => {
832
+ setDeleteError(null);
833
+ try {
834
+ await deleteTaxonomy({ id: taxonomyId });
835
+ setShowDeleteConfirm(null);
836
+ if (selectedTaxonomy?._id === taxonomyId) {
837
+ setSelectedTaxonomy(null);
838
+ }
839
+ } catch (error) {
840
+ const message = error instanceof Error ? error.message : "Failed to delete taxonomy";
841
+ setDeleteError(message);
834
842
  }
835
- } catch (error) {
836
- const message = error instanceof Error ? error.message : "Failed to delete taxonomy";
837
- setDeleteError(message);
838
- }
839
- }, [deleteTaxonomy, selectedTaxonomy]);
843
+ },
844
+ [deleteTaxonomy, selectedTaxonomy]
845
+ );
840
846
  const handleSaveComplete = reactExports.useCallback(() => {
841
847
  setShowCreateModal(false);
842
848
  setEditingTaxonomy(null);
@@ -846,7 +852,13 @@ function TaxonomiesPage() {
846
852
  };
847
853
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-[calc(100vh-4rem)] flex-col p-6", children: [
848
854
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-6 flex items-start justify-between", children: [
849
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsPageHeader, { title: "Taxonomies", description: "Manage tags, categories, and other classification systems" }),
855
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
856
+ CmsPageHeader,
857
+ {
858
+ title: "Taxonomies",
859
+ description: "Manage tags, categories, and other classification systems"
860
+ }
861
+ ),
850
862
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CmsButton, { onClick: handleCreate, children: [
851
863
  /* @__PURE__ */ jsxRuntimeExports.jsx(Plus, { className: "size-4" }),
852
864
  "Create Taxonomy"
@@ -859,28 +871,74 @@ function TaxonomiesPage() {
859
871
  ] }) : taxonomies.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center p-6 text-center", children: [
860
872
  /* @__PURE__ */ jsxRuntimeExports.jsx(Tag, { className: "mb-3 size-8 text-muted-foreground" }),
861
873
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "No taxonomies created yet." }),
862
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsButton, { variant: "secondary", className: "mt-4", onClick: handleCreate, children: "Create your first taxonomy" })
863
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "divide-y", children: taxonomies.map((taxonomy) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn("group flex cursor-pointer items-center gap-3 p-3 transition-colors hover:bg-muted/50", selectedTaxonomy?._id === taxonomy._id && "bg-primary/5", !taxonomy.isActive && "opacity-60"), onClick: () => setSelectedTaxonomy(taxonomy), children: [
864
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground", children: getTypeIcon(taxonomy) }),
865
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
866
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "truncate text-sm font-medium text-foreground", children: taxonomy.displayName }),
867
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "truncate text-xs text-muted-foreground", children: taxonomy.name })
868
- ] }),
869
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
870
- /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "secondary", className: "text-xs font-normal", children: taxonomy.isHierarchical ? "Hierarchical" : "Flat" }),
871
- !taxonomy.isActive && /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "outline", className: "text-xs font-normal", children: "Inactive" })
872
- ] }),
873
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100", children: [
874
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsButton, { variant: "ghost", size: "icon-sm", onClick: (e) => {
875
- e.stopPropagation();
876
- handleEdit(taxonomy);
877
- }, title: "Edit taxonomy", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-4" }) }),
878
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsButton, { variant: "ghost", size: "icon-sm", onClick: (e) => {
879
- e.stopPropagation();
880
- setShowDeleteConfirm(taxonomy._id);
881
- }, title: "Delete taxonomy", className: "text-destructive hover:bg-destructive/10 hover:text-destructive", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-4" }) })
882
- ] })
883
- ] }, taxonomy._id)) }) }) }),
874
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
875
+ CmsButton,
876
+ {
877
+ variant: "secondary",
878
+ className: "mt-4",
879
+ onClick: handleCreate,
880
+ children: "Create your first taxonomy"
881
+ }
882
+ )
883
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "divide-y", children: taxonomies.map((taxonomy) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
884
+ "div",
885
+ {
886
+ className: cn(
887
+ "group flex cursor-pointer items-center gap-3 p-3 transition-colors hover:bg-muted/50",
888
+ selectedTaxonomy?._id === taxonomy._id && "bg-primary/5",
889
+ !taxonomy.isActive && "opacity-60"
890
+ ),
891
+ onClick: () => setSelectedTaxonomy(taxonomy),
892
+ children: [
893
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground", children: getTypeIcon(taxonomy) }),
894
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
895
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "truncate text-sm font-medium text-foreground", children: taxonomy.displayName }),
896
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "truncate text-xs text-muted-foreground", children: taxonomy.name })
897
+ ] }),
898
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
899
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "secondary", className: "text-xs font-normal", children: taxonomy.isHierarchical ? "Hierarchical" : "Flat" }),
900
+ !taxonomy.isActive && /* @__PURE__ */ jsxRuntimeExports.jsx(
901
+ Badge,
902
+ {
903
+ variant: "outline",
904
+ className: "text-xs font-normal",
905
+ children: "Inactive"
906
+ }
907
+ )
908
+ ] }),
909
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100", children: [
910
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
911
+ CmsButton,
912
+ {
913
+ variant: "ghost",
914
+ size: "icon-sm",
915
+ onClick: (e) => {
916
+ e.stopPropagation();
917
+ handleEdit(taxonomy);
918
+ },
919
+ title: "Edit taxonomy",
920
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Pencil, { className: "size-4" })
921
+ }
922
+ ),
923
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
924
+ CmsButton,
925
+ {
926
+ variant: "ghost",
927
+ size: "icon-sm",
928
+ onClick: (e) => {
929
+ e.stopPropagation();
930
+ setShowDeleteConfirm(taxonomy._id);
931
+ },
932
+ title: "Delete taxonomy",
933
+ className: "text-destructive hover:bg-destructive/10 hover:text-destructive",
934
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-4" })
935
+ }
936
+ )
937
+ ] })
938
+ ]
939
+ },
940
+ taxonomy._id
941
+ )) }) }) }),
884
942
  /* @__PURE__ */ jsxRuntimeExports.jsx(CmsSurface, { elevation: "base", className: "min-w-0 flex-1 overflow-hidden", children: selectedTaxonomy ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col", children: [
885
943
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between border-b p-4", children: [
886
944
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -890,26 +948,68 @@ function TaxonomiesPage() {
890
948
  selectedTaxonomy.description && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: selectedTaxonomy.description })
891
949
  ] })
892
950
  ] }),
893
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsButton, { variant: "secondary", onClick: () => handleEdit(selectedTaxonomy), children: "Edit Taxonomy" })
951
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
952
+ CmsButton,
953
+ {
954
+ variant: "secondary",
955
+ onClick: () => handleEdit(selectedTaxonomy),
956
+ children: "Edit Taxonomy"
957
+ }
958
+ )
894
959
  ] }),
895
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TermTree, { taxonomyId: selectedTaxonomy._id, isHierarchical: selectedTaxonomy.isHierarchical, allowInlineCreation: selectedTaxonomy.allowInlineCreation }) })
896
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CmsEmptyState, { icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Tag, { className: "size-6" }), title: "Select a taxonomy", description: "Select a taxonomy to view and manage its terms", className: "h-full" }) })
960
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
961
+ TermTree,
962
+ {
963
+ taxonomyId: selectedTaxonomy._id,
964
+ isHierarchical: selectedTaxonomy.isHierarchical,
965
+ allowInlineCreation: selectedTaxonomy.allowInlineCreation
966
+ }
967
+ ) })
968
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
969
+ CmsEmptyState,
970
+ {
971
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(Tag, { className: "size-6" }),
972
+ title: "Select a taxonomy",
973
+ description: "Select a taxonomy to view and manage its terms",
974
+ className: "h-full"
975
+ }
976
+ ) })
897
977
  ] }),
898
- showCreateModal && /* @__PURE__ */ jsxRuntimeExports.jsx(TaxonomyEditor, { taxonomy: editingTaxonomy, onSave: handleSaveComplete, onCancel: () => {
899
- setShowCreateModal(false);
900
- setEditingTaxonomy(null);
901
- } }),
902
- /* @__PURE__ */ jsxRuntimeExports.jsx(CmsConfirmDialog, { open: showDeleteConfirm !== null, onOpenChange: (open) => {
903
- if (!open) {
904
- setShowDeleteConfirm(null);
905
- setDeleteError(null);
978
+ showCreateModal && /* @__PURE__ */ jsxRuntimeExports.jsx(
979
+ TaxonomyEditor,
980
+ {
981
+ taxonomy: editingTaxonomy,
982
+ onSave: handleSaveComplete,
983
+ onCancel: () => {
984
+ setShowCreateModal(false);
985
+ setEditingTaxonomy(null);
986
+ }
987
+ }
988
+ ),
989
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
990
+ CmsConfirmDialog,
991
+ {
992
+ open: showDeleteConfirm !== null,
993
+ onOpenChange: (open) => {
994
+ if (!open) {
995
+ setShowDeleteConfirm(null);
996
+ setDeleteError(null);
997
+ }
998
+ },
999
+ title: "Delete Taxonomy",
1000
+ description: "Are you sure you want to delete this taxonomy? All associated terms will also be deleted.",
1001
+ confirmLabel: "Delete",
1002
+ onConfirm: () => showDeleteConfirm && handleDelete(showDeleteConfirm),
1003
+ variant: "danger",
1004
+ error: deleteError
906
1005
  }
907
- }, title: "Delete Taxonomy", description: "Are you sure you want to delete this taxonomy? All associated terms will also be deleted.", confirmLabel: "Delete", onConfirm: () => showDeleteConfirm && handleDelete(showDeleteConfirm), variant: "danger", children: deleteError && /* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { variant: "destructive", className: "mt-4", children: [
908
- /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-4" }),
909
- /* @__PURE__ */ jsxRuntimeExports.jsx(AlertDescription, { children: deleteError })
910
- ] }) })
1006
+ )
911
1007
  ] });
912
1008
  }
1009
+ function TaxonomiesRoute() {
1010
+ const navigation = useTanStackNavigation();
1011
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(TaxonomiesPage, { api, navigation });
1012
+ }
913
1013
  export {
914
- TaxonomiesPage as component
1014
+ TaxonomiesRoute as component
915
1015
  };
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports } from "../_chunks/_libs/react.mjs";
2
- import { c as cn } from "./router-DDWcF-kt.mjs";
2
+ import { c as cn } from "./router-D1BMAMJT.mjs";
3
3
  function Textarea({ className, ...props }) {
4
4
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
5
5
  "textarea",