sitero 0.6.0 → 0.8.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 (378) hide show
  1. package/dist/export/cms/client/components/index.js +6 -2
  2. package/dist/export/cms/client/index.js +2 -0
  3. package/dist/export/cms/client/pages/index.js +1 -4
  4. package/dist/export/cms/server/index.js +1 -0
  5. package/dist/export/core/server/index.js +2 -0
  6. package/dist/export/index.js +1 -0
  7. package/dist/export/web/server/index.js +1 -0
  8. package/dist/prisma/generated/internal/class.js +4 -4
  9. package/dist/src/cms/client/applications/create-applications.js +5 -0
  10. package/dist/src/cms/client/applications/resources/page/form-data.js +56 -0
  11. package/dist/src/cms/client/applications/resources/page/use-page-update-form-data.js +30 -0
  12. package/dist/src/cms/client/applications/resources/post/use-create-form-data.js +5 -5
  13. package/dist/src/cms/client/applications/resources/post/use-update-form-data.js +1 -1
  14. package/dist/src/cms/client/applications/resources/seo-metadata/build-seo-metadata-translations.js +35 -0
  15. package/dist/src/cms/client/applications/resources/seo-metadata/use-upsert-form-data.js +15 -31
  16. package/dist/src/cms/client/applications/ui/use-nav-items.js +28 -39
  17. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/file.js +5 -4
  18. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.js +7 -0
  19. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/resources/post.js +32 -1
  20. package/dist/src/cms/client/infrastructure/i18n/messages/en-US/ui/index.js +8 -1
  21. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/file.js +6 -5
  22. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.js +7 -0
  23. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/post.js +18 -1
  24. package/dist/src/cms/client/infrastructure/i18n/messages/zh-TW/ui/index.js +12 -7
  25. package/dist/src/cms/client/infrastructure/operation-result/presentation/message.js +15 -0
  26. package/dist/src/cms/client/interfaces/components/create-components.js +7 -8
  27. package/dist/src/cms/client/interfaces/components/create-page-contents.js +28 -0
  28. package/dist/src/cms/client/interfaces/components/resources/page/content/field-groups.js +16 -0
  29. package/dist/src/cms/client/interfaces/components/resources/page/content/page-edit-content.js +216 -0
  30. package/dist/src/cms/client/interfaces/components/resources/page/content/page-show-content.js +114 -0
  31. package/dist/src/cms/client/interfaces/components/resources/page/content/types.js +12 -0
  32. package/dist/src/cms/client/interfaces/components/resources/post/category/category-card.js +17 -5
  33. package/dist/src/cms/client/interfaces/components/resources/post/category/category-table.js +16 -5
  34. package/dist/src/cms/client/interfaces/components/resources/post/content/post-create-content.js +13 -8
  35. package/dist/src/cms/client/interfaces/components/resources/post/content/post-edit-content.js +11 -7
  36. package/dist/src/cms/client/interfaces/components/resources/post/content/post-show-content.js +7 -2
  37. package/dist/src/cms/client/interfaces/components/resources/post/post-card.js +17 -5
  38. package/dist/src/cms/client/interfaces/components/resources/post/post-list.js +49 -10
  39. package/dist/src/cms/client/interfaces/components/resources/post/post-state-icons.js +37 -6
  40. package/dist/src/cms/client/interfaces/components/resources/post/post-table.js +18 -5
  41. package/dist/src/cms/client/interfaces/components/resources/post/search/control-fields-filters.js +5 -1
  42. package/dist/src/cms/client/interfaces/components/resources/post/tag/tag-card.js +12 -2
  43. package/dist/src/cms/client/interfaces/components/resources/post/tag/tag-table.js +10 -1
  44. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.js +90 -67
  45. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.js +11 -1
  46. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.js +1 -1
  47. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/pagination.js +9 -9
  48. package/dist/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.js +15 -3
  49. package/dist/src/cms/client/interfaces/components/ui/features/accordion/accordion.js +5 -7
  50. package/dist/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-display.js +1 -1
  51. package/dist/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-input.js +1 -1
  52. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/edit/page.js +11 -11
  53. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/page.js +12 -16
  54. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/relations/page.js +6 -2
  55. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/create/page.js +15 -16
  56. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/page.js +18 -41
  57. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/edit/page.js +10 -11
  58. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/page.js +11 -16
  59. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/relations/page.js +1 -0
  60. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/create/page.js +14 -16
  61. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/edit/page.js +11 -11
  62. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/page.js +12 -16
  63. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/relations/page.js +1 -0
  64. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/create/page.js +15 -16
  65. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/page.js +18 -32
  66. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/edit/page.js +2 -2
  67. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/page.js +9 -9
  68. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/relations/page.js +6 -2
  69. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.js +2 -2
  70. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.js +204 -0
  71. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/admin-refresh-token/page.js +1 -0
  72. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/page.js +1 -0
  73. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/relations/page.js +8 -3
  74. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/page.js +3 -2
  75. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/relations/page.js +41 -30
  76. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/delete-many/page.js +3 -3
  77. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/page.js +1 -1
  78. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.js +3 -2
  79. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/edit/page.js +19 -11
  80. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/page.js +23 -10
  81. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/page.js +7 -7
  82. package/dist/src/cms/server/create-cms-server.js +2 -0
  83. package/dist/src/cms/server/resources/page/actions.js +31 -0
  84. package/dist/src/cms/server/resources/post/actions.js +27 -6
  85. package/dist/src/cms/server/resources/seo-metadata/actions.js +7 -16
  86. package/dist/src/config/content-ui.js +24 -0
  87. package/dist/src/config/topics.js +1 -1
  88. package/dist/src/constants/paths/cms-paths.js +2 -2
  89. package/dist/src/core/infrastructure/prisma/file/include.js +44 -0
  90. package/dist/src/core/infrastructure/prisma/file/mappers.js +51 -3
  91. package/dist/src/core/infrastructure/prisma/helpers/active-file-references.js +2 -1
  92. package/dist/src/core/infrastructure/prisma/page/include.js +20 -0
  93. package/dist/src/core/infrastructure/prisma/page/mappers.js +44 -0
  94. package/dist/src/core/infrastructure/prisma/page/page-prisma-ports.js +91 -0
  95. package/dist/src/core/infrastructure/prisma/post/include.js +2 -5
  96. package/dist/src/core/infrastructure/prisma/post/lifecycle.js +108 -0
  97. package/dist/src/core/infrastructure/prisma/post/mappers.js +0 -2
  98. package/dist/src/core/infrastructure/prisma/post/post-prisma-ports.js +76 -24
  99. package/dist/src/core/infrastructure/prisma/post/read-scope.js +45 -0
  100. package/dist/src/core/infrastructure/prisma/seo-metadata/mappers.js +6 -1
  101. package/dist/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.js +32 -11
  102. package/dist/src/core/seeders/page/seeder.js +9 -29
  103. package/dist/src/core/seeders/seed.js +0 -3
  104. package/dist/src/core/sitero-server/create-sitero-server.js +10 -0
  105. package/dist/src/web/server/create-web-server.js +5 -1
  106. package/dist/src/web/server/resources/page/actions.js +20 -0
  107. package/dist/src/web/server/resources/post/actions.js +3 -13
  108. package/dist/src/web/server/seo/sitemap/get-page-items.js +7 -6
  109. package/dist/src/web/server/seo/sitemap/get-post-items.js +2 -2
  110. package/dist/src/web/server/seo/sitemap/get-subcategory-items.js +1 -1
  111. package/dist/types/export/cms/client/components/index.d.ts +3 -0
  112. package/dist/types/export/cms/client/components/index.d.ts.map +1 -1
  113. package/dist/types/export/cms/client/index.d.ts +2 -0
  114. package/dist/types/export/cms/client/index.d.ts.map +1 -1
  115. package/dist/types/export/cms/client/pages/index.d.ts +3 -2
  116. package/dist/types/export/cms/client/pages/index.d.ts.map +1 -1
  117. package/dist/types/export/cms/server/index.d.ts +2 -1
  118. package/dist/types/export/cms/server/index.d.ts.map +1 -1
  119. package/dist/types/export/index.d.ts +1 -1
  120. package/dist/types/export/index.d.ts.map +1 -1
  121. package/dist/types/export/web/server/index.d.ts +2 -1
  122. package/dist/types/export/web/server/index.d.ts.map +1 -1
  123. package/dist/types/src/cms/client/applications/create-applications.d.ts.map +1 -1
  124. package/dist/types/src/cms/client/applications/index.d.ts +1 -0
  125. package/dist/types/src/cms/client/applications/index.d.ts.map +1 -1
  126. package/dist/types/src/cms/client/applications/resources/index.d.ts +1 -0
  127. package/dist/types/src/cms/client/applications/resources/index.d.ts.map +1 -1
  128. package/dist/types/src/cms/client/applications/resources/page/form-data.d.ts +21 -0
  129. package/dist/types/src/cms/client/applications/resources/page/form-data.d.ts.map +1 -0
  130. package/dist/types/src/cms/client/applications/resources/page/index.d.ts +3 -0
  131. package/dist/types/src/cms/client/applications/resources/page/index.d.ts.map +1 -0
  132. package/dist/types/src/cms/client/applications/resources/page/use-page-update-form-data.d.ts +12 -0
  133. package/dist/types/src/cms/client/applications/resources/page/use-page-update-form-data.d.ts.map +1 -0
  134. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts +3 -5
  135. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts.map +1 -1
  136. package/dist/types/src/cms/client/applications/resources/post/use-update-form-data.d.ts.map +1 -1
  137. package/dist/types/src/cms/client/applications/resources/seo-metadata/build-seo-metadata-translations.d.ts +6 -0
  138. package/dist/types/src/cms/client/applications/resources/seo-metadata/build-seo-metadata-translations.d.ts.map +1 -0
  139. package/dist/types/src/cms/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts +5 -4
  140. package/dist/types/src/cms/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts.map +1 -1
  141. package/dist/types/src/cms/client/applications/types.d.ts +2 -1
  142. package/dist/types/src/cms/client/applications/types.d.ts.map +1 -1
  143. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts +3 -4
  144. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts.map +1 -1
  145. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts +86 -0
  146. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts.map +1 -1
  147. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/file.d.ts +3 -0
  148. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/file.d.ts.map +1 -1
  149. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts +71 -0
  150. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts.map +1 -1
  151. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/post.d.ts +51 -0
  152. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/post.d.ts.map +1 -1
  153. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/ui/index.d.ts +15 -0
  154. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/ui/index.d.ts.map +1 -1
  155. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts +172 -0
  156. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts.map +1 -1
  157. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts +86 -0
  158. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts.map +1 -1
  159. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/file.d.ts +3 -0
  160. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/file.d.ts.map +1 -1
  161. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts +71 -0
  162. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts.map +1 -1
  163. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/post.d.ts +51 -0
  164. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/post.d.ts.map +1 -1
  165. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/ui/index.d.ts +15 -0
  166. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/ui/index.d.ts.map +1 -1
  167. package/dist/types/src/cms/client/infrastructure/operation-result/presentation/message.d.ts.map +1 -1
  168. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts +6 -3
  169. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts.map +1 -1
  170. package/dist/types/src/cms/client/interfaces/components/create-page-contents.d.ts +30 -0
  171. package/dist/types/src/cms/client/interfaces/components/create-page-contents.d.ts.map +1 -0
  172. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts +1 -1
  173. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts.map +1 -1
  174. package/dist/types/src/cms/client/interfaces/components/resources/page/content/field-groups.d.ts +3 -0
  175. package/dist/types/src/cms/client/interfaces/components/resources/page/content/field-groups.d.ts.map +1 -0
  176. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-edit-content.d.ts +14 -0
  177. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-edit-content.d.ts.map +1 -0
  178. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-show-content.d.ts +7 -0
  179. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-show-content.d.ts.map +1 -0
  180. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts +27 -0
  181. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts.map +1 -0
  182. package/dist/types/src/cms/client/interfaces/components/resources/page/index.d.ts +4 -0
  183. package/dist/types/src/cms/client/interfaces/components/resources/page/index.d.ts.map +1 -0
  184. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts +5 -2
  185. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts.map +1 -1
  186. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts +1 -1
  187. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts.map +1 -1
  188. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts +3 -5
  189. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts.map +1 -1
  190. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts.map +1 -1
  191. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts.map +1 -1
  192. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts +6 -3
  193. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts.map +1 -1
  194. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts +6 -3
  195. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts.map +1 -1
  196. package/dist/types/src/cms/client/interfaces/components/resources/post/post-state-icons.d.ts +7 -2
  197. package/dist/types/src/cms/client/interfaces/components/resources/post/post-state-icons.d.ts.map +1 -1
  198. package/dist/types/src/cms/client/interfaces/components/resources/post/post-table.d.ts +5 -2
  199. package/dist/types/src/cms/client/interfaces/components/resources/post/post-table.d.ts.map +1 -1
  200. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-filters.d.ts.map +1 -1
  201. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-card.d.ts +3 -2
  202. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-card.d.ts.map +1 -1
  203. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-table.d.ts +1 -1
  204. package/dist/types/src/cms/client/interfaces/components/resources/post/tag/tag-table.d.ts.map +1 -1
  205. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts +5 -2
  206. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts.map +1 -1
  207. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts +2 -1
  208. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts.map +1 -1
  209. package/dist/types/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.d.ts.map +1 -1
  210. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.d.ts +3 -1
  211. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.d.ts.map +1 -1
  212. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion.d.ts +2 -1
  213. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion.d.ts.map +1 -1
  214. package/dist/types/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-display.d.ts.map +1 -1
  215. package/dist/types/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-input.d.ts.map +1 -1
  216. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts +1 -1
  217. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts.map +1 -1
  218. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts +3 -1
  219. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts.map +1 -1
  220. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/relations/page.d.ts +3 -1
  221. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/relations/page.d.ts.map +1 -1
  222. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts +4 -7
  223. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts.map +1 -1
  224. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts +1 -4
  225. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts.map +1 -1
  226. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts.map +1 -1
  227. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts.map +1 -1
  228. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/relations/page.d.ts.map +1 -1
  229. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts +4 -7
  230. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts.map +1 -1
  231. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts +1 -1
  232. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts.map +1 -1
  233. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts +3 -1
  234. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts.map +1 -1
  235. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/relations/page.d.ts.map +1 -1
  236. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts +4 -7
  237. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts.map +1 -1
  238. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts +1 -3
  239. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts.map +1 -1
  240. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts.map +1 -1
  241. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/relations/page.d.ts +3 -1
  242. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/relations/page.d.ts.map +1 -1
  243. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/index.d.ts +2 -0
  244. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/index.d.ts.map +1 -0
  245. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.d.ts +18 -0
  246. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.d.ts.map +1 -0
  247. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/relations/page.d.ts +3 -1
  248. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/relations/page.d.ts.map +1 -1
  249. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/file/[id]/relations/page.d.ts +5 -6
  250. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/file/[id]/relations/page.d.ts.map +1 -1
  251. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.d.ts.map +1 -1
  252. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/edit/page.d.ts +7 -9
  253. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/edit/page.d.ts.map +1 -1
  254. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/page.d.ts +7 -9
  255. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/page.d.ts.map +1 -1
  256. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/page.d.ts +3 -3
  257. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/page.d.ts.map +1 -1
  258. package/dist/types/src/cms/client/interfaces/pages/index.d.ts +1 -2
  259. package/dist/types/src/cms/client/interfaces/pages/index.d.ts.map +1 -1
  260. package/dist/types/src/cms/contracts/resources/page/actions.d.ts +7 -0
  261. package/dist/types/src/cms/contracts/resources/page/actions.d.ts.map +1 -0
  262. package/dist/types/src/cms/contracts/resources/post/actions.d.ts +2 -0
  263. package/dist/types/src/cms/contracts/resources/post/actions.d.ts.map +1 -1
  264. package/dist/types/src/cms/contracts/resources/post/form-data.d.ts +1 -1
  265. package/dist/types/src/cms/contracts/resources/post/form-data.d.ts.map +1 -1
  266. package/dist/types/src/cms/contracts/resources/seo-metadata/form-data.d.ts +2 -2
  267. package/dist/types/src/cms/contracts/resources/seo-metadata/form-data.d.ts.map +1 -1
  268. package/dist/types/src/cms/server/create-cms-server.d.ts +7 -0
  269. package/dist/types/src/cms/server/create-cms-server.d.ts.map +1 -1
  270. package/dist/types/src/cms/server/index.d.ts +1 -1
  271. package/dist/types/src/cms/server/index.d.ts.map +1 -1
  272. package/dist/types/src/cms/server/resources/index.d.ts +1 -0
  273. package/dist/types/src/cms/server/resources/index.d.ts.map +1 -1
  274. package/dist/types/src/cms/server/resources/page/actions.d.ts +8 -0
  275. package/dist/types/src/cms/server/resources/page/actions.d.ts.map +1 -0
  276. package/dist/types/src/cms/server/resources/post/actions.d.ts +2 -0
  277. package/dist/types/src/cms/server/resources/post/actions.d.ts.map +1 -1
  278. package/dist/types/src/cms/server/resources/seo-metadata/actions.d.ts.map +1 -1
  279. package/dist/types/src/config/content-ui.d.ts +14 -0
  280. package/dist/types/src/config/content-ui.d.ts.map +1 -0
  281. package/dist/types/src/config/index.d.ts +2 -0
  282. package/dist/types/src/config/index.d.ts.map +1 -1
  283. package/dist/types/src/config/page.d.ts +4 -0
  284. package/dist/types/src/config/page.d.ts.map +1 -0
  285. package/dist/types/src/config/topics.d.ts +2 -2
  286. package/dist/types/src/config/topics.d.ts.map +1 -1
  287. package/dist/types/src/constants/paths/cms-paths.d.ts +3 -3
  288. package/dist/types/src/core/infrastructure/index.d.ts +1 -0
  289. package/dist/types/src/core/infrastructure/index.d.ts.map +1 -1
  290. package/dist/types/src/core/infrastructure/prisma/file/include.d.ts +121 -0
  291. package/dist/types/src/core/infrastructure/prisma/file/include.d.ts.map +1 -1
  292. package/dist/types/src/core/infrastructure/prisma/file/mappers.d.ts.map +1 -1
  293. package/dist/types/src/core/infrastructure/prisma/helpers/active-file-references.d.ts +1 -1
  294. package/dist/types/src/core/infrastructure/prisma/helpers/active-file-references.d.ts.map +1 -1
  295. package/dist/types/src/core/infrastructure/prisma/index.d.ts +1 -0
  296. package/dist/types/src/core/infrastructure/prisma/index.d.ts.map +1 -1
  297. package/dist/types/src/core/infrastructure/prisma/page/include.d.ts +63 -0
  298. package/dist/types/src/core/infrastructure/prisma/page/include.d.ts.map +1 -0
  299. package/dist/types/src/core/infrastructure/prisma/page/index.d.ts +4 -0
  300. package/dist/types/src/core/infrastructure/prisma/page/index.d.ts.map +1 -0
  301. package/dist/types/src/core/infrastructure/prisma/page/mappers.d.ts +9 -0
  302. package/dist/types/src/core/infrastructure/prisma/page/mappers.d.ts.map +1 -0
  303. package/dist/types/src/core/infrastructure/prisma/page/page-prisma-ports.d.ts +7 -0
  304. package/dist/types/src/core/infrastructure/prisma/page/page-prisma-ports.d.ts.map +1 -0
  305. package/dist/types/src/core/infrastructure/prisma/page/types.d.ts +10 -0
  306. package/dist/types/src/core/infrastructure/prisma/page/types.d.ts.map +1 -0
  307. package/dist/types/src/core/infrastructure/prisma/post/include.d.ts +0 -29
  308. package/dist/types/src/core/infrastructure/prisma/post/include.d.ts.map +1 -1
  309. package/dist/types/src/core/infrastructure/prisma/post/lifecycle.d.ts +66 -0
  310. package/dist/types/src/core/infrastructure/prisma/post/lifecycle.d.ts.map +1 -0
  311. package/dist/types/src/core/infrastructure/prisma/post/mappers.d.ts.map +1 -1
  312. package/dist/types/src/core/infrastructure/prisma/post/post-prisma-ports.d.ts.map +1 -1
  313. package/dist/types/src/core/infrastructure/prisma/post/read-scope.d.ts +271 -0
  314. package/dist/types/src/core/infrastructure/prisma/post/read-scope.d.ts.map +1 -0
  315. package/dist/types/src/core/infrastructure/prisma/seo-metadata/mappers.d.ts +1 -1
  316. package/dist/types/src/core/infrastructure/prisma/seo-metadata/mappers.d.ts.map +1 -1
  317. package/dist/types/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.d.ts +2 -2
  318. package/dist/types/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.d.ts.map +1 -1
  319. package/dist/types/src/core/seeders/page/seeder.d.ts +3 -3
  320. package/dist/types/src/core/seeders/page/seeder.d.ts.map +1 -1
  321. package/dist/types/src/core/seeders/seed.d.ts +2 -3
  322. package/dist/types/src/core/seeders/seed.d.ts.map +1 -1
  323. package/dist/types/src/core/sitero-server/create-sitero-server.d.ts.map +1 -1
  324. package/dist/types/src/core/sitero-server/types.d.ts +2 -0
  325. package/dist/types/src/core/sitero-server/types.d.ts.map +1 -1
  326. package/dist/types/src/shared/list-item.d.ts +1 -0
  327. package/dist/types/src/shared/list-item.d.ts.map +1 -1
  328. package/dist/types/src/web/contracts/index.d.ts +1 -0
  329. package/dist/types/src/web/contracts/index.d.ts.map +1 -1
  330. package/dist/types/src/web/contracts/resources/page/actions.d.ts +5 -0
  331. package/dist/types/src/web/contracts/resources/page/actions.d.ts.map +1 -0
  332. package/dist/types/src/web/contracts/resources/post/actions.d.ts +1 -1
  333. package/dist/types/src/web/contracts/resources/post/actions.d.ts.map +1 -1
  334. package/dist/types/src/web/server/create-web-server.d.ts.map +1 -1
  335. package/dist/types/src/web/server/index.d.ts +1 -1
  336. package/dist/types/src/web/server/index.d.ts.map +1 -1
  337. package/dist/types/src/web/server/resources/index.d.ts +1 -0
  338. package/dist/types/src/web/server/resources/index.d.ts.map +1 -1
  339. package/dist/types/src/web/server/resources/page/actions.d.ts +17 -0
  340. package/dist/types/src/web/server/resources/page/actions.d.ts.map +1 -0
  341. package/dist/types/src/web/server/resources/post/actions.d.ts +1 -6
  342. package/dist/types/src/web/server/resources/post/actions.d.ts.map +1 -1
  343. package/dist/types/src/web/server/seo/metadata/build-metadata.d.ts +5 -2
  344. package/dist/types/src/web/server/seo/metadata/build-metadata.d.ts.map +1 -1
  345. package/dist/types/src/web/server/seo/sitemap/build-entries.d.ts +2 -2
  346. package/dist/types/src/web/server/seo/sitemap/build-entries.d.ts.map +1 -1
  347. package/dist/types/src/web/server/seo/sitemap/get-page-items.d.ts +6 -2
  348. package/dist/types/src/web/server/seo/sitemap/get-page-items.d.ts.map +1 -1
  349. package/dist/types/src/web/server/seo/sitemap/get-post-items.d.ts.map +1 -1
  350. package/dist/types/src/web/server/seo/sitemap/get-subcategory-items.d.ts.map +1 -1
  351. package/dist/types/src/web/server/types.d.ts +6 -2
  352. package/dist/types/src/web/server/types.d.ts.map +1 -1
  353. package/package.json +3 -3
  354. package/dist/src/cms/client/interfaces/components/resources/post/topic/topic-card.js +0 -81
  355. package/dist/src/cms/client/interfaces/components/resources/post/topic/topic-table.js +0 -120
  356. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/_id_/edit/page.js +0 -110
  357. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/_id_/page.js +0 -161
  358. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.js +0 -103
  359. package/dist/src/cms/client/interfaces/pages/page.js +0 -17
  360. package/dist/src/core/seeders/topic/seeder.js +0 -47
  361. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts +0 -3
  362. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts.map +0 -1
  363. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts +0 -5
  364. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts.map +0 -1
  365. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts +0 -3
  366. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts.map +0 -1
  367. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts +0 -20
  368. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts.map +0 -1
  369. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts +0 -20
  370. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts.map +0 -1
  371. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts +0 -4
  372. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts.map +0 -1
  373. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts +0 -14
  374. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts.map +0 -1
  375. package/dist/types/src/cms/client/interfaces/pages/page.d.ts +0 -2
  376. package/dist/types/src/cms/client/interfaces/pages/page.d.ts.map +0 -1
  377. package/dist/types/src/core/seeders/topic/seeder.d.ts +0 -10
  378. package/dist/types/src/core/seeders/topic/seeder.d.ts.map +0 -1
