sitero 0.6.0 → 0.7.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 (368) 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 -3
  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 +7 -2
  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 +4 -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 +5 -3
  33. package/dist/src/cms/client/interfaces/components/resources/post/category/category-table.js +6 -4
  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 +5 -3
  38. package/dist/src/cms/client/interfaces/components/resources/post/post-list.js +45 -10
  39. package/dist/src/cms/client/interfaces/components/resources/post/post-state-icons.js +17 -1
  40. package/dist/src/cms/client/interfaces/components/resources/post/post-table.js +8 -4
  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/seo-metadata/seo-form/seo-form.js +90 -67
  43. package/dist/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.js +11 -1
  44. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.js +1 -1
  45. package/dist/src/cms/client/interfaces/components/ui/blocks/list-container/pagination.js +9 -9
  46. package/dist/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.js +15 -3
  47. package/dist/src/cms/client/interfaces/components/ui/features/accordion/accordion.js +5 -7
  48. package/dist/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-display.js +1 -1
  49. package/dist/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-input.js +1 -1
  50. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/edit/page.js +11 -11
  51. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/page.js +12 -16
  52. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/_id_/relations/page.js +6 -2
  53. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/category/create/page.js +15 -16
  54. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/page.js +18 -41
  55. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/edit/page.js +10 -11
  56. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/page.js +11 -16
  57. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/_id_/relations/page.js +1 -0
  58. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/post/create/page.js +14 -16
  59. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/edit/page.js +11 -11
  60. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/page.js +12 -16
  61. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/_id_/relations/page.js +1 -0
  62. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicSlug_/subcategory/create/page.js +15 -16
  63. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/page.js +18 -32
  64. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/edit/page.js +2 -2
  65. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/page.js +9 -9
  66. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/_id_/relations/page.js +6 -2
  67. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/create/page.js +2 -2
  68. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.js +204 -0
  69. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/admin-refresh-token/page.js +1 -0
  70. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/page.js +1 -0
  71. package/dist/src/cms/client/interfaces/pages/dashboard/system/access/admin/_id_/relations/page.js +8 -3
  72. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/page.js +3 -2
  73. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/relations/page.js +41 -30
  74. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/delete-many/page.js +3 -3
  75. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/page.js +1 -1
  76. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.js +3 -2
  77. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/edit/page.js +19 -11
  78. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/page.js +23 -10
  79. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/page.js +7 -7
  80. package/dist/src/cms/server/create-cms-server.js +2 -0
  81. package/dist/src/cms/server/resources/page/actions.js +31 -0
  82. package/dist/src/cms/server/resources/post/actions.js +27 -6
  83. package/dist/src/cms/server/resources/seo-metadata/actions.js +7 -16
  84. package/dist/src/config/content-ui.js +24 -0
  85. package/dist/src/config/topics.js +1 -1
  86. package/dist/src/constants/paths/cms-paths.js +2 -2
  87. package/dist/src/core/infrastructure/prisma/file/include.js +44 -0
  88. package/dist/src/core/infrastructure/prisma/file/mappers.js +51 -3
  89. package/dist/src/core/infrastructure/prisma/helpers/active-file-references.js +2 -1
  90. package/dist/src/core/infrastructure/prisma/page/include.js +20 -0
  91. package/dist/src/core/infrastructure/prisma/page/mappers.js +44 -0
  92. package/dist/src/core/infrastructure/prisma/page/page-prisma-ports.js +91 -0
  93. package/dist/src/core/infrastructure/prisma/post/include.js +2 -5
  94. package/dist/src/core/infrastructure/prisma/post/lifecycle.js +108 -0
  95. package/dist/src/core/infrastructure/prisma/post/mappers.js +0 -2
  96. package/dist/src/core/infrastructure/prisma/post/post-prisma-ports.js +76 -24
  97. package/dist/src/core/infrastructure/prisma/post/read-scope.js +45 -0
  98. package/dist/src/core/infrastructure/prisma/seo-metadata/mappers.js +6 -1
  99. package/dist/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.js +32 -11
  100. package/dist/src/core/seeders/page/seeder.js +9 -29
  101. package/dist/src/core/seeders/seed.js +0 -3
  102. package/dist/src/core/sitero-server/create-sitero-server.js +10 -0
  103. package/dist/src/web/server/create-web-server.js +5 -1
  104. package/dist/src/web/server/resources/page/actions.js +20 -0
  105. package/dist/src/web/server/resources/post/actions.js +3 -13
  106. package/dist/src/web/server/seo/sitemap/get-page-items.js +7 -6
  107. package/dist/src/web/server/seo/sitemap/get-post-items.js +2 -2
  108. package/dist/src/web/server/seo/sitemap/get-subcategory-items.js +1 -1
  109. package/dist/types/export/cms/client/components/index.d.ts +3 -0
  110. package/dist/types/export/cms/client/components/index.d.ts.map +1 -1
  111. package/dist/types/export/cms/client/index.d.ts +2 -0
  112. package/dist/types/export/cms/client/index.d.ts.map +1 -1
  113. package/dist/types/export/cms/client/pages/index.d.ts +2 -1
  114. package/dist/types/export/cms/client/pages/index.d.ts.map +1 -1
  115. package/dist/types/export/cms/server/index.d.ts +2 -1
  116. package/dist/types/export/cms/server/index.d.ts.map +1 -1
  117. package/dist/types/export/index.d.ts +1 -1
  118. package/dist/types/export/index.d.ts.map +1 -1
  119. package/dist/types/export/web/server/index.d.ts +2 -1
  120. package/dist/types/export/web/server/index.d.ts.map +1 -1
  121. package/dist/types/src/cms/client/applications/create-applications.d.ts.map +1 -1
  122. package/dist/types/src/cms/client/applications/index.d.ts +1 -0
  123. package/dist/types/src/cms/client/applications/index.d.ts.map +1 -1
  124. package/dist/types/src/cms/client/applications/resources/index.d.ts +1 -0
  125. package/dist/types/src/cms/client/applications/resources/index.d.ts.map +1 -1
  126. package/dist/types/src/cms/client/applications/resources/page/form-data.d.ts +21 -0
  127. package/dist/types/src/cms/client/applications/resources/page/form-data.d.ts.map +1 -0
  128. package/dist/types/src/cms/client/applications/resources/page/index.d.ts +3 -0
  129. package/dist/types/src/cms/client/applications/resources/page/index.d.ts.map +1 -0
  130. package/dist/types/src/cms/client/applications/resources/page/use-page-update-form-data.d.ts +12 -0
  131. package/dist/types/src/cms/client/applications/resources/page/use-page-update-form-data.d.ts.map +1 -0
  132. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts +3 -5
  133. package/dist/types/src/cms/client/applications/resources/post/use-create-form-data.d.ts.map +1 -1
  134. package/dist/types/src/cms/client/applications/resources/post/use-update-form-data.d.ts.map +1 -1
  135. package/dist/types/src/cms/client/applications/resources/seo-metadata/build-seo-metadata-translations.d.ts +6 -0
  136. package/dist/types/src/cms/client/applications/resources/seo-metadata/build-seo-metadata-translations.d.ts.map +1 -0
  137. package/dist/types/src/cms/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts +5 -4
  138. package/dist/types/src/cms/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts.map +1 -1
  139. package/dist/types/src/cms/client/applications/types.d.ts +2 -1
  140. package/dist/types/src/cms/client/applications/types.d.ts.map +1 -1
  141. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts +3 -4
  142. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts.map +1 -1
  143. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts +86 -0
  144. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/index.d.ts.map +1 -1
  145. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/file.d.ts +3 -0
  146. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/file.d.ts.map +1 -1
  147. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts +71 -0
  148. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/index.d.ts.map +1 -1
  149. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/post.d.ts +51 -0
  150. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/resources/post.d.ts.map +1 -1
  151. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/ui/index.d.ts +15 -0
  152. package/dist/types/src/cms/client/infrastructure/i18n/messages/en-US/ui/index.d.ts.map +1 -1
  153. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts +172 -0
  154. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts.map +1 -1
  155. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts +86 -0
  156. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/index.d.ts.map +1 -1
  157. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/file.d.ts +3 -0
  158. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/file.d.ts.map +1 -1
  159. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts +71 -0
  160. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/index.d.ts.map +1 -1
  161. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/post.d.ts +51 -0
  162. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/resources/post.d.ts.map +1 -1
  163. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/ui/index.d.ts +15 -0
  164. package/dist/types/src/cms/client/infrastructure/i18n/messages/zh-TW/ui/index.d.ts.map +1 -1
  165. package/dist/types/src/cms/client/infrastructure/operation-result/presentation/message.d.ts.map +1 -1
  166. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts +6 -3
  167. package/dist/types/src/cms/client/interfaces/components/create-components.d.ts.map +1 -1
  168. package/dist/types/src/cms/client/interfaces/components/create-page-contents.d.ts +30 -0
  169. package/dist/types/src/cms/client/interfaces/components/create-page-contents.d.ts.map +1 -0
  170. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts +1 -1
  171. package/dist/types/src/cms/client/interfaces/components/resources/index.d.ts.map +1 -1
  172. package/dist/types/src/cms/client/interfaces/components/resources/page/content/field-groups.d.ts +3 -0
  173. package/dist/types/src/cms/client/interfaces/components/resources/page/content/field-groups.d.ts.map +1 -0
  174. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-edit-content.d.ts +14 -0
  175. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-edit-content.d.ts.map +1 -0
  176. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-show-content.d.ts +7 -0
  177. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-show-content.d.ts.map +1 -0
  178. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts +27 -0
  179. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts.map +1 -0
  180. package/dist/types/src/cms/client/interfaces/components/resources/page/index.d.ts +4 -0
  181. package/dist/types/src/cms/client/interfaces/components/resources/page/index.d.ts.map +1 -0
  182. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts +3 -1
  183. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts.map +1 -1
  184. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts +1 -1
  185. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts.map +1 -1
  186. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts +3 -5
  187. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts.map +1 -1
  188. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts.map +1 -1
  189. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-show-content.d.ts.map +1 -1
  190. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts +3 -1
  191. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts.map +1 -1
  192. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts +6 -3
  193. package/dist/types/src/cms/client/interfaces/components/resources/post/post-list.d.ts.map +1 -1
  194. package/dist/types/src/cms/client/interfaces/components/resources/post/post-state-icons.d.ts.map +1 -1
  195. package/dist/types/src/cms/client/interfaces/components/resources/post/post-table.d.ts +3 -1
  196. package/dist/types/src/cms/client/interfaces/components/resources/post/post-table.d.ts.map +1 -1
  197. package/dist/types/src/cms/client/interfaces/components/resources/post/search/control-fields-filters.d.ts.map +1 -1
  198. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts +5 -2
  199. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts.map +1 -1
  200. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts +2 -1
  201. package/dist/types/src/cms/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts.map +1 -1
  202. package/dist/types/src/cms/client/interfaces/components/ui/blocks/list-container/list-container.d.ts.map +1 -1
  203. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.d.ts +3 -1
  204. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion-header.d.ts.map +1 -1
  205. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion.d.ts +2 -1
  206. package/dist/types/src/cms/client/interfaces/components/ui/features/accordion/accordion.d.ts.map +1 -1
  207. package/dist/types/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-display.d.ts.map +1 -1
  208. package/dist/types/src/cms/client/interfaces/components/ui/form/control-fields/control-fields-input.d.ts.map +1 -1
  209. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts +1 -1
  210. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/edit/page.d.ts.map +1 -1
  211. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts +3 -1
  212. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/page.d.ts.map +1 -1
  213. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/relations/page.d.ts +3 -1
  214. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/[id]/relations/page.d.ts.map +1 -1
  215. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts +4 -7
  216. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/category/create/page.d.ts.map +1 -1
  217. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts +1 -4
  218. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/page.d.ts.map +1 -1
  219. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/edit/page.d.ts.map +1 -1
  220. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/page.d.ts.map +1 -1
  221. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/[id]/relations/page.d.ts.map +1 -1
  222. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts +4 -7
  223. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/post/create/page.d.ts.map +1 -1
  224. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts +1 -1
  225. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/edit/page.d.ts.map +1 -1
  226. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts +3 -1
  227. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/page.d.ts.map +1 -1
  228. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/[id]/relations/page.d.ts.map +1 -1
  229. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts +4 -7
  230. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicSlug]/subcategory/create/page.d.ts.map +1 -1
  231. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts +1 -3
  232. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts.map +1 -1
  233. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/page.d.ts.map +1 -1
  234. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/relations/page.d.ts +3 -1
  235. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/tag/[id]/relations/page.d.ts.map +1 -1
  236. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/index.d.ts +2 -0
  237. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/index.d.ts.map +1 -0
  238. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.d.ts +18 -0
  239. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/trash/page.d.ts.map +1 -0
  240. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/relations/page.d.ts +3 -1
  241. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/access/admin/[id]/relations/page.d.ts.map +1 -1
  242. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/file/[id]/relations/page.d.ts +5 -6
  243. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/file/[id]/relations/page.d.ts.map +1 -1
  244. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/trash/page.d.ts.map +1 -1
  245. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/edit/page.d.ts +7 -9
  246. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/edit/page.d.ts.map +1 -1
  247. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/page.d.ts +7 -9
  248. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/page.d.ts.map +1 -1
  249. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/page.d.ts +3 -3
  250. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/page.d.ts.map +1 -1
  251. package/dist/types/src/cms/client/interfaces/pages/index.d.ts +1 -1
  252. package/dist/types/src/cms/client/interfaces/pages/index.d.ts.map +1 -1
  253. package/dist/types/src/cms/contracts/resources/page/actions.d.ts +7 -0
  254. package/dist/types/src/cms/contracts/resources/page/actions.d.ts.map +1 -0
  255. package/dist/types/src/cms/contracts/resources/post/actions.d.ts +2 -0
  256. package/dist/types/src/cms/contracts/resources/post/actions.d.ts.map +1 -1
  257. package/dist/types/src/cms/contracts/resources/post/form-data.d.ts +1 -1
  258. package/dist/types/src/cms/contracts/resources/post/form-data.d.ts.map +1 -1
  259. package/dist/types/src/cms/contracts/resources/seo-metadata/form-data.d.ts +2 -2
  260. package/dist/types/src/cms/contracts/resources/seo-metadata/form-data.d.ts.map +1 -1
  261. package/dist/types/src/cms/server/create-cms-server.d.ts +7 -0
  262. package/dist/types/src/cms/server/create-cms-server.d.ts.map +1 -1
  263. package/dist/types/src/cms/server/index.d.ts +1 -1
  264. package/dist/types/src/cms/server/index.d.ts.map +1 -1
  265. package/dist/types/src/cms/server/resources/index.d.ts +1 -0
  266. package/dist/types/src/cms/server/resources/index.d.ts.map +1 -1
  267. package/dist/types/src/cms/server/resources/page/actions.d.ts +8 -0
  268. package/dist/types/src/cms/server/resources/page/actions.d.ts.map +1 -0
  269. package/dist/types/src/cms/server/resources/post/actions.d.ts +2 -0
  270. package/dist/types/src/cms/server/resources/post/actions.d.ts.map +1 -1
  271. package/dist/types/src/cms/server/resources/seo-metadata/actions.d.ts.map +1 -1
  272. package/dist/types/src/config/content-ui.d.ts +14 -0
  273. package/dist/types/src/config/content-ui.d.ts.map +1 -0
  274. package/dist/types/src/config/index.d.ts +2 -0
  275. package/dist/types/src/config/index.d.ts.map +1 -1
  276. package/dist/types/src/config/page.d.ts +4 -0
  277. package/dist/types/src/config/page.d.ts.map +1 -0
  278. package/dist/types/src/config/topics.d.ts +2 -2
  279. package/dist/types/src/config/topics.d.ts.map +1 -1
  280. package/dist/types/src/constants/paths/cms-paths.d.ts +3 -3
  281. package/dist/types/src/core/infrastructure/index.d.ts +1 -0
  282. package/dist/types/src/core/infrastructure/index.d.ts.map +1 -1
  283. package/dist/types/src/core/infrastructure/prisma/file/include.d.ts +121 -0
  284. package/dist/types/src/core/infrastructure/prisma/file/include.d.ts.map +1 -1
  285. package/dist/types/src/core/infrastructure/prisma/file/mappers.d.ts.map +1 -1
  286. package/dist/types/src/core/infrastructure/prisma/helpers/active-file-references.d.ts +1 -1
  287. package/dist/types/src/core/infrastructure/prisma/helpers/active-file-references.d.ts.map +1 -1
  288. package/dist/types/src/core/infrastructure/prisma/index.d.ts +1 -0
  289. package/dist/types/src/core/infrastructure/prisma/index.d.ts.map +1 -1
  290. package/dist/types/src/core/infrastructure/prisma/page/include.d.ts +63 -0
  291. package/dist/types/src/core/infrastructure/prisma/page/include.d.ts.map +1 -0
  292. package/dist/types/src/core/infrastructure/prisma/page/index.d.ts +4 -0
  293. package/dist/types/src/core/infrastructure/prisma/page/index.d.ts.map +1 -0
  294. package/dist/types/src/core/infrastructure/prisma/page/mappers.d.ts +9 -0
  295. package/dist/types/src/core/infrastructure/prisma/page/mappers.d.ts.map +1 -0
  296. package/dist/types/src/core/infrastructure/prisma/page/page-prisma-ports.d.ts +7 -0
  297. package/dist/types/src/core/infrastructure/prisma/page/page-prisma-ports.d.ts.map +1 -0
  298. package/dist/types/src/core/infrastructure/prisma/page/types.d.ts +10 -0
  299. package/dist/types/src/core/infrastructure/prisma/page/types.d.ts.map +1 -0
  300. package/dist/types/src/core/infrastructure/prisma/post/include.d.ts +0 -29
  301. package/dist/types/src/core/infrastructure/prisma/post/include.d.ts.map +1 -1
  302. package/dist/types/src/core/infrastructure/prisma/post/lifecycle.d.ts +66 -0
  303. package/dist/types/src/core/infrastructure/prisma/post/lifecycle.d.ts.map +1 -0
  304. package/dist/types/src/core/infrastructure/prisma/post/mappers.d.ts.map +1 -1
  305. package/dist/types/src/core/infrastructure/prisma/post/post-prisma-ports.d.ts.map +1 -1
  306. package/dist/types/src/core/infrastructure/prisma/post/read-scope.d.ts +271 -0
  307. package/dist/types/src/core/infrastructure/prisma/post/read-scope.d.ts.map +1 -0
  308. package/dist/types/src/core/infrastructure/prisma/seo-metadata/mappers.d.ts +1 -1
  309. package/dist/types/src/core/infrastructure/prisma/seo-metadata/mappers.d.ts.map +1 -1
  310. package/dist/types/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.d.ts +2 -2
  311. package/dist/types/src/core/infrastructure/prisma/seo-metadata/seo-metadata-prisma-ports.d.ts.map +1 -1
  312. package/dist/types/src/core/seeders/page/seeder.d.ts +3 -3
  313. package/dist/types/src/core/seeders/page/seeder.d.ts.map +1 -1
  314. package/dist/types/src/core/seeders/seed.d.ts +2 -3
  315. package/dist/types/src/core/seeders/seed.d.ts.map +1 -1
  316. package/dist/types/src/core/sitero-server/create-sitero-server.d.ts.map +1 -1
  317. package/dist/types/src/core/sitero-server/types.d.ts +2 -0
  318. package/dist/types/src/core/sitero-server/types.d.ts.map +1 -1
  319. package/dist/types/src/shared/list-item.d.ts +1 -0
  320. package/dist/types/src/shared/list-item.d.ts.map +1 -1
  321. package/dist/types/src/web/contracts/index.d.ts +1 -0
  322. package/dist/types/src/web/contracts/index.d.ts.map +1 -1
  323. package/dist/types/src/web/contracts/resources/page/actions.d.ts +5 -0
  324. package/dist/types/src/web/contracts/resources/page/actions.d.ts.map +1 -0
  325. package/dist/types/src/web/contracts/resources/post/actions.d.ts +1 -1
  326. package/dist/types/src/web/contracts/resources/post/actions.d.ts.map +1 -1
  327. package/dist/types/src/web/server/create-web-server.d.ts.map +1 -1
  328. package/dist/types/src/web/server/index.d.ts +1 -1
  329. package/dist/types/src/web/server/index.d.ts.map +1 -1
  330. package/dist/types/src/web/server/resources/index.d.ts +1 -0
  331. package/dist/types/src/web/server/resources/index.d.ts.map +1 -1
  332. package/dist/types/src/web/server/resources/page/actions.d.ts +17 -0
  333. package/dist/types/src/web/server/resources/page/actions.d.ts.map +1 -0
  334. package/dist/types/src/web/server/resources/post/actions.d.ts +1 -6
  335. package/dist/types/src/web/server/resources/post/actions.d.ts.map +1 -1
  336. package/dist/types/src/web/server/seo/metadata/build-metadata.d.ts +5 -2
  337. package/dist/types/src/web/server/seo/metadata/build-metadata.d.ts.map +1 -1
  338. package/dist/types/src/web/server/seo/sitemap/build-entries.d.ts +2 -2
  339. package/dist/types/src/web/server/seo/sitemap/build-entries.d.ts.map +1 -1
  340. package/dist/types/src/web/server/seo/sitemap/get-page-items.d.ts +6 -2
  341. package/dist/types/src/web/server/seo/sitemap/get-page-items.d.ts.map +1 -1
  342. package/dist/types/src/web/server/seo/sitemap/get-post-items.d.ts.map +1 -1
  343. package/dist/types/src/web/server/seo/sitemap/get-subcategory-items.d.ts.map +1 -1
  344. package/dist/types/src/web/server/types.d.ts +6 -2
  345. package/dist/types/src/web/server/types.d.ts.map +1 -1
  346. package/package.json +3 -3
  347. package/dist/src/cms/client/interfaces/components/resources/post/topic/topic-card.js +0 -81
  348. package/dist/src/cms/client/interfaces/components/resources/post/topic/topic-table.js +0 -120
  349. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/_id_/edit/page.js +0 -110
  350. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/_id_/page.js +0 -161
  351. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.js +0 -103
  352. package/dist/src/core/seeders/topic/seeder.js +0 -47
  353. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts +0 -3
  354. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/index.d.ts.map +0 -1
  355. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts +0 -5
  356. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-card.d.ts.map +0 -1
  357. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts +0 -3
  358. package/dist/types/src/cms/client/interfaces/components/resources/post/topic/topic-table.d.ts.map +0 -1
  359. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts +0 -20
  360. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/edit/page.d.ts.map +0 -1
  361. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts +0 -20
  362. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/[id]/page.d.ts.map +0 -1
  363. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts +0 -4
  364. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/index.d.ts.map +0 -1
  365. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts +0 -14
  366. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/topic/page.d.ts.map +0 -1
  367. package/dist/types/src/core/seeders/topic/seeder.d.ts +0 -10
  368. package/dist/types/src/core/seeders/topic/seeder.d.ts.map +0 -1
