convex-cms 0.0.6 → 0.0.7

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 (329) hide show
  1. package/README.md +68 -101
  2. package/admin/src/components/BreakingChangesWarningDialog.tsx +5 -5
  3. package/admin/src/components/BulkOperationModal.tsx +14 -14
  4. package/admin/src/components/ContentEntryEditor.tsx +8 -8
  5. package/admin/src/components/ContentTypeFormModal.tsx +122 -82
  6. package/admin/src/components/Header.tsx +5 -2
  7. package/admin/src/components/SchemaDriftWarning.tsx +126 -0
  8. package/admin/src/components/TaxonomyEditor.tsx +2 -2
  9. package/admin/src/components/TermTree.tsx +3 -3
  10. package/admin/src/components/UploadDropzone.tsx +7 -7
  11. package/admin/src/components/VersionCompare.tsx +13 -13
  12. package/admin/src/components/VersionHistory.tsx +2 -2
  13. package/admin/src/components/VersionRollbackModal.tsx +5 -5
  14. package/admin/src/components/cmsds/CmsButton.tsx +2 -2
  15. package/admin/src/components/cmsds/CmsDialog.tsx +4 -1
  16. package/admin/src/components/cmsds/CmsStatusBadge.tsx +5 -5
  17. package/admin/src/components/fields/JsonField.tsx +1 -1
  18. package/admin/src/components/fields/ReferenceField.tsx +9 -9
  19. package/admin/src/components/fields/TagField.tsx +1 -1
  20. package/admin/src/contexts/SettingsConfigContext.tsx +10 -3
  21. package/admin/src/embed/index.tsx +29 -9
  22. package/admin/src/embed/pages/ContentTypeEntries.tsx +25 -0
  23. package/admin/src/embed/pages/Entry.tsx +114 -0
  24. package/admin/src/embed/pages/Media.tsx +3 -1
  25. package/admin/src/embed/pages/NewEntry.tsx +83 -0
  26. package/admin/src/embed/pages/index.ts +3 -0
  27. package/admin/src/pages/ContentPage.tsx +27 -20
  28. package/admin/src/pages/ContentTypeEntriesPage.tsx +466 -0
  29. package/admin/src/pages/ContentTypesPage.tsx +65 -19
  30. package/admin/src/pages/DashboardPage.tsx +3 -0
  31. package/admin/src/pages/SettingsPage.tsx +4 -4
  32. package/admin/src/pages/index.ts +1 -0
  33. package/admin/src/routes/__root.tsx +10 -10
  34. package/admin/src/routes/entries/$entryId.tsx +1 -1
  35. package/admin/src/routes/entries/type/$contentTypeId.tsx +1 -1
  36. package/admin/src/styles/globals.css +31 -5
  37. package/admin/src/styles/tailwind-config.css +25 -0
  38. package/admin/src/styles/theme.css +50 -0
  39. package/admin-dist/nitro.json +1 -1
  40. package/admin-dist/public/assets/CmsEmptyState-6-PLaXtD.js +1 -0
  41. package/admin-dist/public/assets/CmsPageHeader-SoF4Epu9.js +1 -0
  42. package/admin-dist/public/assets/CmsStatusBadge-D7kYaohx.js +1 -0
  43. package/admin-dist/public/assets/{CmsSurface-DBy5Lumx.js → CmsSurface-BvksBm6W.js} +1 -1
  44. package/admin-dist/public/assets/CmsToolbar-DlZPMe2B.js +1 -0
  45. package/admin-dist/public/assets/ContentEntryEditor-C6n9xLS9.js +4 -0
  46. package/admin-dist/public/assets/TaxonomyFilter-CFX1_g8s.js +1 -0
  47. package/admin-dist/public/assets/_contentTypeId-DTv8UoTp.js +1 -0
  48. package/admin-dist/public/assets/_entryId-D3lr5Dvy.js +1 -0
  49. package/admin-dist/public/assets/alert-BAHTL6ao.js +1 -0
  50. package/admin-dist/public/assets/badge-oJv4Eai8.js +1 -0
  51. package/admin-dist/public/assets/{circle-check-big-CpLxAvEj.js → circle-check-big-3OHxNDhO.js} +1 -1
  52. package/admin-dist/public/assets/command-DwgQs69u.js +1 -0
  53. package/admin-dist/public/assets/content-CKQ4QwW2.js +1 -0
  54. package/admin-dist/public/assets/content-types-BrttaLpc.js +1 -0
  55. package/admin-dist/public/assets/globals-CoCRjt0K.css +1 -0
  56. package/admin-dist/public/assets/index-DOkgTSx0.js +1 -0
  57. package/admin-dist/public/assets/main-DV6oxWnU.js +102 -0
  58. package/admin-dist/public/assets/media-B2i-mCbx.js +1 -0
  59. package/admin-dist/public/assets/new._contentTypeId-VF63rpic.js +1 -0
  60. package/admin-dist/public/assets/pencil-CX1CiTDD.js +1 -0
  61. package/admin-dist/public/assets/refresh-cw-Cm-YOeFI.js +1 -0
  62. package/admin-dist/public/assets/{rotate-ccw-BZpZtw0N.js → rotate-ccw-B45JsL5f.js} +1 -1
  63. package/admin-dist/public/assets/scroll-area-b3A1HHR7.js +1 -0
  64. package/admin-dist/public/assets/{search-BvgYr-c9.js → search-DKKh_DdH.js} +1 -1
  65. package/admin-dist/public/assets/settings-CGVDEV1r.js +1 -0
  66. package/admin-dist/public/assets/switch-BTMY8Qnk.js +1 -0
  67. package/admin-dist/public/assets/tabs-DUQwUoIb.js +1 -0
  68. package/admin-dist/public/assets/tanstack-adapter-f7AHmQ5L.js +1 -0
  69. package/admin-dist/public/assets/taxonomies-DvMppdiD.js +1 -0
  70. package/admin-dist/public/assets/trash-D7e0uKd9.js +1 -0
  71. package/admin-dist/public/assets/{useBreadcrumbLabel-D00rvqjw.js → useBreadcrumbLabel-CF2KYwsw.js} +1 -1
  72. package/admin-dist/public/assets/usePermissions-DWBImEOW.js +1 -0
  73. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +2 -2
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +1 -1
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +1 -1
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +2 -2
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +2 -2
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +1 -1
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +1 -1
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +1 -1
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +6 -72
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1 -1
  83. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +1 -1
  84. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +20 -435
  85. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +30 -3
  86. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +0 -376
  87. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +168 -383
  88. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +451 -1195
  89. package/admin-dist/server/_chunks/_libs/react-dom.mjs +5 -5
  90. package/admin-dist/server/_chunks/_libs/react.mjs +2 -2
  91. package/admin-dist/server/_libs/cmdk.mjs +1 -1
  92. package/admin-dist/server/_libs/convex.mjs +3 -3
  93. package/admin-dist/server/_libs/cookie-es.mjs +1 -58
  94. package/admin-dist/server/_libs/date-fns.mjs +1 -1
  95. package/admin-dist/server/_libs/lucide-react.mjs +117 -103
  96. package/admin-dist/server/_libs/seroval-plugins.mjs +1 -58
  97. package/admin-dist/server/_libs/seroval.mjs +1 -1765
  98. package/admin-dist/server/_libs/zod.mjs +1 -1
  99. package/admin-dist/server/_ssr/CmsEmptyState-BM8DghTl.mjs +38 -0
  100. package/admin-dist/server/_ssr/{CmsPageHeader-ClNPU7Up.mjs → CmsPageHeader-BHUmrIWD.mjs} +1 -1
  101. package/admin-dist/server/_ssr/{CmsStatusBadge-CojMbrY7.mjs → CmsStatusBadge-D0Zb0oRl.mjs} +7 -7
  102. package/admin-dist/server/_ssr/{CmsSurface-Dcv440rp.mjs → CmsSurface-B2eBr-47.mjs} +1 -1
  103. package/admin-dist/server/_ssr/{CmsToolbar-BKv1nL6u.mjs → CmsToolbar-BCrwg7OL.mjs} +2 -3
  104. package/admin-dist/server/_ssr/{ContentEntryEditor-weiXSBdZ.mjs → ContentEntryEditor-Cjfm0uhr.mjs} +46 -49
  105. package/admin-dist/server/_ssr/{TaxonomyFilter-BPQ57Mwk.mjs → TaxonomyFilter-C4pD0kfM.mjs} +4 -5
  106. package/admin-dist/server/_ssr/{_contentTypeId-DyyauLOs.mjs → _contentTypeId-CiDiX-p7.mjs} +34 -43
  107. package/admin-dist/server/_ssr/{_entryId-9Cafwxmw.mjs → _entryId-9GxatOkL.mjs} +35 -47
  108. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-CC7UrHKE.mjs +4 -0
  109. package/admin-dist/server/_ssr/badge-EI998zba.mjs +39 -0
  110. package/admin-dist/server/_ssr/{command-CEf8YBxY.mjs → command-BLAWQhUw.mjs} +2 -2
  111. package/admin-dist/server/_ssr/{config.server-D7JHDcDv.mjs → config.server-BOr7Jxr4.mjs} +5 -14
  112. package/admin-dist/server/_ssr/{content-ZFWVzO25.mjs → content-BHX39L4D.mjs} +63 -63
  113. package/admin-dist/server/_ssr/content-types-DCzrBhTH.mjs +459 -0
  114. package/admin-dist/server/_ssr/{index-BlSIlH4Z.mjs → index-DwM_5VNP.mjs} +114 -30
  115. package/admin-dist/server/_ssr/index.mjs +3459 -62
  116. package/admin-dist/server/_ssr/{media-CD2_NUMw.mjs → media-CbzgTRRQ.mjs} +31 -43
  117. package/admin-dist/server/_ssr/{new._contentTypeId-dmZy6PBX.mjs → new._contentTypeId-6Ph-Gtlw.mjs} +33 -45
  118. package/admin-dist/server/_ssr/router-vd1nySeP.mjs +3041 -0
  119. package/admin-dist/server/_ssr/{scroll-area-BH_1K-WT.mjs → scroll-area--B9snFTJ.mjs} +1 -1
  120. package/admin-dist/server/_ssr/{settings-DVdsoWoh.mjs → settings-DlTO2JSj.mjs} +34 -43
  121. package/admin-dist/server/_ssr/{switch-DX_X8vZl.mjs → switch-C05NgNW0.mjs} +1 -1
  122. package/admin-dist/server/_ssr/{tabs-4FWM0sn8.mjs → tabs-DAk2J5xy.mjs} +9 -10
  123. package/admin-dist/server/_ssr/{tanstack-adapter-D3ZcKtbY.mjs → tanstack-adapter-DWbaPByn.mjs} +15 -1
  124. package/admin-dist/server/_ssr/{taxonomies-BHFfO9Yr.mjs → taxonomies-B8nqce6u.mjs} +35 -44
  125. package/admin-dist/server/_ssr/{trash-9tUB2KwI.mjs → trash-zdlZgpTo.mjs} +30 -39
  126. package/admin-dist/server/_ssr/{useBreadcrumbLabel-DVme3DSb.mjs → useBreadcrumbLabel-DpEKyG1h.mjs} +1 -1
  127. package/admin-dist/server/_ssr/{usePermissions-zAQj-ruE.mjs → usePermissions-olYRd9S9.mjs} +1 -1
  128. package/admin-dist/server/index.mjs +168 -203
  129. package/dist/cli/templates/cmsClient.d.ts +1 -1
  130. package/dist/cli/templates/cmsClient.d.ts.map +1 -1
  131. package/dist/cli/templates/cmsClient.js +30 -11
  132. package/dist/cli/templates/cmsClient.js.map +1 -1
  133. package/dist/cli/templates/cmsConfig.d.ts +1 -1
  134. package/dist/cli/templates/cmsConfig.d.ts.map +1 -1
  135. package/dist/cli/templates/cmsConfig.js +3 -3
  136. package/dist/client/admin/contentLock.d.ts +4 -4
  137. package/dist/client/admin/contentLock.d.ts.map +1 -1
  138. package/dist/client/admin/contentLock.js +1 -1
  139. package/dist/client/admin/contentLock.js.map +1 -1
  140. package/dist/client/admin/contentTypes.d.ts +328 -290
  141. package/dist/client/admin/contentTypes.d.ts.map +1 -1
  142. package/dist/client/admin/contentTypes.js +307 -9
  143. package/dist/client/admin/contentTypes.js.map +1 -1
  144. package/dist/client/admin/entries.d.ts +18 -19
  145. package/dist/client/admin/entries.d.ts.map +1 -1
  146. package/dist/client/admin/entries.js +33 -8
  147. package/dist/client/admin/entries.js.map +1 -1
  148. package/dist/client/admin/index.d.ts +694 -642
  149. package/dist/client/admin/index.d.ts.map +1 -1
  150. package/dist/client/admin/index.js +45 -5
  151. package/dist/client/admin/index.js.map +1 -1
  152. package/dist/client/admin/media.d.ts.map +1 -1
  153. package/dist/client/admin/taxonomies.d.ts.map +1 -1
  154. package/dist/client/admin/trash.d.ts +3 -4
  155. package/dist/client/admin/trash.d.ts.map +1 -1
  156. package/dist/client/admin/types.d.ts +185 -4
  157. package/dist/client/admin/types.d.ts.map +1 -1
  158. package/dist/client/admin/validators.d.ts +2009 -25
  159. package/dist/client/admin/validators.d.ts.map +1 -1
  160. package/dist/client/admin/validators.js +15 -4
  161. package/dist/client/admin/validators.js.map +1 -1
  162. package/dist/client/admin/versions.d.ts +1 -1
  163. package/dist/client/admin/versions.d.ts.map +1 -1
  164. package/dist/client/agentTools.d.ts +1 -4
  165. package/dist/client/agentTools.d.ts.map +1 -1
  166. package/dist/client/agentTools.js +9 -21
  167. package/dist/client/agentTools.js.map +1 -1
  168. package/dist/client/config.d.ts +10 -0
  169. package/dist/client/config.d.ts.map +1 -1
  170. package/dist/client/config.js +1 -0
  171. package/dist/client/config.js.map +1 -1
  172. package/dist/client/defineContent.d.ts +338 -0
  173. package/dist/client/defineContent.d.ts.map +1 -0
  174. package/dist/client/defineContent.js +368 -0
  175. package/dist/client/defineContent.js.map +1 -0
  176. package/dist/client/index.d.ts +2 -0
  177. package/dist/client/index.d.ts.map +1 -1
  178. package/dist/client/index.js +2 -0
  179. package/dist/client/index.js.map +1 -1
  180. package/dist/client/queryBuilder.d.ts +0 -15
  181. package/dist/client/queryBuilder.d.ts.map +1 -1
  182. package/dist/client/queryBuilder.js +0 -23
  183. package/dist/client/queryBuilder.js.map +1 -1
  184. package/dist/client/registry.d.ts +77 -0
  185. package/dist/client/registry.d.ts.map +1 -0
  186. package/dist/client/registry.js +95 -0
  187. package/dist/client/registry.js.map +1 -0
  188. package/dist/client/schema/defineContentType.d.ts +36 -24
  189. package/dist/client/schema/defineContentType.d.ts.map +1 -1
  190. package/dist/client/schema/defineContentType.js +176 -128
  191. package/dist/client/schema/defineContentType.js.map +1 -1
  192. package/dist/client/schema/typedClient.d.ts.map +1 -1
  193. package/dist/client/schema/typedClient.js +2 -10
  194. package/dist/client/schema/typedClient.js.map +1 -1
  195. package/dist/client/schema/types.d.ts +16 -9
  196. package/dist/client/schema/types.d.ts.map +1 -1
  197. package/dist/client/schema/types.js.map +1 -1
  198. package/dist/client/utils/toSlug.d.ts +60 -0
  199. package/dist/client/utils/toSlug.d.ts.map +1 -0
  200. package/dist/client/utils/toSlug.js +31 -0
  201. package/dist/client/utils/toSlug.js.map +1 -0
  202. package/dist/client/wrapper.d.ts +2 -2
  203. package/dist/client/wrapper.d.ts.map +1 -1
  204. package/dist/client/wrapper.js +22 -30
  205. package/dist/client/wrapper.js.map +1 -1
  206. package/dist/component/_generated/component.d.ts +24 -28
  207. package/dist/component/_generated/component.d.ts.map +1 -1
  208. package/dist/component/authorizationHooks.d.ts +1 -1
  209. package/dist/component/authorizationHooks.d.ts.map +1 -1
  210. package/dist/component/authorizationHooks.js +2 -2
  211. package/dist/component/authorizationHooks.js.map +1 -1
  212. package/dist/component/bulkOperations.d.ts.map +1 -1
  213. package/dist/component/bulkOperations.js +7 -4
  214. package/dist/component/bulkOperations.js.map +1 -1
  215. package/dist/component/contentEntries.d.ts +18 -56
  216. package/dist/component/contentEntries.d.ts.map +1 -1
  217. package/dist/component/contentEntries.js +45 -137
  218. package/dist/component/contentEntries.js.map +1 -1
  219. package/dist/component/contentEntryMutations.d.ts +14 -14
  220. package/dist/component/contentEntryMutations.d.ts.map +1 -1
  221. package/dist/component/contentEntryMutations.js +40 -43
  222. package/dist/component/contentEntryMutations.js.map +1 -1
  223. package/dist/component/contentEntryValidation.d.ts +3 -3
  224. package/dist/component/contentEntryValidation.js +6 -9
  225. package/dist/component/contentEntryValidation.js.map +1 -1
  226. package/dist/component/contentLock.d.ts +7 -7
  227. package/dist/component/contentLock.js +3 -3
  228. package/dist/component/contentLock.js.map +1 -1
  229. package/dist/component/contentTypeMigration.d.ts +1 -1
  230. package/dist/component/contentTypeMigration.js +2 -2
  231. package/dist/component/contentTypeMigration.js.map +1 -1
  232. package/dist/component/contentTypeMutations.d.ts.map +1 -1
  233. package/dist/component/contentTypeMutations.js +7 -6
  234. package/dist/component/contentTypeMutations.js.map +1 -1
  235. package/dist/component/convex.config.d.ts.map +1 -1
  236. package/dist/component/convex.config.js +1 -1
  237. package/dist/component/convex.config.js.map +1 -1
  238. package/dist/component/eventEmitter.d.ts +0 -1
  239. package/dist/component/eventEmitter.d.ts.map +1 -1
  240. package/dist/component/eventEmitter.js.map +1 -1
  241. package/dist/component/exportImport.d.ts +37 -37
  242. package/dist/component/exportImport.d.ts.map +1 -1
  243. package/dist/component/exportImport.js +34 -34
  244. package/dist/component/exportImport.js.map +1 -1
  245. package/dist/component/lib/deepReferenceResolver.d.ts +2 -2
  246. package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -1
  247. package/dist/component/lib/deepReferenceResolver.js +13 -8
  248. package/dist/component/lib/deepReferenceResolver.js.map +1 -1
  249. package/dist/component/lib/ragContentChunker.d.ts +3 -3
  250. package/dist/component/lib/ragContentChunker.d.ts.map +1 -1
  251. package/dist/component/lib/ragContentChunker.js +4 -4
  252. package/dist/component/lib/ragContentChunker.js.map +1 -1
  253. package/dist/component/lib/referenceResolver.d.ts.map +1 -1
  254. package/dist/component/lib/referenceResolver.js +10 -17
  255. package/dist/component/lib/referenceResolver.js.map +1 -1
  256. package/dist/component/mediaAssetMutations.js +4 -4
  257. package/dist/component/mediaAssetMutations.js.map +1 -1
  258. package/dist/component/ragContentIndexer.d.ts +2 -2
  259. package/dist/component/ragContentIndexer.d.ts.map +1 -1
  260. package/dist/component/ragContentIndexer.js +44 -48
  261. package/dist/component/ragContentIndexer.js.map +1 -1
  262. package/dist/component/roles.d.ts +3 -3
  263. package/dist/component/scheduledPublish.d.ts +4 -4
  264. package/dist/component/scheduledPublish.js +3 -3
  265. package/dist/component/scheduledPublish.js.map +1 -1
  266. package/dist/component/schema.d.ts +18 -18
  267. package/dist/component/schema.js +5 -5
  268. package/dist/component/schema.js.map +1 -1
  269. package/dist/component/trash.d.ts +6 -9
  270. package/dist/component/trash.d.ts.map +1 -1
  271. package/dist/component/trash.js +12 -36
  272. package/dist/component/trash.js.map +1 -1
  273. package/dist/component/userContext.d.ts +1 -2
  274. package/dist/component/userContext.d.ts.map +1 -1
  275. package/dist/component/userContext.js +1 -2
  276. package/dist/component/userContext.js.map +1 -1
  277. package/dist/component/validators.d.ts +27 -33
  278. package/dist/component/validators.d.ts.map +1 -1
  279. package/dist/component/validators.js +3 -5
  280. package/dist/component/validators.js.map +1 -1
  281. package/dist/component/versionMutations.d.ts +1 -1
  282. package/dist/component/webhookTrigger.d.ts +14 -14
  283. package/dist/test.d.ts +30 -30
  284. package/dist/test.d.ts.map +1 -1
  285. package/dist/test.js +24 -24
  286. package/dist/test.js.map +1 -1
  287. package/package.json +1 -1
  288. package/admin-dist/public/assets/CmsEmptyState-Do_erIgn.js +0 -5
  289. package/admin-dist/public/assets/CmsPageHeader-qDwPGi48.js +0 -1
  290. package/admin-dist/public/assets/CmsStatusBadge-Dd9uToHE.js +0 -1
  291. package/admin-dist/public/assets/CmsToolbar-D1-Y-7SK.js +0 -1
  292. package/admin-dist/public/assets/ContentEntryEditor-CWBiIx52.js +0 -4
  293. package/admin-dist/public/assets/TaxonomyFilter-CdYQawxb.js +0 -1
  294. package/admin-dist/public/assets/_contentTypeId-D9VMP6Gs.js +0 -1
  295. package/admin-dist/public/assets/_entryId-2FlCfqE7.js +0 -1
  296. package/admin-dist/public/assets/alert-GxZx0y5c.js +0 -1
  297. package/admin-dist/public/assets/badge-BAlGIjop.js +0 -1
  298. package/admin-dist/public/assets/command-di7XCqcv.js +0 -1
  299. package/admin-dist/public/assets/content-D8zELsDG.js +0 -1
  300. package/admin-dist/public/assets/content-types-BmzD0krT.js +0 -2
  301. package/admin-dist/public/assets/globals-BvFfH-v9.css +0 -1
  302. package/admin-dist/public/assets/index-zqfj4T_v.js +0 -1
  303. package/admin-dist/public/assets/label-B6PPtKR5.js +0 -1
  304. package/admin-dist/public/assets/link-2-W2fVnVOf.js +0 -1
  305. package/admin-dist/public/assets/list-F8O0lZXC.js +0 -1
  306. package/admin-dist/public/assets/main-dZT72bAG.js +0 -97
  307. package/admin-dist/public/assets/media-CETueFbV.js +0 -1
  308. package/admin-dist/public/assets/new._contentTypeId-BV2-TyyR.js +0 -1
  309. package/admin-dist/public/assets/plus-AABQIF0N.js +0 -1
  310. package/admin-dist/public/assets/scroll-area-CDfk-zrz.js +0 -1
  311. package/admin-dist/public/assets/select-BuiHcMzS.js +0 -1
  312. package/admin-dist/public/assets/settings-DBxbYDvn.js +0 -1
  313. package/admin-dist/public/assets/switch-DiJvolcs.js +0 -1
  314. package/admin-dist/public/assets/tabs-Cgz6G_Xy.js +0 -1
  315. package/admin-dist/public/assets/tanstack-adapter-BknsSgra.js +0 -1
  316. package/admin-dist/public/assets/taxonomies-DOErsLl5.js +0 -1
  317. package/admin-dist/public/assets/textarea-CgggMxUX.js +0 -1
  318. package/admin-dist/public/assets/trash-BU4ANuaW.js +0 -1
  319. package/admin-dist/public/assets/triangle-alert-lvCbwp0s.js +0 -1
  320. package/admin-dist/public/assets/usePermissions-D7tQowaF.js +0 -1
  321. package/admin-dist/server/_libs/h3-v2.mjs +0 -277
  322. package/admin-dist/server/_ssr/CmsButton-DbzfJru_.mjs +0 -125
  323. package/admin-dist/server/_ssr/CmsEmptyState-CuvcXr3Z.mjs +0 -290
  324. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-Dk-FIYPN.mjs +0 -4
  325. package/admin-dist/server/_ssr/content-types-D25lUE-j.mjs +0 -1312
  326. package/admin-dist/server/_ssr/label-PblVvdRv.mjs +0 -22
  327. package/admin-dist/server/_ssr/router-x6Ab8T4s.mjs +0 -1622
  328. package/admin-dist/server/_ssr/select-CrfEkFJw.mjs +0 -142
  329. package/admin-dist/server/_ssr/textarea-CZVaroMc.mjs +0 -18
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Embed Entry Page
3
+ *
4
+ * Renders the entry editor for editing an existing content entry.
5
+ */
6
+
7
+ import { useApi } from "../contexts/ApiContext";
8
+ import { useEmbedNavigation, useEmbedParams } from "../navigation";
9
+ import { useQuery } from "convex/react";
10
+ import { ContentEntryEditor } from "../../components/ContentEntryEditor";
11
+ import type { ContentType, ContentEntry } from "../../components/ContentEntryEditor";
12
+ import { CmsEmptyState } from "../../components/cmsds/CmsEmptyState";
13
+ import { FileText } from "lucide-react";
14
+ import { usePermissions } from "../../hooks";
15
+
16
+ export function EmbedEntry() {
17
+ const api = useApi();
18
+ const params = useEmbedParams();
19
+ const { navigate } = useEmbedNavigation();
20
+ const { canDelete } = usePermissions();
21
+
22
+ const entryId = params.entryId;
23
+
24
+ const entry = useQuery(api.getEntry, entryId ? { id: entryId } : "skip");
25
+
26
+ const contentType = useQuery(
27
+ api.getContentType,
28
+ entry ? { name: entry.contentTypeName } : "skip"
29
+ );
30
+
31
+ if (!entryId) {
32
+ return (
33
+ <div className="space-y-6 p-6">
34
+ <CmsEmptyState
35
+ icon={<FileText className="size-6" />}
36
+ title="No Entry Selected"
37
+ description="Please select an entry to edit."
38
+ action={{
39
+ label: "Go to Content",
40
+ onClick: () => navigate("content"),
41
+ }}
42
+ />
43
+ </div>
44
+ );
45
+ }
46
+
47
+ if (entry === undefined || (entry && contentType === undefined)) {
48
+ return (
49
+ <div className="space-y-6 p-6">
50
+ <div className="flex flex-col items-center justify-center py-12">
51
+ <div className="size-8 animate-spin rounded-full border-2 border-muted border-t-primary" />
52
+ <p className="mt-4 text-sm text-muted-foreground">Loading entry...</p>
53
+ </div>
54
+ </div>
55
+ );
56
+ }
57
+
58
+ if (entry === null) {
59
+ return (
60
+ <div className="space-y-6 p-6">
61
+ <CmsEmptyState
62
+ icon={<FileText className="size-6" />}
63
+ title="Entry Not Found"
64
+ description="The content entry you're looking for doesn't exist or has been deleted."
65
+ action={{
66
+ label: "Back to Content",
67
+ onClick: () => navigate("content"),
68
+ }}
69
+ />
70
+ </div>
71
+ );
72
+ }
73
+
74
+ if (contentType === null) {
75
+ return (
76
+ <div className="space-y-6 p-6">
77
+ <CmsEmptyState
78
+ icon={<FileText className="size-6" />}
79
+ title="Content Type Not Found"
80
+ description="The content type for this entry doesn't exist or has been deleted."
81
+ action={{
82
+ label: "Back to Content",
83
+ onClick: () => navigate("content"),
84
+ }}
85
+ />
86
+ </div>
87
+ );
88
+ }
89
+
90
+ const handleSave = (_savedEntry: ContentEntry) => {
91
+ // Stay on page - ContentEntryEditor handles success feedback
92
+ };
93
+
94
+ const handleCancel = () => {
95
+ navigate("content");
96
+ };
97
+
98
+ const handleDelete = () => {
99
+ navigate("content");
100
+ };
101
+
102
+ return (
103
+ <div className="space-y-6 p-6">
104
+ <ContentEntryEditor
105
+ contentType={contentType as ContentType}
106
+ entry={entry as ContentEntry}
107
+ onSave={handleSave}
108
+ onCancel={handleCancel}
109
+ onDelete={handleDelete}
110
+ canDelete={canDelete("contentEntries")}
111
+ />
112
+ </div>
113
+ );
114
+ }
@@ -8,12 +8,14 @@
8
8
  import { useApi } from "../contexts/ApiContext";