@@ -100,9 +100,8 @@ function createPostEditContent({
100
100
  const parentPathname = useParentPathname();
101
101
  const editorLocale = cmsLocale.startsWith("zh") ? "zh" : "en";
102
102
  const id = post?.id ?? "";
103
- const topic = post?.topic;
104
103
  const slug = post?.slug;
105
- const topicSlug = topic?.slug;
104
+ const topicSlug = post?.topicKey ?? void 0;
106
105
  const isFieldAllowed = (type, field, fieldRuleKey) => allowField({ topicSlug, type, field, fieldRuleKey });
107
106
  const { formData, setFormData } = usePostUpdateFormData({
108
107
  post,
@@ -205,7 +204,7 @@ function createPostEditContent({
205
204
  )
206
205
  ],
207
206
  type: parentType,
208
- topicId: topic?.id,
207
+ topicKey: post?.topicKey ?? void 0,
209
208
  Card: (props) => /* @__PURE__ */ jsx(
210
209
  CategoryCard,
211
210
  {
@@ -228,7 +227,7 @@ function createPostEditContent({
228
227
  {
229
228
  openNewTab: true,
230
229
  post: parent,
231
- topicSlug: topic?.slug,
230
+ topicSlug: post?.topicKey ?? void 0,
232
231
  isSubcategory: isSubcategoryParent
233
232
  },
234
233
  parent.id
@@ -569,7 +568,7 @@ function createPostEditContent({
569
568
  )
570
569
  ],
571
570
  type: postType,
572
- topicId: topic?.id,
571
+ topicKey: post?.topicKey ?? void 0,
573
572
  excludeIds: post ? [post?.id] : void 0
574
573
  }
575
574
  ),
@@ -578,7 +577,7 @@ function createPostEditContent({
578
577
  {
579
578
  openNewTab: true,
580
579
  post: relatedPost,
581
- topicSlug: topic?.slug
580
+ topicSlug: post?.topicKey ?? void 0
582
581
  },
583
582
  relatedPost.id
584
583
  ))
@@ -602,7 +601,12 @@ function createPostEditContent({
602
601
  ControlFields,
603
602
  {
604
603
  fields: [
605
- ...isFieldAllowed(postType, "isActive", post?.slug) ? [{ key: "isActive" }] : [],
604
+ ...isFieldAllowed(postType, "isActive", post?.slug) ? [
605
+ {
606
+ key: "isActive",
607
+ label: t("resources.post.is-public.text")
608
+ }
609
+ ] : [],
606
610
  ...isFieldAllowed(postType, "isIndexActive", post?.slug) ? [{ key: "isIndexActive" }] : [],
607
611
  ...isFieldAllowed(postType, "isSlugActive", post?.slug) ? [{ key: "isSlugActive" }] : [],
608
612
  ...isFieldAllowed(postType, "isFeatured", post?.slug) ? [{ key: "isFeatured" }] : [],
@@ -72,7 +72,7 @@ function createPostShowContent({
72
72
  }) {
73
73
  const { t, format, locale: cmsLocale } = useTranslator();
74
74
  const type = post?.type;
75
- const topicSlug = post?.topic?.slug;
75
+ const topicSlug = post?.topicKey ?? void 0;
76
76
  const categories = post?.parents;
77
77
  const parentLabelKey = subcategoryType && categories?.[0]?.type === subcategoryType ? "resources.subcategory.text" : "resources.category.text";
78
78
  const isFieldAllowed = (type2, field, fieldRuleKey) => allowField({ topicSlug, type: type2, field, fieldRuleKey });
@@ -297,7 +297,12 @@ function createPostShowContent({
297
297
  ControlFields,
298
298
  {
299
299
  fields: [
300
- ...isFieldAllowed(type, "isActive", post?.slug) ? [{ key: "isActive" }] : [],
300
+ ...isFieldAllowed(type, "isActive", post?.slug) ? [
301
+ {
302
+ key: "isActive",
303
+ label: t("resources.post.is-public.text")
304
+ }
305
+ ] : [],
301
306
  ...isFieldAllowed(type, "isIndexActive", post?.slug) ? [{ key: "isIndexActive" }] : [],
302
307
  ...isFieldAllowed(type, "isSlugActive", post?.slug) ? [{ key: "isSlugActive" }] : [],
303
308
  ...isFieldAllowed(type, "isFeatured", post?.slug) ? [{ key: "isFeatured" }] : [],
@@ -44,14 +44,18 @@ import { PostStateIcons } from './post-state-icons.js';
44
44
  const WIDTH = "256px";
45
45
  const HEIGHT = "256px";
46
46
  function createPostCard({
47
+ topics = {},
47
48
  SmartImage,
48
49
  storageUrl,
49
50
  strategies,
50
- defaultWebLocale
51
+ defaultWebLocale,
52
+ customControlFields: defaultCustomControlFields = []
51
53
  }) {
52
54
  return function PostCard({
53
55
  post,
54
56
  topicSlug,
57
+ customControlFields = defaultCustomControlFields,
58
+ usableFields,
55
59
  // link
56
60
  openNewTab,
57
61
  // pick
@@ -60,9 +64,10 @@ function createPostCard({
60
64
  // base
61
65
  className = ""
62
66
  }) {
63
- const topic = "topic" in post ? post.topic : null;
64
- const resolvedTopicSlug = topic?.slug ?? topicSlug;
65
- const topicT = findTranslation(topic?.translations, defaultWebLocale);
67
+ const resolvedTopicSlug = post.topicKey ?? topicSlug;
68
+ const topicT = {
69
+ title: topics[post.topicKey ?? ""]?.title[defaultWebLocale] ?? post.topicKey ?? ""
70
+ };
66
71
  const postT = findTranslation(post.translations, defaultWebLocale);
67
72
  const strategy = strategies?.[post.type]?.[resolvedTopicSlug ?? ""] ?? {};
68
73
  const presentation = resolvePostPresentation(postT, strategy);
@@ -84,7 +89,14 @@ function createPostCard({
84
89
  openNewTab
85
90
  },
86
91
  identity: { icon: /* @__PURE__ */ jsx(File, {}), badge: topicT.title },
87
- state: /* @__PURE__ */ jsx(PostStateIcons, { post }),
92
+ state: /* @__PURE__ */ jsx(
93
+ PostStateIcons,
94
+ {
95
+ post,
96
+ customControlFields,
97
+ usableFields
98
+ }
99
+ ),
88
100
  media: strategy.media !== false ? /* @__PURE__ */ jsx(
89
101
  "div",
90
102
  {
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { jsx } from 'react/jsx-runtime';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useTranslator } from 'intor/react';
3
4
  import { useState, useMemo, useEffect } from 'react';
4
5
  import { POST_TYPES } from 'sitero-domain';
5
6
  import 'mime-types';
@@ -12,7 +13,6 @@ import { debounce } from '../../../../../../shared/utils/debounce.js';
12
13
  import { ensureArray } from '../../../../../../shared/utils/ensure-array.js';
13
14
  import { normalizeUnorderedCacheKey } from '../../../../../../shared/utils/normalize-unordered-cache-key.js';
14
15
  import { DO_NOT_FETCH_KEY } from '../../../../../../shared/list-item.js';
15
- import 'intor/react';
16
16
  import 'lucide-react';
17
17
  import '@radix-ui/react-avatar';
18
18
  import '../../shadcn/badge.js';
@@ -30,6 +30,7 @@ import 'next-themes';
30
30
  import 'sonner';
31
31
  import '@radix-ui/react-tabs';
32
32
  import '@radix-ui/react-tooltip';
33
+ import { ActionButton } from '../../ui/buttons/action-button.js';
33
34
  import 'next/link';
34
35
  import 'next/navigation';
35
36
  import '../../../../../../constants/paths/redirect.js';
@@ -40,6 +41,7 @@ import { toActiveControlFieldFilters } from './search/control-field-filter-state
40
41
  import { ControlFieldsFilters } from './search/control-fields-filters.js';
41
42
 
42
43
  function createPostList({
44
+ topics = {},
43
45
  customControlFields: defaultCustomControlFields = [],
44
46
  postFindListCardsAction,
45
47
  PostCard,
@@ -49,10 +51,11 @@ function createPostList({
49
51
  return function PostList({
50
52
  customControlFields = defaultCustomControlFields,
51
53
  enabled = true,
54
+ isDeleted = false,
52
55
  usableFields,
53
56
  // search
54
57
  type = POST_TYPES.POST,
55
- topicId,
58
+ topicKey,
56
59
  authorId,
57
60
  postIds,
58
61
  excludeIds,
@@ -70,6 +73,7 @@ function createPostList({
70
73
  // list
71
74
  localKey = "post"
72
75
  }) {
76
+ const { t } = useTranslator();
73
77
  const [page, setPage] = useState(1);
74
78
  const [pageSize, setPageSize] = useState(20);
75
79
  const [searchString, setSearchString] = useState("");
@@ -93,13 +97,14 @@ function createPostList({
93
97
  customControlFields,
94
98
  usableFields
95
99
  );
96
- const { data, isFetching } = useQuery(
100
+ const { data, isFetching, isError, isSuccess, refetch } = useQuery(
97
101
  () => postFindListCardsAction({
98
102
  locale: defaultWebLocale,
103
+ ...isDeleted ? { deletion: "deleted" } : {},
99
104
  searchString,
100
105
  ...type ? { type } : {},
101
106
  ...activeControlFieldFilters,
102
- topicId,
107
+ topicKey,
103
108
  authorId,
104
109
  postIds,
105
110
  excludeIds,
@@ -109,29 +114,58 @@ function createPostList({
109
114
  [
110
115
  "postFindListCardsAction",
111
116
  defaultWebLocale,
117
+ isDeleted,
112
118
  searchString,
113
119
  type,
114
120
  JSON.stringify(activeControlFieldFilters),
115
- topicId,
121
+ topicKey,
116
122
  authorId,
117
123
  normalizeUnorderedCacheKey(postIds),
118
124
  normalizeUnorderedCacheKey(excludeIds),
119
125
  page,
120
126
  pageSize
121
127
  ],
122
- { enabled: enabled && topicId !== DO_NOT_FETCH_KEY }
128
+ { enabled: enabled && topicKey !== DO_NOT_FETCH_KEY }
123
129
  );
124
130
  const posts = useMemo(() => ensureArray(data?.items), [data?.items]);
131
+ const lastPage = Math.max(1, Math.ceil((data?.total ?? 0) / pageSize));
132
+ if (isSuccess && !isFetching && page > lastPage) setPage(lastPage);
125
133
  useEffect(() => {
126
134
  setListItemStates?.({
127
135
  items: posts,
128
- count: data?.total ?? 0,
129
- isFetching
136
+ ...isSuccess && data ? { count: data.total } : {},
137
+ isError,
138
+ isFetching,
139
+ refetch
130
140
  });
131
- }, [isFetching, data?.total, posts, setListItemStates]);
141
+ }, [
142
+ isFetching,
143
+ isError,
144
+ isSuccess,
145
+ data,
146
+ posts,
147
+ refetch,
148
+ setListItemStates
149
+ ]);
132
150
  useEffect(() => {
133
151
  onLoadingChange?.(isFetching);
134
152
  }, [onLoadingChange, isFetching]);
153
+ if (isError) {
154
+ return /* @__PURE__ */ jsxs("div", { role: "alert", className: "flex flex-col items-start gap-3", children: [
155
+ /* @__PURE__ */ jsx("p", { children: t("ui.operation-error.unknown.text") }),
156
+ /* @__PURE__ */ jsx(
157
+ ActionButton,
158
+ {
159
+ isLoading: isFetching,
160
+ isDisabled: isFetching,
161
+ onClick: () => {
162
+ void refetch();
163
+ },
164
+ children: t("ui.retry.text")
165
+ }
166
+ )
167
+ ] });
168
+ }
135
169
  return /* @__PURE__ */ jsx(
136
170
  ListContainer,
137
171
  {
@@ -162,6 +196,8 @@ function createPostList({
162
196
  Card,
163
197
  {
164
198
  post,
199
+ customControlFields,
200
+ usableFields,
165
201
  openNewTab,
166
202
  isPicked,
167
203
  onSelect: handleClick ? () => handleClick(post) : void 0,
@@ -173,7 +209,10 @@ function createPostList({
173
209
  table: /* @__PURE__ */ jsx(
174
210
  Table,
175
211
  {
212
+ topics,
176
213
  posts,
214
+ customControlFields,
215
+ usableFields,
177
216
  pickedItems,
178
217
  onSelect: handleClick,
179
218
  openNewTab,
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useTranslator } from 'intor/react';
2
3
  import { Eye, EyeOff, MapPinCheckInside, Star, House } from 'lucide-react';
3
4
  import 'mime-types';
4
5
  import 'sitero-domain';
@@ -7,12 +8,33 @@ import 'ua-parser-js';
7
8
  import '../../../../../../shared/client/react-query/client.js';
8
9
  import '@tanstack/react-query';
9
10
  import { cn } from '../../../../../../shared/utils/cn.js';
11
+ import { resolveControlFieldLabel } from './content/resolve-control-field-label.js';
10
12
 
11
- function PostStateIcons({ post }) {
13
+ function PostStateIcons({
14
+ post,
15
+ customControlFields = [],
16
+ usableFields
17
+ }) {
18
+ const enabled = (field) => !usableFields || usableFields.includes(field);
19
+ const { t, locale } = useTranslator();
12
20
  const { isActive, isSlugActive, index, isFeatured, isShownOnHome } = post;
13
21
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
14
- isActive ? /* @__PURE__ */ jsx(Eye, { className: "size-4" }) : /* @__PURE__ */ jsx(EyeOff, { className: "text-destructive size-4" }),
15
- index !== void 0 && /* @__PURE__ */ jsx(
22
+ enabled("isActive") && (isActive ? /* @__PURE__ */ jsx(
23
+ Eye,
24
+ {
25
+ className: "size-4",
26
+ role: "img",
27
+ "aria-label": t("resources.post.published.text")
28
+ }
29
+ ) : /* @__PURE__ */ jsx(
30
+ EyeOff,
31
+ {
32
+ className: "text-destructive size-4",
33
+ role: "img",
34
+ "aria-label": t("resources.post.unpublished.text")
35
+ }
36
+ )),
37
+ enabled("isIndexActive") && index !== void 0 && /* @__PURE__ */ jsx(
16
38
  "p",
17
39
  {
18
40
  className: cn(
@@ -22,14 +44,23 @@ function PostStateIcons({ post }) {
22
44
  children: index ?? 0
23
45
  }
24
46
  ),
25
- isSlugActive !== void 0 && /* @__PURE__ */ jsx(
47
+ enabled("isSlugActive") && isSlugActive !== void 0 && /* @__PURE__ */ jsx(
26
48
  MapPinCheckInside,
27
49
  {
28
50
  className: cn("size-4", !isSlugActive && "opacity-10")
29
51
  }
30
52
  ),
31
- isFeatured !== void 0 && /* @__PURE__ */ jsx(Star, { className: cn("size-4", !isFeatured && "opacity-10") }),
32
- isShownOnHome !== void 0 && /* @__PURE__ */ jsx(House, { className: cn("size-4", !isShownOnHome && "opacity-10") })
53
+ enabled("isFeatured") && isFeatured !== void 0 && /* @__PURE__ */ jsx(Star, { className: cn("size-4", !isFeatured && "opacity-10") }),
54
+ enabled("isShownOnHome") && isShownOnHome !== void 0 && /* @__PURE__ */ jsx(House, { className: cn("size-4", !isShownOnHome && "opacity-10") }),
55
+ customControlFields.filter(({ key }) => enabled(key) && post[key] !== void 0).map(({ key, icon: Icon, label }) => /* @__PURE__ */ jsx(
56
+ Icon,
57
+ {
58
+ role: "img",
59
+ "aria-label": resolveControlFieldLabel(label, locale),
60
+ className: cn("size-4", !post[key] && "opacity-10")
61
+ },
62
+ key
63
+ ))
33
64
  ] });
34
65
  }
35
66
 
@@ -45,8 +45,11 @@ import { resolvePostPresentation } from './post-presentation.js';
45
45
  import { PostStateIcons } from './post-state-icons.js';
46
46
 
47
47
  function PostTable({
48
+ topics = {},
48
49
  posts,
49
50
  contentLocale,
51
+ customControlFields,
52
+ usableFields,
50
53
  strategies,
51
54
  pickedItems,
52
55
  onSelect,
@@ -64,14 +67,17 @@ function PostTable({
64
67
  /* @__PURE__ */ jsx(TableHead, { children: t("resources.post.excerpt.text") })
65
68
  ] }) }),
66
69
  /* @__PURE__ */ jsx(TableBody, { children: posts.map((post) => {
67
- const topic = post.topic;
68
- const topicT = findTranslation(topic?.translations, contentLocale);
70
+ const topicT = {
71
+ title: topics[post.topicKey ?? ""]?.title[contentLocale] ?? post.topicKey ?? ""
72
+ };
69
73
  const isPicked = !!pickedItems?.some((item) => item.id === post.id);
70
74
  const postT = findTranslation(post.translations, contentLocale);
71
- const strategy = strategies?.[post.type]?.[topic?.slug ?? ""] ?? {};
75
+ const strategy = strategies?.[post.type]?.[post.topicKey ?? ""] ?? {};
72
76
  const presentation = resolvePostPresentation(postT, strategy);
73
77
  const href = joinUrl(
74
- CMS_PATHS.content["content-management"].post.pathname(topic?.slug),
78
+ CMS_PATHS.content["content-management"].post.pathname(
79
+ post.topicKey ?? void 0
80
+ ),
75
81
  post?.id
76
82
  );
77
83
  const title = presentation.title;
@@ -110,7 +116,14 @@ function PostTable({
110
116
  isSelecting && /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx("div", { className: "flex-center text-muted-foreground/60", children: isPicked ? /* @__PURE__ */ jsx(Tick, { isPicked: true }) : /* @__PURE__ */ jsx(Circle, { "aria-hidden": true, className: "size-5!" }) }) }),
111
117
  /* @__PURE__ */ jsx(TableCell, { className: "border-r", children: /* @__PURE__ */ jsx("div", { className: "flex-center", children: /* @__PURE__ */ jsx(File, { className: "text-muted-foreground" }) }) }),
112
118
  /* @__PURE__ */ jsx(TableCell, { className: "w-40", children: /* @__PURE__ */ jsx(Badge, { className: "h-5.5 w-fit max-w-32 min-w-0 px-3", children: topicT.title }) }),
113
- /* @__PURE__ */ jsx(TableCell, { className: "w-40", children: /* @__PURE__ */ jsx(PostStateIcons, { post }) }),
119
+ /* @__PURE__ */ jsx(TableCell, { className: "w-40", children: /* @__PURE__ */ jsx(
120
+ PostStateIcons,
121
+ {
122
+ post,
123
+ customControlFields,
124
+ usableFields
125
+ }
126
+ ) }),
114
127
  /* @__PURE__ */ jsx(TableCell, { className: "max-w-[200px]", children: title ? /* @__PURE__ */ jsx("p", { className: "truncate", children: title }) : /* @__PURE__ */ jsx(NoData, {}) }),
115
128
  /* @__PURE__ */ jsx(TableCell, { className: "max-w-[320px]", children: presentation.excerpt ? /* @__PURE__ */ jsx(
116
129
  TextDisplay,
@@ -7,7 +7,7 @@ import { resolveControlFieldLabel } from '../content/resolve-control-field-label
7
7
  const CONTROL_FIELDS = [
8
8
  {
9
9
  key: "isActive",
10
- label: "ui.control-fields.is-active.text",
10
+ label: "resources.post.is-public.text",
11
11
  icon: Eye
12
12
  },
13
13
  {
@@ -47,6 +47,10 @@ function ControlFieldsFilters({
47
47
  value: controlFields[key] ?? null,
48
48
  onChange: (value) => setControlFields((previous) => ({ ...previous, [key]: value })),
49
49
  label: t(label),
50
+ ...key === "isActive" ? {
51
+ trueLabel: t("resources.post.published.text"),
52
+ falseLabel: t("resources.post.unpublished.text")
53
+ } : {},
50
54
  icon: Icon
51
55
  },
52
56
  key
@@ -41,10 +41,13 @@ import { PostStateIcons } from '../post-state-icons.js';
41
41
 
42
42
  const WIDTH = "200px";
43
43
  function createTagCard({
44
- defaultWebLocale
44
+ defaultWebLocale,
45
+ customControlFields: defaultCustomControlFields = []
45
46
  }) {
46
47
  return function TagCard({
47
48
  post: tag,
49
+ customControlFields = defaultCustomControlFields,
50
+ usableFields,
48
51
  // link
49
52
  openNewTab,
50
53
  // pick
@@ -63,7 +66,14 @@ function createTagCard({
63
66
  {
64
67
  interaction: onSelect ? { type: "select", isSelected: !!isPicked, onSelect } : { type: "navigate", href, openNewTab },
65
68
  identity: { icon: /* @__PURE__ */ jsx(Tag, {}) },
66
- state: /* @__PURE__ */ jsx(PostStateIcons, { post: tag }),
69
+ state: /* @__PURE__ */ jsx(
70
+ PostStateIcons,
71
+ {
72
+ post: tag,
73
+ customControlFields,
74
+ usableFields
75
+ }
76
+ ),
67
77
  title: tagT.title || /* @__PURE__ */ jsx(NoData, {}),
68
78
  className,
69
79
  style: { width: WIDTH }
@@ -43,6 +43,8 @@ import { PostStateIcons } from '../post-state-icons.js';
43
43
  function TagTable({
44
44
  posts: tags,
45
45
  contentLocale,
46
+ customControlFields,
47
+ usableFields,
46
48
  pickedItems,
47
49
  onSelect,
48
50
  openNewTab
@@ -98,7 +100,14 @@ function TagTable({
98
100
  children: [
99
101
  isSelecting && /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx("div", { className: "flex-center text-muted-foreground/60", children: isPicked ? /* @__PURE__ */ jsx(Tick, { isPicked: true }) : /* @__PURE__ */ jsx(Circle, { "aria-hidden": true, className: "size-5!" }) }) }),
100
102
  /* @__PURE__ */ jsx(TableCell, { className: "border-r", children: /* @__PURE__ */ jsx("div", { className: "flex-center", children: /* @__PURE__ */ jsx(Tag, { className: "text-muted-foreground" }) }) }),
101
- /* @__PURE__ */ jsx(TableCell, { className: "w-40", children: /* @__PURE__ */ jsx(PostStateIcons, { post: tag }) }),
103
+ /* @__PURE__ */ jsx(TableCell, { className: "w-40", children: /* @__PURE__ */ jsx(
104
+ PostStateIcons,
105
+ {
106
+ post: tag,
107
+ customControlFields,
108
+ usableFields
109
+ }
110
+ ) }),
102
111
  /* @__PURE__ */ jsx(TableCell, { className: "max-w-[200px]", children: title ? /* @__PURE__ */ jsx("p", { className: "truncate", children: title }) : /* @__PURE__ */ jsx(NoData, {}) })
103
112
  ]
104
113
  },