@@ -0,0 +1,204 @@
1
+ "use client";
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { useTranslator } from 'intor/react';
4
+ import { Trash2, FileSymlink } from 'lucide-react';
5
+ import { useSearchParams } from 'next/navigation';
6
+ import { useState } from 'react';
7
+ import 'zod';
8
+ import { useCmsCommand } from '../../../../../../infrastructure/operation-result/use-cms-command.js';
9
+ import 'ua-parser-js';
10
+ import '../../../../../../../../shared/client/react-query/client.js';
11
+ import '@tanstack/react-query';
12
+ import { PageHeaderLayout } from '../../../../../components/ui/blocks/page-header/page-header-layout.js';
13
+ import '@radix-ui/react-avatar';
14
+ import 'mime-types';
15
+ import 'sitero-domain';
16
+ import 'clsx';
17
+ import 'tailwind-merge';
18
+ import '../../../../../components/shadcn/badge.js';
19
+ import '../../../../../components/shadcn/button.js';
20
+ import '@radix-ui/react-collapsible';
21
+ import '@radix-ui/react-dialog';
22
+ import '@radix-ui/react-dropdown-menu';
23
+ import '../../../../../components/shadcn/input-group.js';
24
+ import '@radix-ui/react-label';
25
+ import '@radix-ui/react-radio-group';
26
+ import '@radix-ui/react-select';
27
+ import '@radix-ui/react-separator';
28
+ import '../../../../../components/shadcn/sidebar/sidebar.js';
29
+ import 'next-themes';
30
+ import 'sonner';
31
+ import '@radix-ui/react-tabs';
32
+ import '@radix-ui/react-tooltip';
33
+ import { ActionButton } from '../../../../../components/ui/buttons/action-button.js';
34
+ import 'next/link';
35
+ import { ReturnButton } from '../../../../../components/ui/buttons/return-button.js';
36
+ import '../../../../../../../../constants/paths/redirect.js';
37
+ import '../../../../../../../../constants/cms-locale.js';
38
+ import '../../../../../components/ui/inputs/input.js';
39
+ import '../../../../../components/ui/inputs/textarea.js';
40
+ import '../../../../../components/ui/inputs/switch-input.js';
41
+ import '../../../../../components/ui/inputs/password-input.js';
42
+ import { Accordion } from '../../../../../components/ui/features/accordion/accordion.js';
43
+ import { AccordionContainer } from '../../../../../components/ui/features/accordion/accordion-container.js';
44
+ import 'next/image';
45
+ import '../../../../../../infrastructure/admin-session/admin-context.js';
46
+ import 'intor/next';
47
+ import { ContentContainer } from '../../../../../components/ui/layouts/content-container.js';
48
+
49
+ function createPostTrashPage({
50
+ contentUi,
51
+ PostList,
52
+ CategoryCard,
53
+ CategoryTable,
54
+ TagCard,
55
+ TagTable,
56
+ postRestoreAction,
57
+ postPurgeAction
58
+ }) {
59
+ const SubcategoryCard = (props) => /* @__PURE__ */ jsx(CategoryCard, { ...props, isSubcategory: true });
60
+ const SubcategoryTable = (props) => /* @__PURE__ */ jsx(CategoryTable, { ...props, isSubcategory: true });
61
+ return function PostTrashPage() {
62
+ const { t } = useTranslator();
63
+ const [postStates, setPostStates] = useState(
64
+ {}
65
+ );
66
+ const [categoryStates, setCategoryStates] = useState({});
67
+ const [subcategoryStates, setSubcategoryStates] = useState({});
68
+ const [tagStates, setTagStates] = useState(
69
+ {}
70
+ );
71
+ const [selectedId, setSelectedId] = useState(null);
72
+ const filterId = useSearchParams().get("id");
73
+ const groups = [
74
+ {
75
+ type: "POST",
76
+ title: t("resources.post.text"),
77
+ states: postStates,
78
+ setStates: setPostStates
79
+ },
80
+ {
81
+ type: "CATEGORY",
82
+ title: t("resources.category.text"),
83
+ states: categoryStates,
84
+ setStates: setCategoryStates,
85
+ Card: CategoryCard,
86
+ Table: CategoryTable
87
+ },
88
+ {
89
+ type: "SUBCATEGORY",
90
+ title: t("resources.subcategory.text"),
91
+ states: subcategoryStates,
92
+ setStates: setSubcategoryStates,
93
+ Card: SubcategoryCard,
94
+ Table: SubcategoryTable
95
+ },
96
+ {
97
+ type: "TAG",
98
+ title: t("resources.tag.text"),
99
+ states: tagStates,
100
+ setStates: setTagStates,
101
+ Card: TagCard,
102
+ Table: TagTable
103
+ }
104
+ ];
105
+ const visibleGroups = groups.filter(
106
+ (group) => group.type === "CATEGORY" ? contentUi?.hasCategory ?? true : group.type === "SUBCATEGORY" ? contentUi?.hasSubcategory ?? true : group.type === "TAG" ? contentUi?.hasTag ?? true : true
107
+ );
108
+ const selectedGroup = visibleGroups.find(
109
+ ({ states }) => states.items?.some((post) => post.id === selectedId)
110
+ );
111
+ const selectedPost = selectedGroup?.states.items?.find(
112
+ (post) => post.id === selectedId
113
+ );
114
+ const onSuccess = () => setSelectedId(null);
115
+ const onSettled = () => {
116
+ for (const group of visibleGroups) void group.states.refetch?.();
117
+ };
118
+ const restore = useCmsCommand((id) => postRestoreAction({ id }), {
119
+ onSuccess,
120
+ onSettled
121
+ });
122
+ const purge = useCmsCommand((id) => postPurgeAction({ id }), {
123
+ onSuccess,
124
+ onSettled
125
+ });
126
+ const isProcessing = restore.isPending || purge.isPending;
127
+ const cannotAct = isProcessing || !!selectedGroup?.states.isFetching || !!selectedGroup?.states.isError || !selectedPost;
128
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
129
+ /* @__PURE__ */ jsx(
130
+ PageHeaderLayout,
131
+ {
132
+ navigation: /* @__PURE__ */ jsx(ReturnButton, { pushToParent: true }),
133
+ titleProps: { icon: Trash2, title: t("main.trash.text") },
134
+ utilities: /* @__PURE__ */ jsxs(Fragment, { children: [
135
+ /* @__PURE__ */ jsx(
136
+ ActionButton,
137
+ {
138
+ variant: "success",
139
+ icon: FileSymlink,
140
+ isLoading: restore.isPending,
141
+ isDisabled: cannotAct,
142
+ onClick: () => {
143
+ if (cannotAct || !selectedPost || !confirm(t("resources.post.confirm-restore.text")))
144
+ return;
145
+ void restore.execute(selectedPost.id);
146
+ },
147
+ children: t("ui.restore.text")
148
+ }
149
+ ),
150
+ /* @__PURE__ */ jsx(
151
+ ActionButton,
152
+ {
153
+ variant: "destructive",
154
+ icon: Trash2,
155
+ isLoading: purge.isPending,
156
+ isDisabled: cannotAct || !!selectedPost?.isLocked,
157
+ onClick: () => {
158
+ if (cannotAct || !selectedPost || selectedPost.isLocked || !confirm(t("ui.dialog.purge.text")))
159
+ return;
160
+ void purge.execute(selectedPost.id);
161
+ },
162
+ children: t("ui.purge.text")
163
+ }
164
+ )
165
+ ] })
166
+ }
167
+ ),
168
+ /* @__PURE__ */ jsx(ContentContainer, { children: /* @__PURE__ */ jsx(AccordionContainer, { children: visibleGroups.map((group) => /* @__PURE__ */ jsx(
169
+ Accordion,
170
+ {
171
+ hasBorder: true,
172
+ initialOpen: group.states.isFetching || group.states.count === void 0 ? void 0 : group.states.count > 0,
173
+ deps: [group.states.isFetching],
174
+ accordionHeaderProps: {
175
+ showCount: true,
176
+ count: group.states.count,
177
+ children: group.states.isError ? `${group.title} \xB7 ${t("ui.operation-error.unknown.text")}` : group.title
178
+ },
179
+ children: /* @__PURE__ */ jsx(
180
+ PostList,
181
+ {
182
+ isDeleted: true,
183
+ type: group.type,
184
+ ..."Card" in group ? { Card: group.Card, Table: group.Table } : {},
185
+ ...filterId ? { postIds: [filterId] } : {},
186
+ setListItemStates: group.setStates,
187
+ pickedItems: selectedPost ? [selectedPost] : [],
188
+ handleClick: (post) => {
189
+ if (isProcessing || group.states.isFetching) return;
190
+ setSelectedId(
191
+ (previous) => previous === post.id ? null : post.id
192
+ );
193
+ },
194
+ localKey: `post-trash-${group.type.toLowerCase()}`
195
+ }
196
+ )
197
+ },
198
+ group.type
199
+ )) }) })
200
+ ] });
201
+ };
202
+ }
203
+
204
+ export { createPostTrashPage };
@@ -45,6 +45,7 @@ import 'next/image';
45
45
  import { AdminRefreshTokenCard } from '../../../../../../../components/resources/admin/admin-refresh-tokens/admin-refresh-token-card.js';