9
9
  import { useEmbedNavigation } from "../navigation";
10
10
  import { useEmbedAdapter } from "../../lib/embed-adapter";
11
+ import { useSettingsConfig } from "../../contexts";
11
12
  import { MediaPage } from "../../pages";
12
13
 
13
14
  export function EmbedMedia() {
14
15
  const api = useApi();
15
16
  const embedNav = useEmbedNavigation();
16
17
  const navigation = useEmbedAdapter(embedNav);
18
+ const { settings } = useSettingsConfig();
17
19
 
18
- return <MediaPage api={api} navigation={navigation} />;
20
+ return <MediaPage api={api} navigation={navigation} settings={settings} />;
19
21
  }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Embed New Entry Page
3
+ *
4
+ * Renders the entry editor for creating a new content entry.
5
+ */
6
+
7
+ import { useApi } from "../contexts/ApiContext";
8
+ import { useEmbedNavigation, useEmbedParams } from "../navigation";
9
+ import { useQuery } from "convex/react";
10
+ import { ContentEntryEditor } from "../../components/ContentEntryEditor";
11
+ import type { ContentType, ContentEntry } from "../../components/ContentEntryEditor";
12
+ import { CmsEmptyState } from "../../components/cmsds/CmsEmptyState";
13
+ import { FileText } from "lucide-react";
14
+
15
+ export function EmbedNewEntry() {
16
+ const api = useApi();
17
+ const params = useEmbedParams();
18
+ const { navigate, navigateToEntry, navigateToContentType } = useEmbedNavigation();
19
+
20
+ const contentTypeId = params.contentTypeId;
21
+ const contentType = useQuery(api.getContentType, contentTypeId ? { id: contentTypeId } : "skip");
22
+
23
+ if (!contentTypeId) {
24
+ return (
25
+ <div className="space-y-6 p-6">
26
+ <CmsEmptyState
27
+ icon={<FileText className="size-6" />}
28
+ title="No Content Type Selected"
29
+ description="Please select a content type to create an entry."
30
+ action={{
31
+ label: "Go to Content",
32
+ onClick: () => navigate("content"),
33
+ }}
34
+ />
35
+ </div>
36
+ );
37
+ }
38
+
39
+ if (contentType === undefined) {
40
+ return (
41
+ <div className="space-y-6 p-6">
42
+ <div className="flex flex-col items-center justify-center py-12">
43
+ <div className="size-8 animate-spin rounded-full border-2 border-muted border-t-primary" />
44
+ <p className="mt-4 text-sm text-muted-foreground">Loading content type...</p>
45
+ </div>
46
+ </div>
47
+ );
48
+ }
49
+
50
+ if (contentType === null) {
51
+ return (
52
+ <div className="space-y-6 p-6">
53
+ <CmsEmptyState
54
+ icon={<FileText className="size-6" />}
55
+ title="Content Type Not Found"
56
+ description="The content type you're looking for doesn't exist or has been deleted."
57
+ action={{
58
+ label: "Back to Content Types",
59
+ onClick: () => navigate("content-types"),
60
+ }}
61
+ />
62
+ </div>
63
+ );
64
+ }
65
+
66
+ const handleSave = (entry: ContentEntry) => {
67
+ navigateToEntry(entry._id);
68
+ };
69
+
70
+ const handleCancel = () => {
71
+ navigateToContentType(contentTypeId);
72
+ };
73
+
74
+ return (
75
+ <div className="space-y-6 p-6">
76
+ <ContentEntryEditor
77
+ contentType={contentType as ContentType}
78
+ onSave={handleSave}
79
+ onCancel={handleCancel}
80
+ />
81
+ </div>
82
+ );
83
+ }
@@ -1,7 +1,10 @@
1
1
  export { EmbedDashboard } from "./Dashboard";
2
2
  export { EmbedContent } from "./Content";
3
+ export { EmbedContentTypeEntries } from "./ContentTypeEntries";
3
4
  export { EmbedContentTypes } from "./ContentTypes";
4
5
  export { EmbedMedia } from "./Media";
5
6
  export { EmbedSettings } from "./Settings";
6
7
  export { EmbedTrash } from "./Trash";
7
8
  export { EmbedTaxonomies } from "./Taxonomies";
9
+ export { EmbedNewEntry } from "./NewEntry";
10
+ export { EmbedEntry } from "./Entry";
@@ -5,7 +5,7 @@
5
5
  * Used by both CLI routes and embed pages.
6
6
  */
7
7
 
8
- import { useState, useCallback } from "react";
8
+ import { useState, useCallback, useEffect } from "react";
9
9
  import { useQuery } from "convex/react";
10
10
  import { usePermissions } from "~/hooks";
11
11
  import { BulkActionBar } from "~/components/BulkActionBar";
@@ -39,19 +39,11 @@ import { CmsAdminApi } from "~/embed/contexts/ApiContext";
39
39
 
40
40
  type ContentType = {
41
41
  _id: string;
42
+ name: string;
42
43
  displayName: string;
43
44
  titleField?: string;
44
45
  };
45
46
 