46
46
  import 'intor/next';
47
47
  import { ContentContainer } from '../../../../../../../components/ui/layouts/content-container.js';
48
+ import '../../../../../../../components/resources/page/content/field-groups.js';
48
49
 
49
50
  function createAdminSessionsPage({
50
51
  adminRefreshTokenFindManyAction,
@@ -60,6 +60,7 @@ import { AdminSessionsLink } from '../../../../../../components/resources/admin/
60
60
  import 'intor/next';
61
61
  import { ContentContainer } from '../../../../../../components/ui/layouts/content-container.js';
62
62
  import { I18nDisplayField } from '../../../../../../components/ui/i18n/i18n-display-field.js';
63
+ import '../../../../../../components/resources/page/content/field-groups.js';
63
64
 
64
65
  function createAdminShowPage({
65
66
  allowField = () => true,
@@ -45,6 +45,7 @@ import 'zod';
45
45
  import { ContentContainer } from '../../../../../../../components/ui/layouts/content-container.js';
46
46
 
47
47
  function createAdminRelationsPage({
48
+ contentUi,
48
49
  PostList,
49
50
  CategoryCard,
50
51
  CategoryTable,
@@ -74,12 +75,13 @@ function createAdminRelationsPage({
74
75
  }
75
76
  ),
76
77
  /* @__PURE__ */ jsx(ContentContainer, { children: /* @__PURE__ */ jsxs(AccordionContainer, { children: [
77
- /* @__PURE__ */ jsx(
78
+ (contentUi?.hasCategory ?? true) && /* @__PURE__ */ jsx(
78
79
  Accordion,
79
80
  {
80
81
  hasBorder: true,
81
82
  deps: [categoryStates.isFetching],
82
83
  accordionHeaderProps: {
84
+ showCount: true,
83
85
  count: categoryStates.count,
84
86
  children: t("resources.category.text")
85
87
  },
@@ -97,12 +99,13 @@ function createAdminRelationsPage({
97
99
  )
98
100
  }
99
101
  ),
100
- /* @__PURE__ */ jsx(
102
+ (contentUi?.hasSubcategory ?? true) && /* @__PURE__ */ jsx(
101
103
  Accordion,
102
104
  {
103
105
  hasBorder: true,
104
106
  deps: [subcategoryStates.isFetching],
105
107
  accordionHeaderProps: {
108
+ showCount: true,
106
109
  count: subcategoryStates.count,
107
110
  children: t("resources.subcategory.text")
108
111
  },
@@ -126,6 +129,7 @@ function createAdminRelationsPage({
126
129
  hasBorder: true,
127
130
  deps: [postStates.isFetching],
128
131
  accordionHeaderProps: {
132
+ showCount: true,
129
133
  count: postStates.count,
130
134
  children: t("resources.post.text")
131
135
  },
@@ -141,12 +145,13 @@ function createAdminRelationsPage({
141
145
  )
142
146
  }
143
147
  ),
144
- /* @__PURE__ */ jsx(
148
+ (contentUi?.hasTag ?? true) && /* @__PURE__ */ jsx(
145
149
  Accordion,
146
150
  {
147
151
  hasBorder: true,
148
152
  deps: [tagStates.isFetching],
149
153
  accordionHeaderProps: {
154
+ showCount: true,
150
155
  count: tagStates.count,
151
156
  children: t("resources.tag.text")
152
157
  },
@@ -55,6 +55,7 @@ import { FileRelationsLink } from '../../../../../../components/resources/file/f
55
55
  import 'intor/next';
56
56
  import { ContentContainer } from '../../../../../../components/ui/layouts/content-container.js';
57
57
  import { I18nDisplayField } from '../../../../../../components/ui/i18n/i18n-display-field.js';
58
+ import '../../../../../../components/resources/page/content/field-groups.js';
58
59
 
59
60
  function createFileShowPage({
60
61
  webLocales,
@@ -131,12 +132,12 @@ function createFileShowPage({
131
132
  variant: "destructive",
132
133
  icon: Trash2,
133
134
  onClick: () => {
134
- if (!confirm(t("ui.dialog.confirm.text"))) return;
135
+ if (!confirm(t("ui.dialog.move-to-trash.text"))) return;
135
136
  void executeFileSoftDeleteAction();
136
137
  },
137
138
  isLoading: isRedirecting,
138
139
  isDisabled: isFetching || isDestructionBlocked,
139
- children: t("ui.destroy.text")
140
+ children: t("ui.move-to-trash.text")
140
141
  }
141
142
  )
142
143
  ] })
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { useTranslator } from 'intor/react';
4
- import { Network, Settings } from 'lucide-react';
4
+ import { Network, FileText, Settings } from 'lucide-react';
5
5
  import { useParams } from 'next/navigation';
6
6
  import { useState } from 'react';
7
7
  import { POST_TYPES } from 'sitero-domain';
@@ -50,14 +50,14 @@ import 'intor/next';
50
50
  import { ContentContainer } from '../../../../../../../components/ui/layouts/content-container.js';
51
51
 
52
52
  function createFileRelationsPage({
53
+ contentUi,
53
54
  configs: staticConfigs,
55
+ pages: staticPages,
54
56
  fileFindRelationsAction,
55
57
  AdminList,
56
58
  PostList,
57
59
  CategoryCard,
58
60
  CategoryTable,
59
- TopicCard,
60
- TopicTable,
61
61
  TagCard,
62
62
  TagTable
63
63
  }) {
@@ -75,7 +75,6 @@ function createFileRelationsPage({
75
75
  );
76
76
  const [adminStates, setAdminStates] = useState({});
77
77
  const [categoryStates, setCategoryStates] = useState({});
78
- const [topicStates, setTopicStates] = useState({});
79
78
  const [subcategoryStates, setSubcategoryStates] = useState({});
80
79
  const [postStates, setPostStates] = useState(
81
80
  {}
@@ -101,6 +100,7 @@ function createFileRelationsPage({
101
100
  hasBorder: true,
102
101
  deps: [adminStates.isFetching],
103
102
  accordionHeaderProps: {
103
+ showCount: true,
104
104
  count: adminStates.count ?? relations.adminIds.length,
105
105
  children: t("resources.admin.text")
106
106
  },
@@ -115,35 +115,13 @@ function createFileRelationsPage({
115
115
  )
116
116
  }
117
117
  ),
118
- /* @__PURE__ */ jsx(
119
- Accordion,
120
- {
121
- hasBorder: true,
122
- deps: [topicStates.isFetching],
123
- accordionHeaderProps: {
124
- count: topicStates.count ?? (relations.postIds.length === 0 ? 0 : void 0),
125
- children: t("resources.topic.text")
126
- },
127
- children: /* @__PURE__ */ jsx(
128
- PostList,
129
- {
130
- postIds: relations.postIds,
131
- type: POST_TYPES.TOPIC,
132
- Card: TopicCard,
133
- Table: TopicTable,
134
- openNewTab: true,
135
- setListItemStates: setTopicStates,
136
- localKey: "file-related-topics"
137
- }
138
- )
139
- }
140
- ),
141
- /* @__PURE__ */ jsx(
118
+ (contentUi?.hasCategory ?? true) && /* @__PURE__ */ jsx(
142
119
  Accordion,
143
120
  {
144
121
  hasBorder: true,
145
122
  deps: [categoryStates.isFetching],
146
123
  accordionHeaderProps: {
124
+ showCount: true,
147
125
  count: categoryStates.count ?? (relations.postIds.length === 0 ? 0 : void 0),
148
126
  children: t("resources.category.text")
149
127
  },
@@ -161,12 +139,13 @@ function createFileRelationsPage({
161
139
  )
162
140
  }
163
141
  ),
164
- /* @__PURE__ */ jsx(
142
+ (contentUi?.hasSubcategory ?? true) && /* @__PURE__ */ jsx(
165
143
  Accordion,
166
144
  {
167
145
  hasBorder: true,
168
146
  deps: [subcategoryStates.isFetching],
169
147
  accordionHeaderProps: {
148
+ showCount: true,
170
149
  count: subcategoryStates.count ?? (relations.postIds.length === 0 ? 0 : void 0),
171
150
  children: t("resources.subcategory.text")
172
151
  },
@@ -190,6 +169,7 @@ function createFileRelationsPage({
190
169
  hasBorder: true,
191
170
  deps: [postStates.isFetching],
192
171
  accordionHeaderProps: {
172
+ showCount: true,
193
173
  count: postStates.count ?? (relations.postIds.length === 0 ? 0 : void 0),
194
174
  children: t("resources.post.text")
195
175
  },
@@ -205,12 +185,13 @@ function createFileRelationsPage({
205
185
  )
206
186
  }
207
187
  ),
208
- /* @__PURE__ */ jsx(
188
+ (contentUi?.hasTag ?? true) && /* @__PURE__ */ jsx(
209
189
  Accordion,
210
190
  {
211
191
  hasBorder: true,
212
192
  deps: [tagStates.isFetching],
213
193
  accordionHeaderProps: {
194
+ showCount: true,
214
195
  count: tagStates.count ?? (relations.postIds.length === 0 ? 0 : void 0),
215
196
  children: t("resources.tag.text")
216
197
  },
@@ -233,6 +214,36 @@ function createFileRelationsPage({
233
214
  {
234
215
  hasBorder: true,
235
216
  accordionHeaderProps: {
217
+ showCount: true,
218
+ count: relations.pageKeys.length,
219
+ children: t("main.website-page.text")
220
+ },
221
+ children: relations.pageKeys.length ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-4", children: relations.pageKeys.map((key) => /* @__PURE__ */ jsx(
222
+ ResourceCard,
223
+ {
224
+ identity: { icon: /* @__PURE__ */ jsx(FileText, {}) },
225
+ interaction: {
226
+ type: "navigate",
227
+ href: joinUrl(
228
+ CMS_PATHS.website["website-page"].pathname,
229
+ key
230
+ ),
231
+ openNewTab: true
232
+ },
233
+ title: staticPages?.[key]?.title[locale] ?? key,
234
+ secondary: key,
235
+ style: { width: "200px" }
236
+ },
237
+ key
238
+ )) }) : /* @__PURE__ */ jsx(NoData, {})
239
+ }
240
+ ),
241
+ /* @__PURE__ */ jsx(
242
+ Accordion,
243
+ {
244
+ hasBorder: true,
245
+ accordionHeaderProps: {
246
+ showCount: true,
236
247
  count: relations.configSlugs.length,
237
248
  children: t("resources.config.text")
238
249
  },
@@ -120,7 +120,7 @@ function createFileDeleteManyPage({
120
120
  titleProps: {
121
121
  icon: Images,
122
122
  title: t("resources.file.text"),
123
- subtitle: t("ui.delete-many.text")
123
+ subtitle: t("ui.move-many-to-trash.text")
124
124
  },
125
125
  utilities: /* @__PURE__ */ jsxs(Fragment, { children: [
126
126
  /* @__PURE__ */ jsx(
@@ -149,12 +149,12 @@ function createFileDeleteManyPage({
149
149
  variant: "destructive",
150
150
  icon: Trash2,
151
151
  onClick: () => {
152
- if (!confirm(t("ui.dialog.confirm.text"))) return;
152
+ if (!confirm(t("ui.dialog.move-to-trash.text"))) return;
153
153
  void execute();
154
154
  },
155
155
  isLoading: isPending,
156
156
  isDisabled: isPending || pickedItems.length === 0,
157
- children: t("ui.destroy.text")
157
+ children: t("ui.move-to-trash.text")
158
158
  }
159
159
  )
160
160
  ] })
@@ -83,7 +83,7 @@ function createFileIndexPage({
83
83
  href: `${CMS_PATHS.system.storage.file.pathname}/delete-many`,
84
84
  variant: "outline",
85
85
  icon: Trash2,
86
- children: t("ui.delete-many.text")
86
+ children: t("ui.move-many-to-trash.text")
87
87
  }
88
88
  ) })
89
89
  }
@@ -176,7 +176,8 @@ function createTrashPage({
176
176
  variant: "success",
177
177
  icon: FileSymlink,
178
178
  onClick: () => {
179
- if (!confirm(t("ui.dialog.confirm.text"))) return;
179
+ if (!confirm(t("resources.file.confirm-restore.text")))
180
+ return;
180
181
  void restoreFn();
181
182
  },
182
183
  isLoading: isRestoring,
@@ -194,7 +195,7 @@ function createTrashPage({
194
195
  variant: "destructive",
195
196
  icon: Trash2,
196
197
  onClick: () => {
197
- if (!confirm(t("ui.dialog.confirm.text"))) return;
198
+ if (!confirm(t("ui.dialog.purge.text"))) return;
198
199
  void destroyFn();
199
200
  },
200
201
  isLoading: isDestroying,
@@ -2,7 +2,6 @@
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { useTranslator } from 'intor/react';
4
4
  import { useParams } from 'next/navigation';
5
- import { POST_TYPES } from 'sitero-domain';
6
5
  import 'zod';
7
6
  import 'sonner';
8
7
  import 'react';
@@ -10,10 +9,12 @@ import 'ua-parser-js';
10
9
  import '../../../../../../../../../shared/client/react-query/client.js';
11
10
  import '@tanstack/react-query';
12
11
  import { useCmsQuery } from '../../../../../../../infrastructure/operation-result/use-cms-query.js';
12
+ import { resolvePageFields, createAllowPageField } from '../../../../../../components/resources/page/content/types.js';
13
13
  import { PageHeaderLayout } from '../../../../../../components/ui/blocks/page-header/page-header-layout.js';
14
14
  import 'lucide-react';
15
15
  import '@radix-ui/react-avatar';
16
16
  import 'mime-types';
17
+ import 'sitero-domain';
17
18
  import 'clsx';
18
19
  import 'tailwind-merge';
19
20
  import '../../../../../../components/shadcn/badge.js';
@@ -41,9 +42,12 @@ import '../../../../../../components/ui/inputs/password-input.js';
41
42
 
42
43
  function createWebsitePageEditPage({
43
44
  pages: staticPages,
44
- postFindDetailAction,
45
- renderPostEditContent
45
+ pageFindDetailAction,
46
+ renderPageEditContent,
47
+ PageEditContent,
48
+ fieldRules
46
49
  }) {
50
+ const allowField = createAllowPageField(fieldRules);
47
51
  return function WebsitePageEditPage() {
48
52
  const { locale } = useTranslator();
49
53
  const { slug } = useParams();
@@ -52,10 +56,18 @@ function createWebsitePageEditPage({
52
56
  isFetching,
53
57
  isNotFound
54
58
  } = useCmsQuery(
55
- () => postFindDetailAction({ type: POST_TYPES.PAGE, slug }),
56
- ["postFindDetailAction", POST_TYPES.PAGE, slug],
57
- { select: (data) => data?.post }
59
+ () => pageFindDetailAction({ key: slug }),
60
+ ["pageFindDetailAction", slug],
61
+ { select: (data) => data?.page }
58
62
  );
63
+ const contentProps = {
64
+ page,
65
+ pageKey: slug,
66
+ fields: resolvePageFields(fieldRules, slug),
67
+ isFetching,
68
+ isNotFound,
69
+ allowField: (params) => allowField({ ...params, pageKey: params.pageKey ?? slug })
70
+ };
59
71
  return /* @__PURE__ */ jsxs(Fragment, { children: [
60
72
  /* @__PURE__ */ jsx(
61
73
  PageHeaderLayout,
@@ -67,11 +79,7 @@ function createWebsitePageEditPage({
67
79
  }
68
80
  }
69
81
  ),
70
- renderPostEditContent({
71
- page,
72
- isFetching,
73
- isNotFound
74
- })
82
+ renderPageEditContent ? renderPageEditContent(contentProps) : PageEditContent ? /* @__PURE__ */ jsx(PageEditContent, { ...contentProps }, slug) : null
75
83
  ] });
76
84
  };
77
85
  }
@@ -3,7 +3,6 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { useTranslator } from 'intor/react';
4
4
  import { SquareArrowOutUpRight, Pen } from 'lucide-react';
5
5
  import { useParams, usePathname } from 'next/navigation';
6
- import { POST_TYPES } from 'sitero-domain';
7
6
  import 'zod';
8
7
  import 'sonner';
9
8
  import 'react';
@@ -11,9 +10,11 @@ import 'ua-parser-js';
11
10
  import '../../../../../../../../shared/client/react-query/client.js';
12
11
  import '@tanstack/react-query';
13
12
  import { useCmsQuery } from '../../../../../../infrastructure/operation-result/use-cms-query.js';
13
+ import { resolvePageFields, createAllowPageField } from '../../../../../components/resources/page/content/types.js';
14
14
  import { PageHeaderLayout } from '../../../../../components/ui/blocks/page-header/page-header-layout.js';
15
15
  import '@radix-ui/react-avatar';
16
16
  import 'mime-types';
17
+ import 'sitero-domain';
17
18
  import 'clsx';
18
19
  import 'tailwind-merge';
19
20
  import '../../../../../components/shadcn/badge.js';
@@ -43,10 +44,13 @@ import '../../../../../components/ui/inputs/password-input.js';
43
44
 
44
45
  function createWebsitePageShowPage({
45
46
  pages: staticPages,
46
- postFindDetailAction,
47
+ pageFindDetailAction,
47
48
  SeoMetadataDialog,
48
- renderPostShowContent
49
+ renderPageShowContent,
50
+ PageShowContent,
51
+ fieldRules
49
52
  }) {
53
+ const allowField = createAllowPageField(fieldRules);
50
54
  return function WebsitePageShowPage() {
51
55
  const { t, locale } = useTranslator();
52
56
  const { slug } = useParams();
@@ -56,11 +60,19 @@ function createWebsitePageShowPage({
56
60
  isFetching,
57
61
  isNotFound
58
62
  } = useCmsQuery(
59
- () => postFindDetailAction({ type: POST_TYPES.PAGE, slug }),
60
- ["postFindDetailAction", POST_TYPES.PAGE, slug],
61
- { select: (data) => data?.post }
63
+ () => pageFindDetailAction({ key: slug }),
64
+ ["pageFindDetailAction", slug],
65
+ { select: (data) => data?.page }
62
66
  );
63
- const websiteHref = `/${slug === "home" ? "" : slug}`;
67
+ const websiteHref = staticPages[slug]?.pathname;
68
+ const contentProps = {
69
+ page,
70
+ pageKey: slug,
71
+ isFetching,
72
+ isNotFound,
73
+ fields: resolvePageFields(fieldRules, slug),
74
+ allowField: (params) => allowField({ ...params, pageKey: params.pageKey ?? slug })
75
+ };
64
76
  return /* @__PURE__ */ jsxs(Fragment, { children: [
65
77
  /* @__PURE__ */ jsx(
66
78
  PageHeaderLayout,
@@ -76,7 +88,7 @@ function createWebsitePageShowPage({
76
88
  variant: "warning",
77
89
  icon: Pen,
78
90
  href: `${pathname}/edit`,
79
- isDisabled: isFetching,
91
+ isDisabled: isFetching || isNotFound || !page,
80
92
  children: t("ui.edit.text")
81
93
  }
82
94
  ),
@@ -84,9 +96,10 @@ function createWebsitePageShowPage({
84
96
  /* @__PURE__ */ jsx(
85
97
  SeoMetadataDialog,
86
98
  {
99
+ ownerType: "page",
87
100
  id: page?.id,
88
101
  isLoading: isFetching,
89
- isDisabled: isNotFound
102
+ isDisabled: isNotFound || !page
90
103
  }
91
104
  ),
92
105
  websiteHref && /* @__PURE__ */ jsx(
@@ -102,7 +115,7 @@ function createWebsitePageShowPage({
102
115
  ] })
103
116
  }
104
117
  ),
105
- renderPostShowContent({ page, isFetching, isNotFound })
118
+ renderPageShowContent ? renderPageShowContent(contentProps) : PageShowContent ? /* @__PURE__ */ jsx(PageShowContent, { ...contentProps }, slug) : null
106
119
  ] });
107
120
  };
108
121
  }