46
- type Entry = {
47
- _id: string;
48
- contentTypeId: string;
49
- slug?: string;
50
- status: string;
51
- data: Record<string, unknown>;
52
- _creationTime: number;
53
- };
54
-
55
47
  export interface ContentPageProps {
56
48
  api: CmsAdminApi
57
49
  navigation: AdminNavigation;
@@ -65,17 +57,32 @@ export function ContentPage({ api, navigation }: ContentPageProps) {
65
57
 
66
58
  const { canCreate, canUpdate } = usePermissions();
67
59
 
60
+ // Sync with navigation params when contentTypeId changes
61
+ useEffect(() => {
62
+ const contentTypeId = navigation.params?.contentTypeId;
63
+ if (contentTypeId) {
64
+ // Extract slug from contentTypeId (handles "code:slug" format)
65
+ const slug = contentTypeId.startsWith("code:")
66
+ ? contentTypeId.slice(5)
67
+ : contentTypeId;
68
+ setSelectedTypeId(slug);
69
+ } else {
70
+ // Clear selection when navigating to "All Entries"
71
+ setSelectedTypeId("");
72
+ }
73
+ }, [navigation.params?.contentTypeId]);
74
+
68
75
  const contentTypesResult = useQuery(api.listContentTypes, { isActive: true });
69
76
  const contentTypes: ContentType[] = contentTypesResult?.page ?? [];
70
77
  const isLoadingContentTypes = contentTypesResult === undefined;
71
78
 
72
79
  const entriesResult = useQuery(api.listEntries, {
73
- contentTypeId: selectedTypeId || undefined,
80
+ contentTypeName: selectedTypeId || undefined,
74
81
  status: selectedStatus || undefined,
75
82
  search: searchQuery.trim() || undefined,
76
83
  paginationOpts: { numItems: 50, cursor: null },
77
84
  });
78
- const entries: Entry[] = entriesResult?.page ?? [];
85
+ const entries = entriesResult?.page ?? [];
79
86
  const isLoadingEntries = entriesResult === undefined;
80
87
 
81
88
  const isLoading = isLoadingContentTypes || isLoadingEntries;
@@ -84,16 +91,16 @@ export function ContentPage({ api, navigation }: ContentPageProps) {
84
91
  navigation.navigateToNewEntry(contentTypeId);
85
92
  };
86
93
 
87
- const getContentTypeName = (contentTypeId: string) => {
88
- const type = contentTypes.find((t) => t._id === contentTypeId);
89
- return type?.displayName ?? "Unknown";
94
+ const getContentTypeDisplayName = (contentTypeName: string) => {
95
+ const type = contentTypes.find((t) => t.name === contentTypeName);
96
+ return type?.displayName ?? contentTypeName;
90
97
  };
91
98
 
92
99
  const getEntryTitle = (
93
100
  entry: { data: Record<string, unknown> },
94
- contentTypeId: string
101
+ contentTypeName: string
95
102
  ) => {
96
- const type = contentTypes.find((t) => t._id === contentTypeId);
103
+ const type = contentTypes.find((t) => t.name === contentTypeName);
97
104
  const titleField = type?.titleField ?? "title";
98
105
  const title = entry.data[titleField];
99
106
  return typeof title === "string" && title ? title : "Untitled";
@@ -291,7 +298,7 @@ export function ContentPage({ api, navigation }: ContentPageProps) {
291
298
  onCheckedChange={(checked) =>
292
299
  handleSelectItem(entry._id, checked as boolean)
293
300
  }
294
- aria-label={`Select ${getEntryTitle(entry, entry.contentTypeId)}`}
301
+ aria-label={`Select ${getEntryTitle(entry, entry.contentTypeName)}`}
295
302
  />
296
303
  </td>
297
304
  <td className="p-3">
@@ -301,7 +308,7 @@ export function ContentPage({ api, navigation }: ContentPageProps) {
301
308
  className="block text-left"
302
309
  >
303
310
  <span className="font-medium text-foreground hover:text-primary">
304
- {getEntryTitle(entry, entry.contentTypeId)}
311
+ {getEntryTitle(entry, entry.contentTypeName)}
305
312
  </span>
306
313
  <span className="block text-xs text-muted-foreground">
307
314
  {entry.slug}
@@ -309,7 +316,7 @@ export function ContentPage({ api, navigation }: ContentPageProps) {
309
316
  </button>
310
317
  </td>
311
318
  <td className="p-3 text-sm text-muted-foreground">
312
- {getContentTypeName(entry.contentTypeId)}
319
+ {getContentTypeDisplayName(entry.contentTypeName)}
313
320
  </td>
314
321
  <td className="p-3">
315
322
  <CmsStatusBadge status={entry.status as ContentStatus} />